canvas 0.30.0__tar.gz → 0.32.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 (365) hide show
  1. {canvas-0.30.0 → canvas-0.32.0}/PKG-INFO +2 -1
  2. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/run_plugins/run_plugins.py +1 -1
  3. canvas-0.32.0/canvas_generated/messages/events_pb2.py +31 -0
  4. {canvas-0.30.0 → canvas-0.32.0}/canvas_generated/messages/events_pb2.pyi +30 -16
  5. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/protocol_card/protocol_card.py +3 -0
  6. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/handlers/base.py +3 -0
  7. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/handlers/simple_api/__init__.py +6 -0
  8. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/handlers/simple_api/api.py +4 -0
  9. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/handlers/simple_api/security.py +65 -0
  10. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/tests/handlers/test_simple_api.py +56 -2
  11. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/user.py +1 -0
  12. {canvas-0.30.0 → canvas-0.32.0}/logger/logger.py +7 -1
  13. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/installation.py +14 -5
  14. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/plugin_runner.py +100 -37
  15. {canvas-0.30.0 → canvas-0.32.0}/protobufs/canvas_generated/messages/events.proto +15 -8
  16. {canvas-0.30.0 → canvas-0.32.0}/pyproject.toml +2 -1
  17. {canvas-0.30.0 → canvas-0.32.0}/settings.py +2 -0
  18. canvas-0.30.0/canvas_generated/messages/events_pb2.py +0 -31
  19. {canvas-0.30.0 → canvas-0.32.0}/.gitignore +0 -0
  20. {canvas-0.30.0 → canvas-0.32.0}/README.md +0 -0
  21. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/__init__.py +0 -0
  22. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/__init__.py +0 -0
  23. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/auth/__init__.py +0 -0
  24. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/auth/tests.py +0 -0
  25. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/auth/utils.py +0 -0
  26. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/__init__.py +0 -0
  27. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/emit.py +0 -0
  28. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/ALLERGY_INTOLERANCE_CREATED.ndjson +0 -0
  29. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/ALLERGY_INTOLERANCE_UPDATED.ndjson +0 -0
  30. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CANCELED.ndjson +0 -0
  31. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CHECKED_IN.ndjson +0 -0
  32. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CREATED.ndjson +0 -0
  33. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_NO_SHOWED.ndjson +0 -0
  34. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_RESCHEDULED.ndjson +0 -0
  35. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_RESTORED.ndjson +0 -0
  36. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_UPDATED.ndjson +0 -0
  37. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__CONDITION_SELECTED.ndjson +0 -0
  38. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__POST_COMMIT.ndjson +0 -0
  39. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__POST_ORIGINATE.ndjson +0 -0
  40. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__POST_UPDATE.ndjson +0 -0
  41. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__PRE_COMMIT.ndjson +0 -0
  42. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__PRE_ORIGINATE.ndjson +0 -0
  43. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__PRE_UPDATE.ndjson +0 -0
  44. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/BILLING_LINE_ITEM_CREATED.ndjson +0 -0
  45. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/BILLING_LINE_ITEM_UPDATED.ndjson +0 -0
  46. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/CONDITION_ASSESSED.ndjson +0 -0
  47. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/CONDITION_CREATED.ndjson +0 -0
  48. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/CONDITION_UPDATED.ndjson +0 -0
  49. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/CRON.ndjson +0 -0
  50. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/ENCOUNTER_CREATED.ndjson +0 -0
  51. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/ENCOUNTER_UPDATED.ndjson +0 -0
  52. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_CREATED.ndjson +0 -0
  53. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_STATEMENT_CREATED.ndjson +0 -0
  54. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_STATEMENT_UPDATED.ndjson +0 -0
  55. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_UPDATED.ndjson +0 -0
  56. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/INTERVIEW_CREATED.ndjson +0 -0
  57. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/INTERVIEW_UPDATED.ndjson +0 -0
  58. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/LAB_ORDER_CREATED.ndjson +0 -0
  59. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/LAB_ORDER_UPDATED.ndjson +0 -0
  60. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_LIST_ITEM_CREATED.ndjson +0 -0
  61. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_LIST_ITEM_UPDATED.ndjson +0 -0
  62. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__POST_COMMIT.ndjson +0 -0
  63. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__POST_ORIGINATE.ndjson +0 -0
  64. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__POST_UPDATE.ndjson +0 -0
  65. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__PRE_COMMIT.ndjson +0 -0
  66. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__PRE_ORIGINATE.ndjson +0 -0
  67. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__PRE_UPDATE.ndjson +0 -0
  68. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT__MEDICATION__POST_SEARCH.ndjson +0 -0
  69. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/PATIENT_CREATED.ndjson +0 -0
  70. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/PATIENT_UPDATED.ndjson +0 -0
  71. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/PLAN_COMMAND__POST_ORIGINATE.ndjson +0 -0
  72. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/PLAN_COMMAND__PRE_ORIGINATE.ndjson +0 -0
  73. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__POST_COMMIT.ndjson +0 -0
  74. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__POST_ORIGINATE.ndjson +0 -0
  75. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__POST_UPDATE.ndjson +0 -0
  76. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__PRE_COMMIT.ndjson +0 -0
  77. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__PRE_ORIGINATE.ndjson +0 -0
  78. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__PRE_UPDATE.ndjson +0 -0
  79. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE__QUESTIONNAIRE__POST_SEARCH.ndjson +0 -0
  80. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/SIMPLE_API_REQUEST.ndjson +0 -0
  81. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/TASK_COMMENT_CREATED.ndjson +0 -0
  82. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/TASK_CREATED.ndjson +0 -0
  83. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/TASK_UPDATED.ndjson +0 -0
  84. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/VITAL_SIGN_CREATED.ndjson +0 -0
  85. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/emit/event_fixtures/VITAL_SIGN_UPDATED.ndjson +0 -0
  86. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/logs/__init__.py +0 -0
  87. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/logs/logs.py +0 -0
  88. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/plugin/__init__.py +0 -0
  89. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/plugin/plugin.py +0 -0
  90. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/plugin/tests.py +0 -0
  91. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/apps/run_plugins/__init__.py +0 -0
  92. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/conftest.py +0 -0
  93. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/main.py +0 -0
  94. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/templates/plugins/application/cookiecutter.json +0 -0
  95. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/CANVAS_MANIFEST.json +0 -0
  96. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/README.md +0 -0
  97. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/applications/__init__.py +0 -0
  98. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/applications/my_application.py +0 -0
  99. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/assets/python-logo.png +0 -0
  100. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/templates/plugins/default/cookiecutter.json +0 -0
  101. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/CANVAS_MANIFEST.json +0 -0
  102. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/README.md +0 -0
  103. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/protocols/__init__.py +0 -0
  104. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/protocols/my_protocol.py +0 -0
  105. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/tests.py +0 -0
  106. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/utils/__init__.py +0 -0
  107. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/utils/context/__init__.py +0 -0
  108. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/utils/context/context.py +0 -0
  109. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/utils/context/tests.py +0 -0
  110. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/utils/print/__init__.py +0 -0
  111. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/utils/print/print.py +0 -0
  112. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/utils/print/tests.py +0 -0
  113. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/utils/urls/__init__.py +0 -0
  114. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/utils/urls/tests.py +0 -0
  115. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/utils/urls/urls.py +0 -0
  116. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/utils/validators/__init__.py +0 -0
  117. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/utils/validators/manifest_schema.py +0 -0
  118. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/utils/validators/tests.py +0 -0
  119. {canvas-0.30.0 → canvas-0.32.0}/canvas_cli/utils/validators/validators.py +0 -0
  120. {canvas-0.30.0 → canvas-0.32.0}/canvas_generated/messages/effects_pb2.py +0 -0
  121. {canvas-0.30.0 → canvas-0.32.0}/canvas_generated/messages/effects_pb2.pyi +0 -0
  122. {canvas-0.30.0 → canvas-0.32.0}/canvas_generated/messages/effects_pb2_grpc.py +0 -0
  123. {canvas-0.30.0 → canvas-0.32.0}/canvas_generated/messages/events_pb2_grpc.py +0 -0
  124. {canvas-0.30.0 → canvas-0.32.0}/canvas_generated/messages/plugins_pb2.py +0 -0
  125. {canvas-0.30.0 → canvas-0.32.0}/canvas_generated/messages/plugins_pb2.pyi +0 -0
  126. {canvas-0.30.0 → canvas-0.32.0}/canvas_generated/messages/plugins_pb2_grpc.py +0 -0
  127. {canvas-0.30.0 → canvas-0.32.0}/canvas_generated/services/plugin_runner_pb2.py +0 -0
  128. {canvas-0.30.0 → canvas-0.32.0}/canvas_generated/services/plugin_runner_pb2.pyi +0 -0
  129. {canvas-0.30.0 → canvas-0.32.0}/canvas_generated/services/plugin_runner_pb2_grpc.py +0 -0
  130. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/__init__.py +0 -0
  131. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/base.py +0 -0
  132. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/__init__.py +0 -0
  133. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/base.py +0 -0
  134. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/__init__.py +0 -0
  135. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/adjust_prescription.py +0 -0
  136. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/allergy.py +0 -0
  137. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/assess.py +0 -0
  138. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/close_goal.py +0 -0
  139. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/diagnose.py +0 -0
  140. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/exam.py +0 -0
  141. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/family_history.py +0 -0
  142. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/follow_up.py +0 -0
  143. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/goal.py +0 -0
  144. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/history_present_illness.py +0 -0
  145. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/imaging_order.py +0 -0
  146. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/instruct.py +0 -0
  147. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/lab_order.py +0 -0
  148. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/medical_history.py +0 -0
  149. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/medication_statement.py +0 -0
  150. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/past_surgical_history.py +0 -0
  151. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/perform.py +0 -0
  152. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/plan.py +0 -0
  153. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/prescribe.py +0 -0
  154. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/questionnaire/__init__.py +0 -0
  155. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/questionnaire/question.py +0 -0
  156. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/reason_for_visit.py +0 -0
  157. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/refer.py +0 -0
  158. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/refill.py +0 -0
  159. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/remove_allergy.py +0 -0
  160. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/resolve_condition.py +0 -0
  161. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/review_of_systems.py +0 -0
  162. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/stop_medication.py +0 -0
  163. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/structured_assessment.py +0 -0
  164. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/task.py +0 -0
  165. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/update_diagnosis.py +0 -0
  166. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/update_goal.py +0 -0
  167. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/commands/vitals.py +0 -0
  168. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/constants.py +0 -0
  169. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/tests/protocol/__init__.py +0 -0
  170. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/tests/protocol/tests.py +0 -0
  171. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/tests/schema/__init__.py +0 -0
  172. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/tests/schema/tests.py +0 -0
  173. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/tests/test_base_command.py +0 -0
  174. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/tests/test_utils.py +0 -0
  175. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/tests/unit/__init__.py +0 -0
  176. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/commands/tests/unit/tests.py +0 -0
  177. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/__init__.py +0 -0
  178. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/banner_alert/__init__.py +0 -0
  179. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/banner_alert/add_banner_alert.py +0 -0
  180. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/banner_alert/remove_banner_alert.py +0 -0
  181. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/banner_alert/tests.py +0 -0
  182. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/base.py +0 -0
  183. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/billing_line_item/__init__.py +0 -0
  184. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/billing_line_item/add_billing_line_item.py +0 -0
  185. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/billing_line_item/remove_billing_line_item.py +0 -0
  186. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/billing_line_item/update_billing_line_item.py +0 -0
  187. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/launch_modal.py +0 -0
  188. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/patient_chart_summary_configuration.py +0 -0
  189. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/patient_portal/__init__.py +0 -0
  190. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/patient_portal/application_configuration.py +0 -0
  191. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/patient_portal/form_result.py +0 -0
  192. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/patient_portal_menu_configuration.py +0 -0
  193. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/patient_profile_configuration.py +0 -0
  194. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/protocol_card/__init__.py +0 -0
  195. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/protocol_card/tests.py +0 -0
  196. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/questionnaire_result.py +0 -0
  197. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/show_button.py +0 -0
  198. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/simple_api.py +0 -0
  199. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/surescripts/__init__.py +0 -0
  200. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/surescripts/surescripts_messages.py +0 -0
  201. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/task/__init__.py +0 -0
  202. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/task/task.py +0 -0
  203. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/widgets/__init__.py +0 -0
  204. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/effects/widgets/portal_widget.py +0 -0
  205. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/events/__init__.py +0 -0
  206. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/events/base.py +0 -0
  207. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/handlers/__init__.py +0 -0
  208. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/handlers/action_button.py +0 -0
  209. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/handlers/application.py +0 -0
  210. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/handlers/cron_task.py +0 -0
  211. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/handlers/simple_api/exceptions.py +0 -0
  212. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/handlers/simple_api/tools.py +0 -0
  213. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/protocols/__init__.py +0 -0
  214. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/protocols/base.py +0 -0
  215. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/protocols/clinical_quality_measure.py +0 -0
  216. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/protocols/timeframe.py +0 -0
  217. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/questionnaires/__init__.py +0 -0
  218. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/questionnaires/tests/__init__.py +0 -0
  219. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/questionnaires/tests/test_utils.py +0 -0
  220. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/questionnaires/utils.py +0 -0
  221. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/templates/__init__.py +0 -0
  222. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/templates/tests/__init__.py +0 -0
  223. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/templates/tests/test_utils.py +0 -0
  224. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/templates/utils.py +0 -0
  225. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/tests/__init__.py +0 -0
  226. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/tests/handlers/__init__.py +0 -0
  227. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/utils/__init__.py +0 -0
  228. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/utils/http.py +0 -0
  229. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/utils/plugins.py +0 -0
  230. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/utils/stats.py +0 -0
  231. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/utils/tests.py +0 -0
  232. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/__init__.py +0 -0
  233. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/apps.py +0 -0
  234. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/__init__.py +0 -0
  235. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/allergy_intolerance.py +0 -0
  236. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/appointment.py +0 -0
  237. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/assessment.py +0 -0
  238. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/banner_alert.py +0 -0
  239. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/base.py +0 -0
  240. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/billing.py +0 -0
  241. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/care_team.py +0 -0
  242. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/command.py +0 -0
  243. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/common.py +0 -0
  244. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/condition.py +0 -0
  245. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/coverage.py +0 -0
  246. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/detected_issue.py +0 -0
  247. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/device.py +0 -0
  248. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/imaging.py +0 -0
  249. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/lab.py +0 -0
  250. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/medication.py +0 -0
  251. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/note.py +0 -0
  252. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/observation.py +0 -0
  253. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/organization.py +0 -0
  254. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/patient.py +0 -0
  255. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/practicelocation.py +0 -0
  256. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/protocol_override.py +0 -0
  257. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/questionnaire.py +0 -0
  258. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/reason_for_visit.py +0 -0
  259. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/staff.py +0 -0
  260. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/task.py +0 -0
  261. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/data/team.py +0 -0
  262. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/v1/models.py +0 -0
  263. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/__init__.py +0 -0
  264. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/custom.py +0 -0
  265. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/hcc2018.py +0 -0
  266. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/tests/test_value_sets.py +0 -0
  267. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/__init__.py +0 -0
  268. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/adverse_event.py +0 -0
  269. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/allergy.py +0 -0
  270. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/assessment.py +0 -0
  271. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/communication.py +0 -0
  272. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/condition.py +0 -0
  273. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/device.py +0 -0
  274. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/diagnostic_study.py +0 -0
  275. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/encounter.py +0 -0
  276. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/immunization.py +0 -0
  277. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/individual_characteristic.py +0 -0
  278. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/intervention.py +0 -0
  279. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/laboratory_test.py +0 -0
  280. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/medication.py +0 -0
  281. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/physical_exam.py +0 -0
  282. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/procedure.py +0 -0
  283. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/v2022/symptom.py +0 -0
  284. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/value_set/value_set.py +0 -0
  285. {canvas-0.30.0 → canvas-0.32.0}/canvas_sdk/views/__init__.py +0 -0
  286. {canvas-0.30.0 → canvas-0.32.0}/logger/__init__.py +0 -0
  287. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/__init__.py +0 -0
  288. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/authentication.py +0 -0
  289. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/aws_headers.py +0 -0
  290. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/exceptions.py +0 -0
  291. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/sandbox.py +0 -0
  292. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/__init__.py +0 -0
  293. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/example_plugin/CANVAS_MANIFEST.json +0 -0
  294. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/example_plugin/README.md +0 -0
  295. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/example_plugin/__init__.py +0 -0
  296. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/example_plugin/protocols/__init__.py +0 -0
  297. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/example_plugin/protocols/my_protocol.py +0 -0
  298. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/CANVAS_MANIFEST.json +0 -0
  299. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/README.md +0 -0
  300. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/protocols/__init__.py +0 -0
  301. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/protocols/my_protocol.py +0 -0
  302. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/templates/__init__.py +0 -0
  303. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/templates/base.py +0 -0
  304. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/utils/__init__.py +0 -0
  305. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/utils/base.py +0 -0
  306. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_load_questionnaire/CANVAS_MANIFEST.json +0 -0
  307. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_load_questionnaire/README.md +0 -0
  308. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_load_questionnaire/protocols/__init__.py +0 -0
  309. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_load_questionnaire/protocols/my_protocol.py +0 -0
  310. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_load_questionnaire/questionnaires/example_questionnaire.yml +0 -0
  311. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/CANVAS_MANIFEST.json +0 -0
  312. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/README.md +0 -0
  313. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/other_module/__init__.py +0 -0
  314. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/other_module/base.py +0 -0
  315. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/protocols/__init__.py +0 -0
  316. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/protocols/my_protocol.py +0 -0
  317. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/CANVAS_MANIFEST.json +0 -0
  318. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/README.md +0 -0
  319. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/other_module/__init__.py +0 -0
  320. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/other_module/base.py +0 -0
  321. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/protocols/__init__.py +0 -0
  322. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/protocols/my_protocol.py +0 -0
  323. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/CANVAS_MANIFEST.json +0 -0
  324. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/README.md +0 -0
  325. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/other_module/__init__.py +0 -0
  326. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/other_module/base.py +0 -0
  327. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/protocols/__init__.py +0 -0
  328. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/protocols/my_protocol.py +0 -0
  329. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/CANVAS_MANIFEST.json +0 -0
  330. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/README.md +0 -0
  331. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/other_module/__init__.py +0 -0
  332. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/other_module/base.py +0 -0
  333. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/protocols/__init__.py +0 -0
  334. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/protocols/my_protocol.py +0 -0
  335. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/CANVAS_MANIFEST.json +0 -0
  336. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/README.md +0 -0
  337. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/other_module/__init__.py +0 -0
  338. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/other_module/base.py +0 -0
  339. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/protocols/__init__.py +0 -0
  340. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/protocols/my_protocol.py +0 -0
  341. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/CANVAS_MANIFEST.json +0 -0
  342. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/README.md +0 -0
  343. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/other_module/__init__.py +0 -0
  344. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/other_module/base.py +0 -0
  345. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/protocols/__init__.py +0 -0
  346. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/protocols/my_protocol.py +0 -0
  347. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_render_template/CANVAS_MANIFEST.json +0 -0
  348. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_render_template/README.md +0 -0
  349. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_render_template/protocols/__init__.py +0 -0
  350. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_render_template/protocols/my_protocol.py +0 -0
  351. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_render_template/templates/template.html +0 -0
  352. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_simple_api/CANVAS_MANIFEST.json +0 -0
  353. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_simple_api/README.md +0 -0
  354. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_simple_api/__init__.py +0 -0
  355. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_simple_api/protocols/__init__.py +0 -0
  356. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/fixtures/plugins/test_simple_api/protocols/my_protocol.py +0 -0
  357. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/test_application.py +0 -0
  358. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/test_plugin_installer.py +0 -0
  359. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/test_plugin_runner.py +0 -0
  360. {canvas-0.30.0 → canvas-0.32.0}/plugin_runner/tests/test_sandbox.py +0 -0
  361. {canvas-0.30.0 → canvas-0.32.0}/protobufs/canvas_generated/messages/effects.proto +0 -0
  362. {canvas-0.30.0 → canvas-0.32.0}/protobufs/canvas_generated/messages/plugins.proto +0 -0
  363. {canvas-0.30.0 → canvas-0.32.0}/protobufs/canvas_generated/services/plugin_runner.proto +0 -0
  364. {canvas-0.30.0 → canvas-0.32.0}/pubsub/__init__.py +0 -0
  365. {canvas-0.30.0 → canvas-0.32.0}/pubsub/pubsub.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: canvas
