1 | PSBVT ;BIRMINGHAM/EFC-BCMA ORDER VARIABLES UTILITY ; 8/4/05 8:05am
|
---|
2 | ;;3.0;BAR CODE MED ADMIN;**6,3,38**;Mar 2004;Build 8
|
---|
3 | ;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ; Reference/IA
|
---|
6 | ; EN^PSJBCMA1/2829
|
---|
7 | ; ^TMP("PSJ",$J/2828
|
---|
8 | ;
|
---|
9 | PSJ(PSBX1) ;
|
---|
10 | S ^TMP("TK PSJ",PSBX1)=""
|
---|
11 | S PSBSCRT="^TMP(""PSB"",$J,""PSBORDA"")"
|
---|
12 | K @PSBSCRT M @PSBSCRT=^TMP("PSJ",$J,PSBX1)
|
---|
13 | S PSBDFN=DFN
|
---|
14 | S PSBSCRT=$G(^TMP("PSB",$J,"PSBORDA",0))
|
---|
15 | S PSBON=+$P(PSBSCRT,U,3) ; ord num w/o type
|
---|
16 | S PSBONX=$P(PSBSCRT,U,3) ; ord num w/ type "U" or "V"
|
---|
17 | S PSBOTYP=$E(PSBONX,$L(PSBONX))
|
---|
18 | S PSBPONX=$P(PSBSCRT,U,4) ; prev ord num
|
---|
19 | S PSBFON=$P(PSBSCRT,U,5) ; foll ord num
|
---|
20 | S PSBIVT=$P(PSBSCRT,U,6) ; IV type
|
---|
21 | S PSBISYR=$P(PSBSCRT,U,7) ; intermit syrg
|
---|
22 | S PSBCHEMT=$P(PSBSCRT,U,8) ; chemo type
|
---|
23 | S PSBCPRS=$P(PSBSCRT,U,9) ; ords file entry (CPRS order #)
|
---|
24 | S PSBFOR=$P(PSBSCRT,U,10) ; reason for foll order
|
---|
25 | Q:PSBSCRT=-1
|
---|
26 | S PSBSCRT=$G(^TMP("PSB",$J,"PSBORDA",1))
|
---|
27 | S PSBMR=$P($G(^TMP("PSB",$J,"PSBORDA",1,0)),U,2) ;med rt
|
---|
28 | S PSBMRAB=$P(PSBSCRT,U,1) ;med rt abbr
|
---|
29 | S PSBNJECT=+$G(^TMP("PSB",$J,"PSBORDA",1,0)) ;Inj site
|
---|
30 | S PSBIVPSH=+$P($G(^TMP("PSB",$J,"PSBORDA",1,0)),U,3) ;IV PUSH
|
---|
31 | S PSBSCHT=$P(PSBSCRT,U,2) ; sched type conversion
|
---|
32 | S PSBSCH=$P(PSBSCRT,U,3) ; sched
|
---|
33 | S PSBOST=$P(PSBSCRT,U,4) ; strt dte FM
|
---|
34 | S PSBOSP=$P(PSBSCRT,U,5) ; stp dte FM
|
---|
35 | S PSBADST=$P(PSBSCRT,U,6) ; admin times strin in NNNN- format
|
---|
36 | S PSBOSTS=$P(PSBSCRT,U,7) ; status
|
---|
37 | S PSBNGF=$P(PSBSCRT,U,8) ; not to be given flag
|
---|
38 | S PSBOSCHT=$P(PSBSCRT,U,9) ; origin sched type
|
---|
39 | S PSBSCRT=$G(^TMP("PSB",$J,"PSBORDA",2))
|
---|
40 | S PSBDOSE=$P(PSBSCRT,U,1) ; dosage ordered
|
---|
41 | S PSBIFR=$P(PSBSCRT,U,2) ; infusn rate
|
---|
42 | S PSBSM=$P(PSBSCRT,U,3) ; self med
|
---|
43 | S PSBHSM=$P(PSBSCRT,U,4) ; hospital supplied self med
|
---|
44 | S PSBSCRT=$G(^TMP("PSB",$J,"PSBORDA",3))
|
---|
45 | S PSBOIT=$P(PSBSCRT,U,1) ; order item IEN - > ^ORD(101.43)
|
---|
46 | S PSBOITX=$P(PSBSCRT,U,2) ; order item (expanded)_" "_dosage form
|
---|
47 | I PSBOITX="" S PSBOITX="ZZZZ NO ORDERABLE ITEM"
|
---|
48 | S PSBDOSEF=$P(PSBSCRT,U,3) ; dosage form
|
---|
49 | S PSBSCRT=$G(^TMP("PSB",$J,"PSBORDA",4))
|
---|
50 | S PSBOTXT=PSBSCRT ; special inst/other print info
|
---|
51 | ; get disp drug
|
---|
52 | I $G(^TMP("PSB",$J,"PSBORDA",700,0)) F PSBX2=1:1:^TMP("PSB",$J,"PSBORDA",700,0) M PSBDDA(PSBX2)=^TMP("PSB",$J,"PSBORDA",700,PSBX2,0) S PSBDDA(PSBX2)="DD^"_PSBDDA(PSBX2) ; # of DDrug
|
---|
53 | ; "DD"^dispensed drug IEN -> ^PSDRUG() DRUG^dispensed drug name^units per dose^inactive date
|
---|
54 | ; build unique id list
|
---|
55 | ; add addits
|
---|
56 | I $D(^TMP("PSB",$J,"PSBORDA",800)) S PSBX2="" F S PSBX2=$O(^TMP("PSB",$J,"PSBORDA",800,PSBX2)) Q:PSBX2=""!(PSBX2="ERROR") D
|
---|
57 | .S PSBUIDA(PSBX2)="ID^"_PSBX2 F J=1:1:^TMP("PSB",$J,"PSBORDA",800,PSBX2,0) S PSBUIDA(PSBX2)=PSBUIDA(PSBX2)_"^"_"ADD;"_$P(^TMP("PSB",$J,"PSBORDA",800,PSBX2,J),U,1)
|
---|
58 | ; add solutions
|
---|
59 | I $D(^TMP("PSB",$J,"PSBORDA",900)) S PSBX2="" F S PSBX2=$O(^TMP("PSB",$J,"PSBORDA",900,PSBX2)) Q:PSBX2=""!(PSBX2="ERROR") D
|
---|
60 | .I '$D(PSBUIDA(PSBX2)) S PSBUIDA(PSBX2)="ID^"_PSBX2
|
---|
61 | .F J=1:1:^TMP("PSB",$J,"PSBORDA",900,PSBX2,0) S PSBUIDA(PSBX2)=PSBUIDA(PSBX2)_"^"_"SOL;"_$P(^TMP("PSB",$J,"PSBORDA",900,PSBX2,J),U,1)
|
---|
62 | ; "ID" ^ (piece 2,3,)... = type;IEN of each add/sol for this ID ex. "SOL;4"
|
---|
63 | ; get addits
|
---|
64 | I $G(^TMP("PSB",$J,"PSBORDA",850,0)) F PSBX2=1:1:^TMP("PSB",$J,"PSBORDA",850,0) D
|
---|
65 | .M PSBADA(PSBX2)=^TMP("PSB",$J,"PSBORDA",850,PSBX2,0) ; number od additives (exists only for IV)
|
---|
66 | .S PSBADA(PSBX2)="ADD^"_PSBADA(PSBX2)
|
---|
67 | .S PSBBAGS=$P(PSBADA(PSBX2),U,5) I PSBBAGS'="" S PSBBAG=" IN BAG "_$P(PSBBAGS,",",1) F I=2:1 S X=$P(PSBBAGS,",",I) Q:X="" S PSBBAG=PSBBAG_" AND "_X
|
---|
68 | .S:PSBBAGS'="" $P(PSBADA(PSBX2),U,5)=PSBBAG,$P(PSBADA(PSBX2),U,6)=PSBBAGS
|
---|
69 | ; "ADD"^additive IEN -> ^PS(52.6) IV ADDITIVES^additive name^strength ^bottle
|
---|
70 | ; get soluts
|
---|
71 | I $G(^TMP("PSB",$J,"PSBORDA",950,0)) F PSBX2=1:1:^TMP("PSB",$J,"PSBORDA",950,0) M PSBSOLA(PSBX2)=^TMP("PSB",$J,"PSBORDA",950,PSBX2,0) S PSBSOLA(PSBX2)="SOL^"_PSBSOLA(PSBX2) ; # of SOL
|
---|
72 | ; "SOL"^solution IEN -> ^PS(52.7) IV SOLUTIONS^solution name^volume
|
---|
73 | K ^TMP("PSB",$J,"PSBORDA"),PSBX1,PSBX2
|
---|
74 | Q
|
---|
75 | ;
|
---|
76 | PSJ1(PSBPAR1,PSBPAR2) ; set the variables for an individual order
|
---|
77 | S ^TMP("TK PSJ1",PSBPAR1,PSBPAR2)=""
|
---|
78 | ; PSBPAR1 = DFN
|
---|
79 | ; PSBPAR2 = ORDNER NUMBER
|
---|
80 | S PSBSCRT="^TMP(""PSB"",$J,""PSBORDA"")"
|
---|
81 | K @PSBSCRT
|
---|
82 | N PSBX
|
---|
83 | K ^TMP("PSJ1",$J) D EN^PSJBCMA1(PSBPAR1,PSBPAR2,1)
|
---|
84 | M @PSBSCRT=^TMP("PSJ1",$J) K ^TMP("PSJ1",$J)
|
---|
85 | S PSBSCRT=$G(^TMP("PSB",$J,"PSBORDA",0))
|
---|
86 | S PSBDFN=PSBPAR1
|
---|
87 | S PSBON=+$P(PSBSCRT,U,3) ; ord num w/o type
|
---|
88 | S PSBONX=$P(PSBSCRT,U,3) ; ord num w/ type "U" or "V"
|
---|
89 | S PSBOTYP=$E(PSBONX,$L(PSBONX))
|
---|
90 | S PSBPONX=$P(PSBSCRT,U,4) ; prev ord num
|
---|
91 | S PSBFON=$P(PSBSCRT,U,5) ; foll ord num
|
---|
92 | S PSBIVT=$P(PSBSCRT,U,6) ; IV type
|
---|
93 | S PSBISYR=$P(PSBSCRT,U,7) ; intermit syrg
|
---|
94 | S PSBCHEMT=$P(PSBSCRT,U,8) ; chemo type
|
---|
95 | S PSBCPRS=$P(PSBSCRT,U,0) ; ord file entry (CPRS order #)
|
---|
96 | Q:PSBSCRT=-1
|
---|
97 | S PSBSCRT=$G(^TMP("PSB",$J,"PSBORDA",1))
|
---|
98 | S PSBMD=$P(PSBSCRT,U,1) ; prov IEN -> ^VA(200)
|
---|
99 | S PSBMDX=$P(PSBSCRT,U,2) ; prov name
|
---|
100 | S PSBMR=$P(PSBSCRT,U,3) ; med rt IEN -> ^PS(51.2)
|
---|
101 | I $G(PSBMR)'="" S PSBMR=$P(PSBSCRT,U,13) ;med rt
|
---|
102 | S PSBMRAB=$P(PSBSCRT,U,4) ;med rt abbr
|
---|
103 | S PSBNJECT=+$G(^TMP("PSB",$J,"PSBORDA",1,0)) ;Inj site
|
---|
104 | S PSBIVPSH=+$P($G(^TMP("PSB",$J,"PSBORDA",1,0)),U,2) ;IV PUSH
|
---|
105 | S PSBSM=$P(PSBSCRT,U,5) ; self med
|
---|
106 | S PSBSMX=$P(PSBSCRT,U,6) ; expnd to YES/NO
|
---|
107 | S PSBHSM=$P(PSBSCRT,U,7) ; hospital supplied self med
|
---|
108 | S PSBHSMX=$P(PSBSCRT,U,8) ; expnd to YES/NO
|
---|
109 | S PSBNGF=$P(PSBSCRT,U,9) ; not to be given flag
|
---|
110 | S PSBOSTS=$P(PSBSCRT,U,10) ; ord status
|
---|
111 | S PSBOSTSX=$P(PSBSCRT,U,11) ; ord status expans
|
---|
112 | S PSBSCRT=$G(^TMP("PSB",$J,"PSBORDA",2))
|
---|
113 | S PSBOIT=$P(PSBSCRT,U,1) ; orderable item IEN -> ^ORD(101.43) ORDERABLE ITEM
|
---|
114 | S PSBOITX=$P(PSBSCRT,U,2) ; orderable item (expaned)_" "_ dosage form
|
---|
115 | I PSBOITX="" S PSBOITX="ZZZZ NO ORDERABLE ITEM"
|
---|
116 | S PSBDOSE=$P(PSBSCRT,U,3) ; dosage ordered
|
---|
117 | S PSBIFR=$P(PSBSCRT,U,4) ; infusion rate
|
---|
118 | S PSBSCH=$P(PSBSCRT,U,5) ; sched
|
---|
119 | S PSBDOSEF=$P(PSBSCRT,U,6) ; dosage form
|
---|
120 | S PSBSCRT=$G(^TMP("PSB",$J,"PSBORDA",3))
|
---|
121 | S PSBOTXT=$P(PSBSCRT,U,1) ; UD special inst or IV other print info
|
---|
122 | S PSBSCRT=$G(^TMP("PSB",$J,"PSBORDA",4))
|
---|
123 | S PSBSCHT=$P(PSBSCRT,U,1) ; sched type conversion
|
---|
124 | S PSBSCHTX=$P(PSBSCRT,U,2) ; sched type expansion
|
---|
125 | S PSBLDT=$P(PSBSCRT,U,3) ; log-in date FM
|
---|
126 | S PSBLDTX=$P(PSBSCRT,U,4) ; exp MM/DD/YYYY HH:MM
|
---|
127 | S PSBOST=$P(PSBSCRT,U,5) ; start date FM
|
---|
128 | S PSBOSTX=$P(PSBSCRT,U,6) ; exp MM/DD/YYYY HH:MM
|
---|
129 | S PSBOSP=$P(PSBSCRT,U,7) ; stop date FM
|
---|
130 | S PSBOSPX=$P(PSBSCRT,U,8) ; exp MM/DD/YYYY HH:MM
|
---|
131 | S PSBADST=$P(PSBSCRT,U,9) ; admin times string in NNNN- format
|
---|
132 | S PSBOSCHT=$P(PSBSCRT,U,10) ; original schedule type
|
---|
133 | S PSBFREQ=$P(PSBSCRT,U,11) ; frequency
|
---|
134 | S PSBSCRT=$G(^TMP("PSB",$J,"PSBORDA",5))
|
---|
135 | S PSBVN=$P(PSBSCRT,U,1) ; verify nurse IEN -> ^VA(200)
|
---|
136 | S PSBVNX=$P(PSBSCRT,U,2) ; nurse name
|
---|
137 | S PSBVNI=$P(PSBSCRT,U,3) ; nurse initials
|
---|
138 | S PSBVPH=$P(PSBSCRT,U,4) ; verify pharm IEN -> ^VA(200)
|
---|
139 | S PSBVPHX=$P(PSBSCRT,U,5) ; pharm name
|
---|
140 | S PSBVPHI=$P(PSBSCRT,U,6) ; pharm initials
|
---|
141 | S PSBSCRT=$G(^TMP("PSB",$J,"PSBORDA",6))
|
---|
142 | S PSBRMRK=$G(PSBSCRT)
|
---|
143 | ;If DayOFWeek set frequen to NULL
|
---|
144 | I $$PSBDCHK1^PSBVT1(PSBSCH) S PSBFREQ=""
|
---|
145 | ; get dispensed drug
|
---|
146 | I $G(^TMP("PSB",$J,"PSBORDA",700,0)) F PSBX=1:1:^TMP("PSB",$J,"PSBORDA",700,0) M PSBDDA(PSBX)=^TMP("PSB",$J,"PSBORDA",700,PSBX,0) S PSBDDA(PSBX)="DD^"_PSBDDA(PSBX) ; # of DDrug
|
---|
147 | ; "DD"^dispensed drug IEN -> ^PSDRUG() DRUG^dispensed drug name^units per dose^inactive date
|
---|
148 | ; build unique id list
|
---|
149 | ; add addits
|
---|
150 | I $D(^TMP("PSB",$J,"PSBORDA",800)) S PSBX2="" F S PSBX2=$O(^TMP("PSB",$J,"PSBORDA",800,PSBX2)) Q:PSBX2=""!(PSBX2="ERROR") D
|
---|
151 | .S PSBUIDA(PSBX2)="ID^"_PSBX2 F J=1:1:^TMP("PSB",$J,"PSBORDA",800,PSBX2,0) S PSBUIDA(PSBX2)=PSBUIDA(PSBX2)_"^"_"ADD;"_$P(^TMP("PSB",$J,"PSBORDA",800,PSBX2,J),U,1)
|
---|
152 | ; add soluts
|
---|
153 | I $D(^TMP("PSB",$J,"PSBORDA",900)) S PSBX2="" F S PSBX2=$O(^TMP("PSB",$J,"PSBORDA",900,PSBX2)) Q:PSBX2=""!(PSBX2="ERROR") D
|
---|
154 | .I '$D(PSBUIDA(PSBX2)) S PSBUIDA(PSBX2)="ID^"_PSBX2
|
---|
155 | .F J=1:1:^TMP("PSB",$J,"PSBORDA",900,PSBX2,0) S PSBUIDA(PSBX2)=PSBUIDA(PSBX2)_"^"_"SOL;"_$P(^TMP("PSB",$J,"PSBORDA",900,PSBX2,J),U,1)
|
---|
156 | ; "ID" ^ (piece 2,3),... = type;IEN of each add/sol for this ID ex. "SOL;4"
|
---|
157 | ; get addits
|
---|
158 | I $G(^TMP("PSB",$J,"PSBORDA",850,0)) F PSBX=1:1:^TMP("PSB",$J,"PSBORDA",850,0) D
|
---|
159 | .M PSBADA(PSBX)=^TMP("PSB",$J,"PSBORDA",850,PSBX,0) ; num of addits
|
---|
160 | .S PSBADA(PSBX)="ADD^"_PSBADA(PSBX)
|
---|
161 | .S PSBBAGS=$P(PSBADA(PSBX),U,5) I PSBBAGS'="" S PSBBAG=" IN BAG "_$P(PSBBAGS,",",1) D
|
---|
162 | ..F I=2:1 S X=$P(PSBBAGS,",",I) Q:X="" S PSBBAG=PSBBAG_" AND "_X
|
---|
163 | .S:PSBBAGS'="" $P(PSBADA(PSBX),U,5)=PSBBAG
|
---|
164 | ; "ADD"^additive IEN -> ^PS(52.6) IV ADDITIVES^additive name^strength^bottle
|
---|
165 | ; get soluts
|
---|
166 | I $G(^TMP("PSB",$J,"PSBORDA",950,0)) F PSBX=1:1:^TMP("PSB",$J,"PSBORDA",950,0) M PSBSOLA(PSBX)=^TMP("PSB",$J,"PSBORDA",950,PSBX,0) S PSBSOLA(PSBX)="SOL^"_PSBSOLA(PSBX) ; # of SOLs
|
---|
167 | ; "SOL" ^ solution IEN -> ^PS(52.7) IV SOLUTIONS^solution name^volume
|
---|
168 | ; get label
|
---|
169 | I $D(^TMP("PSB",$J,"PSBORDA",1000)) M PSBLBLA=^TMP("PSB",$J,"PSBORDA",1000)
|
---|
170 | K ^TMP("PSB",$J,"PSBORDA")
|
---|
171 | Q
|
---|
172 | ;
|
---|
173 | LACTION ; get last action info
|
---|
174 | S (PSBLADT,PSBLAIEN,PSBLASTS)=""
|
---|
175 | I '$D(^PSB(53.79,"AORDX",PSBDFN,PSBONX)) Q
|
---|
176 | S PSBLADT=$O(^PSB(53.79,"AORDX",PSBDFN,PSBONX,""),-1)
|
---|
177 | S PSBLAIEN=$O(^PSB(53.79,"AORDX",PSBDFN,PSBONX,PSBLADT,""))
|
---|
178 | S PSBLASTS=$P(^PSB(53.79,PSBLAIEN,0),U,9)
|
---|
179 | Q
|
---|
180 | ;
|
---|
181 | CLEAN ;
|
---|
182 | K PSBONX,PSBPONX,PSBFON,PSBOTYP,PSBIVT,PSBISYR,PSBCHEMT,PSBMD,PSBMDX,PSBMR,PSBMRAB,PSBSM,PSBSMX,PSBHSM,PSBHSMX
|
---|
183 | K PSBDFN,PSBNGF,PSBOSTS,PSBOSTSX,PSBOIT,PSBOITX,PSBDOSE,PSBIFR,PSBSCH,PSBDOSEF,PSBOTXT,PSBSCHT,PSBSCHTX
|
---|
184 | K PSBLDT,PSBLDTX,PSBOST,PSBOSTX,PSBOSP,PSBOSPX,PSBADST,PSBOSCHT,PSBFREQ,PSBVN,PSBVNX,PSBVNI
|
---|
185 | K PSBVPH,PSBVPHX,PSBVPHI,PSBDDA,PSBADA,PSBSOLA,PSBUIDA,PSBCPRS,PSBON,PSBRMRK,PSBNJECT,PSBIVPSH
|
---|
186 | K PSBLADT,PSBLAIEN,PSBLASTS,PSBBAG,PSBBAGS,PSBLBLA,PSBFOR,PSBSCRT
|
---|
187 | Q
|
---|