1 | MDRPCOT ; HOIFO/DP/NCA - Object RPCs (TMDTransaction) ;3/12/08 09:18
|
---|
2 | ;;1.0;CLINICAL PROCEDURES;**5,6**;Apr 01, 2004;Build 102
|
---|
3 | ; Integration Agreements:
|
---|
4 | ; IA# 2693 [Subscription] TIU Extractions.
|
---|
5 | ; IA# 2944 [Subscription] Calls to TIUSRVR1.
|
---|
6 | ; IA# 3535 [Subscription] Calls to TIUSRVP.
|
---|
7 | ; IA# 10104 [Supported] Routine XLFSTR calls
|
---|
8 | ADDMSG ; [Procedure] Add message to transaction
|
---|
9 | N MDIEN,MDIENS,MDRET
|
---|
10 | Q:'$G(DATA("TRANSACTION"))
|
---|
11 | Q:$G(DATA("MESSAGE"))=""
|
---|
12 | S MDIEN=+DATA("TRANSACTION"),MDIENS="+1,"_MDIEN_","
|
---|
13 | D NOW^%DTC S DATA("DATE")=% K %
|
---|
14 | S MDFDA(702.091,MDIENS,.01)=+$O(^MDD(702,+MDIEN,.091,"A"),-1)+1
|
---|
15 | S MDFDA(702.091,MDIENS,.02)=DATA("DATE")
|
---|
16 | S MDFDA(702.091,MDIENS,.03)=$G(DATA("PKG"),"UNKNOWN")
|
---|
17 | S MDFDA(702.091,MDIENS,.09)=DATA("MESSAGE")
|
---|
18 | D UPDATE^DIE("","MDFDA","MDRET")
|
---|
19 | Q
|
---|
20 | ;
|
---|
21 | DELETE ; [Procedure] Delete Study
|
---|
22 | ; Sets @RESULTS@(0)="-1^Reason for not deleting" or "1^Study Deleted"
|
---|
23 | ;
|
---|
24 | N MDAST,MDHOLD,MDNOTE,MDRES,MDSIEN,BODY,SUBJECT,DEVIEN
|
---|
25 | S (MDHOLD,MDSIEN)=+DATA,MDRES=0,MDNOTE=""
|
---|
26 | D ALERT^MDHL7U3(MDSIEN) ; Builds the body of the mail message
|
---|
27 | I $G(^MDD(702,+MDSIEN,0))="" S @RESULTS@(0)="1^Study Deleted." D NOTICE^MDHL7U3(SUBJECT,.BODY,DEVIEN,DUZ) Q ;deleting message
|
---|
28 | S:+$P(^MDD(702,MDSIEN,0),U,6) MDNOTE=$P(^MDD(702,MDSIEN,0),U,6)
|
---|
29 | I "13"[$P(^MDD(702,MDSIEN,0),U,9) S @RESULTS@(0)="-1^Can't Delete TIU Note from a "_$$GET1^DIQ(702,MDSIEN,.09,"E")_" Study." Q
|
---|
30 | I "5"[$P(^MDD(702,MDSIEN,0),U,9) S MDCANR=$$CANCEL^MDHL7B(MDHOLD) I MDCANR<1 S @RESULTS@(0)="-1^"_$P(MDCANR,"^",2) Q
|
---|
31 | I +MDNOTE S MDRES="" D DELETE^TIUSRVP(.MDRES,MDNOTE)
|
---|
32 | I MDRES D Q
|
---|
33 | .D STATUS(MDSIEN_",",2,$P(MDRES,"^",2))
|
---|
34 | .S DATA("TRANSACTION")=MDSIEN,DATA("PKG")="TIU"
|
---|
35 | .S DATA("MESSAGE")=$P(MDRES,"^",2) D ADDMSG
|
---|
36 | .S @RESULTS@(0)="-1^"_$P(MDRES,"^",2)
|
---|
37 | .Q
|
---|
38 | E D
|
---|
39 | .I $D(^MDD(702.001,"ASTUDY",MDSIEN)) S @RESULTS@(0)="-1^Note associated with study, can not delete." Q
|
---|
40 | .S MDAST=$$HL7CHK^MDHL7U3(+MDSIEN) I +MDAST<1 S @RESULTS@(0)=MDAST Q
|
---|
41 | .D NOTICE^MDHL7U3(SUBJECT,.BODY,DEVIEN,DUZ) ; delete message
|
---|
42 | .S MDFDA(702,DATA_",",.01)=""
|
---|
43 | .; Check for renal study to delete as well
|
---|
44 | .S:$D(^MDK(704.202,DATA)) MDFDA(704.202,DATA_",",.01)=""
|
---|
45 | .D FILE^DIE("","MDFDA")
|
---|
46 | .N DA,DIK S DA=+MDSIEN,DIK="^MDD(702," D ^DIK
|
---|
47 | .S @RESULTS@(0)="1^Study Deleted."
|
---|
48 | .Q
|
---|
49 | Q
|
---|
50 | ;
|
---|
51 | FILEMSG(STUDY,MDPKG,MDSTAT,MDMSG) ; [Procedure] File Study Status and Message.
|
---|
52 | S DATA("TRANSACTION")=STUDY,DATA("PKG")=MDPKG
|
---|
53 | S DATA("MESSAGE")=$P(MDMSG,"^",2)
|
---|
54 | D STATUS(STUDY_",",MDSTAT,$P(MDMSG,"^",2)),ADDMSG
|
---|
55 | Q
|
---|
56 | ;
|
---|
57 | FILES ; [Procedure] Add/remove an attachment to this transaction
|
---|
58 | NEW MDFDA,MDIEN,MDIENS,MDRET,P1,P2,P3,P4
|
---|
59 | S P1=$P(DATA,U,1),P2=$P(DATA,U,2),P3=$P(DATA,U,3),P4=$P(DATA,U,4)
|
---|
60 | S MDIEN=0 I $G(^MDD(702,+P1,0))="" Q
|
---|
61 | ; Look for file (All comparisons done on lower case values)
|
---|
62 | F S MDIEN=$O(^MDD(702,P1,.1,MDIEN)) Q:'MDIEN D Q:X=P3
|
---|
63 | .S X=$$LOW^XLFSTR($G(^MDD(702,P1,.1,MDIEN,.1)))
|
---|
64 | I MDIEN&P4 S @RESULTS@(0)="1^File already assigned" Q
|
---|
65 | I 'MDIEN&'P4 S @RESULTS@(0)="1^File not assigned" Q
|
---|
66 | I P4 D Q ; Add a file
|
---|
67 | .S MDIENS="+1,"_P1_","
|
---|
68 | .S MDFDA(702.1,MDIENS,.01)=$O(^MDD(702,P1,.1,"B",""),-1)+1
|
---|
69 | .S MDFDA(702.1,MDIENS,.02)=$S(P2:"I",1:"U")
|
---|
70 | .I P2 S MDFDA(702.1,MDIENS,.03)=P2
|
---|
71 | .S MDFDA(702.1,MDIENS,.1)=P3
|
---|
72 | .D UPDATE^DIE("","MDFDA","MDIEN")
|
---|
73 | .S @RESULTS@(0)=+$G(MDIEN(1),-1)
|
---|
74 | I 'P4 D Q ; Remove the file
|
---|
75 | .S MDFDA(702.1,MDIEN_","_P1_",",.01)="@"
|
---|
76 | .D FILE^DIE("","MDFDA","MDRET")
|
---|
77 | .S @RESULTS@(0)=$S($D(MDRET):-1,1:1)
|
---|
78 | Q
|
---|
79 | ;
|
---|
80 | GETATT ; [Procedure] Get Attachments
|
---|
81 | F X=0:0 S X=$O(^MDD(702,DATA,.1,X)) Q:'X D
|
---|
82 | .S Y=$O(@RESULTS@(""),-1)+1
|
---|
83 | .S @RESULTS@(Y)=$P(^MDD(702,DATA,.1,X,0),U,1,3)
|
---|
84 | .S $P(@RESULTS@(Y),U,4)=$G(^MDD(702,DATA,.1,X,.1))
|
---|
85 | S @RESULTS@(0)=+$O(@RESULTS@(""),-1)
|
---|
86 | Q
|
---|
87 | ;
|
---|
88 | GETERR ; [Procedure] Return list of Imaging Errors
|
---|
89 | ; DATA = Transaction IEN
|
---|
90 | F MDX=0:0 S MDX=$O(^MDD(702,DATA,.091,MDX)) Q:'MDX D
|
---|
91 | .S MDY=+^MDD(702,DATA,.091,MDX,0)_U,Y=$P(^(0),U,2)
|
---|
92 | .D D^DIQ S MDY=MDY_Y_U
|
---|
93 | .S MDY=MDY_$P(^MDD(702,DATA,.091,MDX,0),U,3)_U_$P(^(0),U,9)
|
---|
94 | .S ^TMP($J,$O(^TMP($J,""),-1)+1)=MDY
|
---|
95 | S ^TMP($J,0)=+$O(^TMP($J,""),-1)
|
---|
96 | Q
|
---|
97 | ;
|
---|
98 | NEWSTAT ; [Procedure] RPC Call to set status
|
---|
99 | S MDFDA(702,DATA,.09)=TYPE
|
---|
100 | D FILE^DIE("","MDFDA")
|
---|
101 | I TYPE=3&($G(^MDK(704.202,+DATA,0))'="") K MDFDA S MDFDA(704.202,DATA,.09)=0 D FILE^DIE("","MDFDA") K MDFDA
|
---|
102 | Q
|
---|
103 | ;
|
---|
104 | RPC(RESULTS,OPTION,DATA,TYPE,FILE,RESREP) ; [Procedure] Main RPC call
|
---|
105 | N MDCANR,MDCON,MDDOC,MDFDA,MDFN,MDGST,MDHOLD,MDIEN,MDIENS,MDL,MDLOC,MDMSG,MDNEWV,MDNOTE,MDNVST,MDPDT,MDPKG,MDPROC,MDRES,MDRESU,MDRESUL,MDRET,MDS,MDSIEN,MDSTAT,MDSTUDY,MDTITL,MDTIUER,MDTRAN,MDTST,MDTSTR,MDVST,MDVSTR,MDWP,MDX,MDY
|
---|
106 | S RESULTS=$NA(^TMP($J)) K @RESULTS
|
---|
107 | D:$T(@OPTION)]"" @OPTION
|
---|
108 | D:'$D(@RESULTS) BADRPC^MDRPCU("MD TMDTRANSACTION","MDRPCOT",OPTION)
|
---|
109 | D CLEAN^DILF
|
---|
110 | Q
|
---|
111 | ;
|
---|
112 | STATUS(MDIENS,MDSTAT,MDMSG) ; [Procedure] Update transaction status
|
---|
113 | S MDFDA(702,MDIENS,.08)=$G(MDMSG)
|
---|
114 | S MDFDA(702,MDIENS,.09)=MDSTAT
|
---|
115 | D FILE^DIE("","MDFDA")
|
---|
116 | Q
|
---|
117 | ;
|
---|
118 | SUBMIT ; [Procedure] Process the Image(s) Submission.
|
---|
119 | ; Output: -1^Error Message or
|
---|
120 | ; 1^Successful Message
|
---|
121 | N MDRESUL,MDSTUDY
|
---|
122 | S MDSTUDY=+DATA,MDRESUL=""
|
---|
123 | ; Create New TIU Document
|
---|
124 | S MDRESUL=$$NEWTIUN(MDSTUDY)
|
---|
125 | ; File TIU Error messages
|
---|
126 | I +MDRESUL<0 D Q
|
---|
127 | .D FILEMSG(MDSTUDY,"TIU",2,MDRESUL)
|
---|
128 | .S @RESULTS@(0)=MDRESUL
|
---|
129 | ; Submit and export the images
|
---|
130 | S MDRESUL=$$SUBMIT^MDRPCOT1(MDSTUDY)
|
---|
131 | ; File message
|
---|
132 | D FILEMSG(MDSTUDY,"IMAGING",$S(+MDRESUL>0:+MDRESUL,1:2),MDRESUL)
|
---|
133 | S @RESULTS@(0)=MDRESUL
|
---|
134 | Q
|
---|
135 | ;
|
---|
136 | VIEWTIU ; [Procedure] VIew the associated tiu document
|
---|
137 | I '$P(^MDD(702,+DATA,0),U,6) D Q
|
---|
138 | .S @RESULTS@(0)="NO TIU NOTE FOR THIS STUDY"
|
---|
139 | D TGET^TIUSRVR1(.RESULTS,+$P(^MDD(702,+DATA,0),U,6))
|
---|
140 | Q
|
---|
141 | ;
|
---|
142 | GETDATA(STUDY) ; [Function] Return the Necessary data for creating a TIU note.
|
---|
143 | ; Return: Patient DFN_"^"_TIU title_"^"_Hospital Location_"^"_TIU Note
|
---|
144 | ; IEN_"^"_Consult #_"^"_CP Definition IEN_"^"_Visit String_"^"
|
---|
145 | ; New Visit Flag
|
---|
146 | ; or
|
---|
147 | ; -1^Error Message
|
---|
148 | N DFN,MDCON,MDFN,MDIEN,MDIENS,MDLOC,MDNEWV,MDNOTE,MDNVST,MDPROC,MDVSTR,MDTITL,MDX,MDTST
|
---|
149 | S MDIEN=+STUDY,MDIENS=MDIEN_",",MDNVST=0
|
---|
150 | I $$GET1^DIQ(702,MDIENS,.01)="" Q "-1^No such study entry."
|
---|
151 | ; Get DFN
|
---|
152 | S DFN=$$GET1^DIQ(702,MDIEN,.01,"I")
|
---|
153 | I 'DFN Q "-1^No DFN."
|
---|
154 | ; Get CP Def
|
---|
155 | S MDPROC=$$GET1^DIQ(702,MDIEN,.04,"I")
|
---|
156 | I 'MDPROC Q "-1^No CP Def."
|
---|
157 | ; Get Consult
|
---|
158 | S MDCON=$$GET1^DIQ(702,MDIEN,.05,"I")
|
---|
159 | I 'MDCON Q "-1^No Consult #."
|
---|
160 | ; Get TIU Note Title
|
---|
161 | S MDTITL=$$GET1^DIQ(702.01,+MDPROC_",",.04,"I")
|
---|
162 | I 'MDTITL Q "-1^No TIU Note Title."
|
---|
163 | S MDVSTR=$$GET1^DIQ(702,MDIEN,.07)
|
---|
164 | I MDVSTR="" Q "-1^No Visit String."
|
---|
165 | I $L(MDVSTR,";")=1 S MDNVST=1,MDVSTR=";"_MDVSTR ; If new visit is selected
|
---|
166 | ; MDLOC is Hospital Location
|
---|
167 | I MDVSTR'="" D
|
---|
168 | .S MDVSTR=$$GETVSTR^MDRPCOT1(DFN,MDVSTR,MDPROC,$$GET1^DIQ(702,MDIEN,.02,"I"))
|
---|
169 | .S MDLOC=$P(MDVSTR,";",1)
|
---|
170 | I $$GET1^DIQ(702.01,+MDPROC_",",.12,"I")=1 Q DFN_"^"_MDTITL_"^"_MDLOC_"^^"_MDCON_"^"_MDPROC_"^"_MDVSTR_"^"_MDNVST
|
---|
171 | ; Does TIU doc already exist?
|
---|
172 | I $$GET1^DIQ(702,MDIEN,.06,"I") Q DFN_"^"_MDTITL_"^"_MDLOC_"^"_+$$GET1^DIQ(702,MDIEN,.06,"I")_"^"_MDCON_"^"_MDPROC_"^"_MDVSTR_"^"_MDNVST
|
---|
173 | ; Does TIU doc exist for previous transaction of this consult?
|
---|
174 | I MDCON S MDNOTE=$$PREV(MDCON,MDIEN)
|
---|
175 | Q DFN_"^"_MDTITL_"^"_MDLOC_"^"_+MDNOTE_"^"_MDCON_"^"_MDPROC_"^"_MDVSTR_"^"_MDNVST
|
---|
176 | ;
|
---|
177 | NEWTIUN(STUDY) ; [Function] Create a new TIU for transaction
|
---|
178 | ; Input: STUDY - IENS of CP study entry
|
---|
179 | ; Return: TIU Document IEN
|
---|
180 | N CTR,DFN,MDCON,MDFDA,MDGST,MDL,MDLOC,MDNOTE,MDPDT,MDPROC,MDRESU,MDTITL,MDTSTR,MDVST,MDVSTR,MDWP,MDPT S CTR=0,MDGST=+STUDY,MDRESU=""
|
---|
181 | ; Get data for TIU Note Creation
|
---|
182 | S (MDTSTR,MDRESU)=$$GETDATA(MDGST)
|
---|
183 | ; File Error message
|
---|
184 | I +MDRESU<0 D FILEMSG(MDGST,"CP",2,MDRESU) Q MDRESU
|
---|
185 | I $G(MDTSTR)="" Q "-1^No Data to Create TIU Document"
|
---|
186 | F MDL="DFN","MDTITL","MDLOC","MDNOTE","MDCON","MDPROC","MDVSTR","MDNVST" D
|
---|
187 | .S CTR=CTR+1,@MDL=$P(MDTSTR,"^",CTR)
|
---|
188 | S MDVST=""
|
---|
189 | ; If previous TIU document exists, quit
|
---|
190 | I MDNOTE Q MDNOTE
|
---|
191 | I 'MDLOC Q "-1^No Hospital Location."
|
---|
192 | ; Create new visit, if no vstring
|
---|
193 | S MDPDT=$$PDT^MDRPCOT1(MDGST)
|
---|
194 | I 'MDPDT S MDPT=$O(^MDD(703.1,"ASTUDYID",+MDGST,0)),MDPDT=$P($G(^MDD(703.1,+MDPT,0)),U,3)
|
---|
195 | S:'MDPDT MDPDT=$P(MDVSTR,";",2) ; If No D/T Performed grab visit D/T
|
---|
196 | I $P(MDVSTR,";",3)="V" S $P(MDVSTR,";",3)="A"
|
---|
197 | ; Build variables for TIU Call
|
---|
198 | S MDWP(.05)=1 ; Undicated Status
|
---|
199 | S MDWP(1405)=+MDCON_";GMR(123," ; Package Reference
|
---|
200 | S MDWP(70201)=5 ; Default Procedure Summary Code "Machine Resulted"
|
---|
201 | I MDPDT S MDWP(70202)=MDPDT ; Date/Time Performed
|
---|
202 | ; File PCE Error message
|
---|
203 | I MDNVST S MDRESU=$$EN1^MDPCE(MDGST,$P(MDVSTR,";",2),MDPROC,$P(MDVSTR,";",3),"P") I +MDRESU S MDVST=+MDRESU,MDVSTR=$P(MDRESU,"^",2)
|
---|
204 | I MDNVST&(+MDRESU<0) D FILEMSG(MDGST,"PCE",2,$P(MDRESU,"^",2)) Q MDRESU
|
---|
205 | ; Create the TIU note stub
|
---|
206 | S MDNOTE="" D MAKE^TIUSRVP(.MDNOTE,DFN,MDTITL,$P(MDVSTR,";",2),MDLOC,$S(MDVST:MDVST,1:""),.MDWP,MDVSTR,1,1)
|
---|
207 | I '(+MDNOTE) S $P(MDNOTE,"^")=-1 Q MDNOTE
|
---|
208 | ; Finalize the transaction
|
---|
209 | S MDFDA(702,STUDY_",",.06)=+MDNOTE
|
---|
210 | S MDFDA(702,STUDY_",",.08)=""
|
---|
211 | S:MDVST>0 MDFDA(702,STUDY_",",.13)=MDVST
|
---|
212 | D FILE^DIE("","MDFDA")
|
---|
213 | D UPD^MDKUTLR(STUDY,+MDNOTE)
|
---|
214 | Q 1
|
---|
215 | ;
|
---|
216 | PREV(MDC,MDS) ; [Function] Return the Previous TIU document.
|
---|
217 | N MDNEWV,MDDOC,MDTRAN,MDTIUER,MDTST
|
---|
218 | S (MDDOC,MDNEWV,MDTRAN,MDTIUER,MDTST)="" K ^TMP("MDTIUST",$J)
|
---|
219 | F S MDTRAN=$O(^MDD(702,"ACON",MDC,MDTRAN)) Q:'MDTRAN D Q:'MDTRAN
|
---|
220 | .I $P(^MDD(702,MDTRAN,0),U,6) D
|
---|
221 | ..D EXTRACT^TIULQ($P(^MDD(702,MDTRAN,0),U,6),"^TMP(""MDTIUST"",$J)",MDTIUER,".01;.05;1406") Q:+MDTIUER
|
---|
222 | ..S MDTST=$G(^TMP("MDTIUST",$J,$P(^MDD(702,MDTRAN,0),U,6),.05,"E"))
|
---|
223 | ..I MDTST'="UNDICTATED"&(MDTST'="UNSIGNED") K ^TMP("MDTIUST",$J) Q
|
---|
224 | ..I MDTST="UNSIGNED"&'($G(^TMP("MDTIUST",$J,$P(^MDD(702,MDTRAN,0),U,6),1406,"I"))) K ^TMP("MDTIUST",$J) Q
|
---|
225 | ..S MDDOC=$P(^MDD(702,MDTRAN,0),U,6),MDNEWV=$P(^MDD(702,MDTRAN,0),U,7)
|
---|
226 | ..Q:'MDS
|
---|
227 | ..S MDFDA(702,MDS_",",.06)=MDDOC
|
---|
228 | ..S MDFDA(702,MDS_",",.07)=MDNEWV
|
---|
229 | ..D FILE^DIE("","MDFDA")
|
---|
230 | ..S MDTRAN=""
|
---|
231 | Q MDDOC
|
---|
232 | ;
|
---|