| 1 | ORWDXR01 ;SLC/JDL - Utilities for Order Actions;; 6/30/03 11:48
|
---|
| 2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**187,190,195,215**;Dec 17, 1997
|
---|
| 3 | CANCHG(ORY,ORIFN,TXTOD) ;
|
---|
| 4 | ;If it's an pending or unsigned unreleased renewed order, can edit=True
|
---|
| 5 | S ORY=0
|
---|
| 6 | Q:'$D(^OR(100,+ORIFN,0))
|
---|
| 7 | I TXTOD D TXTCAN(.ORY) Q
|
---|
| 8 | N OUTGRP,URELSTS,USIGSTS,RNTYPE
|
---|
| 9 | N ODGRP,ODREL,ODSIG,ODTYPE,LSTACT
|
---|
| 10 | S OUTGRP=$O(^ORD(100.98,"B","O RX",0))
|
---|
| 11 | S URELSTS=$O(^ORD(100.01,"B","UNRELEASED",0))
|
---|
| 12 | S PDSTS=$O(^ORD(100.01,"B","PENDING",0))
|
---|
| 13 | S USIGSTS=2 ; unsigned order
|
---|
| 14 | S RNTYPE=2 ; renew action
|
---|
| 15 | ;Data from the order entry
|
---|
| 16 | S LSTACT=$P($G(^OR(100,+ORIFN,3)),U,7)
|
---|
| 17 | S ODGRP=$P($G(^OR(100,+ORIFN,0)),U,11)
|
---|
| 18 | S ODREL=$P($G(^OR(100,+ORIFN,3)),U,3)
|
---|
| 19 | S ODSIG=$P($G(^OR(100,+ORIFN,8,LSTACT,0)),U,4)
|
---|
| 20 | S ODTYPE=$P($G(^OR(100,+ORIFN,3)),U,11)
|
---|
| 21 | I (ODGRP=OUTGRP),(ODREL=URELSTS),(ODSIG=USIGSTS),(ODTYPE=RNTYPE) S ORY=1
|
---|
| 22 | Q
|
---|
| 23 | ;
|
---|
| 24 | TXTCAN(ORY) ;
|
---|
| 25 | ;if it's an unsigned unreleased renewed text order, can change=true
|
---|
| 26 | N URELSTS,USIGSTS,RNTYPE
|
---|
| 27 | N ODREL,ODSIG,ODTYPE,LSTACT
|
---|
| 28 | S URELSTS=$O(^ORD(100.01,"B","UNRELEASED",0))
|
---|
| 29 | S USIGSTS=2 ; unsigned order
|
---|
| 30 | S RNTYPE=2 ; renew action
|
---|
| 31 | ;Data from the order entry
|
---|
| 32 | S LSTACT=$P($G(^OR(100,+ORIFN,3)),U,7)
|
---|
| 33 | S ODREL=$P($G(^OR(100,+ORIFN,8,LSTACT,0)),U,15)
|
---|
| 34 | S ODSIG=$P($G(^OR(100,+ORIFN,8,LSTACT,0)),U,4)
|
---|
| 35 | S ODTYPE=$P($G(^OR(100,+ORIFN,3)),U,11)
|
---|
| 36 | I (ODREL=URELSTS),(ODSIG=USIGSTS),(ODTYPE=RNTYPE) S ORY=1
|
---|
| 37 | Q
|
---|
| 38 | ;
|
---|
| 39 | SAVCHG(ORY,ORID,PARM1,PARM2,TXTOD) ;
|
---|
| 40 | ;save new changes on the unreleased unsigned renewed order
|
---|
| 41 | Q:'$D(^OR(100,+ORID,0))
|
---|
| 42 | ;Update new start and stop date the text order
|
---|
| 43 | I TXTOD D TXTSAV(.ORY,ORID,PARM1,PARM2) Q
|
---|
| 44 | ;Update new refills and pickup for the med order
|
---|
| 45 | N REFID,PICKID,ACT,IX,TXT,REFPOS,NDQUIT
|
---|
| 46 | S (REFID,PICKID,ACT,REFPOS,NDQUIT)=0,ORY=""
|
---|
| 47 | S ACT=+$P(ORID,";",2) S:ACT'>0 ACT=1
|
---|
| 48 | S REFID=$O(^OR(100,+ORID,4.5,"ID","REFILLS",0))
|
---|
| 49 | S PICKID=$O(^OR(100,+ORID,4.5,"ID","PICKUP",0))
|
---|
| 50 | S:$D(^OR(100,+ORID,4.5,REFID,1)) ^(1)=PARM1
|
---|
| 51 | S:$D(^OR(100,+ORID,4.5,PICKID,1)) ^(1)=PARM2
|
---|
| 52 | S IX=0 F S IX=$O(^OR(100,+ORID,8,ACT,.1,IX)) Q:('IX)!(NDQUIT) D
|
---|
| 53 | . S TXT=$G(^OR(100,+ORID,8,ACT,.1,IX,0))
|
---|
| 54 | . I ($$UP^XLFSTR(TXT)["QUANTITY:"),($$UP^XLFSTR(TXT)["REFILLS:") D
|
---|
| 55 | . . S REFPOS=$F($$UP^XLFSTR(TXT),"REFILLS")-$L("REFILLS")-1
|
---|
| 56 | . . S TXT=$E(TXT,1,REFPOS)_"Refills: "_PARM1
|
---|
| 57 | . . S ^OR(100,+ORID,8,ACT,.1,IX,0)=TXT,NDQUIT=1 Q
|
---|
| 58 | D GETBYIFN^ORWORR(.ORY,+ORID)
|
---|
| 59 | Q
|
---|
| 60 | ;
|
---|
| 61 | TXTSAV(ORY,ORID,PARM1,PARM2) ;
|
---|
| 62 | ; Update new start and stop date for the unsigned unreleased
|
---|
| 63 | ; renewed text order
|
---|
| 64 | N STRTID,STOPID
|
---|
| 65 | S STRTID=$O(^OR(100,+ORID,4.5,"ID","START",0))
|
---|
| 66 | S STOPID=$O(^OR(100,+ORID,4.5,"ID","STOP",0))
|
---|
| 67 | S:$D(^OR(100,+ORID,4.5,STRTID,1)) ^(1)=PARM1
|
---|
| 68 | S:$D(^OR(100,+ORID,4.5,STOPID,1)) ^(1)=PARM2
|
---|
| 69 | D GETBYIFN^ORWORR(.ORY,+ORID)
|
---|
| 70 | Q
|
---|
| 71 | ;
|
---|
| 72 | ISSPLY(ORY,DLGID,QODLG) ;
|
---|
| 73 | ; ORY=1: is "PSO SUPPLY" dialog
|
---|
| 74 | S ORY=""
|
---|
| 75 | Q:'$D(^ORD(101.41,DLGID,0))
|
---|
| 76 | I 'QODLG,($P(^ORD(101.41,DLGID,0),U)="PSO SUPPLY") S ORY=1
|
---|
| 77 | I QODLG D
|
---|
| 78 | . N SPLYDG S SPLYDG=$O(^ORD(100.98,"B","SPLY",0))
|
---|
| 79 | . I $P(^ORD(101.41,DLGID,0),U,5)=SPLYDG S ORY=1
|
---|
| 80 | Q
|
---|
| 81 | ;
|
---|
| 82 | OXDATA(ORY,ORIEN) ; Return orderable item data for order check usage
|
---|
| 83 | Q:'$D(^OR(100,+ORIEN,0))
|
---|
| 84 | N DRUGID,OIID,IDX,IDY,DISPIN,DISPOUT,DISPID
|
---|
| 85 | S (DRUGID,OIID,IDX,IDY,DISPIN,DISPOUT)=0
|
---|
| 86 | S DISPID=""
|
---|
| 87 | S DISPIN=$O(^ORD(100.98,"B","UD RX",0))
|
---|
| 88 | S DISPOUT=$O(^ORD(100.98,"B","O RX",0))
|
---|
| 89 | N DISPCM S DISPCM=$O(^ORD(100.98,"B","CLINIC ORDERS",0))
|
---|
| 90 | S DRUGID=$O(^OR(100,+ORIEN,4.5,"ID","DRUG",0))
|
---|
| 91 | S OIID=$O(^OR(100,+ORIEN,4.5,"ID","ORDERABLE",0))
|
---|
| 92 | S DISPID=$P(^OR(100,+ORIEN,0),U,11)
|
---|
| 93 | I DISPID=DISPIN S DISPID="PSI"
|
---|
| 94 | I DISPID=DISPOUT S DISPID="PSO"
|
---|
| 95 | I DISPID=DISPCM S DISPID="PSI"
|
---|
| 96 | I (DISPID'="PSI"),(DISPID'="PSO") Q
|
---|
| 97 | Q:'DRUGID
|
---|
| 98 | Q:'OIID
|
---|
| 99 | S IDX=$O(^OR(100,+ORIEN,4.5,DRUGID,0))
|
---|
| 100 | S IDY=$O(^OR(100,+ORIEN,4.5,OIID,0))
|
---|
| 101 | I IDX,IDY,'+DISPID S ORY=$G(^OR(100,+ORIEN,4.5,OIID,IDY))_U_DISPID_U_$G(^OR(100,+ORIEN,4.5,DRUGID,IDX))
|
---|
| 102 | Q
|
---|