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

BARDYSVZ.m

Go to the documentation of this file.
  1. BARDYSVZ ; IHS/SD/MAS,TPF - OMB - DAYS TO COLLECTION REPORT FOR SQL ; 02/09/2009
  1. ;;1.8;IHS ACCOUNTS RECEIVABLE;**12,13,23**;OCT 26, 2005
  1. ;
  1. ; IHS/SD/TMM 07/02/09 M1 Routine too large. Create 2nd routine ^BARDYSV2
  1. ; P.OTT FEB 2013 CHANGED PTR TO INSURER TYPE
  1. ;
  1. Q
  1. ;ASK DATE RANGE FIND VISITS FOR THAT RANGE IN THE VISIT FILE
  1. INTERACT ;EP - INTERACTIVE EP
  1. I '$$IHS(DUZ(2)) W !,"THIS REPORT IS NOT INTENDED FOR NON-IHS FACILITIES!!" W ! K DIR S DIR(0)="E" D ^DIR Q
  1. ASKBEG ;EP - ASK BEGIN DATE
  1. K ^XTMP("BARDYSVZ")
  1. N BEGDATE,ENDDATE
  1. K DIR
  1. S DIR(0)="DO^::EX"
  1. S DIR("A")="Enter Beginning Visit Date"
  1. D ^DIR
  1. Q:$D(DIRUT)!$D(DTOUT)!($D(DUOUT))!(Y="")
  1. S BEGDATE=Y
  1. ;
  1. ASKEND ;EP - ASK END DATE
  1. K DIR
  1. S DIR(0)="DO^::EX"
  1. S DIR("A")="Enter Ending Visit Date"
  1. D ^DIR
  1. G:$D(DIRUT)!$D(DTOUT)!($D(DUOUT))!(Y="") ASKBEG
  1. S ENDDATE=Y
  1. I BEGDATE>ENDDATE W !,"BEGIN DATE CAN NOT BE GREATER THAN ENDING DATE!" K DIR S DIR(0)="E" D ^DIR G ASKEND
  1. D NOW^%DTC
  1. S ^XTMP("BARDYSVZ",$J,"INTERACT STARTED",DUZ(2),%)=BEGDATE_U_ENDDATE
  1. D VISIT(BEGDATE,ENDDATE)
  1. I '$D(^BAROMB($J)) W !,"NO DATA FOUND FOR OMB REPORT!" K DIR S DIR(0)="E" D ^DIR S ^XTMP("BARDYSVZ",$J,"INTERACT COMPLETED",DUZ(2),%)="" G ASKBEG
  1. S RC=$$ASKFNAME(.BARFILE,BEGDATE,ENDDATE)
  1. W !,"DESTINATION FILE: ",BARFILE
  1. D SENDFILE^BARDYSV2("BAROMB(",BARFILE)
  1. D NOW^%DTC
  1. S ^XTMP("BARDYSVZ",$J,"INTERACT COMPLETED",DUZ(2),%)=""
  1. Q
  1. ;
  1. ;IT IS EXPECTED THAT IF NO DATES ARE PASSED VIA TASKMAN THAT THE TASK WILL BE SCHEDULED
  1. ;FOR THE FIRST DAY OF THE MONTH AND THE RANGE WILL BE FROM THE 1ST TO THA LAST DAY OF THE
  1. ;MONTH BEFORE
  1. BATCH(BARBEG,BAREND) ;EP - ENTER FOR TASKED JOB
  1. N RANGE,BARBEG,BAREND
  1. K ^XTMP("BARDYSVZ")
  1. S ZTQUEUED=1 ;TEST
  1. I $P(D,U,6)="1M" S RANGE=$$LSTMNTH(DT) S BARBEG=$P(RANGE,U),BAREND=$P(RANGE,U,2)
  1. E I $P(D,U,6)[("D") S %DT="" S X="T-"_+$P(D,U,6) D ^%DT S BARBEG=Y,BAREND=DT
  1. D NOW^%DTC
  1. S ^XTMP("BARDYSVZ",$J,0,"A BATCH STARTED",%)=BARBEG_U_BAREND
  1. N DUZ2
  1. S DUZ2=DUZ(2)
  1. S DUZ(2)=0
  1. F S DUZ(2)=$O(^ABMDPARM(DUZ(2))) Q:'DUZ(2) D
  1. .S ^XTMP("BARDYSVZ",$J,DUZ(2),"FACILITY STARTED",%)=""
  1. .Q:'$$IHS(DUZ(2)) ;NOT INTENDED FOR NON-IHS SITES
  1. .D VISIT(BARBEG,BAREND)
  1. .I '$D(^BAROMB($J)) S ^XTMP("BARDYSVZ",$J,DUZ(2),"FACILITY COMPLETED",%)="NO DATA" Q ;NO DATA FOR THIS DUZ(2) SO DON'T SEND FILE
  1. .S RC=$$ASKFNAME(.BARFILE,BARBEG,BAREND)
  1. .D SENDFILE^BARDYSV2("BAROMB(",BARFILE)
  1. .D NOW^%DTC
  1. .S ^XTMP("BARDYSVZ",$J,DUZ(2),"FACILITY COMPLETED",%)=""
  1. S DUZ(2)=DUZ2
  1. D NOW^%DTC
  1. S ^XTMP("BARDYSVZ",$J,"Z BATCH COMPLETED",%)=""
  1. Q
  1. ;COMPUTE LAST MONTH'S DAYS IN A MONTH, PASS DT. USE THIS TO GET DATE RANGE
  1. LSTMNTH(TODAY) ;EP - COMPY
  1. N DAYS,LSTMNTH,FMYR,STARTDAY,ENDDAY
  1. S FMYR=$E(TODAY,1,3)
  1. S THISMNTH=$E(TODAY,4,5)
  1. S LSTMNTH=$E(TODAY,4,5)-1
  1. I LSTMNTH=0 S LSTMNTH=12
  1. S X=LSTMNTH
  1. S X1=X,X=$S("^1^3^5^7^8^10^12^"[(U_X_U):31,X'=2:30,$E(X1,1,3)#4:28,1:29)
  1. S STARTDAY="01"
  1. S ENDDAY=X
  1. S:THISMNTH="01" FMYR=FMYR-1,LSTMNTH=12
  1. S:$L(LSTMNTH)=1 LSTMNTH="0"_LSTMNTH
  1. S BEGIN=FMYR_LSTMNTH_STARTDAY
  1. S END=FMYR_LSTMNTH_ENDDAY
  1. Q BEGIN_U_END
  1. ;GIVEN A DATE RANGE FIND VISITS FOR THAT MONTH IN THE VISIT FILE
  1. VISIT(BARBEG,BAREND) ;EP - GET VISIT DATA
  1. K ^BAROMB($J)
  1. N ENTRY
  1. S ENTRY=BARBEG-.01
  1. I $E(BAREND,6,7)="00" S $E(BAREND,6,7)="31"
  1. S BAREND=BAREND_".24"
  1. S BAROMY=$E(BARBEG,2,5)
  1. S BARYR=$E(DT,1,3)
  1. D NOW^%DTC
  1. F S ENTRY=$O(^AUPNVSIT("B",ENTRY)) Q:ENTRY=""!(ENTRY>BAREND) D
  1. .S BARMY=($E(ENTRY,1,3)+1700)_"-"_$E(ENTRY,4,5)
  1. .S BARVDA=$$GETV(ENTRY) ;Get Visit data
  1. .Q:'BARVDA ;Excluded or no visit
  1. .D GETB(BARVDA) ;Get bill(s) and set into file
  1. Q
  1. ;
  1. GETV(ENTRY) ;
  1. N VISITIEN,BARVDA,CNT
  1. S (BARVDA,VISITIEN)=""
  1. F CNT=1:1 S VISITIEN=$O(^AUPNVSIT("B",ENTRY,VISITIEN)) Q:'VISITIEN D
  1. .W:'$D(ZTQUEUED)&'(CNT#1000) "."
  1. .S IENS=VISITIEN_","
  1. .S BARSCAT=$$SC^APCLV(VISITIEN,"I") ;API SERVICE CATEGORY
  1. .I "^A^D^H^O^I^S^R^T^"'[(U_BARSCAT_U) S BARVDA=0 Q ;DO NOT INCLUDE CATEGORIES LISTED IN WO D164 ITEM B),3
  1. .; C=CHART REVIEW,N=NOT FOUND,E=EVENT (HISTORICAL),X=ANCILLARY
  1. .S BARSCAT=$$SC^APCLV(VISITIEN,"E") ;API SERVICE CATEGORY
  1. .S BARMRG=$$GET1^DIQ(9000010,IENS,.37) ;MERGED TO
  1. .I BARMRG'="" S BARVDA=0 Q ;DO NOT INCLUDE MERGED VISITS
  1. .S VSITCRET=$P($$GET1^DIQ(9000010,IENS,.02,"I"),".") ;DATE VISIT CREATED
  1. .S BARVADMT=$P($$GET1^DIQ(9000010,IENS,.01,"I"),".") ;VISIT/ADMIT DATE&TIME
  1. .;DETERMINE REVIEW DATE
  1. .S VPCCREV=$P($$GET1^DIQ(9000010,IENS,.13,"I"),".") ;DATE LAST MODIFIED
  1. .S PCCREV=$$GEREV(VISITIEN,VPCCREV) ;CHECK ALGORYTHM ;
  1. .;END REVIEW DATE
  1. .S BARVTYP=$$GET1^DIQ(9000010,IENS,.03,"E") ;TYPE (OF VISIT)
  1. .S BARVLOC=$$LOCENC^APCLV(VISITIEN,"C") ;API LOC. OF ENCOUNTER ASUFAC
  1. .S BARLOCN=$$GET1^DIQ(9000010,IENS,.06,"E") ;'LOC. OF ENCOUNTER' NAME
  1. .S:BARVLOC="" BARVLOC="UNDEF"
  1. .S BARVDEL=$$GET1^DIQ(9000010,IENS,.11,"I") ;DELETE FLAG = 1 IF DELETED
  1. .S BARDEP=$$GET1^DIQ(9000010,IENS,.09) ;DEPENDENT ENTRY COUNT - IF 0 THE VISIT SHOULD HAVE BEEN DELETED
  1. .I 'BARDEP S BARVDA=0 Q ;IF DELETE FLAG COMMENT IS TRUE THIS MAY BE TRUE
  1. .S BARTPBF=$$GET1^DIQ(9000010,IENS,.04,"E") ;THIRD PARTY BILLED (Visit has been billed)
  1. .S BARCS=$$CLINIC^APCLV(VISITIEN,"C") ;CLINIC STOP (FOR
  1. .I BARCS="" S BARVDA=0 Q ;IF NO CLINIC, NO BILL SO DO NOT INCLUDE. INCLUDE PER MARSHA
  1. .S BARVDA=VISITIEN
  1. Q BARVDA
  1. ;
  1. ;BARVDA= VISIT DA
  1. GETB(BARVDA) ;EP - GET BILL DATA
  1. N BILLIEN,BARBIL,IENS,BILLSTA,BILLNUM,INSPTR,INSTYP
  1. S (BARBIL,BILLIEN)=""
  1. F S BILLIEN=$O(^ABMDBILL(DUZ(2),"AV",BARVDA,BILLIEN)) Q:'BILLIEN D
  1. .S IENS=BILLIEN_","
  1. .S BILL3P=$P($G(^ABMDBILL(DUZ(2),BILLIEN,0)),U)_" "
  1. .S BILLAR=$O(^BARBL(DUZ(2),"B",BILL3P))
  1. .S:BILLAR'="" BLLARIEN=$O(^BARBL(DUZ(2),"B",BILLAR,""))
  1. .Q:'$G(BLLARIEN) ;CAN'T FIND CORRESPONDING A/R BILL
  1. .S INSPTR=$$GET1^DIQ(90050.03,BLLARIEN_",",6,"I") ;'A/R ACCOUNT' PTR
  1. .S INSTYP=$$GET1^DIQ(9999999.18,INSPTR,.211,"I") ;RETURNS NUM PTR (I.E. 21) P.OTT GET INS TYP
  1. .S ISNTYP=$P($G(^AUTTINTY(BARALLC,0)),U,2) ;NUMBER-->"INDIAN PATIENT^I" P.OTT
  1. .I INSTYP="I" S ^XTMP("BARDYSVZ","BILLS SCREENED FOR INSTYP=I")=$G(^XTMP("BARDYSVZ","BILLS SCREENED FOR INSTYP=I"))+1
  1. .Q:INSTYP="I" ;DO NOT INCLUDE 'INDIAN PATIENT' BILLS PER MEETING 4/7/2009
  1. .S BILLSTA=$$GET1^DIQ(9002274.4,IENS,.04,"E") ;BILL STATUS
  1. .S:BILLSTA="" BILLSTA="UNDEF"
  1. .;'R' FOR REVIEWED;
  1. .;'A' FOR APPROVED;
  1. .;'B' FOR BILLED;
  1. .;'T' FOR TRANSFERRED TO FINANCE;
  1. .;'C' FOR COMPLETED;
  1. .;'P' FOR PARTIAL PAYMENT;
  1. .;'X' FOR CANCELLED;
  1. .Q:BILLSTA="X" ;IF BILL WAS CANCELLED NO PAYMENT IS EXPECTED THEREFORE DO NOT INCLUDE.
  1. .S BILLNUM=$P($$GET1^DIQ(9002274.4,IENS,.01),"-") ;BILL NUMBER
  1. .S BILLAPP=$$GET1^DIQ(9002274.4,IENS,.15,"I") ;DATE/TIME APPROVED
  1. .S BILLAMT=$$GET1^DIQ(9002274.4,IENS,.21) ;BILLED AMOUNT
  1. .S BILLEXP=$$GET1^DIQ(9002274.4,IENS,.17,"I") ;EXPORT NUMBER (DATE EXPORTED TO A/R)
  1. .S:BILLEXP'="" BILLEXP=$P($G(^ABMDTXST(DUZ(2),BILLEXP,0)),U) ;INTERNAL fm DATE
  1. .S ACTINS=$$GET1^DIQ(9002274.4,IENS,.08,"E") ;ACTIVE INSURER
  1. .D SETBILL ;SET TMP GLOBAL SORT BY BILL
  1. .;
  1. .D GETTX(BILLIEN) ;Get transactions, if any
  1. .Q
  1. Q
  1. ;
  1. GETTX(BILLIEN) ;EP - GET TRANSACTION DATA
  1. ;BILLIEN IS TPB IEN
  1. N TRANDATE,INSURER,TRANTYPE,ADJCAT,ADJTYP,IENS,RECHDR,ARBILL,BLLARIEN,INSTYP
  1. S BILL3P=$P($G(^ABMDBILL(DUZ(2),BILLIEN,0)),U)_" "
  1. S BILLAR=$O(^BARBL(DUZ(2),"B",BILL3P))
  1. S:BILLAR'="" BLLARIEN=$O(^BARBL(DUZ(2),"B",BILLAR,""))
  1. Q:'$G(BLLARIEN) ;CAN'T FIND CORRESPONDING A/R BILL
  1. ;
  1. S RECHDR=BARVLOC_U_BILLIEN_U_BARMY
  1. S TRANDATE=""
  1. F S TRANDATE=$O(^BARTR(DUZ(2),"AC",BLLARIEN,TRANDATE)) Q:TRANDATE="" D
  1. .S IENS=TRANDATE_","
  1. .I $$GET1^DIQ(90050.03,IENS,7,"I")="Y" Q ;'MESSAGE' IF YES SCREEN OUT PER MEETING 4/7/2009
  1. .S INSURER=$$GET1^DIQ(90050.03,IENS,6,"E") ;'A/R ACCOUNT'
  1. .S INSPTR=$$GET1^DIQ(90050.03,IENS,6,"I") ;'A/R ACCOUNT' PTR
  1. .S TRANTYP=$$GET1^DIQ(90050.03,IENS,101,"E") ;'TRANSACTION TYPE'
  1. .S CREDDEB=$$GET1^DIQ(90050.03,IENS,3.5,"I") ;'CREDIT / DEBIT'
  1. .S ADJCAT=$$GET1^DIQ(90050.03,IENS,102,"E") ;'ADJUSTMENT CATEGORY'
  1. .S ADJTYP=$$GET1^DIQ(90050.03,IENS,103,"E") ;'ADJUSTMENT TYPE'
  1. .S ARBILL=$$GET1^DIQ(90050.03,IENS,4,"I") ;'PTR TO A/R BILL'
  1. .S CURAMT=$$GET1^DIQ(90050.01,ARBILL_",",15,"I") ;'CURRENT BILL' AMOUNT IN 'A/R BILL'
  1. .S INSTYP=$$GET1^DIQ(9999999.18,INSPTR,.211,"I") ;RETURNS NUM PTR (I.E. 21) P.OTT GET INS TYP
  1. .S ISNTYP=$P($G(^AUTTINTY(BARALLC,0)),U,2) ;NUMBER-->"INDIAN PATIENT^I" P.OTT
  1. .I INSTYP="I" S ^XTMP("BARDYSVZ","TXS SCREENED FOR INSTYP=I")=$G(^XTMP("BARDYSVZ","TXS SCREENED FOR INSTYP=I"))+1
  1. .Q:INSTYP="I" ;DO NOT INCLUDE 'INDIAN PATIENT' BILLS PER MEETING 4/7/2009
  1. .I '$D(^BAROMB($J,BARVLOC,BARVDA,"TRANS REC",TRANDATE)) D
  1. ..S TRANREC="T"_U_RECHDR_U_TRANDATE_U_INSURER_U_TRANTYP_U_$P(TRANDATE,".")_U_CREDDEB_U_ADJCAT_U_ADJTYP_U_CURAMT_U_INSTYP
  1. ..S ^BAROMB($J,BARVLOC,BILLIEN,"TRANS REC",TRANDATE)=TRANREC
  1. Q
  1. ;
  1. GEREV(BARVDA,VPCCREV) ;EP - GET LAST DATE 'REVIEWED'
  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:BARVADMT<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",BARVDA,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,BARVDA_",",.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
  1. ;
  1. SETVISIT ;EP - SET THE VISIT AND BILL RECORDS SORTED BY VISIT
  1. N VISITREC,BILLREC,RECHDR,TRANREC
  1. S (BILLREC,VISITREC)=""
  1. S RECHDR=BARVLOC_U_BARVDA_U_BARMY
  1. ;
  1. I '$D(^BAROMB($J,BARVLOC,BARVDA,"A VISITREC")) D
  1. .S VISITREC=RECHDR_U_BARSCAT ;'SERVICE CATEGORY'
  1. .S VISITREC=VISITREC_U_BARVTYP ;'VISIT TYPE'
  1. .S VISITREC=VISITREC_U_$G(VSITCRET) ;'DATE VISIT CREATED'
  1. .S VISITREC=VISITREC_U_$G(BARVADMT) ;'VISIT/ADMIT DATE&TIME'
  1. .S VISITREC=VISITREC_U_$G(PCCREV) ;"VISIT REVIEWED DATE" SEE $$GETREV
  1. .S VISITREC=VISITREC_U_BARLOCN ;'LOC. OF ENCOUNTER' - NAME
  1. .S ^BAROMB($J,BARVLOC,BARVDA,"A VISITREC")="V"_U_VISITREC
  1. ;
  1. ;
  1. I '$D(^BAROMB($J,BARVLOC,BARVDA,"BILLREC",BILLIEN)) D
  1. .S BILLREC=RECHDR_U_BILLIEN
  1. .S BILLREC=BILLREC_U_BILLNUM_U_BILLAPP_U_BILLAMT_U_BILLEXP_U_ACTINS
  1. .S ^BAROMB($J,BARVLOC,BARVDA,"BILLREC",BILLIEN)="B"_U_BILLREC
  1. Q
  1. ;
  1. SETBILL ;EP - SET THE VISIT AND BILL RECORDS SORTED BY BILL
  1. N VISITREC,BILLREC,RECHDR,TRANREC
  1. S (BILLREC,VISITREC)=""
  1. S RECHDR=BARVLOC_U_BILLIEN_U_BARMY
  1. ;
  1. I '$D(^BAROMB($J,BARVLOC,BILLIEN,"BILLREC")) D
  1. .S BILLREC=RECHDR_U_BILLIEN
  1. .S BILLREC=BILLREC_U_BILLNUM_U_BILLAPP_U_BILLAMT_U_BILLEXP_U_ACTINS
  1. .S ^BAROMB($J,BARVLOC,BILLIEN,"BILLREC",BARVDA)="B"_U_BILLREC
  1. ;
  1. ;
  1. I '$D(^BAROMB($J,BARVLOC,BILLIEN,"Q VISITREC",BARVDA)) D
  1. .S VISITREC=RECHDR_U_BARVDA ;VISIT IEN
  1. .S VISITREC=VISITREC_U_BARSCAT ;'SERVICE CATEGORY'
  1. .S VISITREC=VISITREC_U_BARVTYP ;'VISIT TYPE'
  1. .S VISITREC=VISITREC_U_$G(VSITCRET) ;'DATE VISIT CREATED'
  1. .S VISITREC=VISITREC_U_$G(BARVADMT) ;'VISIT/ADMIT DATE&TIME'
  1. .S VISITREC=VISITREC_U_$G(PCCREV) ;"VISIT REVIEWED DATE" SEE $$GETREV
  1. .S VISITREC=VISITREC_U_BARLOCN ;'LOC. OF ENCOUNTER' - NAME
  1. .S ^BAROMB($J,BARVLOC,BILLIEN,"Q VISITREC",BARVDA)="V"_U_VISITREC
  1. Q
  1. ;
  1. ;
  1. ASKFNAME(BARFILE,BEGDATE,ENDDATE) ;EP - ASK FOR FILENAME (COPIED FROM BARUFUT1)
  1. S BARFILE=$$GETFILNM(BEGDATE,ENDDATE)
  1. W !!,"File will be created using the following name: ",BARFILE
  1. Q 1
  1. ;
  1. GETFILNM(BEGDATE,ENDDATE) ;EP - CREATE FILE NAME (COPIED FROM BARUFUT1)
  1. N FNROOT,FNEXT,FN,YR,DATE,TIME,DATETIME,BARPK,BARPT,BARP2,BARP3,DATERANG
  1. S FNROOT="IHS_AR_OMB_"_DUZ_"_"_$$GETSUFAC()
  1. S FNXREF=DUZ_"_"_$$GETSUFAC()
  1. S BARV=$$VERSION^XPDUTL("BAR")
  1. S BARP2=$$FILLSTR^BARUFUT1($P(BARV,".",2),2,"R","0")
  1. S BARPK=$O(^DIC(9.4,"C","BAR",0))
  1. S BARPK="IHS ACCOUNTS RECEIVABLE"
  1. S BARPT=$$LAST^XPDUTL(BARPK,BARV)
  1. S BARP3=$$FILLSTR^BARUFUT1(+BARPT,2,"R","0")
  1. S FNXT=$P(BARV,".",1)_"."_BARP2_"."_BARP3
  1. S FNEXT="_"_FNXT_".DAT"
  1. S FN=FNROOT
  1. GETFILAG ;CHECK FOR FILE NAME ALREADY USED (COPIED FROM BARUFUT1)
  1. D NOW^%DTC
  1. S YR=1700+$E(%,1,3)
  1. S DATE=YR_$E(%,4,7)
  1. S Y=% X ^DD("DD")
  1. S TIME=$TR($P(Y,"@",2),":")
  1. S:$L(TIME)=4 TIME=TIME_"00"
  1. S DATETIME=DATE_"_"_TIME
  1. S DATERANG="-"_BEGDATE_"-"_ENDDATE_"-"
  1. S FN=FNROOT_"_"_DATETIME_DATERANG
  1. S FN=FN_FNEXT
  1. Q FN
  1. ;
  1. GETSUFAC() ;EP;GIVEN DUZ(2) (COPIED FROM BARUFUT1)
  1. ; get parent from parent/satellite file
  1. N BARSAT,BARPAR,DA,ASUFAC
  1. S BARSAT=DUZ(2)
  1. S BARPAR=0 ; Parent
  1. ; check site active at DOS to ensure bill added to correct site
  1. S DA=0
  1. F S DA=$O(^BAR(90052.06,DA)) Q:DA'>0 D Q:BARPAR
  1. . Q:'$D(^BAR(90052.06,DA,DA)) ; Pos Parent UNDEF Site Parameter
  1. . Q:'$D(^BAR(90052.05,DA,BARSAT)) ; Satellite UNDEF Parent/Satellit
  1. . Q:+$P($G(^BAR(90052.05,DA,BARSAT,0)),U,5) ; Par/Sat not usable
  1. . ; Q if sat NOT active at DT
  1. . I DT<$P($G(^BAR(90052.05,DA,BARSAT,0)),U,6) Q
  1. . ; Q if sat became NOT active before DT
  1. . I $P($G(^BAR(90052.05,DA,BARSAT,0)),U,7),(DT>$P($G(^BAR(90052.05,DA,BARSAT,0)),U,7)) Q
  1. . S BARPAR=$S(BARSAT:$P($G(^BAR(90052.05,DA,BARSAT,0)),U,3),1:"")
  1. S ASUFAC=$$CURASUFC(BARPAR,DT)
  1. Q ASUFAC
  1. ;
  1. CURASUFC(LOCIEN,BARDOS) ;EP - GET CURRENT ASUFAC BASED ON 'DOS BEGIN' (#102) IN A/R BILL FILE (COPIED FROM BARUFUT1)
  1. Q:LOCIEN="" "UNPOPL"
  1. Q:BARDOS="" "UNPOPD"
  1. N ASUFAC,BARDT,BARDTFLG
  1. S ASUFAC=""
  1. S BARDT=0
  1. S BARDTFLG=0
  1. S ASUFAC=$$GET1^DIQ(9999999.06,DUZ(2)_",",.12) ;First take it from 'asufac index" field
  1. ;if not, check class multiple
  1. I 'ASUFAC D
  1. .F S BARDT=$O(^AUTTLOC(LOCIEN,11,BARDT)) Q:BARDT=""!(BARDTFLG=1) D
  1. ..I BARDOS>$P($G(^AUTTLOC(LOCIEN,11,BARDT,0)),U) D
  1. ...S ASUFAC=$P($G(^AUTTLOC(LOCIEN,11,BARDT,0)),U,6)
  1. ...S BARDTFLG=1
  1. ;S:ASUFAC="" ASUFAC=$$GET1^DIQ(9999999.06,DUZ(2)_",",.12)
  1. Q ASUFAC
  1. ;
  1. IHS(DUZ2) ;EP - RETURN TRUE IF IHS AFFILIATION
  1. N REC
  1. S REC=$O(^AUTTLOC(DUZ2,11,""),-1)
  1. S AFFIL=$$GET1^DIQ(9999999.0611,REC_","_DUZ2_",",.03,"I")
  1. Q AFFIL=1 ;1 MEANS IHS