Changeset 1336 for ccr/trunk/p/C0CIN.m


Ignore:
Timestamp:
Jan 4, 2012, 9:39:08 PM (12 years ago)
Author:
George Lilly
Message:

removed tabs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ccr/trunk/p/C0CIN.m

    r1331 r1336  
    1 C0CIN     ; CCDCCR/GPL - CCR IMPORT utilities; 9/20/08
    2         ;;1.0;C0C;;Sep 20, 2009;Build 38
    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         W "This is the CCR Import Utility Library ",!
    21         Q
    22         ;
    23 TEST    ; TESTS BOTH ROUTINES AT ONCE
    24         N ZI,ZJ
    25         S ZI="/home/vademo2/CCR" ;directory purposely leaving off the trailing /
    26         S ZJ="PAT_358_CCR_V1_0_21.xml" ; random test patient
    27         D RPCFIN(.GPL,358,135,"GPLTEST","CCR",ZJ,ZI)
    28         Q
    29         ;
    30 RPCAIN(RTN,DFN,DUZ,SOURCE,TYPE,ARY)     ; ARRAY IN RPC - ACCEPT AN XML DOCUMENT
    31         ; AND STORE IT IN THE INCOMING XML FILE
    32         ; RETURNS THE IEN OF THE RECORD OR TEXT IF THERE IS AN ERROR
    33         I $G(DFN)="" S RTN="DFN NOT DEFINED" Q  ;
    34         N C0CXF S C0CXF=175 ; FILE NUMBER FOR INCOMING XML FILE
    35         N C0CFDA,ZX
    36         S C0CFDA(C0CXF,"+1,",.01)=DFN ; PATIENT
    37         S C0CFDA(C0CXF,"+1,",.02)=DUZ ; PROVIDER CREATING THE RECORD
    38         S C0CFDA(C0CXF,"+1,",1)=$$NOW^XLFDT ;DATE
    39         S C0CFDA(C0CXF,"+1,",2)=TYPE  ;TYPE
    40         S C0CFDA(C0CXF,"+1,",3)=$$ADDSRC(SOURCE) ;SOURCE
    41         S C0CFDA(C0CXF,"+1,",7)="NEW" ; STATUS OF NEW FOR NOT PROCESSED
    42         D UPDIE ; CREATE THE RECORD
    43         S ZX=C0CIEN(1) ; CAPTURE THE RECORD NUMBER
    44         D WP^DIE(C0CXF,ZX_",",4,,ARY,"ZERR")
    45         ;W "RECORD:",ZX,!
    46         S RTN=ZX ; RETURN IEN OF THE XML FILE
    47         Q
    48         ;
    49 ADDSRC(ZSRC)    ;EXTRISIC TO ADD A SOURCE TO THE CCR SOURCE FILE
    50         ; RETURNS RECORD NUMBER. IF SOURCE EXISTS, JUST RETURNS IT'S RECORD NUMBER
    51         ;
    52         N ZX,ZF,C0CFDA
    53         S ZF=171.401 ; FILE NUMBER FOR CCR SOURCE FILE
    54         S C0CFDA(ZF,"?+1,",.01)=ZSRC
    55         D UPDIE
    56         Q $O(^C0C(171.401,"B",ZSRC,""))
    57         ;
    58 RPCFIN(RTN,DFN,DUZ,SOURCE,TYPE,FN,FP)   ; FILE IN RPC - READ AN XML DOCUMENT
    59         ; FROM A HOST FILE AND STORE IT IN THE INCOMING XML FILE
    60         N ZX,ZTMP
    61         I $E($RE(FP))'="/" S ZX=FP_"/"
    62         E  S ZX=FP
    63         S ZX=ZX_FN
    64         D LOAD("ZTMP",ZX)
    65         I '$D(ZTMP) D  Q  ; NO LUCK
    66         . W "FILE NOT LOADED",!
    67         D RPCAIN(.RTN,DFN,DUZ,SOURCE,TYPE,"ZTMP")
    68         N C0CFDA
    69         S C0CFDA(175,RTN_",",5)=FN ; FILE NAME
    70         S C0CFDA(175,RTN_",",6)=FP ; FILE PATH
    71         D UPDIE ; UPDATE WITH FILE NAME AND PATH
    72         Q
    73         ;
    74 RPCLIST(RTN,DFN)        ; CCR LIST - LIST XML DOCUMENTS FOR PATIENT DFN
    75         ; THAT ARE STORED IN THE INCOMING XML FILE
    76         ; RETURNS AN ARRAY OF THE FORM
    77         ; RTN(x)="IEN^DATE^TYPE^SOURCE^STATUS^CREATEDBY" WHERE
    78         ; IEN IS THE RECORD NUMBER OF THE XML DOCUMENT
    79         ; DATE IS THE DATE THE DOCUMENT WAS STORED IN THE FILE
    80         ; TYPE IS "CCD" OR "CCR" OR "OTHER"
    81         ; SOURCE IS THE NAME OF THE DOCUMENT SOURCE FROM THE CCR SOURCE FILE
    82         ; STATUS IS THE STATUS OF THE DOCUMENT (VALUES TO BE DEFINED)
    83         ; CREATEDBY IS THE NAME OF THE PROVIDER WHO UPLOADED THE XML
    84         N ZF S ZF=175 ; FILE NUMBER OF INCOMING XML FILE
    85         N ZI S ZI=""
    86         N ZN S ZN=0
    87         F  S ZI=$O(^C0CIN("B",DFN,ZI),-1) Q:ZI=""  D  ; FOR EACH RECORD FOR THIS PATIENT
    88         . S ZN=ZN+1 ;INCREMENT COUNT OF RETURN ARRAY
    89         . S $P(RTN(ZN),"^",1)=ZI ; IEN OF RECORD
    90         . S $P(RTN(ZN),"^",2)=$$GET1^DIQ(ZF,ZI_",",1,"E") ;DATE
    91         . S $P(RTN(ZN),"^",3)=$$GET1^DIQ(ZF,ZI_",",2,"E") ;TYPE
    92         . S $P(RTN(ZN),"^",4)=$$GET1^DIQ(ZF,ZI_",",3,"E") ;SOURCE
    93         . S $P(RTN(ZN),"^",5)=$$GET1^DIQ(ZF,ZI_",",7,"I") ; STATUS
    94         . S $P(RTN(ZN),"^",6)=$$GET1^DIQ(ZF,ZI_",",.02,"E") ; CREATED BY
    95         Q
    96         ;
    97 RPCDOC(RTN,IEN) ; RETRIEVE DOCUMENT NUMBER IEN FROM THE INCOMING XML FILE
    98         ; RETURNED IN ARRAY RTN
    99         N ZI
    100         S ZI=$$GET1^DIQ(175,IEN_",",4,,"RTN")
    101         Q
    102         ;
    103 EN(INXML,SOURCE,C0CDFN) ; IMPORT A CCR, PASSED BY NAME INXML
    104         ; FILE UNDER SOURCE, WHICH IS A POINTER TO THE CCR SOURCE FILE
    105         ; FOR PATIENT C0CDFN
    106         ;N C0CXP
    107         S C0CINB=$NA(^TMP("C0CIN",$J,"VARS",C0CDFN))
    108         S C0CDOCID=$$PARSE^C0CMXML(INXML) ;W !,"DocID: ",C0CDOCID
    109         ;S REDUX="//ContinuityOfCareRecord/Body"
    110         S REDUX=""
    111         D XPATH^C0CMXML(1,"/","C0CIDX","C0CXP",,REDUX)
    112         ;D INDEX^C0CXPATH(INXML,"C0CXP",-1) ; GENERATE XPATHS FROM THE CCR
    113         ;N ZI,ZJ,ZK
    114         S ZI=""
    115         F  S ZI=$O(C0CXP(ZI)) Q:ZI=""  D  ; FOR EACH XPATH
    116         . D DEMUX^C0CMXP("ZJ",ZI) ;
    117         . W ZJ,!
    118         . S ZK=$P(ZJ,"^",3) ; PULL OUT THE XPATH
    119         . S ZM=$P(ZJ,"^",1) ; PULL OUT THE MULTIPLE
    120         . S ZS=$P(ZJ,"^",2) ; PULL OUT THE SUBMULTIPLE
    121         . S C0CDICN=$O(^C0CDIC(170,"XPATH",ZK,""))
    122         . I C0CDICN="" D  Q  ;
    123         . . W "MISSING XPATH:",!,ZK,! ; OOPS, XPATH NOT IN C0CDIC
    124         . . S MISSING(ZK)=""
    125         . ;D GETS^DIQ(170,C0CDICN_",","*",,"C0CFDA")
    126         . S C0CVAR=$$GET1^DIQ(170,C0CDICN_",",.01) ; VARIABLE NAME
    127         . S C0CSEC=$$GET1^DIQ(170,C0CDICN_",",12) ;ELEMENT TYPE
    128         . W C0CSEC,":",C0CVAR,!
    129         Q
    130         ;
    131 GETACCR(AOUT,C0CDFN)    ; EXTRACT A CCR FOR PATIENT ADFN AND PUT IT IN ARRAY AOUT
    132         ;PASSED BY NAME
    133         N ZT
    134         D CCRRPC^C0CCCR(.ZT,C0CDFN,"LABLIMIT:T-1000")
    135         M @AOUT=ZT
    136         Q
    137         ;
    138 TEST64  ;TEST BASE64 DECODING FOR IMPORTING CCR FROM THE NHIN
    139         W $$FTG^%ZISH("/tmp/","base64_encoded_ccr.txt","G64(1)",1)
    140         S G=G64(1)
    141         S ZI=""
    142         F  S ZI=$O(G64(1,"OVF",ZI)) Q:ZI=""  D  ; FOR EVERY OVERFLOW RECORD
    143         . S G=G_G64(1,"OVF",ZI) ;HOPE IT'S NOT TOO BIG
    144         S G2=$$DECODE^RGUTUU(G)
    145         Q
    146         ;
    147 NORMAL(OUTXML,INXML)    ;NORMALIZES AN XML STRING PASSED BY NAME IN INXML
    148         ; INTO AN XML ARRAY RETURNED IN OUTXML, ALSO PASSED BY NAME
    149         ;
    150         N ZI,ZN,ZTMP
    151         S ZN=1
    152         S @OUTXML@(ZN)=$P(@INXML,"><",ZN)_">"
    153         S ZN=ZN+1
    154         F  S @OUTXML@(ZN)="<"_$P(@INXML,"><",ZN) Q:$P(@INXML,"><",ZN+1)=""  D  ;
    155         . S @OUTXML@(ZN)=@OUTXML@(ZN)_">"
    156         . S ZN=ZN+1
    157         Q
    158         ;
    159 CLEANCR(OUTXML,INXML)   ; USE $C(10) TO SEPARATE THE STRING INXML INTO
    160         ;AN ARRAY OUTXML(n) OUTXML AND INXML PASSED BY NAME
    161         N ZX,ZY,ZN
    162         S ZX=1,ZN=1
    163         F  S ZY=$F(@INXML,$C(10),ZX) Q:ZY=0  D  ;
    164         . S @OUTXML@(ZN)=$E(G2,ZX,ZY-2)
    165         . I @OUTXML@(ZN)'="" S ZN=ZN+1
    166         . S ZX=ZY
    167         Q
    168         ;
    169 LOAD(ZRTN,filepath)     ; load an xml file into the ZRTN array, passed by name
    170         n i
    171         D  ;
    172         . n zfile,zpath,ztmp,zok s (zfile,zpath,ztmp)=""
    173         . s ztmp=$na(^TMP("C0CLOAD",$J))
    174         . k @ztmp
    175         . s zfile=$re($p($re(filepath),"/",1)) ;file name
    176         . s zpath=$p(filepath,zfile,1) ; file path
    177         . s zok=$$FTG^%ZISH(zpath,zfile,$NA(@ztmp@(1)),3) ; import the file incr sub 3
    178         . m @ZRTN=@ztmp
    179         . k @ztmp
    180         . s i=$o(@ZRTN@(""),-1) ; highest line number
    181         q
    182         ;
    183 UPDIE   ; INTERNAL ROUTINE TO CALL UPDATE^DIE AND CHECK FOR ERRORS
    184         K ZERR,C0CIEN
    185         D CLEAN^DILF
    186         D UPDATE^DIE("","C0CFDA","C0CIEN","ZERR")
    187         I $D(ZERR) D  ;
    188         . W "ERROR",!
    189         . ZWR ZERR
    190         . B
    191         K C0CFDA
    192         Q
    193         ;
     1C0CIN   ; CCDCCR/GPL - CCR IMPORT utilities; 9/20/08
     2 ;;1.0;C0C;;Sep 20, 2009;Build 38
     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 W "This is the CCR Import Utility Library ",!
     21 Q
     22 ;
     23TEST ; TESTS BOTH ROUTINES AT ONCE
     24 N ZI,ZJ
     25 S ZI="/home/vademo2/CCR" ;directory purposely leaving off the trailing /
     26 S ZJ="PAT_358_CCR_V1_0_21.xml" ; random test patient
     27 D RPCFIN(.GPL,358,135,"GPLTEST","CCR",ZJ,ZI)
     28 Q
     29 ;
     30RPCAIN(RTN,DFN,DUZ,SOURCE,TYPE,ARY) ; ARRAY IN RPC - ACCEPT AN XML DOCUMENT
     31 ; AND STORE IT IN THE INCOMING XML FILE
     32 ; RETURNS THE IEN OF THE RECORD OR TEXT IF THERE IS AN ERROR
     33 I $G(DFN)="" S RTN="DFN NOT DEFINED" Q  ;
     34 N C0CXF S C0CXF=175 ; FILE NUMBER FOR INCOMING XML FILE
     35 N C0CFDA,ZX
     36 S C0CFDA(C0CXF,"+1,",.01)=DFN ; PATIENT
     37 S C0CFDA(C0CXF,"+1,",.02)=DUZ ; PROVIDER CREATING THE RECORD
     38 S C0CFDA(C0CXF,"+1,",1)=$$NOW^XLFDT ;DATE
     39 S C0CFDA(C0CXF,"+1,",2)=TYPE  ;TYPE
     40 S C0CFDA(C0CXF,"+1,",3)=$$ADDSRC(SOURCE) ;SOURCE
     41 S C0CFDA(C0CXF,"+1,",7)="NEW" ; STATUS OF NEW FOR NOT PROCESSED
     42 D UPDIE ; CREATE THE RECORD
     43 S ZX=C0CIEN(1) ; CAPTURE THE RECORD NUMBER
     44 D WP^DIE(C0CXF,ZX_",",4,,ARY,"ZERR")
     45 ;W "RECORD:",ZX,!
     46 S RTN=ZX ; RETURN IEN OF THE XML FILE
     47 Q
     48 ;
     49ADDSRC(ZSRC) ;EXTRISIC TO ADD A SOURCE TO THE CCR SOURCE FILE
     50 ; RETURNS RECORD NUMBER. IF SOURCE EXISTS, JUST RETURNS IT'S RECORD NUMBER
     51 ;
     52 N ZX,ZF,C0CFDA
     53 S ZF=171.401 ; FILE NUMBER FOR CCR SOURCE FILE
     54 S C0CFDA(ZF,"?+1,",.01)=ZSRC
     55 D UPDIE
     56 Q $O(^C0C(171.401,"B",ZSRC,""))
     57 ;
     58RPCFIN(RTN,DFN,DUZ,SOURCE,TYPE,FN,FP) ; FILE IN RPC - READ AN XML DOCUMENT
     59 ; FROM A HOST FILE AND STORE IT IN THE INCOMING XML FILE
     60 N ZX,ZTMP
     61 I $E($RE(FP))'="/" S ZX=FP_"/"
     62 E  S ZX=FP
     63 S ZX=ZX_FN
     64 D LOAD("ZTMP",ZX)
     65 I '$D(ZTMP) D  Q  ; NO LUCK
     66 . W "FILE NOT LOADED",!
     67 D RPCAIN(.RTN,DFN,DUZ,SOURCE,TYPE,"ZTMP")
     68 N C0CFDA
     69 S C0CFDA(175,RTN_",",5)=FN ; FILE NAME
     70 S C0CFDA(175,RTN_",",6)=FP ; FILE PATH
     71 D UPDIE ; UPDATE WITH FILE NAME AND PATH
     72 Q
     73 ;
     74RPCLIST(RTN,DFN) ; CCR LIST - LIST XML DOCUMENTS FOR PATIENT DFN
     75 ; THAT ARE STORED IN THE INCOMING XML FILE
     76 ; RETURNS AN ARRAY OF THE FORM
     77 ; RTN(x)="IEN^DATE^TYPE^SOURCE^STATUS^CREATEDBY" WHERE
     78 ; IEN IS THE RECORD NUMBER OF THE XML DOCUMENT
     79 ; DATE IS THE DATE THE DOCUMENT WAS STORED IN THE FILE
     80 ; TYPE IS "CCD" OR "CCR" OR "OTHER"
     81 ; SOURCE IS THE NAME OF THE DOCUMENT SOURCE FROM THE CCR SOURCE FILE
     82 ; STATUS IS THE STATUS OF THE DOCUMENT (VALUES TO BE DEFINED)
     83 ; CREATEDBY IS THE NAME OF THE PROVIDER WHO UPLOADED THE XML
     84 N ZF S ZF=175 ; FILE NUMBER OF INCOMING XML FILE
     85 N ZI S ZI=""
     86 N ZN S ZN=0
     87 F  S ZI=$O(^C0CIN("B",DFN,ZI),-1) Q:ZI=""  D  ; FOR EACH RECORD FOR THIS PATIENT
     88 . S ZN=ZN+1 ;INCREMENT COUNT OF RETURN ARRAY
     89 . S $P(RTN(ZN),"^",1)=ZI ; IEN OF RECORD
     90 . S $P(RTN(ZN),"^",2)=$$GET1^DIQ(ZF,ZI_",",1,"E") ;DATE
     91 . S $P(RTN(ZN),"^",3)=$$GET1^DIQ(ZF,ZI_",",2,"E") ;TYPE
     92 . S $P(RTN(ZN),"^",4)=$$GET1^DIQ(ZF,ZI_",",3,"E") ;SOURCE
     93 . S $P(RTN(ZN),"^",5)=$$GET1^DIQ(ZF,ZI_",",7,"I") ; STATUS
     94 . S $P(RTN(ZN),"^",6)=$$GET1^DIQ(ZF,ZI_",",.02,"E") ; CREATED BY
     95 Q
     96 ;
     97RPCDOC(RTN,IEN) ; RETRIEVE DOCUMENT NUMBER IEN FROM THE INCOMING XML FILE
     98 ; RETURNED IN ARRAY RTN
     99 N ZI
     100 S ZI=$$GET1^DIQ(175,IEN_",",4,,"RTN")
     101 Q
     102 ;
     103EN(INXML,SOURCE,C0CDFN) ; IMPORT A CCR, PASSED BY NAME INXML
     104 ; FILE UNDER SOURCE, WHICH IS A POINTER TO THE CCR SOURCE FILE
     105 ; FOR PATIENT C0CDFN
     106 ;N C0CXP
     107 S C0CINB=$NA(^TMP("C0CIN",$J,"VARS",C0CDFN))
     108 S C0CDOCID=$$PARSE^C0CMXML(INXML) ;W !,"DocID: ",C0CDOCID
     109 ;S REDUX="//ContinuityOfCareRecord/Body"
     110 S REDUX=""
     111 D XPATH^C0CMXML(1,"/","C0CIDX","C0CXP",,REDUX)
     112 ;D INDEX^C0CXPATH(INXML,"C0CXP",-1) ; GENERATE XPATHS FROM THE CCR
     113 ;N ZI,ZJ,ZK
     114 S ZI=""
     115 F  S ZI=$O(C0CXP(ZI)) Q:ZI=""  D  ; FOR EACH XPATH
     116 . D DEMUX^C0CMXP("ZJ",ZI) ;
     117 . W ZJ,!
     118 . S ZK=$P(ZJ,"^",3) ; PULL OUT THE XPATH
     119 . S ZM=$P(ZJ,"^",1) ; PULL OUT THE MULTIPLE
     120 . S ZS=$P(ZJ,"^",2) ; PULL OUT THE SUBMULTIPLE
     121 . S C0CDICN=$O(^C0CDIC(170,"XPATH",ZK,""))
     122 . I C0CDICN="" D  Q  ;
     123 . . W "MISSING XPATH:",!,ZK,! ; OOPS, XPATH NOT IN C0CDIC
     124 . . S MISSING(ZK)=""
     125 . ;D GETS^DIQ(170,C0CDICN_",","*",,"C0CFDA")
     126 . S C0CVAR=$$GET1^DIQ(170,C0CDICN_",",.01) ; VARIABLE NAME
     127 . S C0CSEC=$$GET1^DIQ(170,C0CDICN_",",12) ;ELEMENT TYPE
     128 . W C0CSEC,":",C0CVAR,!
     129 Q
     130 ;
     131GETACCR(AOUT,C0CDFN) ; EXTRACT A CCR FOR PATIENT ADFN AND PUT IT IN ARRAY AOUT
     132 ;PASSED BY NAME
     133 N ZT
     134 D CCRRPC^C0CCCR(.ZT,C0CDFN,"LABLIMIT:T-1000")
     135 M @AOUT=ZT
     136 Q
     137 ;
     138TEST64 ;TEST BASE64 DECODING FOR IMPORTING CCR FROM THE NHIN
     139 W $$FTG^%ZISH("/tmp/","base64_encoded_ccr.txt","G64(1)",1)
     140 S G=G64(1)
     141 S ZI=""
     142 F  S ZI=$O(G64(1,"OVF",ZI)) Q:ZI=""  D  ; FOR EVERY OVERFLOW RECORD
     143 . S G=G_G64(1,"OVF",ZI) ;HOPE IT'S NOT TOO BIG
     144 S G2=$$DECODE^RGUTUU(G)
     145 Q
     146 ;
     147NORMAL(OUTXML,INXML) ;NORMALIZES AN XML STRING PASSED BY NAME IN INXML
     148 ; INTO AN XML ARRAY RETURNED IN OUTXML, ALSO PASSED BY NAME
     149 ;
     150 N ZI,ZN,ZTMP
     151 S ZN=1
     152 S @OUTXML@(ZN)=$P(@INXML,"><",ZN)_">"
     153 S ZN=ZN+1
     154 F  S @OUTXML@(ZN)="<"_$P(@INXML,"><",ZN) Q:$P(@INXML,"><",ZN+1)=""  D  ;
     155 . S @OUTXML@(ZN)=@OUTXML@(ZN)_">"
     156 . S ZN=ZN+1
     157 Q
     158 ;
     159CLEANCR(OUTXML,INXML) ; USE $C(10) TO SEPARATE THE STRING INXML INTO
     160 ;AN ARRAY OUTXML(n) OUTXML AND INXML PASSED BY NAME
     161 N ZX,ZY,ZN
     162 S ZX=1,ZN=1
     163 F  S ZY=$F(@INXML,$C(10),ZX) Q:ZY=0  D  ;
     164 . S @OUTXML@(ZN)=$E(G2,ZX,ZY-2)
     165 . I @OUTXML@(ZN)'="" S ZN=ZN+1
     166 . S ZX=ZY
     167 Q
     168 ;
     169LOAD(ZRTN,filepath) ; load an xml file into the ZRTN array, passed by name
     170 n i
     171 D  ;
     172 . n zfile,zpath,ztmp,zok s (zfile,zpath,ztmp)=""
     173 . s ztmp=$na(^TMP("C0CLOAD",$J))
     174 . k @ztmp
     175 . s zfile=$re($p($re(filepath),"/",1)) ;file name
     176 . s zpath=$p(filepath,zfile,1) ; file path
     177 . s zok=$$FTG^%ZISH(zpath,zfile,$NA(@ztmp@(1)),3) ; import the file incr sub 3
     178 . m @ZRTN=@ztmp
     179 . k @ztmp
     180 . s i=$o(@ZRTN@(""),-1) ; highest line number
     181 q
     182 ;
     183UPDIE ; INTERNAL ROUTINE TO CALL UPDATE^DIE AND CHECK FOR ERRORS
     184 K ZERR,C0CIEN
     185 D CLEAN^DILF
     186 D UPDATE^DIE("","C0CFDA","C0CIEN","ZERR")
     187 I $D(ZERR) D  ;
     188 . W "ERROR",!
     189 . ZWR ZERR
     190 . B
     191 K C0CFDA
     192 Q
     193 ;
Note: See TracChangeset for help on using the changeset viewer.