- Timestamp:
- Aug 22, 2012, 8:02:16 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
qrda/C0Q/trunk/p/C0QQRDA.m
r1518 r1519 1 C0QQRDA ; GPL - Quality Reporting QRDA Processing ; 8/2/12 1 2:42am1 C0QQRDA ; GPL - Quality Reporting QRDA Processing ; 8/2/12 10:15am 2 2 ;;1.0;QUALITY MEASURES;**4**;May 21, 2012;Build 28 3 3 ;Copyright 2012 George Lilly. Licensed under the terms of the GNU … … 21 21 ; This EP is interactive or silent depending on params 22 22 ; 23 ; Check for config errors first 24 N % S %=$$CHECKERR() 25 I % D EN^DDIOL($P(%,U,2)) QUIT 23 ; Check for config errors first; try to set-up. 24 N % S %=$$CHECKPAR() 25 I +%=1 D EN^DDIOL($P(%,U,2)) QUIT ; No inpatient pars found... QUIT 26 I +%=2 D ; No QRDA Measure Sets... try to set it up. 27 . D EN^DDIOL("Trying to automatically set-up measure sets in parameters") 28 . N % S %=$$SETUPPAR($$INPPARM()) 29 . I % D EN^DDIOL("Failed to set-up..."_$P(%,U,2)) 30 . E D EN^DDIOL("...Set-up complete") 26 31 ; 27 32 ; Print Intro … … 39 44 ; Ask user which measure set to run 40 45 N DIR,DTOUT,DUOUT,X,Y,DIRUT,DIROUT,DA ; DIR variables 41 S DIR(0)="SB^V:VTE;S:STK;E:ED "46 S DIR(0)="SB^V:VTE;S:STK;E:ED;A:ALL" 42 47 S DIR("A")="Measure to calculate" 43 48 S DIR("A",1)="Which measure set would you like to produce QRDA documents for?" 44 49 S DIR("A",2)="Choose to Run [V]TE Measure Set, [S]TK Measure Set, or " 45 S DIR("A",3)="[E]D Measure Set "50 S DIR("A",3)="[E]D Measure Set. Or you can choose to run [A]ll of them." 46 51 D ^DIR 47 52 ; … … 52 57 ; of DIR directly. 53 58 ; 54 N FLD S FLD=Y(0) 55 N C0QMSIEN S C0QMSIEN=$$GET1^DIQ(1130580001.401,$$INPPARM(),FLD,"I") 56 ; 57 S:'C0QMSIEN $EC=",U1," ; Debug.Assert that MSIEN is numeric. 59 N FLD S FLD=Y(0) ; Grab full text of user choice into var "FLD" for field. 60 N C0QMSIENS ; Measure set IENs (^ piece); (0) stores the identifier for file names 61 ;looks like this in the end 62 ; C0QMSIENS=1^3^5 63 ; C0QMSIENS(0)="ED^VTE^STK" 64 ; 65 N INPPARM S INPPARM=$$INPPARM() ; Inpatient Parameter IEN in 401 66 ; 67 ; If not all, grab the measure; else, grab all of them in ^ pieces 68 I FLD'="ALL" D 69 . S C0QMSIENS=$$GET1^DIQ(1130580001.401,INPPARM,FLD,"I") 70 . S C0QMSIENS(0)=FLD 71 ; 72 E D 73 . N C0QED S C0QED=$$GET1^DIQ(1130580001.401,INPPARM,"ED","I") 74 . N C0QVTE S C0QVTE=$$GET1^DIQ(1130580001.401,INPPARM,"VTE","I") 75 . N C0QSTK S C0QSTK=$$GET1^DIQ(1130580001.401,INPPARM,"STK","I") 76 . S C0QMSIENS=C0QED_U_C0QVTE_U_C0QSTK 77 . S C0QMSIENS(0)="ED"_U_"VTE"_U_"STK" 78 ; 79 ; 80 S:'C0QMSIENS $EC=",U1," ; Debug.Assert that MSIEN is numeric. 81 ; 58 82 ; 59 83 ; Do the work 60 N REF S REF=$NAME(^TMP("C0QQRDA",$J)) ; Global for data collection 61 K @REF ; Clear global 62 D WORK(REF,C0QMSIEN) ; Process Measure Set, collect data in global 63 D PRINTXML(REF,FLD) ; Generate XML; output to File. 64 K @REF ; Clear global 84 N C0QI ; Counter through the measures 85 F C0QI=1:1:$L(C0QMSIENS,U) D 86 . N MSIEN S MSIEN=$P(C0QMSIENS,U,C0QI) ; Measure Set IEN 87 . N MSNAME S MSNAME=$P(C0QMSIENS(0),U,C0QI) ; Measure Set Name 88 . N REF S REF=$NAME(^TMP("C0QQRDA",$J)) ; Global for data collection 89 . K @REF ; Clear global 90 . D WORK(REF,MSIEN) ; Process Measure Set, collect data in global 91 . D PRINTXML(REF,MSNAME) ; Generate XML; output to File. 92 . K @REF ; Clear global 65 93 QUIT 66 94 ; 67 95 ;SILENTEN(RETURN) ; For future RPC calls...; needs to be reworked. 68 ; N % S %=$$CHECK ERR()96 ; N % S %=$$CHECKPAR() 69 97 ; I % S RETURN(0)=% Q 70 98 ; … … 74 102 ; QUIT 75 103 ; 76 CHECKERR() ; Private Proc; Check if environment is okay. 77 ; Output: 0 -> Okay; +ve^message for error 104 CHECKPAR() ; Private Proc; Check if environment is okay. 105 ; Output: 0 or +ve^message for error 106 ; 1 -> No Inpatient Parameters found 107 ; 2 -> Measurement Set(s) not found. 108 ; 78 109 N INPPARM S INPPARM=$$INPPARM() ; Inpatient Parameters IEN 79 110 I 'INPPARM Q 1_U_"No Inpatient Parameters found" … … 88 119 I 'C0QSTK S TXT=TXT_"STK," 89 120 I 'C0QVTE S TXT=TXT_"VTE" 90 I $E(TXT,$L(TXT) =",") S TXT=$E(TXT,1,$L(TXT)-1)121 I $E(TXT,$L(TXT))="," S TXT=$E(TXT,1,$L(TXT)-1) ; remove trailing comma 91 122 I $L(TXT) Q 2_U_"Measure Sets missing from parameters: "_TXT 92 123 ; 93 124 QUIT 0 ; All okay 125 ; 126 SETUPPAR(INPPARM) ; Private Proc; Set-up QRDA lists if Inpatient Param is found. 127 ; Input: Inpatient Parameter IEN in C0Q(401, -> C0Q Parameters 128 ; Output: 0 if okay or 1^error description 129 N C0QFDA 130 ; 131 N VTEIEN S VTEIEN=$O(^C0Q(201,"B","VTE CMS REPORTING MEASURES","")) 132 I 'VTEIEN QUIT 1_U_"VTE not found" 133 N STKIEN S STKIEN=$O(^C0Q(201,"B","STK CMS REPORTING MEASURES","")) 134 I 'STKIEN QUIT 1_U_"STK not found" 135 N EDIEN S EDIEN=$O(^C0Q(201,"B","ED CMS REPORTING MEASURES","")) 136 I 'EDIEN QUIT 1_U_"ED not found" 137 ; 138 S C0QFDA(1130580001.401,INPPARM_",",5.1)=VTEIEN 139 S C0QFDA(1130580001.401,INPPARM_",",5.2)=STKIEN 140 S C0QFDA(1130580001.401,INPPARM_",",5.3)=EDIEN 141 ; 142 N C0QERR 143 D FILE^DIE("",$NA(C0QFDA),$NA(C0QERR)) 144 I $D(C0QERR) Q 2_U_C0QERR("DIERR",1,"TEXT",1) 145 Q 0 94 146 ; 95 147 WORK(C0QREF,C0QMSIEN) ; Private Proc; Process Measure Sets; Collect the data. … … 102 154 ; 103 155 ; Calculate totals and move patients over from individual measures 156 N A 104 157 D UPDATE^C0QUPDT(.A,C0QMSIEN) ; FYI: A isn't used. 105 158 ;
Note:
See TracChangeset
for help on using the changeset viewer.