1 | MDUXMLU1 ; HOIFO/WAA -Utilities for XML text ; 7/26/00
|
---|
2 | ;;1.0;CLINICAL PROCEDURES;**6**;Apr 01, 2004;Build 102
|
---|
3 | ; Utilities for the XML Parser
|
---|
4 | ;
|
---|
5 | FILTER(DATA) ;Filter out the bad chars.
|
---|
6 | Q:$G(DATA)'?.E1C.E DATA
|
---|
7 | N RESULTS
|
---|
8 | S RESULTS=""
|
---|
9 | F Q:'$L(DATA) S:$E(DATA)'?1C RESULTS=RESULTS_$E(DATA) S DATA=$E(DATA,2,$L(DATA))
|
---|
10 | Q RESULTS
|
---|
11 | VAL(DATA) ;Convert any special charcters to standard XML format
|
---|
12 | N DATA2,RESULT,CHAR,CHAR1,CHAR2,CNT,I
|
---|
13 | S RESULT="",CNT=0,I=0,DATA2=""
|
---|
14 | S DATA=$$FILTER(DATA)
|
---|
15 | F CHAR="&,amp","<,lt",">,gt","',apos",""",quot" D
|
---|
16 | . S CNT=$L(DATA,$P(CHAR,","))
|
---|
17 | . S CHAR1=$P(CHAR,","),CHAR2=$P(CHAR,",",2)
|
---|
18 | . S RESULT=""
|
---|
19 | . I CNT>1 F I=1:1:CNT D
|
---|
20 | . . S RESULT=RESULT_$P(DATA,CHAR1,I)
|
---|
21 | . . I CNT'=I S RESULT=RESULT_"&"_CHAR2_";"
|
---|
22 | . . Q
|
---|
23 | . I RESULT'="" S DATA=RESULT
|
---|
24 | . Q
|
---|
25 | I RESULT="" S RESULT=DATA
|
---|
26 | Q RESULT
|
---|
27 | ;
|
---|
28 | CODING(TYPE,DATA) ; Coding of both CPT and ICD9
|
---|
29 | Q:TYPE=""
|
---|
30 | Q:DATA=""
|
---|
31 | N DATAC,I,DEFF
|
---|
32 | S DATAC=$L(DATA,"~")
|
---|
33 | S DEFF=$S(TYPE="CPT":"PROCEDURE",TYPE="ICD":"DIAGNOSIS",1:0)
|
---|
34 | Q:'DEFF
|
---|
35 | F I=1:1:DATAC D
|
---|
36 | . D BLDXML^MDUXMLU1(TYPE_"_CODE",$P($P(DATA,"~",I),"^",1))
|
---|
37 | . D BLDXML^MDUXMLU1(TYPE_"_"_DEFF,$P($P(DATA,"~",I),"^",2))
|
---|
38 | . D BLDXML^MDUXMLU1(TYPE_"_CODE_TYPE",$P($P(DATA,"~",I),"^",3))
|
---|
39 | . Q
|
---|
40 | Q
|
---|
41 | HEAD ;Creat the header of the XML message
|
---|
42 | D XML^MDUXMLU1("<?xml version="_QUOT_"1.0"_QUOT_" encoding="_QUOT_"UTF-8"_QUOT_" ?>")
|
---|
43 | D XML^MDUXMLU1("<HL7_MESSAGE xmlns:xsi="_QUOT_"http://www.w3.org/2001/XMLSchema-instance"_QUOT_" xsi:noNamespaceSchemaLocation="_QUOT_"CLOB.xsd"_QUOT_">")
|
---|
44 | Q
|
---|
45 | TAIL ; Complete the message
|
---|
46 | D XML^MDUXMLU1("</RESULTS>")
|
---|
47 | I ORDER=1 D XML^MDUXMLU1("</ORDER_INFORMATION>")
|
---|
48 | D XML^MDUXMLU1("</HL7_MESSAGE>")
|
---|
49 | Q
|
---|
50 | NAME(NAME) ; Convert name
|
---|
51 | I NAME="" Q
|
---|
52 | D BLDXML^MDUXMLU1("LAST_NAME",$P(NAME,"^",1))
|
---|
53 | D BLDXML^MDUXMLU1("FIRST_NAME",$P(NAME,"^",2))
|
---|
54 | D BLDXML^MDUXMLU1("MIDDLE_NAME",$P(NAME,"^",3))
|
---|
55 | Q
|
---|
56 | DATE(FIELD,DATE) ; Convert date and post as xml
|
---|
57 | I FIELD="" Q
|
---|
58 | I DATE="" Q
|
---|
59 | D XML^MDUXMLU1("<"_FIELD_">")
|
---|
60 | D BLDXML^MDUXMLU1("YEAR",$E(DATE,1,4))
|
---|
61 | D BLDXML^MDUXMLU1("MONTH",$E(DATE,5,6))
|
---|
62 | D BLDXML^MDUXMLU1("DAY",$E(DATE,7,8))
|
---|
63 | I $E(DATE,9,10)?2N D BLDXML^MDUXMLU1("HOUR",$E(DATE,9,10))
|
---|
64 | I $E(DATE,11,12)?2N D BLDXML^MDUXMLU1("MINUTE",$E(DATE,11,12))
|
---|
65 | I $E(DATE,13,14)?2N D BLDXML^MDUXMLU1("SECOND",$E(DATE,13,14))
|
---|
66 | D XML^MDUXMLU1("</"_FIELD_">")
|
---|
67 | Q
|
---|
68 | BLDXML(HEAD,DATA) ;
|
---|
69 | Q:HEAD=""
|
---|
70 | Q:DATA=""
|
---|
71 | D XML^MDUXMLU1("<"_HEAD_">"_DATA_"</"_HEAD_">")
|
---|
72 | Q
|
---|
73 | XML(XMLLINE) ; create the XML Line in the temp file to be passed
|
---|
74 | Q:XMLLINE=""
|
---|
75 | S XMLCNT=XMLCNT+1
|
---|
76 | S ^TMP($J,"MDHL7XML",XMLCNT)=XMLLINE
|
---|
77 | Q
|
---|
78 | FILE(MDIEN) ; File off the XML data into 703.1
|
---|
79 | N CNT,MDDZ,LINE,LN
|
---|
80 | S CNT=0,CCNT=0
|
---|
81 | S MDDZ=$$UPDATE^MDHL7U(MDIEN)
|
---|
82 | Q:'MDDZ
|
---|
83 | F S CNT=$O(^TMP($J,"MDHL7XML",CNT)) Q:CNT<1 D
|
---|
84 | . S LINE=$G(^TMP($J,"MDHL7XML",CNT)) Q:LINE=""
|
---|
85 | . S ^MDD(703.1,MDIEN,.4,CNT,0)=LINE,CCNT=CCNT+1
|
---|
86 | . Q
|
---|
87 | S ^MDD(703.1,MDIEN,.4,0)="^^"_CCNT_"^"_CCNT_"^"_DT_"^"
|
---|
88 | K ^TMP($J,"MDHL7XML")
|
---|
89 | Q
|
---|