| 1 | ORWDPS3 ; SLC/KCM/JLI - Order Dialogs, Menus;01/18/2006
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**85,94,116,132,187,195,215**;Dec 17, 1997
 | 
|---|
| 3 | MEDXFER ; -- setup ORDIALOG for a med that is transferred (from SETUP^ORWDXM4)
 | 
|---|
| 4 |  N IVDIALOG,OI K ^TMP("PS",$J)
 | 
|---|
| 5 |  S IVDIALOG=$O(^ORD(101.41,"AB","PSJI OR PAT FLUID OE",0))
 | 
|---|
| 6 |  S ORDIALOG=$O(^ORD(101.41,"AB","PS MEDS",0))
 | 
|---|
| 7 |  I +$P($G(^OR(100,+ORIT,0)),U,5)=IVDIALOG S ORDIALOG=IVDIALOG
 | 
|---|
| 8 |  S ORDG=+$P(^ORD(101.41,ORDIALOG,0),U,5)
 | 
|---|
| 9 |  D GETDLG^ORCD(ORDIALOG)
 | 
|---|
| 10 |  D GETORDER^ORCD("^OR(100,"_+ORIT_",4.5)")
 | 
|---|
| 11 |  ;I ORDIALOG=IVDIALOG Q
 | 
|---|
| 12 |  S OI=$$VAL^ORCD("MEDICATION")
 | 
|---|
| 13 |  I ORDIALOG'=IVDIALOG,'$$MEDOK(OI,ORCAT) D SETERR(ORIT,"This may not be ordered as an "_$S(ORCAT="I":"in",1:"out")_"patient drug.") Q
 | 
|---|
| 14 |  I +$G(OI)>0,$G(^ORD(101.43,OI,.1)),(^(.1)<$$NOW^XLFDT) D SETERR(ORIT,"This may no longer be ordered.") Q
 | 
