health-data-standards 3.5.2 → 3.5.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -0
- data/lib/health-data-standards/export/qrda/hqmf-qrda-oids.json +0 -6
- data/lib/health-data-standards/export/view_helper.rb +24 -1
- data/lib/health-data-standards/import/cat1/insurance_provider_importer.rb +1 -0
- data/lib/health-data-standards/import/cat1/patient_importer.rb +2 -1
- data/lib/health-data-standards/models/cqm/aggregate_objects.rb +3 -3
- data/lib/health-data-standards/models/cqm/query_cache.rb +1 -1
- data/lib/hqmf-parser.rb +0 -1
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.2.cat1.erb +5 -3
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.23.cat1.erb +1 -14
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.41.cat1.erb +11 -1
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.55.cat1.erb +8 -0
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.64.cat1.erb +1 -0
- data/templates/cat1/_measures.cat1.erb +2 -1
- data/templates/cat1/_medication_details.cat1.erb +1 -1
- data/templates/cat1/_medication_dispense.cat1.erb +22 -0
- data/templates/cat1/_reason.cat1.erb +1 -0
- data/templates/cat1/_reporting_parameters.cat1.erb +1 -0
- data/templates/cat3/_measure_data.cat3.erb +5 -5
- data/templates/cat3/_reporting_parameters.cat3.erb +2 -1
- data/templates/cat3/_supplemental_data.cat3.erb +7 -1
- data/templates/cat3/show.cat3.erb +2 -1
- data/templates/html/_entry.html.erb +2 -3
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f28260b9a20c4a5fa03677dbde72935d0779e1b7
|
4
|
+
data.tar.gz: 758234c177f32a11c9606258a38bf83387fe2fb9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 03f1f77b7b63a7ca367c477dda130c115b8df7ecc2128aab02265c405f0db8b96696b3d09a15cb4f1ae59862142e8268d7900abc2e150d4c71ff9932a4f0dc61
|
7
|
+
data.tar.gz: 79d88e0eecd99eddd931977ced5974969a2afee8ae74665721b0740013247183c86bbf75e376891d9427789f56d1a731e3c656631ae1bde4e16ea25095e65500
|
data/README.md
CHANGED
@@ -623,12 +623,6 @@
|
|
623
623
|
"qrda_name": "Risk Category Assessment",
|
624
624
|
"qrda_oid": "2.16.840.1.113883.10.20.24.3.69"
|
625
625
|
},
|
626
|
-
{
|
627
|
-
"hqmf_name": "Diagnostic Study, Result not done",
|
628
|
-
"hqmf_oid": "2.16.840.1.113883.3.560.1.111",
|
629
|
-
"qrda_name": "Diagnostic Study Result",
|
630
|
-
"qrda_oid": "2.16.840.1.113883.10.20.24.3.20"
|
631
|
-
},
|
632
626
|
{
|
633
627
|
"hqmf_name": "Communication: From Provider to Patient not done",
|
634
628
|
"hqmf_oid": "2.16.840.1.113883.3.560.1.131",
|
@@ -40,6 +40,14 @@ module HealthDataStandards
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
+
def fulfillment_quantity(codes, fulfillmentHistory, dose)
|
44
|
+
if (codes["RxNorm"].present?)
|
45
|
+
doses = (fulfillmentHistory.quantity_dispensed['value'].to_f / dose['value'].to_f ).to_i
|
46
|
+
return "value='#{doses}'"
|
47
|
+
else
|
48
|
+
return "value='#{fulfillmentHistory.quantity_dispensed['value']}' unit='#{fulfillmentHistory.quantity_dispensed['unit']}'"
|
49
|
+
end
|
50
|
+
end
|
43
51
|
|
44
52
|
def value_or_null_flavor(time)
|
45
53
|
if time
|
@@ -49,6 +57,14 @@ module HealthDataStandards
|
|
49
57
|
end
|
50
58
|
end
|
51
59
|
|
60
|
+
def dose_quantity(codes, dose)
|
61
|
+
if (codes["RxNorm"].present?)
|
62
|
+
return "value='1'"
|
63
|
+
else
|
64
|
+
return "value=#{dose['value']} unit=#{dose['unit']}"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
52
68
|
def time_if_not_nil(*args)
|
53
69
|
args.compact.map {|t| Time.at(t).utc}.first
|
54
70
|
end
|
@@ -64,9 +80,16 @@ module HealthDataStandards
|
|
64
80
|
def is_bool?(str)
|
65
81
|
return ["true","false"].include? (str || "").downcase
|
66
82
|
end
|
83
|
+
|
84
|
+
def identifier_for(obj)
|
85
|
+
Digest::MD5.hexdigest(obj.to_s).upcase
|
86
|
+
end
|
67
87
|
|
68
88
|
def convert_field_to_hash(field, codes)
|
69
|
-
|
89
|
+
if codes.is_a? Array
|
90
|
+
return codes.collect{ |code| convert_field_to_hash(field, convert_field_to_hash(field, code))}.join("<br>")
|
91
|
+
end
|
92
|
+
|
70
93
|
if (codes.is_a? Hash)
|
71
94
|
clean_hash = {}
|
72
95
|
|
@@ -42,6 +42,7 @@ module HealthDataStandards
|
|
42
42
|
generate_importer(CDA::ProcedureImporter, "./cda:entry/cda:procedure[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.66']", '2.16.840.1.113883.3.560.1.63'),
|
43
43
|
generate_importer(CDA::ProcedureImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.69']", '2.16.840.1.113883.3.560.1.21'), #risk category assessment
|
44
44
|
generate_importer(CDA::ProcedureImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.18']", '2.16.840.1.113883.3.560.1.103', 'performed'), #diagnostic study performed
|
45
|
+
generate_importer(CDA::ProcedureImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.20']", '2.16.840.1.113883.3.560.1.11'), #diagnostic study result
|
45
46
|
generate_importer(DiagnosticStudyOrderImporter, nil, '2.16.840.1.113883.3.560.1.40', 'ordered')]
|
46
47
|
|
47
48
|
@section_importers[:allergies] = [generate_importer(ProcedureIntoleranceImporter, nil, '2.16.840.1.113883.3.560.1.61'),
|
@@ -56,7 +57,6 @@ module HealthDataStandards
|
|
56
57
|
generate_importer(CDA::ResultImporter, "./cda:entry/cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.34']", '2.16.840.1.113883.3.560.1.47'), #intervention result
|
57
58
|
generate_importer(CDA::ResultImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.57']", '2.16.840.1.113883.3.560.1.18'), #physical exam finding
|
58
59
|
generate_importer(CDA::ResultImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.28']", '2.16.840.1.113883.3.560.1.88'), #functional status result
|
59
|
-
generate_importer(CDA::ResultImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.20']", '2.16.840.1.113883.3.560.1.111'), #diagnostic study result not done
|
60
60
|
generate_importer(LabResultImporter, nil, '2.16.840.1.113883.3.560.1.12')] #lab result
|
61
61
|
|
62
62
|
@section_importers[:encounters] = [generate_importer(EncounterPerformedImporter, "./cda:encounter[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.23']", '2.16.840.1.113883.3.560.1.79', 'performed'), #encounter performed
|
@@ -85,6 +85,7 @@ module HealthDataStandards
|
|
85
85
|
nrh.build_id_map(doc)
|
86
86
|
@section_importers.each do |section, entry_packages|
|
87
87
|
entry_packages.each do |entry_package|
|
88
|
+
# binding.pry if section == :results
|
88
89
|
record.send(section) << entry_package.package_entries(context, nrh)
|
89
90
|
end
|
90
91
|
end
|
@@ -101,15 +101,15 @@ module HealthDataStandards
|
|
101
101
|
entry_populations = []
|
102
102
|
cache_entry.population_ids.each do |population_type, population_id|
|
103
103
|
population = populations.find{|pop| pop.id == population_id}
|
104
|
-
if population.nil? && population_type != 'stratification'
|
104
|
+
if population.nil? && population_type != 'stratification' && population_type != 'STRAT'
|
105
105
|
population = Population.new
|
106
106
|
population.type = population_type
|
107
107
|
population.id = population_id
|
108
108
|
populations << population
|
109
109
|
end
|
110
|
-
unless population_type == 'stratification'
|
110
|
+
unless population_type == 'stratification' || population_type == 'STRAT'
|
111
111
|
if cache_entry.is_stratification?
|
112
|
-
strat_id = cache_entry.population_ids['
|
112
|
+
strat_id = cache_entry.population_ids['STRAT']
|
113
113
|
population.add_stratification(strat_id,cache_entry[population_type])
|
114
114
|
else
|
115
115
|
population.value = cache_entry[population_type]
|
data/lib/hqmf-parser.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
<entry>
|
2
|
-
<act classCode="ACT" moodCode="EVN"
|
2
|
+
<act classCode="ACT" moodCode="EVN" <%== negation_indicator(entry) %>>
|
3
3
|
<!-- Communication from patient to provider -->
|
4
4
|
<templateId root="2.16.840.1.113883.10.20.24.3.2"/>
|
5
5
|
<id root="1.3.6.1.4.1.115" extension="<%= entry.id %>"/>
|
6
|
-
<%== code_display(entry, 'value_set_map' => value_set_map, 'extra_content' => "sdtc:valueSet=\"#{value_set_oid}\"") %>
|
6
|
+
<%== code_display(entry, 'value_set_map' => value_set_map, 'preferred_code_sets' => ['SNOMED-CT'], 'extra_content' => "sdtc:valueSet=\"#{value_set_oid}\"") %>
|
7
7
|
<text><%= entry.description %></text>
|
8
8
|
<statusCode code="completed"/>
|
9
9
|
<effectiveTime>
|
10
10
|
<low <%= value_or_null_flavor(entry.start_time) %>/>
|
11
11
|
<high <%= value_or_null_flavor(entry.end_time) %>/>
|
12
12
|
</effectiveTime>
|
13
|
-
|
13
|
+
|
14
14
|
<participant typeCode="AUT">
|
15
15
|
<participantRole classCode="PAT">
|
16
16
|
<code code="116154003" codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT" displayName="Patient"/>
|
@@ -23,5 +23,7 @@
|
|
23
23
|
</participantRole>
|
24
24
|
</participant>
|
25
25
|
|
26
|
+
<%== render(:partial => 'reason', :locals => {:entry => entry, :reason_oids=>field_oids["REASON"]}) %>
|
27
|
+
|
26
28
|
</act>
|
27
29
|
</entry>
|
@@ -75,20 +75,7 @@
|
|
75
75
|
<% end -%>
|
76
76
|
|
77
77
|
<% if entry.reason.present? -%>
|
78
|
-
|
79
|
-
<observation classCode="OBS" moodCode="EVN">
|
80
|
-
<templateId root="2.16.840.1.113883.10.20.24.3.88"/>
|
81
|
-
<code code="410666004"
|
82
|
-
codeSystem="2.16.840.1.113883.6.96"
|
83
|
-
displayName="reason"
|
84
|
-
codeSystemName="SNOMED CT"/>
|
85
|
-
<statusCode code="completed"/>
|
86
|
-
<effectiveTime <%= value_or_null_flavor(entry.start_time) %>/>
|
87
|
-
<value xsi:type="CD"
|
88
|
-
code="<%= entry.reason['code'] %>"
|
89
|
-
codeSystem="<%= HealthDataStandards::Util::CodeSystemHelper.oid_for_code_system(entry.reason['codeSystem'] || entry.reason['code_system']) %>"/>
|
90
|
-
</observation>
|
91
|
-
</entryRelationship>
|
78
|
+
<%= render partial: "reason", locals: {entry: entry} %>
|
92
79
|
<% end -%>
|
93
80
|
</encounter>
|
94
81
|
</entry>
|
@@ -12,10 +12,16 @@
|
|
12
12
|
<low <%= value_or_null_flavor(entry.start_time) %>/>
|
13
13
|
<high <%= value_or_null_flavor(entry.end_time) %>/>
|
14
14
|
</effectiveTime>
|
15
|
+
|
16
|
+
<% if entry.administrationTiming.present?
|
17
|
+
period = entry.administrationTiming['period'] %>
|
18
|
+
<effectiveTime xsi:type="PIVL_TS" institutionSpecified="true" operator="A">
|
19
|
+
<period value="<%= period['value']%>" unit="<%= period['unit']%>"/>
|
20
|
+
</effectiveTime>
|
21
|
+
<% end %>
|
15
22
|
|
16
23
|
<%== render(:partial => 'medication_details', :locals => {:entry => entry, :route_oids=>field_oids["ROUTE"]}) %>
|
17
24
|
|
18
|
-
|
19
25
|
<% if entry.product_form.present? -%>
|
20
26
|
<administrationUnitCode code="<%= entry.product_form['code'] %>" codeSystem="<%= entry.product_form['codeSystem'] %>"/>
|
21
27
|
<% end -%>
|
@@ -34,5 +40,9 @@
|
|
34
40
|
</manufacturedProduct>
|
35
41
|
</consumable>
|
36
42
|
<%== render(:partial => 'reason', :locals => {:entry => entry, :reason_oids=>field_oids["REASON"]}) %>
|
43
|
+
|
44
|
+
<%== render(:partial => 'medication_dispense', :collection => entry.fulfillmentHistory, :locals => {:entry => entry, :value_set_map => value_set_map, :value_set_oid => value_set_oid}) %>
|
45
|
+
|
37
46
|
</substanceAdministration>
|
47
|
+
|
38
48
|
</entry>
|
@@ -5,6 +5,14 @@
|
|
5
5
|
<id root="1.3.6.1.4.1.115" extension="<%= entry.id %>"/>
|
6
6
|
<code code="48768-6" codeSystemName="LOINC" codeSystem="2.16.840.1.113883.6.1" displayName="Payment source"/>
|
7
7
|
<statusCode code="completed"/>
|
8
|
+
<effectiveTime>
|
9
|
+
<!-- Attribute: Start Datetime -->
|
10
|
+
<low <%= value_or_null_flavor(entry.start_time) %>/>
|
11
|
+
<% if entry.end_time %>
|
12
|
+
<high value="<%= time_if_not_nil(entry.end_time) %>" />
|
13
|
+
<% end %>
|
14
|
+
</effectiveTime>
|
8
15
|
<%== code_display(entry, 'preferred_code_sets' =>["SOP","Source of Payment Typology"] , 'tag_name' => 'value', 'extra_content' => "xsi:type=\"CD\" sdtc:valueSet=\"2.16.840.1.114222.4.11.3591\"") %>
|
16
|
+
|
9
17
|
</observation>
|
10
18
|
</entry>
|
@@ -18,6 +18,7 @@
|
|
18
18
|
<entryRelationship typeCode="REFR">
|
19
19
|
<procedure classCode="PROC" moodCode="EVN">
|
20
20
|
<templateId root="2.16.840.1.113883.10.20.24.3.89"/>
|
21
|
+
<id extension="<%= identifier_for([entry.id, entry.incision_time]) %>" />
|
21
22
|
<code code="34896006"
|
22
23
|
codeSystem="2.16.840.1.113883.6.96"
|
23
24
|
codeSystemName="SNOMED CT"
|
@@ -43,12 +43,13 @@
|
|
43
43
|
<templateId root="2.16.840.1.113883.10.20.24.3.98"/>
|
44
44
|
<!-- This is the templateId for eMeasure Reference QDM -->
|
45
45
|
<templateId root="2.16.840.1.113883.10.20.24.3.97"/>
|
46
|
+
<id extension="<%= measure['id'] %>"/>
|
46
47
|
<statusCode code="completed"/>
|
47
48
|
<!-- Containing isBranch external references -->
|
48
49
|
<reference typeCode="REFR">
|
49
50
|
<externalDocument classCode="DOC" moodCode="EVN">
|
50
51
|
<!-- SHALL: This is the version specific identifier for eMeasure: QualityMeasureDocument/id it is a GUID-->
|
51
|
-
<id root="<%= measure.hqmf_id %>"/>
|
52
|
+
<id root="2.16.840.1.113883.4.738" extension="<%= measure.hqmf_id %>"/>
|
52
53
|
<!-- SHOULD This is the title of the eMeasure -->
|
53
54
|
<text><%= measure.title %></text>
|
54
55
|
<!-- SHOULD: setId is the eMeasure version neutral id -->
|
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
<entryRelationship typeCode="REFR">
|
3
|
+
<supply classCode="SPLY" moodCode="EVN">
|
4
|
+
<!-- Medication Dispense template -->
|
5
|
+
<templateId root="2.16.840.1.113883.10.20.22.4.18"/>
|
6
|
+
<id root="1.3.6.1.4.1.115" extension="<%= UUID.generate %>"/>
|
7
|
+
<statusCode code="completed"/>
|
8
|
+
<effectiveTime <%= value_or_null_flavor(medication_dispense.dispense_date) %>/>
|
9
|
+
<repeatNumber value="1"/>
|
10
|
+
<quantity <%= fulfillment_quantity(entry.codes, medication_dispense, entry.dose) %>/>
|
11
|
+
<product>
|
12
|
+
<manufacturedProduct classCode="MANU">
|
13
|
+
<!-- Medication Information (consolidation) template -->
|
14
|
+
<templateId root="2.16.840.1.113883.10.20.22.4.23"/>
|
15
|
+
<id root="<%= UUID.generate %>"/>
|
16
|
+
<manufacturedMaterial>
|
17
|
+
<%== code_display(entry, 'preferred_code_sets' =>["RxNorm"], 'value_set_map' => value_set_map, 'extra_content' => "sdtc:valueSet=\"#{value_set_oid}\"") %>
|
18
|
+
</manufacturedMaterial>
|
19
|
+
</manufacturedProduct>
|
20
|
+
</product>
|
21
|
+
</supply>
|
22
|
+
</entryRelationship>
|
@@ -4,6 +4,7 @@
|
|
4
4
|
<entryRelationship typeCode="RSON">
|
5
5
|
<observation classCode="OBS" moodCode="EVN">
|
6
6
|
<templateId root="2.16.840.1.113883.10.20.24.3.88"/>
|
7
|
+
<id extension="<%= identifier_for([entry.negation_reason, entry.start_time]) %>" />
|
7
8
|
<code code="410666004"
|
8
9
|
codeSystem="2.16.840.1.113883.6.96"
|
9
10
|
displayName="reason"
|
@@ -13,6 +13,7 @@
|
|
13
13
|
<act classCode="ACT" moodCode="EVN">
|
14
14
|
<!-- This is the templateId for Reporting Parameteres Act -->
|
15
15
|
<templateId root="2.16.840.1.113883.10.20.17.3.8"/>
|
16
|
+
<id extension="<%= identifier_for([start_date, end_date]) %>" />
|
16
17
|
<code code="252116004" codeSystem="2.16.840.1.113883.6.96" displayName="Observation Parameters"/>
|
17
18
|
<effectiveTime>
|
18
19
|
<low value="<%= start_date.to_formatted_s(:number) %>"/>
|
@@ -82,7 +82,7 @@
|
|
82
82
|
<!-- SEX Supplemental Data Reporting for <%= population.type %> <%= population.id %> -->
|
83
83
|
|
84
84
|
<%== render :partial => 'supplemental_data', :locals => {:template_name => 'Sex Supplemental Data',
|
85
|
-
:
|
85
|
+
:template_ids => ['2.16.840.1.113883.10.20.27.3.6'], :supplemental_data_code => '184100006',
|
86
86
|
:supplemental_data_code_system => '2.16.840.1.113883.6.96', :supplemental_data_value_code => sex,
|
87
87
|
:supplemental_data_value_code_system => '2.16.840.1.113883.5.1', :count => count} %>
|
88
88
|
<% end -%>
|
@@ -94,7 +94,7 @@
|
|
94
94
|
<!-- ETHNICITY Supplemental Data Reporting for <%= population.type %> <%= population.id %> -->
|
95
95
|
|
96
96
|
<%== render :partial => 'supplemental_data', :locals => {:template_name => 'Ethnicity Supplemental Data',
|
97
|
-
:
|
97
|
+
:template_ids => ['2.16.840.1.113883.10.20.27.3.7'], :supplemental_data_code => '364699009',
|
98
98
|
:supplemental_data_code_system => '2.16.840.1.113883.6.96', :supplemental_data_value_code => ethnicity,
|
99
99
|
:supplemental_data_value_code_system => '2.16.840.1.113883.6.238', :count => count} %>
|
100
100
|
<% end -%>
|
@@ -106,7 +106,7 @@
|
|
106
106
|
<!-- RACE Supplemental Data Reporting for <%= population.type %> <%= population.id %> -->
|
107
107
|
|
108
108
|
<%== render :partial => 'supplemental_data', :locals => {:template_name => 'Race Supplemental Data',
|
109
|
-
:
|
109
|
+
:template_ids => ['2.16.840.1.113883.10.20.27.3.8'], :supplemental_data_code => '103579009',
|
110
110
|
:supplemental_data_code_system => '2.16.840.1.113883.6.96', :supplemental_data_value_code => race,
|
111
111
|
:supplemental_data_value_code_system => '2.16.840.1.113883.6.238', :count => count} %>
|
112
112
|
<% end -%>
|
@@ -116,8 +116,8 @@
|
|
116
116
|
payer_supplimental_data.each do |payer, count| -%>
|
117
117
|
|
118
118
|
<!-- PAYER Supplemental Data Reporting for<%= population.type %> <%= population.id %> -->
|
119
|
-
|
120
|
-
:
|
119
|
+
<%== render :partial => 'supplemental_data', :locals => {:template_name => 'Payer Supplemental Data',
|
120
|
+
:template_ids => ['2.16.840.1.113883.10.20.27.3.9', '2.16.840.1.113883.10.20.24.3.55'], :supplemental_data_code => '48768-6',
|
121
121
|
:supplemental_data_code_system => '2.16.840.1.113883.6.1', :supplemental_data_value_code => payer,
|
122
122
|
:supplemental_data_value_code_system => '2.16.840.1.113883.3.221.5', :count => count} %>
|
123
123
|
<% end -%>
|
@@ -15,8 +15,9 @@
|
|
15
15
|
</text>
|
16
16
|
<entry typeCode="DRIV">
|
17
17
|
<act classCode="ACT" moodCode="EVN">
|
18
|
-
<!-- This is the templateId for Reporting
|
18
|
+
<!-- This is the templateId for Reporting Parameters Act -->
|
19
19
|
<templateId root="2.16.840.1.113883.10.20.17.3.8"/>
|
20
|
+
<id extension="<%= identifier_for([start_date, end_date]) %>" />
|
20
21
|
<code code="252116004" codeSystem="2.16.840.1.113883.6.96" displayName="Observation Parameters"/>
|
21
22
|
<effectiveTime>
|
22
23
|
<low value="<%= start_date.to_formatted_s(:number) %>"/>
|
@@ -3,11 +3,17 @@
|
|
3
3
|
<entryRelationship typeCode="COMP">
|
4
4
|
<observation classCode="OBS" moodCode="EVN">
|
5
5
|
<!-- <%= template_name %> -->
|
6
|
-
|
6
|
+
<% template_ids.each do |tid| %>
|
7
|
+
<templateId root="<%= tid %>"/>
|
8
|
+
<% end %>
|
7
9
|
<id nullFlavor="NA" />
|
8
10
|
<code code="<%= supplemental_data_code %>"
|
9
11
|
codeSystem="<%= supplemental_data_code_system %>"/>
|
10
12
|
<statusCode code="completed"/>
|
13
|
+
<effectiveTime>
|
14
|
+
<low nullFlavor="NA"/>
|
15
|
+
<high nullFlavor="NA"/>
|
16
|
+
</effectiveTime>
|
11
17
|
<% if supplemental_data_value_code == "" || supplemental_data_value_code == "UNK" -%>
|
12
18
|
<value xsi:type="CD"
|
13
19
|
nullFlavor="UNK" />
|
@@ -107,12 +107,13 @@ Measure Section
|
|
107
107
|
<templateId root="2.16.840.1.113883.10.20.24.3.98"/>
|
108
108
|
<!-- SHALL 1..* (one for each referenced measure) Measure Reference and Results template -->
|
109
109
|
<templateId root="2.16.840.1.113883.10.20.27.3.1"/>
|
110
|
+
<id extension="<%= measure['id'] || UUID.generate %>"/>
|
110
111
|
<statusCode code="completed"/>
|
111
112
|
<reference typeCode="REFR">
|
112
113
|
<externalDocument classCode="DOC" moodCode="EVN">
|
113
114
|
<!-- SHALL: required Id but not restricted to the eMeasure Document/Id-->
|
114
115
|
<!-- QualityMeasureDocument/id This is the version specific identifier for eMeasure -->
|
115
|
-
<id root="<%= measure['hqmf_id'] %>"/>
|
116
|
+
<id root="2.16.840.1.113883.4.738" extension="<%= measure['hqmf_id'] %>"/>
|
116
117
|
|
117
118
|
<!-- SHOULD This is the title of the eMeasure -->
|
118
119
|
<text><%= measure['name'] %></text>
|
@@ -44,17 +44,16 @@
|
|
44
44
|
<%
|
45
45
|
(entry.attributes.keys.reject {|key| ['codes', 'time', 'description', 'mood_code', 'values', '_id', '_type', 'start_time', 'end_time', 'status_code', 'negationInd', 'oid'].include? key}).sort.each do |field|
|
46
46
|
field_value = convert_field_to_hash(field, entry.attributes[field])
|
47
|
-
|
48
47
|
%>
|
49
48
|
<% if field_value && !field_value.empty? %>
|
50
49
|
<dl>
|
51
50
|
<% if field_value.is_a? Hash %>
|
52
51
|
<dt><b><%= field.titleize %>:</b></dt>
|
53
52
|
<% field_value.keys.sort.reverse.each do |fieldkey| %>
|
54
|
-
|
53
|
+
<dd><%= fieldkey %>: <i><%== field_value[fieldkey] %></i></dd>
|
55
54
|
<% end %>
|
56
55
|
<% else %>
|
57
|
-
<dt><b><%= field.titleize %></b>:
|
56
|
+
<dt><b><%= field.titleize %></b>: <%== field_value%></dt>
|
58
57
|
<% end %>
|
59
58
|
<dl>
|
60
59
|
<% end %>
|
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.5.
|
4
|
+
version: 3.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Gregorowicz
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2015-01-21 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rest-client
|
@@ -489,6 +489,7 @@ files:
|
|
489
489
|
- templates/cat1/_id.cat1.erb
|
490
490
|
- templates/cat1/_measures.cat1.erb
|
491
491
|
- templates/cat1/_medication_details.cat1.erb
|
492
|
+
- templates/cat1/_medication_dispense.cat1.erb
|
492
493
|
- templates/cat1/_ordinality.cat1.erb
|
493
494
|
- templates/cat1/_organization.cat1.erb
|
494
495
|
- templates/cat1/_patient_data.cat1.erb
|
@@ -580,7 +581,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
580
581
|
version: '0'
|
581
582
|
requirements: []
|
582
583
|
rubyforge_project:
|
583
|
-
rubygems_version: 2.
|
584
|
+
rubygems_version: 2.4.3
|
584
585
|
signing_key:
|
585
586
|
specification_version: 4
|
586
587
|
summary: A library for generating and consuming various healthcare related formats.
|