| [613] | 1 | MDUXMLM ; HOIFO/WAA -Utilities for XML text  ; 7/26/00
 | 
|---|
 | 2 |         ;;1.0;CLINICAL PROCEDURES;**6**;Apr 01, 2004;Build 102
 | 
|---|
 | 3 |         ; This routine will loop throught the HL7 Message as sent
 | 
|---|
 | 4 |         ; by the vendor and convert that message into XML for
 | 
|---|
 | 5 |         ; Processing by the gateway.
 | 
|---|
 | 6 |         ;
 | 
|---|
 | 7 | MSH     ; Parse the MSH
 | 
|---|
 | 8 |         N MSGDATE
 | 
|---|
 | 9 |         D XML^MDUXMLU1("<MESSAGE_HEADER>")
 | 
|---|
 | 10 |         D BLDXML^MDUXMLU1("INTERNAL_APPLICATION","CLOB")
 | 
|---|
 | 11 |         S DEVICE=$P(LINE,DL,4)
 | 
|---|
 | 12 |         D BLDXML^MDUXMLU1("INSTRUMENT_INSTANCE_ID",DEVICE)
 | 
|---|
 | 13 |         S MSGDATE=$P(LINE,DL,7) I MSGDATE="" D
 | 
|---|
 | 14 |         . D NOW^%DTC
 | 
|---|
 | 15 |         . S MSGDATE=%
 | 
|---|
 | 16 |         . S MSGDATE=$$FTOHL7^MDHL7U2(MSGDATE)
 | 
|---|
 | 17 |         . Q
 | 
|---|
 | 18 |         D DATE^MDUXMLU1("TRANSMISSION_DATE_TIME",MSGDATE)
 | 
|---|
 | 19 |         D BLDXML^MDUXMLU1("MESSAGE_CONTROL_ID",$P(LINE,DL,10))
 | 
|---|
 | 20 |         D BLDXML^MDUXMLU1("MESSAGE_TYPE",$P(LINE,DL,9))
 | 
|---|
 | 21 |         D BLDXML^MDUXMLU1("PRODUCTION_MODE",$S($P(LINE,DL,11)="P":"Y",1:"N"))
 | 
|---|
 | 22 |         D BLDXML^MDUXMLU1("HL7_VERSION",$P(LINE,DL,12))
 | 
|---|
 | 23 |         D XML^MDUXMLU1("</MESSAGE_HEADER>")
 | 
|---|
 | 24 |         Q
 | 
|---|
 | 25 | PID     ; Parse the PID
 | 
|---|
 | 26 |         N SSN
 | 
|---|
 | 27 |         D XML^MDUXMLU1("<PATIENT_INFORMATION>")
 | 
|---|
 | 28 |         D BLDXML^MDUXMLU1("PATIENT_ID",$P(LINE,DL,4))
 | 
|---|
 | 29 |         D XML^MDUXMLU1("<PATIENT_NAME>")
 | 
|---|
 | 30 |         D NAME^MDUXMLU1($P(LINE,DL,6))
 | 
|---|
 | 31 |         D XML^MDUXMLU1("</PATIENT_NAME>")
 | 
|---|
 | 32 |         D DATE^MDUXMLU1("DATE_OF_BIRTH",$P(LINE,DL,8))
 | 
|---|
 | 33 |         D BLDXML^MDUXMLU1("SEX",$P(LINE,DL,9))
 | 
|---|
 | 34 |         S SSN=$P(LINE,DL,20) I SSN="" S SSN=$P(LINE,DL,4)
 | 
|---|
 | 35 |         D BLDXML^MDUXMLU1("SSN",$P(LINE,DL,20))
 | 
|---|
 | 36 |         D XML^MDUXMLU1("</PATIENT_INFORMATION>")
 | 
|---|
 | 37 |         Q
 | 
|---|
 | 38 | PV1     ; Parse the PV1
 | 
|---|
 | 39 |         D BLDXML^MDUXMLU1("PATIENT_CLASS",$P(LINE,DL,3))
 | 
|---|
 | 40 |         D BLDXML^MDUXMLU1("PATIENT_LOCATION",$P(LINE,DL,4))
 | 
