1 | PSULR5 ;BIR/PDW - LAB extract summary message generator ;10 JUL 1999
|
---|
2 | ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
|
---|
3 | ;DBIA(s)
|
---|
4 | ; Reference to file 40.8 supported by DBIA 2438
|
---|
5 | ;
|
---|
6 | EN ;EP generate Total & Cost summary
|
---|
7 | EN1 N PSUITT,PSUREC
|
---|
8 | S:'$D(PSULRJOB) PSULRJOB=PSUJOB
|
---|
9 | S:'$D(PSULRSUB) PSULRSUB="PSULR_"_PSULRJOB
|
---|
10 | ;
|
---|
11 | ;S PSUSDT=2970101
|
---|
12 | ;S PSUEDT=2980501
|
---|
13 | I '$D(^XTMP(PSULRSUB,"RECORDS")) G NODATA
|
---|
14 | DIV ;EP Loop by Division
|
---|
15 | S PSUDIV="" F S PSUDIV=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV)) Q:PSUDIV="" D MESSAGE
|
---|
16 | Q
|
---|
17 | ;
|
---|
18 | MESSAGE ;EP Generate Summary Messages for a Division
|
---|
19 | ;
|
---|
20 | ;S X=PSUDIV,DIC=40.8,DIC(0)="X",D="C" D IX^DIC ;**1
|
---|
21 | ;S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
|
---|
22 | MSG1 ; Generate 1st summary message
|
---|
23 | ;
|
---|
24 | S PSUT=0,PSUP=0 ; test & patient counters
|
---|
25 | ; loop to get totals from records stored
|
---|
26 | S DFN=0
|
---|
27 | F S DFN=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN)) Q:DFN'>0 S PSUP=PSUP+1 D
|
---|
28 | . S PSUDC="" F S PSUDC=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUDC)) Q:PSUDC="" D
|
---|
29 | .. S PSUND=0
|
---|
30 | .. F S PSUND=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUDC,PSUND)) Q:PSUND'>0 S PSUT=PSUT+1
|
---|
31 | ;
|
---|
32 | S XMDUZ=DUZ
|
---|
33 | M XMY=PSUXMYS1
|
---|
34 | ;
|
---|
35 | S Y=PSUSDT X ^DD("DD") S PSUDTS=Y ; start date
|
---|
36 | S Y=PSUEDT X ^DD("DD") S PSUDTE=Y ; end date
|
---|
37 | N PSUMSG
|
---|
38 | S X=PSUDIV,DIC=40.8,DIC(0)="X",D="C" D IX^DIC ;**1
|
---|
39 | S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
|
---|
40 | ;
|
---|
41 | I $D(^XTMP("PSU_"_PSUJOB,"DIV",PSUDIV)) D
|
---|
42 | .;VMP OIFO BAY PINES;ELR;PSU*3.0*31
|
---|
43 | .I '$L($P($G(^XTMP("PSU_"_PSUJOB,"DIV",PSUDIV)),U,1)) Q
|
---|
44 | .S PSUDIVNM=$P(^XTMP("PSU_"_PSUJOB,"DIV",PSUDIV),U,1)
|
---|
45 | ;
|
---|
46 | S PSUMSG(1)=" Laboratory Statistical Summary"
|
---|
47 | S PSUMSG(2)=" "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM
|
---|
48 | S PSUMSG(3)=" "
|
---|
49 | S PSUMSG(4)="Total Patients "_PSUP
|
---|
50 | S PSUMSG(5)="Total Laboratory Tests "_PSUT
|
---|
51 | S PSUMSG(6)=" "
|
---|
52 | S XMSUB="V. 4.0 PBMLR "_$G(PSUMON)_" "_PSUDIV_" "_PSUDIVNM
|
---|
53 | S XMTEXT="PSUMSG("
|
---|
54 | S XMCHAN=1
|
---|
55 | D ^XMD
|
---|
56 | M ^XTMP(PSULRSUB,"REPORT1",PSUDIV)=PSUMSG
|
---|
57 | K PSUMSG
|
---|
58 | ;
|
---|
59 | MSG2 ; SUMMARY BY PATIENT
|
---|
60 | ;
|
---|
61 | ;
|
---|
62 | S PSUG="^XTMP(PSULRSUB,""REPORT2"",PSUDIV)"
|
---|
63 | K @PSUG
|
---|
64 | S @PSUG@(1)=" Laboratory Data Summary"
|
---|
65 | S @PSUG@(2)=" "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM
|
---|
66 | S @PSUG@(3)=" "
|
---|
67 | S X="Patient SSN"
|
---|
68 | S X=$$SETSTR^VALM1("VA CODE",X,15,7)
|
---|
69 | S X=$$SETSTR^VALM1("Laboratory",X,24,10)
|
---|
70 | S X=$$SETSTR^VALM1("Results",X,42,7)
|
---|
71 | S X=$$SETSTR^VALM1("Flag",X,57,4)
|
---|
72 | S X=$$SETSTR^VALM1("Date/Time Taken",X,63,15)
|
---|
73 | S @PSUG@(4)=X
|
---|
74 | S X="",$P(X,"-",79)=""
|
---|
75 | S @PSUG@(5)=X
|
---|
76 | S PSULC=5
|
---|
77 | ; loop records stored
|
---|
78 | S DFN=0,DFN1="",PSUCD1=""
|
---|
79 | F S DFN=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN)) Q:DFN'>0 D S DFN1=DFN
|
---|
80 | . ; loop drug codes
|
---|
81 | . S PSUCD=""
|
---|
82 | . F S PSUCD=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUCD)) Q:PSUCD="" D S PSUCD1=PSUCD
|
---|
83 | .. ; loop tests
|
---|
84 | .. S PSUND=0
|
---|
85 | .. F S PSUND=$O(^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUCD,PSUND)) Q:PSUND'>0 D SET
|
---|
86 | ;
|
---|
87 | S @PSUG@(PSULC+1)=" "
|
---|
88 | S XMSUB="V. 4.0 PBMLR "_$G(PSUMON)_" "_PSUDIV_" "_PSUDIVNM
|
---|
89 | S XMTEXT="^XTMP(PSULRSUB,""REPORT2"",PSUDIV,"
|
---|
90 | S XMCHAN=1
|
---|
91 | M XMY=PSUXMYS2
|
---|
92 | I '$G(PSUSMRY) D ^XMD
|
---|
93 | Q
|
---|
94 | ;
|
---|
95 | SET ;EP Set data into message
|
---|
96 | ;
|
---|
97 | S X=^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUCD,PSUND)
|
---|
98 | S PSULRT=$P(X,U),PSULRR=$P(X,U,2)
|
---|
99 | S PSULD=$P(X,U,3),PSULRF=$P(X,U,4)
|
---|
100 | S PSULD0=$E(PSULD,4,5)_"/"_$E(PSULD,6,7)_"/"_$E(PSULD,2,3)
|
---|
101 | S X=$P(PSULD,".",2),X=$E(X,1,4) F Q:$L(X)=4 S X=X_0 ; fill time
|
---|
102 | S PSULD=PSULD0_" "_X
|
---|
103 | S X=""
|
---|
104 | I DFN=DFN1
|
---|
105 | E D PID^VADPT S X=$TR(VA("PID"),"-",""),DFN1=DFN,PSUCD1="" K VA
|
---|
106 | I PSUCD1=PSUCD
|
---|
107 | E S X=$$SETSTR^VALM1(PSUCD,X,15,5) S PSUCD1=PSUCD
|
---|
108 | S X=$$SETSTR^VALM1(PSULRT,X,24,$L(PSULRT))
|
---|
109 | S X=$$SETSTR^VALM1(PSULRR,X,42,$L(PSULRR))
|
---|
110 | S X=$$SETSTR^VALM1(PSULRF,X,57,$L(PSULRF))
|
---|
111 | S X=$$SETSTR^VALM1(PSULD,X,63,$L(PSULD))
|
---|
112 | S PSULC=PSULC+1
|
---|
113 | S @PSUG@(PSULC)=X
|
---|
114 | ;
|
---|
115 | Q
|
---|
116 | NODATA ;EP SEND NO DATA MESSAGE
|
---|
117 | S XMDUZ=DUZ
|
---|
118 | M XMY=PSUXMYS1
|
---|
119 | ;
|
---|
120 | S Y=PSUSDT X ^DD("DD") S PSUDTS=Y ; start date
|
---|
121 | S Y=PSUEDT X ^DD("DD") S PSUDTE=Y ; end date
|
---|
122 | S PSUDIV=PSUSNDR
|
---|
123 | S X=PSUDIV,DIC=40.8,DIC(0)="X",D="C" D IX^DIC ;**1
|
---|
124 | S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
|
---|
125 | S XMSUB="V. 4.0 PBMLR "_$G(PSUMON)_" "_PSUDIV_" "_PSUDIVNM
|
---|
126 | S XMTEXT="^XTMP(PSULRSUB,""REPORT2"",PSUDIV,"
|
---|
127 | S XMCHAN=1
|
---|
128 | K X
|
---|
129 | S X(1)=" Laboratory Statistical Summary"
|
---|
130 | S X(2)=" "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM
|
---|
131 | S X(3)=" "
|
---|
132 | S X(4)="No data to report"
|
---|
133 | S X(5)=" "
|
---|
134 | S XMTEXT="X("
|
---|
135 | S:$G(PSUDUZ) XMY(PSUDUZ)=""
|
---|
136 | D ^XMD
|
---|
137 | M ^XTMP(PSULRSUB,"REPORT1",PSUDIV)=X
|
---|
138 | S XMSUB="V. 4.0 PBMPR "_$G(PSUMON)_" "_PSUDIV_" "_PSUDIVNM
|
---|
139 | S X(1)=" Laboratory Data Summary"
|
---|
140 | M ^XTMP(PSULRSUB,"REPORT2",PSUDIV)=X ;store for print cycle
|
---|
141 | Q
|
---|