cqm-reports 3.0.0.pre.alpha.2 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +2 -1
  3. data/README.md +26 -0
  4. data/lib/cqm-reports.rb +3 -2
  5. data/lib/html-export/qdm-patient/data_element/_data_element_other_fields.mustache +129 -5
  6. data/lib/html-export/qdm-patient/data_element/_data_element_times.mustache +36 -1
  7. data/lib/html-export/qdm-patient/qdm_patient.rb +39 -5
  8. data/lib/qrda-export/catI-r5/_header.mustache +2 -2
  9. data/lib/qrda-export/catI-r5/qrda1_r5.mustache +10 -2
  10. data/lib/qrda-export/catI-r5/qrda1_r5.rb +33 -2
  11. data/lib/qrda-export/catI-r5/qrda_header/_record_target.mustache +24 -9
  12. data/lib/qrda-export/catI-r5/qrda_templates/adverse_event.mustache +8 -2
  13. data/lib/qrda-export/catI-r5/qrda_templates/allergy_intolerance.mustache +8 -8
  14. data/lib/qrda-export/catI-r5/qrda_templates/assessment_order.mustache +7 -1
  15. data/lib/qrda-export/catI-r5/qrda_templates/assessment_performed.mustache +17 -1
  16. data/lib/qrda-export/catI-r5/qrda_templates/assessment_recommended.mustache +7 -1
  17. data/lib/qrda-export/catI-r5/qrda_templates/communication_performed.mustache +12 -13
  18. data/lib/qrda-export/catI-r5/qrda_templates/device_applied.mustache +17 -5
  19. data/lib/qrda-export/catI-r5/qrda_templates/device_order.mustache +8 -2
  20. data/lib/qrda-export/catI-r5/qrda_templates/device_recommended.mustache +8 -2
  21. data/lib/qrda-export/catI-r5/qrda_templates/diagnosis.mustache +9 -9
  22. data/lib/qrda-export/catI-r5/qrda_templates/diagnostic_study_order.mustache +7 -1
  23. data/lib/qrda-export/catI-r5/qrda_templates/diagnostic_study_performed.mustache +17 -5
  24. data/lib/qrda-export/catI-r5/qrda_templates/diagnostic_study_recommended.mustache +7 -1
  25. data/lib/qrda-export/catI-r5/qrda_templates/encounter_order.mustache +11 -2
  26. data/lib/qrda-export/catI-r5/qrda_templates/encounter_performed.mustache +9 -3
  27. data/lib/qrda-export/catI-r5/qrda_templates/encounter_recommended.mustache +8 -2
  28. data/lib/qrda-export/catI-r5/qrda_templates/family_history.mustache +8 -2
  29. data/lib/qrda-export/catI-r5/qrda_templates/immunization_administered.mustache +22 -7
  30. data/lib/qrda-export/catI-r5/qrda_templates/immunization_order.mustache +8 -2
  31. data/lib/qrda-export/catI-r5/qrda_templates/intervention_order.mustache +7 -1
  32. data/lib/qrda-export/catI-r5/qrda_templates/intervention_performed.mustache +17 -5
  33. data/lib/qrda-export/catI-r5/qrda_templates/intervention_recommended.mustache +7 -1
  34. data/lib/qrda-export/catI-r5/qrda_templates/laboratory_test_order.mustache +7 -1
  35. data/lib/qrda-export/catI-r5/qrda_templates/laboratory_test_performed.mustache +17 -5
  36. data/lib/qrda-export/catI-r5/qrda_templates/laboratory_test_recommended.mustache +7 -1
  37. data/lib/qrda-export/catI-r5/qrda_templates/medication_active.mustache +17 -7
  38. data/lib/qrda-export/catI-r5/qrda_templates/medication_administered.mustache +17 -5
  39. data/lib/qrda-export/catI-r5/qrda_templates/medication_discharge.mustache +14 -2
  40. data/lib/qrda-export/catI-r5/qrda_templates/medication_dispensed.mustache +27 -16
  41. data/lib/qrda-export/catI-r5/qrda_templates/medication_order.mustache +7 -1
  42. data/lib/qrda-export/catI-r5/qrda_templates/patient_care_experience.mustache +7 -1
  43. data/lib/qrda-export/catI-r5/qrda_templates/physical_exam_order.mustache +7 -1
  44. data/lib/qrda-export/catI-r5/qrda_templates/physical_exam_performed.mustache +17 -5
  45. data/lib/qrda-export/catI-r5/qrda_templates/physical_exam_recommended.mustache +7 -1
  46. data/lib/qrda-export/catI-r5/qrda_templates/procedure_order.mustache +11 -1
  47. data/lib/qrda-export/catI-r5/qrda_templates/procedure_performed.mustache +21 -5
  48. data/lib/qrda-export/catI-r5/qrda_templates/procedure_recommended.mustache +11 -1
  49. data/lib/qrda-export/catI-r5/qrda_templates/program_participation.mustache +21 -0
  50. data/lib/qrda-export/catI-r5/qrda_templates/provider_care_experience.mustache +7 -1
  51. data/lib/qrda-export/catI-r5/qrda_templates/related_person.mustache +18 -0
  52. data/lib/qrda-export/catI-r5/qrda_templates/substance_recommended.mustache +7 -1
  53. data/lib/qrda-export/catI-r5/qrda_templates/symptom.mustache +10 -8
  54. data/lib/qrda-export/catI-r5/qrda_templates/template_partials/_author.mustache +1 -1
  55. data/lib/qrda-export/catI-r5/qrda_templates/template_partials/_encounter_diagnosis_qdm.mustache +24 -0
  56. data/lib/qrda-export/catI-r5/qrda_templates/template_partials/_entity.mustache +12 -0
  57. data/lib/qrda-export/catI-r5/qrda_templates/template_partials/_entity_care_partner.mustache +11 -0
  58. data/lib/qrda-export/catI-r5/qrda_templates/template_partials/_entity_organization.mustache +11 -0
  59. data/lib/qrda-export/catI-r5/qrda_templates/template_partials/_entity_patient.mustache +6 -0
  60. data/lib/qrda-export/catI-r5/qrda_templates/template_partials/_entity_practitioner.mustache +19 -0
  61. data/lib/qrda-export/catI-r5/qrda_templates/template_partials/_immunization_supply_request.mustache +29 -0
  62. data/lib/qrda-export/catI-r5/qrda_templates/template_partials/_medication_supply_request.mustache +12 -1
  63. data/lib/qrda-export/catI-r5/qrda_templates/template_partials/_rank.mustache +7 -0
  64. data/lib/qrda-export/catI-r5/qrda_templates/template_partials/_related_to.mustache +1 -1
  65. data/lib/qrda-export/catI-r5/qrda_templates/template_partials/_results.mustache +8 -1
  66. data/lib/qrda-export/catI-r5/qrda_templates/template_partials/_status.mustache +1 -1
  67. data/lib/qrda-export/helper/cat1_view_helper.rb +2 -0
  68. data/lib/qrda-export/helper/date_helper.rb +27 -4
  69. data/lib/qrda-import/base-importers/demographics_importer.rb +3 -3
  70. data/lib/qrda-import/base-importers/section_importer.rb +48 -5
  71. data/lib/qrda-import/data-element-importers/adverse_event_importer.rb +2 -1
  72. data/lib/qrda-import/data-element-importers/allergy_intolerance_importer.rb +2 -1
  73. data/lib/qrda-import/data-element-importers/assessment_order_importer.rb +1 -0
  74. data/lib/qrda-import/data-element-importers/assessment_performed_importer.rb +3 -0
  75. data/lib/qrda-import/data-element-importers/assessment_recommended_importer.rb +1 -0
  76. data/lib/qrda-import/data-element-importers/communication_performed_importer.rb +7 -6
  77. data/lib/qrda-import/data-element-importers/device_applied_importer.rb +2 -0
  78. data/lib/qrda-import/data-element-importers/device_order_importer.rb +1 -0
  79. data/lib/qrda-import/data-element-importers/device_recommended_importer.rb +1 -0
  80. data/lib/qrda-import/data-element-importers/diagnosis_importer.rb +1 -0
  81. data/lib/qrda-import/data-element-importers/diagnostic_study_order_importer.rb +1 -0
  82. data/lib/qrda-import/data-element-importers/diagnostic_study_performed_importer.rb +2 -0
  83. data/lib/qrda-import/data-element-importers/diagnostic_study_recommended_importer.rb +1 -0
  84. data/lib/qrda-import/data-element-importers/encounter_order_importer.rb +3 -0
  85. data/lib/qrda-import/data-element-importers/encounter_performed_importer.rb +7 -3
  86. data/lib/qrda-import/data-element-importers/encounter_recommended_importer.rb +1 -0
  87. data/lib/qrda-import/data-element-importers/family_history_importer.rb +1 -0
  88. data/lib/qrda-import/data-element-importers/immunization_administered_importer.rb +3 -1
  89. data/lib/qrda-import/data-element-importers/immunization_order_importer.rb +4 -3
  90. data/lib/qrda-import/data-element-importers/intervention_order_importer.rb +1 -0
  91. data/lib/qrda-import/data-element-importers/intervention_performed_importer.rb +2 -0
  92. data/lib/qrda-import/data-element-importers/intervention_recommended_importer.rb +1 -0
  93. data/lib/qrda-import/data-element-importers/laboratory_test_order_importer.rb +1 -0
  94. data/lib/qrda-import/data-element-importers/laboratory_test_performed_importer.rb +2 -0
  95. data/lib/qrda-import/data-element-importers/laboratory_test_recommended_importer.rb +1 -0
  96. data/lib/qrda-import/data-element-importers/medication_active_importer.rb +2 -0
  97. data/lib/qrda-import/data-element-importers/medication_administered_importer.rb +2 -0
  98. data/lib/qrda-import/data-element-importers/medication_discharge_importer.rb +2 -0
  99. data/lib/qrda-import/data-element-importers/medication_dispensed_importer.rb +3 -4
  100. data/lib/qrda-import/data-element-importers/medication_order_importer.rb +2 -2
  101. data/lib/qrda-import/data-element-importers/patient_care_experience_importer.rb +1 -0
  102. data/lib/qrda-import/data-element-importers/physical_exam_order_importer.rb +1 -0
  103. data/lib/qrda-import/data-element-importers/physical_exam_performed_importer.rb +2 -0
  104. data/lib/qrda-import/data-element-importers/physical_exam_recommended_importer.rb +1 -0
  105. data/lib/qrda-import/data-element-importers/procedure_order_importer.rb +3 -0
  106. data/lib/qrda-import/data-element-importers/procedure_performed_importer.rb +4 -0
  107. data/lib/qrda-import/data-element-importers/procedure_recommended_importer.rb +3 -0
  108. data/lib/qrda-import/data-element-importers/program_participation_importer.rb +21 -0
  109. data/lib/qrda-import/data-element-importers/provider_care_experience_importer.rb +1 -0
  110. data/lib/qrda-import/data-element-importers/related_person_importer.rb +19 -0
  111. data/lib/qrda-import/data-element-importers/substance_administered_importer.rb +2 -0
  112. data/lib/qrda-import/data-element-importers/substance_order_importer.rb +1 -0
  113. data/lib/qrda-import/data-element-importers/substance_recommended_importer.rb +1 -0
  114. data/lib/qrda-import/data-element-importers/symptom_importer.rb +1 -0
  115. data/lib/qrda-import/patient_importer.rb +31 -11
  116. data/lib/util/entity_helper.rb +22 -0
  117. metadata +19 -9
  118. data/lib/ext/code.rb +0 -11
  119. data/lib/ext/data_element.rb +0 -24
  120. data/lib/qrda-export/catI-r5/qrda_templates/template_partials/_encounter_diagnosis.mustache +0 -23
  121. data/lib/qrda-export/catI-r5/qrda_templates/template_partials/_principal_diagnosis.mustache +0 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 046a88f916e40e42ced139fe200c6fbd202b61583e8e52c6b0cd95e66876d719
