Index: WorldVistAEHR/trunk/r/ORDER_ENTRY_RESULTS_REPORTING-OR-OCX--ORRC--ORRJ/ORB3FUP2.m
===================================================================
--- WorldVistAEHR/trunk/r/ORDER_ENTRY_RESULTS_REPORTING-OR-OCX--ORRC--ORRJ/ORB3FUP2.m	(revision 613)
+++ WorldVistAEHR/trunk/r/ORDER_ENTRY_RESULTS_REPORTING-OR-OCX--ORRC--ORRJ/ORB3FUP2.m	(revision 623)
@@ -1,239 +1,229 @@
-ORB3FUP2	; slc/CLA - Routine to support notification follow-up actions ;6/28/00  12:00
-	;;3.0;ORDER ENTRY/RESULTS REPORTING;**31,64,88,112,243**;Dec 17, 1997;Build 242
-RESULT	;STAT, orderer-flagged and site-flagged result follow-up
-	;determine what pkg to get report/results from then do RPTLAB or RPTRAD
-	N ORBFILL S ORBFILL=$P($P(XQADATA,"|",2),"@",2)
-	I ORBFILL["LR" D RPTLAB
-	I ORBFILL["RA" D RPTRAD
-	I ORBFILL["GMRC" D RPTCON
-	Q
-CSPN	;co-sign progress note(s) follow-up
-	K XQAKILL
-	N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
-	S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
-	I $G(ORENVIR)="GUI" ;entry pt to get notes req co-sign then quit
-	;joel rtn to display notes req co-signature and allow co-sign on vt
-	;if lm fup action completed D DEL^ORB3FUP1(.ORY,ORBXQAID)
-	Q
-USPN	;unsigned progress note(s) follow-up
-	K XQAKILL
-	N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
-	S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
-	I $G(ORENVIR)="GUI" ;entry pt to get unsigned notes then quit
-	;joel rtn to display notes req signature and allow signature on vt
-	;if lm fup action completed D DEL^ORB3FUP1(.ORY,ORBXQAID)
-	Q
-EXMED	;expiring med(s) follow-up
-	K XQAKILL
-	N ORPT,ORDG,ORBXQAID,ORY,ORBLMDEL
-	S ORBXQAID=XQAID
-	S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
-	;the FLG code for EXPIRING orders in ORQ1 is '5'
-	I $G(ORENVIR)="GUI" D LIST^ORQOR1(.ORBY,ORPT,"RX",5,"","")
-	I $G(ORENVIR)'="GUI" D
-	.D MSG^ORB3FUP1
-	.S ORDG=$$DG^ORQOR1("RX")  ;get Display Group ien
-	.D EN^ORCB(ORPT,5,ORDG,.ORBLMDEL)
-	.K ^TMP("ORR",$J)
-	.Q:$G(ORBLMDEL)=1  ;if EN^ORCB rtns ORBLMDEL=1, alert was removed in LM
-	.D EN^ORQ1(ORPT_";DPT(",ORDG,5,"","","",0,0)
-	.S X="",X=$O(^TMP("ORR",$J,X)) Q:X=""  I +$G(^TMP("ORR",$J,X,"TOT"))<1 D
-	..D DEL^ORB3FUP1(.ORY,ORBXQAID)  ;if no more EXPIRING orders found, delete the alert
-	.K X,^TMP("ORR",$J)
-	Q
-UVMED	;unverified med(s) follow-up
-	K XQAKILL
-	N ORPT,ORDG,ORBXQAID,ORY,ORBLMDEL,ORADT
-	S ORBXQAID=XQAID
-	S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
-	;the FLG code for UNVERIFIED (NURSE) orders in ORQ1 is '9'
-	I $G(ORENVIR)="GUI" D LIST^ORQOR1(.ORBY,ORPT,"RX",9,"","")
-	I $G(ORENVIR)'="GUI" D
-	.D MSG^ORB3FUP1
-	.S ORDG=$$DG^ORQOR1("RX")  ;get Display Group ien
-	.D EN^ORCB(ORPT,9,ORDG,.ORBLMDEL)
-	.K ^TMP("ORR",$J)
-	.Q:$G(ORBLMDEL)=1  ;if EN^ORCB rtns ORBLMDEL=1, alert was removed in LM
-	.;
-	.;if user doesn't have ORELSE or ORMAS keys (can't verify),
-	.;   delete user's alert after display:
-	.I '$D(^XUSEC("ORELSE",DUZ)),('$D(^XUSEC("OREMAS",DUZ))) S XQAKILL=1 D DEL^ORB3FUP1(.ORY,ORBXQAID) Q
-	.;
-	.;get current admission date/time:
-	.N DFN S DFN=ORPT,VA200="" D INP^VADPT
-	.S ORADT=$P($G(VAIN(7)),U)
-	.S ORADT=$S('$L($G(ORADT)):$$FMADD^XLFDT($$NOW^XLFDT,"-30"),1:ORADT)
-	.;
-	.;if no more UNVERIFIED MED orders found (within current admission or
-	.; past 30 days), delete the alert:
-	.D EN^ORQ1(ORPT_";DPT(",ORDG,9,"",ORADT,$$NOW^XLFDT,0,0)
-	.S X="",X=$O(^TMP("ORR",$J,X)) Q:X=""  I +$G(^TMP("ORR",$J,X,"TOT"))<1 D
-	..D DEL^ORB3FUP1(.ORY,ORBXQAID)
-	.K X,^TMP("ORR",$J),VA200,VAIN
-	Q
-UNVER	;unverified order(s) follow-up
-	K XQAKILL
-	N ORPT,ORDG,ORBXQAID,ORY,ORBLMDEL,ORADT
-	S ORBXQAID=XQAID
-	S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
-	;the FLG code for UNVERIFIED (NURSE) orders in ORQ1 is '9'
-	I $G(ORENVIR)="GUI" D LIST^ORQOR1(.ORBY,ORPT,"ALL",9,"","")
-	I $G(ORENVIR)'="GUI" D
-	.D MSG^ORB3FUP1
-	.S ORDG=$$DG^ORQOR1("ALL")  ;get Display Group ien
-	.D EN^ORCB(ORPT,9,ORDG,.ORBLMDEL)
-	.K ^TMP("ORR",$J)
-	.Q:$G(ORBLMDEL)=1  ;if EN^ORCB rtns ORBLMDEL=1, alert was removed in LM
-	.;
-	.;if user doesn't have ORELSE or ORMAS keys (can't verify),
-	.;   delete user's alert after display:
-	.I '$D(^XUSEC("ORELSE",DUZ)),('$D(^XUSEC("OREMAS",DUZ))) S XQAKILL=1 D DEL^ORB3FUP1(.ORY,ORBXQAID) Q
-	.;
-	.;get current admission date/time:
-	.N DFN S DFN=ORPT,VA200="" D INP^VADPT
-	.S ORADT=$P($G(VAIN(7)),U)
-	.S ORADT=$S('$L($G(ORADT)):$$FMADD^XLFDT($$NOW^XLFDT,"-30"),1:ORADT)
-	.;
-	.;if no more UNVERIFIED orders found (within current admission or past
-	.; 30 days), delete the alert:
-	.D EN^ORQ1(ORPT_";DPT(",ORDG,9,"",ORADT,$$NOW^XLFDT,0,0)
-	.S X="",X=$O(^TMP("ORR",$J,X)) Q:X=""  I +$G(^TMP("ORR",$J,X,"TOT"))<1 D
-	..D DEL^ORB3FUP1(.ORY,ORBXQAID)
-	.K X,^TMP("ORR",$J),VA200,VAIN
-	Q
-NEWCON	;new consult/request follow-up
-	K XQAKILL
-	N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
-	S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
-	;I $G(ORENVIR)="GUI" D  ;comment out until GUI follow-up
-	;.entry pt to get new consults then quit
-	I $G(ORENVIR)'="GUI" D
-	.D MSG^ORB3FUP1
-	.D EN^GMRCALRT(XQADATA,XQAID) ;display new c/r and allow action
-	.;D DEL^ORB3FUP1(.ORY,ORBXQAID) ;Dwight does the delete in GMRC
-	Q
-UPCON	;updated consult/request follow-up
-	K XQAKILL
-	N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
-	S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
-	I $G(ORENVIR)'="GUI" D
-	.D MSG^ORB3FUP1
-	.D EN^GMRCALRT(XQADATA,XQAID) ;display updated c/r and allow action
-	Q
-DCCON	;cancelled, held or DCed consult/request follow-up
-	K XQAKILL
-	N ORPT,NXQADATA
-	S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
-	;I $G(ORENVIR)="GUI" D  ;comment out until GUI follow-up
-	;.entry pt to get new consults then quit
-	I $G(ORENVIR)'="GUI" D
-	.D MSG^ORB3FUP1
-	.I XQADATA["GMRC" S NXQADATA=$P($P(XQADATA,"|",2),"@") D EN^GMRCEDIT(NXQADATA,XQAID)
-	.I +$G(NXQADATA)<1 D EN^GMRCEDIT(XQADATA,XQAID)
-	Q
-RPTCON	;consult result follow-up
-	K XQAKILL
-	N NXQADATA
-	;N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
-	;S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
-	I $G(ORENVIR)="GUI" D DETAIL^ORQQCN(.ORBY,XQADATA)
-	I $G(ORENVIR)'="GUI" D
-	.D MSG^ORB3FUP1
-	.D EN^GMRCALRT(XQADATA,XQAID)
-	.;I XQADATA["GMRC" S NXQADATA=$P($P(XQADATA,"|",2),"@") D EN^GMRCALRT(NXQADATA,XQAID)
-	.;I +$G(NXQADATA)<1 D EN^GMRCALRT(XQADATA,XQAID)
-	.;D DEL^ORB3FUP1(.ORY,ORBXQAID) ;Dwight does the delete in GMRC
-	Q
-RPTAP	; AP lab result follow-up
-	K XQAKILL
-	N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
-	S ORPT=$P($P(ORBXQAID,";"),",",2)  ;get pt dfn from xqaid
-	N ORACCNUM,ORDTSTKN S ORACCNUM=$P(XQADATA,U,2),ORDTSTKN=$P(XQADATA,U,3)
-	I $G(ORENVIR)'="GUI" D
-	.D MSG^ORB3FUP1
-	.D EN1^ORCXPND(ORPT,ORACCNUM_"-"_ORDTSTKN,"LABS")
-	.D DEL^ORB3FUP1(.ORY,ORBXQAID)
-	Q
-RPTLAB	;lab result follow-up
-	K XQAKILL
-	N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
-	S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
-	N ORDER,ORLAB S ORDER=$P(XQADATA,"@")
-	I $G(ORENVIR)="GUI" D DETAIL^ORQQLR(.ORBY,ORPT,ORDER)
-	I $G(ORENVIR)'="GUI" D
-	.D MSG^ORB3FUP1
-	.;S ORLAB=$$OETOLAB^ORQQLR1(ORDER)
-	.;Q:'$L($G(ORLAB))
-	.;D EN1^ORCXPND(ORPT,ORLAB,"LABS")  ;api used lab # pre-6/97
-	.D EN1^ORCXPND(ORPT,ORDER,"LABS")
-	.D DEL^ORB3FUP1(.ORY,ORBXQAID)
-	Q
-RPTRAD	;radiology result follow-up for HL7-triggered notifications
-	K XQAKILL
-	N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
-	S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
-	N INVDT,CASE S INVDT="",CASE=""
-	;XQADATA is different for HL7-triggered vs. radiology pkg triggered
-	S INVDT=$P(XQADATA,"~",2),CASE=$P($P(XQADATA,"~",3),"@")
-	I $G(ORENVIR)="GUI" D DETAIL^ORQQRA(.ORBY,ORPT,INVDT,CASE)
-	I $G(ORENVIR)'="GUI" D
-	.D MSG^ORB3FUP1
-	.D EN1^ORCXPND(ORPT,INVDT_"-"_CASE,"XRAYS")
-	.D DEL^ORB3FUP1(.ORY,ORBXQAID)
-	Q
-RPTRAD2	;radiology result follow-up for radiology pkg-triggered notifications
-	K XQAKILL
-	N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
-	S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
-	N INVDT,CASE S INVDT="",CASE=""
-	;XQADATA is different for HL7-triggered vs. radiology pkg triggered
-	S INVDT=$P(XQADATA,"~",1),CASE=$P(XQADATA,"~",2)
-	I $G(ORENVIR)="GUI" D DETAIL^ORQQRA(.ORBY,ORPT,INVDT,CASE)
-	I $G(ORENVIR)'="GUI" D
-	.D MSG^ORB3FUP1
-	.D EN1^ORCXPND(ORPT,INVDT_"-"_CASE,"XRAYS")
-	.D DEL^ORB3FUP1(.ORY,ORBXQAID)
-	Q
-EXOI	;expiring flagged orderable items follow-up
-	K XQAKILL
-	N ORPT,ORDG,ORBXQAID,ORY,ORBLMDEL
-	S ORBXQAID=XQAID
-	S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
-	;the FLG code for EXPIRING orders in ORQ1 is '5'
-	I $G(ORENVIR)="GUI" D LIST^ORQOR1(.ORBY,ORPT,"ALL",5,"","")
-	I $G(ORENVIR)'="GUI" D
-	.D MSG^ORB3FUP1
-	.S ORDG=$$DG^ORQOR1("ALL")  ;get Display Group ien
-	.D EN^ORCB(ORPT,5,ORDG,.ORBLMDEL)
-	.K ^TMP("ORR",$J)
-	.Q:$G(ORBLMDEL)=1  ;if EN^ORCB rtns ORBLMDEL=1, alert was removed in LM
-	.D EN^ORQ1(ORPT_";DPT(",ORDG,5,"","","",0,0)
-	.S X="",X=$O(^TMP("ORR",$J,X)) Q:X=""  I +$G(^TMP("ORR",$J,X,"TOT"))<1 D
-	..D DEL^ORB3FUP1(.ORY,ORBXQAID)  ;if no more EXPIRING orders found, delete the alert
-	.K X,^TMP("ORR",$J)
-	Q
-INTCON	;consult interpretation follow-up
-	K XQAKILL
-	N NXQADATA
-	I $G(ORENVIR)'="GUI" D
-	.D MSG^ORB3FUP1
-	.R !!?5,"This alert must be processed in the CPRS GUI.",X:10
-	.K X
-	Q
-CHGRAD	;radiology follow-up for #67 Imaging Request Changed
-	K XQAKILL
-	N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
-	S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
-	I $G(ORENVIR)'="GUI" D
-	.D MSG^ORB3FUP1
-	.I $L($T(EN1^RAO7PC4))>0 D
-	..D EN1^RAO7PC4  ;display before and after change(s)
-	..D DEL^ORB3FUP1(.ORY,ORBXQAID)
-	Q
-INFODEL	;follow-up action to delete "informational" alerts
-	K XQAKILL
-	N ORY,ORBXQAID
-	S ORBXQAID=XQAID
-	D MSG^ORB3FUP1
-	D DEL^ORB3FUP1(.ORY,ORBXQAID)
-	Q
+ORB3FUP2 ; slc/CLA - Routine to support notification follow-up actions ;6/28/00  12:00
+ ;;3.0;ORDER ENTRY/RESULTS REPORTING;**31,64,88,112**;Dec 17, 1997
+RESULT ;STAT, orderer-flagged and site-flagged result follow-up
+ ;determine what pkg to get report/results from then do RPTLAB or RPTRAD
+ N ORBFILL S ORBFILL=$P($P(XQADATA,"|",2),"@",2)
+ I ORBFILL["LR" D RPTLAB
+ I ORBFILL["RA" D RPTRAD
+ I ORBFILL["GMRC" D RPTCON
+ Q
+CSPN ;co-sign progress note(s) follow-up
+ K XQAKILL
+ N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
+ S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
+ I $G(ORENVIR)="GUI" ;entry pt to get notes req co-sign then quit
+ ;joel rtn to display notes req co-signature and allow co-sign on vt
+ ;if lm fup action completed D DEL^ORB3FUP1(.ORY,ORBXQAID)
+ Q
+USPN ;unsigned progress note(s) follow-up
+ K XQAKILL
+ N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
+ S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
+ I $G(ORENVIR)="GUI" ;entry pt to get unsigned notes then quit
+ ;joel rtn to display notes req signature and allow signature on vt
+ ;if lm fup action completed D DEL^ORB3FUP1(.ORY,ORBXQAID)
+ Q
+EXMED ;expiring med(s) follow-up
+ K XQAKILL
+ N ORPT,ORDG,ORBXQAID,ORY,ORBLMDEL
+ S ORBXQAID=XQAID
+ S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
+ ;the FLG code for EXPIRING orders in ORQ1 is '5'
+ I $G(ORENVIR)="GUI" D LIST^ORQOR1(.ORBY,ORPT,"RX",5,"","")
+ I $G(ORENVIR)'="GUI" D
+ .D MSG^ORB3FUP1
+ .S ORDG=$$DG^ORQOR1("RX")  ;get Display Group ien
+ .D EN^ORCB(ORPT,5,ORDG,.ORBLMDEL)
+ .K ^TMP("ORR",$J)
+ .Q:$G(ORBLMDEL)=1  ;if EN^ORCB rtns ORBLMDEL=1, alert was removed in LM
+ .D EN^ORQ1(ORPT_";DPT(",ORDG,5,"","","",0,0)
+ .S X="",X=$O(^TMP("ORR",$J,X)) Q:X=""  I +$G(^TMP("ORR",$J,X,"TOT"))<1 D
+ ..D DEL^ORB3FUP1(.ORY,ORBXQAID)  ;if no more EXPIRING orders found, delete the alert
+ .K X,^TMP("ORR",$J)
+ Q
+UVMED ;unverified med(s) follow-up
+ K XQAKILL
+ N ORPT,ORDG,ORBXQAID,ORY,ORBLMDEL,ORADT
+ S ORBXQAID=XQAID
+ S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
+ ;the FLG code for UNVERIFIED (NURSE) orders in ORQ1 is '9'
+ I $G(ORENVIR)="GUI" D LIST^ORQOR1(.ORBY,ORPT,"RX",9,"","")
+ I $G(ORENVIR)'="GUI" D
+ .D MSG^ORB3FUP1
+ .S ORDG=$$DG^ORQOR1("RX")  ;get Display Group ien
+ .D EN^ORCB(ORPT,9,ORDG,.ORBLMDEL)
+ .K ^TMP("ORR",$J)
+ .Q:$G(ORBLMDEL)=1  ;if EN^ORCB rtns ORBLMDEL=1, alert was removed in LM
+ .;
+ .;if user doesn't have ORELSE or ORMAS keys (can't verify),
+ .;   delete user's alert after display:
+ .I '$D(^XUSEC("ORELSE",DUZ)),('$D(^XUSEC("OREMAS",DUZ))) S XQAKILL=1 D DEL^ORB3FUP1(.ORY,ORBXQAID) Q
+ .;
+ .;get current admission date/time:
+ .N DFN S DFN=ORPT,VA200="" D INP^VADPT
+ .S ORADT=$P($G(VAIN(7)),U)
+ .S ORADT=$S('$L($G(ORADT)):$$FMADD^XLFDT($$NOW^XLFDT,"-30"),1:ORADT)
+ .;
+ .;if no more UNVERIFIED MED orders found (within current admission or
+ .; past 30 days), delete the alert:
+ .D EN^ORQ1(ORPT_";DPT(",ORDG,9,"",ORADT,$$NOW^XLFDT,0,0)
+ .S X="",X=$O(^TMP("ORR",$J,X)) Q:X=""  I +$G(^TMP("ORR",$J,X,"TOT"))<1 D
+ ..D DEL^ORB3FUP1(.ORY,ORBXQAID)
+ .K X,^TMP("ORR",$J),VA200,VAIN
+ Q
+UNVER ;unverified order(s) follow-up
+ K XQAKILL
+ N ORPT,ORDG,ORBXQAID,ORY,ORBLMDEL,ORADT
+ S ORBXQAID=XQAID
+ S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
+ ;the FLG code for UNVERIFIED (NURSE) orders in ORQ1 is '9'
+ I $G(ORENVIR)="GUI" D LIST^ORQOR1(.ORBY,ORPT,"ALL",9,"","")
+ I $G(ORENVIR)'="GUI" D
+ .D MSG^ORB3FUP1
+ .S ORDG=$$DG^ORQOR1("ALL")  ;get Display Group ien
+ .D EN^ORCB(ORPT,9,ORDG,.ORBLMDEL)
+ .K ^TMP("ORR",$J)
+ .Q:$G(ORBLMDEL)=1  ;if EN^ORCB rtns ORBLMDEL=1, alert was removed in LM
+ .;
+ .;if user doesn't have ORELSE or ORMAS keys (can't verify),
+ .;   delete user's alert after display:
+ .I '$D(^XUSEC("ORELSE",DUZ)),('$D(^XUSEC("OREMAS",DUZ))) S XQAKILL=1 D DEL^ORB3FUP1(.ORY,ORBXQAID) Q
+ .;
+ .;get current admission date/time:
+ .N DFN S DFN=ORPT,VA200="" D INP^VADPT
+ .S ORADT=$P($G(VAIN(7)),U)
+ .S ORADT=$S('$L($G(ORADT)):$$FMADD^XLFDT($$NOW^XLFDT,"-30"),1:ORADT)
+ .;
+ .;if no more UNVERIFIED orders found (within current admission or past
+ .; 30 days), delete the alert:
+ .D EN^ORQ1(ORPT_";DPT(",ORDG,9,"",ORADT,$$NOW^XLFDT,0,0)
+ .S X="",X=$O(^TMP("ORR",$J,X)) Q:X=""  I +$G(^TMP("ORR",$J,X,"TOT"))<1 D
+ ..D DEL^ORB3FUP1(.ORY,ORBXQAID)
+ .K X,^TMP("ORR",$J),VA200,VAIN
+ Q
+NEWCON ;new consult/request follow-up
+ K XQAKILL
+ N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
+ S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
+ ;I $G(ORENVIR)="GUI" D  ;comment out until GUI follow-up
+ ;.entry pt to get new consults then quit
+ I $G(ORENVIR)'="GUI" D
+ .D MSG^ORB3FUP1
+ .D EN^GMRCALRT(XQADATA,XQAID) ;display new c/r and allow action
+ .;D DEL^ORB3FUP1(.ORY,ORBXQAID) ;Dwight does the delete in GMRC
+ Q
+UPCON ;updated consult/request follow-up
+ K XQAKILL
+ N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
+ S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
+ I $G(ORENVIR)'="GUI" D
+ .D MSG^ORB3FUP1
+ .D EN^GMRCALRT(XQADATA,XQAID) ;display updated c/r and allow action
+ Q
+DCCON ;cancelled, held or DCed consult/request follow-up
+ K XQAKILL
+ N ORPT,NXQADATA
+ S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
+ ;I $G(ORENVIR)="GUI" D  ;comment out until GUI follow-up
+ ;.entry pt to get new consults then quit
+ I $G(ORENVIR)'="GUI" D
+ .D MSG^ORB3FUP1
+ .I XQADATA["GMRC" S NXQADATA=$P($P(XQADATA,"|",2),"@") D EN^GMRCEDIT(NXQADATA,XQAID)
+ .I +$G(NXQADATA)<1 D EN^GMRCEDIT(XQADATA,XQAID)
+ Q
+RPTCON ;consult result follow-up
+ K XQAKILL
+ N NXQADATA
+ ;N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
+ ;S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
+ I $G(ORENVIR)="GUI" D DETAIL^ORQQCN(.ORBY,XQADATA)
+ I $G(ORENVIR)'="GUI" D
+ .D MSG^ORB3FUP1
+ .D EN^GMRCALRT(XQADATA,XQAID)
+ .;I XQADATA["GMRC" S NXQADATA=$P($P(XQADATA,"|",2),"@") D EN^GMRCALRT(NXQADATA,XQAID)
+ .;I +$G(NXQADATA)<1 D EN^GMRCALRT(XQADATA,XQAID)
+ .;D DEL^ORB3FUP1(.ORY,ORBXQAID) ;Dwight does the delete in GMRC
+ Q
+RPTLAB ;lab result follow-up
+ K XQAKILL
+ N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
+ S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
+ N ORDER,ORLAB S ORDER=$P(XQADATA,"@")
+ I $G(ORENVIR)="GUI" D DETAIL^ORQQLR(.ORBY,ORPT,ORDER)
+ I $G(ORENVIR)'="GUI" D
+ .D MSG^ORB3FUP1
+ .;S ORLAB=$$OETOLAB^ORQQLR1(ORDER)
+ .;Q:'$L($G(ORLAB))
+ .;D EN1^ORCXPND(ORPT,ORLAB,"LABS")  ;api used lab # pre-6/97
+ .D EN1^ORCXPND(ORPT,ORDER,"LABS")
+ .D DEL^ORB3FUP1(.ORY,ORBXQAID)
+ Q
+RPTRAD ;radiology result follow-up for HL7-triggered notifications
+ K XQAKILL
+ N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
+ S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
+ N INVDT,CASE S INVDT="",CASE=""
+ ;XQADATA is different for HL7-triggered vs. radiology pkg triggered
+ S INVDT=$P(XQADATA,"~",2),CASE=$P($P(XQADATA,"~",3),"@")
+ I $G(ORENVIR)="GUI" D DETAIL^ORQQRA(.ORBY,ORPT,INVDT,CASE)
+ I $G(ORENVIR)'="GUI" D
+ .D MSG^ORB3FUP1
+ .D EN1^ORCXPND(ORPT,INVDT_"-"_CASE,"XRAYS")
+ .D DEL^ORB3FUP1(.ORY,ORBXQAID)
+ Q
+RPTRAD2 ;radiology result follow-up for radiology pkg-triggered notifications
+ K XQAKILL
+ N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
+ S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
+ N INVDT,CASE S INVDT="",CASE=""
+ ;XQADATA is different for HL7-triggered vs. radiology pkg triggered
+ S INVDT=$P(XQADATA,"~",1),CASE=$P(XQADATA,"~",2)
+ I $G(ORENVIR)="GUI" D DETAIL^ORQQRA(.ORBY,ORPT,INVDT,CASE)
+ I $G(ORENVIR)'="GUI" D
+ .D MSG^ORB3FUP1
+ .D EN1^ORCXPND(ORPT,INVDT_"-"_CASE,"XRAYS")
+ .D DEL^ORB3FUP1(.ORY,ORBXQAID)
+ Q
+EXOI ;expiring flagged orderable items follow-up
+ K XQAKILL
+ N ORPT,ORDG,ORBXQAID,ORY,ORBLMDEL
+ S ORBXQAID=XQAID
+ S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
+ ;the FLG code for EXPIRING orders in ORQ1 is '5'
+ I $G(ORENVIR)="GUI" D LIST^ORQOR1(.ORBY,ORPT,"ALL",5,"","")
+ I $G(ORENVIR)'="GUI" D
+ .D MSG^ORB3FUP1
+ .S ORDG=$$DG^ORQOR1("ALL")  ;get Display Group ien
+ .D EN^ORCB(ORPT,5,ORDG,.ORBLMDEL)
+ .K ^TMP("ORR",$J)
+ .Q:$G(ORBLMDEL)=1  ;if EN^ORCB rtns ORBLMDEL=1, alert was removed in LM
+ .D EN^ORQ1(ORPT_";DPT(",ORDG,5,"","","",0,0)
+ .S X="",X=$O(^TMP("ORR",$J,X)) Q:X=""  I +$G(^TMP("ORR",$J,X,"TOT"))<1 D
+ ..D DEL^ORB3FUP1(.ORY,ORBXQAID)  ;if no more EXPIRING orders found, delete the alert
+ .K X,^TMP("ORR",$J)
+ Q
+INTCON ;consult interpretation follow-up
+ K XQAKILL
+ N NXQADATA
+ I $G(ORENVIR)'="GUI" D
+ .D MSG^ORB3FUP1
+ .R !!?5,"This alert must be processed in the CPRS GUI.",X:10
+ .K X
+ Q
+CHGRAD ;radiology follow-up for #67 Imaging Request Changed
+ K XQAKILL
+ N ORPT,ORBXQAID,ORY S ORBXQAID=XQAID
+ S ORPT=$P($P(XQAID,";"),",",2)  ;get pt dfn from xqaid
+ I $G(ORENVIR)'="GUI" D
+ .D MSG^ORB3FUP1
+ .I $L($T(EN1^RAO7PC4))>0 D
+ ..D EN1^RAO7PC4  ;display before and after change(s)
+ ..D DEL^ORB3FUP1(.ORY,ORBXQAID)
+ Q
+INFODEL ;follow-up action to delete "informational" alerts
+ K XQAKILL
+ N ORY,ORBXQAID
+ S ORBXQAID=XQAID
+ D MSG^ORB3FUP1
+ D DEL^ORB3FUP1(.ORY,ORBXQAID)
+ Q
