canvas 0.63.0__py3-none-any.whl → 0.89.0__py3-none-any.whl

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 (185) hide show
  1. {canvas-0.63.0.dist-info → canvas-0.89.0.dist-info}/METADATA +4 -1
  2. {canvas-0.63.0.dist-info → canvas-0.89.0.dist-info}/RECORD +184 -98
  3. {canvas-0.63.0.dist-info → canvas-0.89.0.dist-info}/WHEEL +1 -1
  4. canvas_cli/apps/emit/event_fixtures/UNKNOWN.ndjson +1 -0
  5. canvas_cli/apps/logs/logs.py +386 -22
  6. canvas_cli/main.py +3 -1
  7. canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/tests/test_models.py +46 -4
  8. canvas_cli/utils/context/context.py +13 -13
  9. canvas_cli/utils/validators/manifest_schema.py +26 -1
  10. canvas_generated/messages/effects_pb2.py +5 -5
  11. canvas_generated/messages/effects_pb2.pyi +108 -2
  12. canvas_generated/messages/events_pb2.py +6 -6
  13. canvas_generated/messages/events_pb2.pyi +282 -2
  14. canvas_sdk/clients/__init__.py +1 -0
  15. canvas_sdk/clients/llms/__init__.py +17 -0
  16. canvas_sdk/clients/llms/libraries/__init__.py +11 -0
  17. canvas_sdk/clients/llms/libraries/llm_anthropic.py +87 -0
  18. canvas_sdk/clients/llms/libraries/llm_api.py +143 -0
  19. canvas_sdk/clients/llms/libraries/llm_google.py +92 -0
  20. canvas_sdk/clients/llms/libraries/llm_openai.py +98 -0
  21. canvas_sdk/clients/llms/structures/__init__.py +9 -0
  22. canvas_sdk/clients/llms/structures/llm_response.py +33 -0
  23. canvas_sdk/clients/llms/structures/llm_tokens.py +53 -0
  24. canvas_sdk/clients/llms/structures/llm_turn.py +47 -0
  25. canvas_sdk/clients/llms/structures/settings/__init__.py +13 -0
  26. canvas_sdk/clients/llms/structures/settings/llm_settings.py +27 -0
  27. canvas_sdk/clients/llms/structures/settings/llm_settings_anthropic.py +43 -0
  28. canvas_sdk/clients/llms/structures/settings/llm_settings_gemini.py +40 -0
  29. canvas_sdk/clients/llms/structures/settings/llm_settings_gpt4.py +40 -0
  30. canvas_sdk/clients/llms/structures/settings/llm_settings_gpt5.py +48 -0
  31. canvas_sdk/clients/third_party.py +3 -0
  32. canvas_sdk/commands/__init__.py +12 -0
  33. canvas_sdk/commands/base.py +33 -2
  34. canvas_sdk/commands/commands/adjust_prescription.py +4 -0
  35. canvas_sdk/commands/commands/custom_command.py +86 -0
  36. canvas_sdk/commands/commands/family_history.py +17 -1
  37. canvas_sdk/commands/commands/immunization_statement.py +42 -2
  38. canvas_sdk/commands/commands/medication_statement.py +16 -1
  39. canvas_sdk/commands/commands/past_surgical_history.py +16 -1
  40. canvas_sdk/commands/commands/perform.py +18 -1
  41. canvas_sdk/commands/commands/prescribe.py +8 -9
  42. canvas_sdk/commands/commands/refill.py +5 -5
  43. canvas_sdk/commands/commands/resolve_condition.py +5 -5
  44. canvas_sdk/commands/commands/review/__init__.py +3 -0
  45. canvas_sdk/commands/commands/review/base.py +72 -0
  46. canvas_sdk/commands/commands/review/imaging.py +13 -0
  47. canvas_sdk/commands/commands/review/lab.py +13 -0
  48. canvas_sdk/commands/commands/review/referral.py +13 -0
  49. canvas_sdk/commands/commands/review/uncategorized_document.py +13 -0
  50. canvas_sdk/commands/validation.py +43 -0
  51. canvas_sdk/effects/batch_originate.py +22 -0
  52. canvas_sdk/effects/calendar/__init__.py +13 -3
  53. canvas_sdk/effects/calendar/{create_calendar.py → calendar.py} +19 -5
  54. canvas_sdk/effects/calendar/event.py +172 -0
  55. canvas_sdk/effects/claim_label.py +93 -0
  56. canvas_sdk/effects/claim_line_item.py +47 -0
  57. canvas_sdk/effects/claim_queue.py +49 -0
  58. canvas_sdk/effects/fax/__init__.py +3 -0
  59. canvas_sdk/effects/fax/base.py +77 -0
  60. canvas_sdk/effects/fax/note.py +42 -0
  61. canvas_sdk/effects/metadata.py +15 -1
  62. canvas_sdk/effects/note/__init__.py +8 -1
  63. canvas_sdk/effects/note/appointment.py +135 -7
  64. canvas_sdk/effects/note/base.py +17 -0
  65. canvas_sdk/effects/note/message.py +22 -14
  66. canvas_sdk/effects/note/note.py +150 -1
  67. canvas_sdk/effects/observation/__init__.py +11 -0
  68. canvas_sdk/effects/observation/base.py +206 -0
  69. canvas_sdk/effects/patient/__init__.py +2 -0
  70. canvas_sdk/effects/patient/base.py +8 -0
  71. canvas_sdk/effects/payment/__init__.py +11 -0
  72. canvas_sdk/effects/payment/base.py +355 -0
  73. canvas_sdk/effects/payment/post_claim_payment.py +49 -0
  74. canvas_sdk/effects/send_contact_verification.py +42 -0
  75. canvas_sdk/effects/task/__init__.py +2 -1
  76. canvas_sdk/effects/task/task.py +30 -0
  77. canvas_sdk/effects/validation/__init__.py +3 -0
  78. canvas_sdk/effects/validation/base.py +92 -0
  79. canvas_sdk/events/base.py +15 -0
  80. canvas_sdk/handlers/application.py +7 -7
  81. canvas_sdk/handlers/simple_api/api.py +1 -4
  82. canvas_sdk/handlers/simple_api/websocket.py +1 -4
  83. canvas_sdk/handlers/utils.py +14 -0
  84. canvas_sdk/questionnaires/utils.py +1 -0
  85. canvas_sdk/templates/utils.py +17 -4
  86. canvas_sdk/test_utils/factories/FACTORY_GUIDE.md +362 -0
  87. canvas_sdk/test_utils/factories/__init__.py +115 -0
  88. canvas_sdk/test_utils/factories/calendar.py +24 -0
  89. canvas_sdk/test_utils/factories/claim.py +81 -0
  90. canvas_sdk/test_utils/factories/claim_diagnosis_code.py +16 -0
  91. canvas_sdk/test_utils/factories/coverage.py +17 -0
  92. canvas_sdk/test_utils/factories/imaging.py +74 -0
  93. canvas_sdk/test_utils/factories/lab.py +192 -0
  94. canvas_sdk/test_utils/factories/medication_history.py +75 -0
  95. canvas_sdk/test_utils/factories/note.py +52 -0
  96. canvas_sdk/test_utils/factories/organization.py +50 -0
  97. canvas_sdk/test_utils/factories/practicelocation.py +88 -0
  98. canvas_sdk/test_utils/factories/referral.py +81 -0
  99. canvas_sdk/test_utils/factories/staff.py +111 -0
  100. canvas_sdk/test_utils/factories/task.py +66 -0
  101. canvas_sdk/test_utils/factories/uncategorized_clinical_document.py +48 -0
  102. canvas_sdk/utils/metrics.py +4 -1
  103. canvas_sdk/v1/data/__init__.py +66 -7
  104. canvas_sdk/v1/data/allergy_intolerance.py +5 -11
  105. canvas_sdk/v1/data/appointment.py +18 -4
  106. canvas_sdk/v1/data/assessment.py +2 -12
  107. canvas_sdk/v1/data/banner_alert.py +2 -4
  108. canvas_sdk/v1/data/base.py +53 -14
  109. canvas_sdk/v1/data/billing.py +8 -11
  110. canvas_sdk/v1/data/calendar.py +64 -0
  111. canvas_sdk/v1/data/care_team.py +4 -10
  112. canvas_sdk/v1/data/claim.py +172 -66
  113. canvas_sdk/v1/data/claim_diagnosis_code.py +19 -0
  114. canvas_sdk/v1/data/claim_line_item.py +2 -5
  115. canvas_sdk/v1/data/coding.py +19 -0
  116. canvas_sdk/v1/data/command.py +2 -4
  117. canvas_sdk/v1/data/common.py +10 -0
  118. canvas_sdk/v1/data/compound_medication.py +3 -4
  119. canvas_sdk/v1/data/condition.py +4 -9
  120. canvas_sdk/v1/data/coverage.py +66 -26
  121. canvas_sdk/v1/data/detected_issue.py +20 -20
  122. canvas_sdk/v1/data/device.py +2 -14
  123. canvas_sdk/v1/data/discount.py +2 -5
  124. canvas_sdk/v1/data/encounter.py +44 -0
  125. canvas_sdk/v1/data/facility.py +1 -0
  126. canvas_sdk/v1/data/goal.py +2 -14
  127. canvas_sdk/v1/data/imaging.py +4 -30
  128. canvas_sdk/v1/data/immunization.py +7 -15
  129. canvas_sdk/v1/data/lab.py +12 -65
  130. canvas_sdk/v1/data/line_item_transaction.py +2 -5
  131. canvas_sdk/v1/data/medication.py +3 -8
  132. canvas_sdk/v1/data/medication_history.py +142 -0
  133. canvas_sdk/v1/data/medication_statement.py +41 -0
  134. canvas_sdk/v1/data/message.py +4 -8
  135. canvas_sdk/v1/data/note.py +37 -38
  136. canvas_sdk/v1/data/observation.py +9 -36
  137. canvas_sdk/v1/data/organization.py +70 -9
  138. canvas_sdk/v1/data/patient.py +8 -12
  139. canvas_sdk/v1/data/patient_consent.py +4 -14
  140. canvas_sdk/v1/data/payment_collection.py +2 -5
  141. canvas_sdk/v1/data/posting.py +3 -9
  142. canvas_sdk/v1/data/practicelocation.py +66 -7
  143. canvas_sdk/v1/data/protocol_override.py +3 -4
  144. canvas_sdk/v1/data/protocol_result.py +3 -3
  145. canvas_sdk/v1/data/questionnaire.py +10 -26
  146. canvas_sdk/v1/data/reason_for_visit.py +2 -6
  147. canvas_sdk/v1/data/referral.py +41 -17
  148. canvas_sdk/v1/data/staff.py +34 -26
  149. canvas_sdk/v1/data/stop_medication_event.py +27 -0
  150. canvas_sdk/v1/data/task.py +30 -11
  151. canvas_sdk/v1/data/team.py +2 -4
  152. canvas_sdk/v1/data/uncategorized_clinical_document.py +84 -0
  153. canvas_sdk/v1/data/user.py +14 -0
  154. canvas_sdk/v1/data/utils.py +5 -0
  155. canvas_sdk/value_set/v2026/__init__.py +1 -0
  156. canvas_sdk/value_set/v2026/adverse_event.py +157 -0
  157. canvas_sdk/value_set/v2026/allergy.py +116 -0
  158. canvas_sdk/value_set/v2026/assessment.py +466 -0
  159. canvas_sdk/value_set/v2026/communication.py +496 -0
  160. canvas_sdk/value_set/v2026/condition.py +52934 -0
  161. canvas_sdk/value_set/v2026/device.py +315 -0
  162. canvas_sdk/value_set/v2026/diagnostic_study.py +5243 -0
  163. canvas_sdk/value_set/v2026/encounter.py +2714 -0
  164. canvas_sdk/value_set/v2026/immunization.py +297 -0
  165. canvas_sdk/value_set/v2026/individual_characteristic.py +339 -0
  166. canvas_sdk/value_set/v2026/intervention.py +1703 -0
  167. canvas_sdk/value_set/v2026/laboratory_test.py +1831 -0
  168. canvas_sdk/value_set/v2026/medication.py +8218 -0
  169. canvas_sdk/value_set/v2026/no_qdm_category_assigned.py +26493 -0
  170. canvas_sdk/value_set/v2026/physical_exam.py +342 -0
  171. canvas_sdk/value_set/v2026/procedure.py +27869 -0
  172. canvas_sdk/value_set/v2026/symptom.py +625 -0
  173. logger/logger.py +30 -31
  174. logger/logstash.py +282 -0
  175. logger/pubsub.py +26 -0
  176. plugin_runner/allowed-module-imports.json +940 -9
  177. plugin_runner/generate_allowed_imports.py +1 -0
  178. plugin_runner/installation.py +2 -2
  179. plugin_runner/plugin_runner.py +21 -24
  180. plugin_runner/sandbox.py +34 -0
  181. protobufs/canvas_generated/messages/effects.proto +65 -0
  182. protobufs/canvas_generated/messages/events.proto +150 -51
  183. settings.py +27 -11
  184. canvas_sdk/effects/calendar/create_event.py +0 -43
  185. {canvas-0.63.0.dist-info → canvas-0.89.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,342 @@
1
+ from ..value_set import ValueSet
2
+
3
+
4
+ class RetinalOrDilatedEyeExam(ValueSet):
5
+ """
6
+ **Clinical Focus:** The purpose of this value set is to represent concepts for a physical exam where a retinal or dilated eye exam was performed.
7
+
8
+ **Data Element Scope:** This value set may use a model element related to Physical Exam.
9
+
10
+ **Inclusion Criteria:** Includes concepts that represent a physical exam during which a retinal or dilated eye exam occurred.
11
+
12
+ **Exclusion Criteria:** No exclusions.
13
+
14
+ ** Used in:** CMS131v10
15
+ """
16
+
17
+ VALUE_SET_NAME = "Retinal or Dilated Eye Exam"
18
+ OID = "2.16.840.1.113883.3.464.1003.115.12.1088"
19
+ DEFINITION_VERSION = "20170504"
20
+ EXPANSION_VERSION = "eCQM Update 2025-05-08"
21
+
22
+ SNOMEDCT = {
23
+ "18188000", # Ophthalmoscopy under general anesthesia (procedure)
24
+ "20067007", # Ocular fundus photography (procedure)
25
+ "21593001", # Ophthalmodynamography (procedure)
26
+ "252779009", # Single bright white flash electroretinography (procedure)
27
+ "252780007", # Dark adapted single bright flash electroretinography (procedure)
28
+ "252781006", # Pre-dark-adapted single bright flash electroretinography (procedure)
29
+ "252782004", # Photopic electroretinography (procedure)
30
+ "252783009", # Scotopic rod electroretinography (procedure)
31
+ "252784003", # Flicker electroretinography (procedure)
32
+ "252788000", # Chromatic electroretinography (procedure)
33
+ "252789008", # Early receptor potential electroretinography (procedure)
34
+ "252790004", # Focal electroretinography (procedure)
35
+ "252846004", # Scanning laser ophthalmoscopy (procedure)
36
+ "274795007", # Examination of optic disc (procedure)
37
+ "274798009", # Examination of retina (procedure)
38
+ "3047001", # Kowa fundus photography (procedure)
39
+ "308110009", # Direct fundoscopy following mydriatic (procedure)
40
+ "30842004", # Ophthalmoscopy with medical evaluation, extended, with fundus photography (procedure)
41
+ "314971001", # Camera fundoscopy (procedure)
42
+ "314972008", # Indirect fundoscopy following mydriatic (procedure)
43
+ "36844005", # Ophthalmoscopy with medical evaluation, extended, with ophthalmodynamometry (procedure)
44
+ "391999003", # Confocal scanning laser ophthalmoscopy (procedure)
45
+ "392005004", # Scanning laser polarimetry (procedure)
46
+ "410441007", # Ophthalmoscopy with medical evaluation, extended, with fluorescein angiography (procedure)
47
+ "410450009", # Direct ophthalmoscopy (procedure)
48
+ "410451008", # Indirect ophthalmoscopy (procedure)
49
+ "410452001", # Monocular indirect ophthalmoscopy (procedure)
50
+ "410453006", # Binocular indirect ophthalmoscopy (procedure)
51
+ "410455004", # Slit lamp fundus examination (procedure)
52
+ "416369006", # Integrated optical coherence tomography and scanning laser ophthalmoscopy (procedure)
53
+ "417587001", # Integrated ray-trace triangulation acquisition laser scanning with conventional fundus imaging (procedure)
54
+ "420213007", # Multifocal electroretinography (procedure)
55
+ "425816006", # Ultrasonic evaluation of retina (procedure)
56
+ "427478009", # Evaluation of retina (procedure)
57
+ "53524009", # Ophthalmoscopy (procedure)
58
+ "56072006", # Ophthalmoscopy with medical evaluation, extended, for retinal detachment mapping (procedure)
59
+ "56204000", # Ophthalmodynamometry (procedure)
60
+ "6615001", # Electroretinography (procedure)
61
+ "700070005", # Optical coherence tomography of retina (procedure)
62
+ "722161008", # Diabetic retinal eye exam (procedure)
63
+ }
64
+
65
+ class BestCorrectedVisualAcuityExamUsingSnellenChart(ValueSet):
66
+ """
67
+ **Clinical Focus:** The purpose of this value set is to represent concepts of a physical exam for visual acuity exams using a Snellen chart.
68
+
69
+ **Data Element Scope:** This value set may use a model element related to Physical Exam.
70
+
71
+ **Inclusion Criteria:** Includes concepts that represent a physical exam for visual acuity using a Snellen chart.
72
+
73
+ **Exclusion Criteria:** No exclusions.
74
+ """
75
+
76
+ VALUE_SET_NAME = "Best Corrected Visual Acuity Exam Using Snellen Chart"
77
+ OID = "2.16.840.1.113883.3.526.3.1560"
78
+ DEFINITION_VERSION = "20210210"
79
+ EXPANSION_VERSION = "eCQM Update 2025-05-08"
80
+
81
+ LOINC = {
82
+ "79880-1", # Visual acuity best corrected Right eye by Snellen eye chart
83
+ "79881-9", # Visual acuity best corrected Left eye by Snellen eye chart
84
+ }
85
+
86
+ class HeartRate(ValueSet):
87
+ """
88
+ **Clinical Focus:** The purpose of this value set is to represent concepts of a physical exam measuring heart rate.
89
+
90
+ **Data Element Scope:** This value set may use a model element related to Physical Exam.
91
+
92
+ **Inclusion Criteria:** Includes concepts that represent a physical exam for obtaining heart rate.
93
+
94
+ **Exclusion Criteria:** No exclusions.
95
+ """
96
+
97
+ VALUE_SET_NAME = "Heart Rate"
98
+ OID = "2.16.840.1.113883.3.526.3.1176"
99
+ DEFINITION_VERSION = "20170504"
100
+ EXPANSION_VERSION = "eCQM Update 2025-05-08"
101
+
102
+ LOINC = {
103
+ "11328-2", # Heart rate at First encounter
104
+ "68999-2", # Heart rate --supine
105
+ "69000-8", # Heart rate --sitting
106
+ "69001-6", # Heart rate --standing
107
+ "8867-4", # Heart rate
108
+ }
109
+
110
+ class BmiPercentile(ValueSet):
111
+ """
112
+ **Clinical Focus:** The purpose of this value set is to represent concepts for a physical exam where a body mass index (BMI) percentile is calculated.
113
+
114
+ **Data Element Scope:** This value set may use a model element related to Physical Exam.
115
+
116
+ **Inclusion Criteria:** Includes concepts that represent a physical exam with a BMI percentile measurement.
117
+
118
+ **Exclusion Criteria:** No exclusions.
119
+ """
120
+
121
+ VALUE_SET_NAME = "BMI percentile"
122
+ OID = "2.16.840.1.113883.3.464.1003.121.12.1012"
123
+ DEFINITION_VERSION = "20170504"
124
+ EXPANSION_VERSION = "eCQM Update 2025-05-08"
125
+
126
+ LOINC = {
127
+ "59574-4", # Body mass index (BMI) [Percentile]
128
+ "59575-1", # Body mass index (BMI) [Percentile] Per age
129
+ "59576-9", # Body mass index (BMI) [Percentile] Per age and sex
130
+ }
131
+
132
+ class Height(ValueSet):
133
+ """
134
+ **Clinical Focus:** The purpose of this value set is to represent concepts for a physical exam with measured height.
135
+
136
+ **Data Element Scope:** This value set may use a model element related to Physical Exam.
137
+
138
+ **Inclusion Criteria:** Includes concepts that represent a physical exam with a patient height measurement.
139
+
140
+ **Exclusion Criteria:** Excludes concepts that represent patient reported height, a percentile for height or an estimated height.
141
+ """
142
+
143
+ VALUE_SET_NAME = "Height"
144
+ OID = "2.16.840.1.113883.3.464.1003.121.12.1014"
145
+ DEFINITION_VERSION = "20170504"
146
+ EXPANSION_VERSION = "eCQM Update 2025-05-08"
147
+
148
+ LOINC = {
149
+ "3137-7", # Body height Measured
150
+ "8302-2", # Body height
151
+ "8306-3", # Body height --lying
152
+ "8307-1", # Body height --preoperative
153
+ "8308-9", # Body height --standing
154
+ }
155
+
156
+ class Weight(ValueSet):
157
+ """
158
+ **Clinical Focus:** The purpose of this value set is to represent concepts for a physical exam with measured weight.
159
+
160
+ **Data Element Scope:** This value set may use a model element related to Physical Exam.
161
+
162
+ **Inclusion Criteria:** Includes concepts that represent a physical exam with a patient weight measurement.
163
+
164
+ **Exclusion Criteria:** Excludes concepts that represent an ideal body weight, estimated body weight or a body fat measurement.
165
+ """
166
+
167
+ VALUE_SET_NAME = "Weight"
168
+ OID = "2.16.840.1.113883.3.464.1003.121.12.1015"
169
+ DEFINITION_VERSION = "20170504"
170
+ EXPANSION_VERSION = "eCQM Update 2025-05-08"
171
+
172
+ LOINC = {
173
+ "18833-4", # First Body weight
174
+ "29463-7", # Body weight
175
+ "3141-9", # Body weight Measured
176
+ "3142-7", # Body weight Stated
177
+ "8341-0", # Dry body weight Measured
178
+ "8349-3", # Body weight Measured --preoperative
179
+ "8350-1", # Body weight Measured --with clothes
180
+ "8351-9", # Body weight Measured --without clothes
181
+ }
182
+
183
+ class BodyTemperature(ValueSet):
184
+ """
185
+ **Clinical Focus:** The purpose of this value set is to represent concepts for a physical exam with an observation or measurement of a patient's body temperature.
186
+
187
+ **Data Element Scope:** This value set may use a model element related to Physical Exam.
188
+
189
+ **Inclusion Criteria:** Includes concepts that represent a physical exam during which observation or measurement of a body temperature occurred.
190
+
191
+ **Exclusion Criteria:** No exclusions.
192
+ """
193
+
194
+ VALUE_SET_NAME = "Body Temperature"
195
+ OID = "2.16.840.1.113762.1.4.1045.152"
196
+ DEFINITION_VERSION = "20250220"
197
+ EXPANSION_VERSION = "eCQM Update 2025-05-08"
198
+
199
+ LOINC = {
200
+ "104063-3", # Body temperature - Groin
201
+ "11289-6", # Body temperature at First encounter
202
+ "60830-7", # Finger temperature
203
+ "60833-1", # Toe temperature
204
+ "60836-4", # Esophageal temperature
205
+ "60838-0", # Nasopharyngeal temperature
206
+ "61008-9", # Body surface temperature
207
+ "75539-7", # Body temperature - Temporal artery
208
+ "76010-8", # Nasal temperature
209
+ "76011-6", # Ear temperature
210
+ "8310-5", # Body temperature
211
+ "8328-7", # Axillary temperature
212
+ "8329-5", # Body temperature - Core
213
+ "8330-3", # Body temperature - Intravascular
214
+ "8331-1", # Oral temperature
215
+ "8332-9", # Rectal temperature
216
+ "8333-7", # Tympanic membrane temperature
217
+ "8334-5", # Body temperature - Urinary bladder
218
+ "91371-5", # Body temperature - Brain
219
+ "98657-0", # Body temperature - Hand surface
220
+ "98663-8", # Body temperature - Foot surface
221
+ }
222
+
223
+ class BodyWeight(ValueSet):
224
+ """
225
+ **Clinical Focus:** The purpose of this value set is to represent concepts for a physical exam with an observation or measurement of body weight.
226
+
227
+ **Data Element Scope:** This value set may use a model element related to Physical Exam.
228
+
229
+ **Inclusion Criteria:** Includes concepts that represent a physical exam during which observation or measurement of a person's body weight occurred.
230
+
231
+ **Exclusion Criteria:** No exclusions.
232
+ """
233
+
234
+ VALUE_SET_NAME = "Body Weight"
235
+ OID = "2.16.840.1.113762.1.4.1045.159"
236
+ DEFINITION_VERSION = "20230214"
237
+ EXPANSION_VERSION = "eCQM Update 2025-05-08"
238
+
239
+ LOINC = {
240
+ "18833-4", # First Body weight
241
+ "29463-7", # Body weight
242
+ "3141-9", # Body weight Measured
243
+ "3142-7", # Body weight Stated
244
+ "75292-3", # Body weight - Reported --usual
245
+ "8341-0", # Dry body weight Measured
246
+ "8344-4", # Body weight Measured --post dialysis
247
+ "8346-9", # Body weight Measured --postoperative
248
+ "8347-7", # Body weight Measured --pre dialysis
249
+ "8349-3", # Body weight Measured --preoperative
250
+ "8350-1", # Body weight Measured --with clothes
251
+ "8351-9", # Body weight Measured --without clothes
252
+ }
253
+
254
+ class OxygenSaturationByPulseOximetry(ValueSet):
255
+ """
256
+ **Clinical Focus:** The purpose of this value set is to represent concepts for a physical exam with an observation or measurement of oxygen saturation.
257
+
258
+ **Data Element Scope:** This value set may use a model element related to Physical Exam.
259
+
260
+ **Inclusion Criteria:** Includes concepts that represent a physical exam during which observation or measurement of a person's oxygen saturation occurred via pulse oximtery.
261
+
262
+ **Exclusion Criteria:** Oxygen saturation values captured through other means of collection (for example a blood specimen)
263
+ """
264
+
265
+ VALUE_SET_NAME = "Oxygen Saturation by Pulse Oximetry"
266
+ OID = "2.16.840.1.113762.1.4.1045.151"
267
+ DEFINITION_VERSION = "20230214"
268
+ EXPANSION_VERSION = "eCQM Update 2025-05-08"
269
+
270
+ LOINC = {
271
+ "59408-5", # Oxygen saturation in Arterial blood by Pulse oximetry
272
+ "59410-1", # Oxygen saturation in Arterial blood by Pulse oximetry --on room air
273
+ "59414-3", # Oxygen saturation in Arterial blood by Pulse oximetry --pre bronchodilation
274
+ "59415-0", # Oxygen saturation in Arterial blood by Pulse oximetry --pre physiotherapy
275
+ "59416-8", # Oxygen saturation in Arterial blood by Pulse oximetry --pre treatment
276
+ "59417-6", # Oxygen saturation in Arterial blood by Pulse oximetry --resting
277
+ "89276-0", # Oxygen saturation in Arterial blood by Pulse oximetry --W exercise
278
+ "89277-8", # Oxygen saturation in Arterial blood by Pulse oximetry --during anesthesia
279
+ }
280
+
281
+ class RespiratoryRate(ValueSet):
282
+ """
283
+ **Clinical Focus:** The purpose of this value set is to represent concepts for a physical exam with an observation or measurement of respiratory rate.
284
+
285
+ **Data Element Scope:** This value set may use a model element related to Physical Exam.
286
+
287
+ **Inclusion Criteria:** Includes concepts that represent a physical exam during which observation or measurement of a person's respiratory rate occurred.
288
+
289
+ **Exclusion Criteria:** No exclusions.
290
+ """
291
+
292
+ VALUE_SET_NAME = "Respiratory Rate"
293
+ OID = "2.16.840.1.113762.1.4.1045.130"
294
+ DEFINITION_VERSION = "20230214"
295
+ EXPANSION_VERSION = "eCQM Update 2025-05-08"
296
+
297
+ LOINC = {
298
+ "11291-2", # Respiratory rate at First encounter
299
+ "33438-3", # Breath rate mechanical --on ventilator
300
+ "76174-2", # Respiratory rate by Pulse oximetry.plethysmograph
301
+ "76528-9", # Breath rate spontaneous
302
+ "9279-1", # Respiratory rate
303
+ }
304
+
305
+ class SystolicBloodPressure(ValueSet):
306
+ """
307
+ **Clinical Focus:** The purpose of this value set is to represent concepts for a physical exam with an observation or measurement of systolic blood pressure.
308
+
309
+ **Data Element Scope:** This value set may use a model element related to Physical Exam.
310
+
311
+ **Inclusion Criteria:** Includes concepts that represent a physical exam during which observation or measurement of a person's systolic blood pressure occurred.
312
+
313
+ **Exclusion Criteria:** No exclusions.
314
+ """
315
+
316
+ VALUE_SET_NAME = "Systolic Blood Pressure"
317
+ OID = "2.16.840.1.113762.1.4.1045.163"
318
+ DEFINITION_VERSION = "20230214"
319
+ EXPANSION_VERSION = "eCQM Update 2025-05-08"
320
+
321
+ LOINC = {
322
+ "11378-7", # Systolic blood pressure at First encounter
323
+ "8459-0", # Systolic blood pressure--sitting
324
+ "8460-8", # Systolic blood pressure--standing
325
+ "8461-6", # Systolic blood pressure--supine
326
+ "8480-6", # Systolic blood pressure
327
+ "89268-7", # Systolic blood pressure--lying in L-lateral position
328
+ }
329
+
330
+ __exports__ = (
331
+ "RetinalOrDilatedEyeExam",
332
+ "BestCorrectedVisualAcuityExamUsingSnellenChart",
333
+ "HeartRate",
334
+ "BmiPercentile",
335
+ "Height",
336
+ "Weight",
337
+ "BodyTemperature",
338
+ "BodyWeight",
339
+ "OxygenSaturationByPulseOximetry",
340
+ "RespiratoryRate",
341
+ "SystolicBloodPressure",
342
+ )