1 | GMRCTIU1 ;SLC/JER - More CT/TIU interface modules ;7/9/2003 [7/9/03 1:51pm]
|
---|
2 | ;;3.0;CONSULT/REQUEST TRACKING;**1,4,21,17,34**;DEC 27, 1997
|
---|
3 | ;
|
---|
4 | ;This routine invokes IA #2693
|
---|
5 | ROLLBACK(DA,TIUDA) ; Roll-back a CT record when result is deleted or
|
---|
6 | ;reassigned
|
---|
7 | ;Disassociate Note logic
|
---|
8 | ;The action removes the association of a TIU note with a consult.
|
---|
9 | ;The new CPRS status will change to "ACTIVE", unless one of the
|
---|
10 | ;remaining notes has a completed status.
|
---|
11 | ;This action should send an alert to the service notification users.
|
---|
12 | N DIE,DR,GMRCSTS,GMRCA,GMRCO,GMRCOM,GMRCORNP,GMRCDFN,GMRCNODE,GMRCLIST,GMRCD0,GMRCD1,GMRCSF,GMRCADUZ,MSGTOSRV,GMRCATX,GMRCORTX,GMRCSTAR,GMRCERR,ACTDA,ACTREC,GMRCLSCH,GMRCLER,GMRCRBDA,GMRCTDA,GMRCRSLT
|
---|
13 | S GMRCNODE=$G(^GMR(123,+DA,0))
|
---|
14 | ; If current result has never been posted, no need to roll back
|
---|
15 | ; Patch GMRC*1*21
|
---|
16 | I '+$O(^GMR(123,+DA,50,"B",+TIUDA_";TIU(8925,",0)) Q
|
---|
17 | I ($P(GMRCNODE,U,20)=TIUDA) S DIE="^GMR(123,",DR="16///@" D ^DIE
|
---|
18 | S GMRCD0=DA,GMRCD1=0 F S GMRCD1=$O(^GMR(123,GMRCD0,50,GMRCD1)) Q:'GMRCD1 D
|
---|
19 | .N DA,DIK
|
---|
20 | .Q:'(TIUDA=+$G(^GMR(123,GMRCD0,50,GMRCD1,0)))
|
---|
21 | .S DA(1)=GMRCD0,DA=GMRCD1
|
---|
22 | .S DIK="^GMR(123,"_DA(1)_",50,"
|
---|
23 | .D ^DIK
|
---|
24 | ;
|
---|
25 | S GMRCA=12,GMRCO=DA
|
---|
26 | D GETLIST^GMRCTIUL(DA,2,1,.GMRCLIST)
|
---|
27 | S GMRCSTS=9
|
---|
28 | ;Following if statement and DO block accomplish the following
|
---|
29 | ;If there are no other associated TIU Docs then
|
---|
30 | ;Set status to scheduled if it was last status before the TIU doc
|
---|
31 | ;Set status to pending if it was the last status before the TIU doc
|
---|
32 | ;Set status to active otherwise
|
---|
33 | I '$G(GMRCLIST(0)) S GMRCSTS=6 D
|
---|
34 | .S ACTDA=0,ACTREC=0,GMRCRBDA=0,GMRCLER=-1,GMRCLSCH=-1
|
---|
35 | .F S ACTDA=$O(^GMR(123,DA,40,ACTDA)) Q:-ACTDA=0 D
|
---|
36 | ..S ACTREC=$G(^GMR(123,DA,40,ACTDA,0))
|
---|
37 | ..I $P(ACTREC,U,2)=9,$P($P(ACTREC,U,9),";",1)=TIUDA S GMRCRBDA=ACTDA
|
---|
38 | ..I $P(ACTREC,U,2)=8 S GMRCLSCH=ACTDA
|
---|
39 | ..I $P(ACTREC,U,2)=11 S GMRCLER=ACTDA
|
---|
40 | .I GMRCLER'=-1,GMRCLER>GMRCLSCH S GMRCSTS=5
|
---|
41 | .I GMRCLSCH'=-1,GMRCLSCH>GMRCLER S GMRCSTS=8
|
---|
42 | E S GMRCD0="" F S GMRCD0=$O(^TMP("GMRC50",$J,GMRCD0)) Q:'$L(GMRCD0) D
|
---|
43 | .Q:(+GMRCD0=TIUDA)
|
---|
44 | .S GMRCD1=0 F S GMRCD1=$O(^TMP("GMRC50",$J,GMRCD0,GMRCD1)) Q:'GMRCD1 D
|
---|
45 | ..S:($P($G(^TMP("GMRC50",$J,GMRCD0,GMRCD1)),U,6)="completed") GMRCSTS=2
|
---|
46 | Q:$G(NOSAVE)
|
---|
47 | ;Make status completed if the Consult was Admin. Completed
|
---|
48 | S ACTDA=0,ACTREC=0
|
---|
49 | F S ACTDA=$O(^GMR(123,DA,40,ACTDA)) Q:-ACTDA=0 D
|
---|
50 | .S ACTREC=$G(^GMR(123,DA,40,ACTDA,0))
|
---|
51 | .I $P(ACTREC,U,2)=10,$P(ACTREC,U,9)="" S GMRCSTS=2
|
---|
52 | D STATUS^GMRCP
|
---|
53 | K ^TMP("GMRC50",$J),^TMP("GMRC50R",$J)
|
---|
54 | ;
|
---|
55 | S GMRCOM=0,MSGTOSRV=0,GMRCRSLT=TIUDA_";TIU(8925," D AUDIT^GMRCP
|
---|
56 | ;
|
---|
57 | ;Build message information if status has changed or sig finding="Y"
|
---|
58 | S GMRCSF=$P(GMRCNODE,U,19)
|
---|
59 | I ($P(GMRCNODE,U,12)=$P($G(^GMR(123,GMRCO,0)),U,12)) D Q:GMRCATX=""
|
---|
60 | . S GMRCATX="" Q:GMRCSF'="Y"
|
---|
61 | . S GMRCATX="*Removed consult note for "
|
---|
62 | E S GMRCATX=$S((GMRCSF="Y"):"*",1:"")_"Reactivated consult, removed note for ",MSGTOSRV=1
|
---|
63 | S GMRCORNP=$P(GMRCNODE,U,14),GMRCDFN=$P(GMRCNODE,U,2)
|
---|
64 | S GMRCORTX=$$ORTX^GMRCAU(GMRCO)
|
---|
65 | S GMRCORTX=GMRCATX_GMRCORTX
|
---|
66 | S:GMRCORNP GMRCADUZ(GMRCORNP)=""
|
---|
67 | S GMRCTDA=TIUDA
|
---|
68 | D EXTRACT^TIULQ(GMRCTDA,"GMRCSTAR",.GMRCERR,.05)
|
---|
69 | I '$G(GMRCERR) D
|
---|
70 | .I $G(GMRCSTAR(GMRCTDA,.05,"I"))'=5 D
|
---|
71 | ..D MSG^GMRCP(GMRCDFN,GMRCORTX,+GMRCO,23,.GMRCADUZ,MSGTOSRV)
|
---|
72 | Q:($P(GMRCNODE,U,12)=$P($G(^GMR(123,+GMRCO,0)),U,12))
|
---|
73 | ;
|
---|
74 | ;On status change, send "SC" (status change) HL7 msg to update order
|
---|
75 | D EN^GMRCHL7(GMRCDFN,+GMRCO,$G(GMRCTYPE),$G(GMRCRB),"SC",GMRCORNP,$G(GMRCVSIT),.GMRCOM)
|
---|
76 | Q
|
---|
77 | ;
|
---|
78 | STATUS ;Update the status of a consult that has a TIU result
|
---|
79 | N GMRCAD,GMRCATX,GMRCOA,GMRCOSTS,GMRCOTFN,GMRC,GMRCSF,GMRCLAE,GMRCRSLT,GMRCADUZ,GMRCOADT
|
---|
80 | D GETOLD
|
---|
81 | S GMRCORNP=$G(GMRCAUTH) ;author
|
---|
82 | S GMRCRSLT=GMRCTUFN_";TIU(8925,"
|
---|
83 | ;
|
---|
84 | ;Evaluate whether a complete action is actually an addendum or New note
|
---|
85 | I GMRCA=10 S GMRCA=$$EVALACT(GMRCOSTS,+GMRCO,GMRCRSLT)
|
---|
86 | ;
|
---|
87 | ;Update the status and last activity field
|
---|
88 | ;Do not change the status if already completed
|
---|
89 | I GMRCOSTS=2,GMRCSTS=9 S GMRCSTS=2
|
---|
90 | D STATUS^GMRCP
|
---|
91 | ;
|
---|
92 | ;Update activity log
|
---|
93 | D AUDIT
|
---|
94 | ;
|
---|
95 | ;Update the last TIU entry modified and add result to result multiple
|
---|
96 | D ADD^GMRCTIUA(GMRCTUFN,GMRCO)
|
---|
97 | ;
|
---|
98 | ;Update order
|
---|
99 | S GMRCORNP=$P(^GMR(123,+GMRCO,0),"^",14)
|
---|
100 | D EN^GMRCHL7(GMRCDFN,+GMRCO,$G(GMRCTYPE),$G(GMRCRB),"RE",GMRCORNP,$G(GMRCVSIT),.GMRCOM)
|
---|
101 | ;
|
---|
102 | ;Send a message
|
---|
103 | I $$COMPLETE(GMRCA) D
|
---|
104 | . N GMRCDATA
|
---|
105 | . S GMRCATX=""
|
---|
106 | . I GMRCA=14 S GMRCATX="New Note for "
|
---|
107 | . I GMRCA=13 S GMRCATX="Addendum Added for "
|
---|
108 | . S GMRCATX=$S((GMRCSF="Y"):"*",1:"")_GMRCATX
|
---|
109 | . S GMRCORTX=GMRCATX_"Completed Consult "_$$ORTX^GMRCAU(+GMRCO)
|
---|
110 | . S GMRCDATA=+GMRCO
|
---|
111 | . S GMRCDATA=GMRCDATA_"|"_$G(GMRCRSLT)
|
---|
112 | . I $P(GMRC(0),"^",14) S GMRCADUZ($P(GMRC(0),"^",14))=""
|
---|
113 | . D MSG^GMRCP(GMRCDFN,GMRCORTX,GMRCDATA,23,.GMRCADUZ,0)
|
---|
114 | . Q
|
---|
115 | Q
|
---|
116 | ;
|
---|
117 | GETOLD ;save the old values of status, and the last activity data
|
---|
118 | ;to determine how to update status and TIU activity log
|
---|
119 | S GMRC(0)=$G(^GMR(123,+GMRCO,0))
|
---|
120 | S GMRCDFN=$P(GMRC(0),"^",2)
|
---|
121 | S GMRCSF=$P(GMRC(0),U,19)
|
---|
122 | S GMRCOSTS=$P(GMRC(0),"^",12) ;status before activity
|
---|
123 | S GMRCLAE=+$P($G(^GMR(123,+GMRCO,40,0)),U,3) ;last activity entry
|
---|
124 | S GMRC(40)=$G(^GMR(123,+GMRCO,40,+GMRCLAE,0))
|
---|
125 | S GMRCOADT=+$P(GMRC(40),U,1) ;last activity entry date
|
---|
126 | S GMRCOA=$P(GMRC(40),"^",2) ;last activity
|
---|
127 | S GMRCOTFN=$P(GMRC(40),"^",9) ;last result
|
---|
128 | Q
|
---|
129 | ;
|
---|
130 | AUDIT ;Determine appropriate update activity.
|
---|
131 | ;Quit if new activity is same as previous "Incomplete Rpt" activity
|
---|
132 | I GMRCOTFN=GMRCRSLT,GMRCOA=9,GMRCOA=GMRCA,GMRCOSTS=GMRCSTS Q
|
---|
133 | ;
|
---|
134 | S GMRCOM=0
|
---|
135 | S GMRCDT=$$NOW^XLFDT
|
---|
136 | ;Check for overwrite of incomplete rpt activity if the new
|
---|
137 | ;activity occurs within 15 minutes of the last.
|
---|
138 | S GMRCOADT=$$FMADD^XLFDT(GMRCOADT,0,0,15)
|
---|
139 | I GMRCOTFN=GMRCRSLT,GMRCOA=9,$$COMPLETE(GMRCA),GMRCDT<GMRCOADT D AUDIT1 Q
|
---|
140 | D AUDIT^GMRCP Q
|
---|
141 | Q
|
---|
142 | ;
|
---|
143 | AUDIT1 ;overwrite last activity
|
---|
144 | L +^GMR(123,+GMRCO,40):5 I '$T S GMRCUT=1,GMRCERR=1,GMRCERMS="Activity Trail Not filed - Consult In Use By Another User." L -^GMR(123,+GMRCO,40) Q
|
---|
145 | S DA=$P(^GMR(123,+GMRCO,40,0),"^",3)
|
---|
146 | D AUDIT1^GMRCP
|
---|
147 | Q
|
---|
148 | ;
|
---|
149 | COMPLETE(GMRCA) ;Determine if the action is a complete action (10,13,14)
|
---|
150 | Q $S(GMRCA=13:1,GMRCA=14:1,GMRCA=10:1,1:0)
|
---|
151 | ;
|
---|
152 | EVALACT(GMRCOSTS,GMRCO,GMRCRSLT) ;Evaluate complete action based on prev results and sts
|
---|
153 | N EVALA,GMRCLAE
|
---|
154 | I '$D(^GMR(123,+GMRCO,50)) Q 10
|
---|
155 | I GMRCOSTS'=2 Q 10
|
---|
156 | I '$D(^GMR(123,+GMRCO,50,"B",GMRCRSLT)) Q 14
|
---|
157 | S EVALA=0,GMRCLAE=+$P($G(^GMR(123,+GMRCO,40,0)),U,3)+1
|
---|
158 | F S GMRCLAE=$O(^GMR(123,+GMRCO,40,GMRCLAE),-1) Q:'GMRCLAE D Q:+EVALA
|
---|
159 | . S GMRCLAE(40)=^GMR(123,+GMRCO,40,GMRCLAE,0)
|
---|
160 | . I $P(GMRCLAE(40),U,9)=GMRCRSLT D
|
---|
161 | .. I $P(GMRCLAE(40),U,2)=9 S EVALA=14 Q
|
---|
162 | .. I $$COMPLETE($P(GMRCLAE(40),U,2)) S EVALA=13 Q
|
---|
163 | I +EVALA Q EVALA
|
---|
164 | Q 10
|
---|
165 | ;
|
---|