Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BARDYSVS

BARDYSVS.m

Go to the documentation of this file.
  1. BARDYSVS ; IHS/SD/TPF - DAYS IN A/R REPORT BY VISIT ;
  1. ;;1.8;IHS ACCOUNTS RECEIVABLE;**16,28**;OCT 26, 2005;Build 92
  1. ;IHS/SD/SDR - 1.8*28 - HEAT224215 CR8345 - Added code so it will look through DUZ(2)s for 3P Bill entry. Removed a couple FM calls and replaced with straight
  1. ; code so they will work correctly with multiple DUZ(2)s. Removed check for HOSPITAL LOCATION. It was using it instead of VISIT LOCATION, which is
  1. ; wrong. Added code to capture detail info.
  1. ;
  1. Q
  1. ;GIVEN A DATE RANGE CALCULATE NUMBER OF VISITS FOR THAT MONTH IN THE VISIT FILE
  1. BYVISIT(START,END) ;EP -
  1. K ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT")
  1. N ENTRY
  1. S ENTRY=START-.01
  1. S END=END_".24"
  1. I $E(END,6,7)="00" S $E(END,6,7)="31"
  1. D INITVIS^BARDYSUT ;INITIALIZE COUNTERS TO ZERO
  1. S OLDMOYR=$E(START,2,5)
  1. S ENTRYNUM=0,VISITNUM=0
  1. F S ENTRY=$O(^AUPNVSIT("B",ENTRY)) Q:ENTRY=""!(ENTRY>END) D
  1. .S ENTRYNUM=ENTRYNUM+1
  1. .S THISYR=$E(DT,1,3)
  1. .;FOR TESTING COMMENT OUT
  1. .;I (THISYR-$E(VSITADMT,1,3))>0 S MONTHYR="Ovr 1 Yr"
  1. .S Y=ENTRY X ^DD("DD") S MONTHYR=$P($P(Y,"@"),",",2)_" "_$E(ENTRY,4,5)
  1. .I $E(ENTRY,6,7)="00" S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","00 DAY","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","00 DAY","MONTHYR",MONTHYR))+1
  1. .;Q:$E(ENTRY,6,7)="00" ;ENTRIES WITH NO DAY ARE ALL "E"VENT SERVICE CATEGORIES.
  1. .S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","ENTRY NUM","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","ENTRY NUM","MONTHYR",MONTHYR))+1
  1. .;W !,"ENTRY: ",ENTRY
  1. .S VISITIEN=""
  1. .F S VISITIEN=$O(^AUPNVSIT("B",ENTRY,VISITIEN)) Q:'VISITIEN D
  1. ..S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","IEN VISIT","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","IEN VISIT","MONTHYR",MONTHYR))+1
  1. ..S DELEFLAG=$$GET1^DIQ(9000010,VISITIEN_",",.11,"I")
  1. ..;I DELEFLAG S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","DELEFLAG","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","DELEFALG","MONTHYR",MONTHYR))+1 Q ;bar*1.8*28 IHS/SD/SDR HEAT224215
  1. ..I DELEFLAG S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","DELEFLAG","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","DELEFLAG","MONTHYR",MONTHYR))+1 Q ;bar*1.8*28 IHS/SD/SDR HEAT224215
  1. ..S DEPCOUNT=$$GET1^DIQ(9000010,VISITIEN_",",.09)
  1. ..I 'DEPCOUNT S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","DEPCOUNT","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","DEPCOUNT","MONTHYR",MONTHYR))+1 Q
  1. ..S VISITNUM=VISITNUM+1
  1. ..S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","IEN NUM","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","IEN NUM","MONTHYR",MONTHYR))+1
  1. ..;W !?5,"VISIT IEN: ",VISITIEN
  1. ..I $$GET1^DIQ(9000010,VISITIEN_",",.11,"I") Q ;DELETE FLAG = 1 if deleted
  1. ..S DISCHARG=$$DISCHARG^BARDYSUT(VISITIEN) ;IS THERE A DISCHARGE DATE?
  1. ..;I DISCHARG'=0 Q:DISCHARG<START!(DISCHARG>END) ;NOT SURE ABOUT THIS LOGIC
  1. ..S SERVCATI=$$GET1^DIQ(9000010,VISITIEN_",",.07,"I")
  1. ..;should the next screen be done before or after the count of visits is made?
  1. ..I "^A^D^H^O^I^S^R^T^"'[(U_SERVCATI_U) D Q
  1. ...S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","SERVCAT","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","SERVCAT","MONTHYR",MONTHYR))+1
  1. ..S SERVCAT=$$GET1^DIQ(9000010,VISITIEN_",",.07,"E")
  1. ..S MERGED=$$GET1^DIQ(9000010,VISITIEN_",",.37) ;SCREEN OUT MERGED VISITS
  1. ..I MERGED'="" D Q
  1. ...S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","MERGED","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","MERGED","MONTHYR",MONTHYR))+1
  1. ..S LOCENC=$$GET1^DIQ(9000010,VISITIEN_",",.06,"I")
  1. ..I $G(BARY("LOC"))'="" Q:LOCENC'=$G(BARY("LOC")) ;NOT LOCATION CHOSEN
  1. ..S:LOCENC="" LOCENC="UNDEF"
  1. ..;S DUZ2=$$GET1^DIQ(9000010,VISITIEN_",",.22,"I") ;bar*1.8*28 IHS/SD/SDR HEAT224215
  1. ..;S:DUZ2="" DUZ2=DUZ(2) ;bar*1.8*28 IHS/SD/SDR HEAT224215
  1. ..S DUZ2=LOCENC ;bar*1.8*28 IHS/SD/SDR HEAT224215
  1. ..S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","LOCENC",LOCENC,"MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","LOCENC",LOCENC,"MONTHYR",MONTHYR))+1
  1. ..;
  1. ..S PACKAGE=$$GET1^DIQ(9000010,VISITIEN_",",.24)
  1. ..;PACKAGE=NULL CHECK MAY NOT BE CORRECT. WE JUST DON'T PULL ANYTHING IN TEST W/O IT
  1. ..;I '(($E(PACKAGE,1,2)="SD")!($E(PACKAGE,1,3)="BSD")!($E(PACKAGE,1,3)="CIA")!(PACKAGE="")) D Q ;DON'T PULL IF NOT CREATED BY THESE PACKAGES
  1. ..;.S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","PACKREJ","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","PACKREJ","MONTHYR",MONTHYR))+1
  1. ..;.S PACKREJ=$G(PACKREJ)+1
  1. ..;
  1. ..S CLINIC=$$GET1^DIQ(9000010,VISITIEN_",",.08,"I") ;CLINIC STOP
  1. ..I 'CLINIC D Q ;IF NO CLINIC NO BILL WILL BE PRODUCED COMMENTED FOR TESTING
  1. ...S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NOCLINIC","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NOCLINIC","MONTHYR",MONTHYR))+1
  1. ..;S:CLINIC="" CLINIC="UNDEF"
  1. ..I $D(BARY("CLIN")) Q:'$D(BARY("CLIN",CLINIC)) ;NOT CHOSEN CLINIC
  1. ..;
  1. ..;I BAR("LOC")="BILLING" SORT BY DUZ(2)
  1. ..;I BAR("LOC")="VISIT" SORT BY VISIT LOCATION
  1. ..;LOCATION TYPE FOR REPORTS
  1. ..I BAR("LOC")="BILLING" D
  1. ...S SUB1=DUZ2
  1. ..E S SUB1=LOCENC
  1. ..;VISIT TYPE OR CLINIC SORT
  1. ..I BARY("SORT")="C" D
  1. ...S SUB2=CLINIC
  1. ..E S SUB2=SERVCAT
  1. ..;
  1. ..;S BILLIEN=$O(^ABMDBILL(DUZ(2),"AV",VISITIEN,"")) ;bar*1.8*28 IHS/SD/SDR HEAT224215
  1. ..;start new bar*1.8*28 IHS/SD/SDR HEAT224215
  1. ..S BARCHK=0
  1. ..S ABMDUZ(2)=0
  1. ..F S ABMDUZ(2)=$O(^ABMDBILL(ABMDUZ(2))) Q:'ABMDUZ(2) D Q:BARCHK
  1. ...S BILLIEN=$O(^ABMDBILL(ABMDUZ(2),"AV",VISITIEN,0))
  1. ...I BILLIEN S BARCHK=1
  1. ..;end new bar*1.8*28 IHS/SD/SDR HEAT224215
  1. ..I 'BILLIEN D ;Q
  1. ...;W !,"VISITIEN: ",VISITIEN," HAS NO BILLS CAN'T FIND A PROVIDER"
  1. ...;IF NO BILL CAN WE FIND A PROVIDER RELATED TO THE VISIT?
  1. ...S VPROV=$$PRVCHK^BARDYSUT(VISITIEN)
  1. ...S:VPROV=0 VPROV="UNDEF"
  1. ...;S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NUMVISIT",SUB1,SUB2,"MONTHYR",MONTHYR)=$G(NUMVISIT(LOCENC,SUB2,"MONTHYR",MONTHYR))+1
  1. ...;S NUMVISIT=NUMVISIT+1
  1. ...;S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NUMVISIT","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NUMVISIT","MONTHYR",MONTHYR))+1
  1. ...;S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","AVGCHKIN",SUB1,SUB2,"MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","AVGCHKIN",LOCENC,SUB2,"MONTHYR",MONTHYR))+1
  1. ...;I ($E(PACKAGE,1,2)="SD")!($E(PACKAGE,1,3)="BSD")!($E(PACKAGE,1,3)="CIA") D
  1. ...;.S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","AVGCHKIN","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","AVGCHKIN","MONTHYR",MONTHYR))+1
  1. ...;S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NOBILLS","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NOBILLS","MONTHYR",MONTHYR))+1
  1. ...;S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NOBILLS",SUB1,SUB2,"MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NOBILLS",LOCENC,SUB2,"MONTHYR",MONTHYR))+1
  1. ..I BILLIEN D
  1. ...S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","WITBILLS",SUB1,SUB2,"MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","WITBILLS",LOCENC,SUB2,"MONTHYR",MONTHYR))+1
  1. ...S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","WITBILLS","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","WITBILLS","MONTHYR",MONTHYR))+1
  1. ..;
  1. ..I 'BILLIEN Q ;bar*1.8*28 IHS/SD/SDR HEAT224215
  1. ..;S BILLSTAT=$$GET1^DIQ(9002274.4,BILLIEN_",",.04,"I") ;bar*1.8*28 IHS/SD/SDR HEAT224215
  1. ..S BILLSTAT=$P($G(^ABMDBILL(ABMDUZ(2),BILLIEN,0)),U,4) ;bar*1.8*28 IHS/SD/SDR HEAT224215
  1. ..S:BILLSTAT="" BILLSTAT="UNDEF"
  1. ..;W !!,"BILL: ",$$GET1^DIQ(9002274.4,BILLIEN_",",.01,"I")
  1. ..;W !?5,"BILL STATUS: ",BILLSTAT
  1. ..I BILLSTAT="X" D ;BILL STATUS = CANCELLED
  1. ...S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NOBILLS","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NOBILLS","MONTHYR",MONTHYR))+1
  1. ..;.S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","CANCELLED 3P BILLS","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","CANCELLED 3P BILLS","MONTHYR",MONTHYR))+1
  1. ..;S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","CANCELLED 3P BILLS","MONTHYR",MONTHYR,BILLSTAT)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","CANCELLED 3P BILLS","MONTHYR",MONTHYR,BILLSTAT))+1
  1. ..;K PROV
  1. ..;I BILLIEN S PROV=$$GETPRV^BARDYSV1(BILLIEN,$G(BARY("PRV"))) Q:'PROV ;FIND PROVIDER CHOSEN OR ONLY ATTEND OR RENDERING
  1. ..;S PROV=$P($G(PROV,"^UNDEF"),U,2)
  1. ..;IF USER DID NOT CHOSE A PROVIDER THEN SORT BY PROVIDER
  1. ..;IF THE NEXT SCREEN IS TAKEN OUT YOU GET A LOT OF ZEROES. THE ONLY DATA IS
  1. ..;CREATED AND REVIEWED DAYS
  1. ..;
  1. ..;VISIT & BILL PASSES ALL SCREENS
  1. ..;now is this the correct logic for "check ins"
  1. ..;OR IS IT IF THE VISITIEN HAS AN ENTRY IN V HOSPITALIZTION?
  1. ..I ($E(PACKAGE,1,2)="SD")!($E(PACKAGE,1,3)="BSD")!($E(PACKAGE,1,3)="CIA") D
  1. ...S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","AVGCHKIN",SUB1,SUB2,"MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","AVGCHKIN",LOCENC,SUB2,"MONTHYR",MONTHYR))+1
  1. ...S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","AVGCHKIN","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","AVGCHKIN","MONTHYR",MONTHYR))+1
  1. ...S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NUMVISIT",SUB1,SUB2,"MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NUMVISIT",LOCENC,SUB2,"MONTHYR",MONTHYR))+1
  1. ...S NUMVISIT=NUMVISIT+1
  1. ...S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NUMVISIT","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NUMVISIT","MONTHYR",MONTHYR))+1
  1. ..E D
  1. ...S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NUMVISIT",SUB1,SUB2,"MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NUMVISIT",LOCENC,SUB2,"MONTHYR",MONTHYR))+1
  1. ...S NUMVISIT=NUMVISIT+1
  1. ...S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NUMVISIT","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","NUMVISIT","MONTHYR",MONTHYR))+1
  1. ..;
  1. ..S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","VISIT IEN","MONTHYR",MONTHYR,VISITIEN)=""
  1. ..S VSITCRET=$P($$GET1^DIQ(9000010,VISITIEN_",",.02,"I"),".")
  1. ..S VSITADMT=$P($$GET1^DIQ(9000010,VISITIEN_",",.01,"I"),".")
  1. ..S VPCCREV=$P($$GET1^DIQ(9000010,VISITIEN_",",.13,"I"),".")
  1. ..S PCCREV=$$GETREV(VISITIEN,VPCCREV)
  1. ..S BARTREC=VISITIEN_U_MONTHYR_U_LOCENC_U_VSITADMT_U_VSITCRET_U_$$DAYS^BARDYSV1(+VSITCRET,+VSITADMT)_U_PCCREV_U_$$DAYS^BARDYSV1(+PCCREV,+VSITADMT) ;detail rec ;bar*1.8*28 IHS/SD/SDR HEAT224215
  1. ..S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","DET",VISITIEN)=BARTREC ;detail rec ;bar*1.8*28 IHS/SD/SDR HEAT224215
  1. ..;NOW GO GET THE AVG'S FOR THE CLAIMS GENERATED BY THIS VISIT
  1. ..S CREDAYS=CREDAYS+$$DAYS^BARDYSV1(+VSITCRET,+VSITADMT)
  1. ..S REVDAYS=REVDAYS+$$DAYS^BARDYSV1(+PCCREV,+VSITADMT)
  1. ..S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","DATE DIFF",VISITIEN,$$DAYS^BARDYSV1(+PCCREV,+VSITADMT))=PCCREV_U_VSITADMT
  1. ..;FOR SORTING WHEN USER SELECTS SORT BY VISIT USE SERVICE CATEGORY
  1. ..;
  1. ..S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","CREDAYS",SUB1,SUB2,"MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","CREDAYS",LOCENC,SUB2,"MONTHYR",MONTHYR))+$$DAYS^BARDYSV1(+VSITCRET,+VSITADMT)
  1. ..S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","REVDAYS",SUB1,SUB2,"MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","REVDAYS",LOCENC,SUB2,"MONTHYR",MONTHYR))+$$DAYS^BARDYSV1(+PCCREV,+VSITADMT)
  1. ..S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","CREDAYS","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","CREDAYS","MONTHYR",MONTHYR))+$$DAYS^BARDYSV1(+VSITCRET,+VSITADMT)
  1. ..S ^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","REVDAYS","MONTHYR",MONTHYR)=$G(^XTMP("BARDYSVS",$J,"DAYS TO COL VISIT","REVDAYS","MONTHYR",MONTHYR))+$$DAYS^BARDYSV1(+PCCREV,+VSITADMT)
  1. ..;
  1. ..;D TPBDAYS^BARDYSV1(VISITIEN,VSITADMT,.TPBAPP,.TPBEXP,.NUMBILLS,.BILLAMT)
  1. ..D TPBDAYS^BARDYSV1(VISITIEN,VSITADMT)
  1. D PRINTVIS^BARDYSPR
  1. D ^%ZISC
  1. Q
  1. ;
  1. GETREV(VISITIEN,VPCCREV) ;EP - GET PCC REVIEW DATE
  1. ;PER DAVID BATTESE GET REVIEW DATE FROM V CHART AUDIT IF TURNED ON
  1. N TMP,QUEAUDIT,EARLIEST
  1. S QUEAUDIT=$$GET1^DIQ(9001000,DUZ(2)_",",.12,"I") ;FIELD 'EHR/CHART AUDIT START DATE' FROM 'PCC MASTER CONTROL'
  1. Q:$G(VSITADMT)<QUEAUDIT VPCCREV ;IF ADMIT DATE IS BEFORE AUDIT WAS TURNED ON GET REVIEW DATE FROM 'DATE LAST MODIFIED'
  1. D ;OTHERWISE SEE IF YOU CAN GET IT IN THE 'V CHART AUDIT' FILE
  1. .S (PCCREV,TMP)="" ;^AUPNVCA = V CHART AUDIT
  1. .F S TMP=$O(^AUPNVCA("AD",VISITIEN,TMP)) Q:'TMP D
  1. ..I $$GET1^DIQ(9000010.45,TMP_",",.04)="R" D ;CHART AUDIT STATUS, R=REVIEWED/COMPLETE I=INCOMPLETE
  1. ...S PCCREV=$$GET1^DIQ(9000010.45,TMP_",",.01) ;DATE OF AUDIT
  1. I PCCREV S PCCREV=PCCREV_"A" ;IF A "R" DATE OF AUDIT WAS FOUND THEN USE IT
  1. E S PCCREV=VPCCREV_"V" ;OTHERWISE STAY WITH THE 'DATE LAST MODIFIED'
  1. Q PCCREV