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