Changeset 636 for FOIAVistA/tag/r/CLINICAL_PROCEDURES-MD/MDHL7A.m
- Timestamp:
- Dec 4, 2009, 8:26:01 PM (14 years ago)
- Location:
- FOIAVistA/tag/r
- Files:
-
- 1 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
FOIAVistA/tag/r/CLINICAL_PROCEDURES-MD/MDHL7A.m
r628 r636 1 MDHL7A ; HOIFO/WAA - Routine to Decode HL7 for CP ; 9/17/07 08:172 ;;1.0;CLINICAL PROCEDURES; **6**;Apr 01, 2004;Build 1021 MDHL7A ; HOIFO/WAA - Routine to Decode HL7 for CP ; [05-07-2001 10:38] 2 ;;1.0;CLINICAL PROCEDURES;;Apr 01, 2004 3 3 ; Reference DBIA #10035 [Supported] for DPT calls. 4 4 ; Reference DBIA #10106 [Supported] for HLFNC calls. 5 5 ; Reference DBIA #10062 [Supported] for VADPT6 calls. 6 ; Reference DBIA #2701 [Supported] for MPIF001 calls 7 ; Reference DBIA #10096 [Supported] for ^%ZOSF calls 6 ; Reference DBIA #2701 [Supported] for MPIF001 Calls 8 7 EN ; [Procedure] Entry Point for Message Array in MSG 9 8 N %,BID,CODE,CPT,DA,DATE,DFN,DIK,DLCO,DTO,DZ,ERRTX,EXAM,EXE,MDFLAG,FIL … … 13 12 N ECODE,MDIEN,MDOBX,NUMZ,PNAM,ZCODE,MDDEV,MDD702,DEVNAME,DEVIEN,MDQFLG 14 13 N MDIORD 15 K ^TMP($J,"MDHL7A"),^TMP($J,"MDHL7") ,^TMP($J,"MDHL7A1")14 K ^TMP($J,"MDHL7A"),^TMP($J,"MDHL7") 16 15 S MDFLAG=0,MDERROR=0,MDQFLG=0 17 Q:$G(HLMTIENS)="" 18 S ^TMP($J,"MDHL7A1")="" 19 S HLREST="^TMP($J,""MDHL7A1"")" 20 S X=$$MSGIEN^MDHL7U3(HLMTIENS,HLREST) ; This code is to convert the HL7 Message **6** 21 I $P(X,U)=0 D Q 22 . S DEVIEN=0,ECODE=0 23 . S ERRTX=$P(X,U,2) 24 . D ^MDHL7X 25 . Q 26 I $P(X,U)=1 D XVERT^MDHL7U3("MDHL7A1","MDHL7A") 27 K HLNODE,^TMP($J,"MDHL7A1") 16 F I=1:1 X HLNEXT Q:MDQFLG S ^TMP($J,"MDHL7A",I)=$TR(HLNODE,$C(10),""),J=0 S:HLQUIT<1 MDQFLG=1 F S J=$O(HLNODE(J)) Q:J<1 S ^TMP($J,"MDHL7A",I,J)=$TR(HLNODE(J),$C(10),"") 17 K HLNODE 28 18 ; 29 19 EN2 ; [Procedure] No Description 30 S (DEVIEN,DEVNAME)="" ,I=020 S (DEVIEN,DEVNAME)="" 31 21 F I=1:1 S X=$G(^TMP($J,"MDHL7A",I)) Q:X="" Q:$E(X,1,3)="OBX" D 32 22 . S:$E(X,1,3)="MSH" DEVNAME=$P(X,"|",4) 33 . I DEVNAME="",HLREC("SFN")'="" S DEVNAME=HLREC("SFN")34 23 . I $E(X,1,3)="MSH",DEVNAME'="Instrument Manager" S DEVIEN=$O(^MDS(702.09,"B",DEVNAME,0)) 35 24 . I $E(X,1,3)="OBR" D … … 58 47 I (ZCODE="M")!(ZCODE="B") D Q:MDERROR Q:ZCODE="M" ; 59 48 . S MDFLAG=1,MDERROR=0 ; Tell Medicine that CP is talking to HL7 49 . ;S MSG(1)=^TMP($J,"MDHL7A",1) 50 . ;S MSG(2)=^TMP($J,"MDHL7A",2) 60 51 . D ^MDHL7MCA ; Run the Medicine routines 61 52 . Q:MDERROR ; Medicine found an error and sent an error back 53 . ;;I ZCODE="M" D GENACK^MDHL7X 62 54 . Q 63 55 S NUMZ=$O(^TMP($J,"MDHL7A",""),-1) … … 104 96 S MDIORD=$P(X,"|",4) 105 97 S MDD702=$S(+MDIORD<1:"",1:$$GETSTDY^MDRPCOT1(MDIORD)) 106 ;I MDD702'="" S MDD702=$$CHK^MDNCHK(MDD702) ; PATCH 11107 98 S ORIFN=$P(X,"|",3),(EXAM,%)=$P(X,"|",5) I EXAM'="" S EXAM=$P(%,"^",2) I EXAM="" S EXAM=$P(%,"^",1) 108 99 S CPT=$P(X,"|",5) I $P(CPT,"^",3)["CPT" S CPT=$P(CPT,"^",1) … … 110 101 ; vvv== Added to address the issues of mismatch 111 102 I $G(MDD702)>0 I DFN'=$$GET1^DIQ(702,MDD702,.01,"I") S ERRTX="Patient name Mismatch. Name in PID doesn't match the name in the CP Order #"_MDD702_"." D ^MDHL7X Q 112 I $G(MDD702)>0 I MDDOB'=$$GET1^DIQ(2,DFN,.03,"I") S ERRTX="Patient DOB Mismatch. DOB in PID doesn't match the DOB in the CP Order #"_MDD702_"." D ^MDHL7X Q113 103 I DTO="" S ERRTX="Missing required Date/Time of Procedure in OBR" D ^MDHL7X Q 114 104 ;;S UNIQ=$TR($H,",","-") … … 119 109 S MDRTN=$P($G(^MDS(702.09,INST,.1)),"^",1) S:MDRTN'["^" MDRTN="^"_MDRTN 120 110 S X=MDRTN S:X["^" X=$P(X,"^",2) X ^%ZOSF("TEST") I '$T S ERRTX="Processing routine not found" D ^MDHL7X Q ; IA %10096 121 D CPTICD^MDHL7U3(X,MDIEN) ; Update CPT and ICD9122 D PHY^MDHL7U3(X,MDIEN) ; Get Doc who did the procedure.123 111 Q 124 112 ; … … 126 114 S X=$G(^TMP($J,"MDHL7A",NUM)) I $E(X,1,3)'="PID" S ERRTX="PID not second record" D ^MDHL7X Q 127 115 S SEG("PID")=X 128 S MDDOB=$P(X,"|",8) I MDDOB'="" S MDDOB=($E(MDDOB,1,4)-1700)_$E(MDDOB,5,8)129 116 I $L($P(X,"|",4))'<16 D I +DFN=-1 Q 130 117 . N ICN … … 154 141 ; 155 142 OBX ; [Observation] 143 ;Q:$P(^TMP($J,"MDHL7A",NUM),"|")'="OBX" 156 144 D @MDRTN 157 145 Q 158 146 NEWID(DFN,DATE,INST,MDD702,HLMTIEN) ; Generate a new entry and ID of 703.1 159 N NEWID,MDFDA,MDIEN ,MDNO147 N NEWID,MDFDA,MDIEN 160 148 S NEWID=$TR($H,",","-") ; Create inital ID 161 149 L +(^MDD(703.1,"B")):60 E Q "-1" 162 ;^^--- Unable to get a lock in the file150 ;^^--- Unable to get an lock in the file 163 151 F Q:'$D(^MDD(703.1,"B",NEWID)) H 1 S NEWID=$TR($H,",","-") 164 ;^^--- Search to create a new ID ifcurrent ID is in use152 ;^^--- Search to create an new ID in current ID is in use 165 153 S MDFDA(703.1,"+1,",.01)=NEWID 166 154 S MDFDA(703.1,"+1,",.02)=DFN … … 171 159 D UPDATE^DIE("","MDFDA","MDIEN") 172 160 L -(^MDD(703.1,"B")) 173 I $G(MDIEN(1))>0 D Q MDIEN(1)_U_NEWID 174 . S ^MDD(703.1,MDIEN(1),.1,0)="^703.11S^0^0" 175 . S MDNO=$$NTIU^MDRPCW1(+MDD702) 176 . Q 161 I $G(MDIEN(1))>0 S ^MDD(703.1,MDIEN(1),.1,0)="^703.11S^0^0" Q MDIEN(1)_U_NEWID 177 162 ; ^^--- Create Subfile and quit 178 163 Q "-1" ; Unable to create file
Note:
See TracChangeset
for help on using the changeset viewer.