hqmf-parser 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -48,10 +48,12 @@ module HQMF
|
|
48
48
|
end
|
49
49
|
apply_to_submeasures(@sub_measures, HQMF::PopulationCriteria::DENOM, denoms.values)
|
50
50
|
apply_to_submeasures(@sub_measures, HQMF::PopulationCriteria::IPP, ipps.values)
|
51
|
-
|
52
|
-
apply_to_submeasures(@sub_measures, HQMF::PopulationCriteria::
|
51
|
+
|
52
|
+
apply_to_submeasures(@sub_measures, HQMF::PopulationCriteria::DENEX, excls.values, HQMF::PopulationCriteria::IPP, get_unmatched_population_keys(ipps, excls))
|
53
|
+
apply_to_submeasures(@sub_measures, HQMF::PopulationCriteria::DENEXCEP, denexcs.values, HQMF::PopulationCriteria::DENOM, get_unmatched_population_keys(denoms, denexcs))
|
53
54
|
|
54
55
|
keep = []
|
56
|
+
|
55
57
|
@sub_measures.each do |sub|
|
56
58
|
|
57
59
|
value = sub
|
@@ -80,19 +82,37 @@ module HQMF
|
|
80
82
|
end
|
81
83
|
end
|
82
84
|
|
83
|
-
|
85
|
+
# source are things like exceptions or exclusions, target are IPP, or denom
|
86
|
+
# we want to find any denoms or IPPs that do not have exceptions or exclusions
|
87
|
+
def get_unmatched_population_keys(target, source)
|
88
|
+
return [] if target.length == source.length
|
89
|
+
all_target_keys = target.values.map(&:id)
|
90
|
+
with_ref_keys = source.values.map(&:id).map {|key| @population_criteria_by_id[@population_reference[key]].id if @population_criteria_by_id[@population_reference[key]]}
|
91
|
+
# if we have a population without a reference, we cannot trust the results.
|
92
|
+
return [] if with_ref_keys.include? nil
|
93
|
+
all_target_keys - with_ref_keys
|
94
|
+
end
|
95
|
+
|
96
|
+
# create a copy of each submeasre adding on the new values of the given type
|
97
|
+
# skip the unpaired values. Unpaired values are denominators without exclusions or populations without exceptions
|
98
|
+
def apply_to_submeasures(subs, type, values, unpaired_type=nil, unpaired_keys=[])
|
84
99
|
new_subs = []
|
85
100
|
subs.each do |sub|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
101
|
+
# this unless prevents us from forcing an exclusion or excepion onto a measure that has a submeasure without
|
102
|
+
# an exclusion or exception, but other populations with an exclusion or excepion.
|
103
|
+
unless unpaired_keys.include? sub[unpaired_type]
|
104
|
+
# duplicate each new value if it is set, otherwise set this key on each submeasure.
|
105
|
+
values.each do |value|
|
106
|
+
if (sub[type] and sub[type] != value.id)
|
107
|
+
tmp = {}
|
108
|
+
HQMF::PopulationCriteria::ALL_POPULATION_CODES.each do |key|
|
109
|
+
tmp[key] = sub[key] if sub[key]
|
110
|
+
end
|
111
|
+
sub = tmp
|
112
|
+
new_subs << sub
|
91
113
|
end
|
92
|
-
sub =
|
93
|
-
new_subs << sub
|
114
|
+
sub[type] = value.id
|
94
115
|
end
|
95
|
-
sub[type] = value.id
|
96
116
|
end
|
97
117
|
end
|
98
118
|
subs.concat(new_subs)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hqmf-parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2012-11-
|
14
|
+
date: 2012-11-15 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rubyzip
|