1 | GMRCCP ;SLC/JFR - utilities for clinical procedures; 10/07/04 15:24
|
---|
2 | ;;3.0;CONSULT/REQUEST TRACKING;**17,25,37,55**;DEC 27, 1997;Build 4
|
---|
3 | ;
|
---|
4 | ; This routine invokes IAs #3378,#3468
|
---|
5 | ;
|
---|
6 | Q
|
---|
7 | CPLIST(GMRCPT,GMRCPR,GMRCRET) ;return list of patient CP requests
|
---|
8 | ; Input:
|
---|
9 | ; GMRCPT = patient DFN (required)
|
---|
10 | ; GMRCPR = ien from file 702.01 (optional)
|
---|
11 | ; if just one procedure
|
---|
12 | ; desired; defaults to all
|
---|
13 | ; GMRCRET= global array in which to (required)
|
---|
14 | ; return results
|
---|
15 | ;
|
---|
16 | ; Output:
|
---|
17 | ; ^global(array)=
|
---|
18 | ; date of request^CP DEF nam^urgency^status^cons #^CP DEF ien
|
---|
19 | ;
|
---|
20 | N GMRCDA,COUNT
|
---|
21 | S COUNT=1
|
---|
22 | I '$G(GMRCPT)!('$D(GMRCRET)) Q
|
---|
23 | I $G(GMRCPR) D
|
---|
24 | . S GMRCDA=0
|
---|
25 | . F S GMRCDA=$O(^GMR(123,"ACP",GMRCPR,GMRCPT,GMRCDA)) Q:'GMRCDA D
|
---|
26 | .. I '$$EXTDATA^MDAPI(GMRCPR) Q ; if no ext. data, don't send
|
---|
27 | .. D LOADAR(GMRCDA,GMRCRET,COUNT) S COUNT=COUNT+1
|
---|
28 | . Q
|
---|
29 | I '$G(GMRCPR) S GMRCPR=0 D
|
---|
30 | . F S GMRCPR=$O(^GMR(123,"ACP",GMRCPR)) Q:'GMRCPR D
|
---|
31 | .. I '$$EXTDATA^MDAPI(GMRCPR) Q ;don't send if no ext. data
|
---|
32 | .. S GMRCDA=0
|
---|
33 | .. F S GMRCDA=$O(^GMR(123,"ACP",GMRCPR,GMRCPT,GMRCDA)) Q:'GMRCDA D
|
---|
34 | ... D LOADAR(GMRCDA,GMRCRET,COUNT) S COUNT=COUNT+1
|
---|
35 | .. Q
|
---|
36 | . Q
|
---|
37 | Q
|
---|
38 | ;
|
---|
39 | LOADAR(IEN,GMRCAR,CNT) ;set up array and return data for given file 123 ien
|
---|
40 | N GMRCDT,GMRCCP,GMRCUR,STS,GMRC,GMRCCPI
|
---|
41 | Q:'$D(^GMR(123,IEN,0))
|
---|
42 | Q:'+$G(^GMR(123,IEN,1))
|
---|
43 | S GMRC(0)=^GMR(123,IEN,0)
|
---|
44 | S GMRCDT=$P(GMRC(0),U,7)
|
---|
45 | S GMRCCPI=+^GMR(123,IEN,1)
|
---|
46 | S GMRCCP=$$GET1^DIQ(702.01,GMRCCPI,.01)
|
---|
47 | S GMRCUR=$$GET1^DIQ(101,+$P(GMRC(0),U,9),1)
|
---|
48 | S STS=$$GET1^DIQ(100.01,+$P(GMRC(0),U,12),.1)
|
---|
49 | S @(GMRCAR)@(CNT)=GMRCDT_U_GMRCCP_U_GMRCUR_U_STS_U_IEN_U_GMRCCPI
|
---|
50 | Q
|
---|
51 | ;
|
---|
52 | CPROC(PROC) ;is orderable procedure mapped to Clinical Procedures
|
---|
53 | Q +$P($G(^GMR(123.3,PROC,0)),U,4)
|
---|
54 | CPLINK(PROC) ;check "AC" x-ref to see if PROC is linked to entry in 123.3
|
---|
55 | ; PROC - ien from 702.01
|
---|
56 | Q $E($D(^GMR(123.3,"AC",+PROC)),1)
|
---|
57 | CPLINKS(NAMES,PROC) ;return list of procedure names linked to a CP
|
---|
58 | ; Input
|
---|
59 | ; PROC - ien from PROCEDURE DEFINITION (#702.01) - (required)
|
---|
60 | ; Output:
|
---|
61 | ; NAMES - passed by reference
|
---|
62 | ; returned as array of GMRC PROCEDUREs linked to PROC
|
---|
63 | ; in format;
|
---|
64 | ; NAMES(x)=GMRC PROCEDURE name^GMRC PROCEDURE ien
|
---|
65 | ; NAMES(1)="EKG^21"
|
---|
66 | ; NAMES(2)="EKG PORTABLE^32"
|
---|
67 | ; if not currently linked, returned as:
|
---|
68 | ; NAMES(1)="-1^not currently linked"
|
---|
69 | N GMRCPR,I
|
---|
70 | S I=1,GMRCPR=0
|
---|
71 | F S GMRCPR=$O(^GMR(123.3,"AC",PROC,GMRCPR)) Q:'GMRCPR D
|
---|
72 | . S NAMES(I)=$P($G(^GMR(123.3,GMRCPR,0)),U)_U_GMRCPR
|
---|
73 | . S I=I+1
|
---|
74 | I '$D(NAMES(1)) S NAMES(1)="-1^not currently linked"
|
---|
75 | Q
|
---|
76 | CPDOC(GMRCDA,TIUDA,ACTION) ;update file 123 entry with CLIN PROC DOC
|
---|
77 | ; Input:
|
---|
78 | ; GMRCDA = ien from file 123
|
---|
79 | ; TIUDA = ien from file 8925
|
---|
80 | ; ACTION = 1 - associate stub record
|
---|
81 | ; = 2 - partial results ready
|
---|
82 | ; = 3 - retract record
|
---|
83 | ;
|
---|
84 | ; Output:
|
---|
85 | ; 1 = successful
|
---|
86 | ; 0^error = unsuccessful^problem
|
---|
87 | ;
|
---|
88 | ;
|
---|
89 | N QVAL,GMRCADUZ
|
---|
90 | I '$D(^GMR(123,+GMRCDA,0)) Q "0^Invalid procedure record"
|
---|
91 | I '$G(ACTION) Q "0^Invalid action code"
|
---|
92 | I '$G(TIUDA) Q "0^No document to associate"
|
---|
93 | S QVAL=""
|
---|
94 | I ACTION=1 D Q QVAL
|
---|
95 | . S QVAL="0^Not a current API implementation"
|
---|
96 | . Q
|
---|
97 | I ACTION=2 D Q QVAL
|
---|
98 | . N GMRCCPA
|
---|
99 | . I $D(^GMR(123,+GMRCDA,50,"B",TIUDA_";TIU(8925")) Q
|
---|
100 | . S GMRCCPA=1 ; tell audit trail it's coming from CP ; slc/jfr 1/15/03
|
---|
101 | . D GET^GMRCTIU(+GMRCDA,TIUDA,"INCOMPLETE") ;update to pr
|
---|
102 | . D EN^GMRCT(+$P(^GMR(123,+GMRCDA,0),U,5)) ;get svc notif recips
|
---|
103 | . I $D(GMRCADUZ) D
|
---|
104 | .. N MSG,GMRCDFN,GMRCREF
|
---|
105 | .. S MSG="Procedure ready for interpretation"
|
---|
106 | .. S GMRCDFN=$P(^GMR(123,+GMRCDA,0),U,2)
|
---|
107 | .. S GMRCREF=+GMRCDA_"|"_+TIUDA_";TIU(8925,"
|
---|
108 | .. D MSG^GMRCP(GMRCDFN,MSG,GMRCREF,66,.GMRCADUZ,0) ;send #66 alert
|
---|
109 | . S QVAL="1"
|
---|
110 | . Q
|
---|
111 | I ACTION=3 D Q QVAL
|
---|
112 | . I '$D(^GMR(123,+GMRCDA,50,"B",TIUDA_";TIU(8925")) D Q
|
---|
113 | .. S QVAL="0^Not an associated document"
|
---|
114 | . D ROLLBACK^GMRCTIU1(+GMRCDA,+TIUDA)
|
---|
115 | . S QVAL=1
|
---|
116 | . Q
|
---|
117 | Q
|
---|
118 | CPACTM(GMRCDA) ;return actions available for a CP request
|
---|
119 | ;Input:
|
---|
120 | ; GMRCDA = file 123 ien
|
---|
121 | ;Output:
|
---|
122 | ; 0 = not a CP request or TIU*1*109 not present
|
---|
123 | ; 1 = CP request but no instrument report expected
|
---|
124 | ; 2 = CP and still waiting on instr. or images
|
---|
125 | ; 3 = CP and incomplete CP doc attached
|
---|
126 | ; 4 = CP and complete CP doc attached
|
---|
127 | ;
|
---|
128 | N EXTDTA,CPDOC
|
---|
129 | I '$$PATCH^XPDUTL("TIU*1.0*109") Q 0
|
---|
130 | I '$G(^GMR(123,GMRCDA,1)) Q 0
|
---|
131 | S EXTDTA=$$EXTDATA^MDAPI(+^GMR(123,GMRCDA,1))
|
---|
132 | S CPDOC=$G(^GMR(123,GMRCDA,50,+$O(^GMR(123,GMRCDA,50,0)),0))
|
---|
133 | I 'EXTDTA,'+CPDOC Q 1 ;no ext & no stub
|
---|
134 | I EXTDTA,'+CPDOC Q 2 ;ext data & no data
|
---|
135 | I $$GET1^DIQ(8925,+CPDOC,.05)'="COMPLETED" Q 3 ;partial results
|
---|
136 | Q 4 ;CP is done, allow additional CP titles
|
---|
137 | ;
|
---|
138 | CPINTERP(GMRCTIU,GMRCUSER) ;is user an interpreter for TIU doc GMRCTIU
|
---|
139 | ;
|
---|
140 | ; Input:
|
---|
141 | ; GMRCTIU = ien from file 8925
|
---|
142 | ; GMRCUSER = DUZ of person to evaluate
|
---|
143 | ;
|
---|
144 | ; Output:
|
---|
145 | ; 1 = GMRCUSER is an interpreter
|
---|
146 | ; 0 = GMRCUSER is NOT an interpreter
|
---|
147 | ;
|
---|
148 | N GMRCSRV,GMRCDA,GMRCINT
|
---|
149 | S GMRCDA=$O(^GMR(123,"R",GMRCTIU_";TIU(8925,",0))
|
---|
150 | I 'GMRCDA Q 0 ;TIU doc not attached
|
---|
151 | S GMRCSRV=$P(^GMR(123,+GMRCDA,0),U,5)
|
---|
152 | I 'GMRCSRV Q 0 ;no service, can't tell if interpreter
|
---|
153 | S GMRCINT=+$$VALID^GMRCAU(GMRCSRV,,GMRCUSER) ;get upd authority
|
---|
154 | Q $S(GMRCINT=1:1,GMRCINT=2:1,GMRCINT=4:1,1:0) ;1=unrstrctd (upd) user, 2=upd user, 4=adm & upd user
|
---|
155 | ;
|
---|
156 | CPPAT(GMRCDA,GMRCDFN) ;is patient object of given request?
|
---|
157 | ; Input:
|
---|
158 | ; GMRCDA = ien from file 123
|
---|
159 | ; GMRCDFN = patient DFN
|
---|
160 | ;
|
---|
161 | ; Output:
|
---|
162 | ; 1 = patient is object of request GMRCDA
|
---|
163 | ; 0 = patient is NOT object of request in GMRCDA
|
---|
164 | I $P($G(^GMR(123,GMRCDA,0)),U,2)'=GMRCDFN Q 0
|
---|
165 | Q 1
|
---|
166 | ;
|
---|
167 | MCCNVT(GMRCMOD,GMRCMC,GMRCTIU) ;convert MC pointer to TIU pointer in file 123
|
---|
168 | ;Input:
|
---|
169 | ; GMRCMOD = boolean 1 (convert if found) or 0 (test conversion)
|
---|
170 | ; GMRCMC = var;ptr to a Medicine package result
|
---|
171 | ; GMRCTIU = ptr to file 8925
|
---|
172 | ;
|
---|
173 | ;Output:
|
---|
174 | ; -1^Description of error
|
---|
175 | ; 0^No Action needed
|
---|
176 | ; 1^Success message^Consult IEN
|
---|
177 | ;
|
---|
178 | I '$D(GMRCMOD) Q "-1^Mode unknown"
|
---|
179 | I '$G(GMRCMC) Q "-1^No MC results sent"
|
---|
180 | N GMRCIEN,GMRCRIEN,GMRCACT,GMRCERR,FDA
|
---|
181 | S GMRCIEN=$O(^GMR(123,"R",GMRCMC,0))
|
---|
182 | I 'GMRCIEN Q "0^No action needed"
|
---|
183 | I GMRCMOD=0 Q "1^Not converted^"_GMRCIEN
|
---|
184 | I '$G(GMRCTIU) Q "-1^No TIU ref sent"
|
---|
185 | S GMRCRIEN=$O(^GMR(123,"R",GMRCMC,GMRCIEN,0))
|
---|
186 | S FDA(1,123.03,GMRCRIEN_","_GMRCIEN_",",.01)=GMRCTIU_";TIU(8925,"
|
---|
187 | D FILE^DIE("K","FDA(1)","GMRCERR")
|
---|
188 | I $D(GMRCERR) Q "-1^Unable to convert"
|
---|
189 | ; rest of field conversions
|
---|
190 | I $P(^GMR(123,GMRCIEN,0),U,15)=GMRCMC D
|
---|
191 | . S FDA(1,123,GMRCIEN_",",11)="@"
|
---|
192 | . D FILE^DIE("K","FDA(1)","GMRCERR")
|
---|
193 | ;
|
---|
194 | S GMRCACT=0
|
---|
195 | F S GMRCACT=$O(^GMR(123,GMRCIEN,40,GMRCACT)) Q:'GMRCACT D
|
---|
196 | . I $P(^GMR(123,GMRCIEN,40,GMRCACT,0),U,9)'=GMRCMC Q ;no need to chg
|
---|
197 | . K FDA,GMRCERR
|
---|
198 | . S FDA(1,123.02,GMRCACT_","_GMRCIEN_",",9)=GMRCTIU_";TIU(8925,"
|
---|
199 | . D FILE^DIE("K","FDA(1)","GMRCERR")
|
---|
200 | ; NO IFC implications at this time
|
---|
201 | Q "1^Successfully converted^"_GMRCIEN
|
---|
202 | ;
|
---|
203 | Q
|
---|