1 | GMRCIAC2 ;SLC/JFR - FILE IFC ACTIVITIES CONT'D ;07/08/03 11:30
|
---|
2 | ;;3.0;CONSULT/REQUEST TRACKING;**22,28,35**;DEC 27, 1997
|
---|
3 | Q ;can't start here
|
---|
4 | FILRES(GMRCO,GMRCOBX) ;file or delete results
|
---|
5 | N GMRCRES,GMRCFIL,GMRCSITE,GMRCROOT,RESIEN,GMRCERR
|
---|
6 | S GMRCRES=+$P(GMRCOBX,"|",5)
|
---|
7 | S GMRCFIL=$P($P(GMRCOBX,"|",3),U,3)
|
---|
8 | S GMRCROOT=$S($P($P(GMRCOBX,"|",3),U,2)["TIU":"TIU(",1:"MCAR(")
|
---|
9 | S GMRCFIL=$P(GMRCFIL,"VA",2)
|
---|
10 | S GMRCRES=GMRCRES_";"_GMRCROOT_GMRCFIL
|
---|
11 | S GMRCSITE=$$IEN^XUAF4($P($P(GMRCOBX,"|",5),U,3))
|
---|
12 | I $P(GMRCOBX,"|",11)'="D" D ;add new result
|
---|
13 | . S FDA(1,123.051,"+1,"_GMRCO_",",.01)=$$NOW^XLFDT
|
---|
14 | . S FDA(1,123.051,"+1,"_GMRCO_",",.02)=GMRCRES
|
---|
15 | . S FDA(1,123.051,"+1,"_GMRCO_",",.03)=GMRCSITE
|
---|
16 | I $P(GMRCOBX,"|",11)="D" D ; find and delete result
|
---|
17 | . N RESIEN
|
---|
18 | . S RESIEN=$O(^GMR(123,GMRCO,51,"AR",GMRCRES,GMRCSITE,0))
|
---|
19 | . I 'RESIEN Q
|
---|
20 | . S FDA(1,123.051,RESIEN_","_GMRCO_",",.01)="@"
|
---|
21 | I '$D(FDA) Q
|
---|
22 | D UPDATE^DIE("","FDA(1)",,"GMRCERR")
|
---|
23 | Q
|
---|
24 | ;
|
---|
25 | UPDORD(GMRCDA,GMRC40) ; update CPRS order if action on placer order.
|
---|
26 | ; Input:
|
---|
27 | ; GMRCDA = ien from file 123
|
---|
28 | ; GMRC40 = ien of activity in 40 multiple
|
---|
29 | ;
|
---|
30 | N GMRCDFN,GMRCAD,AC,GMRCOC,GMRCMT
|
---|
31 | S GMRCDFN=$P(^GMR(123,GMRCDA,0),U,2)
|
---|
32 | I $O(^GMR(123,GMRCDA,40,GMRC40,1,0)) D
|
---|
33 | . S GMRCMT=1,GMRCMT(0)=GMRC40
|
---|
34 | S GMRCAD=$P(^GMR(123,GMRCDA,40,GMRC40,0),U,3)
|
---|
35 | S AC=$P(^GMR(123,GMRCDA,40,GMRC40,0),U,2)
|
---|
36 | S GMRCOC=$S(AC=6:"OD",AC=19:"OC",AC=10:"RE",AC=9:"RE",AC=8:"ZC",1:"SC")
|
---|
37 | D EN^GMRCHL7(GMRCDFN,GMRCDA,"","",GMRCOC,"","",.GMRCMT,,GMRCAD)
|
---|
38 | Q
|
---|
39 | FILEACT(GMRCO,GMRCLAST,GMRCFR,GMRCAR) ;file REQUEST PROCESSING ACTIVITY
|
---|
40 | ; Input:
|
---|
41 | ; GMRCO = ien from file 123
|
---|
42 | ; GMRCLAST = last action taken on request
|
---|
43 | ; GMRCFR = service that consult was forwarded from
|
---|
44 | ; GMRCAR = name of the array containing the message
|
---|
45 | ;
|
---|
46 | N GMRCORC,GMRCFDA,GMRCRP,GMRCEP,GMRCACT,GMRCERR,FDA
|
---|
47 | M ^TMP("GMRCFIL",$J)=@GMRCAR
|
---|
48 | S GMRCORC=^TMP("GMRCFIL",$J,"ORC")
|
---|
49 | S GMRCFDA(.01)=$$NOW^XLFDT
|
---|
50 | S GMRCFDA(.25)=$$HL7TFM^XLFDT($P(GMRCORC,"|",9))
|
---|
51 | S GMRCFDA(1)=GMRCLAST
|
---|
52 | S GMRCFDA(2)=$$HL7TFM^XLFDT($P(GMRCORC,"|",15))
|
---|
53 | D ;get entering and responsible persons
|
---|
54 | . D UNHLNAME^GMRCIUTL($P(GMRCORC,"|",10),.GMRCEP,0,U)
|
---|
55 | . D UNHLNAME^GMRCIUTL($P(GMRCORC,"|",12),.GMRCRP,0,U)
|
---|
56 | S GMRCFDA(.21)=GMRCEP
|
---|
57 | S GMRCFDA(.22)=GMRCRP
|
---|
58 | S GMRCFDA(.23)=$P($G(^TMP("GMRCFIL",$J,"OBX",5,1)),"|",5)
|
---|
59 | I $D(GMRCFR) S GMRCFDA(.31)=GMRCFR
|
---|
60 | I $D(^TMP("GMRCFIL",$J,"OBX",4)) D
|
---|
61 | . N RFIL,RSLT,DESC,GMRCOBX,ROOT,RSITE
|
---|
62 | . S GMRCOBX=^TMP("GMRCFIL",$J,"OBX",4,1)
|
---|
63 | . S RFIL=$P($P(GMRCOBX,"|",3),U,3),RFIL=$P(RFIL,"VA",2)
|
---|
64 | . S RSLT=+$P(GMRCOBX,"|",5)
|
---|
65 | . S RSITE=$$IEN^XUAF4($P($P(GMRCOBX,"|",5),U,3))
|
---|
66 | . S ROOT=$S($P($P(GMRCOBX,"|",3),U,2)["TIU":"TIU(",1:"MCAR(")
|
---|
67 | . S DESC=$P($P(GMRCOBX,"|",5),U,2)
|
---|
68 | . S GMRCFDA(.24)=RSLT_";"_ROOT_RFIL_";"_DESC_";"_RSITE
|
---|
69 | I GMRCLAST=10 D ; overwite inc. report in last action?
|
---|
70 | . N GMRCLACT
|
---|
71 | . S GMRCLACT=$O(^GMR(123,GMRCO,40," "),-1)
|
---|
72 | . I '$G(GMRCLACT) Q
|
---|
73 | . I $P($G(^GMR(123,GMRCO,40,GMRCLACT,0)),U,2)'=9 Q
|
---|
74 | . I $$FMDIFF^XLFDT($$NOW^XLFDT,+^GMR(123,GMRCO,40,GMRCLACT,0),2)>900 Q
|
---|
75 | . I $P($G(^GMR(123,GMRCO,40,GMRCLACT,2)),U,4)=GMRCFDA(.24) D
|
---|
76 | .. S GMRCACT(1)=GMRCLACT
|
---|
77 | .. M FDA(1,123.02,GMRCACT(1)_","_GMRCO_",")=GMRCFDA
|
---|
78 | .. D UPDATE^DIE("","FDA(1)",,"GMRCERR")
|
---|
79 | . Q
|
---|
80 | I '$D(GMRCACT(1)) D ; need to create new activity
|
---|
81 | . M FDA(1,123.02,"+1,"_GMRCO_",")=GMRCFDA
|
---|
82 | . D UPDATE^DIE("","FDA(1)","GMRCACT","GMRCERR")
|
---|
83 | K GMRCFDA,FDA
|
---|
84 | D ; file comments if present
|
---|
85 | . I $D(^TMP("GMRCFIL",$J,"OBX",3)) D ; general comments
|
---|
86 | .. N TMPARR
|
---|
87 | .. S TMPARR=$NA(^TMP("GMRCFIL",$J,"OBX",3))
|
---|
88 | .. D TRIMWP^GMRCIUTL(TMPARR,5)
|
---|
89 | .. D WP^DIE(123.02,GMRCACT(1)_","_GMRCO_",",5,"K",TMPARR)
|
---|
90 | . I $D(^TMP("GMRCFIL",$J,"NTE")) D ; DC or cancel comments
|
---|
91 | .. N TMPARR
|
---|
92 | .. S TMPARR=$NA(^TMP("GMRCFIL",$J,"NTE"))
|
---|
93 | .. D TRIMWP^GMRCIUTL(TMPARR,3)
|
---|
94 | .. D WP^DIE(123.02,GMRCACT(1)_","_GMRCO_",",5,"K",TMPARR)
|
---|
95 | .. Q
|
---|
96 | D ; update order if necessary
|
---|
97 | . I $P($G(^GMR(123,GMRCO,12)),U,5)="F" Q ; fillers have no order
|
---|
98 | . I GMRCLAST=11!(GMRCLAST=13)!(GMRCLAST=14) Q ;no status chg
|
---|
99 | . I GMRCLAST=4!(GMRCLAST=20) Q ;no status chg
|
---|
100 | . D UPDORD(GMRCO,GMRCACT(1))
|
---|
101 | K ^TMP("GMRCFIL",$J)
|
---|
102 | Q
|
---|
103 | ;
|
---|
104 | TST(ARRAY) ;process test message and check item ordered
|
---|
105 | ;Input:
|
---|
106 | ; ARRAY = name of array containing message parts
|
---|
107 | ;
|
---|
108 | N GMRCFDA,GMRCORC,GMRCDA,GMRCITM,GMRCITER
|
---|
109 | K ^TMP("GMRCIN",$J)
|
---|
110 | M ^TMP("GMRCIN",$J)=@ARRAY
|
---|
111 | D ;get ordered item and service
|
---|
112 | . S GMRCITM=$P(^TMP("GMRCIN",$J,"OBR"),"|",4)
|
---|
113 | . I GMRCITM["VA1233" D ; proc
|
---|
114 | .. N PROC
|
---|
115 | .. S PROC=$$GETPROC^GMRCIUTL(GMRCITM)
|
---|
116 | .. I +PROC'>0!('$P(PROC,U,2)) S GMRCITER=$P(PROC,U,3) Q
|
---|
117 | . I GMRCITM["VA1235" D
|
---|
118 | .. N SERV
|
---|
119 | .. S SERV=$$GETSERV^GMRCIUTL(GMRCITM) ;consult
|
---|
120 | .. I +SERV'>0 S GMRCITER=$P(SERV,U,3)
|
---|
121 | I $D(GMRCITER) D ;error in procedure or service, reject new order
|
---|
122 | . N GMRCRSLT
|
---|
123 | . D RESP^GMRCIUTL("AR",HL("MID"),,,GMRCITER) ;build HLA(
|
---|
124 | . D GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"LM",1,.GMRCRSLT)
|
---|
125 | I '$D(GMRCITER) D
|
---|
126 | . N GMRCRSLT
|
---|
127 | . D RESP^GMRCIUTL("AA",HL("MID")) ;build HLA(
|
---|
128 | . D GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"LM",1,.GMRCRSLT)
|
---|
129 | K ^TMP("GMRCIN",$J)
|
---|
130 | Q
|
---|
131 | ;
|
---|
132 | GETDA(GMRCORC) ; determine what local Consult ien to work on
|
---|
133 | ; Input:
|
---|
134 | ; GMRCORC = ORC seg from incoming message
|
---|
135 | ; Output:
|
---|
136 | ; ien from file 123
|
---|
137 | ;
|
---|
138 | N GMRCORC2,GMRCORC3
|
---|
139 | S GMRCORC2=$P(GMRCORC,"|",2),GMRCORC3=$P(GMRCORC,"|",3)
|
---|
140 | I $$IEN^XUAF4($P(GMRCORC2,U,2))=$$KSP^XUPARAM("INST") Q +GMRCORC2
|
---|
141 | Q +GMRCORC3
|
---|
142 | ;
|
---|
143 | DUPACT(GMRCO,ACTVT,ORC,OBX) ;check to see if activity is a dup transmission
|
---|
144 | ;Input:
|
---|
145 | ; GMRCO = ien of consult
|
---|
146 | ; ACTVT = ien of activity from file 123.1
|
---|
147 | ; ORC = ORC segment from message
|
---|
148 | ; OBX = OBX segment containing result
|
---|
149 | ;
|
---|
150 | ;Output:
|
---|
151 | ; 0 = activity is not a duplicate of one on file already
|
---|
152 | ; 1 = duplicate, activity already on file
|
---|
153 | ;
|
---|
154 | N GMRCIADT,GMRCIFDT,DUP
|
---|
155 | S GMRCIFDT=+$$HL7TFM^XLFDT($P(ORC,"|",9))
|
---|
156 | S GMRCIADT=+$$HL7TFM^XLFDT($P(ORC,"|",15))
|
---|
157 | S DUP=0
|
---|
158 | I $D(^GMR(123,GMRCO,40,"AC",ACTVT,GMRCIFDT,GMRCIADT)) D Q DUP ;dupl.
|
---|
159 | . N RSLT,RFIL,RSITE,ROOT
|
---|
160 | . I $L($G(OBX)) D Q:'$G(DUP)
|
---|
161 | .. S RFIL=$P($P(OBX,"|",3),U,3),RFIL=$P(RFIL,"VA",2)
|
---|
162 | .. S RSLT=+$P(OBX,"|",5)
|
---|
163 | .. S RSITE=$$IEN^XUAF4($P($P(OBX,"|",5),U,3))
|
---|
164 | .. S ROOT=$S($P($P(OBX,"|",3),U,2)["TIU":"TIU(",1:"MCAR(")
|
---|
165 | .. S RSLT=RSLT_";"_ROOT_RFIL
|
---|
166 | .. I ACTVT=12,$D(^GMR(123,GMRCO,51,"AR",RSLT,RSITE)) Q ;no dup
|
---|
167 | .. I ACTVT'=12,'$D(^GMR(123,GMRCO,51,"AR",RSLT,RSITE)) Q ;no dup
|
---|
168 | .. S DUP=1
|
---|
169 | . S DUP=1
|
---|
170 | . D APPACK(GMRCO,"AR",802) ;send app. ACK and unlock record
|
---|
171 | Q 0
|
---|
172 | ;
|
---|
173 | APPACK(GMRCO,ACK,ERR) ;send application acknowledgement for all cases
|
---|
174 | ;Input:
|
---|
175 | ; GMRCO = ien from file 123
|
---|
176 | ; ACK = ACK code to include ("AA"=accept or "AR"=reject)
|
---|
177 | ; ERR = error code to return if there is one (optional)
|
---|
178 | ;
|
---|
179 | ; Output: none
|
---|
180 | ;
|
---|
181 | ;send appl ACK
|
---|
182 | N GMRCRSLT
|
---|
183 | I '$G(ERR) S ERR=""
|
---|
184 | D RESP^GMRCIUTL(ACK,HL("MID"),,,ERR) ;build HLA("HLA", array
|
---|
185 | D GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"LM",1,.GMRCRSLT)
|
---|
186 | ;
|
---|
187 | D UNLKREC^GMRCUTL1(GMRCO) ;unlock record
|
---|
188 | Q
|
---|