1 | GMRCAFRD ;SLC/DLT,DCM,JFR - LM FORWARD ACTION ;7/11/03 14:02
|
---|
2 | ;;3.0;CONSULT/REQUEST TRACKING;**1,4,10,12,15,22,35,39**;DEC 27, 1997
|
---|
3 | ;
|
---|
4 | ; This routine invokes IA #2395
|
---|
5 | ;
|
---|
6 | FR(GMRCO) ;Forward Request to a new service
|
---|
7 | N ORVP,GMRCLCK,DFN,GMRCACT
|
---|
8 | W !!,"Forward Request To Another Service For Action."
|
---|
9 | W !,"Select the service to send the consult to.",!
|
---|
10 | S:$D(GMRCSS) GMRCSSS=GMRCSS
|
---|
11 | N GMRCPL,GMRCPR,GMRCURG,GMRCDG,GMRCFF,GMRCORNP,GMRCAD,GMRCTO,GMRCADUZ
|
---|
12 | K GMRCQUT,GMRCSEL,GMRCSSS
|
---|
13 | I '$L($G(GMRCO)) D SELECT^GMRCA2(.GMRCO) I $D(GMRCQUT) D END Q
|
---|
14 | I '+$G(GMRCO) D END S GMRCQUT=1 Q
|
---|
15 | I $P($G(^GMR(123,GMRCO,12)),U,5)="P" D Q
|
---|
16 | . N DIR
|
---|
17 | . W !,"The requesting facility may not take this action on an "
|
---|
18 | . W "inter-facility consult."
|
---|
19 | . S DIR(0)="E" D ^DIR
|
---|
20 | . D END
|
---|
21 | . S GMRCQUT=1
|
---|
22 | I '$$LOCK^GMRCA1(GMRCO) D END S GMRCQUT=1 Q
|
---|
23 | S GMRCLCK=1
|
---|
24 | ;
|
---|
25 | I $P(^GMR(123,GMRCO,0),"^",12)<3 S GMRCMSG="NO ACTION POSSIBLE. This Consult Has Already Been Completed Or Discontinued." D EXAC^GMRCADC(GMRCMSG),END S GMRCQUT=1 Q
|
---|
26 | I $P(^GMR(123,GMRCO,0),"^",12)=13 S GMRCMSG="NO ACTION POSSIBLE. This Consult Has Already Been Cancelled." D EXAC^GMRCADC(GMRCMSG),END S GMRCQUT=1 Q
|
---|
27 | I $P(^GMR(123,GMRCO,0),"^",12)=9 D Q:+$G(GMRCQUT)
|
---|
28 | .S GMRCMSG="Invalid action. This consult has partial results."
|
---|
29 | .S GMRCMSG(1)="Remove the associated results before forwarding."
|
---|
30 | .D EXAC^GMRCADC(.GMRCMSG),END S GMRCQUT=1 Q
|
---|
31 | ;
|
---|
32 | I $D(IOBM),$D(IOTM),$D(IOSTBM) D FULL^VALM1
|
---|
33 | I $P(^GMR(123,GMRCO,0),"^",16) W !!,"This is a SERVICE ENTERED order stub. Please send the written consult to the",!,"Service, in addition to the automated forwarding!"
|
---|
34 | S DFN=+$P(^GMR(123,GMRCO,0),"^",2)
|
---|
35 | S GMRCTO=1,GMRCASV="Forward Consult To Which Service/Specialty: "
|
---|
36 | D ASRV^GMRCASV K GMRCASV I $S($D(DTOUT):1,$D(DIROUT):1,$D(GMRCQUT):1,1:0) D END Q
|
---|
37 | I 'GMRCDG S GMRCMSG="No Service Was Selected. Consult Was Not Forwarded To Any Service!" D EXAC^GMRCADC(GMRCMSG),END S GMRCQUT=1 Q
|
---|
38 | S GMRCFF=$P(^GMR(123,GMRCO,0),"^",5) I GMRCFF=+GMRCDG S GMRCMSG="The Forwarding Service Cannot Forward A Consult To Itself!" D EXAC^GMRCADC(GMRCMSG),END S GMRCQUT=1 Q
|
---|
39 | S GETPROV="Who is responsible for Forwarding the Consult?"
|
---|
40 | FRGTPRV D GETPROV^GMRCAU I '$D(GMRCORNP) D END S GMRCQUT=1 Q
|
---|
41 | S GMRCACT=$$PROVIDER^XUSER(GMRCORNP) I $P(GMRCACT,U)'=1 D G FRGTPRV
|
---|
42 | .W !!,"***User account is TERMINATED please choose another responsible user.***"
|
---|
43 | S GMRCAD=$$GETDT^GMRCUTL1 I GMRCAD="^" D END S GMRCQUT=1 Q
|
---|
44 | I '$G(GMRCAD) S GMRCAD=$$NOW^XLFDT
|
---|
45 | N GMRCSS,GMRCSSNM,GMRCA,GMRCMSG,GMRCIROL,GMRCINM,GMRCIROU,ORSTS
|
---|
46 | D DEFAULT
|
---|
47 | S GMRCSS=+GMRCDG
|
---|
48 | I +GMRCSS,'$D(^GMR(123.5,+GMRCSS,0)) S GMRCMSG="Error in Service Chosen - SERVICE Does Not Exist!" D EXAC^GMRCADC(GMRCMSG),END S GMRCQUT=1 Q
|
---|
49 | S GMRCSSNM=$S($L($G(^GMR(123.5,+GMRCSS,.1))):^(.1),1:$P($G(^GMR(123.5,+GMRCSS,0)),U,1))
|
---|
50 | D URG I $D(GMRCEND),GMRCEND D END S GMRCQUT=1 Q
|
---|
51 | S GMRCA=17,DR=""
|
---|
52 | I $D(^GMR(123.5,+GMRCSS,"IFC")) D ; if fwd to IFC serv, get extra flds
|
---|
53 | . S GMRCIROU=$P(^GMR(123.5,+GMRCSS,"IFC"),U) Q:GMRCIROU="" ;no rout fac
|
---|
54 | . S GMRCINM=$P(^GMR(123.5,+GMRCSS,"IFC"),U,2) Q:GMRCINM="" ;no serv nm
|
---|
55 | . S GMRCA=25,GMRCIROL="P"
|
---|
56 | . S DR=".07////^S X=GMRCIROU;.125////^S X=GMRCIROL;.131///^S X=GMRCINM;"
|
---|
57 | S DIE="^GMR(123,",DA=GMRCO,ORSTS=5
|
---|
58 | S DR=DR_"1////^S X=GMRCSS;5////^S X=GMRCURGI;8////^S X=ORSTS;9////^S X=GMRCA;.1///@"
|
---|
59 | L +^GMR(123,GMRCO):2 I '$T K DIE,DA,DR S GMRCMSG="Another User Is Accessing This Record. UPDATE WAS UNSUCCESSFUL.",GMRCMSG(1)="Try Again Later." D EXAC^GMRCADC(.GMRCMSG),END S GMRCQUT=1 Q
|
---|
60 | D ^DIE L -^GMR(123,GMRCO) K DIE,DA,DR
|
---|
61 | S GMRCOM=1 D AUDIT^GMRCP ;GMRCORNP is the responsible provider here
|
---|
62 | ;
|
---|
63 | I $G(GMRCLCK) D UNLOCK^GMRCA1(GMRCO) ;unlk before FWD changes order #
|
---|
64 | ;
|
---|
65 | FRMSG ; Common logic used by GUI and List Manager to process the HL7 message
|
---|
66 | ; to update the order in OE/RR and then forward an alert to recipients
|
---|
67 | ; is passed in as the DUZ instead of the responsible provider
|
---|
68 | D EN^GMRCHL7(DFN,GMRCO,$G(GMRCTYPE),$G(GMRCRB),"XX^FORWARD",$G(DUZ),$G(VISIT),.GMRCOM,,$G(GMRCAD))
|
---|
69 | S GMRCADUZ=""
|
---|
70 | S GMRCORNP=$P(^GMR(123,GMRCO,0),"^",14) ;This is the original provider that ordered the consult
|
---|
71 | I +$G(GMRCORNP) S GMRCADUZ(+GMRCORNP)="" ;alert original provider of forward
|
---|
72 | S GMRCORTX="Forwarded consult "_$$ORTX^GMRCAU(+GMRCO)_" ("_GMRCURG_")"
|
---|
73 | D MSG^GMRCP(DFN,GMRCORTX,+GMRCO,27,.GMRCADUZ,1) ;GMRCO=IEN of consult from file 123; 27 is notification entry from file ORD(100.9
|
---|
74 | K GMRCOM
|
---|
75 | S GMRCDEV=$P($G(^GMR(123.5,GMRCSS,123)),"^",9)
|
---|
76 | I GMRCDEV D PRNT^GMRCUTL1(GMRCSS,+GMRCO)
|
---|
77 | D END
|
---|
78 | Q
|
---|
79 | URG ;Get the default urgency
|
---|
80 | N X,Y,XQORM,DIROUT,DTOUT,DIRUT,DUOUT
|
---|
81 | I $P(^GMR(123,+GMRCO,0),"^",18)["I" D
|
---|
82 | .I GMRCTYPE="GMRCOR CONSULT" S X="GMRCURGENCYM CSLT - INPATIENT"
|
---|
83 | .S X="GMRCURGENCYM REQ - INPATIENT"
|
---|
84 | E S X="GMRCURGENCYM - OUTPATIENT"
|
---|
85 | I '$D(GMRCURG) S GMRCURGI=$O(^ORD(101,"B","GMRCURGENCY - ROUTINE","")) S:+GMRCURGI GMRCURG=$P($G(^ORD(101,+GMRCURGI,0)),"^",2)
|
---|
86 | S Y=$O(^ORD(101,"B",X,""))
|
---|
87 | S XQORM=+Y_";ORD(101,",XQORM(0)="1A\",XQORM("A")="Urgency: ",XQORM("NO^^")=""
|
---|
88 | S:$L(GMRCURG) XQORM("B")=GMRCURG D EN^XQORM I X="^"!($D(DIROUT)) K XQORM S GMRCEND=1 Q
|
---|
89 | K XQORM(0),XQORM("A"),XQORM("B"),XQORM("NO^^") S XQORM=""
|
---|
90 | I '$D(Y) S GMRCEND=1 Q
|
---|
91 | I $D(Y(1)) S GMRCURG=$P(Y(1),"^",3),GMRCURGI=$P(Y(1),"^",2)
|
---|
92 | Q
|
---|
93 | DEFAULT ;Set up defaults for editing to be equal to the existing data.
|
---|
94 | D DEM^GMRCU
|
---|
95 | N GMRC,GMRCDIC,GMRCPLI,GMRCPRI
|
---|
96 | Q:'$D(GMRCO) S (GMRCSS,GMRCSSNM,GMRCPL,GMRCPR,GMRCPRI,GMRCURG)=""
|
---|
97 | S GMRCOM=0,GMRC(0)=$S($D(^GMR(123,+GMRCO,0)):^(0),1:"")
|
---|
98 | S GMRCSS=$P(GMRC(0),"^",5) I +GMRCSS,$D(^GMR(123.5,+GMRCSS,0)) S GMRCSSNM=$S($L($P($G(^GMR(123.5,+GMRCSS,0)),U,1)):$P(^(0),U,1),1:"")
|
---|
99 | S GMRCPLI=$P(GMRC(0),"^",10) I GMRCPLI S GMRCPL=$P($G(^ORD(101,GMRCPLI,0)),"^",2)
|
---|
100 | S GMRCURGI=$P(GMRC(0),"^",9) I GMRCURGI S GMRCURG=$P($G(^ORD(101,GMRCURGI,0)),"^",2)
|
---|
101 | S GMRCPRI=$P(GMRC(0),"^",8) I GMRCPRI["ORD(101" D
|
---|
102 | . S GMRCPR=$$GET1^DIQ(101,+GMRCPRI,1)
|
---|
103 | I $L(GMRCPRI),GMRCPRI'["ORD(101" D ;ZPROC
|
---|
104 | . S GMRCPR=$$GET1^DIQ(123.3,+GMRCPRI,.01)
|
---|
105 | TYPE ;This entry point is used when the only default needed is the GMRCTYPE
|
---|
106 | ;Called by GMRCGUIA to get variables ready for FRMSG call.
|
---|
107 | S GMRCTYPE=$$GET1^DIQ(123,+GMRCO,13,"I") ;ZPROC (P or C)
|
---|
108 | Q
|
---|
109 | END ;Kill off variables and exit
|
---|
110 | I $G(GMRCLCK) D UNLOCK^GMRCA1(GMRCO)
|
---|
111 | K GETPROV,GMRCDG,GMRCDEV,GMRCEND,GMRCFF,GMRCOM,GMRCIFN,GMRCO,GMRCORNP
|
---|
112 | K GMRCTYPE,GMRCORTX,GMRCPL,GMRCPR,GMRCSEL,GMRCURG,GMRCADUZ,Y
|
---|
113 | K DTOUT,DIROUT,DUOUT,GMRCURGI
|
---|
114 | S:$D(^TMP("GMRC",$J,"CURRENT","MENU")) XQORM("HIJACK")=^("MENU")
|
---|
115 | Q
|
---|