[630] | 1 | C0CMXP ; GPL - MXML based XPath utilities;12/04/09 17:05
|
---|
| 2 | ;;0.1;C0C;nopatch;noreleasedate
|
---|
| 3 | ;Copyright 2009 George Lilly. Licensed under the terms of the GNU
|
---|
| 4 | ;General Public License See attached copy of the License.
|
---|
| 5 | ;
|
---|
| 6 | ;This program is free software; you can redistribute it and/or modify
|
---|
| 7 | ;it under the terms of the GNU General Public License as published by
|
---|
| 8 | ;the Free Software Foundation; either version 2 of the License, or
|
---|
| 9 | ;(at your option) any later version.
|
---|
| 10 | ;
|
---|
| 11 | ;This program is distributed in the hope that it will be useful,
|
---|
| 12 | ;but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
| 13 | ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
---|
| 14 | ;GNU General Public License for more details.
|
---|
| 15 | ;
|
---|
| 16 | ;You should have received a copy of the GNU General Public License along
|
---|
| 17 | ;with this program; if not, write to the Free Software Foundation, Inc.,
|
---|
| 18 | ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
---|
| 19 | ;
|
---|
| 20 | Q
|
---|
| 21 | ;
|
---|
| 22 | TEST ;
|
---|
| 23 | S C0CXMLIN=$NA(^TMP("C0CMXML",$J))
|
---|
| 24 | K GARY
|
---|
| 25 | W $$FTG^%ZISH("/home/vademo2/EHR/p/","mxml-test.xml",$NA(@C0CXMLIN@(1)),3)
|
---|
| 26 | S C0CDOCID=$$PARSE(C0CXMLIN) W !,"DocID: ",C0CDOCID
|
---|
| 27 | S REDUX="//ContinuityOfCareRecord/Body"
|
---|
| 28 | D XPATH(1,"/","GIDX","GARY",,REDUX)
|
---|
| 29 | Q
|
---|
| 30 | ;
|
---|
| 31 | TEST2 ;
|
---|
| 32 | S REDUX="//soap:Envelope/soap:Body/GetPatientFullMedicationHistory5Response/GetPatientFullMedicationHistory5Result/patientDrugDetail"
|
---|
| 33 | D XPATH(1,"/","GIDX","GARY","",REDUX)
|
---|
| 34 | Q
|
---|
| 35 | ;
|
---|
| 36 | TEST3
|
---|
| 37 | S C0CXMLIN=$NA(^TMP("C0CMXML",$J))
|
---|
| 38 | K GARY,GTMP,GIDX
|
---|
| 39 | K @C0CXMLIN
|
---|
| 40 | W $$FTG^%ZISH("/home/vademo2/CCR/","SampleCCDDocument.xml",$NA(@C0CXMLIN@(1)),3)
|
---|
| 41 | D CLEANARY("GTMP",C0CXMLIN) ; REMOVE CONTROL CHARACTERS
|
---|
| 42 | K @C0CXMLIN
|
---|
| 43 | M @C0CXMLIN=GTMP
|
---|
| 44 | K GTMP
|
---|
| 45 | D STRIPTXT("GTMP",C0CXMLIN)
|
---|
| 46 | K @C0CXMLIN
|
---|
| 47 | M @C0CXMLIN=GTMP
|
---|
| 48 | K GTMP
|
---|
| 49 | S C0CDOCID=$$PARSCCD(C0CXMLIN,"W") W !,"DocID: ",C0CDOCID
|
---|
| 50 | S REDUX="//ClinicalDocument/component/structuredBody"
|
---|
| 51 | D FINDTID ; FIND THE TEMPLATE IDS
|
---|
| 52 | D FINDALT ; FIND ALTERNATE TAGS
|
---|
| 53 | D SETCBK ; SET THE CALLBACK ROUTINE FOR TAGS
|
---|
| 54 | D XPATH(1,"/","GIDX","GARY",,REDUX)
|
---|
| 55 | K C0CCBK("TAG")
|
---|
| 56 | D SEPARATE("GARY2","GARY") ; SEPARATE FOR EASIER BROWSING
|
---|
| 57 | ;S C0CDOCID=$$PARSE(C0CXMLIN) W !,"DOCID: ",C0CDOCID ;CALL REGULAR PARSER
|
---|
| 58 | ;D XPATH(1,"/","GIDX2","GARY2",,REDUX)
|
---|
| 59 | Q
|
---|
| 60 | ;
|
---|
| 61 | TEST4 ; TEST OF OUTPUTING AN XML FILE FROM THE DOM .. this one is the CCR
|
---|
| 62 | ;
|
---|
| 63 | D TEST ; SET UP THE DOM
|
---|
| 64 | D START^C0CMXMLB($$TAG(1),,"G")
|
---|
| 65 | D NDOUT($$FIRST(1))
|
---|
| 66 | D END^C0CMXMLB ;END THE DOCUMENT
|
---|
| 67 | M ZCCR=^TMP("MXMLBLD",$J)
|
---|
| 68 | ZWR ZCCR
|
---|
| 69 | Q
|
---|
| 70 | ;
|
---|
| 71 | TEST5 ; SAME AS TEST4, BUT THIS TIME THE CCD
|
---|
| 72 | S C0CXMLIN=$NA(^TMP("C0CMXML",$J))
|
---|
| 73 | K GARY,GTMP,GIDX
|
---|
| 74 | K @C0CXMLIN
|
---|
| 75 | W $$FTG^%ZISH("/home/vademo2/CCR/","SampleCCDDocument.xml",$NA(@C0CXMLIN@(1)),3)
|
---|
| 76 | D CLEANARY("GTMP",C0CXMLIN) ; REMOVE CONTROL CHARACTERS
|
---|
| 77 | K @C0CXMLIN
|
---|
| 78 | M @C0CXMLIN=GTMP
|
---|
| 79 | K GTMP
|
---|
| 80 | D STRIPTXT("GTMP",C0CXMLIN)
|
---|
| 81 | K @C0CXMLIN
|
---|
| 82 | M @C0CXMLIN=GTMP
|
---|
| 83 | K GTMP
|
---|
| 84 | S C0CDOCID=$$PARSE(C0CXMLIN) W !,"DOCID: ",C0CDOCID ;CALL REGULAR PARSER
|
---|
| 85 | ;D XPATH(1,"/","GIDX2","GARY2",,REDUX)
|
---|
| 86 | D OUTXML("ZCCD",C0CDOCID)
|
---|
| 87 | ;D START^C0CMXMLB($$TAG(1),,"G")
|
---|
| 88 | ;D NDOUT($$FIRST(1))
|
---|
| 89 | ;D END^C0CMXMLB ;END THE DOCUMENT
|
---|
| 90 | ;M ZCCD=^TMP("MXMLBLD",$J)
|
---|
| 91 | ZWR ZCCD(1:30)
|
---|
| 92 | Q
|
---|
| 93 | ;
|
---|
| 94 | MKTPLATE(INXML,OUTT) ;MAKE A TEMPLATE FROM INXML, RETURNED IN OUTT
|
---|
| 95 | ; BOTH PASSED BY NAME
|
---|
| 96 | ;
|
---|
| 97 | S C0CDOCID=$$PARSE(INXML,"C0CMKT")
|
---|
| 98 | S C0CDOM=$NA(^TMP("MXMLDOM",$J,C0CDOCID))
|
---|
| 99 | N ZI S ZI=""
|
---|
| 100 | F S ZI=$O(@C0CDOM@(ZI)) Q:ZI="" D ; FOR EACH NODE IN THE DOM
|
---|
| 101 | . W !,ZI,$$TAG(ZI)
|
---|
| 102 | Q
|
---|
| 103 | ;
|
---|
| 104 | UPDIE ; INTERNAL ROUTINE TO CALL UPDATE^DIE AND CHECK FOR ERRORS
|
---|
| 105 | K ZERR
|
---|
| 106 | D CLEAN^DILF
|
---|
| 107 | D UPDATE^DIE("","C0CFDA","","ZERR")
|
---|
| 108 | I $D(ZERR) D ;
|
---|
| 109 | . W "ERROR",!
|
---|
| 110 | . ZWR ZERR
|
---|
| 111 | . B
|
---|
| 112 | K C0CFDA
|
---|
| 113 | Q
|
---|
| 114 | ;
|
---|