canvas 0.8.1__tar.gz → 0.9.0__tar.gz

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.

Potentially problematic release.


This version of canvas might be problematic. Click here for more details.

Files changed (255) hide show
  1. {canvas-0.8.1 → canvas-0.9.0}/PKG-INFO +1 -1
  2. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/plugin/plugin.py +1 -1
  3. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/protocols/clinical_quality_measure.py +54 -22
  4. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/lab.py +22 -1
  5. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/patient.py +14 -1
  6. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/custom.py +83 -0
  7. {canvas-0.8.1 → canvas-0.9.0}/pyproject.toml +1 -1
  8. {canvas-0.8.1 → canvas-0.9.0}/README.md +0 -0
  9. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/__init__.py +0 -0
  10. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/__init__.py +0 -0
  11. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/auth/__init__.py +0 -0
  12. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/auth/tests.py +0 -0
  13. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/auth/utils.py +0 -0
  14. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/__init__.py +0 -0
  15. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/emit.py +0 -0
  16. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/ALLERGY_INTOLERANCE_CREATED.ndjson +0 -0
  17. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/ALLERGY_INTOLERANCE_UPDATED.ndjson +0 -0
  18. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CANCELED.ndjson +0 -0
  19. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CHECKED_IN.ndjson +0 -0
  20. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CREATED.ndjson +0 -0
  21. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_NO_SHOWED.ndjson +0 -0
  22. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_RESCHEDULED.ndjson +0 -0
  23. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_RESTORED.ndjson +0 -0
  24. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_UPDATED.ndjson +0 -0
  25. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__CONDITION_SELECTED.ndjson +0 -0
  26. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__POST_COMMIT.ndjson +0 -0
  27. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__POST_ORIGINATE.ndjson +0 -0
  28. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__POST_UPDATE.ndjson +0 -0
  29. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__PRE_COMMIT.ndjson +0 -0
  30. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__PRE_ORIGINATE.ndjson +0 -0
  31. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__PRE_UPDATE.ndjson +0 -0
  32. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/BILLING_LINE_ITEM_CREATED.ndjson +0 -0
  33. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/BILLING_LINE_ITEM_UPDATED.ndjson +0 -0
  34. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/CONDITION_ASSESSED.ndjson +0 -0
  35. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/CONDITION_CREATED.ndjson +0 -0
  36. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/CONDITION_UPDATED.ndjson +0 -0
  37. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/CRON.ndjson +0 -0
  38. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/ENCOUNTER_CREATED.ndjson +0 -0
  39. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/ENCOUNTER_UPDATED.ndjson +0 -0
  40. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_CREATED.ndjson +0 -0
  41. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_STATEMENT_CREATED.ndjson +0 -0
  42. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_STATEMENT_UPDATED.ndjson +0 -0
  43. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_UPDATED.ndjson +0 -0
  44. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/INTERVIEW_CREATED.ndjson +0 -0
  45. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/INTERVIEW_UPDATED.ndjson +0 -0
  46. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/LAB_ORDER_CREATED.ndjson +0 -0
  47. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/LAB_ORDER_UPDATED.ndjson +0 -0
  48. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_LIST_ITEM_CREATED.ndjson +0 -0
  49. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_LIST_ITEM_UPDATED.ndjson +0 -0
  50. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__POST_COMMIT.ndjson +0 -0
  51. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__POST_ORIGINATE.ndjson +0 -0
  52. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__POST_UPDATE.ndjson +0 -0
  53. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__PRE_COMMIT.ndjson +0 -0
  54. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__PRE_ORIGINATE.ndjson +0 -0
  55. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__PRE_UPDATE.ndjson +0 -0
  56. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT__MEDICATION__POST_SEARCH.ndjson +0 -0
  57. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/PATIENT_CREATED.ndjson +0 -0
  58. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/PATIENT_UPDATED.ndjson +0 -0
  59. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/PLAN_COMMAND__POST_ORIGINATE.ndjson +0 -0
  60. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/PLAN_COMMAND__PRE_ORIGINATE.ndjson +0 -0
  61. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__POST_COMMIT.ndjson +0 -0
  62. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__POST_ORIGINATE.ndjson +0 -0
  63. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__POST_UPDATE.ndjson +0 -0
  64. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__PRE_COMMIT.ndjson +0 -0
  65. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__PRE_ORIGINATE.ndjson +0 -0
  66. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__PRE_UPDATE.ndjson +0 -0
  67. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE__QUESTIONNAIRE__POST_SEARCH.ndjson +0 -0
  68. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/TASK_COMMENT_CREATED.ndjson +0 -0
  69. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/TASK_CREATED.ndjson +0 -0
  70. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/TASK_UPDATED.ndjson +0 -0
  71. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/VITAL_SIGN_CREATED.ndjson +0 -0
  72. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/emit/event_fixtures/VITAL_SIGN_UPDATED.ndjson +0 -0
  73. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/logs/__init__.py +0 -0
  74. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/logs/logs.py +0 -0
  75. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/plugin/__init__.py +0 -0
  76. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/plugin/tests.py +0 -0
  77. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/run_plugins/__init__.py +0 -0
  78. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/apps/run_plugins/run_plugins.py +0 -0
  79. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/conftest.py +0 -0
  80. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/main.py +0 -0
  81. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/templates/plugins/default/cookiecutter.json +0 -0
  82. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/CANVAS_MANIFEST.json +0 -0
  83. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/README.md +0 -0
  84. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/protocols/__init__.py +0 -0
  85. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/protocols/my_protocol.py +0 -0
  86. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/tests.py +0 -0
  87. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/utils/__init__.py +0 -0
  88. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/utils/context/__init__.py +0 -0
  89. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/utils/context/context.py +0 -0
  90. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/utils/context/tests.py +0 -0
  91. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/utils/print/__init__.py +0 -0
  92. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/utils/print/print.py +0 -0
  93. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/utils/print/tests.py +0 -0
  94. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/utils/urls/__init__.py +0 -0
  95. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/utils/urls/tests.py +0 -0
  96. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/utils/urls/urls.py +0 -0
  97. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/utils/validators/__init__.py +0 -0
  98. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/utils/validators/manifest_schema.py +0 -0
  99. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/utils/validators/tests.py +0 -0
  100. {canvas-0.8.1 → canvas-0.9.0}/canvas_cli/utils/validators/validators.py +0 -0
  101. {canvas-0.8.1 → canvas-0.9.0}/canvas_generated/messages/effects_pb2.py +0 -0
  102. {canvas-0.8.1 → canvas-0.9.0}/canvas_generated/messages/effects_pb2.pyi +0 -0
  103. {canvas-0.8.1 → canvas-0.9.0}/canvas_generated/messages/effects_pb2_grpc.py +0 -0
  104. {canvas-0.8.1 → canvas-0.9.0}/canvas_generated/messages/events_pb2.py +0 -0
  105. {canvas-0.8.1 → canvas-0.9.0}/canvas_generated/messages/events_pb2.pyi +0 -0
  106. {canvas-0.8.1 → canvas-0.9.0}/canvas_generated/messages/events_pb2_grpc.py +0 -0
  107. {canvas-0.8.1 → canvas-0.9.0}/canvas_generated/messages/plugins_pb2.py +0 -0
  108. {canvas-0.8.1 → canvas-0.9.0}/canvas_generated/messages/plugins_pb2.pyi +0 -0
  109. {canvas-0.8.1 → canvas-0.9.0}/canvas_generated/messages/plugins_pb2_grpc.py +0 -0
  110. {canvas-0.8.1 → canvas-0.9.0}/canvas_generated/services/plugin_runner_pb2.py +0 -0
  111. {canvas-0.8.1 → canvas-0.9.0}/canvas_generated/services/plugin_runner_pb2.pyi +0 -0
  112. {canvas-0.8.1 → canvas-0.9.0}/canvas_generated/services/plugin_runner_pb2_grpc.py +0 -0
  113. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/__init__.py +0 -0
  114. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/base.py +0 -0
  115. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/__init__.py +0 -0
  116. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/base.py +0 -0
  117. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/allergy.py +0 -0
  118. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/assess.py +0 -0
  119. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/close_goal.py +0 -0
  120. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/diagnose.py +0 -0
  121. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/family_history.py +0 -0
  122. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/goal.py +0 -0
  123. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/history_present_illness.py +0 -0
  124. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/instruct.py +0 -0
  125. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/lab_order.py +0 -0
  126. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/medical_history.py +0 -0
  127. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/medication_statement.py +0 -0
  128. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/past_surgical_history.py +0 -0
  129. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/perform.py +0 -0
  130. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/plan.py +0 -0
  131. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/prescribe.py +0 -0
  132. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/questionnaire.py +0 -0
  133. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/reason_for_visit.py +0 -0
  134. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/refill.py +0 -0
  135. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/remove_allergy.py +0 -0
  136. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/stop_medication.py +0 -0
  137. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/task.py +0 -0
  138. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/update_diagnosis.py +0 -0
  139. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/update_goal.py +0 -0
  140. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/commands/vitals.py +0 -0
  141. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/constants.py +0 -0
  142. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/tests/protocol/__init__.py +0 -0
  143. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/tests/protocol/tests.py +0 -0
  144. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/tests/schema/__init__.py +0 -0
  145. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/tests/schema/tests.py +0 -0
  146. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/tests/test_utils.py +0 -0
  147. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/tests/unit/__init__.py +0 -0
  148. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/commands/tests/unit/tests.py +0 -0
  149. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/effects/__init__.py +0 -0
  150. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/effects/banner_alert/__init__.py +0 -0
  151. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/effects/banner_alert/add_banner_alert.py +0 -0
  152. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/effects/banner_alert/remove_banner_alert.py +0 -0
  153. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/effects/banner_alert/tests.py +0 -0
  154. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/effects/base.py +0 -0
  155. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/effects/patient_chart_summary_configuration.py +0 -0
  156. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/effects/protocol_card/__init__.py +0 -0
  157. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/effects/protocol_card/protocol_card.py +0 -0
  158. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/effects/protocol_card/tests.py +0 -0
  159. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/effects/task/task.py +0 -0
  160. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/events/__init__.py +0 -0
  161. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/handlers/__init__.py +0 -0
  162. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/handlers/base.py +0 -0
  163. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/handlers/cron_task.py +0 -0
  164. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/protocols/__init__.py +0 -0
  165. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/protocols/base.py +0 -0
  166. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/protocols/timeframe.py +0 -0
  167. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/tests/__init__.py +0 -0
  168. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/utils/__init__.py +0 -0
  169. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/utils/db.py +0 -0
  170. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/utils/http.py +0 -0
  171. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/utils/stats.py +0 -0
  172. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/utils/tests.py +0 -0
  173. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/__init__.py +0 -0
  174. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/__init__.py +0 -0
  175. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/allergy_intolerance.py +0 -0
  176. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/base.py +0 -0
  177. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/billing.py +0 -0
  178. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/command.py +0 -0
  179. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/common.py +0 -0
  180. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/condition.py +3 -3
  181. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/detected_issue.py +0 -0
  182. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/device.py +0 -0
  183. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/imaging.py +0 -0
  184. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/medication.py +0 -0
  185. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/note.py +0 -0
  186. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/observation.py +0 -0
  187. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/protocol_override.py +0 -0
  188. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/questionnaire.py +0 -0
  189. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/staff.py +0 -0
  190. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/task.py +0 -0
  191. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/v1/data/user.py +0 -0
  192. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/__init__.py +0 -0
  193. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/tests/test_value_sets.py +0 -0
  194. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/__init__.py +0 -0
  195. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/adverse_event.py +0 -0
  196. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/allergy.py +0 -0
  197. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/assessment.py +0 -0
  198. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/communication.py +0 -0
  199. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/condition.py +0 -0
  200. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/device.py +0 -0
  201. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/diagnostic_study.py +0 -0
  202. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/encounter.py +0 -0
  203. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/immunization.py +0 -0
  204. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/individual_characteristic.py +0 -0
  205. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/intervention.py +0 -0
  206. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/laboratory_test.py +0 -0
  207. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/medication.py +0 -0
  208. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/physical_exam.py +0 -0
  209. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/procedure.py +0 -0
  210. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/v2022/symptom.py +0 -0
  211. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/value_set/value_set.py +0 -0
  212. {canvas-0.8.1 → canvas-0.9.0}/canvas_sdk/views/__init__.py +0 -0
  213. {canvas-0.8.1 → canvas-0.9.0}/logger/__init__.py +0 -0
  214. {canvas-0.8.1 → canvas-0.9.0}/logger/logger.py +0 -0
  215. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/__init__.py +0 -0
  216. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/authentication.py +0 -0
  217. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/plugin_runner.py +0 -0
  218. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/plugin_synchronizer.py +0 -0
  219. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/sandbox.py +0 -0
  220. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/__init__.py +0 -0
  221. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/data/plugins/.gitkeep +0 -0
  222. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/example_plugin/CANVAS_MANIFEST.json +0 -0
  223. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/example_plugin/README.md +0 -0
  224. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/example_plugin/__init__.py +0 -0
  225. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/example_plugin/protocols/__init__.py +0 -0
  226. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/example_plugin/protocols/my_protocol.py +0 -0
  227. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/CANVAS_MANIFEST.json +0 -0
  228. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/README.md +0 -0
  229. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/other_module/__init__.py +0 -0
  230. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/other_module/base.py +0 -0
  231. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/protocols/__init__.py +0 -0
  232. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/protocols/my_protocol.py +0 -0
  233. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/CANVAS_MANIFEST.json +0 -0
  234. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/README.md +0 -0
  235. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/other_module/__init__.py +0 -0
  236. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/other_module/base.py +0 -0
  237. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/protocols/__init__.py +0 -0
  238. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/protocols/my_protocol.py +0 -0
  239. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/CANVAS_MANIFEST.json +0 -0
  240. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/README.md +0 -0
  241. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/other_module/__init__.py +0 -0
  242. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/other_module/base.py +0 -0
  243. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/protocols/__init__.py +0 -0
  244. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/protocols/my_protocol.py +0 -0
  245. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/CANVAS_MANIFEST.json +0 -0
  246. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/README.md +0 -0
  247. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/other_module/__init__.py +0 -0
  248. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/other_module/base.py +0 -0
  249. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/protocols/__init__.py +0 -0
  250. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/protocols/my_protocol.py +0 -0
  251. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/test_plugin_runner.py +0 -0
  252. {canvas-0.8.1 → canvas-0.9.0}/plugin_runner/tests/test_sandbox.py +0 -0
  253. {canvas-0.8.1 → canvas-0.9.0}/pubsub/__init__.py +0 -0
  254. {canvas-0.8.1 → canvas-0.9.0}/pubsub/pubsub.py +0 -0
  255. {canvas-0.8.1 → canvas-0.9.0}/settings.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: canvas
