cqm-reports 2.0.4 → 2.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/cqm_report.rb +1 -3
- data/lib/qrda-export/catI-r5/qrda_templates/allergy_intolerance.mustache +1 -6
- data/lib/qrda-export/catI-r5/qrda_templates/communication_performed.mustache +2 -2
- data/lib/qrda-export/catI-r5/qrda_templates/diagnosis.mustache +1 -6
- data/lib/qrda-export/catI-r5/qrda_templates/immunization_administered.mustache +1 -1
- data/lib/qrda-export/catI-r5/qrda_templates/symptom.mustache +1 -6
- data/lib/qrda-import/patient_importer.rb +27 -6
- metadata +4 -5
- data/lib/ext/code.rb +0 -11
- data/lib/ext/data_element.rb +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: dd0b9911f4358fceaa323afe6557281f181c2357
|
4
|
+
data.tar.gz: 2c2ba002d028ff2870fb7d6622231984611d0b9d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7980f689cd77ad9e2ba0869f89abdd1867a065108cbe8b9e534c7547de51fe3ded3169fc67e49826240bfe821e7bba779e0a1dc02a34955505e26afb6197e396
|
7
|
+
data.tar.gz: d37767e44596b127a5ea5197cb9c18dcdb36450661c23817ca84366e9a04ab7eebe4744d4e26e69682c76f4dd82bcd237667d46138cb4ec32f85a2b710b0df83
|
data/lib/cqm_report.rb
CHANGED
@@ -72,6 +72,4 @@ require_relative 'qrda-import/data-element-importers/substance_administered_impo
|
|
72
72
|
require_relative 'qrda-import/data-element-importers/substance_order_importer.rb'
|
73
73
|
require_relative 'qrda-import/data-element-importers/substance_recommended_importer.rb'
|
74
74
|
require_relative 'qrda-import/data-element-importers/symptom_importer.rb'
|
75
|
-
require_relative 'qrda-import/patient_importer.rb'
|
76
|
-
require_relative 'ext/data_element.rb'
|
77
|
-
require_relative 'ext/code.rb'
|
75
|
+
require_relative 'qrda-import/patient_importer.rb'
|
@@ -6,13 +6,8 @@
|
|
6
6
|
<templateId root="2.16.840.1.113883.10.20.24.3.147" extension="2017-08-01"/>
|
7
7
|
<id root="1.3.6.1.4.1.115" extension="{{object_id}}"/>
|
8
8
|
<code code="ASSERTION" codeSystem="2.16.840.1.113883.5.4"/>
|
9
|
-
{{#prevalencePeriod}}
|
10
|
-
{{#completed_prevalence_period}}
|
11
9
|
<statusCode code="completed" />
|
12
|
-
{{
|
13
|
-
{{^completed_prevalence_period}}
|
14
|
-
<statusCode code="active" />
|
15
|
-
{{/completed_prevalence_period}}
|
10
|
+
{{#prevalencePeriod}}
|
16
11
|
<!-- QDM Attribute: Prevalence Period -->
|
17
12
|
{{{prevalence_period}}}
|
18
13
|
{{/prevalencePeriod}}
|
@@ -8,7 +8,7 @@
|
|
8
8
|
{{/category}}
|
9
9
|
{{^category}}
|
10
10
|
<!-- QDM Attribute: Category -->
|
11
|
-
<code nullFlavor="
|
11
|
+
<code nullFlavor="NA"/>
|
12
12
|
{{/category}}
|
13
13
|
<statusCode code="completed"/>
|
14
14
|
{{#relevantPeriod}}
|
@@ -48,7 +48,7 @@
|
|
48
48
|
{{/negationRationale}}
|
49
49
|
<entryRelationship typeCode="REFR">
|
50
50
|
<observation classCode="OBS" moodCode="EVN">
|
51
|
-
<templateId root="2.16.840.1.113883.10.20.24.3.88" extension="
|
51
|
+
<templateId root="2.16.840.1.113883.10.20.24.3.88" extension="2017-08-01"/>
|
52
52
|
<id root="1.3.6.1.4.1.115" extension="{{object_id}}" />
|
53
53
|
<code code="77301-0" codeSystem="2.16.840.1.113883.6.1" displayName="reason" codeSystemName="LOINC"/>
|
54
54
|
<statusCode code="completed"/>
|
@@ -25,13 +25,8 @@
|
|
25
25
|
<code code="29308-4" codeSystem="2.16.840.1.113883.6.1">
|
26
26
|
<translation code="282291009" codeSystem="2.16.840.1.113883.6.96"/>
|
27
27
|
</code>
|
28
|
-
{{#prevalencePeriod}}
|
29
|
-
{{#completed_prevalence_period}}
|
30
28
|
<statusCode code="completed" />
|
31
|
-
{{
|
32
|
-
{{^completed_prevalence_period}}
|
33
|
-
<statusCode code="active" />
|
34
|
-
{{/completed_prevalence_period}}
|
29
|
+
{{#prevalencePeriod}}
|
35
30
|
<!-- QDM Attribute: Prevalence Period -->
|
36
31
|
{{{prevalence_period}}}
|
37
32
|
{{/prevalencePeriod}}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<entry>
|
2
2
|
<substanceAdministration classCode="SBADM" moodCode="EVN" {{{negation_ind}}}>
|
3
3
|
<!-- C-CDA R2 Immunization Activity -->
|
4
|
-
<templateId root="2.16.840.1.113883.10.20.22.4.52" extension="
|
4
|
+
<templateId root="2.16.840.1.113883.10.20.22.4.52" extension="2015-08-01"/>
|
5
5
|
<!-- Immunization Administered -->
|
6
6
|
<templateId root="2.16.840.1.113883.10.20.24.3.140" extension="2017-08-01"/>
|
7
7
|
<id root="1.3.6.1.4.1.115" extension="{{object_id}}"/>
|
@@ -25,13 +25,8 @@
|
|
25
25
|
<code code="75325-1" codeSystem="2.16.840.1.113883.6.1">
|
26
26
|
<translation code="418799008" displayName="Symptom" codeSystem="2.16.840.1.113883.6.96"/>
|
27
27
|
</code>
|
28
|
-
{{#prevalencePeriod}}
|
29
|
-
{{#completed_prevalence_period}}
|
30
28
|
<statusCode code="completed" />
|
31
|
-
{{
|
32
|
-
{{^completed_prevalence_period}}
|
33
|
-
<statusCode code="active" />
|
34
|
-
{{/completed_prevalence_period}}
|
29
|
+
{{#prevalencePeriod}}
|
35
30
|
<!-- QDM Attribute: Prevalence Period -->
|
36
31
|
{{{prevalence_period}}}
|
37
32
|
{{/prevalencePeriod}}
|
@@ -78,16 +78,30 @@ module QRDA
|
|
78
78
|
new_data_elements = []
|
79
79
|
|
80
80
|
id_map.each_value do |elem_ids|
|
81
|
-
|
82
81
|
elem_id = elem_ids.first
|
83
82
|
data_element = data_elements.find { |de| de.id == elem_id }
|
83
|
+
# Keep the first element with a shared ID
|
84
|
+
new_data_elements << data_element
|
84
85
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
86
|
+
# Encounters require elements beyond id for uniqueness
|
87
|
+
next unless data_element._type == 'QDM::EncounterPerformed'
|
88
|
+
unique_element_keys = []
|
89
|
+
# Add key_elements_for_determining_encounter_uniqueness to array, this is used to determine if other
|
90
|
+
# elements with the same ID should be considered as unique
|
91
|
+
unique_element_keys << key_elements_for_determining_encounter_uniqueness(data_element)
|
89
92
|
|
90
|
-
|
93
|
+
# Loop through all other data elements with the same id
|
94
|
+
elem_ids[1,elem_ids.length].each do |dup_id|
|
95
|
+
dup_element = data_elements.find { |de| de.id == dup_id }
|
96
|
+
dup_element_keys = key_elements_for_determining_encounter_uniqueness(dup_element)
|
97
|
+
# See if a previously selected data element shared all of the keys files
|
98
|
+
# If all key fields match, move on.
|
99
|
+
next if unique_element_keys.include?(dup_element_keys)
|
100
|
+
# If all key fields don't match, keep element
|
101
|
+
new_data_elements << dup_element
|
102
|
+
# Add to list of unique element keys
|
103
|
+
unique_element_keys << dup_element_keys
|
104
|
+
end
|
91
105
|
end
|
92
106
|
|
93
107
|
patient.qdmPatient.dataElements << new_data_elements
|
@@ -95,6 +109,13 @@ module QRDA
|
|
95
109
|
end
|
96
110
|
end
|
97
111
|
|
112
|
+
def key_elements_for_determining_encounter_uniqueness(encounter)
|
113
|
+
codes = encounter.codes.collect { |dec| "#{dec.code}_#{dec.codeSystemOid}" }.sort.to_s
|
114
|
+
admission_date_time = encounter.relevantPeriod.low.to_s
|
115
|
+
discharge_date_time = encounter.relevantPeriod.high.to_s
|
116
|
+
"#{codes}#{admission_date_time}#{discharge_date_time}"
|
117
|
+
end
|
118
|
+
|
98
119
|
def get_patient_expired(record, doc)
|
99
120
|
entry_elements = doc.xpath("/cda:ClinicalDocument/cda:component/cda:structuredBody/cda:component/cda:section[cda:templateId/@root = '2.16.840.1.113883.10.20.24.2.1']/cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.54']")
|
100
121
|
return unless entry_elements.empty?
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cqm-reports
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The MITRE Corporation
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cqm-models
|
@@ -147,8 +147,6 @@ files:
|
|
147
147
|
- README.md
|
148
148
|
- Rakefile
|
149
149
|
- lib/cqm_report.rb
|
150
|
-
- lib/ext/code.rb
|
151
|
-
- lib/ext/data_element.rb
|
152
150
|
- lib/html-export/qdm-patient/_header_css.mustache
|
153
151
|
- lib/html-export/qdm-patient/_javascript.mustache
|
154
152
|
- lib/html-export/qdm-patient/data_element/_data_element.mustache
|
@@ -338,7 +336,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
338
336
|
- !ruby/object:Gem::Version
|
339
337
|
version: '0'
|
340
338
|
requirements: []
|
341
|
-
|
339
|
+
rubyforge_project:
|
340
|
+
rubygems_version: 2.6.14
|
342
341
|
signing_key:
|
343
342
|
specification_version: 4
|
344
343
|
summary: A library for import and export of reports for use with electronic Clinical
|
data/lib/ext/code.rb
DELETED
data/lib/ext/data_element.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
module QDM
|
2
|
-
class DataElement
|
3
|
-
def merge!(other)
|
4
|
-
# ensure they're the same category (e.g. 'encounter')
|
5
|
-
return unless qdmCategory == other.qdmCategory
|
6
|
-
|
7
|
-
# ensure they're the same status (e.g. 'performed'), and that they both have a status set (or that they both don't)
|
8
|
-
return if respond_to?(:qdmStatus) && !other.respond_to?(:qdmStatus)
|
9
|
-
return if !respond_to?(:qdmStatus) && other.respond_to?(:qdmStatus)
|
10
|
-
return if respond_to?(:qdmStatus) && other.respond_to?(:qdmStatus) && qdmStatus != other.qdmStatus
|
11
|
-
|
12
|
-
# iterate over non-code fields
|
13
|
-
fields.each_key do |field|
|
14
|
-
next if field[0] == '_' || %w[dataElementCodes qdmCategory qdmVersion qdmStatus].include?(field)
|
15
|
-
|
16
|
-
if send(field).nil?
|
17
|
-
send(field + '=', other.send(field))
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
self.dataElementCodes = dataElementCodes.concat(other.dataElementCodes).uniq
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|