[613] | 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
|
---|