4
- data.tar.gz: 91135435b8c4793991b838440ea33414deb376fee10ff7728bb785cacc8549b8
2
+ SHA1:
3
+ metadata.gz: 86b46847a0a68ecf86611dce268e5a12f6d01af6
4
+ data.tar.gz: 906d1984866e314876ca0d713f6b08a01a6ab8f5
5
5
  SHA512:
6
- metadata.gz: edd69c08263f69d9775374749d29ebfd2d2ef73daeafc14b8b71a7c98a585c1e70fc709cc7d66300519a980e36878a3617d848068bc5b03573ecf34e2a33ced6
7
- data.tar.gz: a57c164a58a8bbb1227bd4a2c3ea99bd30bc96370d598ebc3073ecd11f370501cbb9ea07393569c6317eabe8145637833cea983bc4f89672bcd9e10bfd0d2187
6
+ metadata.gz: cc1e458ec8496af2e20bec1068f7acf723976bdfa92610cd2f1b99f36692a5cb7ddb3c6d1648be17704d820d0002b8b32c78d52881ea1d78d71643909ae0499f
7
+ data.tar.gz: 9f4fa410245d83fbd1beb11183461a4cd8442859bfc391b7bffd90c5d9afeb2c91cd3ca83d54e9bc7c6a49f8ad9b6c9fe55230167161fd03cc4fc188066aec95
data/Gemfile CHANGED
@@ -17,6 +17,7 @@ group :development do
17
17
  end