3
- Version: 0.30.0
3
+ Version: 0.32.0
4
4
  Summary: SDK to customize event-driven actions in your Canvas instance
5
5
  Author-email: Canvas Team <engineering@canvasmedical.com>
6
6
  License-Expression: MIT
@@ -25,6 +25,7 @@ Requires-Dist: rapidfuzz<4,>=3.10.1
25
25
  Requires-Dist: redis<6,>=5.0.4
26
26
  Requires-Dist: requests
27
27
  Requires-Dist: restrictedpython>=8.0
28
+ Requires-Dist: sentry-sdk>=2.25.1
28
29
  Requires-Dist: statsd<5,>=4.0.1
29
30
  Requires-Dist: typer
30
31
  Requires-Dist: typing-extensions<4.13,>=4.8
@@ -1,4 +1,4 @@
1
- from plugin_runner.plugin_runner import run_server
1
+ from plugin_runner.plugin_runner import main as run_server
2
2
 
3
3
 
4
4
  def run_plugin(plugin_directory: str) -> None:
@@ -0,0 +1,31 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: canvas_generated/messages/events.proto
4
+ # Protobuf Python Version: 4.25.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from canvas_generated.messages import effects_pb2 as canvas__generated_dot_messages_dot_effects__pb2
16
+
17
+
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&canvas_generated/messages/events.proto\x12\x06\x63\x61nvas\x1a\'canvas_generated/messages/effects.proto\"^\n\x05\x45vent\x12\x1f\n\x04type\x18\x01 \x01(\x0e\x32\x11.canvas.EventType\x12\x0e\n\x06target\x18\x02 \x01(\t\x12\x0f\n\x07\x63ontext\x18\x03 \x01(\t\x12\x13\n\x0btarget_type\x18\x04 \x01(\t\"A\n\rEventResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x1f\n\x07\x65\x66\x66\x65\x63ts\x18\x02 \x03(\x0b\x32\x0e.canvas.Effect*\xee\x8b\x02\n\tEventType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x1f\n\x1b\x41LLERGY_INTOLERANCE_CREATED\x10\x01\x12\x1f\n\x1b\x41LLERGY_INTOLERANCE_UPDATED\x10\x02\x12\x18\n\x14\x41PPOINTMENT_CANCELED\x10\x04\x12\x1a\n\x16\x41PPOINTMENT_CHECKED_IN\x10\x05\x12\x17\n\x13\x41PPOINTMENT_CREATED\x10\x06\x12\x19\n\x15\x41PPOINTMENT_NO_SHOWED\x10\x07\x12\x1b\n\x17\x41PPOINTMENT_RESCHEDULED\x10\x08\x12\x18\n\x14\x41PPOINTMENT_RESTORED\x10\t\x12\x17\n\x13\x41PPOINTMENT_UPDATED\x10\n\x12\x1d\n\x19\x42ILLING_LINE_ITEM_CREATED\x10\x0b\x12\x1d\n\x19\x42ILLING_LINE_ITEM_UPDATED\x10\x0c\x12\x16\n\x12\x43ONDITION_ASSESSED\x10\r\x12\x15\n\x11\x43ONDITION_CREATED\x10\x0e\x12\x16\n\x12\x43ONDITION_RESOLVED\x10\x0f\x12\x15\n\x11\x43ONDITION_UPDATED\x10\x10\x12\x13\n\x0f\x43ONSENT_CREATED\x10\x11\x12\x13\n\x0f\x43ONSENT_DELETED\x10\x12\x12\x13\n\x0f\x43ONSENT_UPDATED\x10\x13\x12\x14\n\x10\x43OVERAGE_CREATED\x10\x14\x12\x14\n\x10\x43OVERAGE_UPDATED\x10\x15\x12\x15\n\x11\x45NCOUNTER_CREATED\x10\x16\x12\x15\n\x11\x45NCOUNTER_UPDATED\x10\x17\x12\x1a\n\x16IMAGING_REPORT_CREATED\x10\x1a\x12\x1a\n\x16IMAGING_REPORT_UPDATED\x10\x1b\x12\x18\n\x14IMMUNIZATION_CREATED\x10\x1c\x12\"\n\x1eIMMUNIZATION_STATEMENT_CREATED\x10\x1d\x12\"\n\x1eIMMUNIZATION_STATEMENT_UPDATED\x10\x1e\x12\x18\n\x14IMMUNIZATION_UPDATED\x10\x1f\x12\x17\n\x13INSTRUCTION_CREATED\x10 \x12\x17\n\x13INSTRUCTION_UPDATED\x10!\x12\x15\n\x11INTERVIEW_CREATED\x10\"\x12\x15\n\x11INTERVIEW_UPDATED\x10#\x12\x15\n\x11LAB_ORDER_CREATED\x10$\x12\x15\n\x11LAB_ORDER_UPDATED\x10%\x12\x16\n\x12LAB_REPORT_CREATED\x10&\x12\x16\n\x12LAB_REPORT_UPDATED\x10\'\x12 \n\x1cMEDICATION_LIST_ITEM_CREATED\x10(\x12 \n\x1cMEDICATION_LIST_ITEM_UPDATED\x10)\x12\x13\n\x0fMESSAGE_CREATED\x10*\x12\x13\n\x0fPATIENT_CREATED\x10+\x12\x13\n\x0fPATIENT_UPDATED\x10,\x12\x18\n\x14PRESCRIPTION_CREATED\x10-\x12\x18\n\x14PRESCRIPTION_UPDATED\x10.\x12\x1b\n\x17REFERRAL_REPORT_CREATED\x10/\x12\x1b\n\x17REFERRAL_REPORT_UPDATED\x10\x30\x12\x18\n\x14TASK_COMMENT_CREATED\x10\x33\x12\x10\n\x0cTASK_CREATED\x10\x36\x12\x18\n\x14TASK_LABELS_ADJUSTED\x10\x37\x12\x10\n\x0cTASK_UPDATED\x10\x39\x12\x16\n\x12VITAL_SIGN_CREATED\x10:\x12\x16\n\x12VITAL_SIGN_UPDATED\x10;\x12\x08\n\x04\x43RON\x10<\x12 \n\x1c\x43\x41RE_TEAM_MEMBERSHIP_CREATED\x10=\x12 \n\x1c\x43\x41RE_TEAM_MEMBERSHIP_UPDATED\x10>\x12 \n\x1c\x43\x41RE_TEAM_MEMBERSHIP_DELETED\x10?\x12#\n\x1fNOTE_STATE_CHANGE_EVENT_CREATED\x10@\x12#\n\x1fNOTE_STATE_CHANGE_EVENT_UPDATED\x10\x41\x12\x1b\n\x17PATIENT_ADDRESS_CREATED\x10\x42\x12\x1b\n\x17PATIENT_ADDRESS_UPDATED\x10\x43\x12\x1b\n\x17PATIENT_ADDRESS_DELETED\x10\x44\x12\"\n\x1ePATIENT_CONTACT_PERSON_CREATED\x10\x45\x12\"\n\x1ePATIENT_CONTACT_PERSON_UPDATED\x10\x46\x12\"\n\x1ePATIENT_CONTACT_PERSON_DELETED\x10G\x12!\n\x1dPATIENT_CONTACT_POINT_CREATED\x10H\x12!\n\x1dPATIENT_CONTACT_POINT_UPDATED\x10I\x12!\n\x1dPATIENT_CONTACT_POINT_DELETED\x10J\x12\x1d\n\x19PROTOCOL_OVERRIDE_CREATED\x10K\x12\x1d\n\x19PROTOCOL_OVERRIDE_UPDATED\x10L\x12\x1d\n\x19PROTOCOL_OVERRIDE_DELETED\x10M\x12\x18\n\x14TASK_COMMENT_UPDATED\x10N\x12\x18\n\x14TASK_COMMENT_DELETED\x10O\x12\x12\n\x0e\x44\x45VICE_CREATED\x10P\x12\x12\n\x0e\x44\x45VICE_UPDATED\x10Q\x12\x17\n\x13OBSERVATION_CREATED\x10R\x12\x17\n\x13OBSERVATION_UPDATED\x10S\x12\x1a\n\x16\x44\x45TECTED_ISSUE_CREATED\x10T\x12\x1a\n\x16\x44\x45TECTED_ISSUE_UPDATED\x10U\x12\x0f\n\x0bTASK_CLOSED\x10V\x12\x12\n\x0eTASK_COMPLETED\x10W\x12#\n\x1f\x44\x45TECTED_ISSUE_EVIDENCE_CREATED\x10X\x12#\n\x1f\x44\x45TECTED_ISSUE_EVIDENCE_UPDATED\x10Y\x12\x19\n\x15PRE_COMMAND_ORIGINATE\x10\x64\x12\x1a\n\x16POST_COMMAND_ORIGINATE\x10\x65\x12\x16\n\x12PRE_COMMAND_UPDATE\x10\x66\x12\x17\n\x13POST_COMMAND_UPDATE\x10g\x12\x16\n\x12PRE_COMMAND_COMMIT\x10h\x12\x17\n\x13POST_COMMAND_COMMIT\x10i\x12\x16\n\x12PRE_COMMAND_DELETE\x10j\x12\x17\n\x13POST_COMMAND_DELETE\x10k\x12\x1e\n\x1aPRE_COMMAND_ENTER_IN_ERROR\x10l\x12\x1f\n\x1bPOST_COMMAND_ENTER_IN_ERROR\x10m\x12\x1e\n\x1aPRE_COMMAND_EXECUTE_ACTION\x10n\x12\x1f\n\x1bPOST_COMMAND_EXECUTE_ACTION\x10o\x12#\n\x1fPOST_COMMAND_INSERTED_INTO_NOTE\x10p\x12\'\n\"ASSESS_COMMAND__CONDITION_SELECTED\x10\xc8\x01\x12\x31\n,MEDICATION_STATEMENT__MEDICATION__PRE_SEARCH\x10\xc9\x01\x12\x32\n-MEDICATION_STATEMENT__MEDICATION__POST_SEARCH\x10\xca\x01\x12/\n*MEDICATION_STATEMENT__MEDICATION__SELECTED\x10\xcb\x01\x12/\n*ADJUST_PRESCRIPTION_COMMAND__PRE_ORIGINATE\x10\xd0\x0f\x12\x30\n+ADJUST_PRESCRIPTION_COMMAND__POST_ORIGINATE\x10\xd1\x0f\x12,\n\'ADJUST_PRESCRIPTION_COMMAND__PRE_UPDATE\x10\xd2\x0f\x12-\n(ADJUST_PRESCRIPTION_COMMAND__POST_UPDATE\x10\xd3\x0f\x12,\n\'ADJUST_PRESCRIPTION_COMMAND__PRE_COMMIT\x10\xd4\x0f\x12-\n(ADJUST_PRESCRIPTION_COMMAND__POST_COMMIT\x10\xd5\x0f\x12,\n\'ADJUST_PRESCRIPTION_COMMAND__PRE_DELETE\x10\xd6\x0f\x12-\n(ADJUST_PRESCRIPTION_COMMAND__POST_DELETE\x10\xd7\x0f\x12\x34\n/ADJUST_PRESCRIPTION_COMMAND__PRE_ENTER_IN_ERROR\x10\xd8\x0f\x12\x35\n0ADJUST_PRESCRIPTION_COMMAND__POST_ENTER_IN_ERROR\x10\xd9\x0f\x12\x34\n/ADJUST_PRESCRIPTION_COMMAND__PRE_EXECUTE_ACTION\x10\xda\x0f\x12\x35\n0ADJUST_PRESCRIPTION_COMMAND__POST_EXECUTE_ACTION\x10\xdb\x0f\x12\x39\n4ADJUST_PRESCRIPTION_COMMAND__POST_INSERTED_INTO_NOTE\x10\xe4\x0f\x12\x30\n+ADJUST_PRESCRIPTION__PRESCRIBE__POST_SEARCH\x10\xdc\x0f\x12/\n*ADJUST_PRESCRIPTION__PRESCRIBE__PRE_SEARCH\x10\xdd\x0f\x12\x31\n,ADJUST_PRESCRIPTION__INDICATIONS__PRE_SEARCH\x10\xde\x0f\x12\x32\n-ADJUST_PRESCRIPTION__INDICATIONS__POST_SEARCH\x10\xdf\x0f\x12.\n)ADJUST_PRESCRIPTION__PHARMACY__PRE_SEARCH\x10\xe0\x0f\x12/\n*ADJUST_PRESCRIPTION__PHARMACY__POST_SEARCH\x10\xe1\x0f\x12:\n5ADJUST_PRESCRIPTION__CHANGE_MEDICATION_TO__PRE_SEARCH\x10\xe2\x0f\x12;\n6ADJUST_PRESCRIPTION__CHANGE_MEDICATION_TO__POST_SEARCH\x10\xe3\x0f\x12#\n\x1e\x41LLERGY_COMMAND__PRE_ORIGINATE\x10\xa0\x1f\x12$\n\x1f\x41LLERGY_COMMAND__POST_ORIGINATE\x10\xa1\x1f\x12 \n\x1b\x41LLERGY_COMMAND__PRE_UPDATE\x10\xa2\x1f\x12!\n\x1c\x41LLERGY_COMMAND__POST_UPDATE\x10\xa3\x1f\x12 \n\x1b\x41LLERGY_COMMAND__PRE_COMMIT\x10\xa4\x1f\x12!\n\x1c\x41LLERGY_COMMAND__POST_COMMIT\x10\xa5\x1f\x12 \n\x1b\x41LLERGY_COMMAND__PRE_DELETE\x10\xa6\x1f\x12!\n\x1c\x41LLERGY_COMMAND__POST_DELETE\x10\xa7\x1f\x12(\n#ALLERGY_COMMAND__PRE_ENTER_IN_ERROR\x10\xa8\x1f\x12)\n$ALLERGY_COMMAND__POST_ENTER_IN_ERROR\x10\xa9\x1f\x12(\n#ALLERGY_COMMAND__PRE_EXECUTE_ACTION\x10\xaa\x1f\x12)\n$ALLERGY_COMMAND__POST_EXECUTE_ACTION\x10\xab\x1f\x12-\n(ALLERGY_COMMAND__POST_INSERTED_INTO_NOTE\x10\xae\x1f\x12!\n\x1c\x41LLERGY__ALLERGY__PRE_SEARCH\x10\xac\x1f\x12\"\n\x1d\x41LLERGY__ALLERGY__POST_SEARCH\x10\xad\x1f\x12\"\n\x1d\x41SSESS_COMMAND__PRE_ORIGINATE\x10\xd8\x36\x12#\n\x1e\x41SSESS_COMMAND__POST_ORIGINATE\x10\xd9\x36\x12\x1f\n\x1a\x41SSESS_COMMAND__PRE_UPDATE\x10\xda\x36\x12 \n\x1b\x41SSESS_COMMAND__POST_UPDATE\x10\xdb\x36\x12\x1f\n\x1a\x41SSESS_COMMAND__PRE_COMMIT\x10\xdc\x36\x12 \n\x1b\x41SSESS_COMMAND__POST_COMMIT\x10\xdd\x36\x12\x1f\n\x1a\x41SSESS_COMMAND__PRE_DELETE\x10\xde\x36\x12 \n\x1b\x41SSESS_COMMAND__POST_DELETE\x10\xdf\x36\x12\'\n\"ASSESS_COMMAND__PRE_ENTER_IN_ERROR\x10\xe0\x36\x12(\n#ASSESS_COMMAND__POST_ENTER_IN_ERROR\x10\xe1\x36\x12\'\n\"ASSESS_COMMAND__PRE_EXECUTE_ACTION\x10\xe2\x36\x12(\n#ASSESS_COMMAND__POST_EXECUTE_ACTION\x10\xe3\x36\x12,\n\'ASSESS_COMMAND__POST_INSERTED_INTO_NOTE\x10\xe6\x36\x12#\n\x1e\x41SSESS__CONDITION__POST_SEARCH\x10\xe4\x36\x12\"\n\x1d\x41SSESS__CONDITION__PRE_SEARCH\x10\xe5\x36\x12/\n*CANCEL_PRESCRIPTION_COMMAND__PRE_ORIGINATE\x10\xc0>\x12\x30\n+CANCEL_PRESCRIPTION_COMMAND__POST_ORIGINATE\x10\xc1>\x12,\n\'CANCEL_PRESCRIPTION_COMMAND__PRE_UPDATE\x10\xc2>\x12-\n(CANCEL_PRESCRIPTION_COMMAND__POST_UPDATE\x10\xc3>\x12,\n\'CANCEL_PRESCRIPTION_COMMAND__PRE_COMMIT\x10\xc4>\x12-\n(CANCEL_PRESCRIPTION_COMMAND__POST_COMMIT\x10\xc5>\x12,\n\'CANCEL_PRESCRIPTION_COMMAND__PRE_DELETE\x10\xc6>\x12-\n(CANCEL_PRESCRIPTION_COMMAND__POST_DELETE\x10\xc7>\x12\x34\n/CANCEL_PRESCRIPTION_COMMAND__PRE_ENTER_IN_ERROR\x10\xc8>\x12\x35\n0CANCEL_PRESCRIPTION_COMMAND__POST_ENTER_IN_ERROR\x10\xc9>\x12\x34\n/CANCEL_PRESCRIPTION_COMMAND__PRE_EXECUTE_ACTION\x10\xca>\x12\x35\n0CANCEL_PRESCRIPTION_COMMAND__POST_EXECUTE_ACTION\x10\xcb>\x12;\n6CANCEL_PRESCRIPTION__SELECTED_PRESCRIPTION__PRE_SEARCH\x10\xcc>\x12<\n7CANCEL_PRESCRIPTION__SELECTED_PRESCRIPTION__POST_SEARCH\x10\xcd>\x12&\n CLIPBOARD_COMMAND__PRE_ORIGINATE\x10\x88\x9e\x03\x12\'\n!CLIPBOARD_COMMAND__POST_ORIGINATE\x10\x89\x9e\x03\x12#\n\x1d\x43LIPBOARD_COMMAND__PRE_UPDATE\x10\x8a\x9e\x03\x12$\n\x1e\x43LIPBOARD_COMMAND__POST_UPDATE\x10\x8b\x9e\x03\x12#\n\x1d\x43LIPBOARD_COMMAND__PRE_COMMIT\x10\x8c\x9e\x03\x12$\n\x1e\x43LIPBOARD_COMMAND__POST_COMMIT\x10\x8d\x9e\x03\x12#\n\x1d\x43LIPBOARD_COMMAND__PRE_DELETE\x10\x8e\x9e\x03\x12$\n\x1e\x43LIPBOARD_COMMAND__POST_DELETE\x10\x8f\x9e\x03\x12+\n%CLIPBOARD_COMMAND__PRE_ENTER_IN_ERROR\x10\x90\x9e\x03\x12,\n&CLIPBOARD_COMMAND__POST_ENTER_IN_ERROR\x10\xf9\xa5\x03\x12+\n%CLIPBOARD_COMMAND__PRE_EXECUTE_ACTION\x10\xe2\xad\x03\x12,\n&CLIPBOARD_COMMAND__POST_EXECUTE_ACTION\x10\xcb\xb5\x03\x12\x30\n*CLIPBOARD_COMMAND__POST_INSERTED_INTO_NOTE\x10\xcc\xb5\x03\x12&\n!CLOSE_GOAL_COMMAND__PRE_ORIGINATE\x10\x90N\x12\'\n\"CLOSE_GOAL_COMMAND__POST_ORIGINATE\x10\x91N\x12#\n\x1e\x43LOSE_GOAL_COMMAND__PRE_UPDATE\x10\x92N\x12$\n\x1f\x43LOSE_GOAL_COMMAND__POST_UPDATE\x10\x93N\x12#\n\x1e\x43LOSE_GOAL_COMMAND__PRE_COMMIT\x10\x94N\x12$\n\x1f\x43LOSE_GOAL_COMMAND__POST_COMMIT\x10\x95N\x12#\n\x1e\x43LOSE_GOAL_COMMAND__PRE_DELETE\x10\x96N\x12$\n\x1f\x43LOSE_GOAL_COMMAND__POST_DELETE\x10\x97N\x12+\n&CLOSE_GOAL_COMMAND__PRE_ENTER_IN_ERROR\x10\x98N\x12,\n\'CLOSE_GOAL_COMMAND__POST_ENTER_IN_ERROR\x10\x99N\x12+\n&CLOSE_GOAL_COMMAND__PRE_EXECUTE_ACTION\x10\x9aN\x12,\n\'CLOSE_GOAL_COMMAND__POST_EXECUTE_ACTION\x10\x9bN\x12\x30\n+CLOSE_GOAL_COMMAND__POST_INSERTED_INTO_NOTE\x10\x9eN\x12$\n\x1f\x43LOSE_GOAL__GOAL_ID__PRE_SEARCH\x10\x9cN\x12%\n CLOSE_GOAL__GOAL_ID__POST_SEARCH\x10\x9dN\x12$\n\x1f\x44IAGNOSE_COMMAND__PRE_ORIGINATE\x10\xb0m\x12%\n DIAGNOSE_COMMAND__POST_ORIGINATE\x10\xb1m\x12!\n\x1c\x44IAGNOSE_COMMAND__PRE_UPDATE\x10\xb2m\x12\"\n\x1d\x44IAGNOSE_COMMAND__POST_UPDATE\x10\xb3m\x12!\n\x1c\x44IAGNOSE_COMMAND__PRE_COMMIT\x10\xb4m\x12\"\n\x1d\x44IAGNOSE_COMMAND__POST_COMMIT\x10\xb5m\x12!\n\x1c\x44IAGNOSE_COMMAND__PRE_DELETE\x10\xb6m\x12\"\n\x1d\x44IAGNOSE_COMMAND__POST_DELETE\x10\xb7m\x12)\n$DIAGNOSE_COMMAND__PRE_ENTER_IN_ERROR\x10\xb8m\x12*\n%DIAGNOSE_COMMAND__POST_ENTER_IN_ERROR\x10\xb9m\x12)\n$DIAGNOSE_COMMAND__PRE_EXECUTE_ACTION\x10\xbam\x12*\n%DIAGNOSE_COMMAND__POST_EXECUTE_ACTION\x10\xbbm\x12.\n)DIAGNOSE_COMMAND__POST_INSERTED_INTO_NOTE\x10\xbem\x12$\n\x1f\x44IAGNOSE__DIAGNOSE__POST_SEARCH\x10\xbcm\x12#\n\x1e\x44IAGNOSE__DIAGNOSE__PRE_SEARCH\x10\xbdm\x12\x30\n+EDUCATIONAL_MATERIAL_COMMAND__PRE_ORIGINATE\x10\x98u\x12\x31\n,EDUCATIONAL_MATERIAL_COMMAND__POST_ORIGINATE\x10\x99u\x12-\n(EDUCATIONAL_MATERIAL_COMMAND__PRE_UPDATE\x10\x9au\x12.\n)EDUCATIONAL_MATERIAL_COMMAND__POST_UPDATE\x10\x9bu\x12-\n(EDUCATIONAL_MATERIAL_COMMAND__PRE_COMMIT\x10\x9cu\x12.\n)EDUCATIONAL_MATERIAL_COMMAND__POST_COMMIT\x10\x9du\x12-\n(EDUCATIONAL_MATERIAL_COMMAND__PRE_DELETE\x10\x9eu\x12.\n)EDUCATIONAL_MATERIAL_COMMAND__POST_DELETE\x10\x9fu\x12\x35\n0EDUCATIONAL_MATERIAL_COMMAND__PRE_ENTER_IN_ERROR\x10\xa0u\x12\x36\n1EDUCATIONAL_MATERIAL_COMMAND__POST_ENTER_IN_ERROR\x10\xa1u\x12\x35\n0EDUCATIONAL_MATERIAL_COMMAND__PRE_EXECUTE_ACTION\x10\xa2u\x12\x36\n1EDUCATIONAL_MATERIAL_COMMAND__POST_EXECUTE_ACTION\x10\xa3u\x12:\n5EDUCATIONAL_MATERIAL_COMMAND__POST_INSERTED_INTO_NOTE\x10\xa8u\x12,\n\'EDUCATIONAL_MATERIAL__TITLE__PRE_SEARCH\x10\xa4u\x12-\n(EDUCATIONAL_MATERIAL__TITLE__POST_SEARCH\x10\xa5u\x12/\n*EDUCATIONAL_MATERIAL__LANGUAGE__PRE_SEARCH\x10\xa6u\x12\x30\n+EDUCATIONAL_MATERIAL__LANGUAGE__POST_SEARCH\x10\xa7u\x12*\n%FAMILY_HISTORY_COMMAND__PRE_ORIGINATE\x10\x80}\x12+\n&FAMILY_HISTORY_COMMAND__POST_ORIGINATE\x10\x81}\x12\'\n\"FAMILY_HISTORY_COMMAND__PRE_UPDATE\x10\x82}\x12(\n#FAMILY_HISTORY_COMMAND__POST_UPDATE\x10\x83}\x12\'\n\"FAMILY_HISTORY_COMMAND__PRE_COMMIT\x10\x84}\x12(\n#FAMILY_HISTORY_COMMAND__POST_COMMIT\x10\x85}\x12\'\n\"FAMILY_HISTORY_COMMAND__PRE_DELETE\x10\x86}\x12(\n#FAMILY_HISTORY_COMMAND__POST_DELETE\x10\x87}\x12/\n*FAMILY_HISTORY_COMMAND__PRE_ENTER_IN_ERROR\x10\x88}\x12\x30\n+FAMILY_HISTORY_COMMAND__POST_ENTER_IN_ERROR\x10\x89}\x12/\n*FAMILY_HISTORY_COMMAND__PRE_EXECUTE_ACTION\x10\x8a}\x12\x30\n+FAMILY_HISTORY_COMMAND__POST_EXECUTE_ACTION\x10\x8b}\x12\x34\n/FAMILY_HISTORY_COMMAND__POST_INSERTED_INTO_NOTE\x10\x90}\x12/\n*FAMILY_HISTORY__FAMILY_HISTORY__PRE_SEARCH\x10\x8c}\x12\x30\n+FAMILY_HISTORY__FAMILY_HISTORY__POST_SEARCH\x10\x8d}\x12)\n$FAMILY_HISTORY__RELATIVE__PRE_SEARCH\x10\x8e}\x12*\n%FAMILY_HISTORY__RELATIVE__POST_SEARCH\x10\x8f}\x12&\n FOLLOW_UP_COMMAND__PRE_ORIGINATE\x10\xe8\x84\x01\x12\'\n!FOLLOW_UP_COMMAND__POST_ORIGINATE\x10\xe9\x84\x01\x12#\n\x1d\x46OLLOW_UP_COMMAND__PRE_UPDATE\x10\xea\x84\x01\x12$\n\x1e\x46OLLOW_UP_COMMAND__POST_UPDATE\x10\xeb\x84\x01\x12#\n\x1d\x46OLLOW_UP_COMMAND__PRE_COMMIT\x10\xec\x84\x01\x12$\n\x1e\x46OLLOW_UP_COMMAND__POST_COMMIT\x10\xed\x84\x01\x12#\n\x1d\x46OLLOW_UP_COMMAND__PRE_DELETE\x10\xee\x84\x01\x12$\n\x1e\x46OLLOW_UP_COMMAND__POST_DELETE\x10\xef\x84\x01\x12+\n%FOLLOW_UP_COMMAND__PRE_ENTER_IN_ERROR\x10\xf0\x84\x01\x12,\n&FOLLOW_UP_COMMAND__POST_ENTER_IN_ERROR\x10\xf1\x84\x01\x12+\n%FOLLOW_UP_COMMAND__PRE_EXECUTE_ACTION\x10\xf2\x84\x01\x12,\n&FOLLOW_UP_COMMAND__POST_EXECUTE_ACTION\x10\xf3\x84\x01\x12\x30\n*FOLLOW_UP_COMMAND__POST_INSERTED_INTO_NOTE\x10\xf8\x84\x01\x12#\n\x1d\x46OLLOW_UP__CODING__PRE_SEARCH\x10\xf4\x84\x01\x12$\n\x1e\x46OLLOW_UP__CODING__POST_SEARCH\x10\xf5\x84\x01\x12&\n FOLLOW_UP__NOTE_TYPE__PRE_SEARCH\x10\xf6\x84\x01\x12\'\n!FOLLOW_UP__NOTE_TYPE__POST_SEARCH\x10\xf7\x84\x01\x12!\n\x1bGOAL_COMMAND__PRE_ORIGINATE\x10\xd0\x8c\x01\x12\"\n\x1cGOAL_COMMAND__POST_ORIGINATE\x10\xd1\x8c\x01\x12\x1e\n\x18GOAL_COMMAND__PRE_UPDATE\x10\xd2\x8c\x01\x12\x1f\n\x19GOAL_COMMAND__POST_UPDATE\x10\xd3\x8c\x01\x12\x1e\n\x18GOAL_COMMAND__PRE_COMMIT\x10\xd4\x8c\x01\x12\x1f\n\x19GOAL_COMMAND__POST_COMMIT\x10\xd5\x8c\x01\x12\x1e\n\x18GOAL_COMMAND__PRE_DELETE\x10\xd6\x8c\x01\x12\x1f\n\x19GOAL_COMMAND__POST_DELETE\x10\xd7\x8c\x01\x12&\n GOAL_COMMAND__PRE_ENTER_IN_ERROR\x10\xd8\x8c\x01\x12\'\n!GOAL_COMMAND__POST_ENTER_IN_ERROR\x10\xd9\x8c\x01\x12&\n GOAL_COMMAND__PRE_EXECUTE_ACTION\x10\xda\x8c\x01\x12\'\n!GOAL_COMMAND__POST_EXECUTE_ACTION\x10\xdb\x8c\x01\x12+\n%GOAL_COMMAND__POST_INSERTED_INTO_NOTE\x10\xde\x8c\x01\x12\x37\n1HISTORY_OF_PRESENT_ILLNESS_COMMAND__PRE_ORIGINATE\x10\xb8\x94\x01\x12\x38\n2HISTORY_OF_PRESENT_ILLNESS_COMMAND__POST_ORIGINATE\x10\xb9\x94\x01\x12\x34\n.HISTORY_OF_PRESENT_ILLNESS_COMMAND__PRE_UPDATE\x10\xba\x94\x01\x12\x35\n/HISTORY_OF_PRESENT_ILLNESS_COMMAND__POST_UPDATE\x10\xbb\x94\x01\x12\x34\n.HISTORY_OF_PRESENT_ILLNESS_COMMAND__PRE_COMMIT\x10\xbc\x94\x01\x12\x35\n/HISTORY_OF_PRESENT_ILLNESS_COMMAND__POST_COMMIT\x10\xbd\x94\x01\x12\x34\n.HISTORY_OF_PRESENT_ILLNESS_COMMAND__PRE_DELETE\x10\xbe\x94\x01\x12\x35\n/HISTORY_OF_PRESENT_ILLNESS_COMMAND__POST_DELETE\x10\xbf\x94\x01\x12<\n6HISTORY_OF_PRESENT_ILLNESS_COMMAND__PRE_ENTER_IN_ERROR\x10\xc0\x94\x01\x12=\n7HISTORY_OF_PRESENT_ILLNESS_COMMAND__POST_ENTER_IN_ERROR\x10\xc1\x94\x01\x12<\n6HISTORY_OF_PRESENT_ILLNESS_COMMAND__PRE_EXECUTE_ACTION\x10\xc2\x94\x01\x12=\n7HISTORY_OF_PRESENT_ILLNESS_COMMAND__POST_EXECUTE_ACTION\x10\xc3\x94\x01\x12\x41\n;HISTORY_OF_PRESENT_ILLNESS_COMMAND__POST_INSERTED_INTO_NOTE\x10\xc4\x94\x01\x12*\n$IMAGING_ORDER_COMMAND__PRE_ORIGINATE\x10\xa0\x9c\x01\x12+\n%IMAGING_ORDER_COMMAND__POST_ORIGINATE\x10\xa1\x9c\x01\x12\'\n!IMAGING_ORDER_COMMAND__PRE_UPDATE\x10\xa2\x9c\x01\x12(\n\"IMAGING_ORDER_COMMAND__POST_UPDATE\x10\xa3\x9c\x01\x12\'\n!IMAGING_ORDER_COMMAND__PRE_COMMIT\x10\xa4\x9c\x01\x12(\n\"IMAGING_ORDER_COMMAND__POST_COMMIT\x10\xa5\x9c\x01\x12\'\n!IMAGING_ORDER_COMMAND__PRE_DELETE\x10\xa6\x9c\x01\x12(\n\"IMAGING_ORDER_COMMAND__POST_DELETE\x10\xa7\x9c\x01\x12/\n)IMAGING_ORDER_COMMAND__PRE_ENTER_IN_ERROR\x10\xa8\x9c\x01\x12\x30\n*IMAGING_ORDER_COMMAND__POST_ENTER_IN_ERROR\x10\xa9\x9c\x01\x12/\n)IMAGING_ORDER_COMMAND__PRE_EXECUTE_ACTION\x10\xaa\x9c\x01\x12\x30\n*IMAGING_ORDER_COMMAND__POST_EXECUTE_ACTION\x10\xab\x9c\x01\x12\x34\n.IMAGING_ORDER_COMMAND__POST_INSERTED_INTO_NOTE\x10\xb4\x9c\x01\x12&\n IMAGING_ORDER__IMAGE__PRE_SEARCH\x10\xac\x9c\x01\x12\'\n!IMAGING_ORDER__IMAGE__POST_SEARCH\x10\xad\x9c\x01\x12,\n&IMAGING_ORDER__INDICATIONS__PRE_SEARCH\x10\xae\x9c\x01\x12-\n\'IMAGING_ORDER__INDICATIONS__POST_SEARCH\x10\xaf\x9c\x01\x12/\n)IMAGING_ORDER__IMAGING_CENTER__PRE_SEARCH\x10\xb0\x9c\x01\x12\x30\n*IMAGING_ORDER__IMAGING_CENTER__POST_SEARCH\x10\xb1\x9c\x01\x12\x32\n,IMAGING_ORDER__ORDERING_PROVIDER__PRE_SEARCH\x10\xb2\x9c\x01\x12\x33\n-IMAGING_ORDER__ORDERING_PROVIDER__POST_SEARCH\x10\xb3\x9c\x01\x12\x33\n-IMMUNIZATION_STATEMENT_COMMAND__PRE_ORIGINATE\x10\xf0\xab\x01\x12\x34\n.IMMUNIZATION_STATEMENT_COMMAND__POST_ORIGINATE\x10\xf1\xab\x01\x12\x30\n*IMMUNIZATION_STATEMENT_COMMAND__PRE_UPDATE\x10\xf2\xab\x01\x12\x31\n+IMMUNIZATION_STATEMENT_COMMAND__POST_UPDATE\x10\xf3\xab\x01\x12\x30\n*IMMUNIZATION_STATEMENT_COMMAND__PRE_COMMIT\x10\xf4\xab\x01\x12\x31\n+IMMUNIZATION_STATEMENT_COMMAND__POST_COMMIT\x10\xf5\xab\x01\x12\x30\n*IMMUNIZATION_STATEMENT_COMMAND__PRE_DELETE\x10\xf6\xab\x01\x12\x31\n+IMMUNIZATION_STATEMENT_COMMAND__POST_DELETE\x10\xf7\xab\x01\x12\x38\n2IMMUNIZATION_STATEMENT_COMMAND__PRE_ENTER_IN_ERROR\x10\xf8\xab\x01\x12\x39\n3IMMUNIZATION_STATEMENT_COMMAND__POST_ENTER_IN_ERROR\x10\xf9\xab\x01\x12\x38\n2IMMUNIZATION_STATEMENT_COMMAND__PRE_EXECUTE_ACTION\x10\xfa\xab\x01\x12\x39\n3IMMUNIZATION_STATEMENT_COMMAND__POST_EXECUTE_ACTION\x10\xfb\xab\x01\x12=\n7IMMUNIZATION_STATEMENT_COMMAND__POST_INSERTED_INTO_NOTE\x10\xfe\xab\x01\x12\x33\n-IMMUNIZATION_STATEMENT__STATEMENT__PRE_SEARCH\x10\xfc\xab\x01\x12\x34\n.IMMUNIZATION_STATEMENT__STATEMENT__POST_SEARCH\x10\xfd\xab\x01\x12%\n\x1fIMMUNIZE_COMMAND__PRE_ORIGINATE\x10\xd8\xb3\x01\x12&\n IMMUNIZE_COMMAND__POST_ORIGINATE\x10\xd9\xb3\x01\x12\"\n\x1cIMMUNIZE_COMMAND__PRE_UPDATE\x10\xda\xb3\x01\x12#\n\x1dIMMUNIZE_COMMAND__POST_UPDATE\x10\xdb\xb3\x01\x12\"\n\x1cIMMUNIZE_COMMAND__PRE_COMMIT\x10\xdc\xb3\x01\x12#\n\x1dIMMUNIZE_COMMAND__POST_COMMIT\x10\xdd\xb3\x01\x12\"\n\x1cIMMUNIZE_COMMAND__PRE_DELETE\x10\xde\xb3\x01\x12#\n\x1dIMMUNIZE_COMMAND__POST_DELETE\x10\xdf\xb3\x01\x12*\n$IMMUNIZE_COMMAND__PRE_ENTER_IN_ERROR\x10\xe0\xb3\x01\x12+\n%IMMUNIZE_COMMAND__POST_ENTER_IN_ERROR\x10\xe1\xb3\x01\x12*\n$IMMUNIZE_COMMAND__PRE_EXECUTE_ACTION\x10\xe2\xb3\x01\x12+\n%IMMUNIZE_COMMAND__POST_EXECUTE_ACTION\x10\xe3\xb3\x01\x12/\n)IMMUNIZE_COMMAND__POST_INSERTED_INTO_NOTE\x10\xea\xb3\x01\x12\"\n\x1cIMMUNIZE__CODING__PRE_SEARCH\x10\xe4\xb3\x01\x12#\n\x1dIMMUNIZE__CODING__POST_SEARCH\x10\xe5\xb3\x01\x12&\n IMMUNIZE__LOT_NUMBER__PRE_SEARCH\x10\xe6\xb3\x01\x12\'\n!IMMUNIZE__LOT_NUMBER__POST_SEARCH\x10\xe7\xb3\x01\x12$\n\x1eIMMUNIZE__GIVEN_BY__PRE_SEARCH\x10\xe8\xb3\x01\x12%\n\x1fIMMUNIZE__GIVEN_BY__POST_SEARCH\x10\xe9\xb3\x01\x12%\n\x1fINSTRUCT_COMMAND__PRE_ORIGINATE\x10\xc0\xbb\x01\x12&\n INSTRUCT_COMMAND__POST_ORIGINATE\x10\xc1\xbb\x01\x12\"\n\x1cINSTRUCT_COMMAND__PRE_UPDATE\x10\xc2\xbb\x01\x12#\n\x1dINSTRUCT_COMMAND__POST_UPDATE\x10\xc3\xbb\x01\x12\"\n\x1cINSTRUCT_COMMAND__PRE_COMMIT\x10\xc4\xbb\x01\x12#\n\x1dINSTRUCT_COMMAND__POST_COMMIT\x10\xc5\xbb\x01\x12\"\n\x1cINSTRUCT_COMMAND__PRE_DELETE\x10\xc6\xbb\x01\x12#\n\x1dINSTRUCT_COMMAND__POST_DELETE\x10\xc7\xbb\x01\x12*\n$INSTRUCT_COMMAND__PRE_ENTER_IN_ERROR\x10\xc8\xbb\x01\x12+\n%INSTRUCT_COMMAND__POST_ENTER_IN_ERROR\x10\xc9\xbb\x01\x12*\n$INSTRUCT_COMMAND__PRE_EXECUTE_ACTION\x10\xca\xbb\x01\x12+\n%INSTRUCT_COMMAND__POST_EXECUTE_ACTION\x10\xcb\xbb\x01\x12/\n)INSTRUCT_COMMAND__POST_INSERTED_INTO_NOTE\x10\xce\xbb\x01\x12$\n\x1eINSTRUCT__INSTRUCT__PRE_SEARCH\x10\xcc\xbb\x01\x12%\n\x1fINSTRUCT__INSTRUCT__POST_SEARCH\x10\xcd\xbb\x01\x12&\n LAB_ORDER_COMMAND__PRE_ORIGINATE\x10\xa8\xc3\x01\x12\'\n!LAB_ORDER_COMMAND__POST_ORIGINATE\x10\xa9\xc3\x01\x12#\n\x1dLAB_ORDER_COMMAND__PRE_UPDATE\x10\xaa\xc3\x01\x12$\n\x1eLAB_ORDER_COMMAND__POST_UPDATE\x10\xab\xc3\x01\x12#\n\x1dLAB_ORDER_COMMAND__PRE_COMMIT\x10\xac\xc3\x01\x12$\n\x1eLAB_ORDER_COMMAND__POST_COMMIT\x10\xad\xc3\x01\x12#\n\x1dLAB_ORDER_COMMAND__PRE_DELETE\x10\xae\xc3\x01\x12$\n\x1eLAB_ORDER_COMMAND__POST_DELETE\x10\xaf\xc3\x01\x12+\n%LAB_ORDER_COMMAND__PRE_ENTER_IN_ERROR\x10\xb0\xc3\x01\x12,\n&LAB_ORDER_COMMAND__POST_ENTER_IN_ERROR\x10\xb1\xc3\x01\x12+\n%LAB_ORDER_COMMAND__PRE_EXECUTE_ACTION\x10\xb2\xc3\x01\x12,\n&LAB_ORDER_COMMAND__POST_EXECUTE_ACTION\x10\xb3\xc3\x01\x12\x30\n*LAB_ORDER_COMMAND__POST_INSERTED_INTO_NOTE\x10\xbc\xc3\x01\x12(\n\"LAB_ORDER__LAB_PARTNER__PRE_SEARCH\x10\xb4\xc3\x01\x12)\n#LAB_ORDER__LAB_PARTNER__POST_SEARCH\x10\xb5\xc3\x01\x12\"\n\x1cLAB_ORDER__TESTS__PRE_SEARCH\x10\xb6\xc3\x01\x12#\n\x1dLAB_ORDER__TESTS__POST_SEARCH\x10\xb7\xc3\x01\x12.\n(LAB_ORDER__ORDERING_PROVIDER__PRE_SEARCH\x10\xb8\xc3\x01\x12/\n)LAB_ORDER__ORDERING_PROVIDER__POST_SEARCH\x10\xb9\xc3\x01\x12&\n LAB_ORDER__DIAGNOSIS__PRE_SEARCH\x10\xba\xc3\x01\x12\'\n!LAB_ORDER__DIAGNOSIS__POST_SEARCH\x10\xbb\xc3\x01\x12,\n&MEDICAL_HISTORY_COMMAND__PRE_ORIGINATE\x10\xf8\xd2\x01\x12-\n\'MEDICAL_HISTORY_COMMAND__POST_ORIGINATE\x10\xf9\xd2\x01\x12)\n#MEDICAL_HISTORY_COMMAND__PRE_UPDATE\x10\xfa\xd2\x01\x12*\n$MEDICAL_HISTORY_COMMAND__POST_UPDATE\x10\xfb\xd2\x01\x12)\n#MEDICAL_HISTORY_COMMAND__PRE_COMMIT\x10\xfc\xd2\x01\x12*\n$MEDICAL_HISTORY_COMMAND__POST_COMMIT\x10\xfd\xd2\x01\x12)\n#MEDICAL_HISTORY_COMMAND__PRE_DELETE\x10\xfe\xd2\x01\x12*\n$MEDICAL_HISTORY_COMMAND__POST_DELETE\x10\xff\xd2\x01\x12\x31\n+MEDICAL_HISTORY_COMMAND__PRE_ENTER_IN_ERROR\x10\x80\xd3\x01\x12\x32\n,MEDICAL_HISTORY_COMMAND__POST_ENTER_IN_ERROR\x10\x81\xd3\x01\x12\x31\n+MEDICAL_HISTORY_COMMAND__PRE_EXECUTE_ACTION\x10\x82\xd3\x01\x12\x32\n,MEDICAL_HISTORY_COMMAND__POST_EXECUTE_ACTION\x10\x83\xd3\x01\x12\x36\n0MEDICAL_HISTORY_COMMAND__POST_INSERTED_INTO_NOTE\x10\x8a\xd3\x01\x12\x37\n1MEDICAL_HISTORY__PAST_MEDICAL_HISTORY__PRE_SEARCH\x10\x84\xd3\x01\x12\x38\n2MEDICAL_HISTORY__PAST_MEDICAL_HISTORY__POST_SEARCH\x10\x85\xd3\x01\x12\x39\n3MEDICAL_HISTORY__APPROXIMATE_START_DATE__PRE_SEARCH\x10\x86\xd3\x01\x12:\n4MEDICAL_HISTORY__APPROXIMATE_START_DATE__POST_SEARCH\x10\x87\xd3\x01\x12\x37\n1MEDICAL_HISTORY__APPROXIMATE_END_DATE__PRE_SEARCH\x10\x88\xd3\x01\x12\x38\n2MEDICAL_HISTORY__APPROXIMATE_END_DATE__POST_SEARCH\x10\x89\xd3\x01\x12\x31\n+MEDICATION_STATEMENT_COMMAND__PRE_ORIGINATE\x10\xe0\xda\x01\x12\x32\n,MEDICATION_STATEMENT_COMMAND__POST_ORIGINATE\x10\xe1\xda\x01\x12.\n(MEDICATION_STATEMENT_COMMAND__PRE_UPDATE\x10\xe2\xda\x01\x12/\n)MEDICATION_STATEMENT_COMMAND__POST_UPDATE\x10\xe3\xda\x01\x12.\n(MEDICATION_STATEMENT_COMMAND__PRE_COMMIT\x10\xe4\xda\x01\x12/\n)MEDICATION_STATEMENT_COMMAND__POST_COMMIT\x10\xe5\xda\x01\x12.\n(MEDICATION_STATEMENT_COMMAND__PRE_DELETE\x10\xe6\xda\x01\x12/\n)MEDICATION_STATEMENT_COMMAND__POST_DELETE\x10\xe7\xda\x01\x12\x36\n0MEDICATION_STATEMENT_COMMAND__PRE_ENTER_IN_ERROR\x10\xe8\xda\x01\x12\x37\n1MEDICATION_STATEMENT_COMMAND__POST_ENTER_IN_ERROR\x10\xe9\xda\x01\x12\x36\n0MEDICATION_STATEMENT_COMMAND__PRE_EXECUTE_ACTION\x10\xea\xda\x01\x12\x37\n1MEDICATION_STATEMENT_COMMAND__POST_EXECUTE_ACTION\x10\xeb\xda\x01\x12;\n5MEDICATION_STATEMENT_COMMAND__POST_INSERTED_INTO_NOTE\x10\xec\xda\x01\x12$\n\x1ePERFORM_COMMAND__PRE_ORIGINATE\x10\xc8\xe2\x01\x12%\n\x1fPERFORM_COMMAND__POST_ORIGINATE\x10\xc9\xe2\x01\x12!\n\x1bPERFORM_COMMAND__PRE_UPDATE\x10\xca\xe2\x01\x12\"\n\x1cPERFORM_COMMAND__POST_UPDATE\x10\xcb\xe2\x01\x12!\n\x1bPERFORM_COMMAND__PRE_COMMIT\x10\xcc\xe2\x01\x12\"\n\x1cPERFORM_COMMAND__POST_COMMIT\x10\xcd\xe2\x01\x12!\n\x1bPERFORM_COMMAND__PRE_DELETE\x10\xce\xe2\x01\x12\"\n\x1cPERFORM_COMMAND__POST_DELETE\x10\xcf\xe2\x01\x12)\n#PERFORM_COMMAND__PRE_ENTER_IN_ERROR\x10\xd0\xe2\x01\x12*\n$PERFORM_COMMAND__POST_ENTER_IN_ERROR\x10\xd1\xe2\x01\x12)\n#PERFORM_COMMAND__PRE_EXECUTE_ACTION\x10\xd2\xe2\x01\x12*\n$PERFORM_COMMAND__POST_EXECUTE_ACTION\x10\xd3\xe2\x01\x12.\n(PERFORM_COMMAND__POST_INSERTED_INTO_NOTE\x10\xd6\xe2\x01\x12\"\n\x1cPERFORM__PERFORM__PRE_SEARCH\x10\xd4\xe2\x01\x12#\n\x1dPERFORM__PERFORM__POST_SEARCH\x10\xd5\xe2\x01\x12*\n$PHYSICAL_EXAM_COMMAND__PRE_ORIGINATE\x10\xb0\xea\x01\x12+\n%PHYSICAL_EXAM_COMMAND__POST_ORIGINATE\x10\xb1\xea\x01\x12\'\n!PHYSICAL_EXAM_COMMAND__PRE_UPDATE\x10\xb2\xea\x01\x12(\n\"PHYSICAL_EXAM_COMMAND__POST_UPDATE\x10\xb3\xea\x01\x12\'\n!PHYSICAL_EXAM_COMMAND__PRE_COMMIT\x10\xb4\xea\x01\x12(\n\"PHYSICAL_EXAM_COMMAND__POST_COMMIT\x10\xb5\xea\x01\x12\'\n!PHYSICAL_EXAM_COMMAND__PRE_DELETE\x10\xb6\xea\x01\x12(\n\"PHYSICAL_EXAM_COMMAND__POST_DELETE\x10\xb7\xea\x01\x12/\n)PHYSICAL_EXAM_COMMAND__PRE_ENTER_IN_ERROR\x10\xb8\xea\x01\x12\x30\n*PHYSICAL_EXAM_COMMAND__POST_ENTER_IN_ERROR\x10\xb9\xea\x01\x12/\n)PHYSICAL_EXAM_COMMAND__PRE_EXECUTE_ACTION\x10\xba\xea\x01\x12\x30\n*PHYSICAL_EXAM_COMMAND__POST_EXECUTE_ACTION\x10\xbb\xea\x01\x12\x34\n.PHYSICAL_EXAM_COMMAND__POST_INSERTED_INTO_NOTE\x10\xbe\xea\x01\x12.\n(PHYSICAL_EXAM__QUESTIONNAIRE__PRE_SEARCH\x10\xbc\xea\x01\x12/\n)PHYSICAL_EXAM__QUESTIONNAIRE__POST_SEARCH\x10\xbd\xea\x01\x12!\n\x1bPLAN_COMMAND__PRE_ORIGINATE\x10\x98\xf2\x01\x12\"\n\x1cPLAN_COMMAND__POST_ORIGINATE\x10\x99\xf2\x01\x12\x1e\n\x18PLAN_COMMAND__PRE_UPDATE\x10\x9a\xf2\x01\x12\x1f\n\x19PLAN_COMMAND__POST_UPDATE\x10\x9b\xf2\x01\x12\x1e\n\x18PLAN_COMMAND__PRE_COMMIT\x10\x9c\xf2\x01\x12\x1f\n\x19PLAN_COMMAND__POST_COMMIT\x10\x9d\xf2\x01\x12\x1e\n\x18PLAN_COMMAND__PRE_DELETE\x10\x9e\xf2\x01\x12\x1f\n\x19PLAN_COMMAND__POST_DELETE\x10\x9f\xf2\x01\x12&\n PLAN_COMMAND__PRE_ENTER_IN_ERROR\x10\xa0\xf2\x01\x12\'\n!PLAN_COMMAND__POST_ENTER_IN_ERROR\x10\xa1\xf2\x01\x12&\n PLAN_COMMAND__PRE_EXECUTE_ACTION\x10\xa2\xf2\x01\x12\'\n!PLAN_COMMAND__POST_EXECUTE_ACTION\x10\xa3\xf2\x01\x12+\n%PLAN_COMMAND__POST_INSERTED_INTO_NOTE\x10\xa4\xf2\x01\x12&\n PRESCRIBE_COMMAND__PRE_ORIGINATE\x10\xe8\x81\x02\x12\'\n!PRESCRIBE_COMMAND__POST_ORIGINATE\x10\xe9\x81\x02\x12#\n\x1dPRESCRIBE_COMMAND__PRE_UPDATE\x10\xea\x81\x02\x12$\n\x1ePRESCRIBE_COMMAND__POST_UPDATE\x10\xeb\x81\x02\x12#\n\x1dPRESCRIBE_COMMAND__PRE_COMMIT\x10\xec\x81\x02\x12$\n\x1ePRESCRIBE_COMMAND__POST_COMMIT\x10\xed\x81\x02\x12#\n\x1dPRESCRIBE_COMMAND__PRE_DELETE\x10\xee\x81\x02\x12$\n\x1ePRESCRIBE_COMMAND__POST_DELETE\x10\xef\x81\x02\x12+\n%PRESCRIBE_COMMAND__PRE_ENTER_IN_ERROR\x10\xf0\x81\x02\x12,\n&PRESCRIBE_COMMAND__POST_ENTER_IN_ERROR\x10\xf1\x81\x02\x12+\n%PRESCRIBE_COMMAND__PRE_EXECUTE_ACTION\x10\xf2\x81\x02\x12,\n&PRESCRIBE_COMMAND__POST_EXECUTE_ACTION\x10\xf3\x81\x02\x12\x30\n*PRESCRIBE_COMMAND__POST_INSERTED_INTO_NOTE\x10\xfa\x81\x02\x12\'\n!PRESCRIBE__PRESCRIBE__POST_SEARCH\x10\xf4\x81\x02\x12&\n PRESCRIBE__PRESCRIBE__PRE_SEARCH\x10\xf5\x81\x02\x12(\n\"PRESCRIBE__INDICATIONS__PRE_SEARCH\x10\xf6\x81\x02\x12)\n#PRESCRIBE__INDICATIONS__POST_SEARCH\x10\xf7\x81\x02\x12%\n\x1fPRESCRIBE__PHARMACY__PRE_SEARCH\x10\xf8\x81\x02\x12&\n PRESCRIBE__PHARMACY__POST_SEARCH\x10\xf9\x81\x02\x12*\n$QUESTIONNAIRE_COMMAND__PRE_ORIGINATE\x10\xd0\x89\x02\x12+\n%QUESTIONNAIRE_COMMAND__POST_ORIGINATE\x10\xd1\x89\x02\x12\'\n!QUESTIONNAIRE_COMMAND__PRE_UPDATE\x10\xd2\x89\x02\x12(\n\"QUESTIONNAIRE_COMMAND__POST_UPDATE\x10\xd3\x89\x02\x12\'\n!QUESTIONNAIRE_COMMAND__PRE_COMMIT\x10\xd4\x89\x02\x12(\n\"QUESTIONNAIRE_COMMAND__POST_COMMIT\x10\xd5\x89\x02\x12\'\n!QUESTIONNAIRE_COMMAND__PRE_DELETE\x10\xd6\x89\x02\x12(\n\"QUESTIONNAIRE_COMMAND__POST_DELETE\x10\xd7\x89\x02\x12/\n)QUESTIONNAIRE_COMMAND__PRE_ENTER_IN_ERROR\x10\xd8\x89\x02\x12\x30\n*QUESTIONNAIRE_COMMAND__POST_ENTER_IN_ERROR\x10\xd9\x89\x02\x12/\n)QUESTIONNAIRE_COMMAND__PRE_EXECUTE_ACTION\x10\xda\x89\x02\x12\x30\n*QUESTIONNAIRE_COMMAND__POST_EXECUTE_ACTION\x10\xdb\x89\x02\x12\x34\n.QUESTIONNAIRE_COMMAND__POST_INSERTED_INTO_NOTE\x10\xde\x89\x02\x12/\n)QUESTIONNAIRE__QUESTIONNAIRE__POST_SEARCH\x10\xdc\x89\x02\x12.\n(QUESTIONNAIRE__QUESTIONNAIRE__PRE_SEARCH\x10\xdd\x89\x02\x12-\n\'REASON_FOR_VISIT_COMMAND__PRE_ORIGINATE\x10\xb8\x91\x02\x12.\n(REASON_FOR_VISIT_COMMAND__POST_ORIGINATE\x10\xb9\x91\x02\x12*\n$REASON_FOR_VISIT_COMMAND__PRE_UPDATE\x10\xba\x91\x02\x12+\n%REASON_FOR_VISIT_COMMAND__POST_UPDATE\x10\xbb\x91\x02\x12*\n$REASON_FOR_VISIT_COMMAND__PRE_COMMIT\x10\xbc\x91\x02\x12+\n%REASON_FOR_VISIT_COMMAND__POST_COMMIT\x10\xbd\x91\x02\x12*\n$REASON_FOR_VISIT_COMMAND__PRE_DELETE\x10\xbe\x91\x02\x12+\n%REASON_FOR_VISIT_COMMAND__POST_DELETE\x10\xbf\x91\x02\x12\x32\n,REASON_FOR_VISIT_COMMAND__PRE_ENTER_IN_ERROR\x10\xc0\x91\x02\x12\x33\n-REASON_FOR_VISIT_COMMAND__POST_ENTER_IN_ERROR\x10\xc1\x91\x02\x12\x32\n,REASON_FOR_VISIT_COMMAND__PRE_EXECUTE_ACTION\x10\xc2\x91\x02\x12\x33\n-REASON_FOR_VISIT_COMMAND__POST_EXECUTE_ACTION\x10\xc3\x91\x02\x12\x37\n1REASON_FOR_VISIT_COMMAND__POST_INSERTED_INTO_NOTE\x10\xc6\x91\x02\x12+\n%REASON_FOR_VISIT__CODING__POST_SEARCH\x10\xc4\x91\x02\x12*\n$REASON_FOR_VISIT__CODING__PRE_SEARCH\x10\xc5\x91\x02\x12\"\n\x1cREFER_COMMAND__PRE_ORIGINATE\x10\xa0\x99\x02\x12#\n\x1dREFER_COMMAND__POST_ORIGINATE\x10\xa1\x99\x02\x12\x1f\n\x19REFER_COMMAND__PRE_UPDATE\x10\xa2\x99\x02\x12 \n\x1aREFER_COMMAND__POST_UPDATE\x10\xa3\x99\x02\x12\x1f\n\x19REFER_COMMAND__PRE_COMMIT\x10\xa4\x99\x02\x12 \n\x1aREFER_COMMAND__POST_COMMIT\x10\xa5\x99\x02\x12\x1f\n\x19REFER_COMMAND__PRE_DELETE\x10\xa6\x99\x02\x12 \n\x1aREFER_COMMAND__POST_DELETE\x10\xa7\x99\x02\x12\'\n!REFER_COMMAND__PRE_ENTER_IN_ERROR\x10\xa8\x99\x02\x12(\n\"REFER_COMMAND__POST_ENTER_IN_ERROR\x10\xa9\x99\x02\x12\'\n!REFER_COMMAND__PRE_EXECUTE_ACTION\x10\xaa\x99\x02\x12(\n\"REFER_COMMAND__POST_EXECUTE_ACTION\x10\xab\x99\x02\x12,\n&REFER_COMMAND__POST_INSERTED_INTO_NOTE\x10\xb4\x99\x02\x12\"\n\x1cREFER__REFER_TO__POST_SEARCH\x10\xac\x99\x02\x12!\n\x1bREFER__REFER_TO__PRE_SEARCH\x10\xad\x99\x02\x12%\n\x1fREFER__INDICATIONS__POST_SEARCH\x10\xae\x99\x02\x12$\n\x1eREFER__INDICATIONS__PRE_SEARCH\x10\xaf\x99\x02\x12.\n(REFER__DOCUMENTS_TO_INCLUDE__POST_SEARCH\x10\xb0\x99\x02\x12-\n\'REFER__DOCUMENTS_TO_INCLUDE__PRE_SEARCH\x10\xb1\x99\x02\x12&\n REFER__LINKED_ITEMS__POST_SEARCH\x10\xb2\x99\x02\x12-\n\'REFER__LINKED_ITEMS_INCLUDE__PRE_SEARCH\x10\xb3\x99\x02\x12#\n\x1dREFILL_COMMAND__PRE_ORIGINATE\x10\xd8\xb0\x02\x12$\n\x1eREFILL_COMMAND__POST_ORIGINATE\x10\xd9\xb0\x02\x12 \n\x1aREFILL_COMMAND__PRE_UPDATE\x10\xda\xb0\x02\x12!\n\x1bREFILL_COMMAND__POST_UPDATE\x10\xdb\xb0\x02\x12 \n\x1aREFILL_COMMAND__PRE_COMMIT\x10\xdc\xb0\x02\x12!\n\x1bREFILL_COMMAND__POST_COMMIT\x10\xdd\xb0\x02\x12 \n\x1aREFILL_COMMAND__PRE_DELETE\x10\xde\xb0\x02\x12!\n\x1bREFILL_COMMAND__POST_DELETE\x10\xdf\xb0\x02\x12(\n\"REFILL_COMMAND__PRE_ENTER_IN_ERROR\x10\xe0\xb0\x02\x12)\n#REFILL_COMMAND__POST_ENTER_IN_ERROR\x10\xe1\xb0\x02\x12(\n\"REFILL_COMMAND__PRE_EXECUTE_ACTION\x10\xe2\xb0\x02\x12)\n#REFILL_COMMAND__POST_EXECUTE_ACTION\x10\xe3\xb0\x02\x12-\n\'REFILL_COMMAND__POST_INSERTED_INTO_NOTE\x10\xea\xb0\x02\x12#\n\x1dREFILL__PRESCRIBE__PRE_SEARCH\x10\xe4\xb0\x02\x12$\n\x1eREFILL__PRESCRIBE__POST_SEARCH\x10\xe5\xb0\x02\x12%\n\x1fREFILL__INDICATIONS__PRE_SEARCH\x10\xe6\xb0\x02\x12&\n REFILL__INDICATIONS__POST_SEARCH\x10\xe7\xb0\x02\x12\"\n\x1cREFILL__PHARMACY__PRE_SEARCH\x10\xe8\xb0\x02\x12#\n\x1dREFILL__PHARMACY__POST_SEARCH\x10\xe9\xb0\x02\x12+\n%REMOVE_ALLERGY_COMMAND__PRE_ORIGINATE\x10\xc0\xb8\x02\x12,\n&REMOVE_ALLERGY_COMMAND__POST_ORIGINATE\x10\xc1\xb8\x02\x12(\n\"REMOVE_ALLERGY_COMMAND__PRE_UPDATE\x10\xc2\xb8\x02\x12)\n#REMOVE_ALLERGY_COMMAND__POST_UPDATE\x10\xc3\xb8\x02\x12(\n\"REMOVE_ALLERGY_COMMAND__PRE_COMMIT\x10\xc4\xb8\x02\x12)\n#REMOVE_ALLERGY_COMMAND__POST_COMMIT\x10\xc5\xb8\x02\x12(\n\"REMOVE_ALLERGY_COMMAND__PRE_DELETE\x10\xc6\xb8\x02\x12)\n#REMOVE_ALLERGY_COMMAND__POST_DELETE\x10\xc7\xb8\x02\x12\x30\n*REMOVE_ALLERGY_COMMAND__PRE_ENTER_IN_ERROR\x10\xc8\xb8\x02\x12\x31\n+REMOVE_ALLERGY_COMMAND__POST_ENTER_IN_ERROR\x10\xc9\xb8\x02\x12\x30\n*REMOVE_ALLERGY_COMMAND__PRE_EXECUTE_ACTION\x10\xca\xb8\x02\x12\x31\n+REMOVE_ALLERGY_COMMAND__POST_EXECUTE_ACTION\x10\xcb\xb8\x02\x12\x35\n/REMOVE_ALLERGY_COMMAND__POST_INSERTED_INTO_NOTE\x10\xce\xb8\x02\x12)\n#REMOVE_ALLERGY__ALLERGY__PRE_SEARCH\x10\xcc\xb8\x02\x12*\n$REMOVE_ALLERGY__ALLERGY__POST_SEARCH\x10\xcd\xb8\x02\x12.\n(RESOLVE_CONDITION_COMMAND__PRE_ORIGINATE\x10\xa8\xc0\x02\x12/\n)RESOLVE_CONDITION_COMMAND__POST_ORIGINATE\x10\xa9\xc0\x02\x12+\n%RESOLVE_CONDITION_COMMAND__PRE_UPDATE\x10\xaa\xc0\x02\x12,\n&RESOLVE_CONDITION_COMMAND__POST_UPDATE\x10\xab\xc0\x02\x12+\n%RESOLVE_CONDITION_COMMAND__PRE_COMMIT\x10\xac\xc0\x02\x12,\n&RESOLVE_CONDITION_COMMAND__POST_COMMIT\x10\xad\xc0\x02\x12+\n%RESOLVE_CONDITION_COMMAND__PRE_DELETE\x10\xae\xc0\x02\x12,\n&RESOLVE_CONDITION_COMMAND__POST_DELETE\x10\xaf\xc0\x02\x12\x33\n-RESOLVE_CONDITION_COMMAND__PRE_ENTER_IN_ERROR\x10\xb0\xc0\x02\x12\x34\n.RESOLVE_CONDITION_COMMAND__POST_ENTER_IN_ERROR\x10\xb1\xc0\x02\x12\x33\n-RESOLVE_CONDITION_COMMAND__PRE_EXECUTE_ACTION\x10\xb2\xc0\x02\x12\x34\n.RESOLVE_CONDITION_COMMAND__POST_EXECUTE_ACTION\x10\xb3\xc0\x02\x12\x38\n2RESOLVE_CONDITION_COMMAND__POST_INSERTED_INTO_NOTE\x10\xb6\xc0\x02\x12.\n(RESOLVE_CONDITION__CONDITION__PRE_SEARCH\x10\xb4\xc0\x02\x12/\n)RESOLVE_CONDITION__CONDITION__POST_SEARCH\x10\xb5\xc0\x02\x12 \n\x1aROS_COMMAND__PRE_ORIGINATE\x10\x90\xc8\x02\x12!\n\x1bROS_COMMAND__POST_ORIGINATE\x10\x91\xc8\x02\x12\x1d\n\x17ROS_COMMAND__PRE_UPDATE\x10\x92\xc8\x02\x12\x1e\n\x18ROS_COMMAND__POST_UPDATE\x10\x93\xc8\x02\x12\x1d\n\x17ROS_COMMAND__PRE_COMMIT\x10\x94\xc8\x02\x12\x1e\n\x18ROS_COMMAND__POST_COMMIT\x10\x95\xc8\x02\x12\x1d\n\x17ROS_COMMAND__PRE_DELETE\x10\x96\xc8\x02\x12\x1e\n\x18ROS_COMMAND__POST_DELETE\x10\x97\xc8\x02\x12%\n\x1fROS_COMMAND__PRE_ENTER_IN_ERROR\x10\x98\xc8\x02\x12&\n ROS_COMMAND__POST_ENTER_IN_ERROR\x10\x99\xc8\x02\x12%\n\x1fROS_COMMAND__PRE_EXECUTE_ACTION\x10\x9a\xc8\x02\x12&\n ROS_COMMAND__POST_EXECUTE_ACTION\x10\x9b\xc8\x02\x12*\n$ROS_COMMAND__POST_INSERTED_INTO_NOTE\x10\x9e\xc8\x02\x12$\n\x1eROS__QUESTIONNAIRE__PRE_SEARCH\x10\x9c\xc8\x02\x12%\n\x1fROS__QUESTIONNAIRE__POST_SEARCH\x10\x9d\xc8\x02\x12,\n&SNOOZE_PROTOCOL_COMMAND__PRE_ORIGINATE\x10\xf8\xcf\x02\x12-\n\'SNOOZE_PROTOCOL_COMMAND__POST_ORIGINATE\x10\xf9\xcf\x02\x12)\n#SNOOZE_PROTOCOL_COMMAND__PRE_UPDATE\x10\xfa\xcf\x02\x12*\n$SNOOZE_PROTOCOL_COMMAND__POST_UPDATE\x10\xfb\xcf\x02\x12)\n#SNOOZE_PROTOCOL_COMMAND__PRE_COMMIT\x10\xfc\xcf\x02\x12*\n$SNOOZE_PROTOCOL_COMMAND__POST_COMMIT\x10\xfd\xcf\x02\x12)\n#SNOOZE_PROTOCOL_COMMAND__PRE_DELETE\x10\xfe\xcf\x02\x12*\n$SNOOZE_PROTOCOL_COMMAND__POST_DELETE\x10\xff\xcf\x02\x12\x31\n+SNOOZE_PROTOCOL_COMMAND__PRE_ENTER_IN_ERROR\x10\x80\xd0\x02\x12\x32\n,SNOOZE_PROTOCOL_COMMAND__POST_ENTER_IN_ERROR\x10\x81\xd0\x02\x12\x31\n+SNOOZE_PROTOCOL_COMMAND__PRE_EXECUTE_ACTION\x10\x82\xd0\x02\x12\x32\n,SNOOZE_PROTOCOL_COMMAND__POST_EXECUTE_ACTION\x10\x83\xd0\x02\x12+\n%SNOOZE_PROTOCOL__PROTOCOL__PRE_SEARCH\x10\x84\xd0\x02\x12,\n&SNOOZE_PROTOCOL__PROTOCOL__POST_SEARCH\x10\x85\xd0\x02\x12,\n&STOP_MEDICATION_COMMAND__PRE_ORIGINATE\x10\xe0\xd7\x02\x12-\n\'STOP_MEDICATION_COMMAND__POST_ORIGINATE\x10\xe1\xd7\x02\x12)\n#STOP_MEDICATION_COMMAND__PRE_UPDATE\x10\xe2\xd7\x02\x12*\n$STOP_MEDICATION_COMMAND__POST_UPDATE\x10\xe3\xd7\x02\x12)\n#STOP_MEDICATION_COMMAND__PRE_COMMIT\x10\xe4\xd7\x02\x12*\n$STOP_MEDICATION_COMMAND__POST_COMMIT\x10\xe5\xd7\x02\x12)\n#STOP_MEDICATION_COMMAND__PRE_DELETE\x10\xe6\xd7\x02\x12*\n$STOP_MEDICATION_COMMAND__POST_DELETE\x10\xe7\xd7\x02\x12\x31\n+STOP_MEDICATION_COMMAND__PRE_ENTER_IN_ERROR\x10\xe8\xd7\x02\x12\x32\n,STOP_MEDICATION_COMMAND__POST_ENTER_IN_ERROR\x10\xe9\xd7\x02\x12\x31\n+STOP_MEDICATION_COMMAND__PRE_EXECUTE_ACTION\x10\xea\xd7\x02\x12\x32\n,STOP_MEDICATION_COMMAND__POST_EXECUTE_ACTION\x10\xeb\xd7\x02\x12\x36\n0STOP_MEDICATION_COMMAND__POST_INSERTED_INTO_NOTE\x10\xef\xd7\x02\x12-\n\'STOP_MEDICATION__MEDICATION__PRE_SEARCH\x10\xed\xd7\x02\x12.\n(STOP_MEDICATION__MEDICATION__POST_SEARCH\x10\xee\xd7\x02\x12\x32\n,STRUCTURED_ASSESSMENT_COMMAND__PRE_ORIGINATE\x10\xc8\xdf\x02\x12\x33\n-STRUCTURED_ASSESSMENT_COMMAND__POST_ORIGINATE\x10\xc9\xdf\x02\x12/\n)STRUCTURED_ASSESSMENT_COMMAND__PRE_UPDATE\x10\xca\xdf\x02\x12\x30\n*STRUCTURED_ASSESSMENT_COMMAND__POST_UPDATE\x10\xcb\xdf\x02\x12/\n)STRUCTURED_ASSESSMENT_COMMAND__PRE_COMMIT\x10\xcc\xdf\x02\x12\x30\n*STRUCTURED_ASSESSMENT_COMMAND__POST_COMMIT\x10\xcd\xdf\x02\x12/\n)STRUCTURED_ASSESSMENT_COMMAND__PRE_DELETE\x10\xce\xdf\x02\x12\x30\n*STRUCTURED_ASSESSMENT_COMMAND__POST_DELETE\x10\xcf\xdf\x02\x12\x37\n1STRUCTURED_ASSESSMENT_COMMAND__PRE_ENTER_IN_ERROR\x10\xd0\xdf\x02\x12\x38\n2STRUCTURED_ASSESSMENT_COMMAND__POST_ENTER_IN_ERROR\x10\xd1\xdf\x02\x12\x37\n1STRUCTURED_ASSESSMENT_COMMAND__PRE_EXECUTE_ACTION\x10\xd2\xdf\x02\x12\x38\n2STRUCTURED_ASSESSMENT_COMMAND__POST_EXECUTE_ACTION\x10\xd3\xdf\x02\x12<\n6STRUCTURED_ASSESSMENT_COMMAND__POST_INSERTED_INTO_NOTE\x10\xd6\xdf\x02\x12\x36\n0STRUCTURED_ASSESSMENT__QUESTIONNAIRE__PRE_SEARCH\x10\xd4\xdf\x02\x12\x37\n1STRUCTURED_ASSESSMENT__QUESTIONNAIRE__POST_SEARCH\x10\xd5\xdf\x02\x12-\n\'SURGICAL_HISTORY_COMMAND__PRE_ORIGINATE\x10\xb0\xe7\x02\x12.\n(SURGICAL_HISTORY_COMMAND__POST_ORIGINATE\x10\xb1\xe7\x02\x12*\n$SURGICAL_HISTORY_COMMAND__PRE_UPDATE\x10\xb2\xe7\x02\x12+\n%SURGICAL_HISTORY_COMMAND__POST_UPDATE\x10\xb3\xe7\x02\x12*\n$SURGICAL_HISTORY_COMMAND__PRE_COMMIT\x10\xb4\xe7\x02\x12+\n%SURGICAL_HISTORY_COMMAND__POST_COMMIT\x10\xb5\xe7\x02\x12*\n$SURGICAL_HISTORY_COMMAND__PRE_DELETE\x10\xb6\xe7\x02\x12+\n%SURGICAL_HISTORY_COMMAND__POST_DELETE\x10\xb7\xe7\x02\x12\x32\n,SURGICAL_HISTORY_COMMAND__PRE_ENTER_IN_ERROR\x10\xb8\xe7\x02\x12\x33\n-SURGICAL_HISTORY_COMMAND__POST_ENTER_IN_ERROR\x10\xb9\xe7\x02\x12\x32\n,SURGICAL_HISTORY_COMMAND__PRE_EXECUTE_ACTION\x10\xba\xe7\x02\x12\x33\n-SURGICAL_HISTORY_COMMAND__POST_EXECUTE_ACTION\x10\xbb\xe7\x02\x12\x37\n1SURGICAL_HISTORY_COMMAND__POST_INSERTED_INTO_NOTE\x10\xbe\xe7\x02\x12\x39\n3SURGICAL_HISTORY__PAST_SURGICAL_HISTORY__PRE_SEARCH\x10\xbc\xe7\x02\x12:\n4SURGICAL_HISTORY__PAST_SURGICAL_HISTORY__POST_SEARCH\x10\xbd\xe7\x02\x12!\n\x1bTASK_COMMAND__PRE_ORIGINATE\x10\x98\xef\x02\x12\"\n\x1cTASK_COMMAND__POST_ORIGINATE\x10\x99\xef\x02\x12\x1e\n\x18TASK_COMMAND__PRE_UPDATE\x10\x9a\xef\x02\x12\x1f\n\x19TASK_COMMAND__POST_UPDATE\x10\x9b\xef\x02\x12\x1e\n\x18TASK_COMMAND__PRE_COMMIT\x10\x9c\xef\x02\x12\x1f\n\x19TASK_COMMAND__POST_COMMIT\x10\x9d\xef\x02\x12\x1e\n\x18TASK_COMMAND__PRE_DELETE\x10\x9e\xef\x02\x12\x1f\n\x19TASK_COMMAND__POST_DELETE\x10\x9f\xef\x02\x12&\n TASK_COMMAND__PRE_ENTER_IN_ERROR\x10\xa0\xef\x02\x12\'\n!TASK_COMMAND__POST_ENTER_IN_ERROR\x10\xa1\xef\x02\x12&\n TASK_COMMAND__PRE_EXECUTE_ACTION\x10\xa2\xef\x02\x12\'\n!TASK_COMMAND__POST_EXECUTE_ACTION\x10\xa3\xef\x02\x12+\n%TASK_COMMAND__POST_INSERTED_INTO_NOTE\x10\xa8\xef\x02\x12!\n\x1bTASK__ASSIGN_TO__PRE_SEARCH\x10\xa4\xef\x02\x12\"\n\x1cTASK__ASSIGN_TO__POST_SEARCH\x10\xa5\xef\x02\x12\x1e\n\x18TASK__LABELS__PRE_SEARCH\x10\xa6\xef\x02\x12\x1f\n\x19TASK__LABELS__POST_SEARCH\x10\xa7\xef\x02\x12-\n\'UPDATE_DIAGNOSIS_COMMAND__PRE_ORIGINATE\x10\xe8\xfe\x02\x12.\n(UPDATE_DIAGNOSIS_COMMAND__POST_ORIGINATE\x10\xe9\xfe\x02\x12*\n$UPDATE_DIAGNOSIS_COMMAND__PRE_UPDATE\x10\xea\xfe\x02\x12+\n%UPDATE_DIAGNOSIS_COMMAND__POST_UPDATE\x10\xeb\xfe\x02\x12*\n$UPDATE_DIAGNOSIS_COMMAND__PRE_COMMIT\x10\xec\xfe\x02\x12+\n%UPDATE_DIAGNOSIS_COMMAND__POST_COMMIT\x10\xed\xfe\x02\x12*\n$UPDATE_DIAGNOSIS_COMMAND__PRE_DELETE\x10\xee\xfe\x02\x12+\n%UPDATE_DIAGNOSIS_COMMAND__POST_DELETE\x10\xef\xfe\x02\x12\x32\n,UPDATE_DIAGNOSIS_COMMAND__PRE_ENTER_IN_ERROR\x10\xf0\xfe\x02\x12\x33\n-UPDATE_DIAGNOSIS_COMMAND__POST_ENTER_IN_ERROR\x10\xf1\xfe\x02\x12\x32\n,UPDATE_DIAGNOSIS_COMMAND__PRE_EXECUTE_ACTION\x10\xf2\xfe\x02\x12\x33\n-UPDATE_DIAGNOSIS_COMMAND__POST_EXECUTE_ACTION\x10\xf3\xfe\x02\x12\x37\n1UPDATE_DIAGNOSIS_COMMAND__POST_INSERTED_INTO_NOTE\x10\xf8\xfe\x02\x12-\n\'UPDATE_DIAGNOSIS__CONDITION__PRE_SEARCH\x10\xf4\xfe\x02\x12.\n(UPDATE_DIAGNOSIS__CONDITION__POST_SEARCH\x10\xf5\xfe\x02\x12\x31\n+UPDATE_DIAGNOSIS__NEW_CONDITION__PRE_SEARCH\x10\xf6\xfe\x02\x12\x32\n,UPDATE_DIAGNOSIS__NEW_CONDITION__POST_SEARCH\x10\xf7\xfe\x02\x12(\n\"UPDATE_GOAL_COMMAND__PRE_ORIGINATE\x10\xd0\x86\x03\x12)\n#UPDATE_GOAL_COMMAND__POST_ORIGINATE\x10\xd1\x86\x03\x12%\n\x1fUPDATE_GOAL_COMMAND__PRE_UPDATE\x10\xd2\x86\x03\x12&\n UPDATE_GOAL_COMMAND__POST_UPDATE\x10\xd3\x86\x03\x12%\n\x1fUPDATE_GOAL_COMMAND__PRE_COMMIT\x10\xd4\x86\x03\x12&\n UPDATE_GOAL_COMMAND__POST_COMMIT\x10\xd5\x86\x03\x12%\n\x1fUPDATE_GOAL_COMMAND__PRE_DELETE\x10\xd6\x86\x03\x12&\n UPDATE_GOAL_COMMAND__POST_DELETE\x10\xd7\x86\x03\x12-\n\'UPDATE_GOAL_COMMAND__PRE_ENTER_IN_ERROR\x10\xd8\x86\x03\x12.\n(UPDATE_GOAL_COMMAND__POST_ENTER_IN_ERROR\x10\xd9\x86\x03\x12-\n\'UPDATE_GOAL_COMMAND__PRE_EXECUTE_ACTION\x10\xda\x86\x03\x12.\n(UPDATE_GOAL_COMMAND__POST_EXECUTE_ACTION\x10\xdb\x86\x03\x12\x32\n,UPDATE_GOAL_COMMAND__POST_INSERTED_INTO_NOTE\x10\xdc\x86\x03\x12-\n\'UPDATE_GOAL__GOAL_STATEMENT__PRE_SEARCH\x10\xdd\x86\x03\x12.\n(UPDATE_GOAL__GOAL_STATEMENT__POST_SEARCH\x10\xde\x86\x03\x12#\n\x1dVITALS_COMMAND__PRE_ORIGINATE\x10\xa0\x96\x03\x12$\n\x1eVITALS_COMMAND__POST_ORIGINATE\x10\xa1\x96\x03\x12 \n\x1aVITALS_COMMAND__PRE_UPDATE\x10\xa2\x96\x03\x12!\n\x1bVITALS_COMMAND__POST_UPDATE\x10\xa3\x96\x03\x12 \n\x1aVITALS_COMMAND__PRE_COMMIT\x10\xa4\x96\x03\x12!\n\x1bVITALS_COMMAND__POST_COMMIT\x10\xa5\x96\x03\x12 \n\x1aVITALS_COMMAND__PRE_DELETE\x10\xa6\x96\x03\x12!\n\x1bVITALS_COMMAND__POST_DELETE\x10\xa7\x96\x03\x12(\n\"VITALS_COMMAND__PRE_ENTER_IN_ERROR\x10\xa8\x96\x03\x12)\n#VITALS_COMMAND__POST_ENTER_IN_ERROR\x10\xa9\x96\x03\x12(\n\"VITALS_COMMAND__PRE_EXECUTE_ACTION\x10\xaa\x96\x03\x12)\n#VITALS_COMMAND__POST_EXECUTE_ACTION\x10\xab\x96\x03\x12-\n\'VITALS_COMMAND__POST_INSERTED_INTO_NOTE\x10\xac\x96\x03\x12.\n(ASSESS_CODING_GAP_COMMAND__PRE_ORIGINATE\x10\xa8\xbd\x03\x12/\n)ASSESS_CODING_GAP_COMMAND__POST_ORIGINATE\x10\xa9\xbd\x03\x12+\n%ASSESS_CODING_GAP_COMMAND__PRE_UPDATE\x10\xaa\xbd\x03\x12,\n&ASSESS_CODING_GAP_COMMAND__POST_UPDATE\x10\xab\xbd\x03\x12+\n%ASSESS_CODING_GAP_COMMAND__PRE_COMMIT\x10\xac\xbd\x03\x12,\n&ASSESS_CODING_GAP_COMMAND__POST_COMMIT\x10\xad\xbd\x03\x12+\n%ASSESS_CODING_GAP_COMMAND__PRE_DELETE\x10\xae\xbd\x03\x12,\n&ASSESS_CODING_GAP_COMMAND__POST_DELETE\x10\xaf\xbd\x03\x12\x33\n-ASSESS_CODING_GAP_COMMAND__PRE_ENTER_IN_ERROR\x10\xb0\xbd\x03\x12\x34\n.ASSESS_CODING_GAP_COMMAND__POST_ENTER_IN_ERROR\x10\xb1\xbd\x03\x12\x33\n-ASSESS_CODING_GAP_COMMAND__PRE_EXECUTE_ACTION\x10\xb2\xbd\x03\x12\x34\n.ASSESS_CODING_GAP_COMMAND__POST_EXECUTE_ACTION\x10\xb3\xbd\x03\x12\x38\n2ASSESS_CODING_GAP_COMMAND__POST_INSERTED_INTO_NOTE\x10\xb6\xbd\x03\x12-\n\'ASSESS_CODING_GAP__DIAGNOSE__PRE_SEARCH\x10\xb4\xbd\x03\x12.\n(ASSESS_CODING_GAP__DIAGNOSE__POST_SEARCH\x10\xb5\xbd\x03\x12.\n(CREATE_CODING_GAP_COMMAND__PRE_ORIGINATE\x10\x90\xc5\x03\x12/\n)CREATE_CODING_GAP_COMMAND__POST_ORIGINATE\x10\x91\xc5\x03\x12+\n%CREATE_CODING_GAP_COMMAND__PRE_UPDATE\x10\x92\xc5\x03\x12,\n&CREATE_CODING_GAP_COMMAND__POST_UPDATE\x10\x93\xc5\x03\x12+\n%CREATE_CODING_GAP_COMMAND__PRE_COMMIT\x10\x94\xc5\x03\x12,\n&CREATE_CODING_GAP_COMMAND__POST_COMMIT\x10\x95\xc5\x03\x12+\n%CREATE_CODING_GAP_COMMAND__PRE_DELETE\x10\x96\xc5\x03\x12,\n&CREATE_CODING_GAP_COMMAND__POST_DELETE\x10\x97\xc5\x03\x12\x33\n-CREATE_CODING_GAP_COMMAND__PRE_ENTER_IN_ERROR\x10\x98\xc5\x03\x12\x34\n.CREATE_CODING_GAP_COMMAND__POST_ENTER_IN_ERROR\x10\x99\xc5\x03\x12\x33\n-CREATE_CODING_GAP_COMMAND__PRE_EXECUTE_ACTION\x10\x9a\xc5\x03\x12\x34\n.CREATE_CODING_GAP_COMMAND__POST_EXECUTE_ACTION\x10\x9b\xc5\x03\x12\x38\n2CREATE_CODING_GAP_COMMAND__POST_INSERTED_INTO_NOTE\x10\x9e\xc5\x03\x12-\n\'CREATE_CODING_GAP__DIAGNOSE__PRE_SEARCH\x10\x9c\xc5\x03\x12.\n(CREATE_CODING_GAP__DIAGNOSE__POST_SEARCH\x10\x9d\xc5\x03\x12\x30\n*VALIDATE_CODING_GAP_COMMAND__PRE_ORIGINATE\x10\xf8\xcc\x03\x12\x31\n+VALIDATE_CODING_GAP_COMMAND__POST_ORIGINATE\x10\xf9\xcc\x03\x12-\n\'VALIDATE_CODING_GAP_COMMAND__PRE_UPDATE\x10\xfa\xcc\x03\x12.\n(VALIDATE_CODING_GAP_COMMAND__POST_UPDATE\x10\xfb\xcc\x03\x12-\n\'VALIDATE_CODING_GAP_COMMAND__PRE_COMMIT\x10\xfc\xcc\x03\x12.\n(VALIDATE_CODING_GAP_COMMAND__POST_COMMIT\x10\xfd\xcc\x03\x12-\n\'VALIDATE_CODING_GAP_COMMAND__PRE_DELETE\x10\xfe\xcc\x03\x12.\n(VALIDATE_CODING_GAP_COMMAND__POST_DELETE\x10\xff\xcc\x03\x12\x35\n/VALIDATE_CODING_GAP_COMMAND__PRE_ENTER_IN_ERROR\x10\x80\xcd\x03\x12\x36\n0VALIDATE_CODING_GAP_COMMAND__POST_ENTER_IN_ERROR\x10\x81\xcd\x03\x12\x35\n/VALIDATE_CODING_GAP_COMMAND__PRE_EXECUTE_ACTION\x10\x82\xcd\x03\x12\x36\n0VALIDATE_CODING_GAP_COMMAND__POST_EXECUTE_ACTION\x10\x83\xcd\x03\x12:\n4VALIDATE_CODING_GAP_COMMAND__POST_INSERTED_INTO_NOTE\x10\x84\xcd\x03\x12-\n\'DEFER_CODING_GAP_COMMAND__PRE_ORIGINATE\x10\xe0\xd4\x03\x12.\n(DEFER_CODING_GAP_COMMAND__POST_ORIGINATE\x10\xe1\xd4\x03\x12*\n$DEFER_CODING_GAP_COMMAND__PRE_UPDATE\x10\xe2\xd4\x03\x12+\n%DEFER_CODING_GAP_COMMAND__POST_UPDATE\x10\xe3\xd4\x03\x12*\n$DEFER_CODING_GAP_COMMAND__PRE_COMMIT\x10\xe4\xd4\x03\x12+\n%DEFER_CODING_GAP_COMMAND__POST_COMMIT\x10\xe5\xd4\x03\x12*\n$DEFER_CODING_GAP_COMMAND__PRE_DELETE\x10\xe6\xd4\x03\x12+\n%DEFER_CODING_GAP_COMMAND__POST_DELETE\x10\xe7\xd4\x03\x12\x32\n,DEFER_CODING_GAP_COMMAND__PRE_ENTER_IN_ERROR\x10\xe8\xd4\x03\x12\x33\n-DEFER_CODING_GAP_COMMAND__POST_ENTER_IN_ERROR\x10\xe9\xd4\x03\x12\x32\n,DEFER_CODING_GAP_COMMAND__PRE_EXECUTE_ACTION\x10\xea\xd4\x03\x12\x33\n-DEFER_CODING_GAP_COMMAND__POST_EXECUTE_ACTION\x10\xeb\xd4\x03\x12\x37\n1DEFER_CODING_GAP_COMMAND__POST_INSERTED_INTO_NOTE\x10\xec\xd4\x03\x12\x1d\n\x17SHOW_NOTE_HEADER_BUTTON\x10\xf0\xa2\x04\x12\x1d\n\x17SHOW_NOTE_FOOTER_BUTTON\x10\xf1\xa2\x04\x12\x1b\n\x15\x41\x43TION_BUTTON_CLICKED\x10\xf2\xa2\x04\x12\x1f\n\x19PATIENT_CHART__CONDITIONS\x10\xa0\x8d\x06\x12\x32\n,PATIENT_CHART_SUMMARY__SECTION_CONFIGURATION\x10\xa1\x8d\x06\x12,\n&PATIENT_PROFILE__SECTION_CONFIGURATION\x10\xa2\x8d\x06\x12\x30\n*PATIENT_PROFILE__ADD_PHARMACY__POST_SEARCH\x10\xa3\x8d\x06\x12\x17\n\x11\x43LAIM__CONDITIONS\x10\x88\x95\x06\x12\x14\n\x0ePLUGIN_CREATED\x10\xf0\x9c\x06\x12\x14\n\x0ePLUGIN_UPDATED\x10\xf1\x9c\x06\x12\x1a\n\x14\x41PPLICATION__ON_OPEN\x10\xd8\xa4\x06\x12\x1f\n\x19PATIENT_PORTAL__GET_FORMS\x10\xb0\xdb\x06\x12*\n$PATIENT_PORTAL__APPOINTMENT_CANCELED\x10\xb1\xdb\x06\x12-\n\'PATIENT_PORTAL__APPOINTMENT_RESCHEDULED\x10\xb2\xdb\x06\x12\x31\n+PATIENT_PORTAL__APPOINTMENT_CAN_BE_CANCELED\x10\xb3\xdb\x06\x12\x34\n.PATIENT_PORTAL__APPOINTMENT_CAN_BE_RESCHEDULED\x10\xb4\xdb\x06\x12\x36\n0PATIENT_PORTAL__APPOINTMENTS__SLOTS__POST_SEARCH\x10\xb5\xdb\x06\x12\x46\n@PATIENT_PORTAL__APPOINTMENTS__FORM_APPOINTMENT_TYPES__PRE_SEARCH\x10\xb6\xdb\x06\x12G\nAPATIENT_PORTAL__APPOINTMENTS__FORM_APPOINTMENT_TYPES__POST_SEARCH\x10\xb7\xdb\x06\x12>\n8PATIENT_PORTAL__APPOINTMENTS__FORM_LOCATIONS__PRE_SEARCH\x10\xb8\xdb\x06\x12?\n9PATIENT_PORTAL__APPOINTMENTS__FORM_LOCATIONS__POST_SEARCH\x10\xb9\xdb\x06\x12>\n8PATIENT_PORTAL__APPOINTMENTS__FORM_PROVIDERS__PRE_SEARCH\x10\xba\xdb\x06\x12?\n9PATIENT_PORTAL__APPOINTMENTS__FORM_PROVIDERS__POST_SEARCH\x10\xbb\xdb\x06\x12\x37\n1PATIENT_PORTAL__APPOINTMENT_CAN_SHOW_MEETING_LINK\x10\xbc\xdb\x06\x12\x33\n-PATIENT_PORTAL__GET_APPLICATION_CONFIGURATION\x10\xbd\xdb\x06\x12(\n\"PATIENT_PORTAL__MENU_CONFIGURATION\x10\x94\xdc\x06\x12*\n$PATIENT_PORTAL__WIDGET_CONFIGURATION\x10\x95\xdc\x06\x12;\n5SHOW_CHART_SUMMARY_SOCIAL_DETERMINANTS_SECTION_BUTTON\x10\xc0\xa9\x07\x12-\n\'SHOW_CHART_SUMMARY_GOALS_SECTION_BUTTON\x10\xc1\xa9\x07\x12\x32\n,SHOW_CHART_SUMMARY_CONDITIONS_SECTION_BUTTON\x10\xc2\xa9\x07\x12\x33\n-SHOW_CHART_SUMMARY_MEDICATIONS_SECTION_BUTTON\x10\xc3\xa9\x07\x12\x31\n+SHOW_CHART_SUMMARY_ALLERGIES_SECTION_BUTTON\x10\xc4\xa9\x07\x12\x32\n,SHOW_CHART_SUMMARY_CARE_TEAMS_SECTION_BUTTON\x10\xc5\xa9\x07\x12.\n(SHOW_CHART_SUMMARY_VITALS_SECTION_BUTTON\x10\xc6\xa9\x07\x12\x35\n/SHOW_CHART_SUMMARY_IMMUNIZATIONS_SECTION_BUTTON\x10\xc7\xa9\x07\x12\x38\n2SHOW_CHART_SUMMARY_SURGICAL_HISTORY_SECTION_BUTTON\x10\xc8\xa9\x07\x12\x36\n0SHOW_CHART_SUMMARY_FAMILY_HISTORY_SECTION_BUTTON\x10\xc9\xa9\x07\x12\x33\n-SHOW_CHART_SUMMARY_CODING_GAPS_SECTION_BUTTON\x10\xca\xa9\x07\x12\x1d\n\x17SIMPLE_API_AUTHENTICATE\x10\xd0\xf7\x07\x12\x18\n\x12SIMPLE_API_REQUEST\x10\xd1\xf7\x07\x62\x06proto3')
19
+
20
+ _globals = globals()
21
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'canvas_generated.messages.events_pb2', _globals)
23
+ if _descriptor._USE_C_DESCRIPTORS == False:
24
+ DESCRIPTOR._options = None
25
+ _globals['_EVENTTYPE']._serialized_start=256
26
+ _globals['_EVENTTYPE']._serialized_end=34542
27
+ _globals['_EVENT']._serialized_start=91
28
+ _globals['_EVENT']._serialized_end=185
29
+ _globals['_EVENTRESPONSE']._serialized_start=187
30
+ _globals['_EVENTRESPONSE']._serialized_end=252
31
+ # @@protoc_insertion_point(module_scope)
@@ -120,6 +120,7 @@ class EventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
120
120
  ADJUST_PRESCRIPTION_COMMAND__POST_ENTER_IN_ERROR: _ClassVar[EventType]
