1 | PSUUD7 ;BIR/DAM - UD AMIS Summary Message II;23 MAR 2004
|
---|
2 | ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
|
---|
3 | ;
|
---|
4 | ;Reference to file #40.8 supported by DBIA 2438
|
---|
5 | ;
|
---|
6 | EN ;Entry point for MailMan message
|
---|
7 | ;Called from PSUUD0
|
---|
8 | ;
|
---|
9 | K AMIS,DOSE,DOSTOT,SPEC,DIVTOT,GTOT ;Kill arrays to hold data
|
---|
10 | ;
|
---|
11 | D MSG
|
---|
12 | F PSULN=PSULN:1:(PSULN+3) S AMIS(PSULN)="" ;Blank lines
|
---|
13 | M ^XTMP("PSU_"_PSUJOB,"UDAMIS")=AMIS
|
---|
14 | D MAIL
|
---|
15 | ;
|
---|
16 | Q
|
---|
17 | ;
|
---|
18 | MSG ;Set up lines in message
|
---|
19 | ;
|
---|
20 | S Y=PSUSDT\1 X ^DD("DD") S PSUDTS=Y ; start date
|
---|
21 | S Y=PSUEDT\1 X ^DD("DD") S PSUDTE=Y ; end date
|
---|
22 | ;
|
---|
23 | S X=PSUSNDR,DIC=40.8,DIC(0)="X",D="C" D IX^DIC
|
---|
24 | S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
|
---|
25 | S AMIS(1)="UD AMIS Summary for "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM
|
---|
26 | ;
|
---|
27 | S AMIS(2)="" ;Blank line
|
---|
28 | ;
|
---|
29 | S AMIS(3)=" NET"
|
---|
30 | ;
|
---|
31 | S AMIS(4)=" DOSES DOSES DOSES TOTAL AVG COST"
|
---|
32 | ;
|
---|
33 | S AMIS(5)="DIVISION DISP RET DISP COST PER DOSE"
|
---|
34 | ;
|
---|
35 | S $P(AMIS(6),"-",78)="" ;Separator bar
|
---|
36 | ;
|
---|
37 | S PSULN=7
|
---|
38 | ;
|
---|
39 | D DOSE
|
---|
40 | ;
|
---|
41 | S $P(AMIS(PSULN),"-",78)="" S PSULN=PSULN+1 ;Separator bar
|
---|
42 | ;
|
---|
43 | D DOST
|
---|
44 | ;
|
---|
45 | F PSULN=PSULN:1:(PSULN+2) S AMIS(PSULN)="" ;Blank lines
|
---|
46 | S PULN=PSULN+1
|
---|
47 | ;
|
---|
48 | S AMIS(PSULN)="Division Specialty Total Patient Days of Care"
|
---|
49 | ;
|
---|
50 | S PSULN=PSULN+1
|
---|
51 | ;
|
---|
52 | S $P(AMIS(PSULN),"-",78)="" S PSULN=PSULN+1 ;Separator bar
|
---|
53 | ;
|
---|
54 | D DIV ;Calculate division data
|
---|
55 | D GTOT ;Calculate grand totals
|
---|
56 | Q
|
---|
57 | ;
|
---|
58 | DOSE ;Set doses into array and set data into message
|
---|
59 | ;
|
---|
60 | M DOSE=^XTMP(PSUUDSUB,"DOSES")
|
---|
61 | ;
|
---|
62 | S PSUDIV=0
|
---|
63 | F S PSUDIV=$O(DOSE(PSUDIV)) Q:PSUDIV="" D
|
---|
64 | .S X=PSUDIV,DIC=40.8,DIC(0)="X",D="C" D IX^DIC
|
---|
65 | .S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
|
---|
66 | .S PSULINE=""
|
---|
67 | .S $E(PSULINE,1,17)=PSUDIVNM
|
---|
68 | .S $E(PSULINE,18,24)=$J($P(DOSE(PSUDIV),U,1),7)
|
---|
69 | .S $E(PSULINE,25,32)=$J($P(DOSE(PSUDIV),U,2),8)
|
---|
70 | .S $E(PSULINE,33,42)=$J($P(DOSE(PSUDIV),U,3),10)
|
---|
71 | .S $E(PSULINE,44,45)="$"
|
---|
72 | .S $E(PSULINE,46,53)=$J($P(DOSE(PSUDIV),U,4),8)
|
---|
73 | .S $E(PSULINE,57,58)="$"
|
---|
74 | .S $E(PSULINE,59,64)=$J($P(DOSE(PSUDIV),U,5),6)
|
---|
75 | .S AMIS(PSULN)=PSULINE S PSULN=PSULN+1
|
---|
76 | Q
|
---|
77 | ;
|
---|
78 | DOST ;Set dose totals into array and set into message
|
---|
79 | ;
|
---|
80 | M DOSTOT=^XTMP(PSUUDSUB,"DOSTOT")
|
---|
81 | I '$G(DOSTOT) S DOSTOT="0^0^0^0^0"
|
---|
82 | ;
|
---|
83 | S PSULINE=""
|
---|
84 | S $E(PSULINE,1,17)="Total"
|
---|
85 | S $E(PSULINE,18,24)=$J($P(DOSTOT,U,1),7)
|
---|
86 | S $E(PSULINE,25,32)=$J($P(DOSTOT,U,2),8)
|
---|
87 | S $E(PSULINE,33,42)=$J($P(DOSTOT,U,3),10)
|
---|
88 | S $E(PSULINE,44,45)="$"
|
---|
89 | S $E(PSULINE,46,53)=$J($P(DOSTOT,U,4),8)
|
---|
90 | S $E(PSULINE,57,58)="$"
|
---|
91 | S $E(PSULINE,59,64)=$J($P(DOSTOT,U,5),6)
|
---|
92 | S AMIS(PSULN)=PSULINE S PSULN=PSULN+1
|
---|
93 | Q
|
---|
94 | ;
|
---|
95 | DIV ;Set division data into array and create message
|
---|
96 | ;
|
---|
97 | M SPEC=^XTMP(PSUUDSUB,"SPEC")
|
---|
98 | ;
|
---|
99 | ;
|
---|
100 | S PSUDV=0
|
---|
101 | F S PSUDV=$O(SPEC(PSUDV)) Q:PSUDV="" D
|
---|
102 | .S X=PSUDV,DIC=40.8,DIC(0)="X",D="C" D IX^DIC
|
---|
103 | .S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
|
---|
104 | .S PSUSPC=0
|
---|
105 | .N C
|
---|
106 | .F S PSUSPC=$O(SPEC(PSUDV,PSUSPC)) Q:PSUSPC="" D
|
---|
107 | ..S PSULINE=""
|
---|
108 | ..I '$D(C) S $E(PSULINE,1,17)=PSUDIVNM S C=""
|
---|
109 | ..S $E(PSULINE,25,49)=$P(SPEC(PSUDV,PSUSPC),U,1)
|
---|
110 | ..S $E(PSULINE,50,59)=$J($P(SPEC(PSUDV,PSUSPC),U,2),10)
|
---|
111 | ..S AMIS(PSULN)=PSULINE S PSULN=PSULN+1
|
---|
112 | .D DIVTOT
|
---|
113 | Q
|
---|
114 | ;
|
---|
115 | DIVTOT ;Create message lines for division totals
|
---|
116 | ;
|
---|
117 | S $P(AMIS(PSULN),"-",78)="" S PSULN=PSULN+1 ;Separator bar
|
---|
118 | ;
|
---|
119 | S PSULINE=""
|
---|
120 | S $E(PSULINE,1,40)=PSUDIVNM_" Total"
|
---|
121 | S $E(PSULINE,50,59)=$J(^XTMP(PSUUDSUB,"DIVTOT",PSUDV),10)
|
---|
122 | S AMIS(PSULN)=PSULINE
|
---|
123 | ;
|
---|
124 | S PSULN=PSULN+1
|
---|
125 | ;
|
---|
126 | F PSULN=PSULN:1:(PSULN+2) S AMIS(PSULN)="" ;Blank lines
|
---|
127 | S PSULN=PSULN+1
|
---|
128 | Q
|
---|
129 | ;
|
---|
130 | GTOT ;Calculate grand total patient days of care for all divisions
|
---|
131 | ;
|
---|
132 | S $P(AMIS(PSULN),"-",78)="" S PSULN=PSULN+1 ;Separator bar
|
---|
133 | ;
|
---|
134 | S PSULINE=""
|
---|
135 | S $E(PSULINE,1,40)="Grand Total"
|
---|
136 | S $E(PSULINE,50,59)=$J($G(^XTMP(PSUUDSUB,"GTOT")),10)
|
---|
137 | S AMIS(PSULN)=PSULINE S PSULN=PSULN+1
|
---|
138 | ;
|
---|
139 | ;
|
---|
140 | Q
|
---|
141 | ;
|
---|
142 | MAIL ;Send mailman message
|
---|
143 | ;
|
---|
144 | ;Do not send report if option selection includes 1,2,3,4,6
|
---|
145 | I $D(^XTMP("PSU_"_PSUJOB,"CBAMIS")) D Q
|
---|
146 | .M ^XTMP("PSU_"_PSUJOB,"UDCOMBO")=AMIS
|
---|
147 | .S ^XTMP("PSU_"_PSUJOB,"UDCOMBO",1)="INPATIENT:"
|
---|
148 | ;
|
---|
149 | S X=PSUSNDR,DIC=40.8,DIC(0)="X",D="C" D IX^DIC
|
---|
150 | S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
|
---|
151 | ;
|
---|
152 | S XMSUB="V. 4.0 PBMUD "_PSUMON_" "_PSUSNDR_" "_PSUDIVNM
|
---|
153 | S XMTEXT="AMIS("
|
---|
154 | S XMDUZ=DUZ
|
---|
155 | M XMY=PSUXMY
|
---|
156 | S XMCHAN=1
|
---|
157 | I PSUMASF!PSUDUZ!PSUPBMG D ^XMD
|
---|
158 | ;
|
---|
159 | Q
|
---|