18
18
 
19
19
  group :test do
20
+ gem 'cqm-models', git: 'https://github.com/projecttacoma/cqm-models', branch: 'master'
20
21
  gem 'factory_girl', '~> 4.1.0'
21
22
  gem 'tailor', '~> 1.1.2'
22
23
  gem 'cane', '~> 2.3.0'
@@ -26,6 +27,6 @@ group :test do
26
27
  gem 'minitest', '~> 5.3'
27
28
  gem 'minitest-reporters'
28
29
  gem 'awesome_print', :require => 'ap'
29
- gem 'cqm-validators'
30
+ gem 'cqm-validators', git: 'https://github.com/projecttacoma/cqm-validators', branch: 'master'
30
31
  gem 'nokogiri-diff'
31
32
  end
data/README.md CHANGED
@@ -18,6 +18,32 @@ Starting with version **2.0.0** released on 6/20/2019, cqm-reports versioning ha
18
18
 
19
19
  For the versions available, see [tags on this repository](https://github.com/projecttacoma/cqm-validators/tags).
20
20
 
21
+ Importing QRDA
22
+ ==========
23
+
24
+ A QRDA document can be imported into a CQM::Patient (defined in [cqm-models](https://github.com/projecttacoma/cqm-models)) using the following commands.
25
+
26
+ doc = Nokogiri::XML(file)
27
+ patient = QRDA::Cat1::PatientImporter.instance.parse_cat1(doc)
28
+
29
+ Exporting QRDA Category I
30
+ ==========
31
+
32
+ Exporting a QRDA document from a CQM::Patient (defined in [cqm-models](https://github.com/projecttacoma/cqm-models)) using the following command.
33
+
34
+ Qrda1R5.new(patient, measures, options).render
35
+ * patient is a [CQM::Patient](https://github.com/projecttacoma/cqm-models/blob/master/app/models/cqm/patient.rb)
36
+ * measures is an array of [CQM::Measure](https://github.com/projecttacoma/cqm-models/blob/master/app/models/cqm/measure.rb)
37
+ * options is a hash that can be used to pass in:
38
+ * provider
39
+ * patient_addresses
40
+ * patient_telecoms
41
+ * start_time
42
+ * end_time
43
+ * submission_program
44
+
45
+ QRDA export requires the [mustache](https://github.com/mustache/mustache) gem
46
+
21
47
  ## License
22
48
 
23
49
  Copyright 2019 The MITRE Corporation
@@ -5,6 +5,7 @@ require 'ostruct'
5
5
  require_relative 'util/code_system_helper'
6
6
  require_relative 'util/hqmf_template_helper'
7
7
  require_relative 'util/qrda_template_helper'
8
+ require_relative 'util/entity_helper.rb'
8
9
 
9
10
  require_relative 'qrda-export/helper/frequency_helper.rb'
10
11
  require_relative 'qrda-export/helper/aggregate_object_helper.rb'
@@ -66,11 +67,11 @@ require_relative 'qrda-import/data-element-importers/physical_exam_recommended_i
66
67
  require_relative 'qrda-import/data-element-importers/procedure_order_importer.rb'
67
68
  require_relative 'qrda-import/data-element-importers/procedure_performed_importer.rb'
68
69
  require_relative 'qrda-import/data-element-importers/procedure_recommended_importer.rb'
70
+ require_relative 'qrda-import/data-element-importers/program_participation_importer.rb'
69
71
  require_relative 'qrda-import/data-element-importers/provider_care_experience_importer.rb'
72
+ require_relative 'qrda-import/data-element-importers/related_person_importer.rb'
70
73
  require_relative 'qrda-import/data-element-importers/substance_administered_importer.rb'
71
74
  require_relative 'qrda-import/data-element-importers/substance_order_importer.rb'
72
75
  require_relative 'qrda-import/data-element-importers/substance_recommended_importer.rb'
73
76
  require_relative 'qrda-import/data-element-importers/symptom_importer.rb'
74
77
  require_relative 'qrda-import/patient_importer.rb'
75
- require_relative 'ext/data_element.rb'
76
- require_relative 'ext/code.rb'
@@ -15,8 +15,18 @@
15
15
  <div class="div-table-head--no-border"><span class="criteria-heading">Anatomical Location Site:</span> {{{code_code_system_string}}}</div>
16
16
  </div>
17
17
  {{/anatomicalLocationSite}}
18
+ {{#cause}}
19
+ <div class="div-head-row">
20
+ <div class="div-table-head--no-border"><span class="criteria-heading">Cause:</span> {{{code_code_system_string}}}</div>
21
+ </div>
22
+ {{/cause}}
23
+ {{#category}}
24
+ <div class="div-head-row">
25
+ <div class="div-table-head--no-border"><span class="criteria-heading">Category:</span> {{{code_code_system_string}}}</div>
26
+ </div>
27
+ {{/category}}
18
28
  {{#components}}
19
- {{#code}}
29
+ {{#code}}
20
30
  <div class="div-head-row">
21
31
  <div class="div-table-head--no-border"><span class="criteria-heading">Component Code:</span> {{{code_code_system_string}}}</div>
22
32
  </div>
@@ -27,9 +37,14 @@
27
37
  </div>
28
38
  {{/result}}
29
39
  {{/components}}
40
+ {{#daysSupplied}}
41
+ <div class="div-head-row">
42
+ <div class="div-table-head--no-border"><span class="criteria-heading">Days Supplied:</span> {{{daysSupplied}}}</div>
43
+ </div>
44
+ {{/daysSupplied}}
30
45
  {{#diagnoses}}
31
46
  <div class="div-head-row">
32
- <div class="div-table-head--no-border"><span class="criteria-heading">Diagnosis:</span> {{{code_code_system_string}}}</div>
47
+ <div class="div-table-head--no-border"><span class="criteria-heading">Diagnosis:</span> {{{nested_code_string}}}</div>
33
48
  </div>
34
49
  {{/diagnoses}}
35
50
  {{#dischargeDisposition}}
@@ -37,14 +52,24 @@
37
52
  <div class="div-table-head--no-border"><span class="criteria-heading">Discharge Disposition:</span> {{{code_code_system_string}}}</div>
38
53
  </div>
39
54
  {{/dischargeDisposition}}
55
+ {{#dispenser}}
56
+ <div class="div-head-row">
57
+ <div class="div-table-head--no-border"><span class="criteria-heading">Dispenser:</span> {{{entity_string}}}</div>
58
+ </div>
59
+ {{/dispenser}}
60
+ {{#dosage}}
61
+ <div class="div-head-row">
62
+ <div class="div-table-head--no-border"><span class="criteria-heading">Dosage:</span> {{{unit_string}}}</div>
63
+ </div>
64
+ {{/dosage}}
40
65
  {{#facilityLocation}}
41
66
  <div class="div-head-row">
42
- <div class="div-table-head--no-border"><span class="criteria-heading">Facility Location:</span> {{{code_code_system_string}}}</div>
67
+ <div class="div-table-head--no-border"><span class="criteria-heading">Facility Location:</span> {{{nested_code_string}}}</div>
43
68
  </div>
44
69
  {{/facilityLocation}}
45
70
  {{#facilityLocations}}
46
71
  <div class="div-head-row">
47
- <div class="div-table-head--no-border"><span class="criteria-heading">Facility:</span> {{{facility_string}}}</div>
72
+ <div class="div-table-head--no-border"><span class="criteria-heading">Facility:</span> {{{nested_code_string}}}</div>
48
73
  </div>
49
74
  {{/facilityLocations}}
50
75
  {{#frequency}}
@@ -52,11 +77,31 @@
52
77
  <div class="div-table-head--no-border"><span class="criteria-heading">Frequency:</span> {{{code_code_system_string}}}</div>
53
78
  </div>
54
79
  {{/frequency}}
80
+ {{#identifier}}
81
+ <div class="div-head-row">
82
+ <div class="div-table-head--no-border"><span class="criteria-heading">Identifier:</span> {{{identifier_string}}}</div>
83
+ </div>
84
+ {{/identifier}}
55
85
  {{#lengthOfStay}}
56
86
  <div class="div-head-row">
57
87
  <div class="div-table-head--no-border"><span class="criteria-heading">Length Of Stay:</span> {{{unit_string}}}</div>
58
88
  </div>
59
89
  {{/lengthOfStay}}
90
+ {{#linkedPatientId}}
91
+ <div class="div-head-row">
92
+ <div class="div-table-head--no-border"><span class="criteria-heading">Linked Patient Id:</span> {{{linkedPatientId}}}</div>
93
+ </div>
94
+ {{/linkedPatientId}}
95
+ {{#medium}}
96
+ <div class="div-head-row">
97
+ <div class="div-table-head--no-border"><span class="criteria-heading">Medium:</span> {{{code_code_system_string}}}</div>
98
+ </div>
99
+ {{/medium}}
100
+ {{#methodCode}}
101
+ <div class="div-head-row">
102
+ <div class="div-table-head--no-border"><span class="criteria-heading">Method:</span> {{{code_code_system_string}}}</div>
103
+ </div>
104
+ {{/methodCode}}
60
105
  {{#negationRationale}}
61
106
  <div class="div-head-row">
62
107
  <div class="div-table-head--no-border"><span class="criteria-heading">Negation Reason:</span> {{{code_code_system_string}}}</div>
@@ -67,26 +112,105 @@
67
112
  <div class="div-table-head--no-border"><span class="criteria-heading">Ordinality:</span> {{{code_code_system_string}}}</div>
68
113
  </div>
69
114
  {{/ordinality}}
115
+ {{#participant}}
116
+ <div class="div-head-row">
117
+ <div class="div-table-head--no-border"><span class="criteria-heading">Participant:</span> {{{entity_string}}}</div>
118
+ </div>
119
+ {{/participant}}
120
+ {{#performer}}
121
+ <div class="div-head-row">
122
+ <div class="div-table-head--no-border"><span class="criteria-heading">Performer:</span> {{{entity_string}}}</div>
123
+ </div>
124
+ {{/performer}}
125
+ {{#prescriber}}
126
+ <div class="div-head-row">
127
+ <div class="div-table-head--no-border"><span class="criteria-heading">Prescriber:</span> {{{entity_string}}}</div>
128
+ </div>
129
+ {{/prescriber}}
70
130
  {{#principalDiagnosis}}
71
131
  <div class="div-head-row">
72
132
  <div class="div-table-head--no-border"><span class="criteria-heading">Principal Diagnosis:</span> {{{code_code_system_string}}}</div>
73
133
  </div>
74
134
  {{/principalDiagnosis}}
135
+ {{#priority}}
136
+ <div class="div-head-row">
137
+ <div class="div-table-head--no-border"><span class="criteria-heading">Priority:</span> {{{code_code_system_string}}}</div>
138
+ </div>
139
+ {{/priority}}
140
+ {{#rank}}
141
+ <div class="div-head-row">
142
+ <div class="div-table-head--no-border"><span class="criteria-heading">Rank:</span> {{{rank}}}</div>
143
+ </div>
144
+ {{/rank}}
75
145
  {{#reason}}
76
146
  <div class="div-head-row">
77
147
  <div class="div-table-head--no-border"><span class="criteria-heading">Reason:</span> {{{code_code_system_string}}}</div>
78
148
  </div>
79
149
  {{/reason}}
150
+ {{#recipient}}
151
+ <div class="div-head-row">
152
+ <div class="div-table-head--no-border"><span class="criteria-heading">Recipient:</span> {{{entity_string}}}</div>
153
+ </div>
154
+ {{/recipient}}
155
+ {{#recorder}}
156
+ <div class="div-head-row">
157
+ <div class="div-table-head--no-border"><span class="criteria-heading">Recorder:</span> {{{entity_string}}}</div>
158
+ </div>
159
+ {{/recorder}}
160
+ {{#referenceRange}}
161
+ <div class="div-head-row">
162
+ <div class="div-table-head--no-border"><span class="criteria-heading">Reference Range Start:</span> {{{low}}}</div>
163
+ </div>
164
+ <div class="div-head-row">
165
+ <div class="div-table-head--no-border"><span class="criteria-heading">Reference Range End:</span> {{{high}}}</div>
166
+ </div>
167
+ {{/referenceRange}}
168
+ {{#refills}}
169
+ <div class="div-head-row">
170
+ <div class="div-table-head--no-border"><span class="criteria-heading">Refills:</span> {{{refills}}}</div>
171
+ </div>
172
+ {{/refills}}
173
+ {{#relatedTo}}
174
+ {{! TODO: relatedTo is an array of strings, which are ids of dataElements, and not very useful to the user}}
175
+ <div class="div-head-row">
176
+ <div class="div-table-head--no-border"><span class="criteria-heading">Related To:</span> {{{relatedTo}}}</div>
177
+ </div>
178
+ {{/relatedTo}}
179
+ {{#relationship}}
180
+ <div class="div-head-row">
181
+ <div class="div-table-head--no-border"><span class="criteria-heading">Relationship:</span> {{{code_code_system_string}}}</div>
182
+ </div>
183
+ {{/relationship}}
184
+ {{#requester}}
185
+ <div class="div-head-row">
186
+ <div class="div-table-head--no-border"><span class="criteria-heading">Requester:</span> {{{entity_string}}}</div>
187
+ </div>
188
+ {{/requester}}
80
189
  {{#route}}
81
190
  <div class="div-head-row">
82
191
  <div class="div-table-head--no-border"><span class="criteria-heading">Route:</span> {{{code_code_system_string}}}</div>
83
192
  </div>
84
193
  {{/route}}
194
+ {{#sender}}
195
+ <div class="div-head-row">
196
+ <div class="div-table-head--no-border"><span class="criteria-heading">Sender:</span> {{{entity_string}}}</div>
197
+ </div>
198
+ {{/sender}}
199
+ {{#setting}}
200
+ <div class="div-head-row">
201
+ <div class="div-table-head--no-border"><span class="criteria-heading">Setting:</span> {{{code_code_system_string}}}</div>
202
+ </div>
203
+ {{/setting}}
85
204
  {{#severity}}
86
205
  <div class="div-head-row">
87
206
  <div class="div-table-head--no-border"><span class="criteria-heading">Severity:</span> {{{code_code_system_string}}}</div>
88
207
  </div>
89
208
  {{/severity}}
209
+ {{#supply}}
210
+ <div class="div-head-row">
211
+ <div class="div-table-head--no-border"><span class="criteria-heading">Supply:</span> {{{unit_string}}}</div>
212
+ </div>
213
+ {{/supply}}
90
214
  {{#status}}
91
215
  <div class="div-head-row">
92
216
  <div class="div-table-head--no-border"><span class="criteria-heading">Status:</span> {{{code_code_system_string}}}</div>
@@ -103,4 +227,4 @@
103
227
  </div>
104
228
  {{/result}}
105
229
  </div>
106
- </div>
230
+ </div>
@@ -10,6 +10,11 @@
10
10
  </div>
11
11
  {{/end_time?}}
12
12
  {{/relevantPeriod}}
13
+ {{#relevantDatetime}}
14
+ <div class="div-head-row">
15
+ <div class="div-table-head--no-border"><span class="criteria-heading">Relevant Date/Time:</span> {{{relevantDatetime}}}</div>
16
+ </div>
17
+ {{/relevantDatetime}}
13
18
  {{#prevalencePeriod}}
14
19
  <div class="div-head-row">
15
20
  <div class="div-table-head--no-border"><span class="criteria-heading">Prevalence Period Start:</span> {{{low}}}</div>
@@ -20,6 +25,16 @@
20
25
  </div>
21
26
  {{/end_time?}}
22
27
  {{/prevalencePeriod}}
28
+ {{#participationPeriod}}
29
+ <div class="div-head-row">
30
+ <div class="div-table-head--no-border"><span class="criteria-heading">Participation Period Start:</span> {{{low}}}</div>
31
+ </div>
32
+ {{#end_time?}}
33
+ <div class="div-head-row">
34
+ <div class="div-table-head--no-border"><span class="criteria-heading">Participation Period End:</span> {{{high}}}</div>
35
+ </div>
36
+ {{/end_time?}}
37
+ {{/participationPeriod}}
23
38
  {{#authorDatetime}}
24
39
  <div class="div-head-row">
25
40
  <div class="div-table-head--no-border"><span class="criteria-heading">Author Date/Time:</span> {{{authorDatetime}}}</div>
@@ -40,5 +55,25 @@
40
55
  <div class="div-table-head--no-border"><span class="criteria-heading">Incision Date/Time:</span> {{{incisionDatetime}}}</div>
41
56
  </div>
42
57
  {{/incisionDatetime}}
58
+ {{#receivedDatetime}}
59
+ <div class="div-head-row">
60
+ <div class="div-table-head--no-border"><span class="criteria-heading">Received Date/Time:</span> {{{receivedDatetime}}}</div>
61
+ </div>
62
+ {{/receivedDatetime}}
63
+ {{#sentDatetime}}
64
+ <div class="div-head-row">
65
+ <div class="div-table-head--no-border"><span class="criteria-heading">Sent Date/Time:</span> {{{sentDatetime}}}</div>
66
+ </div>
67
+ {{/sentDatetime}}
68
+ {{#birthDatetime}}
69
+ <div class="div-head-row">
70
+ <div class="div-table-head--no-border"><span class="criteria-heading">Birth Date/Time:</span> {{{birthDatetime}}}</div>
71
+ </div>
72
+ {{/birthDatetime}}
73
+ {{#expiredDatetime}}
74
+ <div class="div-head-row">
75
+ <div class="div-table-head--no-border"><span class="criteria-heading">Expired Date/Time:</span> {{{expiredDatetime}}}</div>
76
+ </div>
77
+ {{/expiredDatetime}}
78
+ </div>
43
79
  </div>
44
- </div>
@@ -1,6 +1,7 @@
1
1
  require 'mustache'
2
2
  class QdmPatient < Mustache
3
3
  include Qrda::Export::Helper::PatientViewHelper
4
+ include HQMF::Util::EntityHelper
4
5
 
5
6
  self.template_path = __dir__
6
7
 
@@ -17,17 +18,50 @@ class QdmPatient < Mustache
17
18
  def data_elements
18
19
  de_hash = {}
19
20
  @qdmPatient.dataElements.each do |data_element|
21
+ data_element['methodCode'] = data_element['method'] if data_element['method']
20
22
  de_hash[data_element._type] ? de_hash[data_element._type][:element_list] << data_element : de_hash[data_element._type] = { title: data_element._type, element_list: [data_element] }
21
23
  end
22
24
  JSON.parse(de_hash.values.to_json)
23
25
  end
24
26
 
25
27
  def unit_string
28
+ return "#{self['value']} " unless self['unit']
26
29
  "#{self['value']} #{self['unit']}"
27
30
  end
28
31
 
32
+ def entity_string
33
+ if care_partner_entity?
34
+ "</br>&nbsp; Care Partner: #{identifier_for_element(self['identifier'])}
35
+ </br>&nbsp; Care Partner Relationship: #{code_for_element(self['relationship'])}"
36
+ elsif organization_entity?
37
+ "</br>&nbsp; Organization: #{identifier_for_element(self['identifier'])}
38
+ </br>&nbsp; Organization Type: #{code_for_element(self['type'])}"
39
+ elsif patient_entity?
40
+ "</br>&nbsp; Patient: #{identifier_for_element(self['identifier'])}"
41
+ elsif practitioner_entity?
42
+ "</br>&nbsp; Practitioner: #{identifier_for_element(self['identifier'])}
43
+ </br>&nbsp; Practitioner Role: #{code_for_element(self['role'])},
44
+ </br>&nbsp; Practitioner Specialty: #{code_for_element(self['specialty'])},
45
+ </br>&nbsp; Practitioner Qualification: #{code_for_element(self['qualification'])}"
46
+ else
47
+ "</br>&nbsp; Entity: #{identifier_for_element(self['identifier'])}"
48
+ end
49
+ end
50
+
51
+ def identifier_string
52
+ identifier_for_element(self)
53
+ end
54
+
55
+ def identifier_for_element(identifier)
56
+ "#{identifier['value']} (#{identifier['namingSystem']})"
57
+ end
58
+
29
59
  def code_code_system_string
30
- "#{self['code']} (#{HQMF::Util::CodeSystemHelper.code_system_for(self['system'])})"
60
+ code_for_element(self)
61
+ end
62
+
63
+ def code_for_element(element)
64
+ "#{element['code']} (#{HQMF::Util::CodeSystemHelper.code_system_for(element['system'])})"
31
65
  end
32
66
 
33
67
  def code_system_name
@@ -35,14 +69,14 @@ class QdmPatient < Mustache
35
69
  end
36
70
 
37
71
  def result_string
38
- return unit_string if self['unit']
72
+ return unit_string if self['value']
39
73
  return code_code_system_string if self['code']
40
74
 
41
- ''
75
+ self['result']
42
76
  end
43
77
 
44
- def facility_string
45
- "#{self['code']['code']} (#{self['code']['codeSystem']})"
78
+ def nested_code_string
79
+ code_for_element(self['code'])
46
80
  end
47
81
 
48
82
  def end_time?
@@ -6,9 +6,9 @@
6
6
  <!-- QRDA templateId -->
7
7
  <templateId root="2.16.840.1.113883.10.20.24.1.1" extension="2017-08-01"/>
8
8
  <!-- QDM-based QRDA templateId -->
9
- <templateId root="2.16.840.1.113883.10.20.24.1.2" extension="2017-08-01"/>
9
+ <templateId root="2.16.840.1.113883.10.20.24.1.2" extension="2019-12-01"/>
10
10
  <!-- CMS QRDA templateId -->
11
- <templateId root="2.16.840.1.113883.10.20.24.1.3" extension="2018-02-01"/>
11
+ <templateId root="2.16.840.1.113883.10.20.24.1.3" extension="2020-02-01"/>
12
12
  <!-- This is the globally unique identifier for this QRDA document -->
13
13
  <id root="{{random_id}}"/>
14
14
  <!-- QRDA document type code -->
@@ -12,8 +12,8 @@
12
12
  <!-- This is the templateId for Patient Data section -->
13
13
  <templateId root="2.16.840.1.113883.10.20.17.2.4"/>
14
14
  <!-- This is the templateId for Patient Data QDM section -->
15
- <templateId extension="2017-08-01" root="2.16.840.1.113883.10.20.24.2.1"/>
16
- <templateId extension="2018-02-01" root="2.16.840.1.113883.10.20.24.2.1.1"/>
15
+ <templateId extension="2019-12-01" root="2.16.840.1.113883.10.20.24.2.1"/>
16
+ <templateId extension="2020-02-01" root="2.16.840.1.113883.10.20.24.2.1.1"/>
17
17
  <code code="55188-7" codeSystem="2.16.840.1.113883.6.1"/>
18
18
  <title>Patient Data</title>
19
19
  <text/>
@@ -174,10 +174,18 @@
174
174
  {{> qrda_templates/procedure_recommended}}
175
175
  {{/procedure_recommended}}
176
176
 
177
+ {{#program_participation}}
178
+ {{> qrda_templates/program_participation}}
179
+ {{/program_participation}}
180
+
177
181
  {{#provider_care_experience}}
178
182
  {{> qrda_templates/provider_care_experience}}
179
183
  {{/provider_care_experience}}
180
184
 
185
+ {{#related_person}}
186
+ {{> qrda_templates/related_person}}
187
+ {{/related_person}}
188
+
181
189
  {{#substance_administered}}
182
190
  {{> qrda_templates/medication_administered}}
183
191
  {{/substance_administered}}