1
KIDS Distribution saved on Sep 17, 2010@09:03:04
8
PSJ*5.0*1505^^0^3100917^n
12
Pyxis/Omnicell interface
19
"BLD",7191,"KRN",.4,0)
21
"BLD",7191,"KRN",.4,"NM",0)
23
"BLD",7191,"KRN",.401,0)
25
"BLD",7191,"KRN",.402,0)
27
"BLD",7191,"KRN",.402,"NM",0)
29
"BLD",7191,"KRN",.403,0)
31
"BLD",7191,"KRN",.5,0)
33
"BLD",7191,"KRN",.84,0)
35
"BLD",7191,"KRN",3.6,0)
37
"BLD",7191,"KRN",3.8,0)
39
"BLD",7191,"KRN",9.2,0)
41
"BLD",7191,"KRN",9.8,0)
43
"BLD",7191,"KRN",9.8,"NM",0)
45
"BLD",7191,"KRN",9.8,"NM",3,0)
47
"BLD",7191,"KRN",9.8,"NM",4,0)
49
"BLD",7191,"KRN",9.8,"NM",5,0)
51
"BLD",7191,"KRN",9.8,"NM","B","MSCPSRX1",5)
53
"BLD",7191,"KRN",9.8,"NM","B","MSCPSRXE",4)
55
"BLD",7191,"KRN",9.8,"NM","B","PSJHLU",3)
57
"BLD",7191,"KRN",19,0)
59
"BLD",7191,"KRN",19,"NM",0)
61
"BLD",7191,"KRN",19.1,0)
63
"BLD",7191,"KRN",19.1,"NM",0)
65
"BLD",7191,"KRN",101,0)
67
"BLD",7191,"KRN",101,"NM",0)
69
"BLD",7191,"KRN",409.61,0)
71
"BLD",7191,"KRN",409.61,"NM",0)
73
"BLD",7191,"KRN",771,0)
75
"BLD",7191,"KRN",771,"NM",0)
77
"BLD",7191,"KRN",870,0)
79
"BLD",7191,"KRN",870,"NM",0)
81
"BLD",7191,"KRN",8989.51,0)
83
"BLD",7191,"KRN",8989.51,"NM",0)
85
"BLD",7191,"KRN",8989.52,0)
87
"BLD",7191,"KRN",8994,0)
89
"BLD",7191,"KRN","B",.4,.4)
91
"BLD",7191,"KRN","B",.401,.401)
93
"BLD",7191,"KRN","B",.402,.402)
95
"BLD",7191,"KRN","B",.403,.403)
97
"BLD",7191,"KRN","B",.5,.5)
99
"BLD",7191,"KRN","B",.84,.84)
101
"BLD",7191,"KRN","B",3.6,3.6)
103
"BLD",7191,"KRN","B",3.8,3.8)
105
"BLD",7191,"KRN","B",9.2,9.2)
107
"BLD",7191,"KRN","B",9.8,9.8)
109
"BLD",7191,"KRN","B",19,19)
111
"BLD",7191,"KRN","B",19.1,19.1)
113
"BLD",7191,"KRN","B",101,101)
115
"BLD",7191,"KRN","B",409.61,409.61)
117
"BLD",7191,"KRN","B",771,771)
119
"BLD",7191,"KRN","B",870,870)
121
"BLD",7191,"KRN","B",8989.51,8989.51)
123
"BLD",7191,"KRN","B",8989.52,8989.52)
125
"BLD",7191,"KRN","B",8994,8994)
128
C:\TEMP\PSJ_50_1505.KID
142
Shall I write over your |FLAG| File
152
Want my data |FLAG| yours
162
Want KIDS to INHIBIT LOGONs during the install
172
Enter the Coordinator for Mail Group '|FLAG|'
182
Want KIDS to Rebuild Menu Trees Upon Completion of Install
192
Want to DISABLE Scheduled Options, Menu Options, and Protocols
202
Want to MOVE routines to other CPUs
211
"RTN","MSCPSRX1",1,0)
212
MSCPSRX1 ;MSC/GFT - Continuation of Building outgoing RXE msgs when order is processed by pharmacy;16-Sep-2010 19:51;MH
213
"RTN","MSCPSRX1",2,0)
214
;;5.0;INPATIENT MEDICATIONS;**1504,1505**;March 26,2007
215
"RTN","MSCPSRX1",3,0)
217
"RTN","MSCPSRX1",4,0)
219
"RTN","MSCPSRX1",5,0)
220
RXO ; pharmacy prescription order segment (used to send Orderable Item to O
221
"RTN","MSCPSRX1",6,0)
223
"RTN","MSCPSRX1",7,0)
224
S LIMIT=17 X PSJCLEAR
225
"RTN","MSCPSRX1",8,0)
227
"RTN","MSCPSRX1",9,0)
228
S NODE1=$G(@(PSJORDER_"0)")),NODE2=$G(@(PSJORDER_"2)"))
229
"RTN","MSCPSRX1",10,0)
230
S OINODE=$G(@(PSJORDER_".2)"))
231
"RTN","MSCPSRX1",11,0)
232
S SPDIEN=+$P(OINODE,"^"),DOSEOR=$P(OINODE,"^",2),DOSE=$P(OINODE,"^",5),UNIT=$P(OINODE,"^",6)
233
"RTN","MSCPSRX1",12,0)
234
;If only local doses exist, create the dose and units from the doseform
235
"RTN","MSCPSRX1",13,0)
236
I DOSE="" S DOSE=$P(DOSEOR," ",1),UNIT=$P(DOSEOR," ",2)
237
"RTN","MSCPSRX1",14,0)
238
S FIELD(1)=$S(SPDIEN=0:"^",1:SPDIEN_"^")
239
"RTN","MSCPSRX1",15,0)
240
I SPDIEN S DOSEFORM=$P($G(^PS(50.7,SPDIEN,0)),"^",2),NAME=$P($G(^PS(50.606,+DOSEFORM,0)),"^"),FIELD(1)=FIELD(1)_$P($G(^PS(50.7,SPDIEN,0)),"^")_" "_NAME
241
"RTN","MSCPSRX1",16,0)
242
S FIELD(1)=FIELD(1)_"^L"
243
"RTN","MSCPSRX1",17,0)
244
N DURNOD S DURNOD=$G(@(PSJORDER_"2.5)")) I $P(DURNOD,"^",4)]""
245
"RTN","MSCPSRX1",18,0)
246
S $P(FIELD(1),"^",3)=$P(DURNOD,"^",4)
247
"RTN","MSCPSRX1",19,0)
249
"RTN","MSCPSRX1",20,0)
251
"RTN","MSCPSRX1",21,0)
253
"RTN","MSCPSRX1",22,0)
255
"RTN","MSCPSRX1",23,0)
257
"RTN","MSCPSRX1",24,0)
259
"RTN","MSCPSRX1",25,0)
261
"RTN","MSCPSRX1",26,0)
262
; pharmacy encoded order segment
263
"RTN","MSCPSRX1",27,0)
264
RXE1 N FIELD,NDC,NDC2,ADMCODE,NDNODE,SPDIEN,PRODNAME,DDNUM,DDIEN,CNT1,UNITS,AMT
265
"RTN","MSCPSRX1",28,0)
266
S (UNITS,NDNODE,SPDIEN,PRODNAME,DDNUM,DDIEN,CNT1)="",LIMIT=26 X PSJCLEAR
267
"RTN","MSCPSRX1",29,0)
269
"RTN","MSCPSRX1",30,0)
270
I RXORDER["V" D IVRXE Q
271
"RTN","MSCPSRX1",31,0)
272
I RXORDER["P",IVTYPE="F" D IVRXE Q
273
"RTN","MSCPSRX1",32,0)
274
I RXORDER["P",$P(NODE1,"^",4)="H" D IVRXE Q
275
"RTN","MSCPSRX1",33,0)
276
N RENEW S RENEW=$$LASTREN^PSJLMPRI(PSJHLDFN,RXORDER)
277
"RTN","MSCPSRX1",34,0)
278
S PSGPLS=$S($G(PSJEXPOE):$P(NODE2,"^",2),RENEW>$P(NODE2,"^",2):RENEW,1:$P(NODE2,"^",2))
279
"RTN","MSCPSRX1",35,0)
280
S PSGPLF=$S($G(PSJEXPOE):PSJEXPOE,1:$P(NODE2,"^",4))
281
"RTN","MSCPSRX1",36,0)
282
;S FIELD(1)="^"_$P(NODE2,"^")_"^^"_$$FMTHL7^XLFDT(PSGPLS)_"^"_$$FMTHL7^XLFDT(PSGPLF)_"^"_$P(NODE2,"^",5)
283
"RTN","MSCPSRX1",37,0)
284
S $P(NODE2,"^",5)=$TR($P(NODE2,"^",5),"-",",")
285
"RTN","MSCPSRX1",38,0)
286
S FIELD(1)="^"_$P(NODE2,"^")_"&"_$P(NODE2,"^",5)_"^^"_$$FMTHL7^XLFDT(PSGPLS)_"^"_$$FMTHL7^XLFDT(PSGPLF)_"^"
287
"RTN","MSCPSRX1",39,0)
288
;commented out since this data is redundant
289
"RTN","MSCPSRX1",40,0)
290
;S FIELD(21)="^"_$P(NODE2,"^",5)_"^L^^^"
291
"RTN","MSCPSRX1",41,0)
292
I ($G(DOSEOR)']"")!($O(@(PSJORDER_"1,"" "")"),-1)=1) D
293
"RTN","MSCPSRX1",42,0)
294
.S (CNT1,DDNUM)=0 F S DDNUM=$O(@(PSJORDER_"1,"_DDNUM_")")) Q:'DDNUM Q:CNT1=1 S DDIEN=+$G(@(PSJORDER_"1,"_DDNUM_",0)")) D
295
"RTN","MSCPSRX1",43,0)
296
..S AMT=$S($P(@(PSJORDER_"1,"_DDNUM_",0)"),"^",2)="":"1",1:$P(@(PSJORDER_"1,"_DDNUM_",0)"),"^",2))_"&"_FIELD(1)
297
"RTN","MSCPSRX1",44,0)
298
..S FIELD(1)=DOSE_"&"_UNIT_"&"_AMT,$P(FIELD(1),"^",8)=$S($G(DOSEOR)]"":$G(DOSEOR),1:DOSE_UNIT)
299
"RTN","MSCPSRX1",45,0)
300
..S:$P(FIELD(1),"^",8)="" $P(FIELD(1),"^",8)=$G(@(PSJORDER_".3)"))
301
"RTN","MSCPSRX1",46,0)
303
"RTN","MSCPSRX1",47,0)
304
..;Get the NDF code for the drug number to send
305
"RTN","MSCPSRX1",48,0)
306
.. S NDNODE=$G(^PSDRUG(DDIEN,"ND"))
307
"RTN","MSCPSRX1",49,0)
308
.. S NDC=$G(^PSDRUG(DDIEN,2))
309
"RTN","MSCPSRX1",50,0)
310
.. S NDC2=$P($G(^PSDRUG(DDIEN,2)),U,4)
311
"RTN","MSCPSRX1",51,0)
312
.. S ADMCODE=$P($G(^PSDRUG(DDIEN,21400)),U,2)
313
"RTN","MSCPSRX1",52,0)
314
.. I ADMCODE="" S MSCMSG="No ADM code; message cannot be sent. Drug "_$P(^PSDRUG(DDIEN,0),U,1)
315
"RTN","MSCPSRX1",53,0)
316
..;S PRODNAME=$S($G(^PSNDF(+NDNODE,5,+$P(NDNODE,"^",3),0))]"":^(0),1:"N/A")
317
"RTN","MSCPSRX1",54,0)
318
..;S PRODNAME=$S($T(^PSNAPIS)]"":$$PROD0^PSNAPIS(+NDNODE,$P(NDNODE,"^",3)),$G(^PSNDF(+NDNODE,5,+$P(NDNODE,"^",3),0))]"":^(0),1:"N/A")
319
"RTN","MSCPSRX1",55,0)
320
..S PRODNAME=NDC2 S:PRODNAME="" PRODNAME="N/A"
321
"RTN","MSCPSRX1",56,0)
322
..;S FIELD(2)=$S(PRODNAME="N/A":"^^",1:+NDNODE_"."_+$P(NDNODE,"^",3)_"^"_$P(NDNODE,"^",2)_"^"_"99NDF")_"^"_DDIEN_"^"_$P($G(^PSDRUG(DDIEN,0)),"^")_"^"_"99PSD"
323
"RTN","MSCPSRX1",57,0)
324
..S FIELD(2)=ADMCODE_"^"_$P($G(^PSDRUG(DDIEN,0)),"^")_"^L^"_PRODNAME_"^"_$P(NDNODE,"^",2)_"^NDC"
325
"RTN","MSCPSRX1",58,0)
326
..S $P(ORMSG(CNT),"|",2)=FIELD(2)
327
"RTN","MSCPSRX1",59,0)
328
..;"_DDIEN_"^"_$P($G(^PSDRUG(DDIEN,0)),"^")_"^"_"L"
329
"RTN","MSCPSRX1",60,0)
330
..S UNITS=$S(PRODNAME="N/A":"N/A",1:$S($T(^PSNAPIS)]"":$P($$DFSU^PSNAPIS(+NDNODE,$P(NDNODE,"^",3)),"^",5),1:$P($G(^PSNDF(+NDNODE,2,+$P(PRODNAME,"^",2),3,+$P(PRODNAME,"^",3),4,+$P(PRODNAME,"^",4),0)),"^")))
331
"RTN","MSCPSRX1",61,0)
332
..;S FIELD(5)=UNITS_"^"_$P($G(^PS(50.607,UNITS,0)),"^")_"^L"
333
"RTN","MSCPSRX1",62,0)
335
"RTN","MSCPSRX1",63,0)
336
..S FIELD(6)=$G(DOSEFORM)_"^"_$P($G(^PS(50.606,+$G(DOSEFORM),0)),"^")_"^L"
337
"RTN","MSCPSRX1",64,0)
338
..S FIELD(25)=$$EN^PSSUTIL1(DDIEN),FIELD(26)=$P(FIELD(25),"|",2),FIELD(25)=$P(FIELD(25),"|")
339
"RTN","MSCPSRX1",65,0)
340
..I $D(PSGSI) S FIELD(22)=PSGSI
341
"RTN","MSCPSRX1",66,0)
343
"RTN","MSCPSRX1",67,0)
344
E S $P(FIELD(1),"^",8)=DOSEOR
345
"RTN","MSCPSRX1",68,0)
346
I SYSTYP="p" S $P(ORMSG(4),"|",8)=FIELD(1)
347
"RTN","MSCPSRX1",69,0)
348
;S NAME=$$PROV^MSCHLUTL(DUZ),FIELD(14)=NAME
349
"RTN","MSCPSRX1",70,0)
350
S NAME=$P($G(^VA(200,DUZ,0)),"^"),FIELD(14)=DUZ_"^"_NAME_"^"_"99NP"
351
"RTN","MSCPSRX1",71,0)
353
"RTN","MSCPSRX1",72,0)
355
"RTN","MSCPSRX1",73,0)
357
"RTN","MSCPSRX1",74,0)
358
K SEGMENT S JJ=0 F S JJ=$O(@(PSJORDER_"12,"_JJ_")")) Q:'JJ S SEGMENT(JJ-1)=$G(@(PSJORDER_"12,"_JJ_",0)"))
359
"RTN","MSCPSRX1",75,0)
360
I $D(SEGMENT(0)) S CNT=CNT+1,ORMSG(CNT)="NTE|6|L|"_SEGMENT(0)
361
"RTN","MSCPSRX1",76,0)
363
"RTN","MSCPSRX1",77,0)
364
I $P($G(@(PSJORDER_"6)")),"^")]"" K SEGMENT S SEGMENT(0)="NTE|21|L|"_$P($G(@(PSJORDER_"6)")),"^") K SEGMENT
365
"RTN","MSCPSRX1",78,0)
366
I PSJORDER["P",$P($G(@(PSJORDER_"9)")),"^",2)]"" S CNT=CNT+1 S ORMSG(CNT)="NTE|21|L|"_$P($G(@(PSJORDER_"9)")),"^",2)
367
"RTN","MSCPSRX1",79,0)
369
"RTN","MSCPSRX1",80,0)
371
"RTN","MSCPSRX1",81,0)
372
IVRXE ; RXE segment for IV orders
373
"RTN","MSCPSRX1",82,0)
374
; if it's an Inpatient Med IV order, send the RXE with dispense drug
375
"RTN","MSCPSRX1",83,0)
376
; information. If it's an IV FLUID order, send just the start/stop
377
"RTN","MSCPSRX1",84,0)
378
; date, duration in the RXE and send an RXC for each additive and
379
"RTN","MSCPSRX1",85,0)
381
"RTN","MSCPSRX1",86,0)
383
"RTN","MSCPSRX1",87,0)
384
I RXORDER["V" S PSGPLS=$P(NODE1,"^",2),PSGPLF=$P(NODE1,"^",3)
385
"RTN","MSCPSRX1",88,0)
386
E S PSGPLS=$P(NODE2,"^",2),PSGPLF=$P(NODE2,"^",4)
387
"RTN","MSCPSRX1",89,0)
388
;S FIELD(1)="^"_$S(PSJORDER["IV":$P(NODE1,"^",9),1:$P(NODE2,"^"))_"^^"_$$FMTHL7^XLFDT(PSGPLS)_"^"_$$FMTHL7^XLFDT(PSGPLF)
389
"RTN","MSCPSRX1",90,0)
390
S $P(NODE2,"^",5)=$TR($P(NODE1,"^",11),"-",",")
391
"RTN","MSCPSRX1",91,0)
392
S $P(NODE1,"^",11)=$TR($P(NODE1,"^",11),"-",",")
393
"RTN","MSCPSRX1",92,0)
394
S FIELD(1)="^"_$S(PSJORDER["IV":$P(NODE1,"^",9),1:$P(NODE2,"^"))_"&"_$P(NODE1,"^",11)_"^^"_$$FMTHL7^XLFDT(PSGPLS)_"^"_$$FMTHL7^XLFDT(PSGPLF)
395
"RTN","MSCPSRX1",93,0)
396
;S FIELD(1)="^"_$P(NODE2,"^")_"&"_$P(NODE2,"^",5)_"^^"_$$FMTHL7^XLFDT(PSGPLS)_"^"_$$FMTHL7^XLFDT(PSGPLF)_"^"
397
"RTN","MSCPSRX1",94,0)
398
I $P(FIELD(1),"^",2)="" S $P(FIELD(1),"^",2)="IV"
399
"RTN","MSCPSRX1",95,0)
400
S FIELD(21)="^"_$S(PSJORDER["IV":$P(NODE1,"^",11),1:$P(NODE2,"^",5))_"^L^^^"
401
"RTN","MSCPSRX1",96,0)
402
;S NAME=$$PROV^MSCHLUTL(DUZ),FIELD(14)=NAME
403
"RTN","MSCPSRX1",97,0)
404
S NAME=$P($G(^VA(200,DUZ,0)),"^")
405
"RTN","MSCPSRX1",98,0)
406
S FIELD(14)=DUZ_"^"_NAME_"^"_"99NP"
407
"RTN","MSCPSRX1",99,0)
409
"RTN","MSCPSRX1",100,0)
410
I RXORDER["V" S INFUSE=$P(NODE1,"^",8)
411
"RTN","MSCPSRX1",101,0)
412
E S INFUSE=$P($G(@(PSJORDER_"8)")),"^",5)
413
"RTN","MSCPSRX1",102,0)
414
I INFUSE?1N.N1" ml/hr" S FIELD(23)=+INFUSE,Y=$P(INFUSE,+INFUSE,2),Y=$$TRIM^XLFSTR(Y,"LR"," "),FIELD(24)=Y
415
"RTN","MSCPSRX1",103,0)
416
I INFUSE?1N.N1" ml/hr@0" S FIELD(23)=+INFUSE,Y=$P(INFUSE,+INFUSE,2),Y=$$TRIM^XLFSTR(Y,"LR"," "),FIELD(24)=$E(Y,1,5)
417
"RTN","MSCPSRX1",104,0)
418
I FIELD(23)="",FIELD(24)="" S INFUSE=$E(INFUSE,13,$L(INFUSE)) S FIELD(23)=INFUSE
419
"RTN","MSCPSRX1",105,0)
421
"RTN","MSCPSRX1",106,0)
423
"RTN","MSCPSRX1",107,0)
425
"RTN","MSCPSRX1",108,0)
427
"RTN","MSCPSRX1",109,0)
428
K SEGMENT I RXORDER["V" S JJ=0 F S JJ=$O(@(PSJORDER_"5,"_JJ_")")) Q:'JJ S SEGMENT(JJ-1)=$G(@(PSJORDER_"5,"_JJ_",0)"))
429
"RTN","MSCPSRX1",110,0)
430
E S JJ=0 F S JJ=$O(@(PSJORDER_"12,"_JJ_")")) Q:'JJ S SEGMENT(JJ-1)=$G(@(PSJORDER_"12,"_JJ_",0)"))
431
"RTN","MSCPSRX1",111,0)
432
I $D(SEGMENT(0)) S CNT=CNT+1,ORMSG(CNT)="NTE|6|L|"_SEGMENT(0)
433
"RTN","MSCPSRX1",112,0)
435
"RTN","MSCPSRX1",113,0)
436
I RXORDER["V",$P($G(@(PSJORDER_"3)")),"^")]"" S CNT=CNT+1,ORMSG(CNT)="NTE|21|L|"_$P($G(@(PSJORDER_"3)")),"^")
437
"RTN","MSCPSRX1",114,0)
438
I RXORDER["P",$P($G(@(PSJORDER_"9)")),U,2)]"" S CNT=CNT+1,ORMSG(CNT)="NTE|21|L|"_$P($G(@(PSJORDER_"9)")),U,2)
439
"RTN","MSCPSRX1",115,0)
441
"RTN","MSCPSRX1",116,0)
442
RXC ;component segments
443
"RTN","MSCPSRX1",117,0)
444
N ADDITIVE,SOLUTION,SUB,TYPE,AD,SOL,PTR,NUM,ADMCODE,RXENAME,CNAME,RXE1
445
"RTN","MSCPSRX1",118,0)
447
"RTN","MSCPSRX1",119,0)
448
S LIMIT=24 X PSJCLEAR
449
"RTN","MSCPSRX1",120,0)
451
"RTN","MSCPSRX1",121,0)
452
; In the line below, the naked reference refers to the full global refe
453
"RTN","MSCPSRX1",122,0)
454
; This could be a reference to either ^PS(53.1 or ^PS(55
455
"RTN","MSCPSRX1",123,0)
456
S AD="AD",SOL="SOL" F TYPE="AD","SOL" S SUB=0 F S SUB=$O(@(PSJORDER_TYPE_","_SUB_")")) Q:SUB="" S NODE1=$G(^(SUB,0)) Q:NODE1="" D
457
"RTN","MSCPSRX1",124,0)
458
.S FIELD(1)=$S(TYPE="AD":"A",1:"B")
459
"RTN","MSCPSRX1",125,0)
460
.S PTR=+$S(TYPE="AD":+$P($G(^PS(52.6,$P(NODE1,"^"),0)),"^",11),1:+$P($G(^PS(52.7,$P(NODE1,"^"),0)),"^",11))
461
"RTN","MSCPSRX1",126,0)
462
.S DRUG=+$S(TYPE="AD":+$P($G(^PS(52.6,$P(NODE1,"^"),0)),"^",2),1:+$P($G(^PS(52.7,$P(NODE1,"^"),0)),"^",2))
463
"RTN","MSCPSRX1",127,0)
464
.S ADMCODE=$P($G(^PSDRUG(DRUG,21400)),U,2)
465
"RTN","MSCPSRX1",128,0)
466
.I ADMCODE="" S MSCMSG="No ADM code found. Message cannot be sent Drug: "_$P(^PSDRUG(DRUG,0),U,1)
467
"RTN","MSCPSRX1",129,0)
468
.S FIELD(2)=ADMCODE_"^"_$P($G(^PSDRUG(DRUG,0)),U,1)_"^L"
469
"RTN","MSCPSRX1",130,0)
470
.I TYPE="SOL" S $P(ORMSG(RXOCT),"|",2)=FIELD(2)
471
"RTN","MSCPSRX1",131,0)
472
.S FIELD(2)=FIELD(2)_"^"_$S($G(PSJBCBU):+$P(NODE1,"^"),1:PTR)_"^"_$S($G(PSJBCBU):$S(TYPE="AD":$P($G(^PS(52.6,+$P(NODE1,"^"),0)),"^"),1:$P($G(^PS(52.7,+$P(NODE1,"^"),0)),"^")_" "_$P($G(^(0)),U,4)),1:$P($G(^PS(50.7,PTR,0)),"^"))
473
"RTN","MSCPSRX1",132,0)
474
.S:(TYPE="AD"&$G(PSJBCBU)) FIELD(2)=FIELD(2)_$S($P(NODE1,"^",3)]"":"BOTTLE: "_$P(NODE1,"^",3),1:"")
475
"RTN","MSCPSRX1",133,0)
476
.S FIELD(2)=FIELD(2)_"^L"
477
"RTN","MSCPSRX1",134,0)
478
.S FIELD(3)=$P($P(NODE1,"^",2)," ")
479
"RTN","MSCPSRX1",135,0)
480
.S FIELD(4)=$P($P(NODE1,"^",2)," ",2)
481
"RTN","MSCPSRX1",136,0)
483
"RTN","MSCPSRX1",137,0)
484
..I RXENAME="" S RXENAME="^"_$P($G(^PSDRUG(DRUG,0)),U,1)
485
"RTN","MSCPSRX1",138,0)
486
..E S RXENAME=RXENAME_" / "_$P($G(^PSDRUG(DRUG,0)),U,1)
487
"RTN","MSCPSRX1",139,0)
488
.S NUM=$S(FIELD(4)="":"","ML^LITER^MCG^MG^GM^UNITS^IU^MEQ^MM^MU^THOUU"[FIELD(4):$P($T(@(FIELD(4))),";",3),1:"")
489
"RTN","MSCPSRX1",140,0)
490
.;S FIELD(4)=NUM_"^"_FIELD(4)_"^L"
491
"RTN","MSCPSRX1",141,0)
493
"RTN","MSCPSRX1",142,0)
494
.. S RXE1=$P(ORMSG(SRXE),"|",2)
495
"RTN","MSCPSRX1",143,0)
496
..S $P(RXE1,U,1)=FIELD(3)_" "_FIELD(4)
497
"RTN","MSCPSRX1",144,0)
498
..S $P(ORMSG(SRXE),"|",2)=RXE1
499
"RTN","MSCPSRX1",145,0)
501
"RTN","MSCPSRX1",146,0)
503
"RTN","MSCPSRX1",147,0)
504
.S ORMSG(CNT)=SEGMENT
505
"RTN","MSCPSRX1",148,0)
506
I SYSTYP="o" S $P(ORMSG(SRXE),"|",3)=RXENAME
507
"RTN","MSCPSRX1",149,0)
509
"RTN","MSCPSRX1",150,0)
511
"RTN","MSCPSRX1",151,0)
512
RXR ; med route segment
513
"RTN","MSCPSRX1",152,0)
515
"RTN","MSCPSRX1",153,0)
517
"RTN","MSCPSRX1",154,0)
518
I PSJORDER["IV" S FIELD(1)="IV^IV^L"
519
"RTN","MSCPSRX1",155,0)
520
;S FIELD(1)=$P($G(@(PSJORDER_".2)")),"^",3) Q:$P(FIELD(1),U,4)="" D
521
"RTN","MSCPSRX1",156,0)
522
;.S FIELD(1)=FIELD(1)_"^"_$P($G(^PS(51.2,+$P(FIELD(1),"^",4),0)),"^")_"^99PSR"
523
"RTN","MSCPSRX1",157,0)
524
;.S:$G(PSJBCBU) FIELD(4)=$P($G(@(PSJORDER_"0)")),"^",4)_"^"_$$CODES^PSIVUTL($P($G(@(PSJORDER_"0)")),"^",4),55.01,.04)_"^L"
525
"RTN","MSCPSRX1",158,0)
526
;S:FIELD(1)="" FIELD(1)=$P(NODE1,"^",3)_"^"_$P($G(^PS(51.2,+$P(NODE1,"^",3),0)),"^")_"^L"
527
"RTN","MSCPSRX1",159,0)
528
S:FIELD(1)="" FIELD(1)=$P($G(^PS(51.2,+$P(NODE1,"^",3),0)),"^")_"^"_$P($G(^PS(51.2,+$P(NODE1,"^",3),0)),"^")_"^L"
529
"RTN","MSCPSRX1",160,0)
531
"RTN","MSCPSRX1",161,0)
533
"RTN","MSCPSRX1",162,0)
535
"RTN","MSCPSRX1",163,0)
537
"RTN","MSCPSRX1",164,0)
539
"RTN","MSCPSRX1",165,0)
541
"RTN","MSCPSRX1",166,0)
543
"RTN","MSCPSRX1",167,0)
545
"RTN","MSCPSRX1",168,0)
546
S SUBSET=0,SEGMENT=""
547
"RTN","MSCPSRX1",169,0)
549
"RTN","MSCPSRX1",170,0)
550
.I SEGMENT']"" S SEGMENT=FIELD(J) Q
551
"RTN","MSCPSRX1",171,0)
552
.S SEGMENT=SEGMENT_"|"_FIELD(J)
553
"RTN","MSCPSRX1",172,0)
555
"RTN","MSCPSRX1",173,0)
556
ZRX ; pharmacy Z-segment
557
"RTN","MSCPSRX1",174,0)
559
"RTN","MSCPSRX1",175,0)
561
"RTN","MSCPSRX1",176,0)
562
I '$G(PSJREN) N PREON,PSJREN I $G(PSJORD)["U"&($P(NODE1,"^",24)="R")
563
"RTN","MSCPSRX1",177,0)
565
"RTN","MSCPSRX1",178,0)
566
I $G(PSJORD)["V"&($P(NODE2,"^",8)="R") S PSJREN=1
567
"RTN","MSCPSRX1",179,0)
568
S PREON=$S($G(PSJREN):$G(PSJORD),PSJORDER["IV":$P(NODE2,"^",5),1:$P(NODE1,"^",25))
569
"RTN","MSCPSRX1",180,0)
570
S FIELD(1)=$S(PREON["P":$P($G(^PS(53.1,+PREON,0)),"^",21),PREON["V":$P($G(^PS(55,PSJHLDFN,"IV",+PREON,0)),"^",21),1:$P($G(^PS(55,PSJHLDFN,5,+PREON,0)),"^",21))
571
"RTN","MSCPSRX1",181,0)
572
S FIELD(2)=$S(PSJORDER["IV":$G(P("NAT")),1:$G(PSJNOO))
573
"RTN","MSCPSRX1",182,0)
574
S FIELD(3)=$S($G(PSJREN):"R",PSJORDER["IV":$P(NODE2,"^",8),1:$P(NODE1,"^",24))
575
"RTN","MSCPSRX1",183,0)
576
I FIELD(3)="" I PSOC="SN" S FIELD(3)="N"
577
"RTN","MSCPSRX1",184,0)
578
;S NAME=$$PROV^MSCHLUTL(DUZ),FIELD(14)=NAME
579
"RTN","MSCPSRX1",185,0)
580
S NAME=$P($G(^VA(200,DUZ,0)),"^")
581
"RTN","MSCPSRX1",186,0)
582
S FIELD(5)=DUZ_"^"_NAME_"^"_"99NP"
583
"RTN","MSCPSRX1",187,0)
584
S FIELD(6)=$S($G(IVTYPE)="F":"IV",$P($G(@(PSJORDER_"0)")),U,4)="H":"TPN",1:"")
585
"RTN","MSCPSRX1",188,0)
586
D SEGMENT(LIMIT),DISPLAY^PSJHL2
587
"RTN","MSCPSRX1",189,0)
589
"RTN","MSCPSRX1",190,0)
591
"RTN","MSCPSRX1",191,0)
592
CNT ;Count dispense drugs for an order
593
"RTN","MSCPSRX1",192,0)
594
S (CNT,DDNUM)=0 F S DDNUM=$O(@(PSJORDER_"1,"_DDNUM_")"))
595
"RTN","MSCPSRX1",193,0)
597
"RTN","MSCPSRX1",194,0)
599
"RTN","MSCPSRX1",195,0)
601
"RTN","MSCPSRX1",196,0)
603
"RTN","MSCPSRX1",197,0)
605
"RTN","MSCPSRX1",198,0)
607
"RTN","MSCPSRX1",199,0)
609
"RTN","MSCPSRX1",200,0)
611
"RTN","MSCPSRX1",201,0)
613
"RTN","MSCPSRX1",202,0)
615
"RTN","MSCPSRX1",203,0)
617
"RTN","MSCPSRX1",204,0)
619
"RTN","MSCPSRX1",205,0)
621
"RTN","MSCPSRX1",206,0)
623
"RTN","MSCPSRX1",207,0)
627
"RTN","MSCPSRXE",1,0)
628
MSCPSRXE ;MSC/GFT - Build outgoing RXE msgs when order is processed by pharmacy;16-Sep-2010 19:51;MH
629
"RTN","MSCPSRXE",2,0)
630
;;5.0;INPATIENT MEDICATIONS;**1504,1505**;16 DEC 97
631
"RTN","MSCPSRXE",3,0)
632
EN(PSOC,RXORDER,PSJORDER) ; ORDER COMING FROM PHARMACY
633
"RTN","MSCPSRXE",4,0)
634
;;3.0;ORDER ENTRY/RESULTS REPORTING;**MSC**;Dec 17, 1997
635
"RTN","MSCPSRXE",5,0)
636
;Patch 4 adds a fix for onetime doses completed in BCMA
637
"RTN","MSCPSRXE",6,0)
638
;This routine is a copy of ORMBLD to send the message through HL7 to an outside application
639
"RTN","MSCPSRXE",7,0)
640
; PSOC - type of order
641
"RTN","MSCPSRXE",8,0)
642
; RXORDER = order number
643
"RTN","MSCPSRXE",9,0)
645
"RTN","MSCPSRXE",10,0)
646
; -- Send order message
647
"RTN","MSCPSRXE",11,0)
648
N ORPKG,DGQUIET,UNDO,SUBSET,SRXE,CNT,PROV,MSCOR,OTYP,OPRI,ORMSG,HLRESLT,X,SYSTYP,ACCOUNT,MSC101,OR3,OR8,ORVP,ORDG
649
"RTN","MSCPSRXE",12,0)
650
N NODE1,NODE2,NODE4,TST1,NODEP,MSCMSG,SUB,VDATE,MSCERROR,HL,LOCI,ORDCON,STATUS,TYPEB,VERIFY
651
"RTN","MSCPSRXE",13,0)
653
"RTN","MSCPSRXE",14,0)
655
"RTN","MSCPSRXE",15,0)
657
"RTN","MSCPSRXE",16,0)
658
S:$G(PSOC)="" PSOC="NW"
659
"RTN","MSCPSRXE",17,0)
660
I +RXORDER&(+PSJORDER=0) D
661
"RTN","MSCPSRXE",18,0)
662
.S TST1=$G(@(PSJORDER_"0)")) I $P(TST1,U,4)="U" S RXORDER=RXORDER_"U"
663
"RTN","MSCPSRXE",19,0)
665
"RTN","MSCPSRXE",20,0)
666
S PSOC=$S("SN^XX^ZC^XR"[PSOC:"XX","OC^CA^CR"[PSOC:"CA","DC^DR^OD"[PSOC:"DC","HD^OH^HR"[PSOC:"HD","RL^OE^OR"[PSOC:"RL","SN"[PSOC:"SN",1:"NW")
667
"RTN","MSCPSRXE",21,0)
668
;-------------------------------------------------
669
"RTN","MSCPSRXE",22,0)
670
;Get the information needed for the pharmacy order
671
"RTN","MSCPSRXE",23,0)
672
;B S PSJORDER=$S((PSJORDER["N")!(PSJORDER["P"):"^PS(53.1,"_+PSJORDER,PSJORDER["V":"^PS(55,"_PSJHLDFN_",""IV"","_+PSJORDER,1:"^PS(55,"_PSJHLDFN_",5,"_+PSJORDER)_","
673
"RTN","MSCPSRXE",24,0)
674
Q:(RXORDER'["P")&(RXORDER'["V")&(RXORDER'["U")&(RXORDER'["A") ;Only pharmacy orders go to dispensing machine
675
"RTN","MSCPSRXE",25,0)
676
Q:PSJORDER["53.1" ;Unverified orders will not be sent to the dispensing machine
677
"RTN","MSCPSRXE",26,0)
678
I $P($G(@(PSJORDER_"0)")),U,15)'=PSJHLDFN S ORDCON="Patient does not match/PSJHL2" S X="ORERR" X ^%ZOSF("TEST") I
679
"RTN","MSCPSRXE",27,0)
680
S UNDO=$S("OC^CR"[PSOC:1,1:0)
681
"RTN","MSCPSRXE",28,0)
682
I RXORDER["P",$P($G(@(PSJORDER_"0)")),U,15)'=PSJHLDFN W !,"ERROR"
683
"RTN","MSCPSRXE",29,0)
684
;Get the HL7 information to setup the variables
685
"RTN","MSCPSRXE",30,0)
686
S MSC101="MSCH ORM MED SERVER"
687
"RTN","MSCPSRXE",31,0)
688
D INIT^HLFNC2(MSC101,.HL) I $O(HL(""))="" Q ;CAN'T SET UP HL7 VARIABLES
689
"RTN","MSCPSRXE",32,0)
690
;Determine if site is using Pyxis or Omnicell
691
"RTN","MSCPSRXE",33,0)
692
S SYSTYP=$$GET^XPAR("ALL","MSCADM MACHINE")
693
"RTN","MSCPSRXE",34,0)
694
I SYSTYP="p"&(PSOC="XX") S PSOC="XO"
695
"RTN","MSCPSRXE",35,0)
696
S DGQUIET=1 D ;build msg, ORDIALOG gone when posted
697
"RTN","MSCPSRXE",36,0)
698
.S ORMSG(2)=$$PID^MSCHLUTL(PSJHLDFN)
699
"RTN","MSCPSRXE",37,0)
700
.I $G(ORMSG(2))="" S MSCMSG="PID segment could not be created" D QUIT Q
701
"RTN","MSCPSRXE",38,0)
702
.S ORMSG(3)=$$PV1^MSCHLUTL(PSJHLDFN)
703
"RTN","MSCPSRXE",39,0)
704
.I $G(ORMSG(3))="" S MSCMSG="PV1 segment could not be created" D QUIT Q
705
"RTN","MSCPSRXE",40,0)
706
.;Check to see if this order should be sent; Need to know where patient is
707
"RTN","MSCPSRXE",41,0)
708
.;located before we can send this on
709
"RTN","MSCPSRXE",42,0)
710
.N OK,TYPE,LOC,IEN,DIV,TYPEIEN,SEND
711
"RTN","MSCPSRXE",43,0)
712
.S TYPE=$P(ORMSG(3),"|",3),LOC=$P($P(ORMSG(3),"|",4),"^",1)
713
"RTN","MSCPSRXE",44,0)
714
.;Determine if the interface is setup to send messages from this location
715
"RTN","MSCPSRXE",45,0)
717
"RTN","MSCPSRXE",46,0)
718
.S IEN=$O(^MSCH(21488,"B",DIV,""))
719
"RTN","MSCPSRXE",47,0)
721
"RTN","MSCPSRXE",48,0)
722
.S TYPEB=$O(^MSCH(21488,IEN,1,"B",TYPE,""))
723
"RTN","MSCPSRXE",49,0)
725
"RTN","MSCPSRXE",50,0)
726
.S SEND=$P($G(^MSCH(21488,IEN,1,TYPEB,0)),U,2)
727
"RTN","MSCPSRXE",51,0)
729
"RTN","MSCPSRXE",52,0)
731
"RTN","MSCPSRXE",53,0)
732
..S LOCI=$O(^MSCH(21488,IEN,1,TYPEB,1,"B",LOC,"")) Q:LOCI="" D ORC
733
"RTN","MSCPSRXE",54,0)
735
"RTN","MSCPSRXE",55,0)
736
..S LOCI=$O(^MSCH(21488,IEN,1,TYPEB,1,"B",LOC,"")) Q:LOCI'=""
737
"RTN","MSCPSRXE",56,0)
739
"RTN","MSCPSRXE",57,0)
741
"RTN","MSCPSRXE",58,0)
742
;---------------------------------------------------------
743
"RTN","MSCPSRXE",59,0)
744
;Put the message together and generate the call
745
"RTN","MSCPSRXE",60,0)
746
GEN K ^TMP("HLS",$J) S ORMSG=""
747
"RTN","MSCPSRXE",61,0)
748
F X=1:1 S ORMSG=$O(ORMSG(ORMSG)) Q:ORMSG="" S ^TMP("HLS",$J,X)=ORMSG(ORMSG)
749
"RTN","MSCPSRXE",62,0)
751
"RTN","MSCPSRXE",63,0)
752
D GENERATE^HLMA(MSC101,"GM",1,.HLRESLT,"") K ^TMP("HLS",$J)
753
"RTN","MSCPSRXE",64,0)
754
I +$P(HLRESLT,U,2) D Q
755
"RTN","MSCPSRXE",65,0)
756
.D ERR^MSCHLUTL(PSJHLDFN,"COULDN'T SEND "_PSOC_" ORDER "_RXORDER_" USING '"_MSC_"' PROTOCOL: "_$P(HLRESLT,U,3)) ;...and FILE exception
757
"RTN","MSCPSRXE",66,0)
759
"RTN","MSCPSRXE",67,0)
761
"RTN","MSCPSRXE",68,0)
763
"RTN","MSCPSRXE",69,0)
764
QUIT ;Quit sending the message
765
"RTN","MSCPSRXE",70,0)
766
I MSCMSG="" S MSCMSG="Unable to send message"
767
"RTN","MSCPSRXE",71,0)
768
D ERR^MSCHLUTL(PSJHLDFN,MSCMSG)
769
"RTN","MSCPSRXE",72,0)
771
"RTN","MSCPSRXE",73,0)
772
NATURE(X) ; -- Returns 3 ^-piece identifier for nature X
773
"RTN","MSCPSRXE",74,0)
774
N ORN,Y S ORN=$G(^ORD(100.02,+$G(X),0))
775
"RTN","MSCPSRXE",75,0)
776
S Y=$P(ORN,U,2)_U_$P(ORN,U)_"^99ORN"
777
"RTN","MSCPSRXE",76,0)
779
"RTN","MSCPSRXE",77,0)
781
"RTN","MSCPSRXE",78,0)
783
"RTN","MSCPSRXE",79,0)
785
"RTN","MSCPSRXE",80,0)
786
ORC ;Find the order number for this entry
787
"RTN","MSCPSRXE",81,0)
789
"RTN","MSCPSRXE",82,0)
791
"RTN","MSCPSRXE",83,0)
792
S LIMIT=18 X PSJCLEAR
793
"RTN","MSCPSRXE",84,0)
794
Q:'$D(PSJORDER)!'$D(PSOC)
795
"RTN","MSCPSRXE",85,0)
796
S NODE1=$G(@(PSJORDER_"0)")),NODE2=$G(@(PSJORDER_"2)"))
797
"RTN","MSCPSRXE",86,0)
798
S NODE4=$G(@(PSJORDER_"4)")),NODEP=$G(@(PSJORDER_".2)"))
799
"RTN","MSCPSRXE",87,0)
800
S OTYP=$P(NODE1,U,7),OPRI=$P(NODEP,U,4)
801
"RTN","MSCPSRXE",88,0)
802
;Quit if a one-time order and already done (from BCMA)
803
"RTN","MSCPSRXE",89,0)
804
S VDATE=$P(NODE4,U,4)
805
"RTN","MSCPSRXE",90,0)
806
I (OTYP="O")&(OPRI="D")&(VDATE="") Q
807
"RTN","MSCPSRXE",91,0)
809
"RTN","MSCPSRXE",92,0)
811
"RTN","MSCPSRXE",93,0)
812
S FIELD(2)=$S(PSOC="SN":"",1:$P(NODE1,"^",21))_"^OR" I $P(FIELD(2),"^")
813
"RTN","MSCPSRXE",94,0)
814
S SUB=$P(FIELD(2),"^",1) S SUB=$P(SUB,";",1) S $P(FIELD(2),"^",1)=SUB
815
"RTN","MSCPSRXE",95,0)
816
S FIELD(3)=RXORDER_"^PS"
817
"RTN","MSCPSRXE",96,0)
818
; translate Pharmacy status code to HL7 status code, set in FIELD(5)
819
"RTN","MSCPSRXE",97,0)
820
S STATUS=$S($G(PSJEXPOE):"E",(($P(NODE1,"^",17)]"")&(RXORDER["V")):($P(NODE1,"^",17)),($P(NODE1,"^",9)]""):$P(NODE1,"^",9),$G(PSIVCOPY):"DE",1:"")
821
"RTN","MSCPSRXE",98,0)
822
I STATUS="E" S FIELD(1)="DC"
823
"RTN","MSCPSRXE",99,0)
825
"RTN","MSCPSRXE",100,0)
827
"RTN","MSCPSRXE",101,0)
828
I STATUS="U",RXORDER["P" S FIELD(3)="^PS"
829
"RTN","MSCPSRXE",102,0)
830
S FIELD(9)=$S(RXORDER["V":$$FMTHL7^XLFDT($P(NODE2,"^")),1:$$FMTHL7^XLFDT($P(NODE1,"^",16)))
831
"RTN","MSCPSRXE",103,0)
832
S CLERK=$S(RXORDER["V":$P(NODE2,"^",11),1:$P(NODE4,"^",7))
833
"RTN","MSCPSRXE",104,0)
834
S NAME=$P($G(^VA(200,+CLERK,0)),"^")
835
"RTN","MSCPSRXE",105,0)
836
S FIELD(10)=CLERK_"^"_NAME
837
"RTN","MSCPSRXE",106,0)
838
I PSOC="ZV"!($G(PSJBCBU)) S VERIFY=$P($G(NODE4),"^"),FIELD(11)=VERIFY_"^"_$P($G(^VA(200,+VERIFY,0)),"^"),FIELD(9)=$$FMTHL7^XLFDT($P(NODE4,"^",2))
839
"RTN","MSCPSRXE",107,0)
840
S PROVIDER=$S($G(PSJDCPRV)]"":$G(PSJDCPRV),RXORDER["V":$P(NODE1,"^",6),1:$P(NODE1,"^",2)) K PSJDCPRV
841
"RTN","MSCPSRXE",108,0)
842
S NAME=$$PROV^MSCHLUTL(PROVIDER)
843
"RTN","MSCPSRXE",109,0)
844
;S NAME=$$HLNAME^HLFNC($P($G(^VA(200,+PROVIDER,0)),"^"))
845
"RTN","MSCPSRXE",110,0)
847
"RTN","MSCPSRXE",111,0)
848
S FIELD(15)=$S(RXORDER["V":$$FMTHL7^XLFDT($P(NODE1,"^",2)),1:$$FMTHL7^XLFDT($P(NODE2,"^",2)))
849
"RTN","MSCPSRXE",112,0)
850
S FIELD(16)=OTYP_"^"_OPRI
851
"RTN","MSCPSRXE",113,0)
852
D SEGMENT^MSCPSRX1(LIMIT)
853
"RTN","MSCPSRXE",114,0)
855
"RTN","MSCPSRXE",115,0)
856
D @$S("DC^NW^CA^HD^RL^XX^XO"[PSOC:"RXE",1:"QUIT")
857
"RTN","MSCPSRXE",116,0)
859
"RTN","MSCPSRXE",117,0)
860
RXE ;Send a pharmacy order (RXE) message. Pharmacy messages will be sent
861
"RTN","MSCPSRXE",118,0)
862
;after being processed by pharmacy
863
"RTN","MSCPSRXE",119,0)
865
"RTN","MSCPSRXE",120,0)
866
I $G(PSJHLDFN)']""!$G(PSOC)']""!$G(PSJORDER)']""
867
"RTN","MSCPSRXE",121,0)
868
N COMMENTS,DDIEA,DDNUM,DOSE,DOSEFORM,DOSEOR,NAME,DURATION,IVTYPE,NDNODE,OINODE,PSGPLS,PSGPLF,PRODNAME,SPDIEN,UNIT,UNITS,DDIEN,SCHEDULE
869
"RTN","MSCPSRXE",122,0)
870
S IVTYPE=$S(RXORDER["U":"",1:$$IVTYPE^PSJHLU(PSJORDER))
871
"RTN","MSCPSRXE",123,0)
873
"RTN","MSCPSRXE",124,0)
875
"RTN","MSCPSRXE",125,0)
876
;D:(IVTYPE'="F") RXR^MSCPSRX1
877
"RTN","MSCPSRXE",126,0)
879
"RTN","MSCPSRXE",127,0)
881
"RTN","MSCPSRXE",128,0)
883
"RTN","MSCPSRXE",129,0)
885
"RTN","MSCPSRXE",130,0)
886
PTR(NAME) ; -- Returns ptr value of prompt in Dialog file
887
"RTN","MSCPSRXE",131,0)
888
Q $O(^ORD(101.41,"AB",$E("OR GTX "_NAME,1,63),0))
889
"RTN","MSCPSRXE",132,0)
894
PSJHLU ;BIR/RLW-UTILITIES USED IN BUILDING HL7 SEGMENTS ;16-Sep-2010 19:52;MH
896
;;5.0; INPATIENT MEDICATIONS ;**1,56,72,102,1504,1505**;16 DEC 97
900
; Reference to ^PS(52.6 is supported by DBIA# 1231.
902
; Reference to ^PS(52.7 is supported by DBIA# 2173.
906
INIT ; set up HL7 application variables
908
S PSJHLSDT="PS",PSJHINST=$P($$SITE^VASITE(),"^")
910
S PSJCLEAR="K FIELD F J=0:1:LIMIT S FIELD(J)="""""
920
N SUBSEG,SEGLENGT S SUBSEG=0,SEGMENT="" F J=0:1:LIMIT D
922
.I SEGMENT']"" S SEGMENT=FIELD(J) Q
924
.S SEGMENT=SEGMENT_"|"_FIELD(J)
926
F S SEGLENGT=$L(SEGMENT) D Q:$L(SEGMENT)'>246
928
.I SEGLENGT'>246 S SEGMENT(SUBSEG)=SEGMENT
930
.I SEGLENGT>245 S SEGMENT(SUBSEG)=$E(SEGMENT,1,245),SUBSEG=SUBSEG+1 D
932
..S SEGMENT=$E(SEGMENT,246,SEGLENGT),SEGMENT(SUBSEG)=$E(SEGMENT,1,245)
934
SET S PSJI=PSJI+1,^TMP("PSJHLS",$J,PSJHLSDT,PSJI)=SEGMENT(0)
936
F J=1:1 Q:'$D(SEGMENT(J)) S ^TMP("PSJHLS",$J,PSJHLSDT,PSJI,J)=SEGMENT(J)
942
CALL(HLEVN) ; call DHCP HL7 package -or- protocol, to pass Orders
944
; HLEVN = number of segments in message
948
I $G(PSJBCBU)=1 M PSJNAME=^TMP("PSJHLS",$J,"PS") Q
952
S PSJMSG="^TMP(""PSJHLS"",$J,""PS"")"
954
D MSG^XQOR("PS EVSEND OR",.PSJMSG)
956
D EN^MSCPSRXE(MSCOC,RXORDER,PSJORDER)
958
K CLERK,DDIEN,DDNUM,DOSEFORM,DOSEOR,FIELD,IVTYPE,LIMIT,NAME,NDNODE,NODE1,NODE2,PRODNAME,PROVIDER,PSGS0Y,PSJHINST,PSJHLSDT,PSJI,PSJORDER,PSOC,PSREASON,ROOMBED,SPDIEN,SEGMENT
964
IVTYPE(PSJORDER) ; check whether a back-door order is Inpatient IV or IV fluid
966
I RXORDER["V",$P($G(@(PSJORDER_"0)")),"^",4)'="A" Q "I"
968
I RXORDER["P" I $P($G(@(PSJORDER_"0)")),"^",4)'="F" S IVTYPE="" Q IVTYPE
970
N SUB,AD,SOL,IVTYPE,NODE1 S SUB=0,IVTYPE="F"
972
;naked reference on line below refers to the full indirect reference of PSJORDER_...
974
F TYPE="AD","SOL" S SUB=0 F S SUB=$O(@(PSJORDER_""""_TYPE_""""_","_SUB_")")) Q:(SUB="")!(IVTYPE="I") S NODE1=$G(^(SUB,0)) Q:NODE1="" D Q:IVTYPE="I"
978
..I '$P($G(^PS(52.6,$P(NODE1,"^"),0)),"^",13) S IVTYPE="I"
982
..S:'$P($G(^PS(52.7,$P(NODE1,"^"),0)),"^",13) IVTYPE="I"
986
ENI ;Calculate Frequency for IV orders
990
K:$L(X)<1!($L(X)>30)!(X["""")!($A(X)=45) X I '$D(X) Q
992
I X?.E1L.E S INFUSE=$$ENLU^PSGMI(X) Q:(INFUSE="TITRATE")!(INFUSE="BOLUS")
994
Q:(X="TITRATE")!(X="BOLUS")
996
I X["=" D Q ; NOIS LOU-0501-42191
998
.N X2,X1 S X1=$P(X,"="),X2=$P(X,"=",2)
1000
.I X1["ML/HR",(+X1=$P(X1,"ML/HR"))!(+X1=$P(X1," ML/HR")) D
1001
"RTN","PSJHLU",55,0)
1002
..S X1=$TR(X1,"ML/HR","ml/hr")
1003
"RTN","PSJHLU",56,0)
1004
.I X2["ML/HR",(+X2=$P(X2,"ML/HR"))!(+X2=$P(X2," ML/HR")) D
1005
"RTN","PSJHLU",57,0)
1006
..S X2=$TR(X2,"ML/HR","ml/hr")
1007
"RTN","PSJHLU",58,0)
1008
.I X1[" ml/hr",(+X1=$P(X1," ml/hr")) D
1009
"RTN","PSJHLU",59,0)
1010
..S X1=$P(X1," ml/hr")_$P(X1," ml/hr",2,9999)
1011
"RTN","PSJHLU",60,0)
1012
.I X2[" ml/hr",(+X2=$P(X2," ml/hr")) D
1013
"RTN","PSJHLU",61,0)
1014
..S X2=$P(X2," ml/hr")_$P(X2," ml/hr",2,9999)
1015
"RTN","PSJHLU",62,0)
1016
.I X1["ml/hr",(+X1=$P(X1,"ml/hr")) D
1017
"RTN","PSJHLU",63,0)
1018
..S X1=$P(X1,"ml/hr")_$P(X1,"ml/hr",2,9999)
1019
"RTN","PSJHLU",64,0)
1020
.I X2["ml/hr",(+X2=$P(X2,"ml/hr")) D
1021
"RTN","PSJHLU",65,0)
1022
..S X2=$P(X2,"ml/hr")_$P(X2,"ml/hr",2,9999)
1023
"RTN","PSJHLU",66,0)
1025
"RTN","PSJHLU",67,0)
1026
..I ($P(X2,"@",2,999)'=+$P(X2,"@",2,999)!(+$P(X2,"@",2,999)<0)) K X Q
1027
"RTN","PSJHLU",68,0)
1028
.I X1=+X1 S X1=X1_" ml/hr"
1029
"RTN","PSJHLU",69,0)
1030
.I X2=+X2 S X2=X2_" ml/hr"
1031
"RTN","PSJHLU",70,0)
1032
.S:$P(X2,"@")=+X2 $P(X2,"@")=$P(X2,"@")_" ml/hr"
1033
"RTN","PSJHLU",71,0)
1035
"RTN","PSJHLU",72,0)
1036
I X'=+X,($P(X,"@",2,999)'=+$P(X,"@",2,999)!(+$P(X,"@",2,999)<0)),($P(X," ml/hr")'=+$P(X," ml/hr")!(+$P(X," ml/hr")<0)) K X Q
1037
"RTN","PSJHLU",73,0)
1038
I X=+X S X=X_" ml/hr" D SPSOL S FREQ=$S('X:0,1:SPSOL\X*60+(SPSOL#X/X*60+.5)\1) K SPSOL Q
1039
"RTN","PSJHLU",74,0)
1040
I X[" ml/hr" D SPSOL S FREQ=$S('X:0,1:SPSOL\X*60+(SPSOL#X/X*60+.5)\1) K SPSOL Q
1041
"RTN","PSJHLU",75,0)
1042
S SPSOL=$P(X,"@",2) S:$P(X,"@")=+X $P(X,"@")=$P(X,"@")_" ml/hr" S FREQ=$S('SPSOL:0,1:1440/SPSOL\1) K SPSOL
1043
"RTN","PSJHLU",76,0)
1045
"RTN","PSJHLU",77,0)
1046
SPSOL S SPSOL=+TVOLUME Q