121
121
  ADJUST_PRESCRIPTION_COMMAND__PRE_EXECUTE_ACTION: _ClassVar[EventType]
122
122
  ADJUST_PRESCRIPTION_COMMAND__POST_EXECUTE_ACTION: _ClassVar[EventType]
123
+ ADJUST_PRESCRIPTION_COMMAND__POST_INSERTED_INTO_NOTE: _ClassVar[EventType]
123
124
  ADJUST_PRESCRIPTION__PRESCRIBE__POST_SEARCH: _ClassVar[EventType]
124
125
  ADJUST_PRESCRIPTION__PRESCRIBE__PRE_SEARCH: _ClassVar[EventType]
125
126
  ADJUST_PRESCRIPTION__INDICATIONS__PRE_SEARCH: _ClassVar[EventType]
@@ -140,6 +141,7 @@ class EventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
140
141
  ALLERGY_COMMAND__POST_ENTER_IN_ERROR: _ClassVar[EventType]
141
142
  ALLERGY_COMMAND__PRE_EXECUTE_ACTION: _ClassVar[EventType]
142
143
  ALLERGY_COMMAND__POST_EXECUTE_ACTION: _ClassVar[EventType]
144
+ ALLERGY_COMMAND__POST_INSERTED_INTO_NOTE: _ClassVar[EventType]
143
145
  ALLERGY__ALLERGY__PRE_SEARCH: _ClassVar[EventType]