3
- Version: 0.8.1
3
+ Version: 0.9.0
4
4
  Summary: SDK to customize event-driven actions in your Canvas instance
5
5
  License: MIT
6
6
  Author: Canvas Team
@@ -54,7 +54,7 @@ def _build_package(package: Path) -> Path:
54
54
  def _get_name_from_metadata(host: str, token: str, package: Path) -> str | None:
55
55
  """Extract metadata from a provided package and return the package name if it exists in the metadata."""
56
56
  try:
57
- with open(package) as package_file:
57
+ with open(package, "rb") as package_file:
58
58
  metadata_response = requests.post(
59
59
  plugin_url(host, "extract-metadata"),
60
60
  headers={"Authorization": f"Bearer {token}"},
@@ -1,13 +1,18 @@
1
- from typing import Any, cast
1
+ from typing import TYPE_CHECKING, Any, cast
2
2
 
3
3
  import arrow
4
- from django.db.models import Model
5
4
 
6
5
  from canvas_sdk.events import EventType
7
6
  from canvas_sdk.protocols.base import BaseProtocol
8
7
  from canvas_sdk.protocols.timeframe import Timeframe
8
+ from canvas_sdk.v1.data import Patient
9
9
  from canvas_sdk.v1.data.condition import Condition
10
+ from canvas_sdk.v1.data.lab import LabOrder, LabReport
10
11
  from canvas_sdk.v1.data.medication import Medication
12
+ from canvas_sdk.v1.data.protocol_override import ProtocolOverride
13
+
14
+ if TYPE_CHECKING:
15
+ from django.db.models import Model
11
16
 
12
17
 
13
18
  class ClinicalQualityMeasure(BaseProtocol):
@@ -54,6 +59,19 @@ class ClinicalQualityMeasure(BaseProtocol):
54
59
  """
55
60
  return cls.__name__
56
61
 
62
+ @staticmethod
63
+ def relative_float(value: str) -> float:
64
+ """Relative float method (better explanation needed here)."""
65
+ try:
66
+ sigma = 0.0
67
+ if value[0] == "<" and value[1] != "=":
68
+ sigma = -1e-6
69
+ elif value[0] == ">" and value[1] != "=":
70
+ sigma = +1e-6
71
+ return float(value.strip("<≤=≥>")) + sigma
72
+ except (ValueError, IndexError):
73
+ return 0
74
+
57
75
  @property
58
76
  def timeframe(self) -> Timeframe:
59
77
  """The default Timeframe (self.timeframe) for all protocols.
@@ -74,27 +92,41 @@ class ClinicalQualityMeasure(BaseProtocol):
74
92
  incurring more SQL queries.
75
93
  """
76
94
 
77
- def patient_id(model: type[Model]) -> str:
78
- return cast(
79
- str,
80
- model._default_manager.select_related("patient")
81
- .values_list("patient__id")
82
- .get(id=self.event.target)[0],
83
- )
95
+ def patient_id(model: "type[Model]") -> str:
96
+ if model == Patient:
97
+ return self.target
98
+ else:
99
+ return cast(
100
+ str,
101
+ model._default_manager.select_related("patient")
102
+ .values_list("patient__id")
103
+ .get(id=self.event.target)[0],
104
+ )
105
+
106
+ models = {
107
+ EventType.CONDITION_ASSESSED: Condition,
108
+ EventType.CONDITION_CREATED: Condition,
109
+ EventType.CONDITION_RESOLVED: Condition,
110
+ EventType.CONDITION_UPDATED: Condition,
111
+ EventType.LAB_ORDER_CREATED: LabOrder,
112
+ EventType.LAB_ORDER_UPDATED: LabOrder,
113
+ EventType.LAB_REPORT_CREATED: LabReport,
114
+ EventType.LAB_REPORT_UPDATED: LabReport,
115
+ EventType.MEDICATION_LIST_ITEM_CREATED: Medication,
116
+ EventType.MEDICATION_LIST_ITEM_UPDATED: Medication,
117
+ EventType.PATIENT_CREATED: Patient,
118
+ EventType.PATIENT_UPDATED: Patient,
119
+ EventType.PROTOCOL_OVERRIDE_CREATED: ProtocolOverride,
120
+ EventType.PROTOCOL_OVERRIDE_DELETED: ProtocolOverride,
121
+ EventType.PROTOCOL_OVERRIDE_UPDATED: ProtocolOverride,
122
+ }
84
123
 
85
124
  if not self._patient_id:
86
- # TODO: Add cases for ProtocolOverride
87
- match self.event.type:
88
- case EventType.CONDITION_CREATED | EventType.CONDITION_UPDATED:
89
- self._patient_id = patient_id(Condition)
90
- case (
91
- EventType.MEDICATION_LIST_ITEM_CREATED
92
- | EventType.MEDICATION_LIST_ITEM_UPDATED
93
- ):
94
- self._patient_id = patient_id(Medication)
95
- case _:
96
- raise AssertionError(
97
- f"Event type {self.event.type} not supported by 'patient_id_from_event'"
98
- )
125
+ try:
126
+ self._patient_id = patient_id(models[self.event.type])
127
+ except KeyError as error:
128
+ raise ValueError(
129
+ f"Event type {self.event.type} not supported by 'patient_id_from_event'"
130
+ ) from error
99
131
 
100
132
  return self._patient_id
@@ -1,6 +1,10 @@
1
1
  from django.db import models
2
2
 
3
- from canvas_sdk.v1.data.base import CommittableModelManager
3
+ from canvas_sdk.v1.data.base import (
4
+ CommittableModelManager,
5
+ TimeframeLookupQuerySetMixin,
6
+ ValueSetLookupQuerySet,
7
+ )
4
8
  from canvas_sdk.v1.data.condition import Condition
5
9
  from canvas_sdk.v1.data.patient import Patient
6
10
 
@@ -79,6 +83,21 @@ class LabReview(models.Model):
79
83
  patient_communication_method = models.CharField()
80
84
 
81
85
 
86
+ class LabValueTimeframeLookupQuerySetMixin(TimeframeLookupQuerySetMixin):
87
+ """A class that adds queryset functionality to filter using timeframes."""
88
+
89
+ @property
90
+ def timeframe_filter_field(self) -> str:
91
+ """Returns the field that should be filtered on. Can be overridden for different models."""
92
+ return "report__original_date"
93
+
94
+
95
+ class LabValueQuerySet(ValueSetLookupQuerySet, LabValueTimeframeLookupQuerySetMixin):
96
+ """LabValueQuerySet."""
97
+
98
+ pass
99
+
100
+
82
101
  class LabValue(models.Model):
83
102
  """A class representing a lab value."""
84
103
 
@@ -87,6 +106,8 @@ class LabValue(models.Model):
87
106
  app_label = "canvas_sdk"
88
107
  db_table = "canvas_sdk_data_api_labvalue_001"
89
108
 
109
+ objects = LabValueQuerySet.as_manager()
110
+
90
111
  id = models.UUIDField()
91
112
  dbid = models.BigIntegerField(primary_key=True)
92
113
  created = models.DateTimeField()
@@ -1,7 +1,19 @@
1
1
  from typing import Self
2
2
 
3
3
  import arrow
4
+ from django.contrib.postgres.fields import ArrayField
4
5
  from django.db import models
6
+ from django.db.models import TextChoices
7
+
8
+
9
+ class SexAtBirth(TextChoices):
10
+ """SexAtBirth."""
11
+
12
+ FEMALE = "F", "female"
13
+ MALE = "M", "male"
14
+ OTHER = "O", "other"
15
+ UNKNOWN = "UNK", "unknown"
16
+ BLANK = "", ""
5
17
 
6
18
 
7
19
  class Patient(models.Model):
@@ -17,7 +29,7 @@ class Patient(models.Model):
17
29
  first_name = models.CharField()
18
30
  last_name = models.CharField()
19
31
  birth_date = models.DateField()
20
- sex_at_birth = models.CharField()
32
+ sex_at_birth = models.CharField(choices=SexAtBirth.choices)
21
33
  created = models.DateTimeField()
22
34
  modified = models.DateTimeField()
23
35
  prefix = models.CharField()
@@ -30,6 +42,7 @@ class Patient(models.Model):
30
42
  gender_identity_term = models.CharField()
31
43
  gender_identity_code = models.CharField()
32
44
  preferred_pronouns = models.CharField()
45
+ biological_race_codes = ArrayField(models.CharField())
33
46
  last_known_timezone = models.CharField()
34
47
  mrn = models.CharField()
35
48
  active = models.BooleanField()
@@ -181,6 +181,89 @@ class Antiarrhythmics(ValueSet):
181
181
  }
182
182
 
183
183
 
184
+ class LabReportCreatinine(ValueSet):
185
+ """LabReportCreatinine."""
186
+
187
+ VALUE_SET_NAME = "Lab Report Creatinine"
188
+ EXPANSION_VERSION = "CanvasHCC Update 2018-10-04"
189
+
190
+ LOINC = {
191
+ "2160-0",
192
+ }
193
+
194
+
195
+ class HypertensiveChronicKidneyDisease(ValueSet):
196
+ """
197
+ **Clinical Focus:** This value set contains concepts that represent hypertensive kidney disease.
198
+
199
+ **Data Element Scope:** This value set may use the Quality Data Model (QDM) category related to Diagnosis.
200
+
201
+ **Inclusion Criteria:** Includes only relevant concepts associated with hypertensive kidney disease.
202
+
203
+ **Exclusion Criteria:** No exclusions.
204
+ """
205
+
206
+ OID = "2.16.840.1.113883.3.464.1003.109.12.1017"
207
+ VALUE_SET_NAME = "Hypertensive Chronic Kidney Disease"
208
+ EXPANSION_VERSION = "eCQM Update 2020-05-07"
209
+
210
+ ICD10CM = {"I120", "I129", "I130", "I1310", "I1311", "I132", "I150", "I151"}
211
+
212
+ ICD9CM = {
213
+ "40301",
214
+ "40310",
215
+ "40311",
216
+ "40390",
217
+ "40391",
218
+ "40400",
219
+ "40401",
220
+ "40402",
221
+ "40403",
222
+ "40410",
223
+ "40411",
224
+ "40412",
225
+ "40413",
226
+ "40490",
227
+ "40491",
228
+ "40492",
229
+ "40493",
230
+ }
231
+
232
+ SNOMEDCT = {
233
+ "111438007",
234
+ "123799005",
235
+ "123800009",
236
+ "14973001",
237
+ "193003",
238
+ "194774006",
239
+ "194783001",
240
+ "19769006",
241
+ "23130000",
242
+ "28119000",
243
+ "285831000119108",
244
+ "285841000119104",
245
+ "286371000119107",
246
+ "32916005",
247
+ "38481006",
248
+ "39018007",
249
+ "397748008",
250
+ "427889009",
251
+ "428575007",
252
+ "473392002",
253
+ "49220004",
254
+ "57684003",
255
+ "62240004",
256
+ "65443008",
257
+ "66052004",
258
+ "66610008",
259
+ "73410007",
260
+ "78544004",
261
+ "81363003",
262
+ "86234004",
263
+ "90493000",
264
+ }
265
+
266
+
184
267
  class DiabetesWithoutComplication(ValueSet):
185
268
  """Diabetes Without Complication."""
186
269
 
@@ -47,7 +47,7 @@ packages = [
47
47
  {include = "settings.py"}
48
48
  ]
49
49
  readme = "README.md"
50
- version = "0.8.1"
50
+ version = "0.9.0"
51
51
 
52
52
  [tool.poetry.dependencies]
53
53
  cookiecutter = "*"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes