Changeset 623 for WorldVistAEHR/trunk/r/CLINICAL_PROCEDURES-MD/MDHL7A.m
- Timestamp:
- Dec 4, 2009, 12:11:15 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
WorldVistAEHR/trunk/r/CLINICAL_PROCEDURES-MD/MDHL7A.m
r613 r623 1 MDHL7A ; HOIFO/WAA - Routine to Decode HL7 for CP ;9/17/07 08:17 2 ;;1.0;CLINICAL PROCEDURES;**6**;Apr 01, 2004;Build 102 3 ; Reference DBIA #10035 [Supported] for DPT calls. 4 ; Reference DBIA #10106 [Supported] for HLFNC calls. 5 ; Reference DBIA #10062 [Supported] for VADPT6 calls. 6 ; Reference DBIA #2701 [Supported] for MPIF001 calls 7 ; Reference DBIA #10096 [Supported] for ^%ZOSF calls 8 EN ; [Procedure] Entry Point for Message Array in MSG 9 N %,BID,CODE,CPT,DA,DATE,DFN,DIK,DLCO,DTO,DZ,ERRTX,EXAM,EXE,MDFLAG,FIL 10 N I,ICNT,ID,IMP,J,K,LBL,LINO,LINE,LN,MDAPP,MDRTN,MG,MSG,N,NAM,NEXT,NUM 11 N ORIFN,P,PID,PIEN,S,SEG,SET,SEP,MDSSN,STR,STYP,SUB,TCNT,TXT,UNIQ,SEC 12 N UNITS,VA,VAL,X,XMBODY,XMDUZ,XMSUBJ,XMTO,Z,ZZ,Z1,Z2,MDERROR 13 N ECODE,MDIEN,MDOBX,NUMZ,PNAM,ZCODE,MDDEV,MDD702,DEVNAME,DEVIEN,MDQFLG 14 N MDIORD 15 K ^TMP($J,"MDHL7A"),^TMP($J,"MDHL7"),^TMP($J,"MDHL7A1") 16 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") 28 ; 29 EN2 ; [Procedure] No Description 30 S (DEVIEN,DEVNAME)="",I=0 31 F I=1:1 S X=$G(^TMP($J,"MDHL7A",I)) Q:X="" Q:$E(X,1,3)="OBX" D 32 . S:$E(X,1,3)="MSH" DEVNAME=$P(X,"|",4) 33 . I DEVNAME="",HLREC("SFN")'="" S DEVNAME=HLREC("SFN") 34 . I $E(X,1,3)="MSH",DEVNAME'="Instrument Manager" S DEVIEN=$O(^MDS(702.09,"B",DEVNAME,0)) 35 . I $E(X,1,3)="OBR" D 36 .. I DEVNAME="Instrument Manager" D 37 ... S DEVNAME=$P(X,"|",25) 38 ... Q 39 .. S MDIORD=$P(X,"|",4) 40 .. S MDD702=$S(+MDIORD<1:"",1:$$GETSTDY^MDRPCOT1(MDIORD)) 41 .. I MDD702<1 S MDD702="" Q 42 .. I MDD702>0 D ;Validate the entry from 702 is good. 43 ... I $G(^MDD(702,MDD702,0))="" S MDD702="" Q 44 ... S DEVIEN=$$GET1^DIQ(702,MDD702,.11,"I") 45 ... I DEVIEN<1 S DEVIEN="" ; No device defined 46 ... Q 47 .. Q 48 . Q 49 I DEVIEN="",DEVNAME'="" S DEVIEN=$O(^MDS(702.09,"B",DEVNAME,0)) 50 I DEVNAME="" S ERRTX="Invalid device Code" D ^MDHL7X Q 51 I DEVIEN="" S ERRTX="Invalid device entry" D ^MDHL7X Q 52 S ZCODE=$P($G(^MDS(702.09,DEVIEN,.1)),"^",2) 53 S ECODE=0,INST=DEVIEN,MDAPP=DEVNAME 54 I 'INST S ERRTX="Invalid Application Code" D ^MDHL7X Q 55 D INST^MDHL7U2(DEVIEN,.ECODE) I 'ECODE D Q 56 . S ERRTX="Device Error" D ^MDHL7X 57 . Q 58 I (ZCODE="M")!(ZCODE="B") D Q:MDERROR Q:ZCODE="M" ; 59 . S MDFLAG=1,MDERROR=0 ; Tell Medicine that CP is talking to HL7 60 . D ^MDHL7MCA ; Run the Medicine routines 61 . Q:MDERROR ; Medicine found an error and sent an error back 62 . Q 63 S NUMZ=$O(^TMP($J,"MDHL7A",""),-1) 64 S NUM=0,MDOBX=0 65 F NUM=1:1:NUMZ D Q:$G(ERRTX)'="" 66 . S LINO=^TMP($J,"MDHL7A",NUM) 67 . S SEC=$P(LINO,"|") 68 . I SEC="MSH" D MSH Q 69 . I SEC="PID" D PID Q 70 . I SEC="OBR" D OBR Q 71 . I SEC="PV1" Q 72 . I SEC="ORC" Q 73 . I SEC="OBX" S MDOBX=1 Q 74 . Q 75 Q:$G(ERRTX)'="" 76 I 'MDOBX S ERRTX="OBX not found when expected" D ^MDHL7X Q 77 D OBX 78 D STATUS(MDIEN,"P") 79 K ^TMP($J,"MDHL7A"),^TMP($J,"MDHL7") 80 Q 81 STATUS(DA,STAT) ; Update the status of the report in 703.1 82 Q:$G(ERRTX)'="" 83 S $P(^MDD(703.1,DA,0),U,9)=STAT 84 S DIK="^MDD(703.1," D IX1^DIK 85 Q 86 IM ;Instrument Manager Interface 87 Q:DEVNAME'="Instrument Manager" 88 I $E(X,1,3)'="OBR" Q 89 S DEVNAME=$P(X,"|",25) 90 S DEVIEN=$O(^MDS(702.09,"B",DEVNAME,0)) 91 Q 92 ; 93 MSH ; [Procedure] Decode MSH 94 N SEG 95 I '$D(^TMP($J,"MDHL7A",NUM)) Q 96 S X=$G(^TMP($J,"MDHL7A",NUM)),SEG("MSH")=X 97 I $E(X,1,3)'="MSH" S ERRTX="MSH not first record" D ^MDHL7X Q 98 Q 99 ; 100 OBR ; [Procedure] Check OBR 101 N MDGMRC 102 S X=$G(^TMP($J,"MDHL7A",NUM)) I $E(X,1,3)'="OBR" S ERRTX="OBR not found when expected" D ^MDHL7X Q 103 S SEG("OBR")=X 104 S MDIORD=$P(X,"|",4) 105 S MDD702=$S(+MDIORD<1:"",1:$$GETSTDY^MDRPCOT1(MDIORD)) 106 ;I MDD702'="" S MDD702=$$CHK^MDNCHK(MDD702) ; PATCH 11 107 S ORIFN=$P(X,"|",3),(EXAM,%)=$P(X,"|",5) I EXAM'="" S EXAM=$P(%,"^",2) I EXAM="" S EXAM=$P(%,"^",1) 108 S CPT=$P(X,"|",5) I $P(CPT,"^",3)["CPT" S CPT=$P(CPT,"^",1) 109 S DTO="",DATE=$P(X,"|",8) I DATE'="" S:$L(DATE)>14 DATE=$E(DATE,1,14) S DTO=$$FMDATE^HLFNC(DATE) 110 ; vvv== Added to address the issues of mismatch 111 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 Q 113 I DTO="" S ERRTX="Missing required Date/Time of Procedure in OBR" D ^MDHL7X Q 114 ;;S UNIQ=$TR($H,",","-") 115 S UNIQ=$$NEWID(DFN,DATE,INST,$G(MDD702),HLMTIEN) 116 I +UNIQ="-1" S ERRTX="Unable to Create or Lock 703.1" D ^MDHL7X Q 117 S MDIEN=$P(UNIQ,"^",1) ; Got the IEN for 703.1 118 N SET S SET=DTO_"^"_$P(UNIQ,U,2),ICNT=0 N IMP 119 S MDRTN=$P($G(^MDS(702.09,INST,.1)),"^",1) S:MDRTN'["^" MDRTN="^"_MDRTN 120 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 ICD9 122 D PHY^MDHL7U3(X,MDIEN) ; Get Doc who did the procedure. 123 Q 124 ; 125 PID ; [Procedure] Check PID 126 S X=$G(^TMP($J,"MDHL7A",NUM)) I $E(X,1,3)'="PID" S ERRTX="PID not second record" D ^MDHL7X Q 127 S SEG("PID")=X 128 S MDDOB=$P(X,"|",8) I MDDOB'="" S MDDOB=($E(MDDOB,1,4)-1700)_$E(MDDOB,5,8) 129 I $L($P(X,"|",4))'<16 D I +DFN=-1 Q 130 . N ICN 131 . S ICN=$P(X,"|",4) 132 . S DFN=$$GETDFN^MPIF001(ICN) 133 . I +DFN=-1 S ERRTX=$P(DFN,U,2) 134 . D MDSSN I DFN<1 S ERRTX="SSN not found" D ^MDHL7X Q 135 . I DFN>0 K ERRTX 136 . S MDSSN=$$GET1^DIQ(2,DFN,.09,"I") I MDSSN="" S MDSSN=" ",DFN=0 137 . Q 138 E D MDSSN 139 I 'DFN S ERRTX="SSN not found" D ^MDHL7X Q 140 S Z1=$P($G(^DPT(DFN,0)),",",1),Z2=$P(NAM,"^",1) 141 S Z1=$TR(Z1,"abcdefghijklmnopqrstuvwxyz- '","ABCDEFGHIJKLMNOPQRSTUVWXYZ") 142 S Z2=$TR(Z2,"abcdefghijklmnopqrstuvwxyz- '","ABCDEFGHIJKLMNOPQRSTUVWXYZ") 143 I $E(Z1,1,3)'=$E(Z2,1,3) S ERRTX="Last Name MisMatch" D ^MDHL7X Q 144 S PNAM=$TR(NAM,"^",",") 145 D PID^VADPT6 S PID=$G(VA("PID")),BID=$G(VA("BID")) N VA 146 Q 147 MDSSN ; This subroutine is to match up the SSN for a patient. 148 S NAM=$P(X,"|",6),MDSSN=$P(X,"|",20) I $L(MDSSN)<9 S MDSSN=$P(X,"|",4) 149 S MDSSN=$P(MDSSN,"^",1) I MDSSN'?9N S MDSSN=$TR(MDSSN,"- ","") 150 I $E(MDSSN,$L(MDSSN))="P" S MDSSN=$E(MDSSN,1,9) 151 S:MDSSN'?9N MDSSN=" " S DFN=$O(^DPT("SSN",MDSSN,0)) 152 I 'DFN S DFN=$O(^DPT("SSN",MDSSN_"P",0)) 153 Q 154 ; 155 OBX ; [Observation] 156 D @MDRTN 157 Q 158 NEWID(DFN,DATE,INST,MDD702,HLMTIEN) ; Generate a new entry and ID of 703.1 159 N NEWID,MDFDA,MDIEN,MDNO 160 S NEWID=$TR($H,",","-") ; Create inital ID 161 L +(^MDD(703.1,"B")):60 E Q "-1" 162 ;^^--- Unable to get a lock in the file 163 F Q:'$D(^MDD(703.1,"B",NEWID)) H 1 S NEWID=$TR($H,",","-") 164 ;^^--- Search to create a new ID if current ID is in use 165 S MDFDA(703.1,"+1,",.01)=NEWID 166 S MDFDA(703.1,"+1,",.02)=DFN 167 S MDFDA(703.1,"+1,",.03)=$$HL7TFM^MDHL7U(DATE) 168 S MDFDA(703.1,"+1,",.04)=INST 169 S MDFDA(703.1,"+1,",.05)=MDD702 170 S MDFDA(703.1,"+1,",.06)=HLMTIEN 171 D UPDATE^DIE("","MDFDA","MDIEN") 172 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 177 ; ^^--- Create Subfile and quit 178 Q "-1" ; Unable to create file 179 ; 180 PROC ; [Procedure] Create report entry in file (703.1) 181 D PROC^MDHL7U 182 Q 1 MDHL7A ; HOIFO/WAA - Routine to Decode HL7 for CP ; [05-07-2001 10:38] 2 ;;1.0;CLINICAL PROCEDURES;;Apr 01, 2004 3 ; Reference DBIA #10035 [Supported] for DPT calls. 4 ; Reference DBIA #10106 [Supported] for HLFNC calls. 5 ; Reference DBIA #10062 [Supported] for VADPT6 calls. 6 ; Reference DBIA #2701 [Supported] for MPIF001 Calls 7 EN ; [Procedure] Entry Point for Message Array in MSG 8 N %,BID,CODE,CPT,DA,DATE,DFN,DIK,DLCO,DTO,DZ,ERRTX,EXAM,EXE,MDFLAG,FIL 9 N I,ICNT,ID,IMP,J,K,LBL,LINO,LINE,LN,MDAPP,MDRTN,MG,MSG,N,NAM,NEXT,NUM 10 N ORIFN,P,PID,PIEN,S,SEG,SET,SEP,MDSSN,STR,STYP,SUB,TCNT,TXT,UNIQ,SEC 11 N UNITS,VA,VAL,X,XMBODY,XMDUZ,XMSUBJ,XMTO,Z,ZZ,Z1,Z2,MDERROR 12 N ECODE,MDIEN,MDOBX,NUMZ,PNAM,ZCODE,MDDEV,MDD702,DEVNAME,DEVIEN,MDQFLG 13 N MDIORD 14 K ^TMP($J,"MDHL7A"),^TMP($J,"MDHL7") 15 S MDFLAG=0,MDERROR=0,MDQFLG=0 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 18 ; 19 EN2 ; [Procedure] No Description 20 S (DEVIEN,DEVNAME)="" 21 F I=1:1 S X=$G(^TMP($J,"MDHL7A",I)) Q:X="" Q:$E(X,1,3)="OBX" D 22 . S:$E(X,1,3)="MSH" DEVNAME=$P(X,"|",4) 23 . I $E(X,1,3)="MSH",DEVNAME'="Instrument Manager" S DEVIEN=$O(^MDS(702.09,"B",DEVNAME,0)) 24 . I $E(X,1,3)="OBR" D 25 .. I DEVNAME="Instrument Manager" D 26 ... S DEVNAME=$P(X,"|",25) 27 ... Q 28 .. S MDIORD=$P(X,"|",4) 29 .. S MDD702=$S(+MDIORD<1:"",1:$$GETSTDY^MDRPCOT1(MDIORD)) 30 .. I MDD702<1 S MDD702="" Q 31 .. I MDD702>0 D ;Validate the entry from 702 is good. 32 ... I $G(^MDD(702,MDD702,0))="" S MDD702="" Q 33 ... S DEVIEN=$$GET1^DIQ(702,MDD702,.11,"I") 34 ... I DEVIEN<1 S DEVIEN="" ; No device defined 35 ... Q 36 .. Q 37 . Q 38 I DEVIEN="",DEVNAME'="" S DEVIEN=$O(^MDS(702.09,"B",DEVNAME,0)) 39 I DEVNAME="" S ERRTX="Invalid device Code" D ^MDHL7X Q 40 I DEVIEN="" S ERRTX="Invalid device entry" D ^MDHL7X Q 41 S ZCODE=$P($G(^MDS(702.09,DEVIEN,.1)),"^",2) 42 S ECODE=0,INST=DEVIEN,MDAPP=DEVNAME 43 I 'INST S ERRTX="Invalid Application Code" D ^MDHL7X Q 44 D INST^MDHL7U2(DEVIEN,.ECODE) I 'ECODE D Q 45 . S ERRTX="Device Error" D ^MDHL7X 46 . Q 47 I (ZCODE="M")!(ZCODE="B") D Q:MDERROR Q:ZCODE="M" ; 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) 51 . D ^MDHL7MCA ; Run the Medicine routines 52 . Q:MDERROR ; Medicine found an error and sent an error back 53 . ;;I ZCODE="M" D GENACK^MDHL7X 54 . Q 55 S NUMZ=$O(^TMP($J,"MDHL7A",""),-1) 56 S NUM=0,MDOBX=0 57 F NUM=1:1:NUMZ D Q:$G(ERRTX)'="" 58 . S LINO=^TMP($J,"MDHL7A",NUM) 59 . S SEC=$P(LINO,"|") 60 . I SEC="MSH" D MSH Q 61 . I SEC="PID" D PID Q 62 . I SEC="OBR" D OBR Q 63 . I SEC="PV1" Q 64 . I SEC="ORC" Q 65 . I SEC="OBX" S MDOBX=1 Q 66 . Q 67 Q:$G(ERRTX)'="" 68 I 'MDOBX S ERRTX="OBX not found when expected" D ^MDHL7X Q 69 D OBX 70 D STATUS(MDIEN,"P") 71 K ^TMP($J,"MDHL7A"),^TMP($J,"MDHL7") 72 Q 73 STATUS(DA,STAT) ; Update the status of the report in 703.1 74 Q:$G(ERRTX)'="" 75 S $P(^MDD(703.1,DA,0),U,9)=STAT 76 S DIK="^MDD(703.1," D IX1^DIK 77 Q 78 IM ;Instrument Manager Interface 79 Q:DEVNAME'="Instrument Manager" 80 I $E(X,1,3)'="OBR" Q 81 S DEVNAME=$P(X,"|",25) 82 S DEVIEN=$O(^MDS(702.09,"B",DEVNAME,0)) 83 Q 84 ; 85 MSH ; [Procedure] Decode MSH 86 N SEG 87 I '$D(^TMP($J,"MDHL7A",NUM)) Q 88 S X=$G(^TMP($J,"MDHL7A",NUM)),SEG("MSH")=X 89 I $E(X,1,3)'="MSH" S ERRTX="MSH not first record" D ^MDHL7X Q 90 Q 91 ; 92 OBR ; [Procedure] Check OBR 93 N MDGMRC 94 S X=$G(^TMP($J,"MDHL7A",NUM)) I $E(X,1,3)'="OBR" S ERRTX="OBR not found when expected" D ^MDHL7X Q 95 S SEG("OBR")=X 96 S MDIORD=$P(X,"|",4) 97 S MDD702=$S(+MDIORD<1:"",1:$$GETSTDY^MDRPCOT1(MDIORD)) 98 S ORIFN=$P(X,"|",3),(EXAM,%)=$P(X,"|",5) I EXAM'="" S EXAM=$P(%,"^",2) I EXAM="" S EXAM=$P(%,"^",1) 99 S CPT=$P(X,"|",5) I $P(CPT,"^",3)["CPT" S CPT=$P(CPT,"^",1) 100 S DTO="",DATE=$P(X,"|",8) I DATE'="" S:$L(DATE)>14 DATE=$E(DATE,1,14) S DTO=$$FMDATE^HLFNC(DATE) 101 ; vvv== Added to address the issues of mismatch 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 103 I DTO="" S ERRTX="Missing required Date/Time of Procedure in OBR" D ^MDHL7X Q 104 ;;S UNIQ=$TR($H,",","-") 105 S UNIQ=$$NEWID(DFN,DATE,INST,$G(MDD702),HLMTIEN) 106 I +UNIQ="-1" S ERRTX="Unable to Create or Lock 703.1" D ^MDHL7X Q 107 S MDIEN=$P(UNIQ,"^",1) ; Got the IEN for 703.1 108 N SET S SET=DTO_"^"_$P(UNIQ,U,2),ICNT=0 N IMP 109 S MDRTN=$P($G(^MDS(702.09,INST,.1)),"^",1) S:MDRTN'["^" MDRTN="^"_MDRTN 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 111 Q 112 ; 113 PID ; [Procedure] Check PID 114 S X=$G(^TMP($J,"MDHL7A",NUM)) I $E(X,1,3)'="PID" S ERRTX="PID not second record" D ^MDHL7X Q 115 S SEG("PID")=X 116 I $L($P(X,"|",4))'<16 D I +DFN=-1 Q 117 . N ICN 118 . S ICN=$P(X,"|",4) 119 . S DFN=$$GETDFN^MPIF001(ICN) 120 . I +DFN=-1 S ERRTX=$P(DFN,U,2) 121 . D MDSSN I DFN<1 S ERRTX="SSN not found" D ^MDHL7X Q 122 . I DFN>0 K ERRTX 123 . S MDSSN=$$GET1^DIQ(2,DFN,.09,"I") I MDSSN="" S MDSSN=" ",DFN=0 124 . Q 125 E D MDSSN 126 I 'DFN S ERRTX="SSN not found" D ^MDHL7X Q 127 S Z1=$P($G(^DPT(DFN,0)),",",1),Z2=$P(NAM,"^",1) 128 S Z1=$TR(Z1,"abcdefghijklmnopqrstuvwxyz- '","ABCDEFGHIJKLMNOPQRSTUVWXYZ") 129 S Z2=$TR(Z2,"abcdefghijklmnopqrstuvwxyz- '","ABCDEFGHIJKLMNOPQRSTUVWXYZ") 130 I $E(Z1,1,3)'=$E(Z2,1,3) S ERRTX="Last Name MisMatch" D ^MDHL7X Q 131 S PNAM=$TR(NAM,"^",",") 132 D PID^VADPT6 S PID=$G(VA("PID")),BID=$G(VA("BID")) N VA 133 Q 134 MDSSN ; This subroutine is to match up the SSN for a patient. 135 S NAM=$P(X,"|",6),MDSSN=$P(X,"|",20) I $L(MDSSN)<9 S MDSSN=$P(X,"|",4) 136 S MDSSN=$P(MDSSN,"^",1) I MDSSN'?9N S MDSSN=$TR(MDSSN,"- ","") 137 I $E(MDSSN,$L(MDSSN))="P" S MDSSN=$E(MDSSN,1,9) 138 S:MDSSN'?9N MDSSN=" " S DFN=$O(^DPT("SSN",MDSSN,0)) 139 I 'DFN S DFN=$O(^DPT("SSN",MDSSN_"P",0)) 140 Q 141 ; 142 OBX ; [Observation] 143 ;Q:$P(^TMP($J,"MDHL7A",NUM),"|")'="OBX" 144 D @MDRTN 145 Q 146 NEWID(DFN,DATE,INST,MDD702,HLMTIEN) ; Generate a new entry and ID of 703.1 147 N NEWID,MDFDA,MDIEN 148 S NEWID=$TR($H,",","-") ; Create inital ID 149 L +(^MDD(703.1,"B")):60 E Q "-1" 150 ;^^--- Unable to get an lock in the file 151 F Q:'$D(^MDD(703.1,"B",NEWID)) H 1 S NEWID=$TR($H,",","-") 152 ;^^--- Search to create an new ID in current ID is in use 153 S MDFDA(703.1,"+1,",.01)=NEWID 154 S MDFDA(703.1,"+1,",.02)=DFN 155 S MDFDA(703.1,"+1,",.03)=$$HL7TFM^MDHL7U(DATE) 156 S MDFDA(703.1,"+1,",.04)=INST 157 S MDFDA(703.1,"+1,",.05)=MDD702 158 S MDFDA(703.1,"+1,",.06)=HLMTIEN 159 D UPDATE^DIE("","MDFDA","MDIEN") 160 L -(^MDD(703.1,"B")) 161 I $G(MDIEN(1))>0 S ^MDD(703.1,MDIEN(1),.1,0)="^703.11S^0^0" Q MDIEN(1)_U_NEWID 162 ; ^^--- Create Subfile and quit 163 Q "-1" ; Unable to create file 164 ; 165 PROC ; [Procedure] Create report entry in file (703.1) 166 D PROC^MDHL7U 167 Q
Note:
See TracChangeset
for help on using the changeset viewer.