144
146
  ALLERGY__ALLERGY__POST_SEARCH: _ClassVar[EventType]
145
147
  ASSESS_COMMAND__PRE_ORIGINATE: _ClassVar[EventType]
@@ -154,6 +156,7 @@ class EventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
154
156
  ASSESS_COMMAND__POST_ENTER_IN_ERROR: _ClassVar[EventType]
155
157
  ASSESS_COMMAND__PRE_EXECUTE_ACTION: _ClassVar[EventType]
156
158
  ASSESS_COMMAND__POST_EXECUTE_ACTION: _ClassVar[EventType]
159
+ ASSESS_COMMAND__POST_INSERTED_INTO_NOTE: _ClassVar[EventType]
157
160
  ASSESS__CONDITION__POST_SEARCH: _ClassVar[EventType]
158
161
  ASSESS__CONDITION__PRE_SEARCH: _ClassVar[EventType]
159
162
  CANCEL_PRESCRIPTION_COMMAND__PRE_ORIGINATE: _ClassVar[EventType]
@@ -259,6 +262,7 @@ class EventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
259
262
  FOLLOW_UP_COMMAND__POST_ENTER_IN_ERROR: _ClassVar[EventType]
260
263
  FOLLOW_UP_COMMAND__PRE_EXECUTE_ACTION: _ClassVar[EventType]
