- PSULR5 ;BIR/PDW - LAB extract summary message generator ;10 JUL 1999
- ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
- ;DBIA(s)
- ; Reference to file 40.8 supported by DBIA 2438
- ;
- EN ;EP generate Total & Cost summary
- EN1 N PSUITT,PSUREC
- S:'$D(PSULRJOB) PSULRJOB=PSUJOB
- S:'$D(PSULRSUB) PSULRSUB="PSULR_"_PSULRJOB
- ;
- ;S PSUSDT=2970101
- ;S PSUEDT=2980501
- I '$D(^XTMP(PSULRSUB,"RECORDS")) G NODATA
- DIV ;EP Loop by Division
- S PSUDIV="" F S PSUDIV=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV)) Q:PSUDIV="" D MESSAGE
- Q
- ;
- MESSAGE ;EP Generate Summary Messages for a Division
- ;
- ;S X=PSUDIV,DIC=40.8,DIC(0)="X",D="C" D IX^DIC ;**1
- ;S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
- MSG1 ; Generate 1st summary message
- ;
- S PSUT=0,PSUP=0 ; test & patient counters
- ; loop to get totals from records stored
- S DFN=0
- F S DFN=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN)) Q:DFN'>0 S PSUP=PSUP+1 D
- . S PSUDC="" F S PSUDC=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUDC)) Q:PSUDC="" D
- .. S PSUND=0
- .. F S PSUND=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUDC,PSUND)) Q:PSUND'>0 S PSUT=PSUT+1
- ;
- S XMDUZ=DUZ
- M XMY=PSUXMYS1
- ;
- S Y=PSUSDT X ^DD("DD") S PSUDTS=Y ; start date
- S Y=PSUEDT X ^DD("DD") S PSUDTE=Y ; end date
- N PSUMSG
- S X=PSUDIV,DIC=40.8,DIC(0)="X",D="C" D IX^DIC ;**1
- S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
- ;
- I $D(^XTMP("PSU_"_PSUJOB,"DIV",PSUDIV)) D
- .;VMP OIFO BAY PINES;ELR;PSU*3.0*31
- .I '$L($P($G(^XTMP("PSU_"_PSUJOB,"DIV",PSUDIV)),U,1)) Q
- .S PSUDIVNM=$P(^XTMP("PSU_"_PSUJOB,"DIV",PSUDIV),U,1)
- ;
- S PSUMSG(1)=" Laboratory Statistical Summary"
- S PSUMSG(2)=" "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM
- S PSUMSG(3)=" "
- S PSUMSG(4)="Total Patients "_PSUP
- S PSUMSG(5)="Total Laboratory Tests "_PSUT
- S PSUMSG(6)=" "
- S XMSUB="V. 4.0 PBMLR "_$G(PSUMON)_" "_PSUDIV_" "_PSUDIVNM
- S XMTEXT="PSUMSG("
- S XMCHAN=1
- D ^XMD
- M ^XTMP(PSULRSUB,"REPORT1",PSUDIV)=PSUMSG
- K PSUMSG
- ;
- MSG2 ; SUMMARY BY PATIENT
- ;
- ;
- S PSUG="^XTMP(PSULRSUB,""REPORT2"",PSUDIV)"
- K @PSUG
- S @PSUG@(1)=" Laboratory Data Summary"
- S @PSUG@(2)=" "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM
- S @PSUG@(3)=" "
- S X="Patient SSN"
- S X=$$SETSTR^VALM1("VA CODE",X,15,7)
- S X=$$SETSTR^VALM1("Laboratory",X,24,10)
- S X=$$SETSTR^VALM1("Results",X,42,7)
- S X=$$SETSTR^VALM1("Flag",X,57,4)
- S X=$$SETSTR^VALM1("Date/Time Taken",X,63,15)
- S @PSUG@(4)=X
- S X="",$P(X,"-",79)=""
- S @PSUG@(5)=X
- S PSULC=5
- ; loop records stored
- S DFN=0,DFN1="",PSUCD1=""
- F S DFN=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN)) Q:DFN'>0 D S DFN1=DFN
- . ; loop drug codes
- . S PSUCD=""
- . F S PSUCD=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUCD)) Q:PSUCD="" D S PSUCD1=PSUCD
- .. ; loop tests
- .. S PSUND=0
- .. F S PSUND=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUCD,PSUND)) Q:PSUND'>0 D SET
- ;
- S @PSUG@(PSULC+1)=" "
- S XMSUB="V. 4.0 PBMLR "_$G(PSUMON)_" "_PSUDIV_" "_PSUDIVNM
- S XMTEXT="^XTMP(PSULRSUB,""REPORT2"",PSUDIV,"
- S XMCHAN=1
- M XMY=PSUXMYS2
- I '$G(PSUSMRY) D ^XMD
- Q
- ;
- SET ;EP Set data into message
- ;
- S X=^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUCD,PSUND)
- S PSULRT=$P(X,U),PSULRR=$P(X,U,2)
- S PSULD=$P(X,U,3),PSULRF=$P(X,U,4)
- S PSULD0=$E(PSULD,4,5)_"/"_$E(PSULD,6,7)_"/"_$E(PSULD,2,3)
- S X=$P(PSULD,".",2),X=$E(X,1,4) F Q:$L(X)=4 S X=X_0 ; fill time
- S PSULD=PSULD0_" "_X
- S X=""
- I DFN=DFN1
- E D PID^VADPT S X=$TR(VA("PID"),"-",""),DFN1=DFN,PSUCD1="" K VA
- I PSUCD1=PSUCD
- E S X=$$SETSTR^VALM1(PSUCD,X,15,5) S PSUCD1=PSUCD
- S X=$$SETSTR^VALM1(PSULRT,X,24,$L(PSULRT))
- S X=$$SETSTR^VALM1(PSULRR,X,42,$L(PSULRR))
- S X=$$SETSTR^VALM1(PSULRF,X,57,$L(PSULRF))
- S X=$$SETSTR^VALM1(PSULD,X,63,$L(PSULD))
- S PSULC=PSULC+1
- S @PSUG@(PSULC)=X
- ;
- Q
- NODATA ;EP SEND NO DATA MESSAGE
- S XMDUZ=DUZ
- M XMY=PSUXMYS1
- ;
- S Y=PSUSDT X ^DD("DD") S PSUDTS=Y ; start date
- S Y=PSUEDT X ^DD("DD") S PSUDTE=Y ; end date
- S PSUDIV=PSUSNDR
- S X=PSUDIV,DIC=40.8,DIC(0)="X",D="C" D IX^DIC ;**1
- S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
- S XMSUB="V. 4.0 PBMLR "_$G(PSUMON)_" "_PSUDIV_" "_PSUDIVNM
- S XMTEXT="^XTMP(PSULRSUB,""REPORT2"",PSUDIV,"
- S XMCHAN=1
- K X
- S X(1)=" Laboratory Statistical Summary"
- S X(2)=" "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM
- S X(3)=" "
- S X(4)="No data to report"
- S X(5)=" "
- S XMTEXT="X("
- S:$G(PSUDUZ) XMY(PSUDUZ)=""
- D ^XMD
- M ^XTMP(PSULRSUB,"REPORT1",PSUDIV)=X
- S XMSUB="V. 4.0 PBMPR "_$G(PSUMON)_" "_PSUDIV_" "_PSUDIVNM
- S X(1)=" Laboratory Data Summary"
- M ^XTMP(PSULRSUB,"REPORT2",PSUDIV)=X ;store for print cycle
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSULR5 4684 printed Feb 18, 2025@23:54 Page 2
- PSULR5 ;BIR/PDW - LAB extract summary message generator ;10 JUL 1999
- +1 ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
- +2 ;DBIA(s)
- +3 ; Reference to file 40.8 supported by DBIA 2438
- +4 ;
- EN ;EP generate Total & Cost summary
- EN1 NEW PSUITT,PSUREC
- +1 if '$DATA(PSULRJOB)
- SET PSULRJOB=PSUJOB
- +2 if '$DATA(PSULRSUB)
- SET PSULRSUB="PSULR_"_PSULRJOB
- +3 ;
- +4 ;S PSUSDT=2970101
- +5 ;S PSUEDT=2980501
- +6 IF '$DATA(^XTMP(PSULRSUB,"RECORDS"))
- GOTO NODATA
- DIV ;EP Loop by Division
- +1 SET PSUDIV=""
- FOR
- SET PSUDIV=$ORDER(^XTMP(PSULRSUB,"SUMMARY",PSUDIV))
- if PSUDIV=""
- QUIT
- DO MESSAGE
- +2 QUIT
- +3 ;
- MESSAGE ;EP Generate Summary Messages for a Division
- +1 ;
- +2 ;S X=PSUDIV,DIC=40.8,DIC(0)="X",D="C" D IX^DIC ;**1
- +3 ;S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
- MSG1 ; Generate 1st summary message
- +1 ;
- +2 ; test & patient counters
- SET PSUT=0
- SET PSUP=0
- +3 ; loop to get totals from records stored
- +4 SET DFN=0
- +5 FOR
- SET DFN=$ORDER(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN))
- if DFN'>0
- QUIT
- SET PSUP=PSUP+1
- Begin DoDot:1
- +6 SET PSUDC=""
- FOR
- SET PSUDC=$ORDER(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUDC))
- if PSUDC=""
- QUIT
- Begin DoDot:2
- +7 SET PSUND=0
- +8 FOR
- SET PSUND=$ORDER(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUDC,PSUND))
- if PSUND'>0
- QUIT
- SET PSUT=PSUT+1
- End DoDot:2
- End DoDot:1
- +9 ;
- +10 SET XMDUZ=DUZ
- +11 MERGE XMY=PSUXMYS1
- +12 ;
- +13 ; start date
- SET Y=PSUSDT
- XECUTE ^DD("DD")
- SET PSUDTS=Y
- +14 ; end date
- SET Y=PSUEDT
- XECUTE ^DD("DD")
- SET PSUDTE=Y
- +15 NEW PSUMSG
- +16 ;**1
- SET X=PSUDIV
- SET DIC=40.8
- SET DIC(0)="X"
- SET D="C"
- DO IX^DIC
- +17 SET X=+Y
- SET PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
- +18 ;
- +19 IF $DATA(^XTMP("PSU_"_PSUJOB,"DIV",PSUDIV))
- Begin DoDot:1
- +20 ;VMP OIFO BAY PINES;ELR;PSU*3.0*31
- +21 IF '$LENGTH($PIECE($GET(^XTMP("PSU_"_PSUJOB,"DIV",PSUDIV)),U,1))
- QUIT
- +22 SET PSUDIVNM=$PIECE(^XTMP("PSU_"_PSUJOB,"DIV",PSUDIV),U,1)
- End DoDot:1
- +23 ;
- +24 SET PSUMSG(1)=" Laboratory Statistical Summary"
- +25 SET PSUMSG(2)=" "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM
- +26 SET PSUMSG(3)=" "
- +27 SET PSUMSG(4)="Total Patients "_PSUP
- +28 SET PSUMSG(5)="Total Laboratory Tests "_PSUT
- +29 SET PSUMSG(6)=" "
- +30 SET XMSUB="V. 4.0 PBMLR "_$GET(PSUMON)_" "_PSUDIV_" "_PSUDIVNM
- +31 SET XMTEXT="PSUMSG("
- +32 SET XMCHAN=1
- +33 DO ^XMD
- +34 MERGE ^XTMP(PSULRSUB,"REPORT1",PSUDIV)=PSUMSG
- +35 KILL PSUMSG
- +36 ;
- MSG2 ; SUMMARY BY PATIENT
- +1 ;
- +2 ;
- +3 SET PSUG="^XTMP(PSULRSUB,""REPORT2"",PSUDIV)"
- +4 KILL @PSUG
- +5 SET @PSUG@(1)=" Laboratory Data Summary"
- +6 SET @PSUG@(2)=" "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM
- +7 SET @PSUG@(3)=" "
- +8 SET X="Patient SSN"
- +9 SET X=$$SETSTR^VALM1("VA CODE",X,15,7)
- +10 SET X=$$SETSTR^VALM1("Laboratory",X,24,10)
- +11 SET X=$$SETSTR^VALM1("Results",X,42,7)
- +12 SET X=$$SETSTR^VALM1("Flag",X,57,4)
- +13 SET X=$$SETSTR^VALM1("Date/Time Taken",X,63,15)
- +14 SET @PSUG@(4)=X
- +15 SET X=""
- SET $PIECE(X,"-",79)=""
- +16 SET @PSUG@(5)=X
- +17 SET PSULC=5
- +18 ; loop records stored
- +19 SET DFN=0
- SET DFN1=""
- SET PSUCD1=""
- +20 FOR
- SET DFN=$ORDER(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN))
- if DFN'>0
- QUIT
- Begin DoDot:1
- +21 ; loop drug codes
- +22 SET PSUCD=""
- +23 FOR
- SET PSUCD=$ORDER(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUCD))
- if PSUCD=""
- QUIT
- Begin DoDot:2
- +24 ; loop tests
- +25 SET PSUND=0
- +26 FOR
- SET PSUND=$ORDER(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUCD,PSUND))
- if PSUND'>0
- QUIT
- DO SET
- End DoDot:2
- SET PSUCD1=PSUCD
- End DoDot:1
- SET DFN1=DFN
- +27 ;
- +28 SET @PSUG@(PSULC+1)=" "
- +29 SET XMSUB="V. 4.0 PBMLR "_$GET(PSUMON)_" "_PSUDIV_" "_PSUDIVNM
- +30 SET XMTEXT="^XTMP(PSULRSUB,""REPORT2"",PSUDIV,"
- +31 SET XMCHAN=1
- +32 MERGE XMY=PSUXMYS2
- +33 IF '$GET(PSUSMRY)
- DO ^XMD
- +34 QUIT
- +35 ;
- SET ;EP Set data into message
- +1 ;
- +2 SET X=^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUCD,PSUND)
- +3 SET PSULRT=$PIECE(X,U)
- SET PSULRR=$PIECE(X,U,2)
- +4 SET PSULD=$PIECE(X,U,3)
- SET PSULRF=$PIECE(X,U,4)
- +5 SET PSULD0=$EXTRACT(PSULD,4,5)_"/"_$EXTRACT(PSULD,6,7)_"/"_$EXTRACT(PSULD,2,3)
- +6 ; fill time
- SET X=$PIECE(PSULD,".",2)
- SET X=$EXTRACT(X,1,4)
- FOR
- if $LENGTH(X)=4
- QUIT
- SET X=X_0
- +7 SET PSULD=PSULD0_" "_X
- +8 SET X=""
- +9 IF DFN=DFN1
- +10 IF '$TEST
- DO PID^VADPT
- SET X=$TRANSLATE(VA("PID"),"-","")
- SET DFN1=DFN
- SET PSUCD1=""
- KILL VA
- +11 IF PSUCD1=PSUCD
- +12 IF '$TEST
- SET X=$$SETSTR^VALM1(PSUCD,X,15,5)
- SET PSUCD1=PSUCD
- +13 SET X=$$SETSTR^VALM1(PSULRT,X,24,$LENGTH(PSULRT))
- +14 SET X=$$SETSTR^VALM1(PSULRR,X,42,$LENGTH(PSULRR))
- +15 SET X=$$SETSTR^VALM1(PSULRF,X,57,$LENGTH(PSULRF))
- +16 SET X=$$SETSTR^VALM1(PSULD,X,63,$LENGTH(PSULD))
- +17 SET PSULC=PSULC+1
- +18 SET @PSUG@(PSULC)=X
- +19 ;
- +20 QUIT
- NODATA ;EP SEND NO DATA MESSAGE
- +1 SET XMDUZ=DUZ
- +2 MERGE XMY=PSUXMYS1
- +3 ;
- +4 ; start date
- SET Y=PSUSDT
- XECUTE ^DD("DD")
- SET PSUDTS=Y
- +5 ; end date
- SET Y=PSUEDT
- XECUTE ^DD("DD")
- SET PSUDTE=Y
- +6 SET PSUDIV=PSUSNDR
- +7 ;**1
- SET X=PSUDIV
- SET DIC=40.8
- SET DIC(0)="X"
- SET D="C"
- DO IX^DIC
- +8 SET X=+Y
- SET PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
- +9 SET XMSUB="V. 4.0 PBMLR "_$GET(PSUMON)_" "_PSUDIV_" "_PSUDIVNM
- +10 SET XMTEXT="^XTMP(PSULRSUB,""REPORT2"",PSUDIV,"
- +11 SET XMCHAN=1
- +12 KILL X
- +13 SET X(1)=" Laboratory Statistical Summary"
- +14 SET X(2)=" "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM
- +15 SET X(3)=" "
- +16 SET X(4)="No data to report"
- +17 SET X(5)=" "
- +18 SET XMTEXT="X("
- +19 if $GET(PSUDUZ)
- SET XMY(PSUDUZ)=""
- +20 DO ^XMD
- +21 MERGE ^XTMP(PSULRSUB,"REPORT1",PSUDIV)=X
- +22 SET XMSUB="V. 4.0 PBMPR "_$GET(PSUMON)_" "_PSUDIV_" "_PSUDIVNM
- +23 SET X(1)=" Laboratory Data Summary"
- +24 ;store for print cycle
- MERGE ^XTMP(PSULRSUB,"REPORT2",PSUDIV)=X
- +25 QUIT