[623] | 1 | ORWDXM2 ; SLC/KCM - Quick Orders ;11/25/02 09:49
|
---|
| 2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10,85,109,116,132,158,187,195,215**;Dec 17, 1997
|
---|
| 3 | ;
|
---|
| 4 | CLRRCL(OK) ; clear ORECALL
|
---|
| 5 | S OK=1
|
---|
| 6 | K ^TMP("ORECALL",$J),^TMP("ORWDXMQ",$J)
|
---|
| 7 | Q
|
---|
| 8 | VERTXT ; set verify text for order
|
---|
| 9 | N SEQ,DA,X,PROMPT,MULT,CHILD,INST,TITLE,ILST,SPACES
|
---|
| 10 | S ILST=0,$P(SPACES," ",31)=""
|
---|
| 11 | S SEQ=0 F S SEQ=$O(^ORD(101.41,+ORDIALOG,10,"B",SEQ)) Q:SEQ'>0 D
|
---|
| 12 | . S DA=0 F S DA=$O(^ORD(101.41,+ORDIALOG,10,"B",SEQ,DA)) Q:'DA D
|
---|
| 13 | . . S X0=$G(^ORD(101.41,+ORDIALOG,10,DA,0))
|
---|
| 14 | . . Q:$P(X0,U,9)["*" ; hidden prompt
|
---|
| 15 | . . S PROMPT=$P(X0,U,2),MULT=$P(X0,U,7),CHILD=$P(X0,U,11) Q:CHILD
|
---|
| 16 | . . Q:'PROMPT S INST=$O(ORDIALOG(PROMPT,0)) Q:'INST ; no values
|
---|
| 17 | . . S TITLE=$S($L($G(ORDIALOG(PROMPT,"TTL"))):ORDIALOG(PROMPT,"TTL"),1:ORDIALOG(PROMPT,"A"))
|
---|
| 18 | . . I $E(ORDIALOG(PROMPT,0))="W" D
|
---|
| 19 | . . . N IWP,WP,CNT
|
---|
| 20 | . . . S IWP=0,CNT=0
|
---|
| 21 | . . . F S IWP=$O(^TMP("ORWORD",$J,PROMPT,INST,IWP)) Q:'IWP D
|
---|
| 22 | . . . . S CNT=CNT+1,WP(CNT)=^TMP("ORWORD",$J,PROMPT,INST,IWP,0)
|
---|
| 23 | . . . I CNT=1 S ILST=ILST+1,LST(ILST)=$J(TITLE,30)_WP(1)
|
---|
| 24 | . . . I CNT>1 D
|
---|
| 25 | . . . . S ILST=ILST+1,LST(ILST)=TITLE,IWP=0
|
---|
| 26 | . . . . F S IWP=$O(WP(IWP)) Q:'IWP S ILST=ILST+1,LST(ILST)=WP(IWP)
|
---|
| 27 | . . E D
|
---|
| 28 | . . . S ILST=ILST+1,LST(ILST)=$J(TITLE,30)
|
---|
| 29 | . . . S LST(ILST)=LST(ILST)_$$ITEM^ORCDLG(PROMPT,INST)
|
---|
| 30 | . . Q:'MULT Q:'$O(ORDIALOG(PROMPT,INST)) ; done
|
---|
| 31 | . . F S INST=$O(ORDIALOG(PROMPT,INST)) Q:INST'>0 S ILST=ILST+1,LST(ILST)=SPACES_$$ITEM^ORCDLG(PROMPT,INST)
|
---|
| 32 | D DISPLAY^ORWDBA3 ;for display of Billing Aware data from orig order
|
---|
| 33 | Q
|
---|
| 34 | RA ; setup environment for radiology
|
---|
| 35 | ; -- get imaging types based on display group of quick order and
|
---|
| 36 | ; setup list of imaging locations based on imaging type
|
---|
| 37 | N ORY,ITYPE,IFN,CNT,ORIMLOC,PROMPT
|
---|
| 38 | S ORDIV=$$DIV^ORCDRA1,ITYPE=$P($G(^ORD(100.98,+ORDG,0)),U,3)
|
---|
| 39 | S ORIMTYPE=$O(^RA(79.2,"C",ITYPE,0))
|
---|
| 40 | D EN4^RAO7PC1(ITYPE,"ORY")
|
---|
| 41 | S (IFN,CNT)=0 F S IFN=$O(ORY(IFN)) Q:IFN'>0 D
|
---|
| 42 | . S CNT=CNT+1,ORIMLOC(CNT)=ORY(IFN),ORIMLOC("B",$P(ORY(IFN),U,2))=IFN
|
---|
| 43 | I '$$GET^XPAR("ALL","RA SUBMIT PROMPT",1,"Q"),CNT>1 K ORIMLOC
|
---|
| 44 | E S ORIMLOC=CNT_"^1"
|
---|
| 45 | S PROMPT=$O(^ORD(101.41,"AB","OR GTX IMAGING LOCATION",0))
|
---|
| 46 | I $G(ORIMLOC) M ORDIALOG(PROMPT,"LIST")=ORIMLOC
|
---|
| 47 | Q
|
---|
| 48 | LR ; setup environment for lab
|
---|
| 49 | ; -- setup ORTIME, ORIMTIME & ORTEST arrays
|
---|
| 50 | ; setup ORMAX, ORDG, & ORCOLLCT variables
|
---|
| 51 | N PROMPT,INST,EDITONLY
|
---|
| 52 | D GETIMES^ORCDLR1 ; sets up ORTIME and ORIMTIME arrays
|
---|
| 53 | S ORMAX=$$GET^XPAR("ALL^LOC.`"_+ORL,"LR MAX DAYS CONTINUOUS",1,"Q")
|
---|
| 54 | S PROMPT=$O(^ORD(101.41,"AB","OR GTX ORDERABLE ITEM",0)),INST=1
|
---|
| 55 | D LRTEST ; sets up ORTEST array and ORDG
|
---|
| 56 | S PROMPT=$O(^ORD(101.41,"AB","OR GTX COLLECTION TYPE",0))
|
---|
| 57 | I $D(ORDIALOG(PROMPT,1)) S ORCOLLCT=ORDIALOG(PROMPT,1) I 1
|
---|
| 58 | E S EDITONLY=0,ORCOLLCT=$$COLLTYPE^ORCDLR1
|
---|
| 59 | I ORCOLLCT="I" D
|
---|
| 60 | . S PROMPT=$O(^ORD(101.41,"AB","OR GTX START DATE/TIME",0))
|
---|
| 61 | . D LRICTMOK
|
---|
| 62 | S PROMPT=$O(^ORD(101.41,"AB","OR GTX ADMIN SCHEDULE",0))
|
---|
| 63 | I $D(ORDIALOG(PROMPT,1)) S ORSCH=ORDIALOG(PROMPT,1)
|
---|
| 64 | Q
|
---|
| 65 | LRTEST ; -- Setup ORTEST() array of ordering parameters (copied from ORCDLR)
|
---|
| 66 | N OI,TST,DG
|
---|
| 67 | S OI=+$G(ORDIALOG(PROMPT,INST)) Q:'OI
|
---|
| 68 | I '$D(ORTEST) S TST=+$P($G(^ORD(101.43,OI,0)),U,2) D TEST^LR7OR3(TST,.ORTEST) S ORTEST=TST
|
---|
| 69 | S DG=$P($G(^ORD(101.43,+OI,"LR")),U,6) S:'$L(DG) DG="LAB"
|
---|
| 70 | S DG=$O(^ORD(100.98,"B",DG,0)) S:DG ORDG=DG
|
---|
| 71 | Q
|
---|
| 72 | LRRQCM() ; return true if lab test has required comments
|
---|
| 73 | I $O(^TMP("ORWORD",$J,PROMPT,INST,0)) Q 1 ; edit via WP
|
---|
| 74 | N LRTEST,LRSAMP,LRSPEC,LRTSTN,LRTCOM,LRCCOM,DA,CNT,I,REQDCOMM,OI,TST
|
---|
| 75 | S LRSAMP=$$VAL^ORCD("COLLECTION SAMPLE"),LRSPEC=$$VAL^ORCD("SPECIMEN")
|
---|
| 76 | S OI=+$G(ORDIALOG(PROMPT,INST)) Q:'OI 0
|
---|
| 77 | I '$D(ORTEST) S TST=+$P($G(^ORD(101.43,OI,0)),U,2) D TEST^LR7OR3(TST,.ORTEST) S ORTEST=TST
|
---|
| 78 | S LRTSTN=1,LRTEST(1)=+ORTEST,DA=$O(^LAB(60,LRTEST(1),3,"B",+LRSAMP,0))
|
---|
| 79 | S REQDCOMM=$P($G(^LAB(60,LRTEST(1),3,+DA,0)),U,6)
|
---|
| 80 | S:'REQDCOMM REQDCOMM=+$P($G(^LAB(60,LRTEST(1),0)),U,19)
|
---|
| 81 | Q REQDCOMM
|
---|
| 82 | LRASMP() ; return true to ask collection sample (from ASKSAMP^ORCDLR)
|
---|
| 83 | N DEFSAMP,SAMP0
|
---|
| 84 | S DEFSAMP=$G(ORDIALOG(PROMPT,INST)),SAMP0=$G(^LAB(62,+DEFSAMP,0))
|
---|
| 85 | I (ORCOLLCT="LC")!(ORCOLLCT="I"),$G(ORTEST("Lab CollSamp")) Q 0
|
---|
| 86 | I $G(ORTEST("Unique CollSamp")),DEFSAMP Q 0 ; unique -> don't ask
|
---|
| 87 | I 'DEFSAMP!('FIRST) Q 1 ; no default or edit -> ask
|
---|
| 88 | I $G(ORDIALOG(PROMPT,"LIST"))="1^1" Q 0 ; only one choice
|
---|
| 89 | Q 1
|
---|
| 90 | LRICTMOK ;
|
---|
| 91 | Q:'$D(ORDIALOG(PROMPT,1))
|
---|
| 92 | N ORY
|
---|
| 93 | D VALDT^ORWU(.ORY,ORDIALOG(PROMPT,1))
|
---|
| 94 | I +$$VALID^LR7OV4(DUZ(2),ORY)=0 S ORDIALOG(PROMPT,1)=""
|
---|
| 95 | Q
|
---|
| 96 | DO ; setup environment for diet order
|
---|
| 97 | ; partially copied from EN^ORCDFH
|
---|
| 98 | I ORCAT'="I" D Q
|
---|
| 99 | . S ORQUIT=1
|
---|
| 100 | . S LST(0)="8^0"
|
---|
| 101 | . S LST(.5)="This type of diet may be entered for inpatients only."
|
---|
| 102 | D EN^FHWOR8(+ORVP,.ORPARAM) ; set FH ordering parameters
|
---|
| 103 | S:'$L($G(ORPARAM(3))) ORPARAM(3)="T" ; for now
|
---|
| 104 | N PROMPT,OI ; set NPO flag if NPO diet
|
---|
| 105 | S PROMPT=$O(^ORD(101.41,"AB","OR GTX ORDERABLE ITEM",0))
|
---|
| 106 | S OI=+$G(ORDIALOG(PROMPT,1))
|
---|
| 107 | S ORNPO=($P($G(^ORD(101.43,OI,0)),U)="NPO")
|
---|
| 108 | Q
|
---|
| 109 | EL ; setup environment for early/late tray
|
---|
| 110 | D EN^FHWOR8(+ORVP,.ORPARAM) ; set FH ordering parameters
|
---|
| 111 | S:'$L($G(ORPARAM(3))) ORPARAM(3)="T" ; for now
|
---|
| 112 | D EN2^ORCDFH ; setup ORTIME array
|
---|
| 113 | N PROMPT ; set ORMEAL,ORTRAY
|
---|
| 114 | S PROMPT=$O(^ORD(101.41,"AB","OR GTX MEAL",0))
|
---|
| 115 | I $D(ORDIALOG(PROMPT,1)) S ORMEAL=ORDIALOG(PROMPT,1)
|
---|
| 116 | S PROMPT=$O(^ORD(101.41,"AB","OR GTX ORDERABLE ITEM",0))
|
---|
| 117 | I $D(ORDIALOG(PROMPT,1)) S ORTRAY=ORDIALOG(PROMPT,1)
|
---|
| 118 | Q
|
---|
| 119 | UD ; setup environment for unit dose med
|
---|
| 120 | I $G(ORWP94) G PS^ORWDPS3 ; if patch 94 installed
|
---|
| 121 | ;
|
---|
| 122 | D AUTHMED Q:$G(ORQUIT) ; checks authorized to write meds
|
---|
| 123 | N PROMPT,OI
|
---|
| 124 | S PROMPT=$O(^ORD(101.41,"AB","OR GTX ORDERABLE ITEM",0))
|
---|
| 125 | I $D(ORDIALOG(PROMPT,1)) S OI=ORDIALOG(PROMPT,1) D MEDACTV(1) Q:$G(ORQUIT)
|
---|
| 126 | D INSTR^ORCDPS(OI) ; sets up instructions, routes, etc.
|
---|
| 127 | D CHOICES^ORCDPS("U") ; gets list of dispense drugs
|
---|
| 128 | Q
|
---|
| 129 | IV ; setup environment for IV fluid
|
---|
| 130 | D AUTHMED Q:$G(ORQUIT) ; checks authorized to write meds
|
---|
| 131 | ; sets up list of volumes if only one solution
|
---|
| 132 | ; otherwise, let the dialog go interactive
|
---|
| 133 | N PROMPT,INST,CNT,OI
|
---|
| 134 | S PROMPT=$O(^ORD(101.41,"AB","OR GTX ORDERABLE ITEM",0))
|
---|
| 135 | S (CNT,INST)=0
|
---|
| 136 | F S INST=$O(ORDIALOG(PROMPT,INST)) Q:'INST D Q:$G(ORQUIT)
|
---|
| 137 | . S CNT=CNT+1
|
---|
| 138 | . S OI=ORDIALOG(PROMPT,INST) D MEDACTV(3) ; check active solutions
|
---|
| 139 | I CNT=1 S INST=1 D VOLUME^ORCDPSIV
|
---|
| 140 | S PROMPT=$O(^ORD(101.41,"AB","OR GTX ADDITIVE",0))
|
---|
| 141 | S INST=0
|
---|
| 142 | F S INST=$O(ORDIALOG(PROMPT,INST)) Q:'INST D Q:$G(ORQUIT)
|
---|
| 143 | . S OI=ORDIALOG(PROMPT,INST) D MEDACTV(4) ; check active additives
|
---|
| 144 | Q
|
---|
| 145 | OP ; setup environment for outpatient pharmacy
|
---|
| 146 | I $G(ORWP94) G PS^ORWDPS3 ; if patch 94 installed
|
---|
| 147 | ;
|
---|
| 148 | D AUTHMED Q:$G(ORQUIT) ; checks authorized to write meds
|
---|
| 149 | N PROMPT,INST,CNT,OI
|
---|
| 150 | S PROMPT=$O(^ORD(101.41,"AB","OR GTX ORDERABLE ITEM",0)),OI=0
|
---|
| 151 | I $D(ORDIALOG(PROMPT,1)) S OI=$G(ORDIALOG(PROMPT,1)) D MEDACTV(2) Q:$G(ORQUIT)
|
---|
| 152 | D:+OI INSTR^ORCDPS(OI) ; sets up instructions, routes, etc.
|
---|
| 153 | D CHOICES^ORCDPS("O") ; gets list of dispense drugs
|
---|
| 154 | ; get defaults for drug, refills if only one dispense drug
|
---|
| 155 | S PROMPT=$O(^ORD(101.41,"AB","OR GTX DISPENSE DRUG",0))
|
---|
| 156 | S (CNT,INST)=0
|
---|
| 157 | F S INST=$O(ORDIALOG(PROMPT,INST)) Q:'INST S CNT=CNT+1
|
---|
| 158 | I CNT=1 D
|
---|
| 159 | . S ORDRUG=+$G(ORDIALOG(PROMPT,1)),ORCOMPLX=0
|
---|
| 160 | . S OREFILLS=$P($G(ORDIALOG(PROMPT,"LIST","D",ORDRUG)),U,3)
|
---|
| 161 | . S:'$L(OREFILLS) OREFILLS=11
|
---|
| 162 | E S ORCOMPLX=1,OREFILLS=11 ; force interactive on complex order
|
---|
| 163 | S ORCOPAY=1 ; ask SC if can't determine copay
|
---|
| 164 | I $G(ORDRUG),$L($T(ASKSC^ORCDPS)) S ORCOPAY=$$ASKSC^ORCDPS
|
---|
| 165 | Q
|
---|
| 166 | AUTHMED ; sets ORQUIT if not authorized to write meds
|
---|
| 167 | N NOAUTH,NAME
|
---|
| 168 | D AUTH^ORWDPS32(.NOAUTH,ORNP)
|
---|
| 169 | I +NOAUTH D
|
---|
| 170 | . S ORQUIT=1
|
---|
| 171 | . S LST(0)="8^0"
|
---|
| 172 | . S NAME=$P($G(^VA(200,+ORNP,20)),U,2)
|
---|
| 173 | . I '$L(NAME) S NAME=$P($G(^VA(200,+ORNP,0)),U,1)
|
---|
| 174 | . S LST(.5)=NAME_" is not authorized to write med orders."
|
---|
| 175 | Q
|
---|
| 176 | MEDACTV(USAGE) ; sets ORQUIT if the orderable item is not active for a med
|
---|
| 177 | Q:'$G(OI) S USAGE=+$G(USAGE)
|
---|
| 178 | I $G(^ORD(101.43,OI,.1)),^(.1)'>$$NOW^XLFDT D Q
|
---|
| 179 | . S ORQUIT=1,LST(0)="8^0"
|
---|
| 180 | . S LST(.5)=$P($G(^ORD(101.43,OI,0)),U)_" has been inactivated and may not be ordered anymore."
|
---|
| 181 | I USAGE,'$P($G(^ORD(101.43,OI,"PS")),U,USAGE) D Q
|
---|
| 182 | . S ORQUIT=1,LST(0)="8^0"
|
---|
| 183 | . S LST(.5)=$P($G(^ORD(101.43,OI,0)),U)_" may not be ordered as an "_$S(USAGE=1:"inpatient medication",USAGE=2:"outpatient medication",USAGE=3:"IV solution",1:"IV additive")_" anymore."
|
---|
| 184 | Q
|
---|
| 185 | SCHEDULD() ; Is patient scheduled for PREOP (Imaging)
|
---|
| 186 | I $G(ORDIALOG(PROMPT,1)) Q 1 ; don't ask - already have date
|
---|
| 187 | E Q 0
|
---|
| 188 | Q
|
---|