| 1 | MDRPCOT1 ; HOIFO/NCA/DP - Object RPCs (TMDTransaction) - Continued ; [08-02-2002 12:55]
 | 
|---|
| 2 |  ;;1.0;CLINICAL PROCEDURES;**5**;Apr 01, 2004;Build 1
 | 
|---|
| 3 |  ; Integration Agreements:
 | 
|---|
| 4 |  ; IA# 3468 [Subscription] GMRCCP API.
 | 
|---|
| 5 |  ; IA# 3567 [Subscription] MAGGSIUI API
 | 
|---|
| 6 |  ; IA# 10040 [Supported] Hospital Location File Access
 | 
|---|
| 7 |  ; IA# 10061 [Supported] Calls to VADPT
 | 
|---|
| 8 |  ; IA# 10103 [Supported] Calls to XLFDT.
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 | DELERR(MDTIEN) ; [Procedure] Delete Imaging Error Messages
 | 
|---|
| 11 |  S MDLP=0 F  S MDLP=$O(^MDD(702,MDTIEN,.091,MDLP)) Q:'MDLP  D
 | 
|---|
| 12 |  .K DA,DIK
 | 
|---|
| 13 |  .S DA=+MDLP,DA(1)=+MDTIEN,DIK="^MDD(702,"_DA(1)_",.091," D ^DIK
 | 
|---|
| 14 |  .Q
 | 
|---|
| 15 |  Q
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 | IMGSTAT(STUDY,MDSTAT) ; [Procedure] Update the Image Status.
 | 
|---|
| 18 |  N MDL
 | 
|---|
| 19 |  S MDL=0 F  S MDL=$O(^MDD(702,STUDY,.1,MDL)) Q:MDL<1  S $P(^(MDL,0),"^",9)=MDSTAT
 | 
|---|
| 20 |  Q
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 | GETVSTR(DFN,MDSSTR,MDPR,MDTR) ; [Function] Check the Visit String
 | 
|---|
| 23 |  N MDCLOC,MDLOC,MDINPT,VAIP
 | 
|---|
| 24 |  I '$G(MDTR) Q 0
 | 
|---|
| 25 |  I '$G(MDPR) Q 0
 | 
|---|
| 26 |  I $G(MDSSTR)="" Q 0
 | 
|---|
| 27 |  S VAIP("D")=MDTR ; DT of Transaction Created
 | 
|---|
| 28 |  D IN5^VADPT S MDINPT=$S(+VAIP(13):1,1:0)
 | 
|---|
| 29 |  S MDCLOC=$$GET1^DIQ(702.01,+MDPR_",",.05,"I")
 | 
|---|
| 30 |  I 'MDCLOC S MDCLOC=+$P(MDSSTR,";",3) I 'MDCLOC Q 0
 | 
|---|
| 31 |  S Y=MDCLOC_";"_$P(MDSSTR,";",2)_";"_$P(MDSSTR,";")
 | 
|---|
| 32 |  I $P(Y,";",3)="A" Q Y
 | 
|---|
| 33 |  S:$P(Y,";",3)="" $P(Y,";",3)="A"
 | 
|---|
| 34 |  S:+MDINPT $P(Y,";",3)="A"
 | 
|---|
| 35 |  Q Y
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 | PDT(STUDY) ; [Function] Loop through the attachments for Date/Time Performed.
 | 
|---|
| 38 |  N MDL,MDDT
 | 
|---|
| 39 |  S MDL=0,MDDT=""
 | 
|---|
| 40 |  F  S MDL=$O(^MDD(702,STUDY,.1,MDL)) Q:'MDL  D  Q:MDDT
 | 
|---|
| 41 |  .S MDDT=$P($G(^MDD(702,STUDY,.1,MDL,0)),"^",3)
 | 
|---|
| 42 |  I MDDT S MDDT=$P($G(^MDD(703.1,+MDDT,0)),"^",3) ; Get Date/Time Performed
 | 
|---|
| 43 |  Q MDDT
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 | SUBMIT(STUDY) ; [Function] Submit all non-pending/uncomplete images in transaction to Imaging
 | 
|---|
| 46 |  N DATA,MDACQ,MDC,MDCRES,MDCTR,MDLOC,MDAR,MDARR,MDDT,MDFDA,MDDEL,MDIEN,MDIENS,MDIMG,MDL,MDMAG,MDR,MDST,MDX,MDY,MDZ
 | 
|---|
| 47 |  S MDIEN=+STUDY,MDIENS=MDIEN_","
 | 
