health-data-standards 3.2.7 → 3.2.8
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/README.md +11 -2
- data/lib/health-data-standards/export/helper/cat1_view_helper.rb +24 -7
- data/lib/health-data-standards/export/helper/scooped_view_helper.rb +36 -4
- data/lib/health-data-standards/import/cat1/insurance_provider_importer.rb +22 -0
- data/lib/health-data-standards/import/cat1/patient_importer.rb +2 -0
- data/lib/health-data-standards/models/cqm/measure.rb +4 -4
- data/lib/health-data-standards/models/cqm/patient_cache.rb +1 -1
- data/lib/health-data-standards/models/insurance_provider.rb +1 -1
- data/lib/health-data-standards/models/svs/value_set.rb +2 -42
- data/lib/health-data-standards/util/code_system_helper.rb +4 -2
- data/lib/health-data-standards.rb +1 -0
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.11.cat1.erb +1 -1
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.13.cat1.erb +1 -1
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.14.cat1.erb +1 -1
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.18.cat1.erb +7 -3
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.20.cat1.erb +2 -2
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.28.cat1.erb +1 -1
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.3.cat1.erb +1 -1
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.32.cat1.erb +1 -1
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.38.cat1.erb +1 -1
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.4.cat1.erb +1 -1
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.40.cat1.erb +1 -1
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.41.cat1.erb +2 -2
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.42.cat1.erb +2 -2
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.47.cat1.erb +2 -2
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.57.cat1.erb +1 -2
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.59.cat1.erb +1 -1
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.63.cat1.erb +1 -1
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.64.cat1.erb +2 -2
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.66.cat1.erb +1 -1
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.69.cat1.erb +10 -6
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.7.cat1.erb +1 -1
- data/templates/cat1/_medication_details.cat1.erb +7 -1
- data/templates/cat1/_ordinality.cat1.erb +8 -2
- data/templates/cat1/_reason.cat1.erb +8 -2
- data/templates/cat1/_result_value.cat1.erb +11 -2
- data/templates/cat3/_measure_data.cat3.erb +2 -2
- data/templates/cat3/_reporting_parameters.cat3.erb +28 -0
- data/templates/cat3/_supplemental_data.cat3.erb +1 -1
- data/templates/cat3/show.cat3.erb +3 -1
- metadata +14 -12
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -5,7 +5,7 @@ In addition this project also contains libaries for parsing hqmf documents and f
|
|
5
5
|
Environment
|
6
6
|
===========
|
7
7
|
|
8
|
-
This project currently uses Ruby 1.9.
|
8
|
+
This project currently uses Ruby 1.9.3 and is built using [Bundler](http://gembundler.com/). To get all of the dependencies for the project, first install bundler:
|
9
9
|
|
10
10
|
gem install bundler
|
11
11
|
|
@@ -22,10 +22,19 @@ Project Practices
|
|
22
22
|
|
23
23
|
Please try to follow our [Coding Style Guides](http://github.com/eedrummer/styleguide). Additionally, we will be using git in a pattern similar to [Vincent Driessen's workflow](http://nvie.com/posts/a-successful-git-branching-model/). While feature branches are encouraged, they are not required to work on the project.
|
24
24
|
|
25
|
+
Change Log
|
26
|
+
==========
|
27
|
+
|
28
|
+
3.2.8 - August 23, 2013
|
29
|
+
|
30
|
+
* Bug fixes for QRDA Category III generation
|
31
|
+
* Import for insurance providers from QRDA Category I documents
|
32
|
+
* Consolidated code for dealing with code system names
|
33
|
+
|
25
34
|
License
|
26
35
|
=======
|
27
36
|
|
28
|
-
Copyright
|
37
|
+
Copyright 2013 The MITRE Corporation
|
29
38
|
|
30
39
|
Licensed under the Apache License, Version 2.0 (the "License");
|
31
40
|
you may not use this file except in compliance with the License.
|
@@ -4,14 +4,16 @@ module HealthDataStandards
|
|
4
4
|
module Cat1ViewHelper
|
5
5
|
include HealthDataStandards::Export::Helper::ScoopedViewHelper
|
6
6
|
|
7
|
-
def render_data_criteria(
|
7
|
+
def render_data_criteria(dc, entries)
|
8
8
|
html_array = entries.map do |entry|
|
9
9
|
bundle_id = entry.record ? entry.record["bundle_id"] : nil
|
10
|
-
vs_map = (value_set_map(bundle_id) || {})[
|
11
|
-
|
12
|
-
|
13
|
-
:value_set_oid =>
|
14
|
-
:value_set_map => vs_map
|
10
|
+
vs_map = (value_set_map(bundle_id) || {})[dc['value_set_oid']]
|
11
|
+
render(:partial => HealthDataStandards::Export::QRDA::EntryTemplateResolver.partial_for(dc['data_criteria_oid'], dc['value_set_oid']), :locals => {:entry => entry,
|
12
|
+
:data_criteria => dc['data_criteria'],
|
13
|
+
:value_set_oid => dc['value_set_oid'],
|
14
|
+
:value_set_map => vs_map,
|
15
|
+
:result_oids => dc["result_oids"],
|
16
|
+
:field_oids => dc["field_oids"]})
|
15
17
|
end
|
16
18
|
html_array.join("\n")
|
17
19
|
end
|
@@ -21,7 +23,7 @@ module HealthDataStandards
|
|
21
23
|
udcs = unique_data_criteria(measures)
|
22
24
|
data_criteria_html = udcs.map do |udc|
|
23
25
|
entries = entries_for_data_criteria(udc['data_criteria'], patient)
|
24
|
-
render_data_criteria(udc
|
26
|
+
render_data_criteria(udc, entries)
|
25
27
|
end
|
26
28
|
data_criteria_html.compact.join("\n")
|
27
29
|
end
|
@@ -34,6 +36,21 @@ module HealthDataStandards
|
|
34
36
|
end
|
35
37
|
end
|
36
38
|
|
39
|
+
def oid_for_code(codedValue, valueset_oids, bundle_id = nil)
|
40
|
+
valueset_oids ||=[]
|
41
|
+
code = codedValue["code"]
|
42
|
+
code_system = codedValue["code_set"]
|
43
|
+
vs_map = (value_set_map(bundle_id) || {})
|
44
|
+
valueset_oids.each do |vs_oid|
|
45
|
+
oid_list = (vs_map[vs_oid] || [])
|
46
|
+
oid_map = Hash[oid_list.collect{|x| [x["set"],x["values"]]}]
|
47
|
+
if (oid_map[code_system] || []).index code
|
48
|
+
return vs_oid
|
49
|
+
end
|
50
|
+
end
|
51
|
+
return nil
|
52
|
+
end
|
53
|
+
|
37
54
|
end
|
38
55
|
end
|
39
56
|
end
|
@@ -15,14 +15,31 @@ module HealthDataStandards
|
|
15
15
|
# one for the value set oid and one for the data criteria itself
|
16
16
|
def unique_data_criteria(measures)
|
17
17
|
all_data_criteria = measures.map {|measure| measure.all_data_criteria}.flatten
|
18
|
-
|
18
|
+
mapped_data_criteria = {}
|
19
|
+
all_data_criteria.each do |data_criteria|
|
19
20
|
data_criteria_oid = HQMFTemplateHelper.template_id_by_definition_and_status(data_criteria.definition,
|
20
21
|
(data_criteria.status || ""),
|
21
22
|
data_criteria.negation)
|
22
23
|
value_set_oid = data_criteria.code_list_id
|
23
|
-
{'data_criteria_oid' => data_criteria_oid, 'value_set_oid' => value_set_oid
|
24
|
+
dc = {'data_criteria_oid' => data_criteria_oid, 'value_set_oid' => value_set_oid}
|
25
|
+
mapping = mapped_data_criteria[dc] ||= {'result_oids' => [], 'field_oids' =>{}, 'data_criteria' => data_criteria}
|
26
|
+
|
27
|
+
if data_criteria.field_values
|
28
|
+
data_criteria.field_values.each_pair do |field,descr|
|
29
|
+
if descr && descr.type == "CD"
|
30
|
+
(mapping['field_oids'][field] ||= []) << descr.code_list_id
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
if data_criteria.value && data_criteria.value.type == "CD"
|
36
|
+
mapping["result_oids"] << data_criteria.value.code_list_id
|
37
|
+
end
|
38
|
+
|
39
|
+
# {'data_criteria_oid' => data_criteria_oid, 'value_set_oid' => value_set_oid, 'data_criteria' => data_criteria}
|
24
40
|
end
|
25
|
-
unioned_data_criteria.uniq_by {|thingy| [thingy['data_criteria_oid'], thingy['value_set_oid']]}
|
41
|
+
# unioned_data_criteria.uniq_by {|thingy| [thingy['data_criteria_oid'], thingy['value_set_oid']]}
|
42
|
+
mapped_data_criteria.collect{|dc| dc[0].merge dc[1] }
|
26
43
|
end
|
27
44
|
|
28
45
|
# Returns true if the supplied entry matches any of the supplied data criteria, false otherwise
|
@@ -54,6 +71,7 @@ module HealthDataStandards
|
|
54
71
|
data_criteria.negation)
|
55
72
|
HealthDataStandards.logger.warn("Looking for dc [#{data_criteria_oid}]")
|
56
73
|
filtered_entries = []
|
74
|
+
entries = []
|
57
75
|
case data_criteria_oid
|
58
76
|
when '2.16.840.1.113883.3.560.1.404'
|
59
77
|
filtered_entries = handle_patient_expired(patient)
|
@@ -62,7 +80,7 @@ module HealthDataStandards
|
|
62
80
|
when '2.16.840.1.113883.3.560.1.405'
|
63
81
|
filtered_entries = handle_payer_information(patient)
|
64
82
|
else
|
65
|
-
entries
|
83
|
+
entries.concat patient.entries_for_oid(data_criteria_oid)
|
66
84
|
|
67
85
|
case data_criteria_oid
|
68
86
|
when '2.16.840.1.113883.3.560.1.5'
|
@@ -80,6 +98,7 @@ module HealthDataStandards
|
|
80
98
|
if codes.empty?
|
81
99
|
HealthDataStandards.logger.warn("No codes for #{data_criteria.code_list_id}")
|
82
100
|
end
|
101
|
+
entries.uniq!
|
83
102
|
filtered_entries = entries.find_all do |entry|
|
84
103
|
# This special case is for when the code list is a reason
|
85
104
|
if data_criteria.code_list_id =~ /2\.16\.840\.1\.113883\.3\.526\.3\.100[7-9]/
|
@@ -117,6 +136,19 @@ module HealthDataStandards
|
|
117
136
|
patient.insurance_providers
|
118
137
|
end
|
119
138
|
|
139
|
+
def code_in_valueset( code, valuesets=[],bundle_id=nil)
|
140
|
+
unless(bundle_id.nil?)
|
141
|
+
bundle = Bundle.find(bundle_id)
|
142
|
+
vs_matches = []
|
143
|
+
valuesets.each do |vs|
|
144
|
+
vset = bundle.valuesets.where({"oid"=>vs}).first
|
145
|
+
if vset && vset.concepts.where({"code" => code["code"], "codeSystem" => code["code_system"]}).first
|
146
|
+
vs_matches << vs
|
147
|
+
end
|
148
|
+
end
|
149
|
+
return vs_matches
|
150
|
+
end
|
151
|
+
end
|
120
152
|
end
|
121
153
|
end
|
122
154
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module HealthDataStandards
|
2
|
+
module Import
|
3
|
+
module Cat1
|
4
|
+
class InsuranceProviderImporter < CDA::SectionImporter
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
super(CDA::EntryFinder.new("//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.55']"))
|
8
|
+
@check_for_usable = false # needs to be this way becase InsuranceProvider does not respond
|
9
|
+
# to usable?
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_entry(payer_element, nrh = CDA::NarrativeReferenceHandler.new)
|
13
|
+
ip = InsuranceProvider.new
|
14
|
+
value_element = payer_element.at_xpath('cda:value')
|
15
|
+
ip.codes = { 'SOP' => [value_element['code']] } if value_element
|
16
|
+
ip
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -64,6 +64,8 @@ module HealthDataStandards
|
|
64
64
|
|
65
65
|
@section_importers[:social_history] = [generate_importer(TobaccoUseImporter, nil, '2.16.840.1.113883.3.560.1.1001', 'completed')]
|
66
66
|
|
67
|
+
@section_importers[:insurance_providers] = [generate_importer(InsuranceProviderImporter, nil, '2.16.840.1.113883.3.560.1.405')]
|
68
|
+
|
67
69
|
end
|
68
70
|
|
69
71
|
def parse_cat1(doc)
|
@@ -71,15 +71,15 @@ module HealthDataStandards
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def smoking_gun_data(patient_cache_filter={})
|
74
|
-
::Measure.calculate_smoking_gun_data(self.hqmf_id, patient_cache_filter)
|
74
|
+
::Measure.calculate_smoking_gun_data(self["bundle_id"], self.hqmf_id, patient_cache_filter)
|
75
75
|
end
|
76
76
|
# Calculate the smoking gun data for the given hqmf_id with the given patient_cache_filter
|
77
77
|
# The filter will allow us to segment the cache by things like test_id required for Cypress.
|
78
78
|
|
79
|
-
def self.calculate_smoking_gun_data(hqmf_id, patient_cache_filter={})
|
79
|
+
def self.calculate_smoking_gun_data(bundle_id, hqmf_id, patient_cache_filter={})
|
80
80
|
population_keys = ('a'..'zz').to_a
|
81
81
|
values = {}
|
82
|
-
measure = Measure.top_level.where({hqmf_id: hqmf_id}).first
|
82
|
+
measure = Measure.top_level.where({hqmf_id: hqmf_id, bundle_id: bundle_id}).first
|
83
83
|
sub_ids = []
|
84
84
|
hqmf_measure = measure.as_hqmf_model
|
85
85
|
population_codes = []
|
@@ -139,7 +139,7 @@ module HealthDataStandards
|
|
139
139
|
qrda_template = 'N/A'
|
140
140
|
end # end begin recue
|
141
141
|
description = "#{HQMF::DataCriteria.title_for_template_id(template).titleize}: #{data_criteria.title}"
|
142
|
-
result << {description: description, oid: value_set_oid, template: qrda_template}
|
142
|
+
result << {description: description, oid: value_set_oid, template: qrda_template, rationale: rationale[data_criteria.id]}
|
143
143
|
if data_criteria.temporal_references
|
144
144
|
data_criteria.temporal_references.each do |temporal_reference|
|
145
145
|
if temporal_reference.reference.id != 'MeasurePeriod'
|
@@ -39,8 +39,9 @@ module HealthDataStandards
|
|
39
39
|
if vs_element
|
40
40
|
vs = ValueSet.new(oid: vs_element["ID"], display_name: vs_element["displayName"], version: vs_element["version"])
|
41
41
|
concepts = vs_element.xpath("//vs:Concept").collect do |con|
|
42
|
+
code_system_name = HealthDataStandards::Util::CodeSystemHelper::CODE_SYSTEMS[con["codeSystem"]] || con["codeSystemName"]
|
42
43
|
Concept.new(code: con["code"],
|
43
|
-
code_system_name:
|
44
|
+
code_system_name: code_system_name,
|
44
45
|
code_system_version: con["code_system_version"],
|
45
46
|
display_name: con["displayName"], code_system: con["codeSystem"])
|
46
47
|
end
|
@@ -48,47 +49,6 @@ module HealthDataStandards
|
|
48
49
|
return vs
|
49
50
|
end
|
50
51
|
end
|
51
|
-
|
52
|
-
def self.normalize_code_set_name(code_set_name)
|
53
|
-
case code_set_name
|
54
|
-
when 'RXNORM'
|
55
|
-
'RxNorm'
|
56
|
-
when 'ICD9CM'
|
57
|
-
'ICD-9-CM'
|
58
|
-
when 'ICD10CM'
|
59
|
-
'ICD-10-CM'
|
60
|
-
when 'ICD10PCS'
|
61
|
-
'ICD-10-PCS'
|
62
|
-
when 'SNOMEDCT'
|
63
|
-
'SNOMED-CT'
|
64
|
-
when 'CDCREC'
|
65
|
-
'CDC Race'
|
66
|
-
when 'HSLOC'
|
67
|
-
'HL7 Healthcare Service Location'
|
68
|
-
else
|
69
|
-
code_set_name
|
70
|
-
end
|
71
|
-
end
|
72
|
-
def self.denormalize_code_set_name(code_set_name)
|
73
|
-
case code_set_name
|
74
|
-
when'RxNorm'
|
75
|
-
'RXNORM'
|
76
|
-
when'ICD-9-CM'
|
77
|
-
'ICD9CM'
|
78
|
-
when'ICD-10-CM'
|
79
|
-
'ICD10CM'
|
80
|
-
when'ICD-10-PCS'
|
81
|
-
'ICD10PCS'
|
82
|
-
when'SNOMED-CT'
|
83
|
-
'SNOMEDCT'
|
84
|
-
when'CDC Race'
|
85
|
-
'CDCREC'
|
86
|
-
when'HL7 Healthcare Service Location'
|
87
|
-
'HSLOC'
|
88
|
-
else
|
89
|
-
code_set_name
|
90
|
-
end
|
91
|
-
end
|
92
52
|
end
|
93
53
|
end
|
94
54
|
end
|
@@ -12,7 +12,8 @@ module HealthDataStandards
|
|
12
12
|
'2.16.840.1.113883.6.104' => 'ICD-9-PCS',
|
13
13
|
'2.16.840.1.113883.6.4' => 'ICD-10-PCS',
|
14
14
|
'2.16.840.1.113883.6.90' => 'ICD-10-CM',
|
15
|
-
'2.16.840.1.113883.6.14' => '
|
15
|
+
'2.16.840.1.113883.6.14' => 'HCP',
|
16
|
+
'2.16.840.1.113883.6.285' => 'HCPCS',
|
16
17
|
'2.16.840.1.113883.5.2' => "HL7 Marital Status",
|
17
18
|
'2.16.840.1.113883.12.292' => 'CVX',
|
18
19
|
'2.16.840.1.113883.5.83' => 'HITSP C80 Observation Status',
|
@@ -32,7 +33,8 @@ module HealthDataStandards
|
|
32
33
|
'2.16.840.1.113883.3.88.12.80.33' => "NUBC",
|
33
34
|
'2.16.840.1.113883.1.11.78' => "HL7 Observation Interpretation",
|
34
35
|
'2.16.840.1.113883.3.221.5' => "Source of Payment Typology",
|
35
|
-
'2.16.840.1.113883.6.13' => 'CDT'
|
36
|
+
'2.16.840.1.113883.6.13' => 'CDT',
|
37
|
+
'2.16.840.1.113883.18.2' => 'AdministrativeSex'
|
36
38
|
}
|
37
39
|
|
38
40
|
CODE_SYSTEM_ALIASES = {
|
@@ -154,6 +154,7 @@ require_relative 'health-data-standards/import/cat1/entry_package'
|
|
154
154
|
require_relative 'health-data-standards/import/cat1/lab_result_importer'
|
155
155
|
require_relative 'health-data-standards/import/cat1/ecog_status_importer'
|
156
156
|
require_relative 'health-data-standards/import/cat1/symptom_active_importer'
|
157
|
+
require_relative 'health-data-standards/import/cat1/insurance_provider_importer'
|
157
158
|
|
158
159
|
require_relative 'health-data-standards/models/cqm/aggregate_objects'
|
159
160
|
require_relative 'health-data-standards/models/cqm/query_cache'
|
@@ -14,7 +14,7 @@
|
|
14
14
|
<!-- Attribute: discharge datetime -->
|
15
15
|
<high <%= value_or_null_flavor(entry.end_time) %>/>
|
16
16
|
</effectiveTime>
|
17
|
-
<%== render(:partial => 'ordinality', :locals => {:entry => entry}) %>
|
17
|
+
<%== render(:partial => 'ordinality', :locals => {:entry => entry, :reason_oids=>field_oids["ORDINALITY"]}) %>
|
18
18
|
|
19
19
|
<%== code_display(entry, {'tag_name' => 'value', 'value_set_map' => value_set_map,'preferred_code_sets' => ['LOINC', 'SNOMED-CT', 'ICD-9-CM', 'ICD-10-CM'],
|
20
20
|
'extra_content' => "xsi:type=\"CD\" sdtc:valueSet=\"#{value_set_oid}\""}) %>
|
@@ -15,7 +15,7 @@
|
|
15
15
|
<!-- Attribute: Stop Datetime -->
|
16
16
|
<high <%= value_or_null_flavor(entry.end_time) %>/>
|
17
17
|
</effectiveTime>
|
18
|
-
<%== render(:partial => 'ordinality', :locals => {:entry => entry}) %>
|
18
|
+
<%== render(:partial => 'ordinality', :locals => {:entry => entry, :ordinality_oids=>field_oids["ORDINALITY"]}) %>
|
19
19
|
|
20
20
|
<%== code_display(entry, 'value_set_map' => value_set_map,'tag_name' => 'value', 'preferred_code_sets' => ['SNOMED-CT', 'ICD-9-CM', 'ICD-10-CM', 'LOINC'], 'extra_content' => "xsi:type=\"CD\" sdtc:valueSet=\"#{value_set_oid}\"") %>
|
21
21
|
<!-- Status -->
|
@@ -14,7 +14,7 @@
|
|
14
14
|
<!-- Attribute: Stop Datetime -->
|
15
15
|
<high <%= value_or_null_flavor(entry.end_time) %>/>
|
16
16
|
</effectiveTime>
|
17
|
-
<%== render(:partial => 'ordinality', :locals => {:entry => entry}) %>
|
17
|
+
<%== render(:partial => 'ordinality', :locals => {:entry => entry, :ordinality_oids=>field_oids["ORDINALITY"]}}) %>
|
18
18
|
|
19
19
|
<%== code_display(entry, 'value_set_map' => value_set_map,'tag_name' => 'value', 'preferred_code_sets' => ['SNOMED-CT', 'ICD-9-CM', 'ICD-10-CM', 'CPT'],
|
20
20
|
'extra_content' => "xsi:type=\"CD\" sdtc:valueSet=\"#{value_set_oid}\"") %>
|
@@ -1,3 +1,6 @@
|
|
1
|
+
<% vals = entry.values.empty? ? [nil] : entry.values
|
2
|
+
vals.each do |value|
|
3
|
+
%>
|
1
4
|
<entry>
|
2
5
|
<observation classCode="OBS" moodCode="EVN" <%== negation_indicator(entry) %>>
|
3
6
|
<!-- Consolidated Procedure Activity Observation templateId
|
@@ -15,7 +18,8 @@
|
|
15
18
|
<!-- Attribute: End Datetime -->
|
16
19
|
<high <%= value_or_null_flavor(entry.end_time) %>/>
|
17
20
|
</effectiveTime>
|
18
|
-
<%== render(:partial => 'result_value', :locals => {:values => [
|
19
|
-
<%== render(:partial => 'reason', :locals => {:entry => entry}) %>
|
21
|
+
<%== render(:partial => 'result_value', :locals => {:values => [value], :result_oids=>result_oids}) %>
|
22
|
+
<%== render(:partial => 'reason', :locals => {:entry => entry, :reason_oids=>field_oids["REASON"]}) %>
|
20
23
|
</observation>
|
21
|
-
</entry>
|
24
|
+
</entry>
|
25
|
+
<% end %>
|
@@ -14,7 +14,7 @@
|
|
14
14
|
<low <%= value_or_null_flavor(entry.start_time) %>/>
|
15
15
|
<high <%= value_or_null_flavor(entry.end_time) %>/>
|
16
16
|
</effectiveTime>
|
17
|
-
<%== render(:partial => 'result_value', :locals => {:values => [entry.values.first]}) %>
|
18
|
-
<%== render(:partial => 'reason', :locals => {:entry => entry}) %>
|
17
|
+
<%== render(:partial => 'result_value', :locals => {:values => [entry.values.first], :result_oids=>result_oids}) %>
|
18
|
+
<%== render(:partial => 'reason', :locals => {:entry => entry, :reason_oids=>field_oids["REASON"]}) %>
|
19
19
|
</observation>
|
20
20
|
</entry>
|
@@ -15,6 +15,6 @@
|
|
15
15
|
</effectiveTime>
|
16
16
|
|
17
17
|
<!-- Result -->
|
18
|
-
<%== render(:partial => 'result_value', :locals => {:values => [entry.values.first]}) %>
|
18
|
+
<%== render(:partial => 'result_value', :locals => {:values => [entry.values.first], :result_oids=>result_oids}) %>
|
19
19
|
</observation>
|
20
20
|
</entry>
|
@@ -20,6 +20,6 @@
|
|
20
20
|
<participant typeCode="IRCP">
|
21
21
|
<participantRole classCode="PAT"/>
|
22
22
|
</participant>
|
23
|
-
<%== render(:partial => 'reason', :locals => {:entry => entry}) %>
|
23
|
+
<%== render(:partial => 'reason', :locals => {:entry => entry, :reason_oids=>field_oids["REASON"]}) %>
|
24
24
|
</act>
|
25
25
|
</entry>
|
@@ -10,6 +10,6 @@
|
|
10
10
|
<low <%= value_or_null_flavor(entry.start_time) %>/>
|
11
11
|
<high <%= value_or_null_flavor(entry.end_time) %>/>
|
12
12
|
</effectiveTime>
|
13
|
-
<%== render(:partial => 'reason', :locals => {:entry => entry}) %>
|
13
|
+
<%== render(:partial => 'reason', :locals => {:entry => entry ,:reason_oids=>field_oids["REASON"]}) %>
|
14
14
|
</act>
|
15
15
|
</entry>
|
@@ -11,6 +11,6 @@
|
|
11
11
|
<low <%= value_or_null_flavor(entry.start_time) %>/>
|
12
12
|
<high <%= value_or_null_flavor(entry.end_time) %>/>
|
13
13
|
</effectiveTime>
|
14
|
-
<%== render(:partial => 'reason', :locals => {:entry => entry}) %>
|
14
|
+
<%== render(:partial => 'reason', :locals => {:entry => entry, :reason_oids=>field_oids["REASON"]}) %>
|
15
15
|
</observation>
|
16
16
|
</entry>
|
@@ -23,6 +23,6 @@
|
|
23
23
|
<code code="158965000" codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT" displayName="Medical Practitioner"/>
|
24
24
|
</participantRole>
|
25
25
|
</participant>
|
26
|
-
<%== render(:partial => 'reason', :locals => {:entry => entry}) %>
|
26
|
+
<%== render(:partial => 'reason', :locals => {:entry => entry, :reason_oids=>field_oids["REASON"]}) %>
|
27
27
|
</act>
|
28
28
|
</entry>
|
@@ -13,6 +13,6 @@
|
|
13
13
|
<low <%= value_or_null_flavor(entry.start_time) %>/>
|
14
14
|
<high <%= value_or_null_flavor(entry.end_time) %>/>
|
15
15
|
</effectiveTime>
|
16
|
-
<%== render(:partial => 'result_value', :locals => {:values => [entry.values.first]}) %>
|
16
|
+
<%== render(:partial => 'result_value', :locals => {:values => [entry.values.first], :result_oids=>result_oids}) %>
|
17
17
|
</observation>
|
18
18
|
</entry>
|
@@ -13,7 +13,7 @@
|
|
13
13
|
<high <%= value_or_null_flavor(entry.end_time) %>/>
|
14
14
|
</effectiveTime>
|
15
15
|
|
16
|
-
<%== render(:partial => 'medication_details', :locals => {:entry => entry}) %>
|
16
|
+
<%== render(:partial => 'medication_details', :locals => {:entry => entry, :route_oids=>field_oids["ROUTE"]}) %>
|
17
17
|
|
18
18
|
|
19
19
|
<% if entry.product_form.present? -%>
|
@@ -33,6 +33,6 @@
|
|
33
33
|
</manufacturerOrganization>
|
34
34
|
</manufacturedProduct>
|
35
35
|
</consumable>
|
36
|
-
<%== render(:partial => 'reason', :locals => {:entry => entry}) %>
|
36
|
+
<%== render(:partial => 'reason', :locals => {:entry => entry, :reason_oids=>field_oids["REASON"]}) %>
|
37
37
|
</substanceAdministration>
|
38
38
|
</entry>
|
@@ -20,7 +20,7 @@
|
|
20
20
|
<low <%= value_or_null_flavor(entry.start_time) %>/>
|
21
21
|
<high <%= value_or_null_flavor(entry.end_time) %>/>
|
22
22
|
</effectiveTime>
|
23
|
-
<%== render(:partial => 'medication_details', :locals => {:entry => entry}) %>
|
23
|
+
<%== render(:partial => 'medication_details', :locals => {:entry => entry, :route_oids=>field_oids["ROUTE"]}) %>
|
24
24
|
<consumable>
|
25
25
|
<manufacturedProduct classCode="MANU">
|
26
26
|
<!-- Medication Information (consolidation) template -->
|
@@ -33,6 +33,6 @@
|
|
33
33
|
</consumable>
|
34
34
|
</substanceAdministration>
|
35
35
|
</entryRelationship>
|
36
|
-
<%== render(:partial => 'reason', :locals => {:entry => entry}) %>
|
36
|
+
<%== render(:partial => 'reason', :locals => {:entry => entry,:reason_oids=>field_oids["REASON"]}) %>
|
37
37
|
</act>
|
38
38
|
</entry>
|
@@ -11,7 +11,7 @@
|
|
11
11
|
<low <%= value_or_null_flavor(entry.start_time) %>/>
|
12
12
|
<high <%= value_or_null_flavor(entry.end_time) %>/>
|
13
13
|
</effectiveTime>
|
14
|
-
<%== render(:partial => 'medication_details', :locals => {:entry => entry}) %>
|
14
|
+
<%== render(:partial => 'medication_details', :locals => {:entry => entry, :route_oids=>field_oids["ROUTE"]}) %>
|
15
15
|
<consumable>
|
16
16
|
<manufacturedProduct classCode="MANU">
|
17
17
|
<!-- Medication Information (consolidation) template -->
|
@@ -22,6 +22,6 @@
|
|
22
22
|
</manufacturedMaterial>
|
23
23
|
</manufacturedProduct>
|
24
24
|
</consumable>
|
25
|
-
<%== render(:partial => 'reason', :locals => {:entry => entry}) %>
|
25
|
+
<%== render(:partial => 'reason', :locals => {:entry => entry, :reason_oids=>field_oids["REASON"]}) %>
|
26
26
|
</substanceAdministration>
|
27
27
|
</entry>
|
@@ -7,13 +7,12 @@
|
|
7
7
|
<templateId root="2.16.840.1.113883.10.20.24.3.57"/>
|
8
8
|
<id root="1.3.6.1.4.1.115" extension="<%= entry.id %>"/>
|
9
9
|
<%== code_display(entry, 'value_set_map' => value_set_map, 'preferred_code_sets' => ['LOINC', 'SNOMED-CT'], 'extra_content' => "sdtc:valueSet=\"#{value_set_oid}\"") %>
|
10
|
-
|
11
10
|
<statusCode code="completed"/>
|
12
11
|
|
13
12
|
<effectiveTime>
|
14
13
|
<low <%= value_or_null_flavor(entry.start_time) %>/>
|
15
14
|
<high <%= value_or_null_flavor(entry.end_time) %>/>
|
16
15
|
</effectiveTime>
|
17
|
-
<%== render(:partial => 'result_value', :locals => {:values => [entry.values.first]}) %>
|
16
|
+
<%== render(:partial => 'result_value', :locals => {:values => [entry.values.first], :result_oids=>result_oids}) %>
|
18
17
|
</observation>
|
19
18
|
</entry>
|
@@ -12,6 +12,6 @@
|
|
12
12
|
<low <%= value_or_null_flavor(entry.start_time) %>/>
|
13
13
|
<high <%= value_or_null_flavor(entry.end_time) %>/>
|
14
14
|
</effectiveTime>
|
15
|
-
<%== render(:partial => 'result_value', :locals => {:values => [entry.values.first]}) %>
|
15
|
+
<%== render(:partial => 'result_value', :locals => {:values => [entry.values.first], :result_oids=>result_oids}) %>
|
16
16
|
</observation>
|
17
17
|
</entry>
|
@@ -12,8 +12,8 @@
|
|
12
12
|
<low <%= value_or_null_flavor(entry.start_time) %>/>
|
13
13
|
<high <%= value_or_null_flavor(entry.end_time) %>/>
|
14
14
|
</effectiveTime>
|
15
|
-
<%== render(:partial => 'ordinality', :locals => {:entry => entry}) %>
|
16
|
-
<%== render(:partial => 'reason', :locals => {:entry => entry}) %>
|
15
|
+
<%== render(:partial => 'ordinality', :locals => {:entry => entry, :ordinality_oids=>field_oids["ORDINALITY"]}) %>
|
16
|
+
<%== render(:partial => 'reason', :locals => {:entry => entry, :reason_oids=>field_oids["REASON"]}) %>
|
17
17
|
<% if entry.respond_to?(:incision_time) && entry.incision_time.present? -%>
|
18
18
|
<entryRelationship typeCode="REFR">
|
19
19
|
<procedure classCode="PROC" moodCode="EVN">
|
@@ -27,7 +27,7 @@
|
|
27
27
|
<%== code_display(entry, 'value_set_map' => value_set_map, 'preferred_code_sets' => ['LOINC', 'SNOMED-CT', 'CPT'], 'extra_content' => "sdtc:valueSet=\"#{value_set_oid}\"") %>
|
28
28
|
<statusCode code="completed"/>
|
29
29
|
<effectiveTime <%= value_or_null_flavor(entry.start_time) %>/>
|
30
|
-
<%== render(:partial => 'result_value', :locals => {:values => entry.values}) %>
|
30
|
+
<%== render(:partial => 'result_value', :locals => {:values => entry.values, :result_oids=>result_oids} ) %>
|
31
31
|
</observation>
|
32
32
|
</entryRelationship>
|
33
33
|
</procedure>
|
@@ -14,15 +14,19 @@
|
|
14
14
|
</effectiveTime>
|
15
15
|
|
16
16
|
<% ev = entry.values.first
|
17
|
-
if ev.present?
|
18
|
-
if
|
17
|
+
if ev.present?
|
18
|
+
if ev.respond_to?(:scalar)
|
19
|
+
if is_num?(ev.scalar) -%>
|
19
20
|
<value xsi:type="INT" value="<%= ev.scalar %>"/>
|
20
|
-
|
21
|
-
|
22
|
-
|
21
|
+
<% else -%>
|
22
|
+
<value xsi:type="ST"><%= ev.scalar%></value>
|
23
|
+
<% end %>
|
24
|
+
<% else %>
|
25
|
+
<%== code_display(entry, 'tag_name'=>'value', 'value_set_map' => value_set_map,'preferred_code_sets' => ['LOINC', 'SNOMED-CT'],'extra_content' =>'xsi:type="CD"') %>
|
26
|
+
<% end %>
|
23
27
|
<% else -%>
|
24
28
|
<value xsi:type="CD" nullFlavor="UNK"/>
|
25
29
|
<% end -%>
|
26
|
-
<%== render(:partial => 'reason', :locals => {:entry => entry}) %>
|
30
|
+
<%== render(:partial => 'reason', :locals => {:entry => entry, :reason_oids=>field_oids["REASON"]}) %>
|
27
31
|
</observation>
|
28
32
|
</entry>
|
@@ -25,6 +25,6 @@
|
|
25
25
|
</playingDevice>
|
26
26
|
</participantRole>
|
27
27
|
</participant>
|
28
|
-
<%== render(:partial => 'reason', :locals => {:entry => entry}) %>
|
28
|
+
<%== render(:partial => 'reason', :locals => {:entry => entry, :reason_oids=>field_oids["REASON"]}) %>
|
29
29
|
</procedure>
|
30
30
|
</entry>
|
@@ -1,7 +1,13 @@
|
|
1
1
|
<% if entry.respond_to?(:route) && entry.route.present?
|
2
2
|
# hard coded to NCI Thesaurus for the code system since Cat I mandates that
|
3
|
+
vset = oid_for_code(entry.route,route_oids, entry.record["bundle_id"])
|
3
4
|
-%>
|
4
|
-
<routeCode code="<%= entry.route['code'] %>"
|
5
|
+
<routeCode code="<%= entry.route['code'] %>"
|
6
|
+
codeSystem="<%= HealthDataStandards::Util::CodeSystemHelper.oid_for_code_system(entry.route['code_system']) %>"
|
7
|
+
<% if vset -%>
|
8
|
+
sdtc:valueSet="<%= vset %>"
|
9
|
+
<% end -%>
|
10
|
+
/>
|
5
11
|
<% end -%>
|
6
12
|
|
7
13
|
<% if entry.respond_to?(:dose) && entry.dose.present? -%>
|
@@ -1,4 +1,10 @@
|
|
1
|
-
<% if entry.respond_to?(:ordinality) && entry.ordinality.present?
|
1
|
+
<% if entry.respond_to?(:ordinality) && entry.ordinality.present?
|
2
|
+
vset = oid_for_code(entry.ordinality,ordinality_oids || [], entry.record["bundle_id"])
|
3
|
+
-%>
|
2
4
|
<priorityCode code="<%= entry.ordinality['code'] %>"
|
3
|
-
codeSystem="<%= HealthDataStandards::Util::CodeSystemHelper.oid_for_code_system(entry.ordinality['codeSystem'] || entry.ordinality['code_system']) %>"
|
5
|
+
codeSystem="<%= HealthDataStandards::Util::CodeSystemHelper.oid_for_code_system(entry.ordinality['codeSystem'] || entry.ordinality['code_system']) %>"
|
6
|
+
<% if vset -%>
|
7
|
+
sdtc:valueSet="<%= vset %>"
|
8
|
+
<% end -%>
|
9
|
+
/>
|
4
10
|
<% end -%>
|
@@ -1,4 +1,6 @@
|
|
1
|
-
<% if entry.negation_reason.present?
|
1
|
+
<% if entry.negation_reason.present?
|
2
|
+
vset = oid_for_code(entry.negation_reason,reason_oids, entry.record["bundle_id"])
|
3
|
+
-%>
|
2
4
|
<entryRelationship typeCode="RSON">
|
3
5
|
<observation classCode="OBS" moodCode="EVN">
|
4
6
|
<templateId root="2.16.840.1.113883.10.20.24.3.88"/>
|
@@ -10,7 +12,11 @@
|
|
10
12
|
<effectiveTime <%= value_or_null_flavor(entry.start_time) %>/>
|
11
13
|
<value xsi:type="CD"
|
12
14
|
code="<%= entry.negation_reason['code'] %>"
|
13
|
-
codeSystem="<%= HealthDataStandards::Util::CodeSystemHelper.oid_for_code_system(entry.negation_reason['codeSystem'] || entry.negation_reason['code_system']) %>"
|
15
|
+
codeSystem="<%= HealthDataStandards::Util::CodeSystemHelper.oid_for_code_system(entry.negation_reason['codeSystem'] || entry.negation_reason['code_system']) %>"
|
16
|
+
<% if vset -%>
|
17
|
+
sdtc:valueSet="<%= vset %>"
|
18
|
+
<% end -%>
|
19
|
+
/>
|
14
20
|
</observation>
|
15
21
|
</entryRelationship>
|
16
22
|
<% end -%>
|
@@ -1,8 +1,17 @@
|
|
1
1
|
<% values.compact!
|
2
2
|
if !values.empty?
|
3
3
|
values.each do |ev|
|
4
|
-
if ev.respond_to?(:codes)
|
5
|
-
|
4
|
+
if ev.respond_to?(:codes)
|
5
|
+
extra_content = 'xsi:type="CD"'
|
6
|
+
if defined? result_oids
|
7
|
+
preferred_code = ev.preferred_code(['LOINC', 'SNOMED-CT', 'ICD-9-CM', 'ICD-10-CM'])
|
8
|
+
oid = oid_for_code(preferred_code,result_oids, ev.entry.record["bundle_id"])
|
9
|
+
if oid
|
10
|
+
extra_content += " sdtc:valueSet='#{oid}'"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
-%>
|
14
|
+
<%== code_display(ev, 'preferred_code_sets' => ['LOINC', 'SNOMED-CT', 'ICD-9-CM', 'ICD-10-CM'], 'tag_name' => 'value', 'extra_content' => extra_content) %>
|
6
15
|
<% elsif ev.respond_to?(:scalar) -%>
|
7
16
|
<% if is_num?(ev.scalar) -%>
|
8
17
|
<value xsi:type="PQ" value="<%= ev.scalar %>" <% if ev.units && (ev.units != "") -%>unit="<%= ev.units %>"<% end -%>/>
|
@@ -19,7 +19,7 @@
|
|
19
19
|
displayName="rate aggregation"
|
20
20
|
codeSystem="2.16.840.1.113883.5.4"
|
21
21
|
codeSystemName="ActCode"/>
|
22
|
-
<value xsi:type="INT" value="<%= aggregate_count.population_count(population_type, population_id) %>"/>
|
22
|
+
<value xsi:type="INT" value="<%= aggregate_count.population_count(population_type, population_id).round %>"/>
|
23
23
|
<methodCode code="COUNT"
|
24
24
|
displayName="Count"
|
25
25
|
codeSystem="2.16.840.1.113883.5.84"
|
@@ -48,7 +48,7 @@
|
|
48
48
|
displayName="rate aggregation"
|
49
49
|
codeSystem="2.16.840.1.113883.5.4"
|
50
50
|
codeSystemName="ActCode"/>
|
51
|
-
<value xsi:type="INT" value="<%= strat.population_count(population_type, population_id) %>"/>
|
51
|
+
<value xsi:type="INT" value="<%= strat.population_count(population_type, population_id).round %>"/>
|
52
52
|
<methodCode code="COUNT"
|
53
53
|
displayName="Count"
|
54
54
|
codeSystem="2.16.840.1.113883.5.84"
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<component>
|
2
|
+
<section>
|
3
|
+
<!-- This is the templateId for Reporting Parameters section -->
|
4
|
+
<templateId root="2.16.840.1.113883.10.20.17.2.1"/>
|
5
|
+
|
6
|
+
<!-- This is the templateId for the QRDA III Reporting Parameters Section -->
|
7
|
+
<templateId root="2.16.840.1.113883.10.20.27.2.2"/>
|
8
|
+
|
9
|
+
<code code="55187-9" codeSystem="2.16.840.1.113883.6.1"/>
|
10
|
+
<title>Reporting Parameters</title>
|
11
|
+
<text>
|
12
|
+
<list>
|
13
|
+
<item>Reporting period: <%= start_date.to_formatted_s(:long_ordinal) %> - <%= end_date.to_formatted_s(:long_ordinal) %></item>
|
14
|
+
</list>
|
15
|
+
</text>
|
16
|
+
<entry typeCode="DRIV">
|
17
|
+
<act classCode="ACT" moodCode="EVN">
|
18
|
+
<!-- This is the templateId for Reporting Parameteres Act -->
|
19
|
+
<templateId root="2.16.840.1.113883.10.20.17.3.8"/>
|
20
|
+
<code code="252116004" codeSystem="2.16.840.1.113883.6.96" displayName="Observation Parameters"/>
|
21
|
+
<effectiveTime>
|
22
|
+
<low value="<%= start_date.to_formatted_s(:number) %>"/>
|
23
|
+
<high value="<%= end_date.to_formatted_s(:number) %>"/>
|
24
|
+
</effectiveTime>
|
25
|
+
</act>
|
26
|
+
</entry>
|
27
|
+
</section>
|
28
|
+
</component>
|
@@ -25,7 +25,7 @@
|
|
25
25
|
displayName="rate aggregation"
|
26
26
|
codeSystem="2.16.840.1.113883.5.4"
|
27
27
|
codeSystemName="ActCode"/>
|
28
|
-
<value xsi:type="INT" value="<%= count %>"/>
|
28
|
+
<value xsi:type="INT" value="<%= count.round %>"/>
|
29
29
|
<methodCode code="COUNT"
|
30
30
|
displayName="Count"
|
31
31
|
codeSystem="2.16.840.1.113883.5.84"
|
@@ -94,7 +94,7 @@ CDA Body
|
|
94
94
|
QRDA Category III Reporting Parameters
|
95
95
|
********************************************************
|
96
96
|
-->
|
97
|
-
<%==
|
97
|
+
<%== render :partial => 'reporting_parameters', :locals => {:start_date => start_date, :end_date => end_date} %>
|
98
98
|
<!--
|
99
99
|
********************************************************
|
100
100
|
Measure Section
|
@@ -144,7 +144,9 @@ Measure Section
|
|
144
144
|
<% end -%>
|
145
145
|
<% result.top_level_populations.each do |pop|
|
146
146
|
unless pop.type == 'OBSERV' -%>
|
147
|
+
<component>
|
147
148
|
<%== render :partial => 'measure_data', :locals => {:aggregate_count => result, :population_type => pop.type, :population_id => pop.id} %>
|
149
|
+
</component>
|
148
150
|
<% end
|
149
151
|
end -%>
|
150
152
|
</organizer>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: health-data-standards
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2013-08-
|
16
|
+
date: 2013-08-23 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: rest-client
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
requirements:
|
55
55
|
- - ~>
|
56
56
|
- !ruby/object:Gem::Version
|
57
|
-
version: 3.1.
|
57
|
+
version: 3.1.4
|
58
58
|
type: :runtime
|
59
59
|
prerelease: false
|
60
60
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -62,7 +62,7 @@ dependencies:
|
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
64
64
|
- !ruby/object:Gem::Version
|
65
|
-
version: 3.1.
|
65
|
+
version: 3.1.4
|
66
66
|
- !ruby/object:Gem::Dependency
|
67
67
|
name: activesupport
|
68
68
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,7 +70,7 @@ dependencies:
|
|
70
70
|
requirements:
|
71
71
|
- - ~>
|
72
72
|
- !ruby/object:Gem::Version
|
73
|
-
version: 3.2.
|
73
|
+
version: 3.2.14
|
74
74
|
type: :runtime
|
75
75
|
prerelease: false
|
76
76
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -78,7 +78,7 @@ dependencies:
|
|
78
78
|
requirements:
|
79
79
|
- - ~>
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: 3.2.
|
81
|
+
version: 3.2.14
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: uuid
|
84
84
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,7 +86,7 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 2.3.
|
89
|
+
version: 2.3.7
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -94,7 +94,7 @@ dependencies:
|
|
94
94
|
requirements:
|
95
95
|
- - ~>
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: 2.3.
|
97
|
+
version: 2.3.7
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: builder
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -118,7 +118,7 @@ dependencies:
|
|
118
118
|
requirements:
|
119
119
|
- - ~>
|
120
120
|
- !ruby/object:Gem::Version
|
121
|
-
version: 1.
|
121
|
+
version: 1.6.0
|
122
122
|
type: :runtime
|
123
123
|
prerelease: false
|
124
124
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -126,7 +126,7 @@ dependencies:
|
|
126
126
|
requirements:
|
127
127
|
- - ~>
|
128
128
|
- !ruby/object:Gem::Version
|
129
|
-
version: 1.
|
129
|
+
version: 1.6.0
|
130
130
|
- !ruby/object:Gem::Dependency
|
131
131
|
name: rubyzip
|
132
132
|
requirement: !ruby/object:Gem::Requirement
|
@@ -166,7 +166,7 @@ dependencies:
|
|
166
166
|
requirements:
|
167
167
|
- - ~>
|
168
168
|
- !ruby/object:Gem::Version
|
169
|
-
version: 0.9.
|
169
|
+
version: 0.9.1
|
170
170
|
type: :runtime
|
171
171
|
prerelease: false
|
172
172
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -174,7 +174,7 @@ dependencies:
|
|
174
174
|
requirements:
|
175
175
|
- - ~>
|
176
176
|
- !ruby/object:Gem::Version
|
177
|
-
version: 0.9.
|
177
|
+
version: 0.9.1
|
178
178
|
description: A library for generating and consuming various healthcare related formats.
|
179
179
|
This includes HITSP C32, ASTM CCR and PQRI.
|
180
180
|
email: talk@projectpophealth.org
|
@@ -216,6 +216,7 @@ files:
|
|
216
216
|
- lib/health-data-standards/import/cat1/encounter_order_importer.rb
|
217
217
|
- lib/health-data-standards/import/cat1/entry_package.rb
|
218
218
|
- lib/health-data-standards/import/cat1/gestational_age_importer.rb
|
219
|
+
- lib/health-data-standards/import/cat1/insurance_provider_importer.rb
|
219
220
|
- lib/health-data-standards/import/cat1/lab_order_importer.rb
|
220
221
|
- lib/health-data-standards/import/cat1/lab_result_importer.rb
|
221
222
|
- lib/health-data-standards/import/cat1/medication_active_importer.rb
|
@@ -438,6 +439,7 @@ files:
|
|
438
439
|
- templates/cat3/_continuous_variable_value.cat3.erb
|
439
440
|
- templates/cat3/_measure_data.cat3.erb
|
440
441
|
- templates/cat3/_performance_rate.cat3.erb
|
442
|
+
- templates/cat3/_reporting_parameters.cat3.erb
|
441
443
|
- templates/cat3/_supplemental_data.cat3.erb
|
442
444
|
- templates/cat3/show.cat3.erb
|
443
445
|
- templates/ccda/_allergies.ccda.erb
|