| [613] | 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
 | 
|---|