261
264
  FOLLOW_UP_COMMAND__POST_EXECUTE_ACTION: _ClassVar[EventType]
265
+ FOLLOW_UP_COMMAND__POST_INSERTED_INTO_NOTE: _ClassVar[EventType]
262
266
  FOLLOW_UP__CODING__PRE_SEARCH: _ClassVar[EventType]
263
267
  FOLLOW_UP__CODING__POST_SEARCH: _ClassVar[EventType]
264
268
  FOLLOW_UP__NOTE_TYPE__PRE_SEARCH: _ClassVar[EventType]
@@ -516,14 +520,15 @@ class EventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
516
520
  REFER_COMMAND__POST_ENTER_IN_ERROR: _ClassVar[EventType]
517
521
  REFER_COMMAND__PRE_EXECUTE_ACTION: _ClassVar[EventType]
518
522
  REFER_COMMAND__POST_EXECUTE_ACTION: _ClassVar[EventType]
519
- REFER_COMMAND__REFER_TO__POST_SEARCH: _ClassVar[EventType]
520
- REFER_COMMAND__REFER_TO__PRE_SEARCH: _ClassVar[EventType]
521
- REFER_COMMAND__INDICATIONS__POST_SEARCH: _ClassVar[EventType]
522
- REFER_COMMAND__INDICATIONS__PRE_SEARCH: _ClassVar[EventType]
523
- REFER_COMMAND__DOCUMENTS_TO_INCLUDE__POST_SEARCH: _ClassVar[EventType]
524
- REFER_COMMAND__DOCUMENTS_TO_INCLUDE__PRE_SEARCH: _ClassVar[EventType]
525
- REFER_COMMAND__LINKED_ITEMS__POST_SEARCH: _ClassVar[EventType]
526
- REFER_COMMAND__LINKED_ITEMS_INCLUDE__PRE_SEARCH: _ClassVar[EventType]
523
+ REFER_COMMAND__POST_INSERTED_INTO_NOTE: _ClassVar[EventType]
524
+ REFER__REFER_TO__POST_SEARCH: _ClassVar[EventType]
525
+ REFER__REFER_TO__PRE_SEARCH: _ClassVar[EventType]
526
+ REFER__INDICATIONS__POST_SEARCH: _ClassVar[EventType]
527
+ REFER__INDICATIONS__PRE_SEARCH: _ClassVar[EventType]
528
+ REFER__DOCUMENTS_TO_INCLUDE__POST_SEARCH: _ClassVar[EventType]
529
+ REFER__DOCUMENTS_TO_INCLUDE__PRE_SEARCH: _ClassVar[EventType]
530
+ REFER__LINKED_ITEMS__POST_SEARCH: _ClassVar[EventType]
531
+ REFER__LINKED_ITEMS_INCLUDE__PRE_SEARCH: _ClassVar[EventType]
527
532
  REFILL_COMMAND__PRE_ORIGINATE: _ClassVar[EventType]
