cqm-models 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
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
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 98d1bd8630f286f1af0217ea291b3a175bdd0052
4
+ data.tar.gz: 4b404ae8ca67e7481f03897fcd7df8a824ea29d4
5
+ SHA512:
6
+ metadata.gz: 1564d61cf59e565814cf004c9c4337333fcb2197a31838f9f36f39d9f3af192dd9915a94619792d5b723224c701dd13280eb128d4751d103adab615739ab1b28
7
+ data.tar.gz: c16fce91079f7da3eccc8dff4dc26b5733b23d77785e0836840b0f0e46b8386e061a0ee8ff8db374c21dbe25f4de7c47eb4a1546eff8feb1c51aa151041e410e
data/.eslintignore ADDED
@@ -0,0 +1 @@
1
+ /dist/**
data/.eslintrc.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "extends": "airbnb-base",
3
+ "rules": {
4
+ "max-len": ["error", {"code": 200, "ignoreComments": true}],
5
+ "no-unused-vars": ["error", { "varsIgnorePattern": "Code|Quantity|Interval|Integer|Array|Float|Time|Number|Date|Mixed" }],
6
+ "camelcase": "off",
7
+ "comma-dangle": ["error", {
8
+ "arrays": "always-multiline",
9
+ "objects": "always-multiline",
10
+ "imports": "always-multiline",
11
+ "exports": "always-multiline",
12
+ "functions": "ignore"}],
13
+ "no-underscore-dangle": [
14
+ "error",
15
+ {
16
+ "allow": [
17
+ "_id", "_type", "_doc"
18
+ ]
19
+ }
20
+ ]
21
+ },
22
+ "env": {
23
+ "jasmine": true
24
+ }
25
+ }
26
+
@@ -0,0 +1,32 @@
1
+ Pull requests into cqm-models require the following. Submitter and reviewer should :white_check_mark: when done. For items that are not-applicable, note it's not-applicable ("N/A") and :white_check_mark:.
2
+
3
+ **Submitter:**
4
+ - [ ] This pull request describes why these changes were made.
5
+ - [ ] Internal ticket for this PR:
6
+ - [ ] Internal ticket links to this PR
7
+ - [ ] Code diff has been done and been reviewed
8
+ - [ ] Tests are included and test edge cases
9
+ - [ ] Tests have been run locally and pass
10
+ - [ ] If there were any JavaScript changes, this PR has updated the `dist` directory using `npm run dist`
11
+ - [ ] If applicable, the library version number in `package.json` and `cqm-models.gemspec` has been updated
12
+
13
+ **Reviewer 1:**
14
+
15
+ Name:
16
+ - [ ] Code is maintainable and reusable, reuses existing code and infrastructure where appropriate, and accomplishes the task’s purpose
17
+ - [ ] The tests appropriately test the new code, including edge cases
18
+ - [ ] You have tried to break the code
19
+
20
+ **Reviewer 2:**
21
+
22
+ Name:
23
+ - [ ] Code is maintainable and reusable, reuses existing code and infrastructure where appropriate, and accomplishes the task’s purpose
24
+ - [ ] The tests appropriately test the new code, including edge cases
25
+ - [ ] You have tried to break the code
26
+
27
+ **Reviewer 3:**
28
+
29
+ Name:
30
+ - [ ] Code is maintainable and reusable, reuses existing code and infrastructure where appropriate, and accomplishes the task’s purpose
31
+ - [ ] The tests appropriately test the new code, including edge cases
32
+ - [ ] You have tried to break the code
data/.gitignore ADDED
@@ -0,0 +1,21 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ node_modules/
10
+ tmp/
11
+
12
+ # yarn error tracking
13
+ yarn-error.log
14
+
15
+ # rspec failure tracking
16
+ .rspec_status
17
+ .DS_Store
18
+ .byebug_history
19
+
20
+ # Editor-specific files
21
+ .vscode/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.rubocop.yml ADDED
@@ -0,0 +1,42 @@
1
+ AllCops:
2
+ Exclude:
3
+ - 'bin/**/*'
4
+ - 'vendor/**/*'
5
+ TargetRubyVersion: 2.3
6
+
7
+ Metrics/LineLength:
8
+ Enabled: false
9
+
10
+ Metrics/ClassLength:
11
+ Enabled: false
12
+
13
+ Metrics/BlockLength:
14
+ Enabled: false
15
+
16
+ Metrics/MethodLength:
17
+ Enabled: false
18
+
19
+ Metrics/AbcSize:
20
+ Enabled: false
21
+
22
+ Metrics/PerceivedComplexity:
23
+ Enabled: false
24
+
25
+ Metrics/CyclomaticComplexity:
26
+ Enabled: false
27
+
28
+ Style/FrozenStringLiteralComment:
29
+ Enabled: false
30
+
31
+ Lint/ScriptPermission:
32
+ Enabled: false
33
+
34
+ Naming/UncommunicativeMethodParamName:
35
+ Enabled: false
36
+
37
+ Naming/VariableName:
38
+ Enabled: false
39
+
40
+ # Only disabled until the cyclomatic complexity method in measure.rb (ported from bonnie-bundler) is rewritten
41
+ Lint/NestedMethodDefinition:
42
+ Enabled: false
data/.travis.yml ADDED
@@ -0,0 +1,21 @@
1
+ matrix:
2
+ include:
3
+ - language: ruby
4
+ cache: bundler
5
+ rvm:
6
+ - 2.4.1
7
+ services:
8
+ - mongodb
9
+ script:
10
+ - bundle exec rake
11
+ - bundle exec rubocop
12
+ - language: node_js
13
+ node_js:
14
+ - "node"
15
+ - "lts/*"
16
+ cache:
17
+ directories:
18
+ - "node_modules"
19
+ script:
20
+ - npm run lint
21
+ - ./bin/validate_dist.sh
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
data/README.md ADDED
@@ -0,0 +1,26 @@
1
+ # cqm-models
2
+
3
+ ## QDM Models
4
+
5
+ This library contains auto generated Mongoid (Ruby) and Mongoose (JavaScript) models that correspond to the QDM (Quality Data Model) specification.
6
+
7
+ ## QDM Model Generator Script (lib/generate_models.rb)
8
+
9
+ The QDM model generator script can be used to create/update the Mongoid (Ruby) and Mongoose (JavaScript) based models.
10
+
11
+ See the top of the `lib/generate_models.rb` script for RubyGem requirements.
12
+
13
+ To use, execute the following:
14
+ ```
15
+ ruby lib/generate_models.rb modelinfo/qdm-modelinfo-5.3.xml data/oids.json
16
+ ```
17
+
18
+ The first parameter is the file path to the modelinfo file you wish to generate from. The second parameter is the OID map file. You must include both.
19
+
20
+ The generator will parse the specified modelinfo file, generate the corresponding models, and place them in:
21
+
22
+ Ruby: `app/models/qdm/`
23
+
24
+ JavaScript: `app/assets/javascripts/`
25
+
26
+ The JavaScript models as-is are intended to be used server side under something like node.js. A browserified version that can be used client side is included as `dist/index.js`.
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ begin
7
+ require 'bundler/setup'
8
+ rescue LoadError
9
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
10
+ end
11
+
12
+ task default: :spec
@@ -0,0 +1,27 @@
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 [Number, String] = [
9
+ mongoose.Schema.Types.Number,
10
+ mongoose.Schema.Types.String,
11
+ ];
12
+
13
+ const AdverseEventSchema = DataElementSchema({
14
+ authorDatetime: DateTime,
15
+ relevantPeriod: Interval,
16
+ severity: Code,
17
+ facilityLocation: Code,
18
+ type: Code,
19
+ hqmfOid: { type: String, default: '2.16.840.1.113883.10.20.28.3.120' },
20
+ category: { type: String, default: 'adverse_event' },
21
+ qdmVersion: { type: String, default: '5.3' },
22
+ _type: { type: String, default: 'AdverseEvent' },
23
+
24
+ });
25
+
26
+ module.exports.AdverseEventSchema = AdverseEventSchema;
27
+ module.exports.AdverseEvent = mongoose.model('AdverseEvent', AdverseEventSchema);
@@ -0,0 +1,120 @@
1
+ module.exports.Patient = require('./Patient.js').Patient;
2
+ module.exports.PatientSchema = require('./Patient.js').PatientSchema;
3
+ module.exports.Id = require('./Id.js').Id;
4
+ module.exports.IdSchema = require('./Id.js').IdSchema;
5
+ module.exports.Ratio = require('./Ratio.js').Ratio;
6
+ module.exports.RatioSchema = require('./Ratio.js').RatioSchema;
7
+ module.exports.PhysicalExamOrder = require('./PhysicalExamOrder.js').PhysicalExamOrder;
8
+ module.exports.PhysicalExamOrderSchema = require('./PhysicalExamOrder.js').PhysicalExamOrderSchema;
9
+ module.exports.Participation = require('./Participation.js').Participation;
10
+ module.exports.ParticipationSchema = require('./Participation.js').ParticipationSchema;
11
+ module.exports.PatientCharacteristicSex = require('./PatientCharacteristicSex.js').PatientCharacteristicSex;
12
+ module.exports.PatientCharacteristicSexSchema = require('./PatientCharacteristicSex.js').PatientCharacteristicSexSchema;
13
+ module.exports.CareGoal = require('./CareGoal.js').CareGoal;
14
+ module.exports.CareGoalSchema = require('./CareGoal.js').CareGoalSchema;
15
+ module.exports.PatientCharacteristic = require('./PatientCharacteristic.js').PatientCharacteristic;
16
+ module.exports.PatientCharacteristicSchema = require('./PatientCharacteristic.js').PatientCharacteristicSchema;
17
+ module.exports.PatientCharacteristicEthnicity = require('./PatientCharacteristicEthnicity.js').PatientCharacteristicEthnicity;
18
+ module.exports.PatientCharacteristicEthnicitySchema = require('./PatientCharacteristicEthnicity.js').PatientCharacteristicEthnicitySchema;
19
+ module.exports.PatientCharacteristicRace = require('./PatientCharacteristicRace.js').PatientCharacteristicRace;
20
+ module.exports.PatientCharacteristicRaceSchema = require('./PatientCharacteristicRace.js').PatientCharacteristicRaceSchema;
21
+ module.exports.LaboratoryTestPerformed = require('./LaboratoryTestPerformed.js').LaboratoryTestPerformed;
22
+ module.exports.LaboratoryTestPerformedSchema = require('./LaboratoryTestPerformed.js').LaboratoryTestPerformedSchema;
23
+ module.exports.Symptom = require('./Symptom.js').Symptom;
24
+ module.exports.SymptomSchema = require('./Symptom.js').SymptomSchema;
25
+ module.exports.MedicationAdministered = require('./MedicationAdministered.js').MedicationAdministered;
26
+ module.exports.MedicationAdministeredSchema = require('./MedicationAdministered.js').MedicationAdministeredSchema;
27
+ module.exports.ProcedureRecommended = require('./ProcedureRecommended.js').ProcedureRecommended;
28
+ module.exports.ProcedureRecommendedSchema = require('./ProcedureRecommended.js').ProcedureRecommendedSchema;
29
+ module.exports.EncounterPerformed = require('./EncounterPerformed.js').EncounterPerformed;
30
+ module.exports.EncounterPerformedSchema = require('./EncounterPerformed.js').EncounterPerformedSchema;
31
+ module.exports.Diagnosis = require('./Diagnosis.js').Diagnosis;
32
+ module.exports.DiagnosisSchema = require('./Diagnosis.js').DiagnosisSchema;
33
+ module.exports.CommunicationFromProviderToPatient = require('./CommunicationFromProviderToPatient.js').CommunicationFromProviderToPatient;
34
+ module.exports.CommunicationFromProviderToPatientSchema = require('./CommunicationFromProviderToPatient.js').CommunicationFromProviderToPatientSchema;
35
+ module.exports.AssessmentPerformed = require('./AssessmentPerformed.js').AssessmentPerformed;
36
+ module.exports.AssessmentPerformedSchema = require('./AssessmentPerformed.js').AssessmentPerformedSchema;
37
+ module.exports.PatientCharacteristicClinicalTrialParticipant = require('./PatientCharacteristicClinicalTrialParticipant.js').PatientCharacteristicClinicalTrialParticipant;
38
+ module.exports.PatientCharacteristicClinicalTrialParticipantSchema = require('./PatientCharacteristicClinicalTrialParticipant.js').PatientCharacteristicClinicalTrialParticipantSchema;
39
+ module.exports.DeviceOrder = require('./DeviceOrder.js').DeviceOrder;
40
+ module.exports.DeviceOrderSchema = require('./DeviceOrder.js').DeviceOrderSchema;
41
+ module.exports.DiagnosticStudyPerformed = require('./DiagnosticStudyPerformed.js').DiagnosticStudyPerformed;
42
+ module.exports.DiagnosticStudyPerformedSchema = require('./DiagnosticStudyPerformed.js').DiagnosticStudyPerformedSchema;
43
+ module.exports.InterventionOrder = require('./InterventionOrder.js').InterventionOrder;
44
+ module.exports.InterventionOrderSchema = require('./InterventionOrder.js').InterventionOrderSchema;
45
+ module.exports.FamilyHistory = require('./FamilyHistory.js').FamilyHistory;
46
+ module.exports.FamilyHistorySchema = require('./FamilyHistory.js').FamilyHistorySchema;
47
+ module.exports.Component = require('./Component.js').Component;
48
+ module.exports.ComponentSchema = require('./Component.js').ComponentSchema;
49
+ module.exports.ResultComponent = require('./ResultComponent.js').ResultComponent;
50
+ module.exports.ResultComponentSchema = require('./ResultComponent.js').ResultComponentSchema;
51
+ module.exports.FacilityLocation = require('./FacilityLocation.js').FacilityLocation;
52
+ module.exports.FacilityLocationSchema = require('./FacilityLocation.js').FacilityLocationSchema;
53
+ module.exports.CommunicationFromProviderToProvider = require('./CommunicationFromProviderToProvider.js').CommunicationFromProviderToProvider;
54
+ module.exports.CommunicationFromProviderToProviderSchema = require('./CommunicationFromProviderToProvider.js').CommunicationFromProviderToProviderSchema;
55
+ module.exports.MedicationActive = require('./MedicationActive.js').MedicationActive;
56
+ module.exports.MedicationActiveSchema = require('./MedicationActive.js').MedicationActiveSchema;
57
+ module.exports.LaboratoryTestOrder = require('./LaboratoryTestOrder.js').LaboratoryTestOrder;
58
+ module.exports.LaboratoryTestOrderSchema = require('./LaboratoryTestOrder.js').LaboratoryTestOrderSchema;
59
+ module.exports.DiagnosticStudyOrder = require('./DiagnosticStudyOrder.js').DiagnosticStudyOrder;
60
+ module.exports.DiagnosticStudyOrderSchema = require('./DiagnosticStudyOrder.js').DiagnosticStudyOrderSchema;
61
+ module.exports.SubstanceOrder = require('./SubstanceOrder.js').SubstanceOrder;
62
+ module.exports.SubstanceOrderSchema = require('./SubstanceOrder.js').SubstanceOrderSchema;
63
+ module.exports.PatientCharacteristicPayer = require('./PatientCharacteristicPayer.js').PatientCharacteristicPayer;
64
+ module.exports.PatientCharacteristicPayerSchema = require('./PatientCharacteristicPayer.js').PatientCharacteristicPayerSchema;
65
+ module.exports.PatientCharacteristicExpired = require('./PatientCharacteristicExpired.js').PatientCharacteristicExpired;
66
+ module.exports.PatientCharacteristicExpiredSchema = require('./PatientCharacteristicExpired.js').PatientCharacteristicExpiredSchema;
67
+ module.exports.AssessmentRecommended = require('./AssessmentRecommended.js').AssessmentRecommended;
68
+ module.exports.AssessmentRecommendedSchema = require('./AssessmentRecommended.js').AssessmentRecommendedSchema;
69
+ module.exports.ImmunizationAdministered = require('./ImmunizationAdministered.js').ImmunizationAdministered;
70
+ module.exports.ImmunizationAdministeredSchema = require('./ImmunizationAdministered.js').ImmunizationAdministeredSchema;
71
+ module.exports.SubstanceAdministered = require('./SubstanceAdministered.js').SubstanceAdministered;
72
+ module.exports.SubstanceAdministeredSchema = require('./SubstanceAdministered.js').SubstanceAdministeredSchema;
73
+ module.exports.EncounterOrder = require('./EncounterOrder.js').EncounterOrder;
74
+ module.exports.EncounterOrderSchema = require('./EncounterOrder.js').EncounterOrderSchema;
75
+ module.exports.EncounterRecommended = require('./EncounterRecommended.js').EncounterRecommended;
76
+ module.exports.EncounterRecommendedSchema = require('./EncounterRecommended.js').EncounterRecommendedSchema;
77
+ module.exports.ProcedurePerformed = require('./ProcedurePerformed.js').ProcedurePerformed;
78
+ module.exports.ProcedurePerformedSchema = require('./ProcedurePerformed.js').ProcedurePerformedSchema;
79
+ module.exports.AllergyIntolerance = require('./AllergyIntolerance.js').AllergyIntolerance;
80
+ module.exports.AllergyIntoleranceSchema = require('./AllergyIntolerance.js').AllergyIntoleranceSchema;
81
+ module.exports.ProviderCharacteristic = require('./ProviderCharacteristic.js').ProviderCharacteristic;
82
+ module.exports.ProviderCharacteristicSchema = require('./ProviderCharacteristic.js').ProviderCharacteristicSchema;
83
+ module.exports.PhysicalExamRecommended = require('./PhysicalExamRecommended.js').PhysicalExamRecommended;
84
+ module.exports.PhysicalExamRecommendedSchema = require('./PhysicalExamRecommended.js').PhysicalExamRecommendedSchema;
85
+ module.exports.PatientCharacteristicBirthdate = require('./PatientCharacteristicBirthdate.js').PatientCharacteristicBirthdate;
86
+ module.exports.PatientCharacteristicBirthdateSchema = require('./PatientCharacteristicBirthdate.js').PatientCharacteristicBirthdateSchema;
87
+ module.exports.AdverseEvent = require('./AdverseEvent.js').AdverseEvent;
88
+ module.exports.AdverseEventSchema = require('./AdverseEvent.js').AdverseEventSchema;
89
+ module.exports.CommunicationFromPatientToProvider = require('./CommunicationFromPatientToProvider.js').CommunicationFromPatientToProvider;
90
+ module.exports.CommunicationFromPatientToProviderSchema = require('./CommunicationFromPatientToProvider.js').CommunicationFromPatientToProviderSchema;
91
+ module.exports.DeviceRecommended = require('./DeviceRecommended.js').DeviceRecommended;
92
+ module.exports.DeviceRecommendedSchema = require('./DeviceRecommended.js').DeviceRecommendedSchema;
93
+ module.exports.DeviceApplied = require('./DeviceApplied.js').DeviceApplied;
94
+ module.exports.DeviceAppliedSchema = require('./DeviceApplied.js').DeviceAppliedSchema;
95
+ module.exports.MedicationDischarge = require('./MedicationDischarge.js').MedicationDischarge;
96
+ module.exports.MedicationDischargeSchema = require('./MedicationDischarge.js').MedicationDischargeSchema;
97
+ module.exports.InterventionPerformed = require('./InterventionPerformed.js').InterventionPerformed;
98
+ module.exports.InterventionPerformedSchema = require('./InterventionPerformed.js').InterventionPerformedSchema;
99
+ module.exports.LaboratoryTestRecommended = require('./LaboratoryTestRecommended.js').LaboratoryTestRecommended;
100
+ module.exports.LaboratoryTestRecommendedSchema = require('./LaboratoryTestRecommended.js').LaboratoryTestRecommendedSchema;
101
+ module.exports.MedicationDispensed = require('./MedicationDispensed.js').MedicationDispensed;
102
+ module.exports.MedicationDispensedSchema = require('./MedicationDispensed.js').MedicationDispensedSchema;
103
+ module.exports.DiagnosticStudyRecommended = require('./DiagnosticStudyRecommended.js').DiagnosticStudyRecommended;
104
+ module.exports.DiagnosticStudyRecommendedSchema = require('./DiagnosticStudyRecommended.js').DiagnosticStudyRecommendedSchema;
105
+ module.exports.ImmunizationOrder = require('./ImmunizationOrder.js').ImmunizationOrder;
106
+ module.exports.ImmunizationOrderSchema = require('./ImmunizationOrder.js').ImmunizationOrderSchema;
107
+ module.exports.PatientCareExperience = require('./PatientCareExperience.js').PatientCareExperience;
108
+ module.exports.PatientCareExperienceSchema = require('./PatientCareExperience.js').PatientCareExperienceSchema;
109
+ module.exports.ProviderCareExperience = require('./ProviderCareExperience.js').ProviderCareExperience;
110
+ module.exports.ProviderCareExperienceSchema = require('./ProviderCareExperience.js').ProviderCareExperienceSchema;
111
+ module.exports.ProcedureOrder = require('./ProcedureOrder.js').ProcedureOrder;
112
+ module.exports.ProcedureOrderSchema = require('./ProcedureOrder.js').ProcedureOrderSchema;
113
+ module.exports.MedicationOrder = require('./MedicationOrder.js').MedicationOrder;
114
+ module.exports.MedicationOrderSchema = require('./MedicationOrder.js').MedicationOrderSchema;
115
+ module.exports.SubstanceRecommended = require('./SubstanceRecommended.js').SubstanceRecommended;
116
+ module.exports.SubstanceRecommendedSchema = require('./SubstanceRecommended.js').SubstanceRecommendedSchema;
117
+ module.exports.InterventionRecommended = require('./InterventionRecommended.js').InterventionRecommended;
118
+ module.exports.InterventionRecommendedSchema = require('./InterventionRecommended.js').InterventionRecommendedSchema;
119
+ module.exports.PhysicalExamPerformed = require('./PhysicalExamPerformed.js').PhysicalExamPerformed;
120
+ module.exports.PhysicalExamPerformedSchema = require('./PhysicalExamPerformed.js').PhysicalExamPerformedSchema;
@@ -0,0 +1,27 @@
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 [Number, String] = [
9
+ mongoose.Schema.Types.Number,
10
+ mongoose.Schema.Types.String,
11
+ ];
12
+
13
+ const AllergyIntoleranceSchema = DataElementSchema({
14
+ authorDatetime: DateTime,
15
+ prevalencePeriod: Interval,
16
+ type: Code,
17
+ severity: Code,
18
+ hqmfOid: { type: String, default: '2.16.840.1.113883.10.20.28.3.119' },
19
+ category: { type: String, default: 'allergy' },
20
+ qdmStatus: { type: String, default: 'intolerance' },
21
+ qdmVersion: { type: String, default: '5.3' },
22
+ _type: { type: String, default: 'AllergyIntolerance' },
23
+
24
+ });
25
+
26
+ module.exports.AllergyIntoleranceSchema = AllergyIntoleranceSchema;
27
+ module.exports.AllergyIntolerance = mongoose.model('AllergyIntolerance', AllergyIntoleranceSchema);
@@ -0,0 +1,30 @@
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 [Number, String] = [
9
+ mongoose.Schema.Types.Number,
10
+ mongoose.Schema.Types.String,
11
+ ];
12
+
13
+ const AssessmentPerformedSchema = DataElementSchema({
14
+ authorDatetime: DateTime,
15
+ negationRationale: Code,
16
+ reason: Code,
17
+ method: Code,
18
+ result: {},
19
+ components: [],
20
+ relatedTo: [String],
21
+ hqmfOid: { type: String, default: '2.16.840.1.113883.10.20.28.3.117' },
22
+ category: { type: String, default: 'assessment' },
23
+ qdmStatus: { type: String, default: 'performed' },
24
+ qdmVersion: { type: String, default: '5.3' },
25
+ _type: { type: String, default: 'AssessmentPerformed' },
26
+
27
+ });
28
+
29
+ module.exports.AssessmentPerformedSchema = AssessmentPerformedSchema;
30
+ module.exports.AssessmentPerformed = mongoose.model('AssessmentPerformed', AssessmentPerformedSchema);
@@ -0,0 +1,27 @@
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 [Number, String] = [
9
+ mongoose.Schema.Types.Number,
10
+ mongoose.Schema.Types.String,
11
+ ];
12
+
13
+ const AssessmentRecommendedSchema = DataElementSchema({
14
+ authorDatetime: DateTime,
15
+ negationRationale: Code,
16
+ reason: Code,
17
+ method: Code,
18
+ hqmfOid: { type: String, default: '2.16.840.1.113883.10.20.28.3.118' },
19
+ category: { type: String, default: 'assessment' },
20
+ qdmStatus: { type: String, default: 'recommended' },
21
+ qdmVersion: { type: String, default: '5.3' },
22
+ _type: { type: String, default: 'AssessmentRecommended' },
23
+
24
+ });
25
+
26
+ module.exports.AssessmentRecommendedSchema = AssessmentRecommendedSchema;
27
+ module.exports.AssessmentRecommended = mongoose.model('AssessmentRecommended', AssessmentRecommendedSchema);