1 | PSBOCI ;BIRMINGHAM/TEJ-COVERSHEET IV OVERVIEW REPORT ;Mar 2004
|
---|
2 | ;;3.0;BAR CODE MED ADMIN;**32**;Mar 2004;Build 32
|
---|
3 | ;Per VHA Directive 2004-038 (or future revisions regarding same), this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ; Reference/IA
|
---|
6 | ; File 4/10090
|
---|
7 | EN ;
|
---|
8 | N PSBX1X,RESULTS,RESULT,PSBFUTR
|
---|
9 | S PSBFUTR=$TR(PSBRPT(1),"~","^")
|
---|
10 | S (PSBOCRIT,PSBXFLG,PSBCFLG,PSBBGX)="" ; srch crit - "A"ctive,"D"C ed,"E"xpired"
|
---|
11 | S PSBOCRIT="DEA"
|
---|
12 | S:$P(PSBFUTR,U,11) PSBXFLG=1
|
---|
13 | S:$P(PSBFUTR,U,12) PSBBGX=PSBBGX_"I"
|
---|
14 | S:$P(PSBFUTR,U,13) PSBBGX=PSBBGX_"S"
|
---|
15 | S:$P(PSBFUTR,U,14) PSBBGX=PSBBGX_"A"
|
---|
16 | I $D(PSBRPT(.2)) I $P(PSBRPT(.2),U,8) S PSBCFLG=1
|
---|
17 | K PSBSRTBY,PSBCMT,PSBADM,PSBDATA,PSBOUTP,PSBLGD
|
---|
18 | S PSBSORT=1
|
---|
19 | D NOW^%DTC S (Y,PSBNOWX)=% D DD^%DT S PSBDTTM=Y
|
---|
20 | D GETPAR^PSBPAR("ALL","PSB ADMIN BEFORE")
|
---|
21 | S PSBB4=0 S:RESULTS(0)>0 PSBB4=+RESULTS(0)
|
---|
22 | D GETPAR^PSBPAR("ALL","PSB ADMIN AFTER")
|
---|
23 | S PSBAFT=0 S:RESULTS(0)>0 PSBAFT=+RESULTS(0)
|
---|
24 | K ^XTMP("PSBO",$J,"PSBLIST")
|
---|
25 | S (PSBPGNUM,PSBLNTOT)=""
|
---|
26 | K PSBLIST,PSBLIST2
|
---|
27 | S PSBXDFN=$P(PSBRPT(.1),U,2)
|
---|
28 | S PSBLIST(PSBXDFN)=""
|
---|
29 | S (PSBX1X,PSBTOT)=0
|
---|
30 | F S PSBX1X=$O(PSBLIST(PSBX1X)) Q:+PSBX1X=0 D
|
---|
31 | .D RPC^PSBCSUTL(.PSBAREA,PSBX1X)
|
---|
32 | .M PSBDATA=@PSBAREA
|
---|
33 | .S PSBX2X=1
|
---|
34 | .S (PSBLIST2("All Other"),PSBLIST2("Infusing"),PSBLIST2("Stopped"),PSBLIST2(" * NO * "))=0
|
---|
35 | .K PSBBSO
|
---|
36 | .F S PSBX2X=$O(PSBDATA(PSBX2X)) Q:+PSBX2X=0 D
|
---|
37 | ..S PSBDATA=PSBDATA(PSBX2X)
|
---|
38 | ..I $P(PSBDATA,U)="ORD" K PSBORDN,PSBDRUGN D Q
|
---|
39 | ...S PSBEND=0
|
---|
40 | ...S PSBTB=$P(PSBDATA,U,29) S PSBTB=$S(PSBTB=1:"UD",PSBTB=2:"IVPB",PSBTB=3:"IV",1:" * ERROR * ")
|
---|
41 | ...I (PSBTB'="IV") F PSBX2X=PSBX2X:1 D Q:PSBEND>0
|
---|
42 | ....S PSBEND=0 I $P(PSBDATA(PSBX2X),U)="END" S PSBEND=PSBX2X
|
---|
43 | ...Q:PSBEND>0
|
---|
44 | ...S PSBSTS1=$P(PSBDATA,U,23)
|
---|
45 | ...S PSBSTS=$S((PSBSTS1="A")&(($P(PSBDATA,U,27)>PSBNOWX)):"Active",PSBSTS1="H":"On Hold",PSBSTS1="D":"Discontinued",PSBSTS1="DE":"Discontinued (Edit)",(PSBSTS1="E")!($P(PSBDATA,U,27)'>PSBNOWX):"Expired",1:" * ERROR * ")
|
---|
46 | ...S V=$$FMADD^XLFDT(PSBNOWX,,,PSBB4)
|
---|
47 | ...S PSBSTSX=$S($P(PSBDATA,U,27)'>PSBNOWX:"EXPIRED/DC'd",$P(PSBDATA,U,22)'>V:"ACTIVE",V:"FUTURE",1:" * ERROR * ")
|
---|
48 | ...I PSBSTSX=" * ERROR * " F PSBX2X=PSBX2X:1 D Q:PSBEND>0
|
---|
49 | ....S PSBEND=0 I $P(PSBDATA(PSBX2X),U)="END" S PSBEND=PSBX2X
|
---|
50 | ...Q:PSBEND>0
|
---|
51 | ...S PSBORDN=$P(PSBDATA,U,3)
|
---|
52 | ...S PSBORITX=$P(PSBDATA,U,9)
|
---|
53 | ...S PSBSTS(PSBORDN,PSBSTS)=""
|
---|
54 | ...S PSBOSTDT=$P(PSBDATA,U,22)
|
---|
55 | ...S PSBOSTDT(PSBORDN,PSBOSTDT)=""
|
---|
56 | ...S PSBOSPDT=$P(PSBDATA,U,27)
|
---|
57 | ...S PSBOSPDT(PSBORDN,PSBOSPDT)=""
|
---|
58 | ...S PSBDOSR=$P(PSBDATA,U,10)_", "_$P(PSBDATA,U,11)
|
---|
59 | ...S PSBDOSR=$TR($E(PSBDOSR,1)," ")_$E(PSBDOSR,2,999)
|
---|
60 | ...S PSBDOSR(PSBORDN,PSBDOSR)=""
|
---|
61 | ...S X2="A",PSBLIST2("All Other",PSBORITX,PSBORDN,"*NA*")=" "
|
---|
62 | ...S PSBBSO(PSBORDN)="" S:$G(PSBSTSX)="ACTIVE" PSBBSO(PSBORDN)="AVAILABLE"
|
---|
63 | ..Q:'$D(PSBORDN)
|
---|
64 | ..I $P(PSBDATA,U)="ORC" D Q
|
---|
65 | ...S PSBSI=$P(PSBDATA(PSBX2X),U,2)
|
---|
66 | ...I PSBSI]" " S PSBSI(PSBORDN,PSBSI)=""
|
---|
67 | ..Q:'$D(PSBORDN)
|
---|
68 | ..I "^DD^ADD^SOL"[(U_$P(PSBDATA(PSBX2X),U)) D Q
|
---|
69 | ...F I=PSBX2X:1 S PSBDATA1=PSBDATA(I) D Q:$D(PSBOMDR(PSBORDN))
|
---|
70 | ....I "^DD^ADD^SOL"[(U_$P(PSBDATA1,U)) S PSBX2X=I S PSBDRUGN=$G(PSBDRUGN,"")_$P(PSBDATA1,U,3)_", " Q
|
---|
71 | ....S $E(PSBDRUGN,$L(PSBDRUGN)-1)="" S PSBDRUGN(PSBORDN,$E(PSBDRUGN,1,250))=PSBDRUGN
|
---|
72 | ....S PSBOMDR(PSBORDN,$E((PSBDRUGN_"; "_PSBDOSR),1,250))=PSBDRUGN_"; "_PSBDOSR
|
---|
73 | ..Q:'$D(PSBORDN)
|
---|
74 | ..I $P(PSBDATA,U)="ORF" D Q
|
---|
75 | ...S:$P(PSBDATA,U,2)]"" PSBFLGD(PSBORDN,$P(PSBDATA,U,3)_" - "_$P(PSBDATA,U,4))=""
|
---|
76 | ..Q:'$D(PSBORDN)
|
---|
77 | ..I $P(PSBDATA,U)="ID" D Q
|
---|
78 | ...F PSBX3X=PSBX2X:1 S PSBDATA=PSBDATA(PSBX3X) Q:($P(PSBDATA,U)'="ID") D
|
---|
79 | ....S PSBX2X=PSBX3X
|
---|
80 | ....K X2
|
---|
81 | ....S X2="A",PSBLIST2("All Other",PSBORITX,PSBORDN,$P(PSBDATA,U,2))=PSBBSO(PSBORDN) I $D(PSBLIST2("All Other",PSBORITX,PSBORDN,"*NA*")) K PSBLIST2("All Other",PSBORITX,PSBORDN,"*NA*")
|
---|
82 | ..Q:'$D(PSBORDN)
|
---|
83 | ..I ($P(PSBDATA,U)="ADM")&($P(PSBDATA,U,4)]"") D Q
|
---|
84 | ...I $P(PSBDATA,U,3)]"" D
|
---|
85 | ....K X2
|
---|
86 | ....S PSBBID(PSBORDN,$P(PSBDATA,U,3))=""
|
---|
87 | ....I $P(^PSB(53.79,$P(PSBDATA,U,4),0),U,9)="I" S X2="I",PSBLIST2("Infusing")=PSBLIST2("Infusing")+1,PSBLIST2("Infusing",PSBORITX,PSBORDN,$P(PSBDATA,U,3))="INFUSING"
|
---|
88 | ....I $P(^PSB(53.79,$P(PSBDATA,U,4),0),U,9)="S" S X2="S",PSBLIST2("Stopped")=PSBLIST2("Stopped")+1,PSBLIST2("Stopped",PSBORITX,PSBORDN,$P(PSBDATA,U,3))="STOPPED"
|
---|
89 | ....I PSBBGX[$G(X2,"A") S:PSBXFLG PSBLGD(PSBORDN,"INITIALS",$P(PSBDATA,U,8))=""
|
---|
90 | ....S:'$D(X2) X2="A",PSBLIST2("All Other",PSBORITX,PSBORDN,$P(PSBDATA,U,3))=$$GET1^DIQ(53.79,$P(PSBDATA,U,4)_",","ACTION STATUS")
|
---|
91 | ....I $D(PSBLIST2("All Other",PSBORITX,PSBORDN,"*NA*")) K PSBLIST2("All Other",PSBORITX,PSBORDN,"*NA*")
|
---|
92 | ..Q:'$D(PSBORDN)
|
---|
93 | ..I $P(PSBDATA,U,1)="END" Q
|
---|
94 | F I="All Other","Infusing","Stopped" S X="",PSBLIST2(I)=0 F S X=$O(PSBLIST2(I,X)) Q:X="" S XI="" F S XI=$O(PSBLIST2(I,X,XI),-1) Q:XI="" D
|
---|
95 | .S PSBX2X="" F S PSBX2X=$O(PSBLIST2(I,X,XI,PSBX2X),-1) Q:PSBX2X="" S PSBLIST2(I)=PSBLIST2(I)+1 I (PSBBGX[$E(I,1)) S PSBTOT=PSBTOT+1
|
---|
96 | D CREATHDR
|
---|
97 | D SUBHDR
|
---|
98 | D BLDRPT
|
---|
99 | D WRTRPT
|
---|
100 | Q
|
---|
101 | BLDRPT ; Bld RPT
|
---|
102 | K PSBL2ULN
|
---|
103 | S PSBTOPHD=PSBLNTOT-2
|
---|
104 | I '$D(PSBLIST2) D Q
|
---|
105 | .S PSBOUTP(0,PSBLNTOT)="W !!,""<<<< NO ORDERS TO DISPLAY >>>>"",!!"
|
---|
106 | S PSBMORE=5 F PSBX1X="Infusing","Stopped","All Other" D
|
---|
107 | .I PSBX1X'=" * ERROR * " S PSBSUM=PSBX1X_" ["_PSBLIST2(PSBX1X)_"]" S PSBOUTP($$PGTOT,PSBLNTOT)="W !!,"""_PSBSUM_""""
|
---|
108 | .Q:PSBLIST2(PSBX1X)=0
|
---|
109 | .Q:PSBBGX'[$E(PSBX1X,1)
|
---|
110 | .S:$L(PSBSUM)>$G(PSBL2ULN,0) PSBL2ULN=$L(PSBSUM)
|
---|
111 | .S PSBOUTP($$PGTOT(2),PSBLNTOT)="W !,$TR($J("""",PSBL2ULN),"" "",""=""),!"
|
---|
112 | .S PSBOUTP($$PGTOT,PSBLNTOT)="W !"
|
---|
113 | .K PSBDATA
|
---|
114 | .S X0="",PSBTOT1=0
|
---|
115 | .F S X0=$O(PSBLIST2(PSBX1X,X0)) Q:X0="" S PSBX2X="" F S PSBX2X=$O(PSBLIST2(PSBX1X,X0,PSBX2X)) Q:PSBX2X="" S XI="" F S XI=$O(PSBLIST2(PSBX1X,X0,PSBX2X,XI)) Q:XI="" D
|
---|
116 | ..K PSBDATA(1)
|
---|
117 | ..S PSBDATA(1,1)=XI
|
---|
118 | ..S PSBDATA(1,2)=$O(PSBSTS(PSBX2X,""))
|
---|
119 | ..S PSBDATA(1,3)=PSBLIST2(PSBX1X,X0,PSBX2X,XI)
|
---|
120 | ..S Y0=$O(PSBOMDR(PSBX2X,"")) I Y0]"" S PSBDATA(1,4)="("_X0_")",PSBDATA(1,4,0)=PSBOMDR(PSBX2X,Y0)
|
---|
121 | ..I "IS"[$E(PSBDATA(1,3),1) S (PSBCHG,PSBDATA(1,5))="",PSBORLST(0)=PSBX2X D RPC^PSBCHKIV(.PSBCHG,PSBXDFN,.PSBORLST)
|
---|
122 | ..I $D(PSBCHG(0)) I PSBCHG(0)>0 I ($P(PSBCHG(1),U)=PSBX2X)!($P(PSBCHG(1),U,5)=PSBX2X) F X2=0:1 Q:PSBCHG(X2)="END" I $P(PSBCHG(X2),U)="CD" S PSBDATA(1,5)="Changed Order" Q
|
---|
123 | ..S PSBDATA(1,6)=$$FMTDT^PSBOCE1($O(PSBOSTDT(PSBX2X,"")))
|
---|
124 | ..S PSBDATA(1,7)=$$FMTDT^PSBOCE1($E($O(PSBOSPDT(PSBX2X,"")),1,12))
|
---|
125 | ..S PSBSIDAT(1)=$O(PSBSI(PSBX2X,""))
|
---|
126 | ..S PSBTOT1=PSBTOT1+1
|
---|
127 | ..K PSBDATA(2),PSBSILN
|
---|
128 | ..D BUILDLN^PSBOCI1,SIOPI^PSBOCM(.PSBSIDAT,PSBTAB7,"Other Print Info:")
|
---|
129 | ..I $D(PSBRPLN) S PSBMORE=$O(PSBRPLN(""),-1)+6 I $D(PSBSILN) S PSBMORE=PSBMORE+$O(PSBSILN(""),-1)
|
---|
130 | ..K PSB1 I $D(PSBFLGD(PSBX2X)) S PSB="" F S PSB=$O(PSBFLGD(PSBX2X,PSB)) Q:PSB="" I ($P(PSB,":")'="NOX")&($P(PSB,":")'="STAT") S PSB1=$G(PSB1,"")_PSB
|
---|
131 | ..S PSBCNT=PSBTOT1_" "_$G(PSB1,"")
|
---|
132 | ..S PSBOUTP($$PGTOT,PSBLNTOT)="W """_PSBCNT_""""
|
---|
133 | ..S I="" F S I=$O(PSBRPLN(I)) Q:+I=0 D
|
---|
134 | ...S PSBOUTP($$PGTOT,PSBLNTOT)="W !,"""_PSBRPLN(I)_""""
|
---|
135 | ..S I="" F S I=$O(PSBSILN(I)) Q:+I=0 D
|
---|
136 | ...S PSBOUTP($$PGTOT,PSBLNTOT)="W !,"""_PSBSILN(I)_""""
|
---|
137 | ..S PSBOUTP($$PGTOT(2),PSBLNTOT)="W !,$TR($J("""",PSBTAB7),"" "",""-""),!"
|
---|
138 | ..K PSBRPLN,PSBDATA,PSBSILN
|
---|
139 | K PSBNO S PSBNO=1 D:+PSBTOT>0 LGD^PSBOCM K PSBNO
|
---|
140 | Q
|
---|
141 | WRTRPT ; writ
|
---|
142 | I $O(PSBOUTP(""),-1)<1 D Q
|
---|
143 | .X PSBOUTP($O(PSBOUTP(""),-1),14)
|
---|
144 | .D PTFTR^PSBOCI1
|
---|
145 | S PSBPGNUM=1
|
---|
146 | S PSBZ="" F S PSBZ=$O(PSBOUTP(PSBZ)) Q:PSBZ="" D
|
---|
147 | .I PSBPGNUM'=PSBZ D PTFTR^PSBOCI1 S PSBPGNUM=PSBZ D HDR,SUBHDR
|
---|
148 | .S PSBX2X="" F S PSBX2X=$O(PSBOUTP(PSBZ,PSBX2X)) Q:PSBX2X="" D
|
---|
149 | ..X PSBOUTP(PSBZ,PSBX2X)
|
---|
150 | D PTFTR^PSBOCI1
|
---|
151 | K ^XTMP("PSBO",$J,"PSBLIST"),PSBOUTP
|
---|
152 | Q
|
---|
153 | HDR ; Hder
|
---|
154 | W:$Y>1 @IOF
|
---|
155 | W:$X>1 !
|
---|
156 | S PSBRPNM="BCMA COVERSHEET IV OVERVIEW REPORT"
|
---|
157 | D:$P(PSBRPT(.1),U,1)="P"
|
---|
158 | .S PSBHDR(0)=PSBRPNM
|
---|
159 | .S PSBHDR(1)="Order Type(s): --"
|
---|
160 | .F Y=12,13,18 I $P(PSBFUTR,U,Y) S $P(PSBHDR(1),": ",2)=$P(PSBHDR(1),": ",2)_$S(PSBHDR(1)["--":"",1:"/ ")_$P("^^^^^^^^^^^Infusing Bags^Stopped Bags^^^^^All Others",U,Y)_" " S PSBHDR(1)=$TR(PSBHDR(1),"-","")
|
---|
161 | .I $P(PSBFUTR,U,11) S PSBHDR(2)="Include Action(s)"_$S(PSBCFLG:" & Comments/Reasons",1:"")
|
---|
162 | .D PT^PSBOHDR(PSBXDFN,.PSBHDR)
|
---|
163 | Q
|
---|
164 | SUBHDR ;
|
---|
165 | N PSBAL S PSBAL=$O(PSBHDR("ALERGY",""),-1) S PSBAL=$S((PSBAL/12)>(PSBAL\12):(PSBAL\12)+1,1:(PSBAL\12))
|
---|
166 | N PSBRE S PSBRE=$O(PSBHDR("REAC",""),-1) S PSBRE=$S((PSBRE/12)>(PSBRE\12):(PSBRE\12)+1,1:(PSBRE\12))
|
---|
167 | S PSBLNTOT=$O(PSBHDR(""),-1)+9+PSBAL+PSBRE+1
|
---|
168 | I $G(PSBPGNUM,0)=1 W !,?(PSBTAB7-($L("Total Items reported: "_+PSBTOT))),"Total Items reported: "_+PSBTOT,! S PSBLNTOT=PSBLNTOT+2
|
---|
169 | W !,$TR($J("",PSBTAB7)," ","_") S PSBLNTOT=PSBLNTOT+1
|
---|
170 | W !,$G(PSBHD1,"") S PSBLNTOT=PSBLNTOT+1
|
---|
171 | W !,$G(PSBHD2,"") S PSBLNTOT=PSBLNTOT+1
|
---|
172 | W !,$TR($J("",PSBTAB7)," ","="),! S PSBLNTOT=PSBLNTOT+2
|
---|
173 | I $D(NOTE(PSBPGNUM)) W NOTE(PSBPGNUM),!! S PSBLNTOT=PSBLNTOT+2
|
---|
174 | Q
|
---|
175 | PGTOT(X) ;PG Nmbr
|
---|
176 | I (PSBLNTOT+PSBMORE)>(IOSL) D PGC^PSBOCE1
|
---|
177 | I $G(X,1) S PSBLNTOT=PSBLNTOT+$G(X,1),PSBMORE=PSBMORE-$G(X,1)
|
---|
178 | Q PSBPGNUM
|
---|
179 | CREATHDR ;
|
---|
180 | K PSBHD1,PSBHD2
|
---|
181 | I IOM'<132 S PSBHD1=$P($T(HD132A),"~",2),PSBHD2=$P($T(HD132B),";",2),PSBBLANK=$P($T(C132BLK),";",2)
|
---|
182 | E S PSBHD1="THIS REPORT SUPPORTS >131 CHAR./LINE PRINT FORMATS ONLY" K PSBLIST2 Q
|
---|
183 | ; tabs
|
---|
184 | S PSBTAB0=1 F PSBI=0:1:($L(PSBHD1,"|")-1) S:PSBI>0 @("PSBTAB"_PSBI)=($F(PSBHD1,"|",@("PSBTAB"_(PSBI-1))+1))-1
|
---|
185 | S PSBPGNUM=1
|
---|
186 | D HDR
|
---|
187 | Q
|
---|
188 | HD132A ;~ Bag ID | Order | Bag | Medication; Infusion Rate, Route | Bag Info | Order Start | Order Stop |
|
---|
189 | Q
|
---|
190 | HD132B ; | Status | Status | | | Date | Date |
|
---|
191 | Q
|
---|
192 | C132BLK ;; | | | | | | |
|
---|
193 | Q
|
---|