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