|---|
| 15 |  I (ORDIALOG'=IVDIALOG),(ORCAT="I") D OUT^ORCMED
 | 
|---|
| 16 |  I (ORDIALOG'=IVDIALOG),(ORCAT="O") D IN^ORCMED
 | 
|---|
| 17 |  S ORWPSWRG="" ; force interactive dialog for transfers
 | 
|---|
| 18 |  Q
 | 
|---|
| 19 | MEDOK(OI,CAT)   ; return 1 if med may be ordered for this patient category
 | 
|---|
| 20 |  N P S P=$S(CAT="I":1,1:2)
 | 
|---|
| 21 |  I ORIMO S P=1
 | 
|---|
| 22 |  N THEGRP,INPTGRP
 | 
|---|
| 23 |  S THEGRP=0
 | 
|---|
| 24 |  I $D(ORIT),+ORIT S THEGRP=$P($G(^OR(100,+ORIT,0)),U,11)
 | 
|---|
| 25 |  S INPTGRP=$O(^ORD(100.98,"B","UD RX",0))
 | 
|---|
| 26 |  I P=2,(INPTGRP=THEGRP),($P($G(^ORD(101.43,+OI,"PS")),U,1)=2) Q 2
 | 
|---|
| 27 |  E  Q $P($G(^ORD(101.43,+OI,"PS")),U,P)
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 | SETERR(ID,X)       ; sets LST to rejection with error message
 | 
|---|
| 30 |  D GETTXT^ORWORR(.LST,ID)
 | 
|---|
| 31 |  S LST(0)="8^0",LST(.5)=X,LST(.6)=""
 | 
|---|
| 32 |  Q
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 | PS ; setup environment for medications
 | 
|---|
| 35 |  D AUTHMED Q:$G(ORQUIT)  ; checks authorized to write meds
 | 
|---|
| 36 |  K ^TMP("PSJINS",$J),^TMP("PSJMR",$J),^TMP("PSJNOUN",$J),^TMP("PSJSCH",$J)
 | 
|---|
| 37 |  N PROMPT,OI
 | 
|---|
| 38 |  S PROMPT=$O(^ORD(101.41,"AB","OR GTX ORDERABLE ITEM",0))
 | 
|---|
| 39 |  S OI=""
 | 
|---|
| 40 |  I $D(ORDIALOG(PROMPT,1)) S OI=ORDIALOG(PROMPT,1) D MEDACTV Q:$G(ORQUIT)
 | 
|---|
| 41 |  N PSOI
 | 
|---|
| 42 |  S PSOI=+$P($G(^ORD(101.43,+OI,0)),U,2) D START^PSSJORDF(PSOI,ORCAT)
 | 
|---|
| 43 |  S PROMPT=$O(^ORD(101.41,"AB","OR GTX SCHEDULE",0))
 | 
|---|
| 44 |  I $D(ORDIALOG(PROMPT,1)) S ORSCH=ORDIALOG(PROMPT,1)
 | 
|---|
| 45 |  I (ORCAT="I"),$L($G(ORSCH)) D
 | 
|---|
| 46 |  . S ORSD=""
 | 
|---|
| 47 |  . I $L($G(^DPT(+ORVP,.1))) S ORSD=$$STARTSTP^PSJORPOE(+ORVP,ORSCH,PSOI,+$G(ORWARD),"")
 | 
|---|
| 48 |  . I $P(ORSD,U)="NEXT" S $P(ORSD,U)="NEXTA"
 | 
|---|
| 49 |  S PROMPT=$O(^ORD(101.41,"AB","OR GTX DAYS SUPPLY",0))
 | 
|---|
| 50 |  I $D(ORDIALOG(PROMPT,1)) S ORDSUP=ORDIALOG(PROMPT,1)
 | 
|---|
| 51 |  S PROMPT=$O(^ORD(101.41,"AB","OR GTX DISPENSE DRUG",0))
 | 
|---|
| 52 |  I $D(ORDIALOG(PROMPT,1)) S ORDRUG=ORDIALOG(PROMPT,1)
 | 
|---|
| 53 |  S PROMPT=$O(^ORD(101.41,"AB","OR GTX REFILLS",0))
 | 
|---|
| 54 |  I $D(ORDIALOG(PROMPT,1)) S OREFILLS=ORDIALOG(PROMPT,1)
 | 
|---|
| 55 |  I ORCAT="O" S ORCOPAY=$$ASKSC^ORCDPS1
 | 
|---|
| 56 |  I ORCAT="I" S PROMPT=$O(^ORD(101.41,"AB","OR GTX START DATE/TIME",0)) D
 | 
|---|
| 57 |  . I $L($P($G(ORSD),U)),'$D(ORDIALOG(PROMPT,1)) S ORDIALOG(PROMPT,1)=$P(ORSD,U)
 | 
|---|
| 58 |  ; create a SIG if none exists (i.e., when copying pre-POE orders)
 | 
|---|
| 59 |  I '$L($G(ORDIALOG($$PTR^ORCD("OR GTX SIG"),1))) D
 | 
|---|
| 60 |  . N ORDOSE,ORDRUG,ORWPSOI,PROMPT,DRUG
 | 
|---|
| 61 |  . S PROMPT=$$PTR^ORCD("OR GTX INSTRUCTIONS")
 | 
|---|
| 62 |  . S ORDRUG=$G(ORDIALOG($$PTR^ORCD("OR GTX DISPENSE DRUG"),1))
 | 
|---|
| 63 |  . S ORWPSOI=+$G(ORDIALOG($$PTR^ORCD("OR GTX ORDERABLE ITEM"),1))
 | 
|---|
| 64 |  . I ORWPSOI S ORWPSOI=+$P($G(^ORD(101.43,+ORWPSOI,0)),U,2)
 | 
|---|
| 65 |  . D DOSE^PSSORUTL(.ORDOSE,ORWPSOI,$S(ORCAT="I":"U",1:"O"),ORVP)       ; dflt doses
 | 
|---|
| 66 |  . D D1^ORCDPS2  ; set up ORDOSE & xrefs in ORDIALOG
 | 
|---|
| 67 |  . S DRUG=$G(ORDOSE("DD",+ORDRUG))
 | 
|---|
| 68 |  . I DRUG,ORCAT="O" D RESETID^ORCDPS
 | 
|---|
| 69 |  . D SIG^ORCDPS2
 | 
|---|
| 70 |  Q
 | 
|---|
| 71 | AUTHMED ; sets ORQUIT if not authorized to write meds
 | 
|---|
| 72 |  N NOAUTH,NAME
 | 
|---|
| 73 |  D AUTH^ORWDPS32(.NOAUTH,ORNP)
 | 
|---|
| 74 |  I +NOAUTH D
 | 
|---|
| 75 |  . S ORQUIT=1
 | 
|---|
| 76 |  . S LST(0)="8^0"
 | 
|---|
| 77 |  . S NAME=$P($G(^VA(200,+ORNP,20)),U,2)
 | 
|---|
| 78 |  . I '$L(NAME) S NAME=$P($G(^VA(200,+ORNP,0)),U,1)
 | 
|---|
| 79 |  . S LST(.5)=NAME_" is not authorized to write med orders."
 | 
|---|
| 80 |  Q
 | 
|---|
| 81 | MEDACTV ; sets ORQUIT if the orderable item is not active for a med
 | 
|---|
| 82 |  Q:'$G(OI)
 | 
|---|
| 83 |  I $G(^ORD(101.43,OI,.1)),^(.1)'>$$NOW^XLFDT D
 | 
|---|
| 84 |  . S ORQUIT=1
 | 
|---|
| 85 |  . S LST(0)="8^0"
 | 
|---|
| 86 |  . S LST(.5)=$P($G(^ORD(101.43,OI,0)),U)_" has been inactivated and may not be ordered anymore."
 | 
|---|
| 87 |  I $D(ORQUIT) Q:ORQUIT
 | 
|---|
| 88 |  ; copied from ORDITM^ORCDPS1 to make sure quick order if for right dialog
 | 
|---|
| 89 |  N ORPS,PSOI,ORIV,ORINPT
 | 
|---|
| 90 |  S ORINPT=$$INPT^ORCD
 | 
|---|
| 91 |  S ORPS=$G(^ORD(101.43,+OI,"PS")),PSOI=+$P($G(^(0)),U,2)
 | 
|---|
| 92 |  S ORIV=$S($P(ORPS,U)=2:1,1:0)
 | 
|---|
| 93 |  I $G(ORCAT)="O",'$P(ORPS,U,2),'ORIMO S LST(.5)="This drug may not be used in an outpatient order."
 | 
|---|
| 94 |  I $G(ORCAT)="I" D
 | 
|---|
| 95 |  . I $G(ORINPT),'$P(ORPS,U),'ORIMO S LST(.5)="This drug may not be used in an inpatient order."
 | 
|---|
| 96 |  . I '$G(ORINPT),'ORIV,'ORIMO S LST(.5)="This drug may not be ordered for an outpatient."
 | 
|---|
| 97 |  I $L($G(LST(.5))) S ORQUIT=1,LST(0)="8^0"
 | 
|---|
| 98 |  Q
 | 
|---|