- Timestamp:
- Jun 11, 2012, 7:27:59 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
qrda/C0Q/trunk/p/C0QMUERX.m
r1443 r1444 1 C0QMUERX ; VEN - Analyze ERx Data for Patients ; 5/30/12 1:48am1 C0QMUERX ; VEN - Analyze ERx Data for Patients ; 5/30/12 9:35am 2 2 ;;1.0;C0Q;;May 21, 2012;Build 44 3 3 QUIT ; No Entry from the top … … 26 26 N C0QDEBUG S C0QDEBUG=1 27 27 D EN($$PATLN^C0QMU12("MU12-EP-HasERX")) 28 W $$COUNT($$PATLN^C0QMU12("MU12-EP-HasERX")) 28 29 QUIT 29 30 EN(C0QLIST) ; PEP - Analyze ERx Data and store … … 207 208 Q +$G(HASERX) 208 209 ; 209 SAVE(C0QLIST,C0QDFN,TYPE,COUNT) ; Proc - Private; Save Count 210 ; TODO: Documentation 210 SAVE(C0QLIST,C0QDFN,TYPE,COUNT) ; Proc - Private; Save Count in C0Q(301, file 211 ; Layman's Explanation: Save the denominator or numerator for ePrescribing for 212 ; each of the patients in the Subfile for that patient in ^C0Q(301, 213 ; Still hard to understand though! Here's a demo: 214 ; ^C0Q(301,IEN has a subfile under node 1 which stores the patients. E.g. 215 ; ^C0Q(301,48,1,15,0)=91$ 216 ; ^C0Q(301,48,1,16,0)=93$ 217 ; ^C0Q(301,48,1,17,0)=173$ 218 ; 219 ; I store the numerator and denominator under each of the patients. The numerator 220 ; stands for the number of prescriptions that were electronically transmitted; 221 ; the denominator stands for the numbers of prescriptions that COULD HAVE BEEN 222 ; electronically transmitted. End result for Patient 173 is as follows: 223 ; ^C0Q(301,48,1,17,0)=173 224 ; ^C0Q(301,48,1,17,1,0)="^1130580001.3111^2^2" 225 ; ^C0Q(301,48,1,17,1,1,0)="ERXDEN^0" 226 ; ^C0Q(301,48,1,17,1,2,0)="ERXNUM^0" 227 ; ^C0Q(301,48,1,17,1,"B","ERXDEN",1)="" 228 ; ^C0Q(301,48,1,17,1,"B","ERXNUM",2)="" 229 ; 230 ; Subroutine COUNT (below) goes and counts the data 231 ; 232 ; Params: 233 ; C0QLIST (by val): "B" x-ref where patients are located. Only supports ^C0Q(301, file. 234 ; C0QDFN (by val): Patient DFN for whom to file data. 235 ; TYPE (by val): Either ERXDEN or ERXNUM for eRx Denominator or eRx Numerator 236 ; COUNT (by val): The number to save 211 237 ; 212 238 ; First, QUIT if this isn't a Quality Measures List? … … 246 272 I $D(C0QERR) DO 247 273 . W "Error in filing data",! 248 . S %=$NAME(C0QERR) F S %=$Q(@%) Q:%="" W %_": "_@%,!274 . N % S %=$NAME(C0QERR) F S %=$Q(@%) Q:%="" W %_": "_@%,! 249 275 ; 250 276 QUIT 277 ; 278 COUNT(C0QLIST) ; $$ - Private; Count Numerator and Denominator for a Patient List 279 ; Input: C0QLIST - Pass by Value - Patient Listing B index (only C0Q(301,IEN,1,"B", listing is supported) 280 ; Output: (as string) NUMERATOR/DENOMINATOR 281 ; 282 I $QS(C0QLIST,0)'="^C0Q" W:$G(C0QDEBUG) "Counting for files other than C0Q(301, not supported ",! QUIT 283 ; MEASURE ----------- 284 ; IEN ----------- | 285 ; L1 ------| | | 286 ; V V V 287 ; ^C0Q(301,48,1,2,1,1,0)="ERXDEN^0" 288 ; ^C0Q(301,48,1,2,1,2,0)="ERXNUM^0" 289 ; ^C0Q(301,48,1,2,1,"B","ERXDEN",1)="" 290 ; ^C0Q(301,48,1,2,1,"B","ERXNUM",2)="" 291 ; ^C0Q(301,48,1,2,1,"B" 292 W:$G(C0QDEBUG) "DFN",?20,"Denominator",?40,"Numerator",! 293 ; 294 N L1 S L1=$QS(C0QLIST,2) ; Top Level IEN 295 ; 296 N DENTOT,NUMTOT S (DENTOT,NUMTOT)=0 ; Denominator Total, Numerator Total 297 ; 298 N C0QDFN S C0QDFN=0 ; Walker through B index 299 F S C0QDFN=$O(^C0Q(301,L1,1,"B",C0QDFN)) Q:C0QDFN="" DO 300 . N IEN S IEN=$O(^(C0QDFN,"")) ; naked naked - get IEN from B index 301 . W:$G(C0QDEBUG) C0QDFN 302 . ; 303 . ; Denom Processing 304 . N DENIEN S DENIEN=$O(^C0Q(301,L1,1,IEN,1,"B","ERXDEN","")) ; Denom IEN 305 . N DEN S DEN=$S(DENIEN:$P(^C0Q(301,L1,1,IEN,1,DENIEN,0),U,2),1:"N/A") ; Denominator 306 . W:$G(C0QDEBUG) ?20,DEN 307 . S DENTOT=DENTOT+DEN ; Total it up (N/A becomes zero) 308 . ; 309 . N NUMIEN S NUMIEN=$O(^C0Q(301,L1,1,IEN,1,"B","ERXNUM","")) ; Numerator IEN 310 . N NUM S NUM=$S(NUMIEN:$P(^C0Q(301,L1,1,IEN,1,NUMIEN,0),U,2),1:"N/A") ; Numerator 311 . W:$G(C0QDEBUG) ?40,NUM 312 . S NUMTOT=NUMTOT+NUM ; Total it up (N/A becomes zero) 313 . ; 314 . w:$G(C0QDEBUG) ! 315 ; 316 ; Write the totals 317 D:$G(C0QDEBUG) 318 . W ?20,"===" 319 . W ?40,"===" 320 . W ! 321 . ; 322 . W ?20,DENTOT 323 . W ?40,NUMTOT 324 . W ! 325 ; 326 ; Quit with Numeartor/Denominator 327 QUIT NUMTOT_"/"_DENTOT
Note:
See TracChangeset
for help on using the changeset viewer.