1 | C0QKIDS ; VEN/SMH - Kids Utilities for transporting C0Q data ; 7/31/12 3:01pm
|
---|
2 | ;;1.0;C0Q;;May 21, 2012;Build 63
|
---|
3 | ; Licensed under package license. See Documentation.
|
---|
4 | ;
|
---|
5 | ; PEPs: TRAN, POST, PRE
|
---|
6 | ;
|
---|
7 | TRAN ; Unified Transport; PEP
|
---|
8 | ; D TRAN301 ; looks like I won't send that file over
|
---|
9 | D TRAN201 ; C0Q MEASUREMENT
|
---|
10 | D TRAN101 ; C0Q QUALITY MEASURE
|
---|
11 | QUIT
|
---|
12 | POST ; Unified Post; PEP
|
---|
13 | ; D POST301 ; looks like I won't send that file over
|
---|
14 | ; D POST101 ; C0Q QUALITY MEASURE ; As of T11, I won't do that anymore. -->
|
---|
15 | ; I discovered that it will do it on destination systems that are set-up.
|
---|
16 | ; So bad bad bad idea for me to do it in a post-init.
|
---|
17 | ; ... I wrote TRAN101 to do the function of POST101.
|
---|
18 | D POST201 ; C0Q MEASUREMENT
|
---|
19 | QUIT
|
---|
20 | ;
|
---|
21 | PRE ; Unified Pre; PEP
|
---|
22 | D PRE101
|
---|
23 | QUIT
|
---|
24 | ;
|
---|
25 | ; << >>
|
---|
26 | ;
|
---|
27 | TRAN101 ; Remove Untransportable pointers in C0Q QUALITY MEASURE; Private EP
|
---|
28 | ; NB: I am reaching into KIDS's data here. This may not work for future versions
|
---|
29 | ; of KIDS. However, I am exporting this only; once exported, it should work in
|
---|
30 | ; any version of KIDS.
|
---|
31 | N XPDIEN S XPDIEN=$QS(XPDGREF,2) ; Get IEN of KIDS Transport Global
|
---|
32 | N X S X=$NA(^XTMP("XPDT",XPDIEN,"DATA",1130580001.101)) ; KIDS transports our data here
|
---|
33 | N IEN S IEN=0 ; Looper
|
---|
34 | F S IEN=$O(@X@(IEN)) Q:'IEN D ; For each IEN, remove the following:
|
---|
35 | . S $P(@X@(IEN,0),U,2)="" ; Numerator Patient List
|
---|
36 | . S $P(@X@(IEN,0),U,3)="" ; Denominator Patient List
|
---|
37 | . S $P(@X@(IEN,7),U,4)="" ; Negative Numerator List
|
---|
38 | . S $P(@X@(IEN,7),U,2)="" ; Alternate Numerator List
|
---|
39 | . S $P(@X@(IEN,7),U,3)="" ; Alternate Denominator List
|
---|
40 | . S $P(@X@(IEN,7),U,5)="" ; Alternate Negative Numerator List
|
---|
41 | QUIT
|
---|
42 | ;
|
---|
43 | TRAN301 ; Grab FDA for entire file C0Q PATIENT LIST and store in Transport Global; Private EP
|
---|
44 | ; Not used. Dead code.
|
---|
45 | N C0QIEN S C0QIEN=0 ; IEN walker
|
---|
46 | N C0QREF1 S C0QREF1=$NAME(^TMP("C0QOLD",$J)) ; Temporary Global Reference
|
---|
47 | N C0QREF2 S C0QREF2=$NAME(^TMP("C0QNEW",$J)) ; Temporary Global Reference
|
---|
48 | K @C0QREF1,@C0QREF2 ; Kill that
|
---|
49 | F S C0QIEN=$O(^C0Q(301,C0QIEN)) Q:'+C0QIEN D
|
---|
50 | . D GETS^DIQ(1130580001.301,C0QIEN_",","*","",C0QREF1) ; Load FDA's in there
|
---|
51 | . M @C0QREF2@(1130580001.301,"?+"_C0QIEN_",")=@C0QREF1@(1130580001.301,C0QIEN_",") ; Change IENs to ?+ IENs
|
---|
52 | M @XPDGREF@("C0Q","1130580001.301")=@C0QREF2 ; Put in Transport Global
|
---|
53 | K @C0QREF1,@C0QREF2 ; Remove
|
---|
54 | QUIT
|
---|
55 | ;
|
---|
56 | TRAN201 ; Grab FDA for 201 C0Q MEASUREMENTS selected fields; Private EP
|
---|
57 | N C0QIEN S C0QIEN=0 ; IEN walker
|
---|
58 | N C0QREF1 S C0QREF1=$NAME(^TMP("C0QOLD",$J)) ; Temporary Global Reference
|
---|
59 | N C0QREF2 S C0QREF2=$NAME(^TMP("C0QNEW",$J)) ; Temporary Global Reference
|
---|
60 | K @C0QREF1,@C0QREF2 ; Kill that
|
---|
61 | ;
|
---|
62 | ; We need C0QCOUNT so that it wouldn't reuse the numbers, b/c updater wants numbers for every different item
|
---|
63 | N C0QCOUNT S C0QCOUNT=$O(^C0Q(201," "),-1) ; Counter for SubIENs for destination array; init at highest IEN to prevent dups
|
---|
64 | F S C0QIEN=$O(^C0Q(201,C0QIEN)) Q:'+C0QIEN D ; Walk IENs
|
---|
65 | . W "Exporting "_C0QIEN,!
|
---|
66 | . ; Fields SET NAME, BEGIN DATE, END DATE, LOCKED, USE ALL MEASURES, MU YEAR KEY
|
---|
67 | . D GETS^DIQ(1130580001.201,C0QIEN_",",".01;.02;.03;.05;.2;.3","",C0QREF1)
|
---|
68 | . M @C0QREF2@(1130580001.201,"?+"_C0QIEN_",")=@C0QREF1@(1130580001.201,C0QIEN_",") ; Change IENs to ?+ IENs
|
---|
69 | . N C0QIEN2 S C0QIEN2=0 ; Subfile walker
|
---|
70 | . F S C0QIEN2=$O(^C0Q(201,C0QIEN,5,C0QIEN2)) Q:'+C0QIEN2 D ; MEASURE subfile
|
---|
71 | . . W "Exporting IENS "_C0QIEN2_","_C0QIEN_",",!
|
---|
72 | . . D GETS^DIQ(1130580001.2011,C0QIEN2_","_C0QIEN_",",".01","",C0QREF1) ; MEASURE (#.01)
|
---|
73 | . . S C0QCOUNT=C0QCOUNT+1 ; Increment the counter for SubIEN (can't reuse)
|
---|
74 | . . M @C0QREF2@(1130580001.2011,"?+"_C0QCOUNT_","_"?+"_C0QIEN_",")=@C0QREF1@(1130580001.2011,C0QIEN2_","_C0QIEN_",") ; as above
|
---|
75 | ;
|
---|
76 | M @XPDGREF@("C0Q","1130580001.201")=@C0QREF2 ; Put in transport global
|
---|
77 | K @C0QREF1,@C0QREF2 ; Remove temp
|
---|
78 | QUIT
|
---|
79 | ;
|
---|
80 | POST201 ; File FDA for 201; Private EP
|
---|
81 | ;
|
---|
82 | ; Clean-up data if it already exists!
|
---|
83 | ; ZWRITE ^C0Q(201,:,5,:,0)
|
---|
84 | ; ^C0Q(201,1,5,599,0)=50
|
---|
85 | ; ^C0Q(201,1,5,600,0)=4
|
---|
86 | ; ^C0Q(201,1,5,601,0)=39
|
---|
87 | ; ^C0Q(201,1,5,602,0)=6
|
---|
88 | ; ^C0Q(201,1,5,603,0)=7
|
---|
89 | ; ^C0Q(201,1,5,604,0)=48
|
---|
90 | ; ^C0Q(201,1,5,605,0)=46
|
---|
91 | ;
|
---|
92 | IF $O(^C0Q(201,0)) DO QUIT ; Quit if data is already there.
|
---|
93 | . D MES^XPDUTL("Data exists in file C0Q MEASUREMENTS... Not adding new data")
|
---|
94 | . D MES^XPDUTL("Cleaning up broken pointers in C0Q MEASUREMENTS from deleted data in C0Q QUALITY MEASURE")
|
---|
95 | . ; This is very hairy code. Run through the 5 multiple in C0Q MEASUREMENT
|
---|
96 | . ; Grab the IEN in the .01, check if it exists; if not, kill.
|
---|
97 | . N DA,DIK ; DIK Variables; as well as our looper variables
|
---|
98 | . S (DA,DA(1))=0 ; Initial looper values
|
---|
99 | . F S DA(1)=$O(^C0Q(201,DA(1))) Q:'DA(1) D ; Loop through entries
|
---|
100 | . . D MES^XPDUTL("...Processing entry "_$P(^C0Q(201,DA(1),0),U)) ; msg
|
---|
101 | . . S DIK="^C0Q(201,"_DA(1)_",5," ; deletion root for the next loop
|
---|
102 | . . F S DA=$O(^C0Q(201,DA(1),5,DA)) Q:'DA D ; For each Measure
|
---|
103 | . . . N IEN S IEN=+^C0Q(201,DA(1),5,DA,0) ; Get IEN
|
---|
104 | . . . I IEN,'$D(^C0Q(101,IEN)) D ; If IEN is numeric, IEN exists in dest file
|
---|
105 | . . . . D MES^XPDUTL("......Deleting broken pointer "_IEN) ; msg
|
---|
106 | . . . . D ^DIK ; delete
|
---|
107 | ;
|
---|
108 | ; If new install, add data
|
---|
109 | ;
|
---|
110 | D MES^XPDUTL("Adding data to C0Q MEASUREMENTS")
|
---|
111 | N C0QFDA S C0QFDA=$NAME(@XPDGREF@("C0Q","1130580001.201")) ; Grab FDA from Transport Global
|
---|
112 | N C0QERR ; Error array for filer
|
---|
113 | D UPDATE^DIE("E",C0QFDA,"","C0QERR") ; File all
|
---|
114 | I $D(C0QERR) D ; if there's an error, print it out
|
---|
115 | . D MES^XPDUTL("Couldn't add data into C0Q MEASUREMENTS")
|
---|
116 | . S C0QERR=$Q(C0QERR)
|
---|
117 | . F S C0QERR=$Q(@C0QERR) Q:C0QERR="" D MES^XPDUTL(C0QERR_": "_@C0QERR)
|
---|
118 | QUIT
|
---|
119 | ;
|
---|
120 | POST301 ; Get FDA from Transport Global and install in destination system for C0Q PATIENT LIST; Private EP
|
---|
121 | ; Not used. Dead code.
|
---|
122 | N C0QFDA S C0QFDA=$NAME(@XPDGREF@("C0Q","1130580001.301")) ; FDA array name is the global reference
|
---|
123 | N C0QERR ; Error
|
---|
124 | D UPDATE^DIE("E",C0QFDA,"","C0QERR") ; File all
|
---|
125 | I $D(C0QERR) D ; if there's an error, print it out
|
---|
126 | . D MES^XPDUTL("Couldn't add data into C0Q PATIENT LIST file")
|
---|
127 | . S C0QERR=$Q(C0QERR)
|
---|
128 | . F S C0QERR=$Q(@C0QERR) Q:C0QERR="" D MES^XPDUTL(C0QERR_": "_@C0QERR)
|
---|
129 | QUIT
|
---|
130 | ;
|
---|
131 | PRE101 ; Clean existing data (from an earlier installation) from measures that are now merged to other measures
|
---|
132 | ; in C0Q QUALITY MEASURE in destination systems; Private EP
|
---|
133 | ;
|
---|
134 | ; Quit if C0Q Quality Measures isn't on the system.
|
---|
135 | Q:'$D(^C0Q(101))
|
---|
136 | ;
|
---|
137 | D MES^XPDUTL("Removing subsumed entries in C0Q QUALITY MEASURE")
|
---|
138 | ;
|
---|
139 | ; .01 field values to for records to remove
|
---|
140 | N C0QLIST
|
---|
141 | S C0QLIST("TEST M0028A")=""
|
---|
142 | S C0QLIST("MU EP 0028B")=""
|
---|
143 | S C0QLIST("M0013")=""
|
---|
144 | S C0QLIST("M0024")=""
|
---|
145 | S C0QLIST("M1")=""
|
---|
146 | S C0QLIST("M3")=""
|
---|
147 | S C0QLIST("M2")=""
|
---|
148 | S C0QLIST("M0028")=""
|
---|
149 | S C0QLIST("M111")=""
|
---|
150 | S C0QLIST("M112")=""
|
---|
151 | S C0QLIST("M113")=""
|
---|
152 | S C0QLIST("M128")=""
|
---|
153 | S C0QLIST("M5")=""
|
---|
154 | S C0QLIST("M7")=""
|
---|
155 | S C0QLIST("M0022")=""
|
---|
156 | S C0QLIST("12")=""
|
---|
157 | S C0QLIST("M0038")=""
|
---|
158 | S C0QLIST("M110")=""
|
---|
159 | S C0QLIST("MU EP NQF 0070")=""
|
---|
160 | ;
|
---|
161 | ; Root for ^DIK
|
---|
162 | N DIK S DIK="^C0Q(101,"
|
---|
163 | ;
|
---|
164 | ; Loop through list, find IEN for each one, kill off
|
---|
165 | N C0QITEM S C0QITEM="" ; Item
|
---|
166 | F S C0QITEM=$O(C0QLIST(C0QITEM)) Q:C0QITEM="" D ; Loop
|
---|
167 | . Q:'$DATA(^C0Q(101,"B",C0QITEM)) ; Quit if not present.
|
---|
168 | . N DA S DA=$O(^C0Q(101,"B",C0QITEM,"")) ; IEN
|
---|
169 | . ; The original software has MU EP NQF 0070 incorrectly. If the 1 node
|
---|
170 | . ; has Pneumonia, we want to remove that entry.
|
---|
171 | . I C0QITEM="MU EP NQF 0070",^C0Q(101,DA,1)'["Pneumonia" QUIT
|
---|
172 | . D MES^XPDUTL("...Removing "_C0QITEM) ; Message to user
|
---|
173 | . D ^DIK ; Delete
|
---|
174 | ;
|
---|
175 | REN ; Rename a bunch of entries
|
---|
176 | ; ("OLD NAME")="NEW NAME"
|
---|
177 | D MES^XPDUTL("Renaming Old entries in C0Q QUALITY MEASURE")
|
---|
178 | ;
|
---|
179 | N C0QLIST
|
---|
180 | S C0QLIST("NQF0038 NUM1 DPT")="MU EP NQF 0038 NUM1 DPT"
|
---|
181 | S C0QLIST("NQF0038 NUM10")="MU EP NQF 0038 NUM10 FLU"
|
---|
182 | S C0QLIST("NQF0038 NUM11 COMBO5")="MU EP NQF 0038 NUM11 COMBO5"
|
---|
183 | S C0QLIST("NQF0038 NUM12 COMBO6")="MU EP NQF 0038 NUM12 COMBO6"
|
---|
184 | S C0QLIST("NQF0038 NUM2 IPV")="MU EP NQF 0038 NUM2 IPV"
|
---|
185 | S C0QLIST("NQF0038 NUM3 MMR")="MU EP NQF 0038 NUM3 MMR"
|
---|
186 | S C0QLIST("NQF0038 NUM4 HiB")="MU EP NQF 0038 NUM4 HiB"
|
---|
187 | S C0QLIST("NQF0038 NUM5 HEP B")="MU EP NQF 0038 NUM5 HEP B"
|
---|
188 | S C0QLIST("NQF0038 NUM6 VZV")="MU EP NQF 0038 NUM6 VZV"
|
---|
189 | S C0QLIST("NQF0038 NUM7 PCV")="MU EP NQF 0038 NUM7 PCV"
|
---|
190 | S C0QLIST("NQF0038 NUM8 HEP A")="MU EP NQF 0038 NUM8 HEP A"
|
---|
191 | S C0QLIST("NQF0038 NUM9")="MU EP NQF 0038 NUM9 RV"
|
---|
192 | S C0QLIST("M124")="PQRI MEASURE 124"
|
---|
193 | S C0QLIST("M173")="PQRI MEASURE 173"
|
---|
194 | S C0QLIST("M39")="PQRI MEASURE 39"
|
---|
195 | S C0QLIST("M47")="PQRI MEASURE 47"
|
---|
196 | S C0QLIST("M48")="PQRI MEASURE 48"
|
---|
197 | ;
|
---|
198 | N C0QITEM S C0QITEM="" ; Item
|
---|
199 | N C0QFDA ; FDA
|
---|
200 | F S C0QITEM=$O(C0QLIST(C0QITEM)) Q:C0QITEM="" D ; Loop through
|
---|
201 | . N IEN S IEN=$O(^C0Q(101,"B",C0QITEM,"")) ; Get IEN from File using old name
|
---|
202 | . I IEN S C0QFDA(1130580001.101,IEN_",",.01)=C0QLIST(C0QITEM) ; If found, put new name in FDA for this IEN
|
---|
203 | . I IEN D MES^XPDUTL("...Renaming "_C0QITEM_" to "_C0QLIST(C0QITEM)) ; Print message to user
|
---|
204 | ;
|
---|
205 | N C0QERR ; Error for FILE^DIE
|
---|
206 | I $D(C0QFDA) D FILE^DIE("E",$NA(C0QFDA),$NA(C0QERR)) ; File if FDA has contents
|
---|
207 | E D MES^XPDUTL("No entries to rename") ; If nothing, tell user so
|
---|
208 | ;
|
---|
209 | D:$D(C0QERR) ; If Error, print it
|
---|
210 | . D MES^XPDUTL("Error Filing Data. FILE^DIE reported:")
|
---|
211 | . N REF S REF=$NA(C0QERR) ; $Q Reference
|
---|
212 | . F S REF=$Q(@REF) Q:REF="" D MES^XPDUTL(REF_"="_@REF) ; Loop and Print
|
---|
213 | ;
|
---|
214 | QUIT
|
---|