|---|
 | 41 |         Q
 | 
|---|
 | 42 | ORC     ; Parse the ORC
 | 
|---|
 | 43 |         S ORDER=1
 | 
|---|
 | 44 |         D XML^MDUXMLU1("<ORDER_INFORMATION>")
 | 
|---|
 | 45 |         D BLDXML^MDUXMLU1("ORDER_CONTROL",$P(LINE,DL,2))
 | 
|---|
 | 46 |         D BLDXML^MDUXMLU1("PLACER_ORDER_NUMBER",$P(LINE,DL,3))
 | 
|---|
 | 47 |         D DATE^MDUXMLU1("TRANSACTION_DATE_TIME",$P(LINE,DL,10))
 | 
|---|
 | 48 |         Q
 | 
|---|
 | 49 | OBR     ; Parse the OBR
 | 
|---|
 | 50 |         D XML^MDUXMLU1("<RESULTS>")
 | 
|---|
 | 51 |         D BLDXML^MDUXMLU1("FILLER_ORDER_NUMBER",$P(LINE,DL,4))
 | 
|---|
 | 52 |         D BLDXML^MDUXMLU1("PROCEDURE_INSTANCE_ID",$P(LINE,DL,4))
 | 
|---|
 | 53 |         I $P(LINE,DL,5)'="" D  ; Get the procedure type if there is one.
 | 
|---|
 | 54 |         . N LINX
 | 
|---|
 | 55 |         . S LINX=$P($P(LINE,DL,5),"^")
 | 
|---|
 | 56 |         . I LINX="" S LINX=$P($P(LINE,DL,5),"^",2)
 | 
|---|
 | 57 |         . D BLDXML^MDUXMLU1("PROCEDURE_TYPE",LINX)
 | 
|---|
 | 58 |         . Q
 | 
|---|
 | 59 |         D DATE^MDUXMLU1("DATE_OBSERVED",$P(LINE,DL,8))
 | 
|---|
 | 60 |         I $P(LINE,DL,14)'="" D  ; Pick up ICD9 code
 | 
|---|
 | 61 |         . D XML^MDUXMLU1("<RELEVENT_CLINICAL>")
 | 
|---|
 | 62 |         . D CODING^MDUXMLU1("ICD",$P(LINE,DL,14))
 | 
|---|
 | 63 |         . D XML^MDUXMLU1("</RELEVENT_CLINICAL>")
 | 
|---|
 | 64 |         . Q
 | 
|---|
 | 65 |         I $P(LINE,DL,17)'="" D
 | 
|---|
 | 66 |         . D XML^MDUXMLU1("<ORDERING_PROVIDER>")
 | 
|---|
 | 67 |         . D NAME^MDUXMLU1($P(LINE,DL,17))
 | 
|---|
 | 68 |         . D XML^MDUXMLU1("</ORDERING_PROVIDER>")
 | 
|---|
 | 69 |         . Q
 | 
|---|
 | 70 |         D BLDXML^MDUXMLU1("STATUS",$P(LINE,DL,26))
 | 
|---|
 | 71 |         D BLDXML^MDUXMLU1("QUALITY_TIMING",$P(LINE,DL,28))
 | 
|---|
 | 72 |         I $P(LINE,DL,37)'="" D DATE^MDUXMLU1("DATE_SCHEDULED",$P(LINE,DL,37))
 | 
|---|
 | 73 |         I $P(LINE,DL,45)'="" D  ; Pick up CPT code
 | 
|---|
 | 74 |         . D XML^MDUXMLU1("<PROCEDURE_CODE>")
 | 
|---|
 | 75 |         . D CODING^MDUXMLU1("CPT",$P(LINE,DL,45))
 | 
|---|
 | 76 |         . D XML^MDUXMLU1("</PROCEDURE_CODE>")
 | 
|---|
 | 77 |         . Q
 | 
|---|
 | 78 |         Q
 | 
|---|
 | 79 | OBX     ; Parse the OBX
 | 
|---|
 | 80 |         D OBX^MDUXMLOX
 | 
|---|
 | 81 |         Q
 | 
|---|