GMRCASF ;SLC/DLT - Significant Findings Action ;7/11/03 13:28
;;3.0;CONSULT/REQUEST TRACKING;**4,10,14,22,29,35**;DEC 27, 1997
SF(GMRCO) ;Evaluate Significant Findings and update accordingly
;GMRCO is the selected consult
N GMRCQIT,GMRCLCK
I '$L($G(GMRCO)) D SELECT^GMRCA2(.GMRCO) I $D(GMRCQUT) D END Q
I '+($G(GMRCO)) D END Q
I $P($G(^GMR(123,GMRCO,12)),U,5)="P" D Q
. N DIR
. W !,"The requesting facility may not take this action on an "
. W "inter-facility consult."
. S DIR(0)="E" D ^DIR
. D END
I '$$LOCK^GMRCA1(GMRCO) D END Q
S GMRCLCK=1
;
I $D(IOTM),$D(IOBM),$D(IOSTBM) D FULL^VALM1
N GMRC,GMRCSTS,GMRCSF,GMRCSFO,GMRCORTX,GMRCDR
S GMRC(0)=$G(^GMR(123,+GMRCO,0)) Q:GMRC(0)=""
;
S GMRCSFO=$P(GMRC(0),"^",19)
W !!,"Current Significant Findings = "_$S(GMRCSFO="U":"Unknown",GMRCSFO="Y":"Yes",GMRCSFO="N":"No",1:"not entered yet"),!!
S GMRCSF=$$GETSIGF(GMRCSFO)
I GMRCSF=0 D END Q
; If no change in old and new value ask if should continue
I GMRCSF=GMRCSFO D I 'Y D END Q
. W !,"The old and new Significant Findings are the same."
. N DIR,DA,DTOUT,DUOUT,DIRUT,DIROUT
. S DIR("A")="Do you want to proceed with this action"
. S DIR(0)="Y"
. S DIR("B")="NO"
. D ^DIR
. I $D(DTOUT)!$D(DUOUT)!$D(DIRUT)!$D(DIROUT) S Y=0 Q
. I Y=0 Q
;
;Update last action and sig findings but don't change the status
S GMRCSTS=$P(GMRC(0),"^",12),GMRCA=4
S GMRCDR="8////^S X=GMRCSTS;9////^S X=GMRCA;15////^S X=GMRCSF"
D STATUS^GMRCP
I $G(GMRCERR)=1 S GMRCMSG=GMRCERMS D EXAC^GMRCADC(GMRCMSG),END Q
;
;GMRCOM=1 tells AUDIT^GMRCP to do the word-processing logic
;If an actual comment is added, $P(GMRCOM,"^",2)=1 (send alert),
; if not GMRCOM=1 and no '^' exists (do not send alert)
S GMRCOM=1 D AUDIT^GMRCP
I $G(GMRCERR)=1 S GMRCMSG=GMRCERMS D EXAC^GMRCADC(GMRCMSG),END Q
;
I GMRCSTS=2 D EN^GMRCHL7($P(^GMR(123,GMRCO,0),U,2),GMRCO,$G(GMRCTYPE),$G(GMRCRB),"RE",GMRCORNP,$G(GMRCVSIT),,,$G(GMRCAD))
D SETORTX
I GMRCSTS=2 D SENDALRT(GMRCORTX) Q
I +$P(GMRCOM,"^",2) D
. W !,"An alert with the following text will be sent if recipients are selected: "
. W !," "_GMRCORTX_$$ORTX^GMRCAU(+GMRCO)
. W !
. I GMRCSTS'=2 W !,"or the alert will be sent when the order is completed.",!
. I $P($G(^GMR(123,GMRCO,12)),U,5)="F" D
. W !!,"The ordering provider for this inter-facility consult will "
. W "automatically be ",!,"notified.",!
. D PROCALRT^GMRCACMT(GMRCORTX,1,4,GMRCO)
. ;For consults not completed, the original provider may be deleted from
. ;the recipient list for the alert.
D END
Q
;
SETORTX ;Set prefix text for the alert
S GMRCORTX=$S(GMRCSF="N":"No ",GMRCSF="Y":"",1:"Unknown ")
S GMRCORTX=GMRCORTX_"Sig Findings for "_$P($G(^ORD(100.01,+GMRCSTS,0)),"^",2)_" consult " Q
Q
;
SENDALRT(GMRCORTX) ;Send to the requesting provider
N GMRCRP,GMRCADUZ,GMRCDELR
S GMRCRP=$P($G(^GMR(123,+GMRCO,0)),U,14) ;requesting clinician
I +GMRCRP S GMRCADUZ(+GMRCRP)=""
W !,"Alert will be sent to Requesting Provider: "_$P($G(^VA(200,+GMRCRP,0)),U,1)
S GMRCDELR=0
D ANDTO^GMRCACMT
D SENDMSG^GMRCACMT(23,+GMRCO)
;Sig Findings uses the CONSULT/REQUEST RESOLUTION (23) notification
Q
;
GETSIGF(GMRCSFO) ;Get the significant findings
;GMRCSFO is the old significant findings value
N DIR,DA,DTOUT,DUOUT,DIRUT,DIROUT
S DIR(0)="123,15"
S DIR("B")=GMRCSFO
S:DIR("B")="" DIR("B")="unknown"
S DIR("A")="Are there significant findings? (Y/N/U)"
D ^DIR
I $D(DTOUT)!$D(DUOUT)!$D(DIRUT)!$D(DIROUT) Q 0
Q Y
;
END ;cleanup variables
I $G(GMRCLCK) D UNLOCK^GMRCA1(GMRCO)
K GMRCO,GMRCA,GMRCMSG,GMRCOM,GMRCSEL,GMRCERR,GMRCERMS
I $D(DTOUT)!$D(DIROUT) S GMRCQIT=""
S:$D(^TMP("GMRC",$J,"CURRENT","MENU")) XQORM("HIJACK")=^("MENU")
Q
GMRCASF ;SLC/DLT - Significant Findings Action ;7/11/03 13:28
+1 ;;3.0;CONSULT/REQUEST TRACKING;**4,10,14,22,29,35**;DEC 27, 1997
SF(GMRCO) ;Evaluate Significant Findings and update accordingly
+1 ;GMRCO is the selected consult
+2 NEW GMRCQIT,GMRCLCK
+3 IF '$LENGTH($GET(GMRCO))
DO SELECT^GMRCA2(.GMRCO)
IF $DATA(GMRCQUT)
DO END
QUIT
+4 IF '+($GET(GMRCO))
DO END
QUIT
+5 IF $PIECE($GET(^GMR(123,GMRCO,12)),U,5)="P"
Begin DoDot:1
+6 NEW DIR
+7 WRITE !,"The requesting facility may not take this action on an "
+8 WRITE "inter-facility consult."
+9 SET DIR(0)="E"
DO ^DIR
+10 DO END
End DoDot:1
QUIT
+11 IF '$$LOCK^GMRCA1(GMRCO)
DO END
QUIT
+12 SET GMRCLCK=1
+13 ;
+14 IF $DATA(IOTM)
IF $DATA(IOBM)
IF $DATA(IOSTBM)
DO FULL^VALM1
+15 NEW GMRC,GMRCSTS,GMRCSF,GMRCSFO,GMRCORTX,GMRCDR
+16 SET GMRC(0)=$GET(^GMR(123,+GMRCO,0))
IF GMRC(0)=""
QUIT
+17 ;
+18 SET GMRCSFO=$PIECE(GMRC(0),"^",19)
+19 WRITE !!,"Current Significant Findings = "_$SELECT(GMRCSFO="U":"Unknown",GMRCSFO="Y":"Yes",GMRCSFO="N":"No",1:"not entered yet"),!!
+20 SET GMRCSF=$$GETSIGF(GMRCSFO)
+21 IF GMRCSF=0
DO END
QUIT
+22 ; If no change in old and new value ask if should continue
+23 IF GMRCSF=GMRCSFO
Begin DoDot:1
+24 WRITE !,"The old and new Significant Findings are the same."
+25 NEW DIR,DA,DTOUT,DUOUT,DIRUT,DIROUT
+26 SET DIR("A")="Do you want to proceed with this action"
+27 SET DIR(0)="Y"
+28 SET DIR("B")="NO"
+29 DO ^DIR
+30 IF $DATA(DTOUT)!$DATA(DUOUT)!$DATA(DIRUT)!$DATA(DIROUT)
SET Y=0
QUIT
+31 IF Y=0
QUIT
End DoDot:1
IF 'Y
DO END
QUIT
+32 ;
+33 ;Update last action and sig findings but don't change the status
+34 SET GMRCSTS=$PIECE(GMRC(0),"^",12)
SET GMRCA=4
+35 SET GMRCDR="8////^S X=GMRCSTS;9////^S X=GMRCA;15////^S X=GMRCSF"
+36 DO STATUS^GMRCP
+37 IF $GET(GMRCERR)=1
SET GMRCMSG=GMRCERMS
DO EXAC^GMRCADC(GMRCMSG)
DO END
QUIT
+38 ;
+39 ;GMRCOM=1 tells AUDIT^GMRCP to do the word-processing logic
+40 ;If an actual comment is added, $P(GMRCOM,"^",2)=1 (send alert),
+41 ; if not GMRCOM=1 and no '^' exists (do not send alert)
+42 SET GMRCOM=1
DO AUDIT^GMRCP
+43 IF $GET(GMRCERR)=1
SET GMRCMSG=GMRCERMS
DO EXAC^GMRCADC(GMRCMSG)
DO END
QUIT
+44 ;
+45 IF GMRCSTS=2
DO EN^GMRCHL7($PIECE(^GMR(123,GMRCO,0),U,2),GMRCO,$GET(GMRCTYPE),$GET(GMRCRB),"RE",GMRCORNP,$GET(GMRCVSIT),,,$GET(GMRCAD))
+46 DO SETORTX
+47 IF GMRCSTS=2
DO SENDALRT(GMRCORTX)
QUIT
+48 IF +$PIECE(GMRCOM,"^",2)
Begin DoDot:1
+49 WRITE !,"An alert with the following text will be sent if recipients are selected: "
+50 WRITE !," "_GMRCORTX_$$ORTX^GMRCAU(+GMRCO)
+51 WRITE !
+52 IF GMRCSTS'=2
WRITE !,"or the alert will be sent when the order is completed.",!
+53 IF $PIECE($GET(^GMR(123,GMRCO,12)),U,5)="F"
Begin DoDot:2
End DoDot:2
+54 WRITE !!,"The ordering provider for this inter-facility consult will "
+55 WRITE "automatically be ",!,"notified.",!
+56 DO PROCALRT^GMRCACMT(GMRCORTX,1,4,GMRCO)
+57 ;For consults not completed, the original provider may be deleted from
+58 ;the recipient list for the alert.
End DoDot:1
+59 DO END
+60 QUIT
+61 ;
SETORTX ;Set prefix text for the alert
+1 SET GMRCORTX=$SELECT(GMRCSF="N":"No ",GMRCSF="Y":"",1:"Unknown ")
+2 SET GMRCORTX=GMRCORTX_"Sig Findings for "_$PIECE($GET(^ORD(100.01,+GMRCSTS,0)),"^",2)_" consult "
QUIT
+3 QUIT
+4 ;
SENDALRT(GMRCORTX) ;Send to the requesting provider
+1 NEW GMRCRP,GMRCADUZ,GMRCDELR
+2 ;requesting clinician
SET GMRCRP=$PIECE($GET(^GMR(123,+GMRCO,0)),U,14)
+3 IF +GMRCRP
SET GMRCADUZ(+GMRCRP)=""
+4 WRITE !,"Alert will be sent to Requesting Provider: "_$PIECE($GET(^VA(200,+GMRCRP,0)),U,1)
+5 SET GMRCDELR=0
+6 DO ANDTO^GMRCACMT
+7 DO SENDMSG^GMRCACMT(23,+GMRCO)
+8 ;Sig Findings uses the CONSULT/REQUEST RESOLUTION (23) notification
+9 QUIT
+10 ;
GETSIGF(GMRCSFO) ;Get the significant findings
+1 ;GMRCSFO is the old significant findings value
+2 NEW DIR,DA,DTOUT,DUOUT,DIRUT,DIROUT
+3 SET DIR(0)="123,15"
+4 SET DIR("B")=GMRCSFO
+5 IF DIR("B")=""
SET DIR("B")="unknown"
+6 SET DIR("A")="Are there significant findings? (Y/N/U)"
+7 DO ^DIR
+8 IF $DATA(DTOUT)!$DATA(DUOUT)!$DATA(DIRUT)!$DATA(DIROUT)
QUIT 0
+9 QUIT Y
+10 ;
END ;cleanup variables
+1 IF $GET(GMRCLCK)
DO UNLOCK^GMRCA1(GMRCO)
+2 KILL GMRCO,GMRCA,GMRCMSG,GMRCOM,GMRCSEL,GMRCERR,GMRCERMS
+3 IF $DATA(DTOUT)!$DATA(DIROUT)
SET GMRCQIT=""
+4 IF $DATA(^TMP("GMRC",$JOB,"CURRENT","MENU"))
SET XQORM("HIJACK")=^("MENU")
+5 QUIT