1 | C0QPQRI ; GPL - GENERATES A PQRI XML FILE ;6/14/11 17:05
|
---|
2 | ;;0.1;C0C;nopatch;noreleasedate;Build 23
|
---|
3 | ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
|
---|
4 | ;General Public License See attached copy of the License.
|
---|
5 | ;
|
---|
6 | ;This program is free software; you can redistribute it and/or modify
|
---|
7 | ;it under the terms of the GNU General Public License as published by
|
---|
8 | ;the Free Software Foundation; either version 2 of the License, or
|
---|
9 | ;(at your option) any later version.
|
---|
10 | ;
|
---|
11 | ;This program is distributed in the hope that it will be useful,
|
---|
12 | ;but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
13 | ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
---|
14 | ;GNU General Public License for more details.
|
---|
15 | ;
|
---|
16 | ;You should have received a copy of the GNU General Public License along
|
---|
17 | ;with this program; if not, write to the Free Software Foundation, Inc.,
|
---|
18 | ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
---|
19 | ;
|
---|
20 | Q
|
---|
21 | ;
|
---|
22 | C0QQFN() Q 1130580001.101 ; FILE NUMBER FOR C0Q QUALITY MEASURE FILE
|
---|
23 | C0QMFN() Q 1130580001.201 ; FILE NUMBER FOR C0Q MEASUREMENT FILE
|
---|
24 | C0QMMFN() Q 1130580001.2011 ; FN FOR MEASURE SUBFILE
|
---|
25 | C0QMMNFN() Q 1130580001.20111 ; FN FOR NUMERATOR SUBFILE
|
---|
26 | C0QMMDFN() Q 1130580001.20112 ; FN FOR DENOMINATOR SUBFILE
|
---|
27 | RLSTFN() Q 810.5 ; FN FOR REMINDER PATIENT LIST FILE
|
---|
28 | RLSTPFN() Q 810.53 ; FN FOR REMINDER PATIENT LIST PATIENT SUBFILE
|
---|
29 | ;
|
---|
30 | EN ;
|
---|
31 | ; lets try some hard coded values for now
|
---|
32 | N C0QVAR
|
---|
33 | ;
|
---|
34 | ; first, the values that occur only once for the file
|
---|
35 | ;
|
---|
36 | S C0QVAR("create-by")="RegistryA"
|
---|
37 | S C0QVAR("create-date")="12-10-2010"
|
---|
38 | S C0QVAR("create-time")="14:27"
|
---|
39 | S C0QVAR("file-number")=1
|
---|
40 | S C0QVAR("number-of-files")=9
|
---|
41 | S C0QVAR("version")="1.0"
|
---|
42 | ;
|
---|
43 | ; registry values
|
---|
44 | ;
|
---|
45 | S C0QVAR("registry-id")=125789123
|
---|
46 | S C0QVAR("registry-name")="Model Registry"
|
---|
47 | S C0QVAR("submission-method")="C"
|
---|
48 | ;
|
---|
49 | ; values for each provider
|
---|
50 | ;
|
---|
51 | S C0QVAR("npi")=12011989
|
---|
52 | S C0QVAR("tin")=387682321
|
---|
53 | S C0QVAR("waiver-signed")="Y"
|
---|
54 | S C0QVAR("encounter-from-date")="06-13-2010"
|
---|
55 | S C0QVAR("encounter-to-date")="12-10-2010"
|
---|
56 | ;
|
---|
57 | ; values for each measure group
|
---|
58 | ;
|
---|
59 | S C0QVAR("ffs-patient-count")=2
|
---|
60 | S C0QVAR("group-eligible-instances")=30
|
---|
61 | S C0QVAR("group-reporting-rate")=66.67
|
---|
62 | S C0QVAR("group-reporting-rate-numerator")=20
|
---|
63 | ;
|
---|
64 | ; for each measure
|
---|
65 | ;
|
---|
66 | S C0QVAR("pqri-measure-number")=128
|
---|
67 | S C0QVAR("eligible-instances")=100
|
---|
68 | S C0QVAR("meets-performance-instances")=18
|
---|
69 | S C0QVAR("performance-exclusion-instances")=0
|
---|
70 | S C0QVAR("performance-not-met-instances")=10
|
---|
71 | S C0QVAR("performance-rate")="90.00"
|
---|
72 | S C0QVAR("reporting-rate")="28.00"
|
---|
73 | ;
|
---|
74 | ;
|
---|
75 | N ZG,ZV
|
---|
76 | D GETTEMP^C0CMXP("ZG","PQRIXML") ; GET THE TEMPLATE
|
---|
77 | D BIND^C0CSOAP("ZV","C0QVAR","PQRIXML") ; GET BINDING VALUES
|
---|
78 | D MAP^C0CXPATH("ZG","ZV","ZO") ; MAP THE XML
|
---|
79 | D MEA("GG","GGG") ; GET THE MEASURES
|
---|
80 | N GB ; BUILD LIST
|
---|
81 | D QUEUE^C0CXPATH("GB","ZO",1,30) ; first part of pqri.xml
|
---|
82 | D QUEUE^C0CXPATH("GB","GG",2,$O(GG(""),-1)-1) ; the measures
|
---|
83 | D QUEUE^C0CXPATH("GB","ZO",$O(ZO(""),-1)-2,$O(ZO(""),-1)) ; LAST LINES
|
---|
84 | D BUILD^C0CXPATH("GB","GZO") ; BUILD THE XML
|
---|
85 | N ZI S ZI=0
|
---|
86 | F S ZI=$O(ZO(ZI)) Q:ZI="" D ; FOR EACH LINE OF XML
|
---|
87 | . W !,GZO(ZI) ; WRITE OUT THE XML
|
---|
88 | N GN,GN1,GD S GN=$NA(^TMP("C0QXML",$J))
|
---|
89 | K @GN
|
---|
90 | K ZO(0) ; GET RID OF LINE COUNT
|
---|
91 | M @GN=GZO
|
---|
92 | S GN1=$NA(@GN@(1))
|
---|
93 | S GD=$G(^TMP("C0CCCR","ODIR")) ; CONVENIENT OUTPUT DIRECTORY
|
---|
94 | W $$OUTPUT^C0CXPATH(GN1,"pqri.xml",GD)
|
---|
95 | K @GN ; DONT NEED IT ANYMORE
|
---|
96 | Q
|
---|
97 | ;
|
---|
98 | INSERT(ZARY,ZONE) ; INSERT ONE MEASURE INTO THE ARRAY
|
---|
99 | ;
|
---|
100 | ;N GGG
|
---|
101 | S GGG="//submission/measure-group ID='C'/provider/pqri-measure" ;XPATH
|
---|
102 | D INSINNER^COCXPATH(ZARY,GGG,ZONE) ; INSERT XML
|
---|
103 | Q
|
---|
104 | ;
|
---|
105 | PQRI(ZOUT,KEEP) ; RETURN THE NHIN ARRAY FOR THE PQRI XML TEMPLATE
|
---|
106 | ;
|
---|
107 | N ZG
|
---|
108 | S ZG=$NA(^TMP("PQRIXML",$J))
|
---|
109 | K @ZG
|
---|
110 | D GETXML^C0CMXP(ZG,"PQRIXML") ; GET THE XML FROM C0C MISC XML
|
---|
111 | N C0CDOCID
|
---|
112 | S C0CDOCID=$$PARSE^C0CDOM(ZG,"PQRIXML") ; PARSE THE XML
|
---|
113 | D DOMO^C0CDOM(C0CDOCID,"/","ZOUT","GIDX","GARY",,"//submission") ; BLD ARRAYS
|
---|
114 | I '$G(KEEP) K GIDX,GARY ; GET RID OF THE ARRAYS UNLESS KEEP=1
|
---|
115 | Q
|
---|
116 | ;
|
---|
117 | PROCESS(ZRSLT,ZXML,ZREDUCE,KEEP) ; PARSE AND RUN DOMO ON XML
|
---|
118 | ; ZRTN IS PASSED BY REFERENCE
|
---|
119 | ; ZXML IS PASSED BY NAME
|
---|
120 | ; IF KEEP IS 1, GARY AND GIDX ARE NOT KILLED
|
---|
121 | ;
|
---|
122 | N ZG
|
---|
123 | S ZG=$NA(^TMP("C0CXML",$J))
|
---|
124 | K @ZG
|
---|
125 | M @ZG=@ZXML
|
---|
126 | S C0CDOCID=$$PARSE^C0CDOM(ZG,"NHINARRAY") ; PARSE WITH MXML
|
---|
127 | D DOMO^C0CDOM(C0CDOCID,"/","ZRSLT","GIDX","GARY",,$G(ZREDUCE)) ; BLD ARRAYS
|
---|
128 | I '$G(KEEP) K GIDX,GARY,@ZG ; GET RID OF THE ARRAYS UNLESS KEEP=1
|
---|
129 | Q
|
---|
130 | ;
|
---|
131 | GETFM(RTN,ZREC) ; GET THE QUALITY MEASURES ARRAY
|
---|
132 | ;
|
---|
133 | I '$D(ZREC) S ZREC=7 ; OUTPATIENT CERTIFICATION SET
|
---|
134 | ;N GPL
|
---|
135 | D LIST^DIC($$C0QMMFN(),","_ZREC_",",".01;1.1;2.1;3;",,,,,,,,"GPL")
|
---|
136 | N ZI S ZI=""
|
---|
137 | F S ZI=$O(GPL("DILIST","ID",ZI)) Q:ZI="" D ;
|
---|
138 | . S @RTN@(ZI,"measure")=GPL("DILIST","ID",ZI,.01)
|
---|
139 | . N ZMIEN,ZMEAIEN,ZRNAME
|
---|
140 | . S ZMIEN=GPL("DILIST",2,ZI) ; IEN OF MEASURE IN MEASURE FILE
|
---|
141 | . ;S ZMEAIEN=$$GET1^DIQ($$C0QMMFN(),ZMIEN_","_ZREC_",",.01,"I") ; MEASURE
|
---|
142 | . S ZRNAME=$$GET1^DIQ($$C0QMMFN(),ZMIEN_","_ZREC_",",".01:.8") ; MEASURE
|
---|
143 | . ;S @RTN@(ZI,"reportingName")=$$GET1^DIQ($$C0QQFN(),ZMEAIEN_",",.8) ; RNAME
|
---|
144 | . S @RTN@(ZI,"reportingName")=ZRNAME ; A SHORTCUT TO THE REPORTING NAME
|
---|
145 | . S @RTN@(ZI,"reportingNumber")=$P(ZRNAME,"NQF",2) ; NQF0001 -> 0001
|
---|
146 | . S @RTN@(ZI,"denominator")=+GPL("DILIST","ID",ZI,2.1)
|
---|
147 | . S @RTN@(ZI,"numerator")=+GPL("DILIST","ID",ZI,1.1)
|
---|
148 | . N ZNUM,ZDEM,ZPCT
|
---|
149 | . S (ZNUM,ZDEM,ZPCT)=0
|
---|
150 | . S ZDEM=+GPL("DILIST","ID",ZI,2.1)
|
---|
151 | . S ZNUM=+GPL("DILIST","ID",ZI,1.1)
|
---|
152 | . I ZDEM>0 S ZPCT=((ZNUM*100)/ZDEM)
|
---|
153 | . S @RTN@(ZI,"percent")=$P(ZPCT,".",1)
|
---|
154 | . S @RTN@(ZI,"ien")=ZI
|
---|
155 | ;ZWR GPL
|
---|
156 | Q
|
---|
157 | ;
|
---|
158 | MEA(ZOUT,ZIN) ; CREATE XML FROM THE MEASURES ARRAY
|
---|
159 | ;
|
---|
160 | D GETFM(ZIN) ; GET THE MEASURES
|
---|
161 | ;N G
|
---|
162 | ;N ZI,ZJ
|
---|
163 | S ZI=""
|
---|
164 | F S ZI=$O(@ZIN@(ZI)) Q:ZI="" D ;
|
---|
165 | . N ZDEN,ZNUM,ZPCT
|
---|
166 | . S ZDEN=$G(@ZIN@(ZI,"denominator"))
|
---|
167 | . S ZNUM=$G(@ZIN@(ZI,"numerator"))
|
---|
168 | . S ZPCT=$G(@ZIN@(ZI,"percent"))
|
---|
169 | . S G("pqri-measure",ZI,"eligible-instances")=ZDEN
|
---|
170 | . S G("pqri-measure",ZI,"meets-performance-instances")=ZNUM
|
---|
171 | . S G("pqri-measure",ZI,"performance-exclusion-instances")=0
|
---|
172 | . S G("pqri-measure",ZI,"performance-not-met-instances")=ZDEN-ZNUM
|
---|
173 | . S G("pqri-measure",ZI,"performance-rate")=ZPCT
|
---|
174 | . S G("pqri-measure",ZI,"pqri-measure-number")="NQF "_@ZIN@(ZI,"reportingNumber")
|
---|
175 | . S G("pqri-measure",ZI,"reporting-rate")=ZPCT
|
---|
176 | K ^TMP("MXMLDOM",$J)
|
---|
177 | S C0CDOCID=$$DOMI^C0CDOM("G",1,"root")
|
---|
178 | D OUTXML^C0CDOM(ZOUT,C0CDOCID,1)
|
---|
179 | Q
|
---|
180 | ;
|
---|