cqm-models 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. checksums.yaml +7 -0
  2. data/.eslintignore +1 -0
  3. data/.eslintrc.json +26 -0
  4. data/.github/PULL_REQUEST_TEMPLATE.md +32 -0
  5. data/.gitignore +21 -0
  6. data/.rspec +2 -0
  7. data/.rubocop.yml +42 -0
  8. data/.travis.yml +21 -0
  9. data/Gemfile +5 -0
  10. data/LICENSE.txt +201 -0
  11. data/README.md +26 -0
  12. data/Rakefile +12 -0
  13. data/app/assets/javascripts/AdverseEvent.js +27 -0
  14. data/app/assets/javascripts/AllDataElements.js +120 -0
  15. data/app/assets/javascripts/AllergyIntolerance.js +27 -0
  16. data/app/assets/javascripts/AssessmentPerformed.js +30 -0
  17. data/app/assets/javascripts/AssessmentRecommended.js +27 -0
  18. data/app/assets/javascripts/CareGoal.js +25 -0
  19. data/app/assets/javascripts/CommunicationFromPatientToProvider.js +26 -0
  20. data/app/assets/javascripts/CommunicationFromProviderToPatient.js +26 -0
  21. data/app/assets/javascripts/CommunicationFromProviderToProvider.js +26 -0
  22. data/app/assets/javascripts/Component.js +22 -0
  23. data/app/assets/javascripts/Concept.js +14 -0
  24. data/app/assets/javascripts/DeviceApplied.js +29 -0
  25. data/app/assets/javascripts/DeviceOrder.js +26 -0
  26. data/app/assets/javascripts/DeviceRecommended.js +26 -0
  27. data/app/assets/javascripts/Diagnosis.js +27 -0
  28. data/app/assets/javascripts/DiagnosticStudyOrder.js +27 -0
  29. data/app/assets/javascripts/DiagnosticStudyPerformed.js +33 -0
  30. data/app/assets/javascripts/DiagnosticStudyRecommended.js +27 -0
  31. data/app/assets/javascripts/EncounterOrder.js +27 -0
  32. data/app/assets/javascripts/EncounterPerformed.js +32 -0
  33. data/app/assets/javascripts/EncounterRecommended.js +27 -0
  34. data/app/assets/javascripts/FacilityLocation.js +22 -0
  35. data/app/assets/javascripts/FamilyHistory.js +25 -0
  36. data/app/assets/javascripts/Id.js +22 -0
  37. data/app/assets/javascripts/ImmunizationAdministered.js +30 -0
  38. data/app/assets/javascripts/ImmunizationOrder.js +30 -0
  39. data/app/assets/javascripts/InterventionOrder.js +26 -0
  40. data/app/assets/javascripts/InterventionPerformed.js +29 -0
  41. data/app/assets/javascripts/InterventionRecommended.js +26 -0
  42. data/app/assets/javascripts/LaboratoryTestOrder.js +27 -0
  43. data/app/assets/javascripts/LaboratoryTestPerformed.js +33 -0
  44. data/app/assets/javascripts/LaboratoryTestRecommended.js +27 -0
  45. data/app/assets/javascripts/Measure.js +76 -0
  46. data/app/assets/javascripts/MeasurePackage.js +20 -0
  47. data/app/assets/javascripts/MedicationActive.js +28 -0
  48. data/app/assets/javascripts/MedicationAdministered.js +31 -0
  49. data/app/assets/javascripts/MedicationDischarge.js +30 -0
  50. data/app/assets/javascripts/MedicationDispensed.js +31 -0
  51. data/app/assets/javascripts/MedicationOrder.js +34 -0
  52. data/app/assets/javascripts/Participation.js +21 -0
  53. data/app/assets/javascripts/Patient.js +248 -0
  54. data/app/assets/javascripts/PatientCareExperience.js +23 -0
  55. data/app/assets/javascripts/PatientCharacteristic.js +23 -0
  56. data/app/assets/javascripts/PatientCharacteristicBirthdate.js +24 -0
  57. data/app/assets/javascripts/PatientCharacteristicClinicalTrialParticipant.js +26 -0
  58. data/app/assets/javascripts/PatientCharacteristicEthnicity.js +23 -0
  59. data/app/assets/javascripts/PatientCharacteristicExpired.js +25 -0
  60. data/app/assets/javascripts/PatientCharacteristicPayer.js +24 -0
  61. data/app/assets/javascripts/PatientCharacteristicRace.js +23 -0
  62. data/app/assets/javascripts/PatientCharacteristicSex.js +23 -0
  63. data/app/assets/javascripts/PhysicalExamOrder.js +28 -0
  64. data/app/assets/javascripts/PhysicalExamPerformed.js +31 -0
  65. data/app/assets/javascripts/PhysicalExamRecommended.js +28 -0
  66. data/app/assets/javascripts/ProcedureOrder.js +30 -0
  67. data/app/assets/javascripts/ProcedurePerformed.js +35 -0
  68. data/app/assets/javascripts/ProcedureRecommended.js +30 -0
  69. data/app/assets/javascripts/ProviderCareExperience.js +23 -0
  70. data/app/assets/javascripts/ProviderCharacteristic.js +23 -0
  71. data/app/assets/javascripts/Ratio.js +22 -0
  72. data/app/assets/javascripts/Result.js +28 -0
  73. data/app/assets/javascripts/ResultComponent.js +21 -0
  74. data/app/assets/javascripts/SubstanceAdministered.js +30 -0
  75. data/app/assets/javascripts/SubstanceOrder.js +32 -0
  76. data/app/assets/javascripts/SubstanceRecommended.js +32 -0
  77. data/app/assets/javascripts/Symptom.js +25 -0
  78. data/app/assets/javascripts/ValueSet.js +30 -0
  79. data/app/assets/javascripts/basetypes/Code.js +25 -0
  80. data/app/assets/javascripts/basetypes/DataElement.js +36 -0
  81. data/app/assets/javascripts/basetypes/DateTime.js +18 -0
  82. data/app/assets/javascripts/basetypes/Interval.js +35 -0
  83. data/app/assets/javascripts/basetypes/Quantity.js +20 -0
  84. data/app/assets/javascripts/index.js +12 -0
  85. data/app/models/models.rb +78 -0
  86. data/app/models/qdm/adverse_event.rb +15 -0
  87. data/app/models/qdm/allergy_intolerance.rb +15 -0
  88. data/app/models/qdm/assessment_performed.rb +18 -0
  89. data/app/models/qdm/assessment_recommended.rb +15 -0
  90. data/app/models/qdm/basetypes/code.rb +56 -0
  91. data/app/models/qdm/basetypes/data_element.rb +42 -0
  92. data/app/models/qdm/basetypes/interval.rb +54 -0
  93. data/app/models/qdm/basetypes/quantity.rb +52 -0
  94. data/app/models/qdm/care_goal.rb +13 -0
  95. data/app/models/qdm/communication_from_patient_to_provider.rb +14 -0
  96. data/app/models/qdm/communication_from_provider_to_patient.rb +14 -0
  97. data/app/models/qdm/communication_from_provider_to_provider.rb +14 -0
  98. data/app/models/qdm/component.rb +10 -0
  99. data/app/models/qdm/device_applied.rb +17 -0
  100. data/app/models/qdm/device_order.rb +14 -0
  101. data/app/models/qdm/device_recommended.rb +14 -0
  102. data/app/models/qdm/diagnosis.rb +15 -0
  103. data/app/models/qdm/diagnostic_study_order.rb +15 -0
  104. data/app/models/qdm/diagnostic_study_performed.rb +21 -0
  105. data/app/models/qdm/diagnostic_study_recommended.rb +15 -0
  106. data/app/models/qdm/encounter_order.rb +15 -0
  107. data/app/models/qdm/encounter_performed.rb +20 -0
  108. data/app/models/qdm/encounter_recommended.rb +15 -0
  109. data/app/models/qdm/facility_location.rb +10 -0
  110. data/app/models/qdm/family_history.rb +13 -0
  111. data/app/models/qdm/id.rb +10 -0
  112. data/app/models/qdm/immunization_administered.rb +18 -0
  113. data/app/models/qdm/immunization_order.rb +18 -0
  114. data/app/models/qdm/intervention_order.rb +14 -0
  115. data/app/models/qdm/intervention_performed.rb +17 -0
  116. data/app/models/qdm/intervention_recommended.rb +14 -0
  117. data/app/models/qdm/laboratory_test_order.rb +15 -0
  118. data/app/models/qdm/laboratory_test_performed.rb +21 -0
  119. data/app/models/qdm/laboratory_test_recommended.rb +15 -0
  120. data/app/models/qdm/medication_active.rb +16 -0
  121. data/app/models/qdm/medication_administered.rb +19 -0
  122. data/app/models/qdm/medication_discharge.rb +18 -0
  123. data/app/models/qdm/medication_dispensed.rb +19 -0
  124. data/app/models/qdm/medication_order.rb +22 -0
  125. data/app/models/qdm/participation.rb +9 -0
  126. data/app/models/qdm/patient.rb +201 -0
  127. data/app/models/qdm/patient_care_experience.rb +11 -0
  128. data/app/models/qdm/patient_characteristic.rb +11 -0
  129. data/app/models/qdm/patient_characteristic_birthdate.rb +12 -0
  130. data/app/models/qdm/patient_characteristic_clinical_trial_participant.rb +14 -0
  131. data/app/models/qdm/patient_characteristic_ethnicity.rb +11 -0
  132. data/app/models/qdm/patient_characteristic_expired.rb +13 -0
  133. data/app/models/qdm/patient_characteristic_payer.rb +12 -0
  134. data/app/models/qdm/patient_characteristic_race.rb +11 -0
  135. data/app/models/qdm/patient_characteristic_sex.rb +11 -0
  136. data/app/models/qdm/physical_exam_order.rb +16 -0
  137. data/app/models/qdm/physical_exam_performed.rb +19 -0
  138. data/app/models/qdm/physical_exam_recommended.rb +16 -0
  139. data/app/models/qdm/procedure_order.rb +18 -0
  140. data/app/models/qdm/procedure_performed.rb +23 -0
  141. data/app/models/qdm/procedure_recommended.rb +18 -0
  142. data/app/models/qdm/provider_care_experience.rb +11 -0
  143. data/app/models/qdm/provider_characteristic.rb +11 -0
  144. data/app/models/qdm/ratio.rb +10 -0
  145. data/app/models/qdm/result_component.rb +9 -0
  146. data/app/models/qdm/substance_administered.rb +18 -0
  147. data/app/models/qdm/substance_order.rb +20 -0
  148. data/app/models/qdm/substance_recommended.rb +20 -0
  149. data/app/models/qdm/symptom.rb +13 -0
  150. data/app/models/qdm/tacoma/concept.rb +14 -0
  151. data/app/models/qdm/tacoma/measure.rb +172 -0
  152. data/app/models/qdm/tacoma/measure_package.rb +10 -0
  153. data/app/models/qdm/tacoma/valueset.rb +68 -0
  154. data/bin/console +14 -0
  155. data/bin/setup +8 -0
  156. data/bin/validate_dist.sh +17 -0
  157. data/config/mongoid.yml +6 -0
  158. data/cqm-models.gemspec +29 -0
  159. data/data/oids.json +584 -0
  160. data/dist/index.js +157647 -0
  161. data/lib/cqm/models.rb +1 -0
  162. data/lib/generate_models.rb +330 -0
  163. data/modelinfo/qdm-modelinfo-4.2.xml +515 -0
  164. data/modelinfo/qdm-modelinfo-4.3.xml +521 -0
  165. data/modelinfo/qdm-modelinfo-5.0.1.xml +436 -0
  166. data/modelinfo/qdm-modelinfo-5.0.2.xml +445 -0
  167. data/modelinfo/qdm-modelinfo-5.0.xml +429 -0
  168. data/modelinfo/qdm-modelinfo-5.3.xml +524 -0
  169. data/package.json +34 -0
  170. data/templates/all_data_elements_template.js.erb +4 -0
  171. data/templates/index_template.js.erb +12 -0
  172. data/templates/models_template.rb.erb +21 -0
  173. data/templates/mongoose_template.js.erb +20 -0
  174. data/templates/patient_extension.rb.erb +194 -0
  175. data/templates/patient_template.js.erb +247 -0
  176. data/tmp/.keep +0 -0
  177. data/yarn.lock +1901 -0
  178. metadata +320 -0
