[623] | 1 | ORB3FUP2 ; slc/CLA - Routine to support notification follow-up actions ;6/28/00 12:00
|
---|
| 2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**31,64,88,112**;Dec 17, 1997
|
---|
| 3 | RESULT ;STAT, orderer-flagged and site-flagged result follow-up
|
---|
| 4 | ;determine what pkg to get report/results from then do RPTLAB or RPTRAD
|
---|
| 5 | N ORBFILL S ORBFILL=$P($P(XQADATA,"|",2),"@",2)
|
---|
| 6 | I ORBFILL["LR" D RPTLAB
|
---|
| 7 | I ORBFILL["RA" D RPTRAD
|
---|
| 8 | I ORBFILL["GMRC" D RPTCON
|
---|
| 9 | Q
|
---|
| 10 | CSPN ;co-sign progress note(s) follow-up
|
---|
| 11 | K XQAKILL
|
---|
| 12 | N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
|
---|
| 13 | S ORPT=$P($P(XQAID,";"),",",2) ;get pt dfn from xqaid
|
---|
| 14 | I $G(ORENVIR)="GUI" ;entry pt to get notes req co-sign then quit
|
---|
| 15 | ;joel rtn to display notes req co-signature and allow co-sign on vt
|
---|
| 16 | ;if lm fup action completed D DEL^ORB3FUP1(.ORY,ORBXQAID)
|
---|
| 17 | Q
|
---|
| 18 | USPN ;unsigned progress note(s) follow-up
|
---|
| 19 | K XQAKILL
|
---|
| 20 | N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
|
---|
| 21 | S ORPT=$P($P(XQAID,";"),",",2) ;get pt dfn from xqaid
|
---|
| 22 | I $G(ORENVIR)="GUI" ;entry pt to get unsigned notes then quit
|
---|
| 23 | ;joel rtn to display notes req signature and allow signature on vt
|
---|
| 24 | ;if lm fup action completed D DEL^ORB3FUP1(.ORY,ORBXQAID)
|
---|
| 25 | Q
|
---|
| 26 | EXMED ;expiring med(s) follow-up
|
---|
| 27 | K XQAKILL
|
---|
| 28 | N ORPT,ORDG,ORBXQAID,ORY,ORBLMDEL
|
---|
| 29 | S ORBXQAID=XQAID
|
---|
| 30 | S ORPT=$P($P(XQAID,";"),",",2) ;get pt dfn from xqaid
|
---|
| 31 | ;the FLG code for EXPIRING orders in ORQ1 is '5'
|
---|
| 32 | I $G(ORENVIR)="GUI" D LIST^ORQOR1(.ORBY,ORPT,"RX",5,"","")
|
---|
| 33 | I $G(ORENVIR)'="GUI" D
|
---|
| 34 | .D MSG^ORB3FUP1
|
---|
| 35 | .S ORDG=$$DG^ORQOR1("RX") ;get Display Group ien
|
---|
| 36 | .D EN^ORCB(ORPT,5,ORDG,.ORBLMDEL)
|
---|
| 37 | .K ^TMP("ORR",$J)
|
---|
| 38 | .Q:$G(ORBLMDEL)=1 ;if EN^ORCB rtns ORBLMDEL=1, alert was removed in LM
|
---|
| 39 | .D EN^ORQ1(ORPT_";DPT(",ORDG,5,"","","",0,0)
|
---|
| 40 | .S X="",X=$O(^TMP("ORR",$J,X)) Q:X="" I +$G(^TMP("ORR",$J,X,"TOT"))<1 D
|
---|
| 41 | ..D DEL^ORB3FUP1(.ORY,ORBXQAID) ;if no more EXPIRING orders found, delete the alert
|
---|
| 42 | .K X,^TMP("ORR",$J)
|
---|
| 43 | Q
|
---|
| 44 | UVMED ;unverified med(s) follow-up
|
---|
| 45 | K XQAKILL
|
---|
| 46 | N ORPT,ORDG,ORBXQAID,ORY,ORBLMDEL,ORADT
|
---|
| 47 | S ORBXQAID=XQAID
|
---|
| 48 | S ORPT=$P($P(XQAID,";"),",",2) ;get pt dfn from xqaid
|
---|
| 49 | ;the FLG code for UNVERIFIED (NURSE) orders in ORQ1 is '9'
|
---|
| 50 | I $G(ORENVIR)="GUI" D LIST^ORQOR1(.ORBY,ORPT,"RX",9,"","")
|
---|
| 51 | I $G(ORENVIR)'="GUI" D
|
---|
| 52 | .D MSG^ORB3FUP1
|
---|
| 53 | .S ORDG=$$DG^ORQOR1("RX") ;get Display Group ien
|
---|
| 54 | .D EN^ORCB(ORPT,9,ORDG,.ORBLMDEL)
|
---|
| 55 | .K ^TMP("ORR",$J)
|
---|
| 56 | .Q:$G(ORBLMDEL)=1 ;if EN^ORCB rtns ORBLMDEL=1, alert was removed in LM
|
---|
| 57 | .;
|
---|
| 58 | .;if user doesn't have ORELSE or ORMAS keys (can't verify),
|
---|
| 59 | .; delete user's alert after display:
|
---|
| 60 | .I '$D(^XUSEC("ORELSE",DUZ)),('$D(^XUSEC("OREMAS",DUZ))) S XQAKILL=1 D DEL^ORB3FUP1(.ORY,ORBXQAID) Q
|
---|
| 61 | .;
|
---|
| 62 | .;get current admission date/time:
|
---|
| 63 | .N DFN S DFN=ORPT,VA200="" D INP^VADPT
|
---|
| 64 | .S ORADT=$P($G(VAIN(7)),U)
|
---|
| 65 | .S ORADT=$S('$L($G(ORADT)):$$FMADD^XLFDT($$NOW^XLFDT,"-30"),1:ORADT)
|
---|
| 66 | .;
|
---|
| 67 | .;if no more UNVERIFIED MED orders found (within current admission or
|
---|
| 68 | .; past 30 days), delete the alert:
|
---|
| 69 | .D EN^ORQ1(ORPT_";DPT(",ORDG,9,"",ORADT,$$NOW^XLFDT,0,0)
|
---|
| 70 | .S X="",X=$O(^TMP("ORR",$J,X)) Q:X="" I +$G(^TMP("ORR",$J,X,"TOT"))<1 D
|
---|
| 71 | ..D DEL^ORB3FUP1(.ORY,ORBXQAID)
|
---|
| 72 | .K X,^TMP("ORR",$J),VA200,VAIN
|
---|
| 73 | Q
|
---|
| 74 | UNVER ;unverified order(s) follow-up
|
---|
| 75 | K XQAKILL
|
---|
| 76 | N ORPT,ORDG,ORBXQAID,ORY,ORBLMDEL,ORADT
|
---|
| 77 | S ORBXQAID=XQAID
|
---|
| 78 | S ORPT=$P($P(XQAID,";"),",",2) ;get pt dfn from xqaid
|
---|
| 79 | ;the FLG code for UNVERIFIED (NURSE) orders in ORQ1 is '9'
|
---|
| 80 | I $G(ORENVIR)="GUI" D LIST^ORQOR1(.ORBY,ORPT,"ALL",9,"","")
|
---|
| 81 | I $G(ORENVIR)'="GUI" D
|
---|
| 82 | .D MSG^ORB3FUP1
|
---|
| 83 | .S ORDG=$$DG^ORQOR1("ALL") ;get Display Group ien
|
---|
| 84 | .D EN^ORCB(ORPT,9,ORDG,.ORBLMDEL)
|
---|
| 85 | .K ^TMP("ORR",$J)
|
---|
| 86 | .Q:$G(ORBLMDEL)=1 ;if EN^ORCB rtns ORBLMDEL=1, alert was removed in LM
|
---|
| 87 | .;
|
---|
| 88 | .;if user doesn't have ORELSE or ORMAS keys (can't verify),
|
---|
| 89 | .; delete user's alert after display:
|
---|
| 90 | .I '$D(^XUSEC("ORELSE",DUZ)),('$D(^XUSEC("OREMAS",DUZ))) S XQAKILL=1 D DEL^ORB3FUP1(.ORY,ORBXQAID) Q
|
---|
| 91 | .;
|
---|
| 92 | .;get current admission date/time:
|
---|
| 93 | .N DFN S DFN=ORPT,VA200="" D INP^VADPT
|
---|
| 94 | .S ORADT=$P($G(VAIN(7)),U)
|
---|
| 95 | .S ORADT=$S('$L($G(ORADT)):$$FMADD^XLFDT($$NOW^XLFDT,"-30"),1:ORADT)
|
---|
| 96 | .;
|
---|
| 97 | .;if no more UNVERIFIED orders found (within current admission or past
|
---|
| 98 | .; 30 days), delete the alert:
|
---|
| 99 | .D EN^ORQ1(ORPT_";DPT(",ORDG,9,"",ORADT,$$NOW^XLFDT,0,0)
|
---|
| 100 | .S X="",X=$O(^TMP("ORR",$J,X)) Q:X="" I +$G(^TMP("ORR",$J,X,"TOT"))<1 D
|
---|
| 101 | ..D DEL^ORB3FUP1(.ORY,ORBXQAID)
|
---|
| 102 | .K X,^TMP("ORR",$J),VA200,VAIN
|
---|
| 103 | Q
|
---|
| 104 | NEWCON ;new consult/request follow-up
|
---|
| 105 | K XQAKILL
|
---|
| 106 | N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
|
---|
| 107 | S ORPT=$P($P(XQAID,";"),",",2) ;get pt dfn from xqaid
|
---|
| 108 | ;I $G(ORENVIR)="GUI" D ;comment out until GUI follow-up
|
---|
| 109 | ;.entry pt to get new consults then quit
|
---|
| 110 | I $G(ORENVIR)'="GUI" D
|
---|
| 111 | .D MSG^ORB3FUP1
|
---|
| 112 | .D EN^GMRCALRT(XQADATA,XQAID) ;display new c/r and allow action
|
---|
| 113 | .;D DEL^ORB3FUP1(.ORY,ORBXQAID) ;Dwight does the delete in GMRC
|
---|
| 114 | Q
|
---|
| 115 | UPCON ;updated consult/request follow-up
|
---|
| 116 | K XQAKILL
|
---|
| 117 | N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
|
---|
| 118 | S ORPT=$P($P(XQAID,";"),",",2) ;get pt dfn from xqaid
|
---|
| 119 | I $G(ORENVIR)'="GUI" D
|
---|
| 120 | .D MSG^ORB3FUP1
|
---|
| 121 | .D EN^GMRCALRT(XQADATA,XQAID) ;display updated c/r and allow action
|
---|
| 122 | Q
|
---|
| 123 | DCCON ;cancelled, held or DCed consult/request follow-up
|
---|
| 124 | K XQAKILL
|
---|
| 125 | N ORPT,NXQADATA
|
---|
| 126 | S ORPT=$P($P(XQAID,";"),",",2) ;get pt dfn from xqaid
|
---|
| 127 | ;I $G(ORENVIR)="GUI" D ;comment out until GUI follow-up
|
---|
| 128 | ;.entry pt to get new consults then quit
|
---|
| 129 | I $G(ORENVIR)'="GUI" D
|
---|
| 130 | .D MSG^ORB3FUP1
|
---|
| 131 | .I XQADATA["GMRC" S NXQADATA=$P($P(XQADATA,"|",2),"@") D EN^GMRCEDIT(NXQADATA,XQAID)
|
---|
| 132 | .I +$G(NXQADATA)<1 D EN^GMRCEDIT(XQADATA,XQAID)
|
---|
| 133 | Q
|
---|
| 134 | RPTCON ;consult result follow-up
|
---|
| 135 | K XQAKILL
|
---|
| 136 | N NXQADATA
|
---|
| 137 | ;N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
|
---|
| 138 | ;S ORPT=$P($P(XQAID,";"),",",2) ;get pt dfn from xqaid
|
---|
| 139 | I $G(ORENVIR)="GUI" D DETAIL^ORQQCN(.ORBY,XQADATA)
|
---|
| 140 | I $G(ORENVIR)'="GUI" D
|
---|
| 141 | .D MSG^ORB3FUP1
|
---|
| 142 | .D EN^GMRCALRT(XQADATA,XQAID)
|
---|
| 143 | .;I XQADATA["GMRC" S NXQADATA=$P($P(XQADATA,"|",2),"@") D EN^GMRCALRT(NXQADATA,XQAID)
|
---|
| 144 | .;I +$G(NXQADATA)<1 D EN^GMRCALRT(XQADATA,XQAID)
|
---|
| 145 | .;D DEL^ORB3FUP1(.ORY,ORBXQAID) ;Dwight does the delete in GMRC
|
---|
| 146 | Q
|
---|
| 147 | RPTLAB ;lab result follow-up
|
---|
| 148 | K XQAKILL
|
---|
| 149 | N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
|
---|
| 150 | S ORPT=$P($P(XQAID,";"),",",2) ;get pt dfn from xqaid
|
---|
| 151 | N ORDER,ORLAB S ORDER=$P(XQADATA,"@")
|
---|
| 152 | I $G(ORENVIR)="GUI" D DETAIL^ORQQLR(.ORBY,ORPT,ORDER)
|
---|
| 153 | I $G(ORENVIR)'="GUI" D
|
---|
| 154 | .D MSG^ORB3FUP1
|
---|
| 155 | .;S ORLAB=$$OETOLAB^ORQQLR1(ORDER)
|
---|
| 156 | .;Q:'$L($G(ORLAB))
|
---|
| 157 | .;D EN1^ORCXPND(ORPT,ORLAB,"LABS") ;api used lab # pre-6/97
|
---|
| 158 | .D EN1^ORCXPND(ORPT,ORDER,"LABS")
|
---|
| 159 | .D DEL^ORB3FUP1(.ORY,ORBXQAID)
|
---|
| 160 | Q
|
---|
| 161 | RPTRAD ;radiology result follow-up for HL7-triggered notifications
|
---|
| 162 | K XQAKILL
|
---|
| 163 | N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
|
---|
| 164 | S ORPT=$P($P(XQAID,";"),",",2) ;get pt dfn from xqaid
|
---|
| 165 | N INVDT,CASE S INVDT="",CASE=""
|
---|
| 166 | ;XQADATA is different for HL7-triggered vs. radiology pkg triggered
|
---|
| 167 | S INVDT=$P(XQADATA,"~",2),CASE=$P($P(XQADATA,"~",3),"@")
|
---|
| 168 | I $G(ORENVIR)="GUI" D DETAIL^ORQQRA(.ORBY,ORPT,INVDT,CASE)
|
---|
| 169 | I $G(ORENVIR)'="GUI" D
|
---|
| 170 | .D MSG^ORB3FUP1
|
---|
| 171 | .D EN1^ORCXPND(ORPT,INVDT_"-"_CASE,"XRAYS")
|
---|
| 172 | .D DEL^ORB3FUP1(.ORY,ORBXQAID)
|
---|
| 173 | Q
|
---|
| 174 | RPTRAD2 ;radiology result follow-up for radiology pkg-triggered notifications
|
---|
| 175 | K XQAKILL
|
---|
| 176 | N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
|
---|
| 177 | S ORPT=$P($P(XQAID,";"),",",2) ;get pt dfn from xqaid
|
---|
| 178 | N INVDT,CASE S INVDT="",CASE=""
|
---|
| 179 | ;XQADATA is different for HL7-triggered vs. radiology pkg triggered
|
---|
| 180 | S INVDT=$P(XQADATA,"~",1),CASE=$P(XQADATA,"~",2)
|
---|
| 181 | I $G(ORENVIR)="GUI" D DETAIL^ORQQRA(.ORBY,ORPT,INVDT,CASE)
|
---|
| 182 | I $G(ORENVIR)'="GUI" D
|
---|
| 183 | .D MSG^ORB3FUP1
|
---|
| 184 | .D EN1^ORCXPND(ORPT,INVDT_"-"_CASE,"XRAYS")
|
---|
| 185 | .D DEL^ORB3FUP1(.ORY,ORBXQAID)
|
---|
| 186 | Q
|
---|
| 187 | EXOI ;expiring flagged orderable items follow-up
|
---|
| 188 | K XQAKILL
|
---|
| 189 | N ORPT,ORDG,ORBXQAID,ORY,ORBLMDEL
|
---|
| 190 | S ORBXQAID=XQAID
|
---|
| 191 | S ORPT=$P($P(XQAID,";"),",",2) ;get pt dfn from xqaid
|
---|
| 192 | ;the FLG code for EXPIRING orders in ORQ1 is '5'
|
---|
| 193 | I $G(ORENVIR)="GUI" D LIST^ORQOR1(.ORBY,ORPT,"ALL",5,"","")
|
---|
| 194 | I $G(ORENVIR)'="GUI" D
|
---|
| 195 | .D MSG^ORB3FUP1
|
---|
| 196 | .S ORDG=$$DG^ORQOR1("ALL") ;get Display Group ien
|
---|
| 197 | .D EN^ORCB(ORPT,5,ORDG,.ORBLMDEL)
|
---|
| 198 | .K ^TMP("ORR",$J)
|
---|
| 199 | .Q:$G(ORBLMDEL)=1 ;if EN^ORCB rtns ORBLMDEL=1, alert was removed in LM
|
---|
| 200 | .D EN^ORQ1(ORPT_";DPT(",ORDG,5,"","","",0,0)
|
---|
| 201 | .S X="",X=$O(^TMP("ORR",$J,X)) Q:X="" I +$G(^TMP("ORR",$J,X,"TOT"))<1 D
|
---|
| 202 | ..D DEL^ORB3FUP1(.ORY,ORBXQAID) ;if no more EXPIRING orders found, delete the alert
|
---|
| 203 | .K X,^TMP("ORR",$J)
|
---|
| 204 | Q
|
---|
| 205 | INTCON ;consult interpretation follow-up
|
---|
| 206 | K XQAKILL
|
---|
| 207 | N NXQADATA
|
---|
| 208 | I $G(ORENVIR)'="GUI" D
|
---|
| 209 | .D MSG^ORB3FUP1
|
---|
| 210 | .R !!?5,"This alert must be processed in the CPRS GUI.",X:10
|
---|
| 211 | .K X
|
---|
| 212 | Q
|
---|
| 213 | CHGRAD ;radiology follow-up for #67 Imaging Request Changed
|
---|
| 214 | K XQAKILL
|
---|
| 215 | N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
|
---|
| 216 | S ORPT=$P($P(XQAID,";"),",",2) ;get pt dfn from xqaid
|
---|
| 217 | I $G(ORENVIR)'="GUI" D
|
---|
| 218 | .D MSG^ORB3FUP1
|
---|
| 219 | .I $L($T(EN1^RAO7PC4))>0 D
|
---|
| 220 | ..D EN1^RAO7PC4 ;display before and after change(s)
|
---|
| 221 | ..D DEL^ORB3FUP1(.ORY,ORBXQAID)
|
---|
| 222 | Q
|
---|
| 223 | INFODEL ;follow-up action to delete "informational" alerts
|
---|
| 224 | K XQAKILL
|
---|
| 225 | N ORY,ORBXQAID
|
---|
| 226 | S ORBXQAID=XQAID
|
---|
| 227 | D MSG^ORB3FUP1
|
---|
| 228 | D DEL^ORB3FUP1(.ORY,ORBXQAID)
|
---|
| 229 | Q
|
---|