528
533
  REFILL_COMMAND__POST_ORIGINATE: _ClassVar[EventType]
529
534
  REFILL_COMMAND__PRE_UPDATE: _ClassVar[EventType]
@@ -570,6 +575,7 @@ class EventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
570
575
  RESOLVE_CONDITION_COMMAND__POST_ENTER_IN_ERROR: _ClassVar[EventType]
571
576
  RESOLVE_CONDITION_COMMAND__PRE_EXECUTE_ACTION: _ClassVar[EventType]
572
577
  RESOLVE_CONDITION_COMMAND__POST_EXECUTE_ACTION: _ClassVar[EventType]
578
+ RESOLVE_CONDITION_COMMAND__POST_INSERTED_INTO_NOTE: _ClassVar[EventType]
573
579
  RESOLVE_CONDITION__CONDITION__PRE_SEARCH: _ClassVar[EventType]
574
580
  RESOLVE_CONDITION__CONDITION__POST_SEARCH: _ClassVar[EventType]
575
581
  ROS_COMMAND__PRE_ORIGINATE: _ClassVar[EventType]
@@ -675,6 +681,7 @@ class EventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
675
681
  UPDATE_DIAGNOSIS_COMMAND__POST_ENTER_IN_ERROR: _ClassVar[EventType]
