- BGP3GMUE ; IHS/CMI/LAB - GUI MU EP REPORT ;
- ;;13.0;IHS CLINICAL REPORTING;;NOV 20, 2012;Build 81
- ;
- ;
- TESTMU ;
- S ERR=""
- S BGPND(1)="",BGPND(3)=""
- S BGPLIST(3)=""
- D EP(.ERR,5459,5217,"BGP 13 ME EP REPORT",338,"C",.BGPND,1,311010,3000000,1,"A",.BGPLIST,"BUTCHER,LORI","5459","P",$$NOW^XLFDT,"","LORITESTMU")
- W !,ERR
- Q
- EP(BGPRET,BGPUSER,BGPDUZ2,BGPOPTN,BGPTAXI,BGPINDT,BGPIND,BGPQTR,BGPPER,BGPVDT,BGPBEN,BGPLSTT,BGPLIST,BGPPRV,BGPPROV,BGPROT,BGPRTIME,BGPMFITI,BGPFILE) ;EP - called from GUI to produce COM REPORT CI05-RPT-LOC-COM
- ; SEE ROUTINE BGP3DL if you have questions about any of these variables
- ; BGPUSER - DUZ
- ; BGPDUZ2 - DUZ(2)
- ; BGPOPTN - OPTION NAME
- ; BGPINDT - $E (1st character) of the answer to the following DIR call:
- ; value will be a S, C, M, A
- ; Select one of the following:
- ;
- ; Which set of Measures should be included in this report:
- ;
- ; BGPIND - note: THIS ARRAY IS ONLY REQUIRED IF BGPINDT="S" OR "M"
- ; array containing iens of the measures selected by the user
- ; for example, BGPIND(3)=""
- ; BGPIND(6)="" if the user selected measures
- ; 1 and 6 from the BGP 13 INDICATORS file. When
- ; you present them to the user for selection use all of them
- ; in the file, do not screen out any of them.
- ;
- ; BGPQTR - this is equal to 1,2
- ; Select one of the following:
- ;
- ; 1 90 DAYS
- ; 2 ONE YEAR
- ;
- ; Enter the date range for your report:
- ;
- ; BGPPER - this is beginning date in fileman format
- ;
- ; BGPVDT - baseline year entered by user in internal fileman format, year only
- ; e.g. 3010000
- ;
- ; BGPBEN - 1 for Indians only, 2 for Not Indian, 3 for both (see reader call
- ; at subroutine BEN in BGP3MUEP
- ;
- ; BGPLIST (array) contains the iens of the measures they want a list for.
- ; when you present the choices for lists only present the measures they pick
- ; that are in array BGPIND (run report to see this)
- ; e.g. BGPLIST="A"
- ; BGPLIST(3)=""
- ;
- ; BGPLPRV - will equal ien of provider if they picked FOR THE REPORT
- ; BGPLPROV - will equal provider name if they picked FOR THE REPORT
- ;
- ; BGPROT - type of output P for printed, D For Delimited, B for both, X XML
- ; BGPRTIME - report will be queued automatically, this variable
- ; contains the time it will run, internal fileman format
- ; must be date and time
- ;
- ; BGPRET - return value is ien^error message^export file name. a zero (0) is
- ; passed as ien if error occurred, display the filename back to the user
- ; if they chose to export to area
- ;
- ;create entry in gui output file
- ;queue report to run with/GUIR
- D EP1
- S Y=BGPRET
- ;D EN^XBVK("BGP") S:$D(ZTQUEUED) ZTREQ="@"
- S BGPRET=Y
- Q
- EP1 ;
- S U="^"
- I $G(BGPUSER)="" S BGPRET=0_"^USER NOT PASSED" Q
- I $G(BGPDUZ2)="" S BGPRET=0_"^DUZ(2) NOT PASSED" Q
- I $G(BGPOPTN)="" S BGPRET=0_"^OPTION NAME NOT PASSED" Q
- I $G(BGPINDT)="" S BGPRET=0_"^INDICATOR TYPE NOT PASSED" Q
- I "ACMS"'[BGPINDT S BGPRET=0_"^INDICATOR TYPE INVALID" Q
- I BGPINDT="S",'$D(BGPIND) S BGPRET=0_"^INDICATOR ARRAY NOT PASSED" Q
- I BGPINDT="S",'$O(BGPIND(0)) S BGPRET=0_"^INDICATOR ARRAY NOT PASSED" Q
- I BGPINDT="M",'$D(BGPIND) S BGPRET=0_"^INDICATOR ARRAY NOT PASSED" Q
- I BGPINDT="M",'$O(BGPIND(0)) S BGPRET=0_"^INDICATOR ARRAY NOT PASSED" Q
- I $G(BGPPER)="" S BGPRET=0_"^YEAR VARIABLE NOT PASSED" Q
- I $G(BGPQTR)="" S BGPRET=0_"^QUARTER/DATE TYPE NOT PASSED" Q
- I $G(BGPVDT)="" S BGPRET=0_"^BASELINE YEAR NOT PASSED" Q
- I $G(BGPBEN)="" S BGPRET=0_"^BENEFICIARY TYPE NOT PASSED" Q
- I "PDBX"'[$G(BGPROT) S BGPRET=0_"^REPORT OUTPUT TYPE NOT PASSED" Q
- I $G(BGPLSTT)="" S BGPRET=0_"^LIST TYPE NOT PASSED" Q
- S BGPRTIME=$G(BGPRTIME)
- S BGPLIST=$G(BGPLSTT)
- I $G(BGPPROV)'?.N S BGPPROV=BGPPRV
- ;I $G(BGPLIST)="P",$G(BGPLPRV)="" S BGPRET=0_"^PROVIDER NOT PASSED FOR LIST TYPE P" Q
- ;S DUZ=BGPUSER
- S DUZ(2)=BGPDUZ2
- S:'$D(DT) DT=$$DT^XLFDT
- D ^XBKVAR
- S BGPGUI=1
- S IOM=80,BGPIOSL=55
- ;S BGPINDT=""
- S BGPMUYF="90595.11"
- S BGPRTYPE=4,BGP0RPTH="A"
- S BGPMUT="P"
- I BGPINDT="C" K BGPIND D CI
- I BGPINDT="A" K BGPIND D AI
- S BGPLEN=$S(BGPQTR=1:89,1:364)
- BY ;get baseline year
- S X=$E(BGPPER,1,3)-$E(BGPVDT,1,3)
- S X=X_"0000"
- S BGPBD=BGPPER
- S:$E(BGPBD,4,7)="0000" $E(BGPBD,4,7)="0101"
- S BGPED=$$FMADD^XLFDT(BGPPER,BGPLEN)
- PY ;get previous year
- N X1,X2,X
- S X1=BGPBD,X2=-365
- D C^%DTC
- S BGPPBD=X
- S X1=BGPED,X2=-365
- D C^%DTC
- S BGPPED=X
- S X=$E(BGPPER,1,3)-$E(BGPVDT,1,3)
- S X=X_"0000"
- S BGPBBD=BGPBD-X,BGPBBD=$E(BGPBBD,1,3)_$E(BGPBD,4,7)
- S BGPBED=BGPED-X,BGPBED=$E(BGPBED,1,3)_$E(BGPED,4,7)
- ;create entry in GUI file
- D ^XBFMK
- S X=BGPFILE
- ;S X=BGPUSER_$$NOW^XLFDT
- S BGPGFNM=X ;S X=BGPUSER_$$NOW^XLFDTS X=BGPUSER_$$NOW^XLFDT
- S DIC="^BGPGUIH(",DIC(0)="L",DIADD=1,DLAYGO=90549.19,DIC("DR")=".02////"_BGPUSER_";.03////"_$S(BGPRTIME]"":BGPRTIME,1:$$NOW^XLFDT)_";.05///"_BGPOPTN_";.06///R;.07///"_$G(BGPROT)
- K DD,D0,DO D FILE^DICN K DLAYGO,DIADD,DD,D0,DO
- I Y=-1 S BGPRET=0_"^UNABLE TO CREATE ENTRY IN GUI OUTPUT FILE" Q
- S BGPGIEN=+Y
- S BGPDELT=""
- ;SEND THE REPORT PROCESS OFF TO THE BACKGROUND USING TASKMAN CALL
- D TSKMN
- S BGPRET=BGPGIEN
- Q
- ;
- TSKMN ;
- S ZTIO=""
- K ZTSAVE S ZTSAVE("*")=""
- S ZTCPU=$G(IOCPU),ZTRTN="MU^BGP3GMUE",ZTDTH=$S(BGPRTIME]"":BGPRTIME,1:$$NOW^XLFDT),ZTDESC="CRS GUI MU EP REPORT" D ^%ZTLOAD Q
- Q
- MU ;EP
- D ^BGPMUEPD
- K ^TMP($J,"BGPGUI")
- S IOM=80,BGPIOSL=55
- D GUIR^BGPXBLM("^BGPMUPP","^TMP($J,""BGPGUI"",")
- ;cmi/anch/maw added 5/12/2009 for word output
- S X=0,C=0 F S X=$O(^TMP($J,"BGPGUI",X)) Q:X'=+X D
- . S C=C+1
- . N BGPDATA
- . S BGPDATA=$G(^TMP($J,"BGPGUI",X))
- . I BGPDATA="ZZZZZZZ" S BGPDATA=$C(12)
- . S ^BGPGUIH(BGPGIEN,11,C,0)=BGPDATA
- S ^BGPGUIH(BGPGIEN,11,0)="^90549.1911^"_C_"^"_C_"^"_DT
- K ^TMP($J,"BGPGUI")
- ;cmi/anch/maw end of mods
- D ENDLOG
- D XIT
- Q
- ;
- XIT ;
- K ^TMP($J)
- D EN^XBVK("BGP") S:$D(ZTQUEUED) ZTREQ="@"
- K DIRUT,DUOUT,DIR,DOD
- K DIADD,DLAYGO
- D KILL^AUPNPAT
- K X,X1,X2,X3,X4,X5,X6
- K A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,V,W,X,Y,Z
- K N,N1,N2,N3,N4,N5,N6
- K BD,ED
- D KILL^AUPNPAT
- D ^XBFMK
- L -^BGPDATA
- Q
- ;
- ENDLOG ;-- UPDATE LOG AT END
- S DIE="^BGPGUIH(",DA=BGPGIEN,DR=".04////"_$$NOW^XLFDT_";.06///C"
- D ^DIE
- K DIE,DR,DA
- Q
- CI ;
- S X=0 F S X=$O(^BGPMUIND(BGPMUYF,"AMS","C",X)) Q:X'=+X S BGPIND(X)=""
- Q
- AI ;
- S X=0 F S X=$O(^BGPMUIND(BGPMUYF,"AMS","A",X)) Q:X'=+X S BGPIND(X)=""
- Q
- BGP3GMUE ; IHS/CMI/LAB - GUI MU EP REPORT ;
- +1 ;;13.0;IHS CLINICAL REPORTING;;NOV 20, 2012;Build 81
- +2 ;
- +3 ;
- TESTMU ;
- +1 SET ERR=""
- +2 SET BGPND(1)=""
- SET BGPND(3)=""
- +3 SET BGPLIST(3)=""
- +4 DO EP(.ERR,5459,5217,"BGP 13 ME EP REPORT",338,"C",.BGPND,1,311010,3000000,1,"A",.BGPLIST,"BUTCHER,LORI","5459","P",$$NOW^XLFDT,"","LORITESTMU")
- +5 WRITE !,ERR
- +6 QUIT
- EP(BGPRET,BGPUSER,BGPDUZ2,BGPOPTN,BGPTAXI,BGPINDT,BGPIND,BGPQTR,BGPPER,BGPVDT,BGPBEN,BGPLSTT,BGPLIST,BGPPRV,BGPPROV,BGPROT,BGPRTIME,BGPMFITI,BGPFILE) ;EP - called from GUI to produce COM REPORT CI05-RPT-LOC-COM
- +1 ; SEE ROUTINE BGP3DL if you have questions about any of these variables
- +2 ; BGPUSER - DUZ
- +3 ; BGPDUZ2 - DUZ(2)
- +4 ; BGPOPTN - OPTION NAME
- +5 ; BGPINDT - $E (1st character) of the answer to the following DIR call:
- +6 ; value will be a S, C, M, A
- +7 ; Select one of the following:
- +8 ;
- +9 ; Which set of Measures should be included in this report:
- +10 ;
- +11 ; BGPIND - note: THIS ARRAY IS ONLY REQUIRED IF BGPINDT="S" OR "M"
- +12 ; array containing iens of the measures selected by the user
- +13 ; for example, BGPIND(3)=""
- +14 ; BGPIND(6)="" if the user selected measures
- +15 ; 1 and 6 from the BGP 13 INDICATORS file. When
- +16 ; you present them to the user for selection use all of them
- +17 ; in the file, do not screen out any of them.
- +18 ;
- +19 ; BGPQTR - this is equal to 1,2
- +20 ; Select one of the following:
- +21 ;
- +22 ; 1 90 DAYS
- +23 ; 2 ONE YEAR
- +24 ;
- +25 ; Enter the date range for your report:
- +26 ;
- +27 ; BGPPER - this is beginning date in fileman format
- +28 ;
- +29 ; BGPVDT - baseline year entered by user in internal fileman format, year only
- +30 ; e.g. 3010000
- +31 ;
- +32 ; BGPBEN - 1 for Indians only, 2 for Not Indian, 3 for both (see reader call
- +33 ; at subroutine BEN in BGP3MUEP
- +34 ;
- +35 ; BGPLIST (array) contains the iens of the measures they want a list for.
- +36 ; when you present the choices for lists only present the measures they pick
- +37 ; that are in array BGPIND (run report to see this)
- +38 ; e.g. BGPLIST="A"
- +39 ; BGPLIST(3)=""
- +40 ;
- +41 ; BGPLPRV - will equal ien of provider if they picked FOR THE REPORT
- +42 ; BGPLPROV - will equal provider name if they picked FOR THE REPORT
- +43 ;
- +44 ; BGPROT - type of output P for printed, D For Delimited, B for both, X XML
- +45 ; BGPRTIME - report will be queued automatically, this variable
- +46 ; contains the time it will run, internal fileman format
- +47 ; must be date and time
- +48 ;
- +49 ; BGPRET - return value is ien^error message^export file name. a zero (0) is
- +50 ; passed as ien if error occurred, display the filename back to the user
- +51 ; if they chose to export to area
- +52 ;
- +53 ;create entry in gui output file
- +54 ;queue report to run with/GUIR
- +55 DO EP1
- +56 SET Y=BGPRET
- +57 ;D EN^XBVK("BGP") S:$D(ZTQUEUED) ZTREQ="@"
- +58 SET BGPRET=Y
- +59 QUIT
- EP1 ;
- +1 SET U="^"
- +2 IF $GET(BGPUSER)=""
- SET BGPRET=0_"^USER NOT PASSED"
- QUIT
- +3 IF $GET(BGPDUZ2)=""
- SET BGPRET=0_"^DUZ(2) NOT PASSED"
- QUIT
- +4 IF $GET(BGPOPTN)=""
- SET BGPRET=0_"^OPTION NAME NOT PASSED"
- QUIT
- +5 IF $GET(BGPINDT)=""
- SET BGPRET=0_"^INDICATOR TYPE NOT PASSED"
- QUIT
- +6 IF "ACMS"'[BGPINDT
- SET BGPRET=0_"^INDICATOR TYPE INVALID"
- QUIT
- +7 IF BGPINDT="S"
- IF '$DATA(BGPIND)
- SET BGPRET=0_"^INDICATOR ARRAY NOT PASSED"
- QUIT
- +8 IF BGPINDT="S"
- IF '$ORDER(BGPIND(0))
- SET BGPRET=0_"^INDICATOR ARRAY NOT PASSED"
- QUIT
- +9 IF BGPINDT="M"
- IF '$DATA(BGPIND)
- SET BGPRET=0_"^INDICATOR ARRAY NOT PASSED"
- QUIT
- +10 IF BGPINDT="M"
- IF '$ORDER(BGPIND(0))
- SET BGPRET=0_"^INDICATOR ARRAY NOT PASSED"
- QUIT
- +11 IF $GET(BGPPER)=""
- SET BGPRET=0_"^YEAR VARIABLE NOT PASSED"
- QUIT
- +12 IF $GET(BGPQTR)=""
- SET BGPRET=0_"^QUARTER/DATE TYPE NOT PASSED"
- QUIT
- +13 IF $GET(BGPVDT)=""
- SET BGPRET=0_"^BASELINE YEAR NOT PASSED"
- QUIT
- +14 IF $GET(BGPBEN)=""
- SET BGPRET=0_"^BENEFICIARY TYPE NOT PASSED"
- QUIT
- +15 IF "PDBX"'[$GET(BGPROT)
- SET BGPRET=0_"^REPORT OUTPUT TYPE NOT PASSED"
- QUIT
- +16 IF $GET(BGPLSTT)=""
- SET BGPRET=0_"^LIST TYPE NOT PASSED"
- QUIT
- +17 SET BGPRTIME=$GET(BGPRTIME)
- +18 SET BGPLIST=$GET(BGPLSTT)
- +19 IF $GET(BGPPROV)'?.N
- SET BGPPROV=BGPPRV
- +20 ;I $G(BGPLIST)="P",$G(BGPLPRV)="" S BGPRET=0_"^PROVIDER NOT PASSED FOR LIST TYPE P" Q
- +21 ;S DUZ=BGPUSER
- +22 SET DUZ(2)=BGPDUZ2
- +23 IF '$DATA(DT)
- SET DT=$$DT^XLFDT
- +24 DO ^XBKVAR
- +25 SET BGPGUI=1
- +26 SET IOM=80
- SET BGPIOSL=55
- +27 ;S BGPINDT=""
- +28 SET BGPMUYF="90595.11"
- +29 SET BGPRTYPE=4
- SET BGP0RPTH="A"
- +30 SET BGPMUT="P"
- +31 IF BGPINDT="C"
- KILL BGPIND
- DO CI
- +32 IF BGPINDT="A"
- KILL BGPIND
- DO AI
- +33 SET BGPLEN=$SELECT(BGPQTR=1:89,1:364)
- BY ;get baseline year
- +1 SET X=$EXTRACT(BGPPER,1,3)-$EXTRACT(BGPVDT,1,3)
- +2 SET X=X_"0000"
- +3 SET BGPBD=BGPPER
- +4 IF $EXTRACT(BGPBD,4,7)="0000"
- SET $EXTRACT(BGPBD,4,7)="0101"
- +5 SET BGPED=$$FMADD^XLFDT(BGPPER,BGPLEN)
- PY ;get previous year
- +1 NEW X1,X2,X
- +2 SET X1=BGPBD
- SET X2=-365
- +3 DO C^%DTC
- +4 SET BGPPBD=X
- +5 SET X1=BGPED
- SET X2=-365
- +6 DO C^%DTC
- +7 SET BGPPED=X
- +8 SET X=$EXTRACT(BGPPER,1,3)-$EXTRACT(BGPVDT,1,3)
- +9 SET X=X_"0000"
- +10 SET BGPBBD=BGPBD-X
- SET BGPBBD=$EXTRACT(BGPBBD,1,3)_$EXTRACT(BGPBD,4,7)
- +11 SET BGPBED=BGPED-X
- SET BGPBED=$EXTRACT(BGPBED,1,3)_$EXTRACT(BGPED,4,7)
- +12 ;create entry in GUI file
- +13 DO ^XBFMK
- +14 SET X=BGPFILE
- +15 ;S X=BGPUSER_$$NOW^XLFDT
- +16 ;S X=BGPUSER_$$NOW^XLFDTS X=BGPUSER_$$NOW^XLFDT
- SET BGPGFNM=X
- +17 SET DIC="^BGPGUIH("
- SET DIC(0)="L"
- SET DIADD=1
- SET DLAYGO=90549.19
- SET DIC("DR")=".02////"_BGPUSER_";.03////"_$SELECT(BGPRTIME]"":BGPRTIME,1:$$NOW^XLFDT)_";.05///"_BGPOPTN_";.06///R;.07///"_$G(BGPROT)
- +18 KILL DD,D0,DO
- DO FILE^DICN
- KILL DLAYGO,DIADD,DD,D0,DO
- +19 IF Y=-1
- SET BGPRET=0_"^UNABLE TO CREATE ENTRY IN GUI OUTPUT FILE"
- QUIT
- +20 SET BGPGIEN=+Y
- +21 SET BGPDELT=""
- +22 ;SEND THE REPORT PROCESS OFF TO THE BACKGROUND USING TASKMAN CALL
- +23 DO TSKMN
- +24 SET BGPRET=BGPGIEN
- +25 QUIT
- +26 ;
- TSKMN ;
- +1 SET ZTIO=""
- +2 KILL ZTSAVE
- SET ZTSAVE("*")=""
- +3 SET ZTCPU=$GET(IOCPU)
- SET ZTRTN="MU^BGP3GMUE"
- SET ZTDTH=$SELECT(BGPRTIME]"":BGPRTIME,1:$$NOW^XLFDT)
- SET ZTDESC="CRS GUI MU EP REPORT"
- DO ^%ZTLOAD
- QUIT
- +4 QUIT
- MU ;EP
- +1 DO ^BGPMUEPD
- +2 KILL ^TMP($JOB,"BGPGUI")
- +3 SET IOM=80
- SET BGPIOSL=55
- +4 DO GUIR^BGPXBLM("^BGPMUPP","^TMP($J,""BGPGUI"",")
- +5 ;cmi/anch/maw added 5/12/2009 for word output
- +6 SET X=0
- SET C=0
- FOR
- SET X=$ORDER(^TMP($JOB,"BGPGUI",X))
- IF X'=+X
- QUIT
- Begin DoDot:1
- +7 SET C=C+1
- +8 NEW BGPDATA
- +9 SET BGPDATA=$GET(^TMP($JOB,"BGPGUI",X))
- +10 IF BGPDATA="ZZZZZZZ"
- SET BGPDATA=$CHAR(12)
- +11 SET ^BGPGUIH(BGPGIEN,11,C,0)=BGPDATA
- End DoDot:1
- +12 SET ^BGPGUIH(BGPGIEN,11,0)="^90549.1911^"_C_"^"_C_"^"_DT
- +13 KILL ^TMP($JOB,"BGPGUI")
- +14 ;cmi/anch/maw end of mods
- +15 DO ENDLOG
- +16 DO XIT
- +17 QUIT
- +18 ;
- XIT ;
- +1 KILL ^TMP($JOB)
- +2 DO EN^XBVK("BGP")
- IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- +3 KILL DIRUT,DUOUT,DIR,DOD
- +4 KILL DIADD,DLAYGO
- +5 DO KILL^AUPNPAT
- +6 KILL X,X1,X2,X3,X4,X5,X6
- +7 KILL A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,V,W,X,Y,Z
- +8 KILL N,N1,N2,N3,N4,N5,N6
- +9 KILL BD,ED
- +10 DO KILL^AUPNPAT
- +11 DO ^XBFMK
- +12 LOCK -^BGPDATA
- +13 QUIT
- +14 ;
- ENDLOG ;-- UPDATE LOG AT END
- +1 SET DIE="^BGPGUIH("
- SET DA=BGPGIEN
- SET DR=".04////"_$$NOW^XLFDT_";.06///C"
- +2 DO ^DIE
- +3 KILL DIE,DR,DA
- +4 QUIT
- CI ;
- +1 SET X=0
- FOR
- SET X=$ORDER(^BGPMUIND(BGPMUYF,"AMS","C",X))
- IF X'=+X
- QUIT
- SET BGPIND(X)=""
- +2 QUIT
- AI ;
- +1 SET X=0
- FOR
- SET X=$ORDER(^BGPMUIND(BGPMUYF,"AMS","A",X))
- IF X'=+X
- QUIT
- SET BGPIND(X)=""
- +2 QUIT