cqm-models 1.0.3 → 1.1.1.0
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.
- checksums.yaml +5 -5
- data/.eslintrc.json +10 -2
- data/.github/PULL_REQUEST_TEMPLATE.md +0 -4
- data/.rubocop.yml +3 -0
- data/.travis.yml +31 -1
- data/README.md +59 -2
- data/app/assets/javascripts/AdverseEvent.js +16 -7
- data/app/assets/javascripts/AllDataElements.js +6 -6
- data/app/assets/javascripts/AllergyIntolerance.js +16 -7
- data/app/assets/javascripts/AssessmentOrder.js +15 -6
- data/app/assets/javascripts/AssessmentPerformed.js +16 -7
- data/app/assets/javascripts/AssessmentRecommended.js +16 -7
- data/app/assets/javascripts/CareGoal.js +16 -7
- data/app/assets/javascripts/CommunicationPerformed.js +15 -6
- data/app/assets/javascripts/DeviceApplied.js +16 -7
- data/app/assets/javascripts/DeviceOrder.js +16 -7
- data/app/assets/javascripts/DeviceRecommended.js +16 -7
- data/app/assets/javascripts/Diagnosis.js +16 -7
- data/app/assets/javascripts/DiagnosticStudyOrder.js +16 -7
- data/app/assets/javascripts/DiagnosticStudyPerformed.js +16 -7
- data/app/assets/javascripts/DiagnosticStudyRecommended.js +16 -7
- data/app/assets/javascripts/EncounterOrder.js +16 -7
- data/app/assets/javascripts/EncounterPerformed.js +16 -7
- data/app/assets/javascripts/EncounterRecommended.js +16 -7
- data/app/assets/javascripts/FamilyHistory.js +16 -7
- data/app/assets/javascripts/Id.js +7 -3
- data/app/assets/javascripts/ImmunizationAdministered.js +16 -7
- data/app/assets/javascripts/ImmunizationOrder.js +16 -7
- data/app/assets/javascripts/IndividualResult.js +7 -2
- data/app/assets/javascripts/InterventionOrder.js +16 -7
- data/app/assets/javascripts/InterventionPerformed.js +16 -7
- data/app/assets/javascripts/InterventionRecommended.js +16 -7
- data/app/assets/javascripts/LaboratoryTestOrder.js +16 -7
- data/app/assets/javascripts/LaboratoryTestPerformed.js +16 -7
- data/app/assets/javascripts/LaboratoryTestRecommended.js +16 -7
- data/app/assets/javascripts/MedicationActive.js +16 -7
- data/app/assets/javascripts/MedicationAdministered.js +16 -7
- data/app/assets/javascripts/MedicationDischarge.js +16 -7
- data/app/assets/javascripts/MedicationDispensed.js +16 -7
- data/app/assets/javascripts/MedicationOrder.js +16 -7
- data/app/assets/javascripts/Participation.js +15 -6
- data/app/assets/javascripts/PatientCareExperience.js +16 -7
- data/app/assets/javascripts/PatientCharacteristic.js +16 -7
- data/app/assets/javascripts/PatientCharacteristicBirthdate.js +16 -7
- data/app/assets/javascripts/PatientCharacteristicClinicalTrialParticipant.js +16 -7
- data/app/assets/javascripts/PatientCharacteristicEthnicity.js +16 -7
- data/app/assets/javascripts/PatientCharacteristicExpired.js +16 -7
- data/app/assets/javascripts/PatientCharacteristicPayer.js +16 -7
- data/app/assets/javascripts/PatientCharacteristicRace.js +16 -7
- data/app/assets/javascripts/PatientCharacteristicSex.js +16 -7
- data/app/assets/javascripts/PhysicalExamOrder.js +16 -7
- data/app/assets/javascripts/PhysicalExamPerformed.js +16 -7
- data/app/assets/javascripts/PhysicalExamRecommended.js +16 -7
- data/app/assets/javascripts/ProcedureOrder.js +16 -7
- data/app/assets/javascripts/ProcedurePerformed.js +16 -7
- data/app/assets/javascripts/ProcedureRecommended.js +16 -7
- data/app/assets/javascripts/ProviderCareExperience.js +16 -7
- data/app/assets/javascripts/ProviderCharacteristic.js +16 -7
- data/app/assets/javascripts/QDMPatient.js +262 -0
- data/app/assets/javascripts/Result.js +7 -2
- data/app/assets/javascripts/ResultComponent.js +14 -6
- data/app/assets/javascripts/SubstanceAdministered.js +16 -7
- data/app/assets/javascripts/SubstanceOrder.js +16 -7
- data/app/assets/javascripts/SubstanceRecommended.js +16 -7
- data/app/assets/javascripts/Symptom.js +16 -7
- data/app/assets/javascripts/attributes/Component.js +30 -0
- data/app/assets/javascripts/attributes/FacilityLocation.js +30 -0
- data/app/assets/javascripts/basetypes/Any.js +1 -1
- data/app/assets/javascripts/basetypes/Code.js +1 -1
- data/app/assets/javascripts/basetypes/DataElement.js +2 -1
- data/app/assets/javascripts/basetypes/DateTime.js +5 -1
- data/app/assets/javascripts/basetypes/Interval.js +1 -1
- data/app/assets/javascripts/basetypes/Quantity.js +1 -1
- data/app/assets/javascripts/basetypes/Ratio.js +1 -1
- data/app/assets/javascripts/browser.js +3 -0
- data/app/assets/javascripts/cqm/AllCQMModels.js +24 -0
- data/app/assets/javascripts/cqm/CQLLibrary.js +32 -0
- data/app/assets/javascripts/cqm/CQLStatementDependency.js +28 -0
- data/app/assets/javascripts/cqm/Concept.js +17 -0
- data/app/assets/javascripts/cqm/Measure.js +108 -0
- data/app/assets/javascripts/{MeasurePackage.js → cqm/MeasurePackage.js} +9 -3
- data/app/assets/javascripts/cqm/Patient.js +38 -0
- data/app/assets/javascripts/cqm/PopulationSet.js +88 -0
- data/app/assets/javascripts/cqm/Provider.js +44 -0
- data/app/assets/javascripts/cqm/ValueSet.js +26 -0
- data/app/assets/javascripts/index.js +18 -8
- data/app/models/{qdm/tacoma → cqm}/concept.rb +4 -4
- data/app/models/cqm/cql_library.rb +22 -0
- data/app/models/cqm/cql_statement_dependency.rb +24 -0
- data/app/models/cqm/measure.rb +105 -0
- data/app/models/{qdm/tacoma → cqm}/measure_package.rb +2 -2
- data/app/models/cqm/patient.rb +20 -0
- data/app/models/cqm/population_set.rb +86 -0
- data/app/models/cqm/provider.rb +110 -0
- data/app/models/cqm/valueset.rb +15 -0
- data/app/models/hqmfOid_to_datatype_map.json +55 -0
- data/app/models/model_finder.rb +12 -0
- data/app/models/models.rb +18 -6
- data/app/models/qdm/adverse_event.rb +3 -2
- data/app/models/qdm/allergy_intolerance.rb +2 -1
- data/app/models/qdm/assessment_order.rb +1 -0
- data/app/models/qdm/assessment_performed.rb +2 -1
- data/app/models/qdm/assessment_recommended.rb +2 -1
- data/app/models/qdm/attributes/attribute.rb +63 -0
- data/app/models/qdm/{component.rb → attributes/component.rb} +1 -1
- data/app/models/qdm/{facility_location.rb → attributes/facility_location.rb} +1 -1
- data/app/models/qdm/basetypes/data_element.rb +21 -6
- data/app/models/qdm/basetypes/interval.rb +2 -1
- data/app/models/qdm/care_goal.rb +2 -1
- data/app/models/qdm/communication_performed.rb +1 -0
- data/app/models/qdm/device_applied.rb +2 -1
- data/app/models/qdm/device_order.rb +2 -1
- data/app/models/qdm/device_recommended.rb +2 -1
- data/app/models/qdm/diagnosis.rb +2 -1
- data/app/models/qdm/diagnostic_study_order.rb +2 -1
- data/app/models/qdm/diagnostic_study_performed.rb +3 -2
- data/app/models/qdm/diagnostic_study_recommended.rb +2 -1
- data/app/models/qdm/encounter_order.rb +3 -2
- data/app/models/qdm/encounter_performed.rb +2 -1
- data/app/models/qdm/encounter_recommended.rb +3 -2
- data/app/models/qdm/family_history.rb +2 -1
- data/app/models/qdm/immunization_administered.rb +2 -1
- data/app/models/qdm/immunization_order.rb +2 -1
- data/app/models/qdm/intervention_order.rb +2 -1
- data/app/models/qdm/intervention_performed.rb +2 -1
- data/app/models/qdm/intervention_recommended.rb +2 -1
- data/app/models/qdm/laboratory_test_order.rb +2 -1
- data/app/models/qdm/laboratory_test_performed.rb +2 -1
- data/app/models/qdm/laboratory_test_recommended.rb +2 -1
- data/app/models/qdm/medication_active.rb +2 -1
- data/app/models/qdm/medication_administered.rb +2 -1
- data/app/models/qdm/medication_discharge.rb +2 -1
- data/app/models/qdm/medication_dispensed.rb +4 -3
- data/app/models/qdm/medication_order.rb +3 -2
- data/app/models/qdm/participation.rb +1 -0
- data/app/models/qdm/patient.rb +7 -4
- data/app/models/qdm/patient_care_experience.rb +2 -1
- data/app/models/qdm/patient_characteristic.rb +2 -1
- data/app/models/qdm/patient_characteristic_birthdate.rb +2 -1
- data/app/models/qdm/patient_characteristic_clinical_trial_participant.rb +2 -1
- data/app/models/qdm/patient_characteristic_ethnicity.rb +2 -1
- data/app/models/qdm/patient_characteristic_expired.rb +2 -1
- data/app/models/qdm/patient_characteristic_payer.rb +2 -1
- data/app/models/qdm/patient_characteristic_race.rb +2 -1
- data/app/models/qdm/patient_characteristic_sex.rb +2 -1
- data/app/models/qdm/physical_exam_order.rb +2 -1
- data/app/models/qdm/physical_exam_performed.rb +2 -1
- data/app/models/qdm/physical_exam_recommended.rb +2 -1
- data/app/models/qdm/procedure_order.rb +2 -1
- data/app/models/qdm/procedure_performed.rb +2 -1
- data/app/models/qdm/procedure_recommended.rb +2 -1
- data/app/models/qdm/provider_care_experience.rb +2 -1
- data/app/models/qdm/provider_characteristic.rb +2 -1
- data/app/models/qdm/substance_administered.rb +2 -1
- data/app/models/qdm/substance_order.rb +2 -1
- data/app/models/qdm/substance_recommended.rb +2 -1
- data/app/models/qdm/symptom.rb +2 -1
- data/bin/build_cql_execution.sh +8 -0
- data/bin/validate_browser.sh +17 -0
- data/bin/validate_generator.sh +12 -0
- data/cqm-models.gemspec +5 -2
- data/data/oids_qdm_5.4.json +321 -0
- data/data/{oids.json → oids_unversioned.json} +0 -0
- data/dist/browser.js +102937 -0
- data/dist/index.js +36637 -36540
- data/lib/generate_models.rb +89 -93
- data/lib/generate_patients.rb +125 -0
- data/lib/generate_types.rb +64 -0
- data/lib/generators/custom_mongo/model.rb.tt +20 -0
- data/lib/generators/custom_mongo/model_generator.rb +34 -0
- data/notice.md +9 -0
- data/package.json +12 -6
- data/templates/id_template.js.erb +8 -3
- data/templates/index_template.js.erb +18 -8
- data/templates/models_template.rb.erb +20 -4
- data/templates/mongoose_template.js.erb +23 -15
- data/templates/patient_extension.rb.erb +7 -4
- data/templates/patient_template.js.erb +88 -87
- data/yarn.lock +552 -347
- metadata +86 -19
- data/app/assets/javascripts/Component.js +0 -26
- data/app/assets/javascripts/Concept.js +0 -14
- data/app/assets/javascripts/FacilityLocation.js +0 -26
- data/app/assets/javascripts/Measure.js +0 -78
- data/app/assets/javascripts/Patient.js +0 -262
- data/app/assets/javascripts/ValueSet.js +0 -30
- data/app/models/qdm/tacoma/measure.rb +0 -174
- data/app/models/qdm/tacoma/valueset.rb +0 -68
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cqm-models
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- aholmes@mitre.org
|
|
@@ -10,8 +10,22 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: exe
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2019-05-
|
|
13
|
+
date: 2019-05-22 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
|
+
- !ruby/object:Gem::Dependency
|
|
16
|
+
name: bundle-audit
|
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
|
18
|
+
requirements:
|
|
19
|
+
- - ">="
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '0'
|
|
22
|
+
type: :development
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
requirements:
|
|
26
|
+
- - ">="
|
|
27
|
+
- !ruby/object:Gem::Version
|
|
28
|
+
version: '0'
|
|
15
29
|
- !ruby/object:Gem::Dependency
|
|
16
30
|
name: bundler
|
|
17
31
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -40,6 +54,20 @@ dependencies:
|
|
|
40
54
|
- - "~>"
|
|
41
55
|
- !ruby/object:Gem::Version
|
|
42
56
|
version: 10.0.0
|
|
57
|
+
- !ruby/object:Gem::Dependency
|
|
58
|
+
name: codecov
|
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
|
60
|
+
requirements:
|
|
61
|
+
- - ">="
|
|
62
|
+
- !ruby/object:Gem::Version
|
|
63
|
+
version: '0'
|
|
64
|
+
type: :development
|
|
65
|
+
prerelease: false
|
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
67
|
+
requirements:
|
|
68
|
+
- - ">="
|
|
69
|
+
- !ruby/object:Gem::Version
|
|
70
|
+
version: '0'
|
|
43
71
|
- !ruby/object:Gem::Dependency
|
|
44
72
|
name: mongoid
|
|
45
73
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -60,14 +88,14 @@ dependencies:
|
|
|
60
88
|
requirements:
|
|
61
89
|
- - "~>"
|
|
62
90
|
- !ruby/object:Gem::Version
|
|
63
|
-
version: '5.
|
|
91
|
+
version: '5.2'
|
|
64
92
|
type: :development
|
|
65
93
|
prerelease: false
|
|
66
94
|
version_requirements: !ruby/object:Gem::Requirement
|
|
67
95
|
requirements:
|
|
68
96
|
- - "~>"
|
|
69
97
|
- !ruby/object:Gem::Version
|
|
70
|
-
version: '5.
|
|
98
|
+
version: '5.2'
|
|
71
99
|
- !ruby/object:Gem::Dependency
|
|
72
100
|
name: rake
|
|
73
101
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -110,6 +138,20 @@ dependencies:
|
|
|
110
138
|
- - "~>"
|
|
111
139
|
- !ruby/object:Gem::Version
|
|
112
140
|
version: 0.54.0
|
|
141
|
+
- !ruby/object:Gem::Dependency
|
|
142
|
+
name: simplecov
|
|
143
|
+
requirement: !ruby/object:Gem::Requirement
|
|
144
|
+
requirements:
|
|
145
|
+
- - ">="
|
|
146
|
+
- !ruby/object:Gem::Version
|
|
147
|
+
version: '0'
|
|
148
|
+
type: :development
|
|
149
|
+
prerelease: false
|
|
150
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
151
|
+
requirements:
|
|
152
|
+
- - ">="
|
|
153
|
+
- !ruby/object:Gem::Version
|
|
154
|
+
version: '0'
|
|
113
155
|
description: This library contains auto generated Mongo (Mongoid) models that correspond
|
|
114
156
|
to the QDM (Quality Data Model) specification.
|
|
115
157
|
email:
|
|
@@ -136,8 +178,6 @@ files:
|
|
|
136
178
|
- app/assets/javascripts/AssessmentRecommended.js
|
|
137
179
|
- app/assets/javascripts/CareGoal.js
|
|
138
180
|
- app/assets/javascripts/CommunicationPerformed.js
|
|
139
|
-
- app/assets/javascripts/Component.js
|
|
140
|
-
- app/assets/javascripts/Concept.js
|
|
141
181
|
- app/assets/javascripts/DeviceApplied.js
|
|
142
182
|
- app/assets/javascripts/DeviceOrder.js
|
|
143
183
|
- app/assets/javascripts/DeviceRecommended.js
|
|
@@ -148,7 +188,6 @@ files:
|
|
|
148
188
|
- app/assets/javascripts/EncounterOrder.js
|
|
149
189
|
- app/assets/javascripts/EncounterPerformed.js
|
|
150
190
|
- app/assets/javascripts/EncounterRecommended.js
|
|
151
|
-
- app/assets/javascripts/FacilityLocation.js
|
|
152
191
|
- app/assets/javascripts/FamilyHistory.js
|
|
153
192
|
- app/assets/javascripts/Id.js
|
|
154
193
|
- app/assets/javascripts/ImmunizationAdministered.js
|
|
@@ -160,15 +199,12 @@ files:
|
|
|
160
199
|
- app/assets/javascripts/LaboratoryTestOrder.js
|
|
161
200
|
- app/assets/javascripts/LaboratoryTestPerformed.js
|
|
162
201
|
- app/assets/javascripts/LaboratoryTestRecommended.js
|
|
163
|
-
- app/assets/javascripts/Measure.js
|
|
164
|
-
- app/assets/javascripts/MeasurePackage.js
|
|
165
202
|
- app/assets/javascripts/MedicationActive.js
|
|
166
203
|
- app/assets/javascripts/MedicationAdministered.js
|
|
167
204
|
- app/assets/javascripts/MedicationDischarge.js
|
|
168
205
|
- app/assets/javascripts/MedicationDispensed.js
|
|
169
206
|
- app/assets/javascripts/MedicationOrder.js
|
|
170
207
|
- app/assets/javascripts/Participation.js
|
|
171
|
-
- app/assets/javascripts/Patient.js
|
|
172
208
|
- app/assets/javascripts/PatientCareExperience.js
|
|
173
209
|
- app/assets/javascripts/PatientCharacteristic.js
|
|
174
210
|
- app/assets/javascripts/PatientCharacteristicBirthdate.js
|
|
@@ -186,13 +222,15 @@ files:
|
|
|
186
222
|
- app/assets/javascripts/ProcedureRecommended.js
|
|
187
223
|
- app/assets/javascripts/ProviderCareExperience.js
|
|
188
224
|
- app/assets/javascripts/ProviderCharacteristic.js
|
|
225
|
+
- app/assets/javascripts/QDMPatient.js
|
|
189
226
|
- app/assets/javascripts/Result.js
|
|
190
227
|
- app/assets/javascripts/ResultComponent.js
|
|
191
228
|
- app/assets/javascripts/SubstanceAdministered.js
|
|
192
229
|
- app/assets/javascripts/SubstanceOrder.js
|
|
193
230
|
- app/assets/javascripts/SubstanceRecommended.js
|
|
194
231
|
- app/assets/javascripts/Symptom.js
|
|
195
|
-
- app/assets/javascripts/
|
|
232
|
+
- app/assets/javascripts/attributes/Component.js
|
|
233
|
+
- app/assets/javascripts/attributes/FacilityLocation.js
|
|
196
234
|
- app/assets/javascripts/basetypes/Any.js
|
|
197
235
|
- app/assets/javascripts/basetypes/Code.js
|
|
198
236
|
- app/assets/javascripts/basetypes/DataElement.js
|
|
@@ -200,13 +238,38 @@ files:
|
|
|
200
238
|
- app/assets/javascripts/basetypes/Interval.js
|
|
201
239
|
- app/assets/javascripts/basetypes/Quantity.js
|
|
202
240
|
- app/assets/javascripts/basetypes/Ratio.js
|
|
241
|
+
- app/assets/javascripts/browser.js
|
|
242
|
+
- app/assets/javascripts/cqm/AllCQMModels.js
|
|
243
|
+
- app/assets/javascripts/cqm/CQLLibrary.js
|
|
244
|
+
- app/assets/javascripts/cqm/CQLStatementDependency.js
|
|
245
|
+
- app/assets/javascripts/cqm/Concept.js
|
|
246
|
+
- app/assets/javascripts/cqm/Measure.js
|
|
247
|
+
- app/assets/javascripts/cqm/MeasurePackage.js
|
|
248
|
+
- app/assets/javascripts/cqm/Patient.js
|
|
249
|
+
- app/assets/javascripts/cqm/PopulationSet.js
|
|
250
|
+
- app/assets/javascripts/cqm/Provider.js
|
|
251
|
+
- app/assets/javascripts/cqm/ValueSet.js
|
|
203
252
|
- app/assets/javascripts/index.js
|
|
253
|
+
- app/models/cqm/concept.rb
|
|
254
|
+
- app/models/cqm/cql_library.rb
|
|
255
|
+
- app/models/cqm/cql_statement_dependency.rb
|
|
256
|
+
- app/models/cqm/measure.rb
|
|
257
|
+
- app/models/cqm/measure_package.rb
|
|
258
|
+
- app/models/cqm/patient.rb
|
|
259
|
+
- app/models/cqm/population_set.rb
|
|
260
|
+
- app/models/cqm/provider.rb
|
|
261
|
+
- app/models/cqm/valueset.rb
|
|
262
|
+
- app/models/hqmfOid_to_datatype_map.json
|
|
263
|
+
- app/models/model_finder.rb
|
|
204
264
|
- app/models/models.rb
|
|
205
265
|
- app/models/qdm/adverse_event.rb
|
|
206
266
|
- app/models/qdm/allergy_intolerance.rb
|
|
207
267
|
- app/models/qdm/assessment_order.rb
|
|
208
268
|
- app/models/qdm/assessment_performed.rb
|
|
209
269
|
- app/models/qdm/assessment_recommended.rb
|
|
270
|
+
- app/models/qdm/attributes/attribute.rb
|
|
271
|
+
- app/models/qdm/attributes/component.rb
|
|
272
|
+
- app/models/qdm/attributes/facility_location.rb
|
|
210
273
|
- app/models/qdm/basetypes/code.rb
|
|
211
274
|
- app/models/qdm/basetypes/data_element.rb
|
|
212
275
|
- app/models/qdm/basetypes/interval.rb
|
|
@@ -214,7 +277,6 @@ files:
|
|
|
214
277
|
- app/models/qdm/basetypes/ratio.rb
|
|
215
278
|
- app/models/qdm/care_goal.rb
|
|
216
279
|
- app/models/qdm/communication_performed.rb
|
|
217
|
-
- app/models/qdm/component.rb
|
|
218
280
|
- app/models/qdm/device_applied.rb
|
|
219
281
|
- app/models/qdm/device_order.rb
|
|
220
282
|
- app/models/qdm/device_recommended.rb
|
|
@@ -225,7 +287,6 @@ files:
|
|
|
225
287
|
- app/models/qdm/encounter_order.rb
|
|
226
288
|
- app/models/qdm/encounter_performed.rb
|
|
227
289
|
- app/models/qdm/encounter_recommended.rb
|
|
228
|
-
- app/models/qdm/facility_location.rb
|
|
229
290
|
- app/models/qdm/family_history.rb
|
|
230
291
|
- app/models/qdm/id.rb
|
|
231
292
|
- app/models/qdm/immunization_administered.rb
|
|
@@ -265,20 +326,25 @@ files:
|
|
|
265
326
|
- app/models/qdm/substance_order.rb
|
|
266
327
|
- app/models/qdm/substance_recommended.rb
|
|
267
328
|
- app/models/qdm/symptom.rb
|
|
268
|
-
- app/models/qdm/tacoma/concept.rb
|
|
269
329
|
- app/models/qdm/tacoma/individual_result.rb
|
|
270
|
-
-
|
|
271
|
-
- app/models/qdm/tacoma/measure_package.rb
|
|
272
|
-
- app/models/qdm/tacoma/valueset.rb
|
|
330
|
+
- bin/build_cql_execution.sh
|
|
273
331
|
- bin/console
|
|
274
332
|
- bin/setup
|
|
333
|
+
- bin/validate_browser.sh
|
|
275
334
|
- bin/validate_dist.sh
|
|
335
|
+
- bin/validate_generator.sh
|
|
276
336
|
- config/mongoid.yml
|
|
277
337
|
- cqm-models.gemspec
|
|
278
|
-
- data/
|
|
338
|
+
- data/oids_qdm_5.4.json
|
|
339
|
+
- data/oids_unversioned.json
|
|
340
|
+
- dist/browser.js
|
|
279
341
|
- dist/index.js
|
|
280
342
|
- lib/cqm/models.rb
|
|
281
343
|
- lib/generate_models.rb
|
|
344
|
+
- lib/generate_patients.rb
|
|
345
|
+
- lib/generate_types.rb
|
|
346
|
+
- lib/generators/custom_mongo/model.rb.tt
|
|
347
|
+
- lib/generators/custom_mongo/model_generator.rb
|
|
282
348
|
- modelinfo/qdm-modelinfo-4.2.xml
|
|
283
349
|
- modelinfo/qdm-modelinfo-4.3.xml
|
|
284
350
|
- modelinfo/qdm-modelinfo-5.0.1.xml
|
|
@@ -286,6 +352,7 @@ files:
|
|
|
286
352
|
- modelinfo/qdm-modelinfo-5.0.xml
|
|
287
353
|
- modelinfo/qdm-modelinfo-5.3.xml
|
|
288
354
|
- modelinfo/qdm-modelinfo-5.4.xml
|
|
355
|
+
- notice.md
|
|
289
356
|
- package.json
|
|
290
357
|
- templates/all_data_elements_template.js.erb
|
|
291
358
|
- templates/id_template.js.erb
|
|
@@ -316,7 +383,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
316
383
|
version: '0'
|
|
317
384
|
requirements: []
|
|
318
385
|
rubyforge_project:
|
|
319
|
-
rubygems_version: 2.
|
|
386
|
+
rubygems_version: 2.7.7
|
|
320
387
|
signing_key:
|
|
321
388
|
specification_version: 4
|
|
322
389
|
summary: Mongo models that correspond to the QDM specification.
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
const mongoose = require('mongoose');
|
|
2
|
-
const { DataElementSchema } = require('./basetypes/DataElement');
|
|
3
|
-
const Code = require('./basetypes/Code');
|
|
4
|
-
const Interval = require('./basetypes/Interval');
|
|
5
|
-
const Quantity = require('./basetypes/Quantity');
|
|
6
|
-
const DateTime = require('./basetypes/DateTime');
|
|
7
|
-
|
|
8
|
-
const { FacilityLocationSchema } = require('./FacilityLocation');
|
|
9
|
-
const { IdSchema } = require('./Id');
|
|
10
|
-
const Any = require('./basetypes/Any');
|
|
11
|
-
|
|
12
|
-
const [Number, String] = [
|
|
13
|
-
mongoose.Schema.Types.Number,
|
|
14
|
-
mongoose.Schema.Types.String,
|
|
15
|
-
];
|
|
16
|
-
|
|
17
|
-
const ComponentSchema = new mongoose.Schema({
|
|
18
|
-
code: Code,
|
|
19
|
-
result: Any,
|
|
20
|
-
qdmVersion: { type: String, default: '5.4' },
|
|
21
|
-
_type: { type: String, default: 'Component' },
|
|
22
|
-
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
module.exports.ComponentSchema = ComponentSchema;
|
|
26
|
-
module.exports.Component = mongoose.model('Component', ComponentSchema);
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
const mongoose = require('mongoose');
|
|
2
|
-
|
|
3
|
-
const mString = mongoose.Schema.Types.String;
|
|
4
|
-
|
|
5
|
-
const ConceptSchema = mongoose.Schema({
|
|
6
|
-
code: mString,
|
|
7
|
-
code_system: mString,
|
|
8
|
-
code_system_name: mString,
|
|
9
|
-
code_system_version: mString,
|
|
10
|
-
display_name: mString,
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
module.exports.ConceptSchema = ConceptSchema;
|
|
14
|
-
module.exports.Concept = mongoose.model('concept', ConceptSchema);
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
const mongoose = require('mongoose');
|
|
2
|
-
const { DataElementSchema } = require('./basetypes/DataElement');
|
|
3
|
-
const Code = require('./basetypes/Code');
|
|
4
|
-
const Interval = require('./basetypes/Interval');
|
|
5
|
-
const Quantity = require('./basetypes/Quantity');
|
|
6
|
-
const DateTime = require('./basetypes/DateTime');
|
|
7
|
-
const { ComponentSchema } = require('./Component');
|
|
8
|
-
|
|
9
|
-
const { IdSchema } = require('./Id');
|
|
10
|
-
const Any = require('./basetypes/Any');
|
|
11
|
-
|
|
12
|
-
const [Number, String] = [
|
|
13
|
-
mongoose.Schema.Types.Number,
|
|
14
|
-
mongoose.Schema.Types.String,
|
|
15
|
-
];
|
|
16
|
-
|
|
17
|
-
const FacilityLocationSchema = new mongoose.Schema({
|
|
18
|
-
code: Code,
|
|
19
|
-
locationPeriod: Interval,
|
|
20
|
-
qdmVersion: { type: String, default: '5.4' },
|
|
21
|
-
_type: { type: String, default: 'FacilityLocation' },
|
|
22
|
-
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
module.exports.FacilityLocationSchema = FacilityLocationSchema;
|
|
26
|
-
module.exports.FacilityLocation = mongoose.model('FacilityLocation', FacilityLocationSchema);
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
const mongoose = require('mongoose');
|
|
2
|
-
const Code = require('./basetypes/Code');
|
|
3
|
-
const Interval = require('./basetypes/Interval');
|
|
4
|
-
const Quantity = require('./basetypes/Quantity');
|
|
5
|
-
|
|
6
|
-
const [Number, String, Boolean, Mixed, ObjectId, Date] = [
|
|
7
|
-
mongoose.Schema.Types.Number,
|
|
8
|
-
mongoose.Schema.Types.String,
|
|
9
|
-
mongoose.Schema.Types.Boolean,
|
|
10
|
-
mongoose.Schema.Types.Mixed,
|
|
11
|
-
mongoose.Schema.Types.ObjectId,
|
|
12
|
-
mongoose.Schema.Types.Date,
|
|
13
|
-
];
|
|
14
|
-
|
|
15
|
-
const MeasureSchema = mongoose.Schema(
|
|
16
|
-
{
|
|
17
|
-
// ID/other measure information
|
|
18
|
-
id: String,
|
|
19
|
-
measure_id: String,
|
|
20
|
-
hqmf_id: String,
|
|
21
|
-
hqmf_set_id: String,
|
|
22
|
-
hqmf_version_number: Number,
|
|
23
|
-
cms_id: String,
|
|
24
|
-
title: String,
|
|
25
|
-
description: String,
|
|
26
|
-
type: String,
|
|
27
|
-
category: { type: String, default: 'Uncategorized' },
|
|
28
|
-
|
|
29
|
-
// Measure type variables
|
|
30
|
-
episode_of_care: Boolean,
|
|
31
|
-
continuous_constiable: Boolean,
|
|
32
|
-
episode_ids: [],
|
|
33
|
-
|
|
34
|
-
// Publishing data (used by Bonnie)
|
|
35
|
-
published: Boolean,
|
|
36
|
-
publish_date: Date,
|
|
37
|
-
version: Number,
|
|
38
|
-
|
|
39
|
-
// ELM/CQL Measure-logic related data
|
|
40
|
-
elm_annotations: Mixed,
|
|
41
|
-
cql: [String],
|
|
42
|
-
elm: [Mixed],
|
|
43
|
-
main_cql_library: String,
|
|
44
|
-
cql_statement_dependencies: Mixed,
|
|
45
|
-
|
|
46
|
-
// HQMF/Tacoma-specific Measure-logic related data
|
|
47
|
-
population_criteria: Mixed,
|
|
48
|
-
data_criteria: Mixed,
|
|
49
|
-
source_data_criteria: Mixed,
|
|
50
|
-
measure_period: Interval,
|
|
51
|
-
measure_attributes: [],
|
|
52
|
-
populations: [Mixed],
|
|
53
|
-
populations_cql_map: Mixed,
|
|
54
|
-
observations: [Mixed],
|
|
55
|
-
// TODO: Depending on how we restructure the Measure/Population object, may be deleted in the future
|
|
56
|
-
population_ids: Mixed,
|
|
57
|
-
|
|
58
|
-
value_sets: [{ type: ObjectId, ref: 'ValueSet' }],
|
|
59
|
-
|
|
60
|
-
complexity: Mixed, // Bonnie-specific?
|
|
61
|
-
|
|
62
|
-
// Relations to other model classes
|
|
63
|
-
user: { type: ObjectId, ref: 'User', index: true }, // Bonnie-specific
|
|
64
|
-
bundle: { type: ObjectId, ref: 'Bundle' }, // Cypress-specific, but used in Bonnie-bundler as well
|
|
65
|
-
package: { type: ObjectId, ref: 'MeasurePackage' }, // Bonnie specific
|
|
66
|
-
},
|
|
67
|
-
// Options
|
|
68
|
-
{
|
|
69
|
-
timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' }, // These are the Mongoid conventions for timestamps
|
|
70
|
-
}
|
|
71
|
-
);
|
|
72
|
-
|
|
73
|
-
MeasureSchema.virtual('ALL_POPULATION_CODES').get(() => ['STRAT', 'IPP', 'DENOM', 'DENEX', 'NUMER', 'NUMEX', 'DENEXCEP', 'MSRPOPL', 'OBSERV', 'MSRPOPLEX']);
|
|
74
|
-
|
|
75
|
-
MeasureSchema.virtual('cqlSkipStatements').get(() => ['SDE Ethnicity', 'SDE Payer', 'SDE Race', 'SDE Sex']);
|
|
76
|
-
|
|
77
|
-
module.exports.MeasureSchema = MeasureSchema;
|
|
78
|
-
module.exports.Measure = mongoose.model('measure', MeasureSchema);
|
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
const mongoose = require('mongoose');
|
|
2
|
-
const Code = require('./basetypes/Code');
|
|
3
|
-
const Interval = require('./basetypes/Interval');
|
|
4
|
-
const Quantity = require('./basetypes/Quantity');
|
|
5
|
-
const DateTime = require('./basetypes/DateTime');
|
|
6
|
-
const AllDataElements = require('./AllDataElements');
|
|
7
|
-
|
|
8
|
-
const [Schema, Number, String, Mixed] = [
|
|
9
|
-
mongoose.Schema,
|
|
10
|
-
mongoose.Schema.Types.Number,
|
|
11
|
-
mongoose.Schema.Types.String,
|
|
12
|
-
mongoose.Schema.Types.Mixed,
|
|
13
|
-
];
|
|
14
|
-
|
|
15
|
-
const PatientSchema = new Schema({
|
|
16
|
-
birthDatetime: DateTime,
|
|
17
|
-
qdmVersion: { type: String, default: '5.4' },
|
|
18
|
-
_type: { type: String, default: 'Patient' },
|
|
19
|
-
|
|
20
|
-
givenNames: [String],
|
|
21
|
-
familyName: String,
|
|
22
|
-
bundleId: String,
|
|
23
|
-
// These are the "data criteria", or QDM datatype elements that exist on a
|
|
24
|
-
// patient.
|
|
25
|
-
dataElements: [],
|
|
26
|
-
// This field is for application specific information only. If both Bonnie
|
|
27
|
-
// Cypress use a common field, it should be made a field on this model,
|
|
28
|
-
// and not put into extendedData.
|
|
29
|
-
extendedData: {
|
|
30
|
-
type: Mixed,
|
|
31
|
-
default: {},
|
|
32
|
-
},
|
|
33
|
-
}, { id: false });
|
|
34
|
-
|
|
35
|
-
// After initialization of a Patient model, initialize every individual data element
|
|
36
|
-
// to its respective Mongoose Model
|
|
37
|
-
PatientSchema.methods.initializeDataElements = function initializeDataElements() {
|
|
38
|
-
let typeStripped;
|
|
39
|
-
const dataElementsInit = [];
|
|
40
|
-
this.dataElements.forEach((element) => {
|
|
41
|
-
typeStripped = element._type.replace(/QDM::/, '');
|
|
42
|
-
if (typeStripped in AllDataElements) {
|
|
43
|
-
dataElementsInit.push(AllDataElements[typeStripped](element));
|
|
44
|
-
} else {
|
|
45
|
-
dataElementsInit.push(element);
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
this.set({ dataElements: dataElementsInit });
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
PatientSchema.queue('initializeDataElements');
|
|
52
|
-
|
|
53
|
-
PatientSchema.methods.id = function id() {
|
|
54
|
-
return this._id;
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
// Returns an array of elements that exist on this patient, that
|
|
58
|
-
// match the given HQMF data criteria OID.
|
|
59
|
-
PatientSchema.methods.getByHqmfOid = function getByHqmfOid(hqmfOid) {
|
|
60
|
-
return this.dataElements.filter(element => element.hqmfOid === hqmfOid);
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
// Returns an array of elements that exist on this patient, that
|
|
64
|
-
// match the given QRDA data criteria OID.
|
|
65
|
-
PatientSchema.methods.getByQrdaOid = function getByQrdaOid(qrdaOid) {
|
|
66
|
-
return this.dataElements.filter(element => element.qrdaOid === qrdaOid);
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
// Returns an array of elements that exist on this patient. Optionally
|
|
70
|
-
// takes a category, which returns all elements of that QDM category.
|
|
71
|
-
// Example: patient.getDataElements(category = 'encounters') will return
|
|
72
|
-
// all Encounter QDM data types active on the patient.
|
|
73
|
-
PatientSchema.methods.getDataElements = function getDataElements(params) {
|
|
74
|
-
if (params.qdmCategory && params.qdmStatus) {
|
|
75
|
-
return this.dataElements.filter(element => (element.qdmCategory === params.qdmCategory) && (element.qdmStatus === params.qdmStatus));
|
|
76
|
-
} else if (params.category) {
|
|
77
|
-
return this.dataElements.filter(element => element.qdmCategory === params.qdmCategory);
|
|
78
|
-
}
|
|
79
|
-
return this.dataElements;
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
// Returns an array of dataElements that exist on the patient, queried by
|
|
83
|
-
// QDM profile
|
|
84
|
-
// @param {string} profile - the data criteria requested by the execution engine
|
|
85
|
-
// @param {boolean} isNegated - whether dataElements should be returned based on their negation status
|
|
86
|
-
// @returns {DataElement[]}
|
|
87
|
-
PatientSchema.methods.getByProfile = function getByProfile(profile, isNegated = null) {
|
|
88
|
-
// If isNegated == true, only return data elements with a negationRationale that is not null.
|
|
89
|
-
// If isNegated == false, only return data elements with a null negationRationale.
|
|
90
|
-
// If isNegated == null, return all matching data elements by type, regardless of negationRationale.
|
|
91
|
-
const results = this.dataElements.filter(element => element._type === `QDM::${profile}` && (isNegated === null || !!element.negationRationale === isNegated));
|
|
92
|
-
return results.map((result) => {
|
|
93
|
-
const removedMongooseItems = AllDataElements[profile](result).toObject();
|
|
94
|
-
// toObject() will remove all mongoose functions but also remove the schema methods, so we add them back
|
|
95
|
-
Object.entries(Object.getPrototypeOf(result).schema.methods).forEach(([method_name, method]) => {
|
|
96
|
-
removedMongooseItems[method_name] = method;
|
|
97
|
-
});
|
|
98
|
-
return removedMongooseItems;
|
|
99
|
-
});
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
// This method is called by the CQL execution engine on a CQLPatient when
|
|
103
|
-
// the execution engine wants information on a record. A record could be patient
|
|
104
|
-
// characteristic information about the patient, or it could be data criteria
|
|
105
|
-
// that currently exist on this patient (data criteria you drag on a patient
|
|
106
|
-
// in Bonnie patient builder).
|
|
107
|
-
// @param {String} profile - the data criteria requested by the execution engine
|
|
108
|
-
// @returns {Object}
|
|
109
|
-
PatientSchema.methods.findRecords = function findRecords(profile) {
|
|
110
|
-
let profileStripped;
|
|
111
|
-
if (profile === 'Patient') {
|
|
112
|
-
// Requested generic patient info
|
|
113
|
-
const info = { birthDatetime: this.birthDatetime };
|
|
114
|
-
return [info];
|
|
115
|
-
} else if (/PatientCharacteristic/.test(profile)) {
|
|
116
|
-
// Requested a patient characteristic
|
|
117
|
-
profileStripped = profile.replace(/ *\{[^)]*\} */g, '');
|
|
118
|
-
return this.getByProfile(profileStripped);
|
|
119
|
-
} else if (profile != null) {
|
|
120
|
-
// Requested something else (probably a QDM data type).
|
|
121
|
-
|
|
122
|
-
// Strip model details from request. The requested profile string contains
|
|
123
|
-
// a lot of things we do not need or care about. Example, we might see
|
|
124
|
-
// something like:
|
|
125
|
-
// "{urn:healthit-gov:qdm:v5_0_draft}PatientCharacteristicEthnicity"
|
|
126
|
-
// Where we only care about: "PatientCharacteristicEthnicity".
|
|
127
|
-
profileStripped = profile.replace(/ *\{[^)]*\} */g, '');
|
|
128
|
-
|
|
129
|
-
// Check and handle negation status
|
|
130
|
-
if (/Positive/.test(profileStripped)) {
|
|
131
|
-
profileStripped = profileStripped.replace(/Positive/, '');
|
|
132
|
-
// Since the data criteria is 'Positive', it is not negated.
|
|
133
|
-
return this.getByProfile(profileStripped, false);
|
|
134
|
-
} else if (/Negative/.test(profileStripped)) {
|
|
135
|
-
profileStripped = profileStripped.replace(/Negative/, '');
|
|
136
|
-
// Since the data criteria is 'Negative', it is negated.
|
|
137
|
-
return this.getByProfile(profileStripped, true);
|
|
138
|
-
}
|
|
139
|
-
// No negation status, proceed normally
|
|
140
|
-
return this.getByProfile(profileStripped);
|
|
141
|
-
}
|
|
142
|
-
return [];
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
PatientSchema.methods.adverse_events = function adverse_events() {
|
|
146
|
-
return this.getDataElements({ category: 'adverse_event' });
|
|
147
|
-
};
|
|
148
|
-
|
|
149
|
-
PatientSchema.methods.allergies = function allergies() {
|
|
150
|
-
return this.getDataElements({ category: 'allergy' });
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
PatientSchema.methods.assessments = function assessments() {
|
|
154
|
-
return this.getDataElements({ category: 'assessment' });
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
PatientSchema.methods.care_experiences = function care_experiences() {
|
|
158
|
-
return this.getDataElements({ category: 'care_experience' });
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
PatientSchema.methods.care_goals = function care_goals() {
|
|
162
|
-
return this.getDataElements({ category: 'care_goal' });
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
PatientSchema.methods.communications = function communications() {
|
|
166
|
-
return this.getDataElements({ category: 'communication' });
|
|
167
|
-
};
|
|
168
|
-
|
|
169
|
-
PatientSchema.methods.conditions = function conditions() {
|
|
170
|
-
return this.getDataElements({ category: 'condition' });
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
PatientSchema.methods.devices = function devices() {
|
|
174
|
-
return this.getDataElements({ category: 'device' });
|
|
175
|
-
};
|
|
176
|
-
|
|
177
|
-
PatientSchema.methods.diagnostic_studies = function diagnostic_studies() {
|
|
178
|
-
return this.getDataElements({ category: 'diagnostic_study' });
|
|
179
|
-
};
|
|
180
|
-
|
|
181
|
-
PatientSchema.methods.encounters = function encounters() {
|
|
182
|
-
return this.getDataElements({ category: 'encounter' });
|
|
183
|
-
};
|
|
184
|
-
|
|
185
|
-
PatientSchema.methods.family_history = function family_history() {
|
|
186
|
-
return this.getDataElements({ category: 'family_history' });
|
|
187
|
-
};
|
|
188
|
-
|
|
189
|
-
PatientSchema.methods.functional_statuses = function functional_statuses() {
|
|
190
|
-
return this.getDataElements({ category: 'functional_status' });
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
PatientSchema.methods.immunizations = function immunizations() {
|
|
194
|
-
return this.getDataElements({ category: 'immunization' });
|
|
195
|
-
};
|
|
196
|
-
|
|
197
|
-
PatientSchema.methods.interventions = function interventions() {
|
|
198
|
-
return this.getDataElements({ category: 'intervention' });
|
|
199
|
-
};
|
|
200
|
-
|
|
201
|
-
PatientSchema.methods.laboratory_tests = function laboratory_tests() {
|
|
202
|
-
return this.getDataElements({ category: 'laboratory_test' });
|
|
203
|
-
};
|
|
204
|
-
|
|
205
|
-
PatientSchema.methods.medical_equipment = function medical_equipment() {
|
|
206
|
-
return this.getDataElements({ category: 'medical_equipment' });
|
|
207
|
-
};
|
|
208
|
-
|
|
209
|
-
PatientSchema.methods.medications = function medications() {
|
|
210
|
-
return this.getDataElements({ category: 'medication' });
|
|
211
|
-
};
|
|
212
|
-
|
|
213
|
-
PatientSchema.methods.physical_exams = function physical_exams() {
|
|
214
|
-
return this.getDataElements({ category: 'physical_exam' });
|
|
215
|
-
};
|
|
216
|
-
|
|
217
|
-
PatientSchema.methods.preferences = function preferences() {
|
|
218
|
-
return this.getDataElements({ category: 'preference' });
|
|
219
|
-
};
|
|
220
|
-
|
|
221
|
-
PatientSchema.methods.provider_characteristics = function provider_characteristics() {
|
|
222
|
-
return this.getDataElements({ category: 'provider_characteristic' });
|
|
223
|
-
};
|
|
224
|
-
|
|
225
|
-
PatientSchema.methods.procedures = function procedures() {
|
|
226
|
-
return this.getDataElements({ category: 'procedure' });
|
|
227
|
-
};
|
|
228
|
-
|
|
229
|
-
PatientSchema.methods.results = function results() {
|
|
230
|
-
return this.getDataElements({ category: 'result' });
|
|
231
|
-
};
|
|
232
|
-
|
|
233
|
-
PatientSchema.methods.risk_category_assessments = function risk_category_assessments() {
|
|
234
|
-
return this.getDataElements({ category: 'risk_category_assessment' });
|
|
235
|
-
};
|
|
236
|
-
|
|
237
|
-
PatientSchema.methods.social_history = function social_history() {
|
|
238
|
-
return this.getDataElements({ category: 'social_history' });
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
PatientSchema.methods.substances = function substances() {
|
|
242
|
-
return this.getDataElements({ category: 'substance' });
|
|
243
|
-
};
|
|
244
|
-
|
|
245
|
-
PatientSchema.methods.symptoms = function symptoms() {
|
|
246
|
-
return this.getDataElements({ category: 'symptom' });
|
|
247
|
-
};
|
|
248
|
-
|
|
249
|
-
PatientSchema.methods.system_characteristics = function system_characteristics() {
|
|
250
|
-
return this.getDataElements({ category: 'system_characteristic' });
|
|
251
|
-
};
|
|
252
|
-
|
|
253
|
-
PatientSchema.methods.transfers = function transfers() {
|
|
254
|
-
return this.getDataElements({ category: 'transfer' });
|
|
255
|
-
};
|
|
256
|
-
|
|
257
|
-
PatientSchema.methods.vital_signs = function vital_signs() {
|
|
258
|
-
return this.getDataElements({ category: 'vital_sign' });
|
|
259
|
-
};
|
|
260
|
-
|
|
261
|
-
module.exports.PatientSchema = PatientSchema;
|
|
262
|
-
module.exports.Patient = mongoose.model('Patient', PatientSchema);
|