source: fmts/trunk/p/C0XPT3.m@ 1616

Last change on this file since 1616 was 1616, checked in by Sam Habiel, 11 years ago

Now code add drugs to drug file. Still needs lot more work.

File size: 13.5 KB
Line 
1C0XPT3 ;ISI/MLS,VEN/SMH -- MEDS IMPORT ;2013-04-10 6:54 PM
2 ;;1.0;FILEMAN TRIPLE STORE;;Jun 26,2012;Build 29
3 ;
4MEDS(G,DFN) ; Private Proc; Extract Medication Data from a Patient's Graph
5 ; G - Patient Graph, DFN - you should know this
6 K ^TMP($J,"MEDS")
7 D ONETYPE^C0XGET3($NA(^TMP($J,"MEDS")),G,"sp:Medication")
8 ;
9 ; PRIVATE TO SAM -- PRIVATE TO SAM -- PRIVATE TO SAM
10 ; Delete the old drugs for this patient
11 N DIK,DA
12 S DIK="^PS(55,",DA=DFN D ^DIK ; bye bye
13 S DIK="^PSRX(" F DA=0:0 S DA=$O(^PSRX(DA)) Q:'DA D:$P(^(DA,0),U,2)=DFN ^DIK
14 S DIK="^OR(100," F DA=0:0 S DA=$O(^OR(100,DA)) Q:'DA D:+$P(^(DA,0),U,2)=DFN ^DIK
15 ; PRIVATE TO SAM -- PRIVATE TO SAM -- PRIVATE TO SAM
16 ;
17 ; For each medication (C0XI = COUNTER; S = Medication Node as Subject)
18 N C0XI,S F C0XI=0:0 S C0XI=$O(^TMP($J,"MEDS",C0XI)) Q:'C0XI S S=^(C0XI) DO MED1(G,S,DFN)
19 K ^TMP($J,"MEDS")
20 QUIT
21 ;
22MED1(G,S,DFN) ; Private Procedure; Process each medication in Graph.
23 ; G = Graph; S = Medication Description ID as subject.
24 ;
25 ; 1. Start Date; obtain and then conv to fileman format
26 N STARTDT S STARTDT=$$GSPO1^C0XGET3(G,S,"sp:startDate") ; Duh! Start Date.
27 D
28 . N %DT,X,Y S X=STARTDT D ^%DT S STARTDT=Y ; New stack level for variables.
29 ;
30 ;DEBUG.ASSERT that STARTDT is greater than 1900
31 I STARTDT'>2000000 S $EC=",U1,"
32 ;
33 ; 2. Frequency
34 N FVALUE S FVALUE=$$GSPO1^C0XGET3(G,S,"sp:frequency.sp:value")
35 N FUNIT S FUNIT=$$GSPO1^C0XGET3(G,S,"sp:frequency.sp:unit")
36 ;
37 ; 3. Dose Quantity
38 ; Get value, get unit and strip the braces out.
39 N DOSE S DOSE=$$GSPO1^C0XGET3(G,S,"sp:quantity.sp:value")
40 N DUNIT S DUNIT=$$GSPO1^C0XGET3(G,S,"sp:quantity.sp:unit"),DUNIT=$TR(DUNIT,"{}")
41 ;
42 ; 4. Instructions
43 N INST S INST=$$GSPO1^C0XGET3(G,S,"sp:instructions")
44 ;
45 ; 5. Drug Name and Code
46 N RXN S RXN=$$GSPO1^C0XGET3(G,S,"sp:drugName.sp:code"),RXN=$P(RXN,"/",$L(RXN,"/")) ; RxNorm Code
47 N DN S DN=$$GSPO1^C0XGET3(G,S,"sp:drugName.dcterms:title") ; Drug Name
48 ;
49 W S," ",FVALUE_FUNIT," ",DOSE," ",DUNIT," ",INST," ",DN," ",RXN,!
50 ;
51 ; 6. Get Fill Dates
52 N FULF ; Fulfillments
53 D GSPO^C0XGET3($NA(FULF),G,S,"sp:fulfillment")
54 ;
55 N FILLS ; Fills array. Contains every time a drug was dispensed.
56 N FILL S FILL="" F S FILL=$O(FULF(FILL)) Q:FILL="" D
57 . N S S S=FULF(FILL) ; New subject; subsumes above one in this loop
58 . ;
59 . ; Dispense Date
60 . N FILLDATE S FILLDATE=$$GSPO1^C0XGET3(G,S,"dcterms:date")
61 . D
62 . . N %DT,X,Y S X=FILLDATE D ^%DT S FILLDATE=Y
63 . I FILLDATE<2000000 W $EC=",U1," ; Converstion error
64 . ;
65 . S FILLS(RXN,FILLDATE,"sp:dispenseDaysSupply")=$$GSPO1^C0XGET3(G,S,"sp:dispenseDaysSupply") ; Self Explanatory?
66 . ;
67 . ; Get quantity value and unit
68 . S FILLS(RXN,FILLDATE,"sp:quantityDispensed.sp:value")=$$GSPO1^C0XGET3(G,S,"sp:quantityDispensed.sp:value")
69 . S FILLS(RXN,FILLDATE,"sp:quantityDispensed.sp:unit")=$TR($$GSPO1^C0XGET3(G,S,"sp:quantityDispensed.sp:unit"),"{}")
70 ;
71 ZWRITE:$D(FILLS) FILLS
72 ;
73 D
74 . N FILDT,FILQTY,FILDAYS
75 . S FILDT=$O(FILLS(RXN,""))
76 . I FILDT S FILQTY=FILLS(RXN,FILDT,"sp:quantityDispensed.sp:value"),FILDAYS=FILLS(RXN,FILDT,"sp:dispenseDaysSupply")
77 . E S (FILQTY,FILDAYS)=""
78 . D PREP(DFN,RXN,INST,FILDT,FILQTY,FILDAYS,.FILLS)
79 ;
80 QUIT
81 ;
82PREP(DFN,RXN,INST,FILDT,FILQTY,FILDAYS,FILLS) ;
83 ; TODO:
84 ; 1. Resolve medication
85 ; 2. Figure out what to do with meds that have no fill history (omit?)
86 ; 3. Don't file a med twice! Check ^PXRMINDX to make sure it aint there first
87 ; 4. Compute the number of refills for original number so that remaining refills aren't displayed as negative
88 ; 5. Original fill doesn't have a dispense comment
89 ; 6. Coded sig (FVALUE, FUNIT, DOSE, DUNIT)
90 ; 7. Fill label log section of Rx? Maybe not.
91 ;
92 I '$$EXIST^C0CRXNLK(RXN) S $EC=",U1," ; Invalid RxNorm code passed.
93 ;
94 N ORZPT,PSODFN S (ORZPT,PSODFN)=DFN ;"" ;POINTER TO PATIENT FILE (#2)
95 N PNTSTAT S PNTSTAT=20 ; NON-VA ;RX PATIENT STATUS FILE (#53)
96 N PROV S PROV=$$NP^C0XPT0() ;NEW PERSON FILE (#200)
97 I $$ISBRAND^C0CRXNLK(RXN) S RXN=$$BR2GEN^C0CRXNLK(RXN) ; Get Generic Drug for Brand
98 N LOCALDRUG S LOCALDRUG=+$$RXN2MEDS^C0CRXNLK(RXN)
99 I 'LOCALDRUG S LOCALDRUG=$$ADDDRUG(RXN)
100 W "(debug) Local Drug IEN: "_LOCALDRUG,!
101 N PSODRUG S PSODRUG=LOCALDRUG ;POINTER TO DRUG FILE (#50) ; TODO: HARDCODED; RXN
102 S PSODRUG("DEA")=$P($G(^PSDRUG(PSODRUG,0)),U,3)
103 N QTY S QTY=FILQTY ; NUMBER ;0;7 NUMBER (Required)
104 N DAYSUPLY S DAYSUPLY=FILDAYS ;NUMBER ; 0;8 NUMBER (Required);
105 N REFIL S REFIL=0 ;NUMBER ; 0;9 NUMBER (Required)
106 N ORDCONV S ORDCONV=1 ;'1' FOR ORDER CONVERTED;'2' FOR EXPIRATION TO CPRS;
107 N COPIES S COPIES=1 ;NUMBER
108 N MLWIND S MLWIND="W" ; Mail/Window: 'M' or 'W'
109 N ENTERBY S ENTERBY=.5 ;NEW PERSON FILE (#200) - POSTMASTER
110 N UNITPRICE S UNITPRICE=$P(^PSDRUG(PSODRUG,660),U,6) ;0.009 ;"" ;NUMBER
111 N PSOSITE S PSOSITE=$O(^PS(59,0)) ; OUTPATIENT SITE FILE (#59); get first one
112 N %,LOGDT D NOW^%DTC S LOGDT=% ;LOGIN DATE ; 2;1 DATE (Required)
113 N FILLDT S FILLDT=FILDT ;DATE; First fill date from our data.
114 N ISSDT S ISSDT=FILLDT ;DATE
115 N DISPDT S DISPDT=ISSDT ;DATE
116 N X D
117 . N X1,X2
118 . S X1=DISPDT,X2=180 D C^%DTC ;Default expiration of T+180
119 N EXPIRDT S EXPIRDT=X ;
120 N PORDITM S PORDITM=$P($G(^PSDRUG(PSODRUG,2)),U,1) ;PHARMACY ORDERABLE ITEM FILE (#50.7)
121 N STATUS S STATUS=0 ;STA;1 SET (Required) ; '0' FOR ACTIVE;
122 N TRNSTYP S TRNSTYP=1 ; IB ACTION TYPE FILE (#350.1)
123 N LDISPDT S LDISPDT=FILLDT ; 3;1 DATE
124 N REASON S REASON="E" ;Activity log ; SET ([E]dit)
125 N INIT S INIT=.5 ;NEW PERSON FILE (#200)
126 N SIG S SIG=INST ;#51,.01
127 ;
128CREATE ; fall through
129 ;
130 N PSONEW
131 D AUTO^PSONRXN ;RX auto number
132 I $G(PSONEW("RX #"))="" S $EC=",U1," ; Auto-numbering not turned on!
133 N RXNUM S RXNUM=PSONEW("RX #") ; Rx Number, again...
134 ;
135 L +^PSRX(0):0 ; Lock zero node while we get the record.
136 N PSOIEN S PSOIEN=$O(^PSRX(" "),-1)+1 ; Next available IEN
137 I $D(^PSRX(PSOIEN)) S $EC=",U1," ; Next number not available. File issue.
138 S $P(^PSRX(0),U,3)=PSOIEN ; Reset next available number.
139 S $P(^PSRX(PSOIEN,0),"^",1)=RXNUM ; 0;1 FREE TEXT (Required)
140 L +^PSRX(PSOIEN):0 ; Lock record node
141 L -^PSRX(0) ; Unlock zero node, we now got it
142 ;
143 S $P(^PSRX(PSOIEN,0),"^",13)=ISSDT ; 0;13 DATE (Required)
144 S $P(^PSRX(PSOIEN,0),"^",2)=ORZPT ;POINTER TO PATIENT FILE (#2)
145 S $P(^PSRX(PSOIEN,0),"^",3)=PNTSTAT ;RX PATIENT STATUS FILE (#53)
146 S $P(^PSRX(PSOIEN,0),"^",4)=PROV ;NEW PERSON FILE (#200)
147 S $P(^PSRX(PSOIEN,0),"^",5)="" ; Outpatient ; LOC ;HOSPITAL LOCATION FILE (#44)
148 S $P(^PSRX(PSOIEN,0),"^",6)=PSODRUG ;POINTER TO DRUG FILE (#50)
149 S $P(^PSRX(PSOIEN,0),"^",7)=QTY ;NUMBER ;0;7 NUMBER (Required)
150 S $P(^PSRX(PSOIEN,0),"^",8)=DAYSUPLY ;NUMBER ; 0;8 NUMBER (Required)
151 S $P(^PSRX(PSOIEN,0),"^",9)=REFIL ;NUMBER ; 0;9 NUMBER (Required)
152 S $P(^PSRX(PSOIEN,0),"^",11)=MLWIND ;'M' or 'W'
153 S $P(^PSRX(PSOIEN,0),"^",16)=ENTERBY ;NEW PERSON FILE (#200)
154 S $P(^PSRX(PSOIEN,0),"^",17)=UNITPRICE ;NUMBER
155 S $P(^PSRX(PSOIEN,0),"^",18)=COPIES ;COPIES
156 S $P(^PSRX(PSOIEN,0),"^",19)=ORDCONV ;ORDER CONVERTED 0;19 SET ['1' FOR ORDER CONVERTED;'2' FOR EXPIRATION TO CPRS;]
157 ;
158 S $P(^PSRX(PSOIEN,2),"^",1)=LOGDT ;LOGIN DATE ; 2;1 DATE (Required)
159 S $P(^PSRX(PSOIEN,2),"^",2)=FILLDT ;FILL DATE
160 ;S $P(^PSRX(PSOIEN,2),"^",3)=PHARMACIST ; "" ; PHARMACIST ;2;3 POINTER TO NEW PERSON FILE (#200)
161 ;S $P(^PSRX(PSOIEN,2),"^",4)="" ; LOT # 2;4 FREE TEXT
162 S $P(^PSRX(PSOIEN,2),"^",5)=DISPDT ; DISPENSED DATE 2;5 DATE (Required)
163 S $P(^PSRX(PSOIEN,2),"^",6)=EXPIRDT ;"" ; EXPIRATION DATE
164 S $P(^PSRX(PSOIEN,2),"^",9)=PSOSITE ;2;9 POINTER TO OUTPATIENT SITE FILE (#59)
165 ;
166 S $P(^PSRX(PSOIEN,3),U,1)=DISPDT ;LAST DISPENSED DATE 3;1 DATE
167 ;
168 N C0XFILL S C0XFILL=""
169 N C0XREFCT S C0XREFCT=0
170 F S C0XFILL=$O(FILLS(RXN,C0XFILL)) Q:C0XFILL="" D
171 . S ^PSRX(PSOIEN,"A",0)="^52.3DA"_U_(C0XREFCT+1)_U_(C0XREFCT+1)
172 . S $P(^PSRX(PSOIEN,"A",C0XREFCT+1,0),"^",1)=LOGDT ;DATE
173 . S $P(^PSRX(PSOIEN,"A",C0XREFCT+1,0),"^",2)="N" ;SET ; Dispensed using external interface
174 . S $P(^PSRX(PSOIEN,"A",C0XREFCT+1,0),"^",3)=INIT ;NEW PERSON FILE (#200)
175 . S $P(^PSRX(PSOIEN,"A",C0XREFCT+1,0),"^",4)=0 ;NUMBER - RX REFERENCE
176 . S $P(^PSRX(PSOIEN,"A",C0XREFCT+1,0),"^",5)="Imported from Smart"
177 . ;
178 . Q:C0XFILL=FILDT ; Don't add refill data for first fill!
179 . ;
180 . ; Increment counter
181 . S C0XREFCT=C0XREFCT+1
182 . ;
183 . S ^PSRX(PSOIEN,1,0)="^52.1DA"_U_(C0XREFCT)_U_(C0XREFCT)
184 . S $P(^PSRX(PSOIEN,1,C0XREFCT,0),"^",1)=C0XFILL ; REFILL DATE [D]
185 . S $P(^PSRX(PSOIEN,1,C0XREFCT,0),"^",2)=MLWIND ; MAIL/WINDOW [RS]
186 . S $P(^PSRX(PSOIEN,1,C0XREFCT,0),"^",3)="Imported from Smart" ; REMARKS [F]
187 . S $P(^PSRX(PSOIEN,1,C0XREFCT,0),"^",4)=FILLS(RXN,C0XFILL,"sp:quantityDispensed.sp:value") ; QTY [RNJ12,2X]
188 . S $P(^PSRX(PSOIEN,1,C0XREFCT,0),"^",5)=.5 ; PHARMACIST NAME [*P200']
189 . S $P(^PSRX(PSOIEN,1,C0XREFCT,0),"^",6)="" ; LOT [F]
190 . S $P(^PSRX(PSOIEN,1,C0XREFCT,0),"^",7)=.5 ; CLERK CODE [RP200']
191 . S $P(^PSRX(PSOIEN,1,C0XREFCT,0),"^",8)="" ; LOGIN DATE [D]
192 . S $P(^PSRX(PSOIEN,1,C0XREFCT,0),"^",9)="" ; DIVISION [RP59']
193 . S $P(^PSRX(PSOIEN,1,C0XREFCT,0),"^",17)=PROV ; PROVIDER [R*P200X'I]
194 . S $P(^PSRX(PSOIEN,1,C0XREFCT,0),"^",19)=C0XFILL ; DISPENSED DATE [RD]
195 ;
196 S ^PSRX(PSOIEN,"OR1")=PORDITM ;PHARMACY ORDERABLE ITEM FILE (#50.7)
197 ;
198 S $P(^PSRX(PSOIEN,"POE"),"^",1)=1 ; POE RX POE;1 SET ['1' FOR YES;]
199 ;
200 S $P(^PSRX(PSOIEN,"SIG"),"^",1)=SIG ;SIG;1 FREE TEXT (Required) medication instruction DIC(51)
201 S $P(^PSRX(PSOIEN,"SIG"),"^",2)=0 ;OERR SIG (SET: 0 for NO; 1 for YES)
202 ;
203 S $P(^PSRX(PSOIEN,"STA"),"^",1)=STATUS ;STA;1 SET (Required) ; '0' FOR ACTIVE;
204 ;
205 ;S ^PSRX(PSOIEN,"IB")=TRNSTYP ;COPAY TRANSACTION TYPE IB ACTION TYPE FILE (#350.1)
206 S ^PSRX(PSOIEN,"TYPE")=0 ;TYPE OF RX TYPE;1 NUMBER
207 D OERR(PSOIEN),F55,F52(PSOIEN),F525
208 L -PSRX(PSOIEN) ; Unlock record
209 Q
210 ;
211OERR(PSOIEN) ;UPDATES OR1 NODE
212 ;THE SECOND PIECE IS KILLED BEFORE MAKING THE CALL
213 S $P(^PSRX(PSOIEN,"OR1"),"^",2)=""
214 N PSXRXIEN,STAT,PSSTAT,COMM,PSNOO
215 S PSXRXIEN=PSOIEN,STAT="SN",PSSTAT="CM",COMM="",PSNOO="W"
216 D EN^PSOHLSN1(PSXRXIEN,STAT,PSSTAT,COMM,PSNOO)
217 QUIT
218F55 ; - File data into ^PS(55)
219 ;S PSODFN=DFN
220 S:'$D(^PS(55,PSODFN,"P",0)) ^(0)="^55.03PA^^"
221 F PSOX1=$P(^PS(55,PSODFN,"P",0),"^",3):1 Q:'$D(^PS(55,PSODFN,"P",PSOX1))
222 S ^PS(55,PSODFN,"P",PSOX1,0)=PSOIEN,$P(^PS(55,PSODFN,"P",0),"^",3,4)=PSOX1_"^"_($P(^PS(55,PSODFN,"P",0),"^",4)+1)
223 S:$P($G(^PSRX(PSOIEN,2)),"^",6) ^PS(55,PSODFN,"P","A",$P($G(^PSRX(PSOIEN,2)),"^",6),PSOIEN)=""
224 K PSOX1
225 Q
226F52(PSOIEN) ;; - Re-indexing file 52 entry
227 N DIK,DA S DIK="^PSRX(",DA=PSOIEN D IX1^DIK K DIK
228 Q
229 ;
230F525 ;UPDATE SUSPENSE FILE
231 Q:$G(^PSRX(PSOIEN,"STA"))'=5
232 S DA=PSOIEN,X=PSOIEN,FDT=$P($G(^PSRX(PSOIEN,2)),"^",2),TYPE=$P($G(^PSRX(PSOIEN,0)),"^",11)
233 S DIC="^PS(52.5,",DIC(0)="L",DLAYGO=52.5,DIC("DR")=".02///"_FDT_";.03////"_$P(^PSRX(PSOIEN,0),"^",2)_";.04////"_TYPE_";.05///0;.06////"_DIV_";2///0" K DD,D0 D FILE^DICN K DD,D0
234 Q
235 ;
236ADDDRUG(RXN,NDC,BARCODE) ; Public Proc; Add Drug to Drug File
237 ; Input: RXN - RxNorm Semantic Clinical Drug CUI by Value. Required.
238 ; Input: NDC - Drug NDC by Value. Optional. Pass in 11 digit format without dashes.
239 ; Input: BARCODE - Wand Barcode. Optional. Pass exactly as wand reads minus control characters.
240 ; Output: None.
241 ;
242 ; Prelim Checks
243 I '$G(RXN) S $EC=",U1," ; Required
244 I $L($G(NDC)),$L(NDC)'=11 S $EC=",U1,"
245 ;
246 N PSSZ S PSSZ=1 ; Needed for the drug file to let me in!
247 ;
248 ; If RXN refers to a brand drug, get the generic instead.
249 I $$ISBRAND^C0CRXNLK(RXN) S RXN=$$BR2GEN^C0CRXNLK(RXN)
250 W !,"(debug) RxNorm is "_RXN,!
251 ;
252 ; Get first VUID for this RxNorm drug
253 N VUID S VUID=+$$RXN2VUI^C0CRXNLK(RXN)
254 Q:'VUID
255 W "(debug) VUID for RxNorm CUI "_RXN_" is "_VUID,!
256 ;
257 ; IEN in 50.68
258 N C0XVUID ; For Searching Compound Index
259 S C0XVUID(1)=VUID
260 S C0XVUID(2)=1
261 N F5068IEN S F5068IEN=$$FIND1^DIC(50.68,"","XQ",.C0XVUID,"AMASTERVUID")
262 Q:'F5068IEN
263 W "F 50.68 IEN (debug): "_F5068IEN,!
264 ;
265 ; FDA Array
266 N C0XFDA
267 ;
268 ; Name, shortened
269 S C0XFDA(50,"+1,",.01)=$E($$GET1^DIQ(50.68,F5068IEN,.01),1,40)
270 ;
271 ; File BarCode as a Synonym for BCMA
272 I $L($G(BARCODE)) D
273 . S C0XFDA(50.1,"+2,+1,",.01)=BARCODE
274 . S C0XFDA(50.1,"+2,+1,",1)="Q"
275 ;
276 ; Brand Names
277 N BNS S BNS=$$RXN2BNS^C0CRXNLK(RXN) ; Brands
278 I $L(BNS) N I F I=1:1:$L(BNS,U) D
279 . N IENS S IENS=I+2
280 . S C0XFDA(50.1,"+"_IENS_",+1,",.01)=$$UP^XLFSTR($E($P(BNS,U,I),1,40))
281 . S C0XFDA(50.1,"+"_IENS_",+1,",1)="T"
282 ;
283 ; NDC (string)
284 I $G(NDC) S C0XFDA(50,"+1,",31)=$E(NDC,1,5)_"-"_$E(NDC,6,9)_"-"_$E(NDC,10,11)
285 ;
286 ; Dispense Unit (string)
287 S C0XFDA(50,"+1,",14.5)=$$GET1^DIQ(50.68,F5068IEN,"VA DISPENSE UNIT")
288 ;
289 ; National Drug File Entry (pointer to 50.6)
290 S C0XFDA(50,"+1,",20)="`"_$$GET1^DIQ(50.68,F5068IEN,"VA GENERIC NAME","I")
291 ;
292 ; VA Product Name (string)
293 S C0XFDA(50,"+1,",21)=$E($$GET1^DIQ(50.68,F5068IEN,.01),1,70)
294 ;
295 ; PSNDF VA PRODUCT NAME ENTRY (pointer to 50.68)
296 S C0XFDA(50,"+1,",22)="`"_F5068IEN
297 ;
298 ; DEA, SPECIAL HDLG (string)
299 D ; From ^PSNMRG
300 . N CS S CS=$$GET1^DIQ(50.68,F5068IEN,"CS FEDERAL SCHEDULE","I")
301 . S CS=$S(CS?1(1"2n",1"3n"):+CS_"C",+CS=2!(+CS=3)&(CS'["C"):+CS_"A",1:CS)
302 . S C0XFDA(50,"+1,",3)=CS
303 ;
304 ; NATIONAL DRUG CLASS (pointer to 50.605) (triggers VA Classification field)
305 S C0XFDA(50,"+1,",25)="`"_$$GET1^DIQ(50.68,F5068IEN,"PRIMARY VA DRUG CLASS","I")
306 ;
307 ; Right Now, I don't file the following which ^PSNMRG does (cuz I don't need them)
308 ; - Package Size (derived from NDC/UPN file)
309 ; - Package Type (ditto)
310 ; - CMOP ID (from $$PROD2^PSNAPIS)
311 ; - National Formulary Indicator (from 50.68)
312 ;
313 ; Next Step is to kill Old OI if Dosage Form doesn't match
314 ; Won't do that here as it's assumed any drugs that's added is new.
315 ; This happens at ^PSNPSS
316 ;
317 ; Next Step: Kill off old doses and add new ones. We need to to that.
318 ; TODO: Add doses. Happens at EN1^PSSUTIL.
319 N C0XERR,C0XIEN
320 D UPDATE^DIE("E","C0XFDA","C0XIEN","C0XERR")
321 ;
322 S:$D(C0XERR) $EC=",U1,"
323 ;
324 QUIT C0XIEN(1)
Note: See TracBrowser for help on using the repository browser.