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

PSULR5.m

Go to the documentation of this file.
  1. PSULR5 ;BIR/PDW - LAB extract summary message generator ;10 JUL 1999
  1. ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
  1. ;DBIA(s)
  1. ; Reference to file 40.8 supported by DBIA 2438
  1. ;
  1. EN ;EP generate Total & Cost summary
  1. EN1 N PSUITT,PSUREC
  1. S:'$D(PSULRJOB) PSULRJOB=PSUJOB
  1. S:'$D(PSULRSUB) PSULRSUB="PSULR_"_PSULRJOB
  1. ;
  1. ;S PSUSDT=2970101
  1. ;S PSUEDT=2980501
  1. I '$D(^XTMP(PSULRSUB,"RECORDS")) G NODATA
  1. DIV ;EP Loop by Division
  1. S PSUDIV="" F S PSUDIV=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV)) Q:PSUDIV="" D MESSAGE
  1. Q
  1. ;
  1. MESSAGE ;EP Generate Summary Messages for a Division
  1. ;
  1. ;S X=PSUDIV,DIC=40.8,DIC(0)="X",D="C" D IX^DIC ;**1
  1. ;S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
  1. MSG1 ; Generate 1st summary message
  1. ;
  1. S PSUT=0,PSUP=0 ; test & patient counters
  1. ; loop to get totals from records stored
  1. S DFN=0
  1. F S DFN=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN)) Q:DFN'>0 S PSUP=PSUP+1 D
  1. . S PSUDC="" F S PSUDC=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUDC)) Q:PSUDC="" D
  1. .. S PSUND=0
  1. .. F S PSUND=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUDC,PSUND)) Q:PSUND'>0 S PSUT=PSUT+1
  1. ;
  1. S XMDUZ=DUZ
  1. M XMY=PSUXMYS1
  1. ;
  1. S Y=PSUSDT X ^DD("DD") S PSUDTS=Y ; start date
  1. S Y=PSUEDT X ^DD("DD") S PSUDTE=Y ; end date
  1. N PSUMSG
  1. S X=PSUDIV,DIC=40.8,DIC(0)="X",D="C" D IX^DIC ;**1
  1. S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
  1. ;
  1. I $D(^XTMP("PSU_"_PSUJOB,"DIV",PSUDIV)) D
  1. .;VMP OIFO BAY PINES;ELR;PSU*3.0*31
  1. .I '$L($P($G(^XTMP("PSU_"_PSUJOB,"DIV",PSUDIV)),U,1)) Q
  1. .S PSUDIVNM=$P(^XTMP("PSU_"_PSUJOB,"DIV",PSUDIV),U,1)
  1. ;
  1. S PSUMSG(1)=" Laboratory Statistical Summary"
  1. S PSUMSG(2)=" "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM
  1. S PSUMSG(3)=" "
  1. S PSUMSG(4)="Total Patients "_PSUP
  1. S PSUMSG(5)="Total Laboratory Tests "_PSUT
  1. S PSUMSG(6)=" "
  1. S XMSUB="V. 4.0 PBMLR "_$G(PSUMON)_" "_PSUDIV_" "_PSUDIVNM
  1. S XMTEXT="PSUMSG("
  1. S XMCHAN=1
  1. D ^XMD
  1. M ^XTMP(PSULRSUB,"REPORT1",PSUDIV)=PSUMSG
  1. K PSUMSG
  1. ;
  1. MSG2 ; SUMMARY BY PATIENT
  1. ;
  1. ;
  1. S PSUG="^XTMP(PSULRSUB,""REPORT2"",PSUDIV)"
  1. K @PSUG
  1. S @PSUG@(1)=" Laboratory Data Summary"
  1. S @PSUG@(2)=" "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM
  1. S @PSUG@(3)=" "
  1. S X="Patient SSN"
  1. S X=$$SETSTR^VALM1("VA CODE",X,15,7)
  1. S X=$$SETSTR^VALM1("Laboratory",X,24,10)
  1. S X=$$SETSTR^VALM1("Results",X,42,7)
  1. S X=$$SETSTR^VALM1("Flag",X,57,4)
  1. S X=$$SETSTR^VALM1("Date/Time Taken",X,63,15)
  1. S @PSUG@(4)=X
  1. S X="",$P(X,"-",79)=""
  1. S @PSUG@(5)=X
  1. S PSULC=5
  1. ; loop records stored
  1. S DFN=0,DFN1="",PSUCD1=""
  1. F S DFN=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN)) Q:DFN'>0 D S DFN1=DFN
  1. . ; loop drug codes
  1. . S PSUCD=""
  1. . F S PSUCD=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUCD)) Q:PSUCD="" D S PSUCD1=PSUCD
  1. .. ; loop tests
  1. .. S PSUND=0
  1. .. F S PSUND=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUCD,PSUND)) Q:PSUND'>0 D SET
  1. ;
  1. S @PSUG@(PSULC+1)=" "
  1. S XMSUB="V. 4.0 PBMLR "_$G(PSUMON)_" "_PSUDIV_" "_PSUDIVNM
  1. S XMTEXT="^XTMP(PSULRSUB,""REPORT2"",PSUDIV,"
  1. S XMCHAN=1
  1. M XMY=PSUXMYS2
  1. I '$G(PSUSMRY) D ^XMD
  1. Q
  1. ;
  1. SET ;EP Set data into message
  1. ;
  1. S X=^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUCD,PSUND)
  1. S PSULRT=$P(X,U),PSULRR=$P(X,U,2)
  1. S PSULD=$P(X,U,3),PSULRF=$P(X,U,4)
  1. S PSULD0=$E(PSULD,4,5)_"/"_$E(PSULD,6,7)_"/"_$E(PSULD,2,3)
  1. S X=$P(PSULD,".",2),X=$E(X,1,4) F Q:$L(X)=4 S X=X_0 ; fill time
  1. S PSULD=PSULD0_" "_X
  1. S X=""
  1. I DFN=DFN1
  1. E D PID^VADPT S X=$TR(VA("PID"),"-",""),DFN1=DFN,PSUCD1="" K VA
  1. I PSUCD1=PSUCD
  1. E S X=$$SETSTR^VALM1(PSUCD,X,15,5) S PSUCD1=PSUCD
  1. S X=$$SETSTR^VALM1(PSULRT,X,24,$L(PSULRT))
  1. S X=$$SETSTR^VALM1(PSULRR,X,42,$L(PSULRR))
  1. S X=$$SETSTR^VALM1(PSULRF,X,57,$L(PSULRF))
  1. S X=$$SETSTR^VALM1(PSULD,X,63,$L(PSULD))
  1. S PSULC=PSULC+1
  1. S @PSUG@(PSULC)=X
  1. ;
  1. Q
  1. NODATA ;EP SEND NO DATA MESSAGE
  1. S XMDUZ=DUZ
  1. M XMY=PSUXMYS1
  1. ;
  1. S Y=PSUSDT X ^DD("DD") S PSUDTS=Y ; start date
  1. S Y=PSUEDT X ^DD("DD") S PSUDTE=Y ; end date
  1. S PSUDIV=PSUSNDR
  1. S X=PSUDIV,DIC=40.8,DIC(0)="X",D="C" D IX^DIC ;**1
  1. S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
  1. S XMSUB="V. 4.0 PBMLR "_$G(PSUMON)_" "_PSUDIV_" "_PSUDIVNM
  1. S XMTEXT="^XTMP(PSULRSUB,""REPORT2"",PSUDIV,"
  1. S XMCHAN=1
  1. K X
  1. S X(1)=" Laboratory Statistical Summary"
  1. S X(2)=" "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM
  1. S X(3)=" "
  1. S X(4)="No data to report"
  1. S X(5)=" "
  1. S XMTEXT="X("
  1. S:$G(PSUDUZ) XMY(PSUDUZ)=""
  1. D ^XMD
  1. M ^XTMP(PSULRSUB,"REPORT1",PSUDIV)=X
  1. S XMSUB="V. 4.0 PBMPR "_$G(PSUMON)_" "_PSUDIV_" "_PSUDIVNM
  1. S X(1)=" Laboratory Data Summary"
  1. M ^XTMP(PSULRSUB,"REPORT2",PSUDIV)=X ;store for print cycle
  1. Q