|---|
| 48 |  S MDST=$$GET1^DIQ(702,MDIEN,.09,"I") I "13"[MDST Q "-1^Study not in proper status"
 | 
|---|
| 49 |  D DELERR(+MDIEN)
 | 
|---|
| 50 |  I $$GET1^DIQ(702,MDIEN,.01)="" Q "-1^No Entry in file (#702)."
 | 
|---|
| 51 |  D NOW^%DTC S MDDT=%
 | 
|---|
| 52 |  S MDMAG("IDFN")=+$$GET1^DIQ(702,MDIEN,.01,"I")
 | 
|---|
| 53 |  I 'MDMAG("IDFN") Q "-1^No Patient DFN."
 | 
|---|
| 54 |  S MDMAG("PXPKG")=8925
 | 
|---|
| 55 |  S MDMAG("PXIEN")=+$$GET1^DIQ(702,MDIEN,.06,"I")
 | 
|---|
| 56 |  I 'MDMAG("PXIEN") Q "-1^No TIU IEN"
 | 
|---|
| 57 |  I '$O(^MDD(702,MDIEN,.1,0)) D  Q $S(+MDR<0:MDR,1:"3^Transaction Complete")
 | 
|---|
| 58 |  .S MDC=$$GET1^DIQ(702,MDIEN,.05,"I")
 | 
|---|
| 59 |  .S MDR=$$UPDCONS(MDC,MDMAG("PXIEN"))
 | 
|---|
| 60 |  S MDMAG("STSCB")="ISTAT^MDAPI"
 | 
|---|
| 61 |  S MDMAG("TRKID")="CP;"_MDIEN_"-"_MDDT
 | 
|---|
| 62 |  S MDLOC=$$GET1^DIQ(702,MDIEN,.07,"I"),MDLOC=$P(MDLOC,";",3)
 | 
|---|
| 63 |  I 'MDLOC Q "-1^No Hospital Location."
 | 
|---|
| 64 |  S MDMAG("ACQS")=$S(+$$GET1^DIQ(44,MDLOC_",",3,"I"):+$$GET1^DIQ(44,MDLOC_",",3,"I"),1:+$G(DUZ(2)))
 | 
|---|
| 65 |  S MDMAG("ACQL")=MDLOC
 | 
|---|
| 66 |  S MDX=$$GET1^DIQ(702,MDIEN,.04,"I")
 | 
|---|
| 67 |  S MDZ=$P(^MDS(702.01,+MDX,0),"^",1)
 | 
|---|
| 68 |  S (MDACQ,MDX,MDDEL)="",MDCTR=0
 | 
|---|
| 69 |  N MDTOT S MDTOT=$$GET1^DIQ(702,MDIENS,.991)
 | 
|---|
| 70 |  S MDL=0 F  S MDL=$O(^MDD(702,MDIEN,.1,MDL)) Q:MDL<1  S MDX=$G(^(MDL,0)) D
 | 
|---|
| 71 |  .S:'MDDEL MDDEL=$P(MDX,"^",3)
 | 
|---|
| 72 |  .S MDY=$G(^MDD(702,MDIEN,.1,MDL,.1)) Q:MDY=""
 | 
|---|
| 73 |  .S:MDACQ="" MDACQ=$P($P(MDY,"\\",2),"\")
 | 
|---|
| 74 |  .S:"12"[$P(MDX,"^",9) $P(MDX,"^",9)=""
 | 
|---|
| 75 |  .I $P(MDX,"^",9)="" S MDCTR=MDCTR+1,MDARR(MDCTR)=MDY_"^"_MDZ_" image "_MDCTR_" out of "_MDTOT
 | 
|---|
| 76 |  .Q
 | 
|---|
| 77 |  I '$O(MDARR(0)) Q "-1^No UNC."
 | 
|---|
| 78 |  S MDMAG("GDESC")=MDZ_" Result"
 | 
|---|
| 79 |  I MDDEL S MDY=$P($G(^MDD(703.1,+MDDEL,0)),"^",3,4),MDMAG("PXDT")=$P(MDY,"^",1),MDY=+$P(MDY,"^",2),MDMAG("ACQD")=$P($G(^MDS(702.09,+MDY,0)),"^"),MDMAG("DFLG")=+$P($G(^MDS(702.09,+MDY,0)),"^",5)
 | 
|---|
| 80 |  S:$G(MDMAG("ACQD"))="" MDMAG("ACQD")=MDACQ
 | 
|---|
| 81 |  S:'$G(MDMAG("PXDT")) MDMAG("PXDT")=MDDT ; If no date, use NOW in MDDT
 | 
|---|
| 82 |  S MDMAG("TRTYPE")="NEW"
 | 
|---|
| 83 |  D IMPORT^MAGGSIUI(.MDIMG,.MDARR,.MDMAG)
 | 
|---|
| 84 |  I '(+$G(MDIMG(0))) D  Q "-1^"_$P(MDIMG(0),"^",2)
 | 
|---|
| 85 |  .D IMGSTAT(+MDIENS,1)
 | 
|---|
| 86 |  .F MDAR=0:0 S MDAR=$O(MDIMG(MDAR)) Q:'MDAR  I $G(MDIMG(MDAR))'="" D
 | 
|---|
| 87 |  ..S DATA("MESSAGE")=$$TRANS^MDAPI(MDIMG(MDAR)) D ADDMSG^MDRPCOT
 | 
|---|
| 88 |  D IMGSTAT(+MDIENS,0)
 | 
|---|
| 89 |  Q "1^Images Submitted"
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 | UPDCONS(MDC,MDDOC) ; [Function] Update Consults Procedure Status
 | 
|---|
| 92 |  N MDCRES
 | 
|---|
| 93 |  S MDCRES=$$CPDOC^GMRCCP(MDC,MDDOC,2)
 | 
|---|
| 94 |  I '(+MDCRES) Q "-1^"_$P(MDCRES,"^",2)
 | 
|---|
| 95 |  Q 1
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 | GETIORD(MDIEN) ; [Function] Return the Instrument order number for this study
 | 
|---|
| 98 |  ; Called from instrument interface routines
 | 
|---|
| 99 |  Q:'$D(^MDD(702,MDIEN,0))#2 -1  ; No such study
 | 
|---|
| 100 |  Q:'$P(^MDD(702,MDIEN,0),U,12) $$NEWIORD(MDIEN)  ; Create a new one
 | 
|---|
| 101 |  Q $P(^MDD(702,MDIEN,0),U,12)  ; Return the existing one
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 | NEWIORD(MDIEN) ; [Function] Generate & return new unique instrument order number
 | 
|---|
| 104 |  ; Notice: will overwrite existing order number if it exists
 | 
|---|
| 105 |  N MDFDA
 | 
|---|
| 106 |  Q:'$D(^MDD(702,MDIEN,0))#2 -1  ; No such study
 | 
|---|
| 107 |  L +^MDD(702,"AION"):15 E  Q -1  ; Unable to lock and guarantee uniqueness
 | 
|---|
| 108 |  F  D  Q:'$D(^MDD(702,"AION",X))  H 1  ; Loop until unique
 | 
|---|
| 109 |  . S X=$$NOW^XLFDT() ; Current DateTime
 | 
|---|
| 110 |  . S X=$TR($J(X,14,6),".","") ; Pad with 0's and strip the decimal
 | 
|---|
| 111 |  . Q
 | 
|---|
| 112 |  I $E($G(^MDS(702.09,DEVIEN,0)),1,4)="Muse" D
 | 
|---|
| 113 |  . ; Due to current limitation to the Muse can only except 9
 | 
|---|
| 114 |  . S X=$E($TR($H,",",""),2,10) ; Using $E($H) only for the MUSE
 | 
|---|
| 115 |  . I '$D(^MDD(702,"AION",X)) Q  ; It is unique and quit
 | 
|---|
| 116 |  . N I,FLG ; Not unique
 | 
|---|
| 117 |  . S FLG=0
 | 
|---|
| 118 |  . F I=1:1 D  Q:FLG
 | 
|---|
| 119 |  . . S X=X+1
 | 
|---|
| 120 |  . . I '$D(^MDD(702,"AION",X)) S FLG=1
 | 
|---|
| 121 |  . . Q
 | 
|---|
| 122 |  . Q
 | 
|---|
| 123 |  S MDFDA(702,MDIEN_",",.12)=X  ; Build FDA
 | 
|---|
| 124 |  D FILE^DIE("","MDFDA")  ; File it
 | 
|---|
| 125 |  L -(^MDD(702,"AION"))  ; Unlock it
 | 
|---|
| 126 |  Q $P(^MDD(702,MDIEN,0),U,12)  ; Return it from the file
 | 
|---|
| 127 |  ;
 | 
|---|
| 128 | GETSTDY(MDION) ; [Function] Return study from instrument order number
 | 
|---|
| 129 |  ; Called from instrument interface routines
 | 
|---|
| 130 |  Q:'$D(^MDD(702,"AION",MDION)) -1  ; No such order number
 | 
|---|
| 131 |  Q $O(^MDD(702,"AION",MDION,""))  ; Return the 702 ien
 | 
|---|
| 132 |  ;
 | 
|---|