[1544] | 1 | C0CIMMU ; CCDCCR/GPL - CCR/CCD PROCESSING FOR IMMUNIZATIONS ; 2/2/09
|
---|
| 2 | ;;1.2;C0C;;May 11, 2012;Build 47
|
---|
| 3 | ;Copyright 2008,2009 George Lilly, University of Minnesota.
|
---|
| 4 | ;Licensed under the terms of the GNU General Public License.
|
---|
| 5 | ;See attached copy of the License.
|
---|
| 6 | ;
|
---|
| 7 | ;This program is free software; you can redistribute it and/or modify
|
---|
| 8 | ;it under the terms of the GNU General Public License as published by
|
---|
| 9 | ;the Free Software Foundation; either version 2 of the License, or
|
---|
| 10 | ;(at your option) any later version.
|
---|
| 11 | ;
|
---|
| 12 | ;This program is distributed in the hope that it will be useful,
|
---|
| 13 | ;but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
| 14 | ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
---|
| 15 | ;GNU General Public License for more details.
|
---|
| 16 | ;
|
---|
| 17 | ;You should have received a copy of the GNU General Public License along
|
---|
| 18 | ;with this program; if not, write to the Free Software Foundation, Inc.,
|
---|
| 19 | ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
---|
| 20 | ;
|
---|
| 21 | ;
|
---|
| 22 | ; PROCESS THE IMMUNIZATIONS SECTION OF THE CCR
|
---|
| 23 | ;
|
---|
| 24 | MAP(IPXML,DFN,OUTXML) ; MAP IMMUNIZATIONS
|
---|
| 25 | ;
|
---|
| 26 | N C0CZV,C0CZVI ; TO STORE MAPPED VARIABLES
|
---|
| 27 | N C0CZT ; TMP ARRAY OF MAPPED XML
|
---|
| 28 | S C0CZV=$NA(^TMP("C0CCCR",$J,"IMMUNE")) ; TEMP STORAGE FOR VARIABLES
|
---|
| 29 | D EXTRACT(IPXML,DFN,OUTXML) ;EXTRACT THE VARIABLES
|
---|
| 30 | N C0CZI,C0CZIC ; COUNT OF IMMUNIZATIONS
|
---|
| 31 | S C0CZIC=$G(@C0CZV@(0)) ; TOTAL FROM VARIABLE ARRAY
|
---|
| 32 | I C0CZIC>0 D ;IMMUNIZATIONS FOUND
|
---|
| 33 | . F C0CZI=1:1:C0CZIC D ;FOR EACH IMMUNIZATION
|
---|
| 34 | . . S C0CZVI=$NA(@C0CZV@(C0CZI)) ;THIS IMMUNIZATION
|
---|
| 35 | . . D MAP^C0CXPATH(IPXML,C0CZVI,"C0CZT") ;MAP THE VARIABLES TO XML
|
---|
| 36 | . . I C0CZI=1 D ; FIRST ONE
|
---|
| 37 | . . . D CP^C0CXPATH("C0CZT",OUTXML) ;JUST COPY RESULTS
|
---|
| 38 | . . E D ;NOT THE FIRST
|
---|
| 39 | . . . D INSINNER^C0CXPATH(OUTXML,"C0CZT")
|
---|
| 40 | E S @OUTXML@(0)=0 ; SIGNAL NO IMMUNIZATIONS
|
---|
| 41 | N IMMUTMP,I
|
---|
| 42 | D MISSING^C0CXPATH(OUTXML,"IMMUTMP") ; SEARCH XML FOR MISSING VARS
|
---|
| 43 | I IMMUTMP(0)>0 D ; IF THERE ARE MISSING VARS -
|
---|
| 44 | . ; STRINGS MARKED AS @@X@@
|
---|
| 45 | . W !,"IMMUNE Missing list: ",!
|
---|
| 46 | . F I=1:1:IMMUTMP(0) W IMMUTMP(I),!
|
---|
| 47 | Q
|
---|
| 48 | ;
|
---|
| 49 | EXTRACT(IPXML,DFN,OUTXML) ; EXTRACT IMMUNIZATIONS INTO VARIABLES
|
---|
| 50 | ;
|
---|
| 51 | ; INXML AND OUTXML ARE PASSED BY NAME SO GLOBALS CAN BE USED
|
---|
| 52 | ; INXML WILL CONTAIN ONLY THE PROBLEM SECTION OF THE OVERALL TEMPLATE
|
---|
| 53 | ; ONLY THE XML FOR ONE PROBLEM WILL BE PASSED. THIS ROUTINE WILL MAKE
|
---|
| 54 | ; COPIES AS NECESSARY TO REPRESENT MULTIPLE PROBLEMS
|
---|
| 55 | ; INSERT^C0CXPATH IS USED TO APPEND THE PROBLEMS TO THE OUTPUT
|
---|
| 56 | ;
|
---|
| 57 | N RPCRSLT,J,K,PTMP,X,VMAP,TBU
|
---|
| 58 | S TVMAP=$NA(^TMP("C0CCCR",$J,"IMMUNE"))
|
---|
| 59 | S TARYTMP=$NA(^TMP("C0CCCR",$J,"IMMUARYTMP"))
|
---|
| 60 | S IMMA=$NA(^TMP("PXI",$J)) ;
|
---|
| 61 | K @IMMA ; CLEAR OUT PREVIOUS RESULTS
|
---|
| 62 | K @TVMAP,@TARYTMP ; KILL OLD ARRAY VALUES
|
---|
| 63 | D IMMUN^PXRHS03(DFN) ;
|
---|
| 64 | I $O(@IMMA@(""))="" D Q ; RPC RETURNS NULL
|
---|
| 65 | . W "NULL RESULT FROM IMMUN^PXRHS03 ",!
|
---|
| 66 | . S @TVMAP@(0)=0
|
---|
| 67 | N C0CIM,C0CC,C0CIMD,C0CIEN,C0CT ;
|
---|
| 68 | S C0CIM=""
|
---|
| 69 | S C0CC=0 ; COUNT
|
---|
| 70 | F S C0CIM=$O(@IMMA@(C0CIM)) Q:C0CIM="" D ; FOR EACH IMMUNE TYPE IN THE LIST
|
---|
| 71 | . S C0CC=C0CC+1 ;INCREMENT COUNT
|
---|
| 72 | . S @TVMAP@(0)=C0CC ; SAVE NEW COUNT TO ARRAY
|
---|
| 73 | . S VMAP=$NA(@TVMAP@(C0CC)) ; THIS IMMUNE ELEMENT
|
---|
| 74 | . K @VMAP ; MAKE SURE IT IS CLEARED OUT
|
---|
| 75 | . W C0CIM,!
|
---|
| 76 | . S C0CIMD="" ; IMMUNE DATE
|
---|
| 77 | . F S C0CIMD=$O(@IMMA@(C0CIM,C0CIMD)) Q:C0CIMD="" D ; FOR EACH DATE
|
---|
| 78 | . . S C0CIEN=$O(@IMMA@(C0CIM,C0CIMD,"")) ;IEN OF IMMUNE RECORD
|
---|
| 79 | . . D GETN^C0CRNF("C0CI",9000010.11,C0CIEN) ; GET THE FILEMAN RECORD FOR IENS
|
---|
| 80 | . . W C0CIEN,"_",C0CIMD
|
---|
| 81 | . . S C0CT=$$FMDTOUTC^C0CUTIL(9999999-C0CIMD,"DT") ; FORMAT DATE/TIME
|
---|
| 82 | . . W C0CT,!
|
---|
| 83 | . . S @VMAP@("IMMUNEOBJECTID")="IMMUNIZATION_"_C0CC ;UNIQUE OBJECT ID
|
---|
| 84 | . . S @VMAP@("IMMUNEDATETIMETYPETEXT")="Immunization Date" ; ALL ARE THE SAME
|
---|
| 85 | . . S @VMAP@("IMMUNEDATETIME")=C0CT ;FORMATTED DATE/TIME
|
---|
| 86 | . . S C0CIP=$$ZVALUEI^C0CRNF("ENCOUNTER PROVIDER","C0CI") ;IEN OF PROVIDER
|
---|
| 87 | . . S @VMAP@("IMMUNESOURCEACTORID")="ACTORPROVIDER_"_C0CIP
|
---|
| 88 | . . S C0CIIEN=$$ZVALUEI^C0CRNF("IMMUNIZATION","C0CI") ;IEN OF IMMUNIZATION
|
---|
| 89 | . . I $G(DUZ("AG"))="I" D ; RUNNING IN RPMS
|
---|
| 90 | . . . D GETN^C0CRNF("C0CZIM",9999999.14,C0CIIEN) ;GET IMMUNE RECORD
|
---|
| 91 | . . . S C0CIN=$$ZVALUE^C0CRNF("NAME","C0CZIM") ; USE NAME IN IMMUNE RECORD
|
---|
| 92 | . . . ; FOR LOOKING UP THE CODE
|
---|
| 93 | . . . ; GET IT FROM THE CODE FILE
|
---|
| 94 | . . . S C0CICD=$$ZVALUE^C0CRNF("HL7-CVX CODE","C0CZIM") ;CVX CODE
|
---|
| 95 | . . . S @VMAP@("IMMUNEPRODUCTNAMETEXT")=C0CIN ;NAME
|
---|
| 96 | . . . S @VMAP@("IMMUNEPRODUCTCODE")=C0CICD ; CVX CODE
|
---|
| 97 | . . . I C0CICD'="" S @VMAP@("IMMUNEPRODUCTCODESYSTEM")="CDC Vaccine Code" ;
|
---|
| 98 | . . . E S @VMAP@("IMMUNEPRODUCTCODESYSTEM")="" ;NULL
|
---|
| 99 | . . E D ; NOT IN RPMS
|
---|
| 100 | . . . S C0CIN=$$ZVALUE^C0CRNF("IMMUNIZATION","C0CI") ;NAME OF IMMUNIZATION
|
---|
| 101 | . . . S @VMAP@("IMMUNEPRODUCTNAMETEXT")=C0CIN ;NAME
|
---|
| 102 | . . . S @VMAP@("IMMUNEPRODUCTCODE")="" ; CVX CODE
|
---|
| 103 | . . . S @VMAP@("IMMUNEPRODUCTCODESYSTEM")="" ;NO CODE
|
---|
| 104 | N C0CIRIM S C0CIRIM=$NA(^TMP("C0CRIM","VARS",DFN,"IMMUNE"))
|
---|
| 105 | M @C0CIRIM=@TVMAP ; PERSIST RIM VARIABLES
|
---|
| 106 | Q
|
---|
| 107 | ;
|
---|