676
682
  UPDATE_DIAGNOSIS_COMMAND__PRE_EXECUTE_ACTION: _ClassVar[EventType]
677
683
  UPDATE_DIAGNOSIS_COMMAND__POST_EXECUTE_ACTION: _ClassVar[EventType]
684
+ UPDATE_DIAGNOSIS_COMMAND__POST_INSERTED_INTO_NOTE: _ClassVar[EventType]
678
685
  UPDATE_DIAGNOSIS__CONDITION__PRE_SEARCH: _ClassVar[EventType]
679
686
  UPDATE_DIAGNOSIS__CONDITION__POST_SEARCH: _ClassVar[EventType]
680
687
  UPDATE_DIAGNOSIS__NEW_CONDITION__PRE_SEARCH: _ClassVar[EventType]
@@ -914,6 +921,7 @@ ADJUST_PRESCRIPTION_COMMAND__PRE_ENTER_IN_ERROR: EventType
914
921
  ADJUST_PRESCRIPTION_COMMAND__POST_ENTER_IN_ERROR: EventType
915
922
  ADJUST_PRESCRIPTION_COMMAND__PRE_EXECUTE_ACTION: EventType
916
923
  ADJUST_PRESCRIPTION_COMMAND__POST_EXECUTE_ACTION: EventType
924
+ ADJUST_PRESCRIPTION_COMMAND__POST_INSERTED_INTO_NOTE: EventType
917
925
  ADJUST_PRESCRIPTION__PRESCRIBE__POST_SEARCH: EventType
918
926
  ADJUST_PRESCRIPTION__PRESCRIBE__PRE_SEARCH: EventType
919
927
  ADJUST_PRESCRIPTION__INDICATIONS__PRE_SEARCH: EventType
@@ -934,6 +942,7 @@ ALLERGY_COMMAND__PRE_ENTER_IN_ERROR: EventType
934
942
  ALLERGY_COMMAND__POST_ENTER_IN_ERROR: EventType
935
943
  ALLERGY_COMMAND__PRE_EXECUTE_ACTION: EventType
936
944
  ALLERGY_COMMAND__POST_EXECUTE_ACTION: EventType
945
+ ALLERGY_COMMAND__POST_INSERTED_INTO_NOTE: EventType
937
946
  ALLERGY__ALLERGY__PRE_SEARCH: EventType
938
947
  ALLERGY__ALLERGY__POST_SEARCH: EventType
939
948
  ASSESS_COMMAND__PRE_ORIGINATE: EventType
@@ -948,6 +957,7 @@ ASSESS_COMMAND__PRE_ENTER_IN_ERROR: EventType
948
957
  ASSESS_COMMAND__POST_ENTER_IN_ERROR: EventType
949
958
  ASSESS_COMMAND__PRE_EXECUTE_ACTION: EventType
950
959
  ASSESS_COMMAND__POST_EXECUTE_ACTION: EventType
960
+ ASSESS_COMMAND__POST_INSERTED_INTO_NOTE: EventType
951
961
  ASSESS__CONDITION__POST_SEARCH: EventType
952
962
  ASSESS__CONDITION__PRE_SEARCH: EventType
953
963
  CANCEL_PRESCRIPTION_COMMAND__PRE_ORIGINATE: EventType
@@ -1053,6 +1063,7 @@ FOLLOW_UP_COMMAND__PRE_ENTER_IN_ERROR: EventType
1053
1063
  FOLLOW_UP_COMMAND__POST_ENTER_IN_ERROR: EventType
1054
1064
  FOLLOW_UP_COMMAND__PRE_EXECUTE_ACTION: EventType
1055
1065
  FOLLOW_UP_COMMAND__POST_EXECUTE_ACTION: EventType
1066
+ FOLLOW_UP_COMMAND__POST_INSERTED_INTO_NOTE: EventType
1056
1067
  FOLLOW_UP__CODING__PRE_SEARCH: EventType
