1 | ORCB ;SLC/MKB-Notifications followup for LMgr chart ;4/5/01 21:32
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**7,36,48,70,108,116**;Dec 17, 1997
|
---|
3 | EN(DFN,ORFLG,DGRP,DEL) ; -- main entry point
|
---|
4 | Q:'$G(DFN) Q:'$G(ORFLG)
|
---|
5 | N BEG,END D SLCT1^ORQPT
|
---|
6 | S DGRP=$P($G(^ORD(100.98,+$G(DGRP),0)),U,3) S:'$L(DGRP) DGRP="ALL"
|
---|
7 | S (BEG,END)="" I ORFLG=6 D ;get BEG from XQAID for New Orders
|
---|
8 | . S BEG=$P(XQAID,";",3) I BEG'?7N1".".6N!(BEG'<DT) S BEG="" Q
|
---|
9 | . S BEG=$$FMADD^XLFDT(BEG,,,-5),END=$$NOW^XLFDT
|
---|
10 | I ORFLG=9 D ;get BEG from Current Admission
|
---|
11 | . N ADM S ADM=+$G(^DPT(DFN,.105)) S:ADM ADM=+$P($G(^DGPM(ADM,0)),U)
|
---|
12 | . S END=$$NOW^XLFDT,BEG=$S(ADM:ADM,1:$$FMADD^XLFDT(END,-30))
|
---|
13 | S ^TMP("OR",$J,"ORDERS",0)="^^"_BEG_";"_END_";"_ORFLG_";"_DGRP_";L"
|
---|
14 | D EN^VALM("ORCB NOTIFICATIONS")
|
---|
15 | Q
|
---|
16 | ;
|
---|
17 | INIT ; -- init variables and list array
|
---|
18 | S ORTAB="ORDERS" D TAB^ORCHART("ORDERS",1)
|
---|
19 | I VALMCNT=1,$G(^TMP("OR",$J,ORTAB,1,0))["No data available" D
|
---|
20 | . N X,I S X=" No "_$S(ORFLG=5:"expiring",ORFLG=11:"unsigned",ORFLG=12:"flagged",9:"unverified",1:"new")_" orders found."
|
---|
21 | . F I="ORDERS","CURRENT" S ^TMP("OR",$J,I,1,0)=$$LJ^XLFSTR(X,45)_"|"
|
---|
22 | Q
|
---|
23 | ;
|
---|
24 | HELP ; -- help code
|
---|
25 | N X S VALMBCK=""
|
---|
26 | W !!,"Enter the display numbers of the orders you wish to act on;"
|
---|
27 | W !,"select either DT for a detailed listing of information about each"
|
---|
28 | W !,"order, or the desired action. Enter Q to exit."
|
---|
29 | W !!,"Press <return> to continue ..." R X:DTIME
|
---|
30 | Q
|
---|
31 | ;
|
---|
32 | PHDR ; -- protocol menu header code
|
---|
33 | N NUM,ORI,ORDEF,I,X K ORNMBR,OREBUILD
|
---|
34 | S VALMSG=$$MSG^ORCHART D SHOW^VALM
|
---|
35 | S NUM=+$P($G(^TMP("OR",$J,"CURRENT",0)),U,2)
|
---|
36 | S XQORM("#")=$O(^ORD(101,"B","ORCB ACTIONS",0))_"^1:"_NUM
|
---|
37 | S ORI=$S(ORFLG=5:1,ORFLG=11:"2,3,4",ORFLG=12:"3,4,5,6,7",1:8)
|
---|
38 | S ORDEF=$S(ORFLG=5:1,ORFLG=11:9,ORFLG=12:5,1:10)
|
---|
39 | F I=1:1:$L(ORI,",") S X=$T(ACTIONS+$P(ORI,",",I)),XQORM("KEY",$P(X,";",3))=$O(^ORD(101,"B","ORC "_$P(X,";",4)_" ORDERS",0))_"^1"
|
---|
40 | S XQORM("KEY","DT")=$O(^ORD(101,"B","ORC DETAILED DISPLAY",0))_"^1"
|
---|
41 | I +$P($G(^TMP("OR",$J,"CURRENT",0)),U,2)>0,XQORM("B")="Quit" S X=$T(ACTIONS+ORDEF),X=$P(X,";",4),XQORM("KEY",$P(X," "))=$O(^ORD(101,"B","ORC "_X_" ORDERS",0))_"^1",XQORM("B")=$$LOWER^VALM1(X)_" Orders" ; default action
|
---|
42 | S:'$G(ORL) ORL=$$FINDLOC ; attempt to determine location from orders
|
---|
43 | Q
|
---|
44 | ;
|
---|
45 | SELECT ; -- process selected order(s)
|
---|
46 | N MENU,XQORM,Y,ORNMBR,OREBUILD,ORY S VALMBCK=""
|
---|
47 | S ORNMBR=$P(XQORNOD(0),"=",2) D SELECT^ORCHART(ORNMBR)
|
---|
48 | S:'$G(ORFLG) ORFLG=$P($P(^TMP("OR",$J,"CURRENT",0),U,3),";",3)
|
---|
49 | S MENU=$S(ORFLG=5:"EXPIRING",ORFLG=11:"UNSIGNED",ORFLG=12:"FLAGGED",1:"NEW")
|
---|
50 | S XQORM=$O(^ORD(101,"B","ORCB "_MENU_" MENU",0))_";ORD(101,"
|
---|
51 | I 'XQORM W !!,"ERROR" H 2 G SQ
|
---|
52 | S XQORM(0)="1AD",XQORM("A")="Select action: "
|
---|
53 | W ! D EN^XQORM G:Y'>0 SQ M ORY=Y
|
---|
54 | I $D(^ORD(101,+$P(ORY(1),U,2),20)) X ^(20) S VALMBCK="R"
|
---|
55 | I $G(OREBUILD) D:ORFLG=12 UNFLAG D TAB^ORCHART(ORTAB,1) Q
|
---|
56 | SQ D DESELECT^ORCHART(ORNMBR)
|
---|
57 | Q
|
---|
58 | ;
|
---|
59 | UNFLAG ; -- Unflag orders
|
---|
60 | N X,ORI,NUM,ORIFN,ORA
|
---|
61 | S X=$P(ORY(1),U,3) Q:(X="Unflag")!(X="Detailed Display")
|
---|
62 | F ORI=1:1:$L(ORNMBR,",") S NUM=$P(ORNMBR,",",ORI) I NUM D
|
---|
63 | . S ORIFN=$P(^TMP("OR",$J,"CURRENT","IDX",NUM),U) Q:'ORIFN
|
---|
64 | . S ORA=+$P(ORIFN,";",2),ORIFN=+ORIFN Q:'ORA
|
---|
65 | . Q:'$D(^OR(100,ORIFN)) Q:(X="Edit")&($P(^(ORIFN,3),U,3)'=12)
|
---|
66 | . S $P(^OR(100,ORIFN,8,ORA,3),U)=0 ; Unflag
|
---|
67 | Q
|
---|
68 | ;
|
---|
69 | EN1(ORIFN,ACTION) ; -- entry point to display single order
|
---|
70 | Q:'ORIFN Q:'$D(^OR(100,ORIFN))
|
---|
71 | Q:"^^NEW^RENEW^REPLACE^"'[(U_$G(ACTION)_U)
|
---|
72 | S DFN=+$P(^OR(100,ORIFN,0),U,2) Q:'DFN
|
---|
73 | S ^TMP("ORXPND",$J,0)=ORIFN_U_$G(ACTION)
|
---|
74 | D EN1^ORCXPND(DFN,ORIFN)
|
---|
75 | K ^TMP("ORXPND",$J),^TMP("OR",$J)
|
---|
76 | Q
|
---|
77 | ;
|
---|
78 | NEW ; -- Add new order as follow-up action
|
---|
79 | N IFN,TYPE,ORIG,ORNP,ORPTLK S VALMBCK="" K ^TMP("ORNEW",$J)
|
---|
80 | S ORPTLK=$$LOCK^ORX2(+ORVP) I 'ORPTLK W !!,$C(7),$P(ORPTLK,U,2) H 2 Q
|
---|
81 | S ORNP=$$PROVIDER^ORCMENU1,VALMBCK="R" G:ORNP="^" NWQ
|
---|
82 | I '$G(ORL) S ORL=$$LOCATION^ORCMENU1 G:ORL["^" NWQ
|
---|
83 | S ORIG=+$P($G(^TMP("ORXPND",$J,0)),U),IFN=+$P($G(^OR(100,+ORIG,0)),U,5)
|
---|
84 | G:'IFN NWQ S TYPE=$P($G(^ORD(101.41,IFN,0)),U,4)
|
---|
85 | ; If 2.5 order, use DG or PKG to get dlg
|
---|
86 | D FULL^VALM1,ORDER^ORCMENU
|
---|
87 | I $O(^TMP("ORNEW",$J,0)) D SIGN,NOTIF^ORCMENU2
|
---|
88 | K ^TMP("ORNEW",$J) S VALMBCK="R"
|
---|
89 | NWQ D UNLOCK^ORX2(+ORVP)
|
---|
90 | Q
|
---|
91 | ;
|
---|
92 | EDIT ; -- Edit order as follow-up action
|
---|
93 | N OREBUILD K ^TMP("ORNEW",$J)
|
---|
94 | D EDIT^ORCACT I $G(OREBUILD) D
|
---|
95 | . D SIGN,NOTIF^ORCMENU2
|
---|
96 | . S $P(^TMP("ORXPND",$J,0),U,2)=""
|
---|
97 | K ^TMP("ORNEW",$J) S VALMBCK="R"
|
---|
98 | D UNLOCK^ORX2(+ORVP)
|
---|
99 | Q
|
---|
100 | ;
|
---|
101 | RENEW ; --Renew order as follow-up action
|
---|
102 | N OREBUILD K ^TMP("ORNEW",$J)
|
---|
103 | D RENEW^ORCACT I $G(OREBUILD) D
|
---|
104 | . D SIGN,NOTIF^ORCMENU2
|
---|
105 | . S $P(^TMP("ORXPND",$J,0),U,2)=""
|
---|
106 | . K ^TMP("ORXPND",$J) D INIT^ORCXPND
|
---|
107 | K ^TMP("ORNEW",$J) S VALMBCK="R"
|
---|
108 | D UNLOCK^ORX2(+ORVP)
|
---|
109 | Q
|
---|
110 | ;
|
---|
111 | SIGN ; -- Sign new order
|
---|
112 | N ORIFN,ORTAB,ORNMBR,CNT
|
---|
113 | S ORTAB="NEW",(ORIFN,CNT)=0,ORNMBR=""
|
---|
114 | F S ORIFN=+$O(^TMP("ORNEW",$J,ORIFN)) Q:ORIFN'>0 S CNT=CNT+1,^TMP("OR",$J,"NEW","IDX",CNT)=ORIFN,ORNMBR=ORNMBR_CNT_","
|
---|
115 | I CNT D EN^ORCSIGN K ^TMP("OR",$J,"NEW","IDX")
|
---|
116 | Q
|
---|
117 | ;
|
---|
118 | EXIT ; -- exit action
|
---|
119 | I $P($P(^TMP("OR",$J,"CURRENT",0),U,3),";",3)=12 D ; flagged orders
|
---|
120 | . Q:'$$GET^XPAR("ALL","ORPF AUTO UNFLAG")
|
---|
121 | . N ORI,ORIFN,ORA,XQAKILL,ORN,ORUNF
|
---|
122 | . S ORUNF=+$E($$NOW^XLFDT,1,12)_U_DUZ_"^Auto-Unflagged"
|
---|
123 | . S ORI=0 F S ORI=$O(^TMP("OR",$J,"CURRENT","IDX",ORI)) Q:ORI'>0 S ORIFN=$P(^(ORI),U),ORA=+$P(ORIFN,";",2) I ORIFN,$D(^OR(100,+ORIFN,0)) S $P(^(8,ORA,3),U)=0,$P(^(3),U,6,8)=ORUNF ; unflag
|
---|
124 | . S ORN=+$O(^ORD(100.9,"B","FLAGGED ORDERS",0))
|
---|
125 | . S XQAKILL=$$XQAKILL^ORB3F1(ORN) D:$D(XQAID) DELETE^XQALERT
|
---|
126 | D EXIT^ORCHART
|
---|
127 | Q
|
---|
128 | ;
|
---|
129 | ACTIONS ;;KEY;NAME
|
---|
130 | ;;RN;RENEW
|
---|
131 | ;;$;SIGN
|
---|
132 | ;;DC;DISCONTINUE
|
---|
133 | ;;ED;CHANGE
|
---|
134 | ;;UF;UNFLAG
|
---|
135 | ;;HD;HOLD
|
---|
136 | ;;RL;UNHOLD
|
---|
137 | ;;VF;VERIFY
|
---|
138 | ;;;SIGN ALL
|
---|
139 | ;;;VERIFY ALL
|
---|
140 | ;
|
---|
141 | ALL ; -- Select ALL orders
|
---|
142 | N X,Y,DIR,MAX
|
---|
143 | S MAX=+$P($G(^TMP("OR",$J,"CURRENT",0)),U,2),X="1-"_MAX,Y=""
|
---|
144 | S DIR(0)="L^1:"_MAX,DIR("V")="" D:MAX ^DIR
|
---|
145 | S ORNMBR=Y
|
---|
146 | Q
|
---|
147 | ;
|
---|
148 | FINDLOC() ; -- Loop through orders in alert to find assigned location
|
---|
149 | N ORI,ORIFN,ORY S ORI=0,ORY=""
|
---|
150 | F S ORI=$O(^TMP("OR",$J,"CURRENT","IDX",ORI)) Q:ORI'>0 S ORIFN=+^(ORI),ORX=$P($G(^OR(100,ORIFN,0)),U,10) S:ORY="" ORY=ORX I ORY'="",ORX'=ORY S ORY="" Q ; ORY=location for all orders, or "" if different
|
---|
151 | Q ORY
|
---|
152 | ;
|
---|
153 | DELETE ; -- Delete current alert
|
---|
154 | N %,%Y,X,Y,PRMT,XQAKILL S VALMBCK="",XQAKILL=1
|
---|
155 | S PRMT="Your "_$S(ORFLG=5:"Expiring",ORFLG=11:"Unsigned",ORFLG=12:"Flagged",ORFLG=9:"Unverified",1:"New")_" Orders alert for "_$G(ORPNM)_" will be deleted!"
|
---|
156 | D1 W !!,PRMT,!,"Are you sure" S %=2 D YN^DICN
|
---|
157 | I (%<0)!(%=2) W !,"Nothing deleted." H 2 Q
|
---|
158 | I %=0 D G D1
|
---|
159 | . W !!,"This action will delete the alert you are currently processing; the alert will",!,"disappear automatically when all orders have been acted on, but this action may",!,"be used to remove the alert if some orders are to be left unchanged."
|
---|
160 | . W !,"Press <return> to continue ..." R X:DTIME
|
---|
161 | W !,"Removing alert ..." D:$D(XQAID) DEL^ORB3FUP1(.Y,XQAID)
|
---|
162 | I $G(Y)="TRUE" W " done." S VALMBCK="Q",DEL=1 H 2
|
---|
163 | E W " unable to delete alert." H 2
|
---|
164 | Q
|
---|