VEPER7S2 ;DOQ-IT HL7 Segment generation routine ; 10/11/05 10:22am ;;1.0;VOE;;Nov 16, 2005 ; OBXCPT(OBXC) ; ; ; OBXC - Observation Record Count ; N REC S REC="",OBXC=OBXC+1 S $P(REC,"|")=OBXC ;SEQUENCE NUMBER S OBCODE=$G(VOBX(9000010.18,XAMIEN,.01)) S OBTXT=$G(VOBX(9000010.18,XAMIEN,.04)) S $P(REC,"|",3)=OBCODE_"^"_OBTXT_"^C4" ;Observation ID List Code & Sys S $P(REC,"|",11)="F" S X=$G(VOBX(9000010.18,XAMIEN,.03)),X=$P(X,"@"),%DT="T" I X="" S X=VISITDT D ^%DT ;get date S $P(REC,"|",14)=$P($$FMTHL7^XLFDT(Y),"-") ;Observation Date S $P(REC,"|",16)=PRIPHN ;Physician Upin W "OBX|"_REC W ! Q ; ; OBX(OBXC) ; ; ; OBXC - Observation Record Count ; N REC,FILENUM,OBCODE,CODSYS S REC="",OBCODE="",CODSYS="SNM" S FILENUM=$S(EXAM="XAM":9000010.13,EXAM="PED":9000010.16,EXAM="HF":9000010.23,1:"") I FILENUM="" Q S OBTEXT=$G(VOBX(FILENUM,XAMIEN,.01)) ; ;***CBF***Since the DOQ-IT HL7 tables are not present in VOE, manual mapping was done to properly set this segment. ; As new exams, patient education topics and health factors are added, this section must be updated. If the ; tables are eventually added, this section can be modified appropriately. ; I EXAM="XAM" S OBCODE=$S(OBTEXT["FOOT PULSE":21224004,OBTEXT["FOOT VISUAL":385954004,OBTEXT["FOOT":385954004,OBTEXT["EYE":282096008,1:"") I EXAM="PED" S OBCODE=$S(OBTEXT["HTN":39155009,OBTEXT["CESSATION":384742004,1:311401005) I EXAM="PED" S OBTEXT=$S(OBCODE=39155009:"HYPERTENSION EDUCATION",OBCODE=384742004:"SMOKING CESSATION ASSISTANCE",1:"PATIENT EDUCATION") I EXAM="HF" S OBCODE=$S(OBTEXT["SMOKELESS":81703003,OBTEXT["CHEWING":81703003,OBTEXT["SMOKE I":229819007,1:"") I EXAM="HF" I OBCODE="" S OBCODE=$S(OBTEXT["SMOKER":65568007,OBTEXT["SMOKING":229819007,1:"") I EXAM="HF" I OBCODE="" S OBCODE=$S(OBTEXT="HF-MI IMAGING EF FIRST PASS":41466009,OBTEXT="HF-VENT EF PROB TECH":46258004,1:"") I EXAM="HF" I OBCODE="" S OBCODE=$S(OBTEXT="HF-CARDIAC EF":70822001,OBTEXT="LEFT VENT EF":250908004,1:"") I EXAM="HF" I OBCODE="" S OBCODE=$S(OBTEXT="HF-NORM LV SYST DYS WALL MOTION":371857005,OBTEXT="HF-NO EVIDENCE LV SYST DYS FUNCTION":395172009,1:"") I EXAM="HF" S OBTEXT=$S(OBCODE=81703003:"CHEWS TOBACCO",OBCODE=229819007:"TOBACCO USE AND EXPOSURE",OBCODE=65568007:"CIGARETTE SMOKER",1:OBTEXT) I EXAM="HF" I OBTEXT["PATIENT REASON"!(OBTEXT["PHYSICIAN REASON") S OBCODE=$E(OBTEXT,1,4),CODSYS="IFMC" I OBCODE="" K REC Q S OBXC=OBXC+1 S $P(REC,"|")=OBXC ;SEQUENCE NUMBER I CODSYS'="IFMC" S $P(REC,"|",2)="ST" ;Observation Value Type S $P(REC,"|",3)=OBCODE_"^"_OBTEXT_"^"_CODSYS ;Observation ID List Code & Sys I CODSYS'="IFMC" I EXAM="XAM" S $P(REC,"|",5)=$G(VOBX(FILENUM,XAMIEN,.04)) ;Observation Value I CODSYS'="IFMC" I EXAM="HF" S $P(REC,"|",5)=$G(VOBX(FILENUM,XAMIEN,.04)) I CODSYS'="IFMC" I EXAM="PED" S $P(REC,"|",5)=$G(VOBX(FILENUM,XAMIEN,.06)) I $P(REC,"|",2)="ST" I $P(REC,"|",5)="" S $P(REC,"|",5)="NONE" S $P(REC,"|",6)="" ;Observation Units S $P(REC,"|",11)="F" S X=$G(VOBX(FILENUM,XAMIEN,.03)) I X="" S X=VISITDT S X=$P(X,"@"),%DT="T" D ^%DT S $P(REC,"|",14)=$P($$FMTHL7^XLFDT(Y),"-") ;Observation Date S $P(REC,"|",16)=PRIPHN ;Physician Upin W "OBX|"_REC W ! Q ; ; OBXVITAL(OBXC) ; ; ; OBXC - Observation Record Count ; N REC S REC="",OBXC=OBXC+1 S $P(REC,"|")=OBXC ;SEQUENCE NUMBER S $P(REC,"|",2)="ST" ;Observation Value Type S $P(REC,"|",3)=OBCODE_"^"_OBTXT_"^SNM" ;Observation ID List Code & Sys S $P(REC,"|",5)=OBVALUE ;Observation Value S $P(REC,"|",6)=OBID ;Observation Units - IDENTIFIER^TEXT S X=$G(VOBX(120.5,XAMIEN,.01)),X=$P(X,"@"),%DT="T" I X="" S X=VISITDT D ^%DT ;get date S $P(REC,"|",11)="F" S $P(REC,"|",14)=$P($$FMTHL7^XLFDT(Y),"-") ;Observation Date S $P(REC,"|",16)=PRIPHN ;Physician Upin W "OBX|"_REC W ! Q ; ; OBXLABS(OBXC) ; ; ; OBXC - Observation Record Count ; N REC,VOELAB,VOEOBX3,VOEOBX31,VOEOBX32 S (REC,VOELAB,VOEOBX3,VOEOBX31,VOEOBX32)="" F S VOELAB=$O(^VOELABS(VOELAB)) Q:'VOELAB D . I $P($G(^VOELABS(VOELAB)),"|")'="OBX" Q . S VOEOBX3=$P($G(^VOELABS(VOELAB)),"|",4) . S VOEOBX31=$P(VOEOBX3,"^") . I VOEOBX31'["-" Q . S VOEOBX32="^"_$P(VOEOBX3,"^",2)_"^LN" . S OBXC=OBXC+1 . S $P(REC,"|")=OBXC ;SEQUENCE NUMBER . S $P(REC,"|",2)="ST" ;Observation Value Type . S $P(REC,"|",3)=VOEOBX31_VOEOBX32 ;Observation ID List Code & Sys . S $P(REC,"|",5)=$P($G(^VOELABS(VOELAB)),"|",6) ;Observation Value . S $P(REC,"|",6)=$P($G(^VOELABS(VOELAB)),"|",7) ;Observation Units . S $P(REC,"|",11)="F" . S $P(REC,"|",14)=$P($$FMTHL7^XLFDT(DTTM),"-") ;Observation Date . S $P(REC,"|",16)=PRIPHN ;Physician Upin REUSE PRIPHN - NOT PERFECT, BUT OKAY . W "OBX|"_REC . W ! Q ; ;