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