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
|
---|