1 | C0CIM2 ; CCDCCR/GPL/CJE - CCR/CCD PROCESSING FOR IMMUNIZATIONS ; 01/27/10
|
---|
2 | ;;1.0;C0C;;Feb 16, 2010;
|
---|
3 | ;Copyright 2010 George Lilly, University of Minnesota and others.
|
---|
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 | W "NO ENTRY FROM TOP",!
|
---|
22 | Q
|
---|
23 | ;
|
---|
24 | EXTRACT(IMMXML,DFN,IMMOUT) ; EXTRACT PROCEDURES INTO XML TEMPLATE
|
---|
25 | ; IMMXML AND IMMOUT ARE PASSED BY NAME SO GLOBALS CAN BE USED
|
---|
26 | ;
|
---|
27 | ; USE THE FOLLOWING TEMPLATE FOR THE RNF2 ARRAYS
|
---|
28 | ; THAT GET PASSED TO *GET ROUTINES
|
---|
29 | ;C0C[NAME]=$NA(^TMP("C0CCCR",$J,DFN,"C0C(NAME))
|
---|
30 | N C0CIMM
|
---|
31 | S C0CIMM=$NA(^TMP("C0CCCR",$J,DFN,"C0CIMM"))
|
---|
32 | ; USE THE FOLLOWING TEMPLATE FOR GETTING/GENERATING THE RNF2 ARRAYS
|
---|
33 | ; THAT GET INSERTED INTO THE XML TEMPLATE
|
---|
34 | ; I '$D(@C0CIMM) D GET[VISTA/RPMS](DFN,C0CIMM) ; GET VARS IF NOT THERE
|
---|
35 | D GETRPMS(DFN,C0CIMM) ; GET VARS IF NOT THERE
|
---|
36 | ; USE THE FOLLOWING TEMPATE FOR MAPPING RNF2 ARRAYS TO XML TEMPLATE
|
---|
37 | ; D MAP([NAME]XML,C0C[NAME],[NAME]OUT) ;MAP RESULTS FOR PROCEDURES
|
---|
38 | D MAP(IMMXML,C0CIMM,IMMOUT) ;MAP RESULTS FOR PROCEDURES
|
---|
39 | Q
|
---|
40 | ;
|
---|
41 | GETRPMS(DFN,C0CIMM) ; CALLS GET^BGOVIMM TO GET IMMUNIZATIONS.
|
---|
42 | ; ERETURNS THEM IN RNF2 ARRAYS PASSED BY NAME
|
---|
43 | ; C0CIMM: IMMUNIZATIONS
|
---|
44 | ; READY TO BE MAPPED TO XML BY MAP^C0CIMM
|
---|
45 | ; THESE RETURN ARRAYS ARE NOT INITIALIZED, BUT ARE ADDED TO IF THEY
|
---|
46 | ; EXIST.
|
---|
47 | ;
|
---|
48 | ; KILL OF ARRAYS IS TAKEN CARE OF IN ^C0CCCR (K ^TMP("C0CCCR",$J))
|
---|
49 | ;
|
---|
50 | ; SETUP RPC/API CALL HERE
|
---|
51 | ; USE START AND END DATES FROM PARAMETERS IF REQUIRED
|
---|
52 | N IMMA
|
---|
53 | D GET^BGOVIMM(.IMMA,DFN) ; RETURNS ALL RESULTS IN VISIT LOCAL VARIABLE
|
---|
54 | ; PREFORM SORT HERE IF NEEDED
|
---|
55 | ;
|
---|
56 | ; NO SORT REQUIRED FOR IMMUNIZATIONS
|
---|
57 | ;
|
---|
58 | ; MAP EACH ROW OF RPC/API TO RNF1 ARRAY
|
---|
59 | ; RNF1 ARRAY FORMAT:
|
---|
60 | ; VAR("NAME_OF_RIM_VARIABLE")=VALUE
|
---|
61 | ;
|
---|
62 | ; IMMUNIZATIONS ARE DONE DIFFERENTLY DUE TO THE DIFFERENT TYPES OF IMMUNIZATION RESULTS
|
---|
63 | ; THIS LOOP WILL GET EACH ROW, DETERMINE THE TYPE, AND CALL THE RESPECTIVE PROCESSING METHOD
|
---|
64 | ; THAT WILL DO THE MAPPING TO RNF1 STYLE ARRAYS
|
---|
65 | N C0CIM,C0CC,ZRNF
|
---|
66 | S C0CIM="" ; INITIALIZE FOR $O
|
---|
67 | F C0CC=1:1 S C0CIM=$O(@IMMA@(C0CIM)) Q:C0CIM="" D ; FOR EACH IMMUNE TYPE IN THE LIST
|
---|
68 | . I DEBUG W @IMMA@(C0CIM),!
|
---|
69 | . ; FIGURE OUT WHICH TYPE OF IMMUNIZATION IT IS (IMMUNIZATION, FORECAST, CONTRAINDICATIONS, REFUSALS)
|
---|
70 | . D:$P(@IMMA@(C0CIM),U,1)="I" IMMUN
|
---|
71 | . D:$P(@IMMA@(C0CIM),U,1)="F" FORECAST
|
---|
72 | . D:$P(@IMMA@(C0CIM),U,1)="C" CONTRA
|
---|
73 | . D:$P(@IMMA@(C0CIM),U,1)="R" REFUSE
|
---|
74 | . D RNF1TO2^C0CRNF(C0CIMM,"ZRNF") ;ADD THIS ROW TO THE ARRAY
|
---|
75 | . K ZRNF
|
---|
76 | ; SAVE RIM VARIABLES SEE C0CRIMA
|
---|
77 | N ZRIM S ZRIM=$NA(^TMP("C0CRIM","VARS",DFN,"IMMUNE"))
|
---|
78 | M @ZRIM=@C0CIMM@("V")
|
---|
79 | Q
|
---|
80 | ;
|
---|
81 | IMMUN ; PARSES IMMUNIZATION TYPE ROWS FOR RPMS
|
---|
82 | ; RPC FORMAT
|
---|
83 | ; I ^ Imm Name [2] ^ Visit Date [3] ^ V File IEN [4] ^ Other Location [5] ^ Group [6] ^ Imm IEN [7] ^ Lot [8] ^
|
---|
84 | ; Reaction [9] ^ VIS Date [10] ^ Age [11] ^ Visit Date [12] ^ Provider IEN~Name [13] ^ Inj Site [14] ^
|
---|
85 | ; Volume [15] ^ Visit IEN [16] ^ Visit Category [17] ^ Full Name [18] ^ Location IEN~Name [19] ^ Visit Locked [20]
|
---|
86 | ; RETRIEVE IMMUNIZATION RECORD FROM IMMUNIZATION FILE (9999999.14) FOR THIS IMMUNIZATION
|
---|
87 | D GETN^C0CRNF("C0CZIM",9999999.14,$P(@IMMA@(C0CIM),U,7)) ; GET IMMUNIZATION RECORD
|
---|
88 | ; RETIREVE IMMUNIZATION RECORD FROM V IMMUNIZATION FILE (9000010.11) FOR THIS IMMUNIZATION
|
---|
89 | D GETN^C0CRNF("C0CZVI",9000010.11,$P(@IMMA@(C0CIM),U,4)) ; GET V IMMUNIZATION RECORD
|
---|
90 | S ZRNF("IMMUNEOBJECTID")="IMMUNIZATION_"_C0CC ;UNIQUE OBJECT ID
|
---|
91 | S ZRNF("IMMUNEDATETIMETYPETEXT")="Immunization Date" ; ALL ARE THE SAME
|
---|
92 | S ZRNF("IMMUNEDATETIME")=$$FMDTOUTC^C0CUTIL($$ZVALUEI^C0CRNF("EVENT DATE AND TIME","C0CZVI"),"DT")
|
---|
93 | S ZRNF("IMMUNESOURCEACTORID")="ACTORPROVIDER_"_$P($P(@IMMA@(C0CIM),U,13),"~",1)
|
---|
94 | S ZRNF("IMMUNEPRODUCTNAMETEXT")=$$ZVALUE^C0CRNF("NAME","C0CZIM") ; USE NAME IN IMMUNE RECORD
|
---|
95 | S ZRNF("IMMUNEPRODUCTCODE")=$$ZVALUE^C0CRNF("HL7-CVX CODE","C0CZIM") ;CVX CODE
|
---|
96 | I $$ZVALUE^C0CRNF("HL7-CVX CODE","C0CZIM")'="" S ZRNF("IMMUNEPRODUCTCODESYSTEM")="CDC Vaccine Code"
|
---|
97 | E S ZRNF("IMMUNEPRODUCTCODESYSTEM")="" ;NULL
|
---|
98 | ;CLEANUP FROM C0CRNF CALLS
|
---|
99 | K C0CZIM,C0CZVI
|
---|
100 | Q
|
---|
101 | FORECAST ; PARSES FORECAST TYPE ROWS FOR RPMS
|
---|
102 | ; CURRENTLY DISABLED
|
---|
103 | Q
|
---|
104 | CONTRA ; PARSES FORECAST TYPE ROWS FOR RPMS
|
---|
105 | ; CURRENTLY DISABLED
|
---|
106 | Q
|
---|
107 | REFUSE ; PARSES FORECAST TYPE ROWS FOR RPMS
|
---|
108 | ; CURRENTLY DISABLED
|
---|
109 | Q
|
---|
110 | ;
|
---|
111 | MAP(IMMXML,C0CIMM,IMMOUT) ; MAP IMMUNIZATION XML
|
---|
112 | ;
|
---|
113 | N ZTEMP S ZTEMP=$NA(^TMP("C0CCCR",$J,DFN,"IMMTEMP")) ;WORK AREA FOR TEMPLATE
|
---|
114 | K @ZTEMP
|
---|
115 | N ZBLD
|
---|
116 | S ZBLD=$NA(^TMP("C0CCCR",$J,DFN,"IMMBLD")) ; BUILD LIST AREA
|
---|
117 | D QUEUE^C0CXPATH(ZBLD,IMMXML,1,1) ; FIRST LINE
|
---|
118 | N ZINNER
|
---|
119 | ; XPATH NEEDS TO MATCH YOUR SECTION
|
---|
120 | D QUERY^C0CXPATH(IMMXML,"//Immunizations/Immunization","ZINNER") ;ONE PROC
|
---|
121 | N ZTMP,ZVAR,ZI
|
---|
122 | S ZI=""
|
---|
123 | F S ZI=$O(@C0CIMM@("V",ZI)) Q:ZI="" D ;FOR EACH IMMUNIZATION
|
---|
124 | . S ZTMP=$NA(@ZTEMP@(ZI)) ;THIS IMMUNIZATION XML
|
---|
125 | . S ZVAR=$NA(@C0CIMM@("V",ZI)) ;THIS IMMUNIZATION VARIABLES
|
---|
126 | . D MAP^C0CXPATH("ZINNER",ZVAR,ZTMP) ; MAP THE IMMUNIZATION
|
---|
127 | . D QUEUE^C0CXPATH(ZBLD,ZTMP,1,@ZTMP@(0)) ;QUEUE FOR BUILD
|
---|
128 | D QUEUE^C0CXPATH(ZBLD,IMMXML,@IMMXML@(0),@IMMXML@(0))
|
---|
129 | N ZZTMP ; IS THIS NEEDED?
|
---|
130 | D BUILD^C0CXPATH(ZBLD,IMMOUT) ;BUILD FINAL XML
|
---|
131 | K @ZTEMP,@ZBLD
|
---|
132 | Q
|
---|
133 | ;
|
---|