@@ -0,0 +1,21 @@
1
+ module QDM
2
+ # app/models/qdm/diagnostic_study_performed.rb
3
+ class DiagnosticStudyPerformed < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :relevantPeriod, type: QDM::Interval
8
+ field :reason, type: QDM::Code
9
+ field :result
10
+ field :resultDatetime, type: DateTime
11
+ field :status, type: QDM::Code
12
+ field :method, type: QDM::Code
13
+ field :facilityLocation, type: QDM::Code
14
+ field :negationRationale, type: QDM::Code
15
+ field :components, type: Array
16
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.23'
17
+ field :category, type: String, default: 'diagnostic_study'
18
+ field :qdmStatus, type: String, default: 'performed'
19
+ field :qdmVersion, type: String, default: '5.3'
20
+ end
21
+ end
@@ -0,0 +1,15 @@
1
+ module QDM
2
+ # app/models/qdm/diagnostic_study_recommended.rb
3
+ class DiagnosticStudyRecommended < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :method, type: QDM::Code
8
+ field :negationRationale, type: QDM::Code
9
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.24'
10
+ field :qrdaOid, type: String, default: '2.16.840.1.113883.10.20.24.3.19'
11
+ field :category, type: String, default: 'diagnostic_study'
12
+ field :qdmStatus, type: String, default: 'recommended'
13
+ field :qdmVersion, type: String, default: '5.3'
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module QDM
2
+ # app/models/qdm/encounter_order.rb
3
+ class EncounterOrder < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :reason, type: QDM::Code
8
+ field :facilityLocation, type: QDM::Code
9
+ field :negationRationale, type: QDM::Code
10
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.27'
11
+ field :category, type: String, default: 'encounter'
12
+ field :qdmStatus, type: String, default: 'order'
13
+ field :qdmVersion, type: String, default: '5.3'
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ module QDM
2
+ # app/models/qdm/encounter_performed.rb
3
+ class EncounterPerformed < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :admissionSource, type: QDM::Code
8
+ field :relevantPeriod, type: QDM::Interval
9
+ field :dischargeDisposition, type: QDM::Code
10
+ field :facilityLocations, type: Array
11
+ field :diagnoses, type: Array
12
+ field :principalDiagnosis, type: QDM::Code
13
+ field :negationRationale, type: QDM::Code
14
+ field :lengthOfStay, type: QDM::Quantity
15
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.5'
16
+ field :category, type: String, default: 'encounter'
17
+ field :qdmStatus, type: String, default: 'performed'
18
+ field :qdmVersion, type: String, default: '5.3'
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ module QDM
2
+ # app/models/qdm/encounter_recommended.rb
3
+ class EncounterRecommended < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :reason, type: QDM::Code
8
+ field :facilityLocation, type: QDM::Code
9
+ field :negationRationale, type: QDM::Code
10
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.28'
11
+ field :category, type: String, default: 'encounter'
12
+ field :qdmStatus, type: String, default: 'recommended'
13
+ field :qdmVersion, type: String, default: '5.3'
14
+ end
15
+ end
@@ -0,0 +1,10 @@
1
+ module QDM
2
+ # app/models/qdm/facility_location.rb
3
+ class FacilityLocation < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :code, type: QDM::Code
7
+ field :locationPeriod, type: QDM::Interval
8
+ field :qdmVersion, type: String, default: '5.3'
9
+ end
10
+ end
@@ -0,0 +1,13 @@
1
+ module QDM
2
+ # app/models/qdm/family_history.rb
3
+ class FamilyHistory < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :relationship, type: QDM::Code
8
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.111'
9
+ field :qrdaOid, type: String, default: '2.16.840.1.113883.10.20.24.3.12'
10
+ field :category, type: String, default: 'family_history'
11
+ field :qdmVersion, type: String, default: '5.3'
12
+ end
13
+ end
@@ -0,0 +1,10 @@
1
+ module QDM
2
+ # app/models/qdm/id.rb
3
+ class Id < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :namingSystem, type: String
7
+ field :value, type: String
8
+ field :qdmVersion, type: String, default: '5.3'
9
+ end
10
+ end
@@ -0,0 +1,18 @@
1
+ module QDM
2
+ # app/models/qdm/immunization_administered.rb
3
+ class ImmunizationAdministered < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :reason, type: QDM::Code
8
+ field :dosage, type: QDM::Quantity
9
+ field :supply, type: QDM::Quantity
10
+ field :route, type: QDM::Code
11
+ field :negationRationale, type: QDM::Code
12
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.112'
13
+ field :qrdaOid, type: String, default: '2.16.840.1.113883.10.20.24.3.140'
14
+ field :category, type: String, default: 'immunization'
15
+ field :qdmStatus, type: String, default: 'administered'
16
+ field :qdmVersion, type: String, default: '5.3'
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module QDM
2
+ # app/models/qdm/immunization_order.rb
3
+ class ImmunizationOrder < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :activeDatetime, type: DateTime
7
+ field :authorDatetime, type: DateTime
8
+ field :dosage, type: QDM::Quantity
9
+ field :supply, type: QDM::Quantity
10
+ field :reason, type: QDM::Code
11
+ field :route, type: QDM::Code
12
+ field :negationRationale, type: QDM::Code
13
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.113'
14
+ field :category, type: String, default: 'immunization'
15
+ field :qdmStatus, type: String, default: 'order'
16
+ field :qdmVersion, type: String, default: '5.3'
17
+ end
18
+ end
@@ -0,0 +1,14 @@
1
+ module QDM
2
+ # app/models/qdm/intervention_order.rb
3
+ class InterventionOrder < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :reason, type: QDM::Code
8
+ field :negationRationale, type: QDM::Code
9
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.35'
10
+ field :category, type: String, default: 'intervention'
11
+ field :qdmStatus, type: String, default: 'order'
12
+ field :qdmVersion, type: String, default: '5.3'
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ module QDM
2
+ # app/models/qdm/intervention_performed.rb
3
+ class InterventionPerformed < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :relevantPeriod, type: QDM::Interval
8
+ field :reason, type: QDM::Code
9
+ field :result
10
+ field :status, type: QDM::Code
11
+ field :negationRationale, type: QDM::Code
12
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.36'
13
+ field :category, type: String, default: 'intervention'
14
+ field :qdmStatus, type: String, default: 'performed'
15
+ field :qdmVersion, type: String, default: '5.3'
16
+ end
17
+ end
@@ -0,0 +1,14 @@
1
+ module QDM
2
+ # app/models/qdm/intervention_recommended.rb
3
+ class InterventionRecommended < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :reason, type: QDM::Code
8
+ field :negationRationale, type: QDM::Code
9
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.37'
10
+ field :category, type: String, default: 'intervention'
11
+ field :qdmStatus, type: String, default: 'recommended'
12
+ field :qdmVersion, type: String, default: '5.3'
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ module QDM
2
+ # app/models/qdm/laboratory_test_order.rb
3
+ class LaboratoryTestOrder < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :reason, type: QDM::Code
8
+ field :method, type: QDM::Code
9
+ field :negationRationale, type: QDM::Code
10
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.41'
11
+ field :category, type: String, default: 'laboratory_test'
12
+ field :qdmStatus, type: String, default: 'order'
13
+ field :qdmVersion, type: String, default: '5.3'
14
+ end
15
+ end
@@ -0,0 +1,21 @@
1
+ module QDM
2
+ # app/models/qdm/laboratory_test_performed.rb
3
+ class LaboratoryTestPerformed < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :relevantPeriod, type: QDM::Interval
8
+ field :status, type: QDM::Code
9
+ field :method, type: QDM::Code
10
+ field :result
11
+ field :resultDatetime, type: DateTime
12
+ field :reason, type: QDM::Code
13
+ field :referenceRange, type: QDM::Interval
14
+ field :negationRationale, type: QDM::Code
15
+ field :components, type: Array
16
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.42'
17
+ field :category, type: String, default: 'laboratory_test'
18
+ field :qdmStatus, type: String, default: 'performed'
19
+ field :qdmVersion, type: String, default: '5.3'
20
+ end
21
+ end
@@ -0,0 +1,15 @@
1
+ module QDM
2
+ # app/models/qdm/laboratory_test_recommended.rb
3
+ class LaboratoryTestRecommended < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :method, type: QDM::Code
8
+ field :reason, type: QDM::Code
9
+ field :negationRationale, type: QDM::Code
10
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.43'
11
+ field :category, type: String, default: 'laboratory_test'
12
+ field :qdmStatus, type: String, default: 'recommended'
13
+ field :qdmVersion, type: String, default: '5.3'
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ module QDM
2
+ # app/models/qdm/medication_active.rb
3
+ class MedicationActive < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :relevantPeriod, type: QDM::Interval
7
+ field :dosage, type: QDM::Quantity
8
+ field :supply, type: QDM::Quantity
9
+ field :frequency, type: QDM::Code
10
+ field :route, type: QDM::Code
11
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.44'
12
+ field :category, type: String, default: 'medication'
13
+ field :qdmStatus, type: String, default: 'active'
14
+ field :qdmVersion, type: String, default: '5.3'
15
+ end
16
+ end
@@ -0,0 +1,19 @@
1
+ module QDM
2
+ # app/models/qdm/medication_administered.rb
3
+ class MedicationAdministered < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :relevantPeriod, type: QDM::Interval
8
+ field :dosage, type: QDM::Quantity
9
+ field :supply, type: QDM::Quantity
10
+ field :frequency, type: QDM::Code
11
+ field :route, type: QDM::Code
12
+ field :reason, type: QDM::Code
13
+ field :negationRationale, type: QDM::Code
14
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.45'
15
+ field :category, type: String, default: 'medication'
16
+ field :qdmStatus, type: String, default: 'administered'
17
+ field :qdmVersion, type: String, default: '5.3'
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+ module QDM
2
+ # app/models/qdm/medication_discharge.rb
3
+ class MedicationDischarge < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :refills, type: Integer
8
+ field :dosage, type: QDM::Quantity
9
+ field :supply, type: QDM::Quantity
10
+ field :frequency, type: QDM::Code
11
+ field :route, type: QDM::Code
12
+ field :negationRationale, type: QDM::Code
13
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.48'
14
+ field :category, type: String, default: 'medication'
15
+ field :qdmStatus, type: String, default: 'discharge'
16
+ field :qdmVersion, type: String, default: '5.3'
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+ module QDM
2
+ # app/models/qdm/medication_dispensed.rb
3
+ class MedicationDispensed < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :relevantPeriod, type: QDM::Interval
8
+ field :refills, type: Integer
9
+ field :dosage, type: QDM::Quantity
10
+ field :supply, type: QDM::Quantity
11
+ field :frequency, type: QDM::Code
12
+ field :route, type: QDM::Code
13
+ field :negationRationale, type: QDM::Code
14
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.49'
15
+ field :category, type: String, default: 'medication'
16
+ field :qdmStatus, type: String, default: 'dispensed'
17
+ field :qdmVersion, type: String, default: '5.3'
18
+ end
19
+ end
@@ -0,0 +1,22 @@
1
+ module QDM
2
+ # app/models/qdm/medication_order.rb
3
+ class MedicationOrder < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :activeDatetime, type: DateTime
7
+ field :relevantPeriod, type: QDM::Interval
8
+ field :authorDatetime, type: DateTime
9
+ field :refills, type: Integer
10
+ field :dosage, type: QDM::Quantity
11
+ field :supply, type: QDM::Quantity
12
+ field :frequency, type: QDM::Code
13
+ field :route, type: QDM::Code
14
+ field :method, type: QDM::Code
15
+ field :reason, type: QDM::Code
16
+ field :negationRationale, type: QDM::Code
17
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.51'
18
+ field :category, type: String, default: 'medication'
19
+ field :qdmStatus, type: String, default: 'order'
20
+ field :qdmVersion, type: String, default: '5.3'
21
+ end
22
+ end
@@ -0,0 +1,9 @@
1
+ module QDM
2
+ # app/models/qdm/participation.rb
3
+ class Participation < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :participationPeriod, type: QDM::Interval
7
+ field :qdmVersion, type: String, default: '5.3'
8
+ end
9
+ end
@@ -0,0 +1,201 @@
1
+ module QDM
2
+ # app/models/qdm/patient.rb
3
+ class Patient
4
+ include Mongoid::Document
5
+ field :birthDatetime, type: DateTime
6
+ field :qdmVersion, type: String, default: '5.3'
7
+ field :givenNames, type: Array
8
+ field :familyName, type: String
9
+ field :bundleId, type: String
10
+
11
+ # These are the "data criteria", or QDM datatype elements that exist on a
12
+ # patient.
13
+ embeds_many :dataElements, class_name: 'QDM::DataElement'
14
+
15
+ # This field is for application specific information only. If both Bonnie
16
+ # Cypress use a common field, it should be made a field on this model,
17
+ # and not put into extendedData.
18
+ field :extendedData, type: Hash
19
+
20
+ # Returns an array of elements that exist on this patient, that
21
+ # match the given HQMF data criteria OID.
22
+ def get_by_hqmf_oid(hqmf_oid)
23
+ dataElements.where(hqmfOid: hqmf_oid) || []
24
+ end
25
+
26
+ # Returns an array of elements that exist on this patient, that
27
+ # match the given QRDA data criteria OID.
28
+ def get_by_qrda_oid(qrda_oid)
29
+ dataElements.where(qrdaOid: qrda_oid) || []
30
+ end
31
+
32
+ # Returns an array of elements that exist on this patient. Optionally
33
+ # takes a category and/or, which returns all elements of that QDM
34
+ # category. Example: patient.get_data_elements('encounters')
35
+ # will return all Encounter QDM data types active on the patient.
36
+ def get_data_elements(category = nil, status = nil)
37
+ if category && status
38
+ dataElements.where(category: category, qdmStatus: status) || []
39
+ elsif category
40
+ dataElements.where(category: category) || []
41
+ else
42
+ dataElements || []
43
+ end
44
+ end
45
+
46
+ # Helper method; returns adverse_event data element types on this patient.
47
+ def adverse_events
48
+ get_data_elements('adverse_event')
49
+ end
50
+
51
+ # Helper method; returns allergy data element types on this patient.
52
+ def allergies
53
+ get_data_elements('allergy')
54
+ end
55
+
56
+ # Helper method; returns assessment data element types on this patient.
57
+ def assessments
58
+ get_data_elements('assessment')
59
+ end
60
+
61
+ # Helper method; returns care_experience data element types on this patient.
62
+ def care_experiences
63
+ get_data_elements('care_experience')
64
+ end
65
+
66
+ # Helper method; returns care_goal data element types on this patient.
67
+ def care_goals
68
+ get_data_elements('care_goal')
69
+ end
70
+
71
+ # Helper method; returns communication data element types on this patient.
72
+ def communications
73
+ get_data_elements('communication')
74
+ end
75
+
76
+ # Helper method; returns condition data element types on this patient.
77
+ def conditions
78
+ get_data_elements('condition')
79
+ end
80
+
81
+ # Helper method; returns device data element types on this patient.
82
+ def devices
83
+ get_data_elements('device')
84
+ end
85
+
86
+ # Helper method; returns diagnostic_study data element types on this patient.
87
+ def diagnostic_studies
88
+ get_data_elements('diagnostic_study')
89
+ end
90
+
91
+ # Helper method; returns encounter data element types on this patient.
92
+ def encounters
93
+ get_data_elements('encounter')
94
+ end
95
+
96
+ # Helper method; returns family_history data element types on this patient.
97
+ def family_history
98
+ get_data_elements('family_history')
99
+ end
100
+
101
+ # Helper method; returns functional_status data element types on this patient.
102
+ def functional_statuses
103
+ get_data_elements('functional_status')
104
+ end
105
+
106
+ # Helper method; returns immunization data element types on this patient.
107
+ def immunizations
108
+ get_data_elements('immunization')
109
+ end
110
+
111
+ # Helper method; returns intervention data element types on this patient.
112
+ def interventions
113
+ get_data_elements('intervention')
114
+ end
115
+
116
+ # Helper method; returns laboratory_test data element types on this patient.
117
+ def laboratory_tests
118
+ get_data_elements('laboratory_test')
119
+ end
120
+
121
+ # Helper method; returns medical_equipment data element types on this patient.
122
+ def medical_equipment
123
+ get_data_elements('medical_equipment')
124
+ end
125
+
126
+ # Helper method; returns medication data element types on this patient.
127
+ def medications
128
+ get_data_elements('medication')
129
+ end
130
+
131
+ # Helper method; returns physical_exam data element types on this patient.
132
+ def physical_exams
133
+ get_data_elements('physical_exam')
134
+ end
135
+
136
+ # Helper method; returns preference data element types on this patient.
137
+ def preferences
138
+ get_data_elements('preference')
139
+ end
140
+
141
+ # Helper method; returns provider_characteristic data element types on this patient.
142
+ def provider_characteristics
143
+ get_data_elements('provider_characteristic')
144
+ end
145
+
146
+ # Helper method; returns procedure data element types on this patient.
147
+ def procedures
148
+ get_data_elements('procedure')
149
+ end
150
+
151
+ # Helper method; returns result data element types on this patient.
152
+ def results
153
+ get_data_elements('result')
154
+ end
155
+
156
+ # Helper method; returns risk_category_assessment data element types on this patient.
157
+ def risk_category_assessments
158
+ get_data_elements('risk_category_assessment')
159
+ end
160
+
161
+ # Helper method; returns social_history data element types on this patient.
162
+ def social_history
163
+ get_data_elements('social_history')
164
+ end
165
+
166
+ # Helper method; returns substance data element types on this patient.
167
+ def substances
168
+ get_data_elements('substance')
169
+ end
170
+
171
+ # Helper method; returns symptom data element types on this patient.
172
+ def symptoms
173
+ get_data_elements('symptom')
174
+ end
175
+
176
+ # Helper method; returns system_characteristic data element types on this patient.
177
+ def system_characteristics
178
+ get_data_elements('system_characteristic')
179
+ end
180
+
181
+ # Helper method; returns transfer data element types on this patient.
182
+ def transfers
183
+ get_data_elements('transfer')
184
+ end
185
+
186
+ # Helper method; returns vital_sign data element types on this patient.
187
+ def vital_signs
188
+ get_data_elements('vital_sign')
189
+ end
190
+
191
+ # Return the Mongo id.
192
+ def id
193
+ _id
194
+ end
195
+
196
+ # Include '_type' in any JSON output. This is necessary for deserialization.
197
+ def to_json(options = nil)
198
+ serializable_hash(methods: :_type).to_json(options)
199
+ end
200
+ end
201
+ end
@@ -0,0 +1,11 @@
1
+ module QDM
2
+ # app/models/qdm/patient_care_experience.rb
3
+ class PatientCareExperience < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.52'
8
+ field :category, type: String, default: 'care_experience'
9
+ field :qdmVersion, type: String, default: '5.3'
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module QDM
2
+ # app/models/qdm/patient_characteristic.rb
3
+ class PatientCharacteristic < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :authorDatetime, type: DateTime
7
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.53'
8
+ field :category, type: String, default: 'patient_characteristic'
9
+ field :qdmVersion, type: String, default: '5.3'
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ module QDM
2
+ # app/models/qdm/patient_characteristic_birthdate.rb
3
+ class PatientCharacteristicBirthdate < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :birthDatetime, type: DateTime
7
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.54'
8
+ field :category, type: String, default: 'patient_characteristic'
9
+ field :qdmStatus, type: String, default: 'birthdate'
10
+ field :qdmVersion, type: String, default: '5.3'
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ module QDM
2
+ # app/models/qdm/patient_characteristic_clinical_trial_participant.rb
3
+ class PatientCharacteristicClinicalTrialParticipant < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :reason, type: QDM::Code
7
+ field :relevantPeriod, type: QDM::Interval
8
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.6'
9
+ field :qrdaOid, type: String, default: '2.16.840.1.113883.10.20.24.3.51'
10
+ field :category, type: String, default: 'patient_characteristic'
11
+ field :qdmStatus, type: String, default: 'clinical_trial_participant'
12
+ field :qdmVersion, type: String, default: '5.3'
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ module QDM
2
+ # app/models/qdm/patient_characteristic_ethnicity.rb
3
+ class PatientCharacteristicEthnicity < DataElement
4
+ include Mongoid::Document
5
+ embedded_in :patient
6
+ field :hqmfOid, type: String, default: '2.16.840.1.113883.10.20.28.3.56'
7
+ field :category, type: String, default: 'patient_characteristic'
8
+ field :qdmStatus, type: String, default: 'ethnicity'
9
+ field :qdmVersion, type: String, default: '5.3'
10
+ end
11
+ end