1057
1068
  FOLLOW_UP__CODING__POST_SEARCH: EventType
1058
1069
  FOLLOW_UP__NOTE_TYPE__PRE_SEARCH: EventType
@@ -1310,14 +1321,15 @@ REFER_COMMAND__PRE_ENTER_IN_ERROR: EventType
1310
1321
  REFER_COMMAND__POST_ENTER_IN_ERROR: EventType
1311
1322
  REFER_COMMAND__PRE_EXECUTE_ACTION: EventType
1312
1323
  REFER_COMMAND__POST_EXECUTE_ACTION: EventType
1313
- REFER_COMMAND__REFER_TO__POST_SEARCH: EventType
1314
- REFER_COMMAND__REFER_TO__PRE_SEARCH: EventType
1315
- REFER_COMMAND__INDICATIONS__POST_SEARCH: EventType
1316
- REFER_COMMAND__INDICATIONS__PRE_SEARCH: EventType
1317
- REFER_COMMAND__DOCUMENTS_TO_INCLUDE__POST_SEARCH: EventType
1318
- REFER_COMMAND__DOCUMENTS_TO_INCLUDE__PRE_SEARCH: EventType
1319
- REFER_COMMAND__LINKED_ITEMS__POST_SEARCH: EventType
1320
- REFER_COMMAND__LINKED_ITEMS_INCLUDE__PRE_SEARCH: EventType
1324
+ REFER_COMMAND__POST_INSERTED_INTO_NOTE: EventType
1325
+ REFER__REFER_TO__POST_SEARCH: EventType
1326
+ REFER__REFER_TO__PRE_SEARCH: EventType
1327
+ REFER__INDICATIONS__POST_SEARCH: EventType
1328
+ REFER__INDICATIONS__PRE_SEARCH: EventType
1329
+ REFER__DOCUMENTS_TO_INCLUDE__POST_SEARCH: EventType
1330
+ REFER__DOCUMENTS_TO_INCLUDE__PRE_SEARCH: EventType
1331
+ REFER__LINKED_ITEMS__POST_SEARCH: EventType
1332
+ REFER__LINKED_ITEMS_INCLUDE__PRE_SEARCH: EventType
1321
1333
  REFILL_COMMAND__PRE_ORIGINATE: EventType
1322
1334
  REFILL_COMMAND__POST_ORIGINATE: EventType
1323
1335
  REFILL_COMMAND__PRE_UPDATE: EventType
@@ -1364,6 +1376,7 @@ RESOLVE_CONDITION_COMMAND__PRE_ENTER_IN_ERROR: EventType
1364
1376
  RESOLVE_CONDITION_COMMAND__POST_ENTER_IN_ERROR: EventType
1365
1377
  RESOLVE_CONDITION_COMMAND__PRE_EXECUTE_ACTION: EventType
1366
1378
  RESOLVE_CONDITION_COMMAND__POST_EXECUTE_ACTION: EventType
1379
+ RESOLVE_CONDITION_COMMAND__POST_INSERTED_INTO_NOTE: EventType
1367
1380
  RESOLVE_CONDITION__CONDITION__PRE_SEARCH: EventType
1368
1381
  RESOLVE_CONDITION__CONDITION__POST_SEARCH: EventType
1369
1382
  ROS_COMMAND__PRE_ORIGINATE: EventType
@@ -1469,6 +1482,7 @@ UPDATE_DIAGNOSIS_COMMAND__PRE_ENTER_IN_ERROR: EventType
1469
1482
  UPDATE_DIAGNOSIS_COMMAND__POST_ENTER_IN_ERROR: EventType
1470
1483
  UPDATE_DIAGNOSIS_COMMAND__PRE_EXECUTE_ACTION: EventType
1471
1484
  UPDATE_DIAGNOSIS_COMMAND__POST_EXECUTE_ACTION: EventType
1485
+ UPDATE_DIAGNOSIS_COMMAND__POST_INSERTED_INTO_NOTE: EventType
1472
1486
  UPDATE_DIAGNOSIS__CONDITION__PRE_SEARCH: EventType
1473
1487
  UPDATE_DIAGNOSIS__CONDITION__POST_SEARCH: EventType
1474
1488
  UPDATE_DIAGNOSIS__NEW_CONDITION__PRE_SEARCH: EventType
@@ -39,6 +39,9 @@ class ProtocolCard(_BaseEffect):
39
39
  class Status(Enum):
40
40
  DUE = "due"
41
41
  SATISFIED = "satisfied"
42
+ NOT_APPLICABLE = "not_applicable"
43
+ PENDING = "pending"
44
+ NOT_RELEVANT = "not_relevant"
42
45
 
43
46
  class Meta:
44
47
  effect_type = EffectType.ADD_OR_UPDATE_PROTOCOL_CARD
@@ -13,6 +13,7 @@ version = importlib.metadata.version("canvas")
13
13
  class BaseHandler(ABC):
14
14
  """The class that all handlers inherit from."""
15
15
 
16
+ environment: dict[str, Any]
16
17
  secrets: dict[str, Any]
17
18
  event: Event
18
19
 
@@ -20,9 +21,11 @@ class BaseHandler(ABC):
20
21
  self,
21
22
  event: Event,
22
23
  secrets: dict[str, Any] | None = None,
24
+ environment: dict[str, Any] | None = None,
23
25
  ) -> None:
24
26
  self.event = event
25
27
  self.secrets = secrets or {}
28
+ self.environment = environment or {}
26
29
 
27
30
  @property
28
31
  @deprecation.deprecated(
@@ -7,6 +7,9 @@ from .security import (
7
7
  BasicCredentials,
8
8
  BearerCredentials,
9
9
  Credentials,
10
+ PatientSessionAuthMixin,
11
+ SessionCredentials,
12
+ StaffSessionAuthMixin,
10
13
  )
11
14
 
12
15
  __all__ = [
@@ -17,6 +20,9 @@ __all__ = [
17
20
  "BasicCredentials",
18
21
  "BearerCredentials",
19
22
  "Credentials",
23
+ "PatientSessionAuthMixin",
24
+ "SessionCredentials",
20
25
  "SimpleAPI",
21
26
  "SimpleAPIRoute",
27
+ "StaffSessionAuthMixin",
22
28
  ]
@@ -9,6 +9,8 @@ from http import HTTPStatus
9
9
  from typing import Any, ClassVar, Protocol, TypeVar, cast
10
10
  from urllib.parse import parse_qsl
11
11
 
12
+ import sentry_sdk
13
+
12
14
  from canvas_sdk.effects import Effect, EffectType
13
15
  from canvas_sdk.effects.simple_api import JSON, JSONResponse, Response
14
16
  from canvas_sdk.events import Event, EventType
@@ -324,6 +326,8 @@ class SimpleAPIBase(BaseHandler, ABC):
324
326
  for error_line in error_line_with_newlines.split("\n"):
325
327
  log.error(error_line)
326
328
 
329
+ sentry_sdk.capture_exception(exception)
330
+
327
331
  return [Response(status_code=HTTPStatus.INTERNAL_SERVER_ERROR).apply()]
328
332
 
329
333
  def _authenticate(self) -> list[Effect]:
@@ -114,6 +114,39 @@ class APIKeyCredentials(Credentials):
114
114
  self.key = key
115
115
 
116
116
 
117
+ class SessionCredentials(Credentials):
118
+ """
119
+ Session credentials class.
120
+
121
+ Looks for headers set by Canvas with information about the logged in user based on browser
122
+ cookies and session information in the Canvas database. These headers are removed if received by
123
+ the client and intentionally set by Canvas only if there is a valid session from an active user.
124
+
125
+ One must look at the type of user in order to understand what the id refers to – a patient or a
126
+ staff member.
127
+
128
+ If a SimpleAPI handler is protected by SessionCredentials, the non-presence of these headers
129
+ results in an unauthorized response. Users of SessionCredentials will likely wish to further
130
+ restrict access based on the type of user (patient or staff) and perhaps based on the roles
131
+ associated with the user. This logic is the concern of the implementer of the handler's
132
+ authenticate method.
133
+ """
134
+
135
+ def __init__(self, request: "Request") -> None:
136
+ super().__init__(request)
137
+
138
+ if (
139
+ "canvas-logged-in-user-type" not in request.headers
140
+ or "canvas-logged-in-user-id" not in request.headers
141
+ ):
142
+ raise InvalidCredentialsError
143
+
144
+ self.logged_in_user = {
145
+ "id": request.headers.get("canvas-logged-in-user-id"),
146
+ "type": request.headers.get("canvas-logged-in-user-type"),
147
+ }
148
+
149
+
117
150
  class AuthSchemeMixin(Protocol):
118
151
  """Protocol for authentication scheme mixins."""
119
152
 
@@ -182,3 +215,35 @@ class APIKeyAuthMixin(AuthSchemeMixin):
182
215
  raise InvalidCredentialsError
183
216
 
184
217
  return True
218
+
219
+
220
+ class StaffSessionAuthMixin(AuthSchemeMixin):
221
+ """
222
+ Staff Session authentication scheme mixin.
223
+
224
+ Provides an implementation of the authenticate method that ensures only logged in staff members
225
+ can access the urls provided by this handler. It only cares that they are a staff, with no
226
+ regard to roles or any other permissioning schemes.
227
+ """
228
+
229
+ def authenticate(self, credentials: SessionCredentials) -> bool: # type: ignore[override]
230
+ """Authenticate the request."""
231
+ if credentials.logged_in_user["type"] != "Staff":
232
+ raise InvalidCredentialsError
233
+ return True
234
+
235
+
236
+ class PatientSessionAuthMixin(AuthSchemeMixin):
237
+ """
238
+ Patient Session authentication scheme mixin.
239
+
240
+ Provides an implementation of the authenticate method that ensures only logged in patients can
241
+ access the urls provided by this handler. It only cares that they are a patient, with no regard
242
+ any other information.
243
+ """
244
+
245
+ def authenticate(self, credentials: SessionCredentials) -> bool: # type: ignore[override]
246
+ """Authenticate the request."""
247
+ if credentials.logged_in_user["type"] != "Patient":
248
+ raise InvalidCredentialsError
249
+ return True
@@ -37,6 +37,9 @@ from canvas_sdk.handlers.simple_api.security import (
37
37
  BasicCredentials,
38
38
  BearerCredentials,
39
39
  Credentials,
40
+ PatientSessionAuthMixin,
41
+ SessionCredentials,
42
+ StaffSessionAuthMixin,
40
43
  )
41
44
  from canvas_sdk.handlers.simple_api.tools import (
42
45
  CaseInsensitiveMultiDict,
@@ -890,6 +893,13 @@ def custom_headers(api_key: str, app_key: str) -> dict[str, str]:
890
893
  return {"API-Key": api_key, "App-Key": app_key}
891
894
 
892
895
 
896
+ def session_headers(id: str, type: str) -> dict[str, str]:
897
+ """
898
+ Given an id and a type, return headers that include the expected session based auth headers.
899
+ """
900
+ return {"canvas-logged-in-user-type": type, "canvas-logged-in-user-id": id}
901
+
902
+
893
903
  USERNAME = uuid4().hex
894
904
  PASSWORD = uuid4().hex
895
905
  TOKEN = uuid4().hex
@@ -915,6 +925,11 @@ APP_KEY = uuid4().hex
915
925
  lambda _, credentials: credentials.key == API_KEY,
916
926
  api_key_headers(API_KEY),
917
927
  ),
928
+ (
929
+ SessionCredentials,
930
+ lambda _, credentials: credentials.logged_in_user["type"] == "Staff",
931
+ session_headers("abc123", "Staff"),
932
+ ),
918
933
  (
919
934
  Credentials,
920
935
  lambda request, _: request.headers.get("API-Key") == API_KEY
@@ -922,7 +937,7 @@ APP_KEY = uuid4().hex
922
937
  custom_headers(API_KEY, APP_KEY),
923
938
  ),
924
939
  ],
925
- ids=["basic", "bearer", "API key", "custom"],
940
+ ids=["basic", "bearer", "API key", "custom", "session"],
926
941
  )
927
942
  def authenticated_route(request: SubRequest) -> SimpleNamespace:
928
943
  """
@@ -998,8 +1013,9 @@ def test_authentication_failure(
998
1013
  (BearerCredentials, bearer_headers(TOKEN)),
999
1014
  (APIKeyCredentials, api_key_headers(API_KEY)),
1000
1015
  (Credentials, custom_headers(API_KEY, APP_KEY)),
1016
+ (SessionCredentials, session_headers("abc123", "Patient")),
1001
1017
  ],
1002
- ids=["basic", "bearer", "API key", "custom"],
1018
+ ids=["basic", "bearer", "API key", "custom", "session"],
1003
1019
  )
1004
1020
  def test_authentication_exception(
1005
1021
  credentials_cls: type[Credentials], headers: Mapping[str, str]
@@ -1079,6 +1095,40 @@ def test_authentication_exception(
1079
1095
  ).apply()
1080
1096
  ],
1081
1097
  ),
1098
+ (
1099
+ StaffSessionAuthMixin,
1100
+ {},
1101
+ session_headers("abc123", "Staff"),
1102
+ [Effect(type=EffectType.CREATE_TASK, payload="create task")],
1103
+ ),
1104
+ (
1105
+ StaffSessionAuthMixin,
1106
+ {},
1107
+ session_headers("abc123", "Patient"),
1108
+ [
1109
+ JSONResponse(
1110
+ content={"error": "Provided credentials are invalid"},
1111
+ status_code=HTTPStatus.UNAUTHORIZED,
1112
+ ).apply()
1113
+ ],
1114
+ ),
1115
+ (
1116
+ PatientSessionAuthMixin,
1117
+ {},
1118
+ session_headers("abc123", "Patient"),
1119
+ [Effect(type=EffectType.CREATE_TASK, payload="create task")],
1120
+ ),
1121
+ (
1122
+ PatientSessionAuthMixin,
1123
+ {},
1124
+ session_headers("abc123", "Staff"),
1125
+ [
1126
+ JSONResponse(
1127
+ content={"error": "Provided credentials are invalid"},
1128
+ status_code=HTTPStatus.UNAUTHORIZED,
1129
+ ).apply()
1130
+ ],
1131
+ ),
1082
1132
  ],
1083
1133
  ids=[
1084
1134
  "basic valid",
@@ -1087,6 +1137,10 @@ def test_authentication_exception(
1087
1137
  "API key valid",
1088
1138
  "API key invalid",
1089
1139
  "API key missing secret",
1140
+ "Staff session valid",
1141
+ "Staff session invalid",
1142
+ "Patient session valid",
1143
+ "Patient session invalid",
1090
1144
  ],
1091
1145
  )
1092
1146
  def test_authentication_mixins(
@@ -9,3 +9,4 @@ class CanvasUser(models.Model):
9
9
  db_table = "canvas_sdk_data_api_auth_user_001"
10
10
 
11
11
  dbid = models.BigIntegerField(db_column="dbid", primary_key=True)
12
+ email = models.CharField()
@@ -2,6 +2,8 @@ import logging
2
2
  import os
3
3
  from typing import Any
4
4
 
5
+ import redis
6
+
5
7
  from pubsub.pubsub import Publisher
6
8
 
7
9
 
@@ -15,7 +17,11 @@ class PubSubLogHandler(logging.Handler):
15
17
  def emit(self, record: Any) -> None:
16
18
  """Publishes the log message to the pub/sub channel."""
17
19
  message = self.format(record)
18
- self.publisher.publish(message)
20
+
21
+ try:
22
+ self.publisher.publish(message)
23
+ except redis.ConnectionError as e:
24
+ print(f"PubSubLogHandler: failed to log message due to redis error: {e}")
19
25
 
20
26
 
21
27
  class PluginLogger:
@@ -11,6 +11,7 @@ from urllib import parse
11
11
 
12
12
  import psycopg
13
13
  import requests
14
+ import sentry_sdk
14
15
  from psycopg import Connection
15
16
  from psycopg.rows import dict_row
16
17
 
@@ -149,9 +150,11 @@ def install_plugin(plugin_name: str, attributes: PluginAttributes) -> None:
149
150
  extract_plugin(plugin_file_path, plugin_installation_path)
150
151
 
151
152
  install_plugin_secrets(plugin_name=plugin_name, secrets=attributes["secrets"])
152
- except Exception as ex:
153
+ except Exception as e:
153
154
  log.error(f'Failed to install plugin "{plugin_name}", version {attributes["version"]}')
154
- raise PluginInstallationError() from ex
155
+ sentry_sdk.capture_exception(e)
156
+
157
+ raise PluginInstallationError() from e
155
158
 
156
159
 
157
160
  def extract_plugin(plugin_file_path: Path, plugin_installation_path: Path) -> None:
@@ -166,9 +169,11 @@ def extract_plugin(plugin_file_path: Path, plugin_installation_path: Path) -> No
166
169
  with open(plugin_file_path, "rb") as file:
167
170
  archive = tarfile.TarFile.open(fileobj=file)
168
171
  archive.extractall(plugin_installation_path, filter="data")
169
- except tarfile.ReadError as ex:
172
+ except tarfile.ReadError as e:
170
173
  log.error(f"Unreadable tar archive: '{plugin_file_path}'")
171
- raise InvalidPluginFormat from ex
174
+ sentry_sdk.capture_exception(e)
175
+
176
+ raise InvalidPluginFormat from e
172
177
  else:
173
178
  log.error(f"Unsupported file format: '{plugin_file_path}'")
174
179
  raise InvalidPluginFormat
@@ -225,12 +230,16 @@ def install_plugins() -> None:
225
230
  for plugin_name, attributes in enabled_plugins().items():
226
231
  try:
227
232
  install_plugin(plugin_name, attributes)
228
- except PluginInstallationError:
233
+ except PluginInstallationError as e:
229
234
  disable_plugin(plugin_name)
235
+
230
236
  log.error(
231
237
  f'Installation failed for plugin "{plugin_name}", version {attributes["version"]};'
232
238
  " the plugin has been disabled"
233
239
  )
240
+
241
+ sentry_sdk.capture_exception(e)
242
+
234
243
  continue
235
244
 
236
245
  return None