MDUXMLM	; HOIFO/WAA -Utilities for XML text  ; 7/26/00
	;;1.0;CLINICAL PROCEDURES;**6**;Apr 01, 2004;Build 102
	; This routine will loop throught the HL7 Message as sent
	; by the vendor and convert that message into XML for
	; Processing by the gateway.
	;
MSH	; Parse the MSH
	N MSGDATE
	D XML^MDUXMLU1("")
	D BLDXML^MDUXMLU1("INTERNAL_APPLICATION","CLOB")
	S DEVICE=$P(LINE,DL,4)
	D BLDXML^MDUXMLU1("INSTRUMENT_INSTANCE_ID",DEVICE)
	S MSGDATE=$P(LINE,DL,7) I MSGDATE="" D
	. D NOW^%DTC
	. S MSGDATE=%
	. S MSGDATE=$$FTOHL7^MDHL7U2(MSGDATE)
	. Q
	D DATE^MDUXMLU1("TRANSMISSION_DATE_TIME",MSGDATE)
	D BLDXML^MDUXMLU1("MESSAGE_CONTROL_ID",$P(LINE,DL,10))
	D BLDXML^MDUXMLU1("MESSAGE_TYPE",$P(LINE,DL,9))
	D BLDXML^MDUXMLU1("PRODUCTION_MODE",$S($P(LINE,DL,11)="P":"Y",1:"N"))
	D BLDXML^MDUXMLU1("HL7_VERSION",$P(LINE,DL,12))
	D XML^MDUXMLU1("")
	Q
PID	; Parse the PID
	N SSN
	D XML^MDUXMLU1("")
	D BLDXML^MDUXMLU1("PATIENT_ID",$P(LINE,DL,4))
	D XML^MDUXMLU1("")
	D NAME^MDUXMLU1($P(LINE,DL,6))
	D XML^MDUXMLU1("")
	D DATE^MDUXMLU1("DATE_OF_BIRTH",$P(LINE,DL,8))
	D BLDXML^MDUXMLU1("SEX",$P(LINE,DL,9))
	S SSN=$P(LINE,DL,20) I SSN="" S SSN=$P(LINE,DL,4)
	D BLDXML^MDUXMLU1("SSN",$P(LINE,DL,20))
	D XML^MDUXMLU1("")
	Q
PV1	; Parse the PV1
	D BLDXML^MDUXMLU1("PATIENT_CLASS",$P(LINE,DL,3))
	D BLDXML^MDUXMLU1("PATIENT_LOCATION",$P(LINE,DL,4))
	Q
ORC	; Parse the ORC
	S ORDER=1
	D XML^MDUXMLU1("")
	D BLDXML^MDUXMLU1("ORDER_CONTROL",$P(LINE,DL,2))
	D BLDXML^MDUXMLU1("PLACER_ORDER_NUMBER",$P(LINE,DL,3))
	D DATE^MDUXMLU1("TRANSACTION_DATE_TIME",$P(LINE,DL,10))
	Q
OBR	; Parse the OBR
	D XML^MDUXMLU1("")
	D BLDXML^MDUXMLU1("FILLER_ORDER_NUMBER",$P(LINE,DL,4))
	D BLDXML^MDUXMLU1("PROCEDURE_INSTANCE_ID",$P(LINE,DL,4))
	I $P(LINE,DL,5)'="" D  ; Get the procedure type if there is one.
	. N LINX
	. S LINX=$P($P(LINE,DL,5),"^")
	. I LINX="" S LINX=$P($P(LINE,DL,5),"^",2)
	. D BLDXML^MDUXMLU1("PROCEDURE_TYPE",LINX)
	. Q
	D DATE^MDUXMLU1("DATE_OBSERVED",$P(LINE,DL,8))
	I $P(LINE,DL,14)'="" D  ; Pick up ICD9 code
	. D XML^MDUXMLU1("")
	. D CODING^MDUXMLU1("ICD",$P(LINE,DL,14))
	. D XML^MDUXMLU1("")
	. Q
	I $P(LINE,DL,17)'="" D
	. D XML^MDUXMLU1("")
	. D NAME^MDUXMLU1($P(LINE,DL,17))
	. D XML^MDUXMLU1("")
	. Q
	D BLDXML^MDUXMLU1("STATUS",$P(LINE,DL,26))
	D BLDXML^MDUXMLU1("QUALITY_TIMING",$P(LINE,DL,28))
	I $P(LINE,DL,37)'="" D DATE^MDUXMLU1("DATE_SCHEDULED",$P(LINE,DL,37))
	I $P(LINE,DL,45)'="" D  ; Pick up CPT code
	. D XML^MDUXMLU1("")
	. D CODING^MDUXMLU1("CPT",$P(LINE,DL,45))
	. D XML^MDUXMLU1("")
	. Q
	Q
OBX	; Parse the OBX
	D OBX^MDUXMLOX
	Q