canvas 0.10.1__tar.gz → 0.11.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.
- {canvas-0.10.1 → canvas-0.11.0}/PKG-INFO +3 -2
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/plugin/plugin.py +11 -4
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/protocols/my_protocol.py +4 -2
- canvas-0.11.0/canvas_generated/messages/effects_pb2.py +28 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_generated/messages/effects_pb2.pyi +6 -0
- canvas-0.11.0/canvas_generated/messages/events_pb2.py +31 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_generated/messages/events_pb2.pyi +4 -2
- canvas-0.11.0/canvas_sdk/effects/surescripts/surescripts_messages.py +93 -0
- canvas-0.11.0/canvas_sdk/events/__init__.py +6 -0
- canvas-0.11.0/canvas_sdk/events/base.py +50 -0
- canvas-0.11.0/canvas_sdk/handlers/base.py +45 -0
- canvas-0.11.0/canvas_sdk/models/__init__.py +7 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/plugin_runner.py +50 -6
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/test_plugin_runner.py +3 -3
- {canvas-0.10.1 → canvas-0.11.0}/pyproject.toml +4 -3
- canvas-0.10.1/canvas_generated/messages/effects_pb2.py +0 -28
- canvas-0.10.1/canvas_generated/messages/events_pb2.py +0 -31
- canvas-0.10.1/canvas_sdk/events/__init__.py +0 -3
- canvas-0.10.1/canvas_sdk/handlers/base.py +0 -29
- {canvas-0.10.1 → canvas-0.11.0}/README.md +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/auth/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/auth/tests.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/auth/utils.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/emit.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/ALLERGY_INTOLERANCE_CREATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/ALLERGY_INTOLERANCE_UPDATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CANCELED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CHECKED_IN.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CREATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_NO_SHOWED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_RESCHEDULED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_RESTORED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_UPDATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__CONDITION_SELECTED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__POST_COMMIT.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__POST_ORIGINATE.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__POST_UPDATE.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__PRE_COMMIT.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__PRE_ORIGINATE.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__PRE_UPDATE.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/BILLING_LINE_ITEM_CREATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/BILLING_LINE_ITEM_UPDATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/CONDITION_ASSESSED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/CONDITION_CREATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/CONDITION_UPDATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/CRON.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/ENCOUNTER_CREATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/ENCOUNTER_UPDATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_CREATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_STATEMENT_CREATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_STATEMENT_UPDATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_UPDATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/INTERVIEW_CREATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/INTERVIEW_UPDATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/LAB_ORDER_CREATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/LAB_ORDER_UPDATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_LIST_ITEM_CREATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_LIST_ITEM_UPDATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__POST_COMMIT.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__POST_ORIGINATE.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__POST_UPDATE.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__PRE_COMMIT.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__PRE_ORIGINATE.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__PRE_UPDATE.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT__MEDICATION__POST_SEARCH.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/PATIENT_CREATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/PATIENT_UPDATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/PLAN_COMMAND__POST_ORIGINATE.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/PLAN_COMMAND__PRE_ORIGINATE.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__POST_COMMIT.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__POST_ORIGINATE.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__POST_UPDATE.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__PRE_COMMIT.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__PRE_ORIGINATE.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__PRE_UPDATE.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE__QUESTIONNAIRE__POST_SEARCH.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/TASK_COMMENT_CREATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/TASK_CREATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/TASK_UPDATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/VITAL_SIGN_CREATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/emit/event_fixtures/VITAL_SIGN_UPDATED.ndjson +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/logs/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/logs/logs.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/plugin/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/plugin/tests.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/run_plugins/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/apps/run_plugins/run_plugins.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/conftest.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/main.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/templates/plugins/default/cookiecutter.json +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/CANVAS_MANIFEST.json +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/README.md +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/protocols/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/tests.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/utils/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/utils/context/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/utils/context/context.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/utils/context/tests.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/utils/print/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/utils/print/print.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/utils/print/tests.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/utils/urls/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/utils/urls/tests.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/utils/urls/urls.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/utils/validators/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/utils/validators/manifest_schema.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/utils/validators/tests.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_cli/utils/validators/validators.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_generated/messages/effects_pb2_grpc.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_generated/messages/events_pb2_grpc.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_generated/messages/plugins_pb2.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_generated/messages/plugins_pb2.pyi +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_generated/messages/plugins_pb2_grpc.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_generated/services/plugin_runner_pb2.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_generated/services/plugin_runner_pb2.pyi +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_generated/services/plugin_runner_pb2_grpc.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/base.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/base.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/allergy.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/assess.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/close_goal.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/diagnose.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/family_history.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/goal.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/history_present_illness.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/instruct.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/lab_order.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/medical_history.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/medication_statement.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/past_surgical_history.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/perform.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/plan.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/prescribe.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/questionnaire.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/reason_for_visit.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/refill.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/remove_allergy.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/stop_medication.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/task.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/update_diagnosis.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/update_goal.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/commands/vitals.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/constants.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/tests/protocol/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/tests/protocol/tests.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/tests/schema/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/tests/schema/tests.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/tests/test_utils.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/tests/unit/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/commands/tests/unit/tests.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/effects/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/effects/banner_alert/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/effects/banner_alert/add_banner_alert.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/effects/banner_alert/remove_banner_alert.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/effects/banner_alert/tests.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/effects/base.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/effects/patient_chart_summary_configuration.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/effects/patient_profile_configuration.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/effects/protocol_card/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/effects/protocol_card/protocol_card.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/effects/protocol_card/tests.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/effects/task/task.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/handlers/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/handlers/cron_task.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/protocols/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/protocols/base.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/protocols/clinical_quality_measure.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/protocols/timeframe.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/tests/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/utils/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/utils/db.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/utils/http.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/utils/stats.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/utils/tests.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/allergy_intolerance.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/base.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/billing.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/command.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/common.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/condition.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/detected_issue.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/device.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/imaging.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/lab.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/medication.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/note.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/observation.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/patient.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/protocol_override.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/questionnaire.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/staff.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/task.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/v1/data/user.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/custom.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/tests/test_value_sets.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/adverse_event.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/allergy.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/assessment.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/communication.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/condition.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/device.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/diagnostic_study.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/encounter.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/immunization.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/individual_characteristic.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/intervention.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/laboratory_test.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/medication.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/physical_exam.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/procedure.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/v2022/symptom.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/value_set/value_set.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/canvas_sdk/views/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/logger/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/logger/logger.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/authentication.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/plugin_synchronizer.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/sandbox.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/data/plugins/.gitkeep +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/example_plugin/CANVAS_MANIFEST.json +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/example_plugin/README.md +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/example_plugin/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/example_plugin/protocols/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/example_plugin/protocols/my_protocol.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/CANVAS_MANIFEST.json +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/README.md +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/other_module/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/other_module/base.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/protocols/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/protocols/my_protocol.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/CANVAS_MANIFEST.json +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/README.md +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/other_module/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/other_module/base.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/protocols/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/protocols/my_protocol.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/CANVAS_MANIFEST.json +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/README.md +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/other_module/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/other_module/base.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/protocols/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/protocols/my_protocol.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/CANVAS_MANIFEST.json +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/README.md +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/other_module/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/other_module/base.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/protocols/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/protocols/my_protocol.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/plugin_runner/tests/test_sandbox.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/pubsub/__init__.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/pubsub/pubsub.py +0 -0
- {canvas-0.10.1 → canvas-0.11.0}/settings.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: canvas
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.11.0
|
|
4
4
|
Summary: SDK to customize event-driven actions in your Canvas instance
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: Canvas Team
|
|
@@ -12,6 +12,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
13
|
Requires-Dist: cookiecutter
|
|
14
14
|
Requires-Dist: cron-converter (>=1.2.1,<2.0.0)
|
|
15
|
+
Requires-Dist: deprecation (>=2.1.0,<3.0.0)
|
|
15
16
|
Requires-Dist: django (>=5.1.1,<6.0.0)
|
|
16
17
|
Requires-Dist: django-stubs[compatible-mypy] (>=5.1.1,<6.0.0)
|
|
17
18
|
Requires-Dist: django-timezone-utils (>=0.15.0,<0.16.0)
|
|
@@ -23,7 +24,7 @@ Requires-Dist: keyring
|
|
|
23
24
|
Requires-Dist: protobuf (>=4.25.3,<5.0.0)
|
|
24
25
|
Requires-Dist: psycopg[binary] (>=3.2.2,<4.0.0)
|
|
25
26
|
Requires-Dist: pydantic (>=2.6.1,<3.0.0)
|
|
26
|
-
Requires-Dist: pyjwt (==2.10.
|
|
27
|
+
Requires-Dist: pyjwt (==2.10.1)
|
|
27
28
|
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
|
|
28
29
|
Requires-Dist: rapidfuzz (>=3.10.1,<4.0.0)
|
|
29
30
|
Requires-Dist: redis (>=5.0.4,<6.0.0)
|
|
@@ -40,14 +40,20 @@ def validate_package(package: Path) -> Path:
|
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
def _build_package(package: Path) -> Path:
|
|
43
|
-
"""Runs `poetry build` on `package` and returns the built archive."""
|
|
43
|
+
"""Runs `poetry build` on `package` and returns the built archive, ignoring symlinks, hidden folders, and hidden files."""
|
|
44
|
+
package = package.resolve()
|
|
45
|
+
|
|
44
46
|
if not package.exists() or not package.is_dir():
|
|
45
47
|
raise typer.BadParameter(f"Couldn't build {package}, not a dir")
|
|
46
48
|
|
|
47
49
|
with tempfile.NamedTemporaryFile(suffix=".tar.gz", delete=False) as file:
|
|
48
50
|
with tarfile.open(file.name, "w:gz") as tar:
|
|
49
|
-
|
|
51
|
+
for root in package.rglob("*"):
|
|
52
|
+
# Skip hidden files and directories (starting with '.') and symlinks
|
|
53
|
+
if any(part.startswith(".") for part in root.parts) or root.is_symlink():
|
|
54
|
+
continue
|
|
50
55
|
|
|
56
|
+
tar.add(root, arcname=root.relative_to(package))
|
|
51
57
|
return Path(file.name)
|
|
52
58
|
|
|
53
59
|
|
|
@@ -197,11 +203,12 @@ def install(
|
|
|
197
203
|
if r.status_code == requests.codes.created:
|
|
198
204
|
print(f"Plugin {plugin_name} successfully installed!")
|
|
199
205
|
|
|
200
|
-
# If we got a
|
|
206
|
+
# If we got a conflict, means there's a duplicate plugin and install can't handle that.
|
|
201
207
|
# So we need to get the plugin-name from the package and call `update` directly
|
|
202
|
-
elif r.status_code == requests.codes.
|
|
208
|
+
elif r.status_code == requests.codes.conflict and (
|
|
203
209
|
package_name := _get_name_from_metadata(host, token, built_package_path)
|
|
204
210
|
):
|
|
211
|
+
print(f"Plugin {package_name} already exists, updating instead...")
|
|
205
212
|
update(package_name, built_package_path, is_enabled=True, host=host)
|
|
206
213
|
else:
|
|
207
214
|
print(f"Status code {r.status_code}: {r.text}")
|
|
@@ -23,13 +23,15 @@ class Protocol(BaseProtocol):
|
|
|
23
23
|
# `self.event` is the event object that caused this method to be
|
|
24
24
|
# called.
|
|
25
25
|
#
|
|
26
|
-
# `self.target` is an identifier for the object that is the subject of
|
|
26
|
+
# `self.event.target.id` is an identifier for the object that is the subject of
|
|
27
27
|
# the event. In this case, it would be the identifier of the assess
|
|
28
28
|
# command. If this was a patient create event, it would be the
|
|
29
29
|
# identifier of the patient. If this was a task update event, it would
|
|
30
30
|
# be the identifier of the task. Etc, etc.
|
|
31
|
+
# If the targeted model is already supported by the SDK,
|
|
32
|
+
# you can retrieve the instance using `self.event.target.instance`
|
|
31
33
|
#
|
|
32
|
-
# `self.context` is a python dictionary of additional data that was
|
|
34
|
+
# `self.event.context` is a python dictionary of additional data that was
|
|
33
35
|
# given with the event. The information given here depends on the
|
|
34
36
|
# event type.
|
|
35
37
|
#
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# source: canvas_generated/messages/effects.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
|
+
|
|
16
|
+
|
|
17
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'canvas_generated/messages/effects.proto\x12\x06\x63\x61nvas\"c\n\x06\x45\x66\x66\x65\x63t\x12 \n\x04type\x18\x01 \x01(\x0e\x32\x12.canvas.EffectType\x12\x0f\n\x07payload\x18\x02 \x01(\t\x12\x13\n\x0bplugin_name\x18\x03 \x01(\t\x12\x11\n\tclassname\x18\x04 \x01(\t*\xbc#\n\nEffectType\x12\x12\n\x0eUNKNOWN_EFFECT\x10\x00\x12\x07\n\x03LOG\x10\x01\x12\x14\n\x10\x41\x44\x44_PLAN_COMMAND\x10\x02\x12\x1f\n\x1b\x41UTOCOMPLETE_SEARCH_RESULTS\x10\x03\x12\x14\n\x10\x41\x44\x44_BANNER_ALERT\x10\x04\x12\x17\n\x13REMOVE_BANNER_ALERT\x10\x05\x12\x1c\n\x18ORIGINATE_ASSESS_COMMAND\x10\x06\x12\x17\n\x13\x45\x44IT_ASSESS_COMMAND\x10\x07\x12\x19\n\x15\x44\x45LETE_ASSESS_COMMAND\x10\x08\x12\x19\n\x15\x43OMMIT_ASSESS_COMMAND\x10\t\x12!\n\x1d\x45NTER_IN_ERROR_ASSESS_COMMAND\x10\n\x12\x1e\n\x1aORIGINATE_DIAGNOSE_COMMAND\x10\x0b\x12\x19\n\x15\x45\x44IT_DIAGNOSE_COMMAND\x10\x0c\x12\x1b\n\x17\x44\x45LETE_DIAGNOSE_COMMAND\x10\r\x12\x1b\n\x17\x43OMMIT_DIAGNOSE_COMMAND\x10\x0e\x12#\n\x1f\x45NTER_IN_ERROR_DIAGNOSE_COMMAND\x10\x0f\x12\x1a\n\x16ORIGINATE_GOAL_COMMAND\x10\x10\x12\x15\n\x11\x45\x44IT_GOAL_COMMAND\x10\x11\x12\x17\n\x13\x44\x45LETE_GOAL_COMMAND\x10\x12\x12\x17\n\x13\x43OMMIT_GOAL_COMMAND\x10\x13\x12\x1f\n\x1b\x45NTER_IN_ERROR_GOAL_COMMAND\x10\x14\x12\x19\n\x15ORIGINATE_HPI_COMMAND\x10\x15\x12\x14\n\x10\x45\x44IT_HPI_COMMAND\x10\x16\x12\x16\n\x12\x44\x45LETE_HPI_COMMAND\x10\x17\x12\x16\n\x12\x43OMMIT_HPI_COMMAND\x10\x18\x12\x1e\n\x1a\x45NTER_IN_ERROR_HPI_COMMAND\x10\x19\x12*\n&ORIGINATE_MEDICATION_STATEMENT_COMMAND\x10\x1a\x12%\n!EDIT_MEDICATION_STATEMENT_COMMAND\x10\x1b\x12\'\n#DELETE_MEDICATION_STATEMENT_COMMAND\x10\x1c\x12\'\n#COMMIT_MEDICATION_STATEMENT_COMMAND\x10\x1d\x12/\n+ENTER_IN_ERROR_MEDICATION_STATEMENT_COMMAND\x10\x1e\x12\x1a\n\x16ORIGINATE_PLAN_COMMAND\x10\x1f\x12\x15\n\x11\x45\x44IT_PLAN_COMMAND\x10 \x12\x17\n\x13\x44\x45LETE_PLAN_COMMAND\x10!\x12\x17\n\x13\x43OMMIT_PLAN_COMMAND\x10\"\x12\x1f\n\x1b\x45NTER_IN_ERROR_PLAN_COMMAND\x10#\x12\x1f\n\x1bORIGINATE_PRESCRIBE_COMMAND\x10$\x12\x1a\n\x16\x45\x44IT_PRESCRIBE_COMMAND\x10%\x12\x1c\n\x18\x44\x45LETE_PRESCRIBE_COMMAND\x10&\x12\x1c\n\x18\x43OMMIT_PRESCRIBE_COMMAND\x10\'\x12$\n ENTER_IN_ERROR_PRESCRIBE_COMMAND\x10(\x12#\n\x1fORIGINATE_QUESTIONNAIRE_COMMAND\x10)\x12\x1e\n\x1a\x45\x44IT_QUESTIONNAIRE_COMMAND\x10*\x12 \n\x1c\x44\x45LETE_QUESTIONNAIRE_COMMAND\x10+\x12 \n\x1c\x43OMMIT_QUESTIONNAIRE_COMMAND\x10,\x12(\n$ENTER_IN_ERROR_QUESTIONNAIRE_COMMAND\x10-\x12&\n\"ORIGINATE_REASON_FOR_VISIT_COMMAND\x10.\x12!\n\x1d\x45\x44IT_REASON_FOR_VISIT_COMMAND\x10/\x12#\n\x1f\x44\x45LETE_REASON_FOR_VISIT_COMMAND\x10\x30\x12#\n\x1f\x43OMMIT_REASON_FOR_VISIT_COMMAND\x10\x31\x12+\n\'ENTER_IN_ERROR_REASON_FOR_VISIT_COMMAND\x10\x32\x12%\n!ORIGINATE_STOP_MEDICATION_COMMAND\x10\x33\x12 \n\x1c\x45\x44IT_STOP_MEDICATION_COMMAND\x10\x34\x12\"\n\x1e\x44\x45LETE_STOP_MEDICATION_COMMAND\x10\x35\x12\"\n\x1e\x43OMMIT_STOP_MEDICATION_COMMAND\x10\x36\x12*\n&ENTER_IN_ERROR_STOP_MEDICATION_COMMAND\x10\x37\x12!\n\x1dORIGINATE_UPDATE_GOAL_COMMAND\x10\x38\x12\x1c\n\x18\x45\x44IT_UPDATE_GOAL_COMMAND\x10\x39\x12\x1e\n\x1a\x44\x45LETE_UPDATE_GOAL_COMMAND\x10:\x12\x1e\n\x1a\x43OMMIT_UPDATE_GOAL_COMMAND\x10;\x12&\n\"ENTER_IN_ERROR_UPDATE_GOAL_COMMAND\x10<\x12\x1d\n\x19ORIGINATE_PERFORM_COMMAND\x10=\x12\x18\n\x14\x45\x44IT_PERFORM_COMMAND\x10>\x12\x1a\n\x16\x44\x45LETE_PERFORM_COMMAND\x10?\x12\x1a\n\x16\x43OMMIT_PERFORM_COMMAND\x10@\x12\"\n\x1e\x45NTER_IN_ERROR_PERFORM_COMMAND\x10\x41\x12\x1e\n\x1aORIGINATE_INSTRUCT_COMMAND\x10\x42\x12\x19\n\x15\x45\x44IT_INSTRUCT_COMMAND\x10\x43\x12\x1b\n\x17\x44\x45LETE_INSTRUCT_COMMAND\x10\x44\x12\x1b\n\x17\x43OMMIT_INSTRUCT_COMMAND\x10\x45\x12#\n\x1f\x45NTER_IN_ERROR_INSTRUCT_COMMAND\x10\x46\x12\x1f\n\x1bORIGINATE_LAB_ORDER_COMMAND\x10G\x12\x1a\n\x16\x45\x44IT_LAB_ORDER_COMMAND\x10H\x12\x1c\n\x18\x44\x45LETE_LAB_ORDER_COMMAND\x10I\x12\x1c\n\x18\x43OMMIT_LAB_ORDER_COMMAND\x10J\x12$\n ENTER_IN_ERROR_LAB_ORDER_COMMAND\x10K\x12$\n ORIGINATE_FAMILY_HISTORY_COMMAND\x10L\x12\x1f\n\x1b\x45\x44IT_FAMILY_HISTORY_COMMAND\x10M\x12!\n\x1d\x44\x45LETE_FAMILY_HISTORY_COMMAND\x10N\x12!\n\x1d\x43OMMIT_FAMILY_HISTORY_COMMAND\x10O\x12)\n%ENTER_IN_ERROR_FAMILY_HISTORY_COMMAND\x10P\x12\x1d\n\x19ORIGINATE_ALLERGY_COMMAND\x10Q\x12\x18\n\x14\x45\x44IT_ALLERGY_COMMAND\x10R\x12\x1a\n\x16\x44\x45LETE_ALLERGY_COMMAND\x10S\x12\x1a\n\x16\x43OMMIT_ALLERGY_COMMAND\x10T\x12\"\n\x1e\x45NTER_IN_ERROR_ALLERGY_COMMAND\x10U\x12$\n ORIGINATE_REMOVE_ALLERGY_COMMAND\x10V\x12\x1f\n\x1b\x45\x44IT_REMOVE_ALLERGY_COMMAND\x10W\x12!\n\x1d\x44\x45LETE_REMOVE_ALLERGY_COMMAND\x10X\x12!\n\x1d\x43OMMIT_REMOVE_ALLERGY_COMMAND\x10Y\x12)\n%ENTER_IN_ERROR_REMOVE_ALLERGY_COMMAND\x10Z\x12&\n\"ORIGINATE_SURGICAL_HISTORY_COMMAND\x10[\x12!\n\x1d\x45\x44IT_SURGICAL_HISTORY_COMMAND\x10\\\x12#\n\x1f\x44\x45LETE_SURGICAL_HISTORY_COMMAND\x10]\x12#\n\x1f\x43OMMIT_SURGICAL_HISTORY_COMMAND\x10^\x12+\n\'ENTER_IN_ERROR_SURGICAL_HISTORY_COMMAND\x10_\x12\x0f\n\x0b\x43REATE_TASK\x10\x64\x12\x0f\n\x0bUPDATE_TASK\x10\x65\x12\x17\n\x13\x43REATE_TASK_COMMENT\x10\x66\x12%\n!ORIGINATE_MEDICAL_HISTORY_COMMAND\x10g\x12 \n\x1c\x45\x44IT_MEDICAL_HISTORY_COMMAND\x10h\x12\"\n\x1e\x44\x45LETE_MEDICAL_HISTORY_COMMAND\x10i\x12\"\n\x1e\x43OMMIT_MEDICAL_HISTORY_COMMAND\x10j\x12*\n&ENTER_IN_ERROR_MEDICAL_HISTORY_COMMAND\x10k\x12\x1f\n\x1b\x41\x44\x44_OR_UPDATE_PROTOCOL_CARD\x10n\x12\x1b\n\x16ORIGINATE_TASK_COMMAND\x10\x85\x01\x12\x16\n\x11\x45\x44IT_TASK_COMMAND\x10\x86\x01\x12\x18\n\x13\x44\x45LETE_TASK_COMMAND\x10\x87\x01\x12\x18\n\x13\x43OMMIT_TASK_COMMAND\x10\x88\x01\x12 \n\x1b\x45NTER_IN_ERROR_TASK_COMMAND\x10\x89\x01\x12\x1c\n\x18ORIGINATE_REFILL_COMMAND\x10q\x12\x17\n\x13\x45\x44IT_REFILL_COMMAND\x10r\x12\x19\n\x15\x44\x45LETE_REFILL_COMMAND\x10s\x12\x19\n\x15\x43OMMIT_REFILL_COMMAND\x10t\x12!\n\x1d\x45NTER_IN_ERROR_REFILL_COMMAND\x10u\x12\x1c\n\x18ORIGINATE_VITALS_COMMAND\x10v\x12\x17\n\x13\x45\x44IT_VITALS_COMMAND\x10w\x12\x19\n\x15\x44\x45LETE_VITALS_COMMAND\x10x\x12\x19\n\x15\x43OMMIT_VITALS_COMMAND\x10y\x12!\n\x1d\x45NTER_IN_ERROR_VITALS_COMMAND\x10z\x12&\n\"ORIGINATE_UPDATE_DIAGNOSIS_COMMAND\x10{\x12!\n\x1d\x45\x44IT_UPDATE_DIAGNOSIS_COMMAND\x10|\x12#\n\x1f\x44\x45LETE_UPDATE_DIAGNOSIS_COMMAND\x10}\x12#\n\x1f\x43OMMIT_UPDATE_DIAGNOSIS_COMMAND\x10~\x12+\n\'ENTER_IN_ERROR_UPDATE_DIAGNOSIS_COMMAND\x10\x7f\x12!\n\x1cORIGINATE_CLOSE_GOAL_COMMAND\x10\x80\x01\x12\x1c\n\x17\x45\x44IT_CLOSE_GOAL_COMMAND\x10\x81\x01\x12\x1e\n\x19\x44\x45LETE_CLOSE_GOAL_COMMAND\x10\x82\x01\x12\x1e\n\x19\x43OMMIT_CLOSE_GOAL_COMMAND\x10\x83\x01\x12&\n!ENTER_IN_ERROR_CLOSE_GOAL_COMMAND\x10\x84\x01\x12-\n(ANNOTATE_PATIENT_CHART_CONDITION_RESULTS\x10\xc8\x01\x12%\n ANNOTATE_CLAIM_CONDITION_RESULTS\x10\xac\x02\x12(\n#SHOW_PATIENT_CHART_SUMMARY_SECTIONS\x10\x90\x03\x12\"\n\x1dSHOW_PATIENT_PROFILE_SECTIONS\x10\xf4\x03\x12\x37\n2PATIENT_PROFILE__ADD_PHARMACY__POST_SEARCH_RESULTS\x10\xf5\x03\x12)\n$SEND_SURESCRIPTS_ELIGIBILITY_REQUEST\x10\xd8\x04\x12\x30\n+SEND_SURESCRIPTS_MEDICATION_HISTORY_REQUEST\x10\xd9\x04\x12&\n!SEND_SURESCRIPTS_BENEFITS_REQUEST\x10\xda\x04\x62\x06proto3')
|
|
18
|
+
|
|
19
|
+
_globals = globals()
|
|
20
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
21
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'canvas_generated.messages.effects_pb2', _globals)
|
|
22
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
23
|
+
DESCRIPTOR._options = None
|
|
24
|
+
_globals['_EFFECTTYPE']._serialized_start=153
|
|
25
|
+
_globals['_EFFECTTYPE']._serialized_end=4693
|
|
26
|
+
_globals['_EFFECT']._serialized_start=51
|
|
27
|
+
_globals['_EFFECT']._serialized_end=150
|
|
28
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -142,6 +142,9 @@ class EffectType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
|
142
142
|
SHOW_PATIENT_CHART_SUMMARY_SECTIONS: _ClassVar[EffectType]
|
|
143
143
|
SHOW_PATIENT_PROFILE_SECTIONS: _ClassVar[EffectType]
|
|
144
144
|
PATIENT_PROFILE__ADD_PHARMACY__POST_SEARCH_RESULTS: _ClassVar[EffectType]
|
|
145
|
+
SEND_SURESCRIPTS_ELIGIBILITY_REQUEST: _ClassVar[EffectType]
|
|
146
|
+
SEND_SURESCRIPTS_MEDICATION_HISTORY_REQUEST: _ClassVar[EffectType]
|
|
147
|
+
SEND_SURESCRIPTS_BENEFITS_REQUEST: _ClassVar[EffectType]
|
|
145
148
|
UNKNOWN_EFFECT: EffectType
|
|
146
149
|
LOG: EffectType
|
|
147
150
|
ADD_PLAN_COMMAND: EffectType
|
|
@@ -277,6 +280,9 @@ ANNOTATE_CLAIM_CONDITION_RESULTS: EffectType
|
|
|
277
280
|
SHOW_PATIENT_CHART_SUMMARY_SECTIONS: EffectType
|
|
278
281
|
SHOW_PATIENT_PROFILE_SECTIONS: EffectType
|
|
279
282
|
PATIENT_PROFILE__ADD_PHARMACY__POST_SEARCH_RESULTS: EffectType
|
|
283
|
+
SEND_SURESCRIPTS_ELIGIBILITY_REQUEST: EffectType
|
|
284
|
+
SEND_SURESCRIPTS_MEDICATION_HISTORY_REQUEST: EffectType
|
|
285
|
+
SEND_SURESCRIPTS_BENEFITS_REQUEST: EffectType
|
|
280
286
|
|
|
281
287
|
class Effect(_message.Message):
|
|
282
288
|
__slots__ = ("type", "payload", "plugin_name", "classname")
|
|
@@ -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*\xc8\xd2\x01\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\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\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\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\x1e\x41SSESS__CONDITION__POST_SEARCH\x10\xe4\x36\x12\"\n\x1d\x41SSESS__CONDITION__PRE_SEARCH\x10\xe5\x36\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\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\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\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&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_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\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\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=27208
|
|
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)
|
|
@@ -1301,14 +1301,16 @@ PLUGIN_CREATED: EventType
|
|
|
1301
1301
|
PLUGIN_UPDATED: EventType
|
|
1302
1302
|
|
|
1303
1303
|
class Event(_message.Message):
|
|
1304
|
-
__slots__ = ("type", "target", "context")
|
|
1304
|
+
__slots__ = ("type", "target", "context", "target_type")
|
|
1305
1305
|
TYPE_FIELD_NUMBER: _ClassVar[int]
|
|
1306
1306
|
TARGET_FIELD_NUMBER: _ClassVar[int]
|
|
1307
1307
|
CONTEXT_FIELD_NUMBER: _ClassVar[int]
|
|
1308
|
+
TARGET_TYPE_FIELD_NUMBER: _ClassVar[int]
|
|
1308
1309
|
type: EventType
|
|
1309
1310
|
target: str
|
|
1310
1311
|
context: str
|
|
1311
|
-
|
|
1312
|
+
target_type: str
|
|
1313
|
+
def __init__(self, type: _Optional[_Union[EventType, str]] = ..., target: _Optional[str] = ..., context: _Optional[str] = ..., target_type: _Optional[str] = ...) -> None: ...
|
|
1312
1314
|
|
|
1313
1315
|
class EventResponse(_message.Message):
|
|
1314
1316
|
__slots__ = ("success", "effects")
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
|
|
3
|
+
from canvas_sdk.effects.base import EffectType, _BaseEffect
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class SendSurescriptsEligibilityRequestEffect(_BaseEffect):
|
|
7
|
+
"""
|
|
8
|
+
An Effect that will send a Surescripts eligibility request.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
class Meta:
|
|
12
|
+
effect_type = EffectType.SEND_SURESCRIPTS_ELIGIBILITY_REQUEST
|
|
13
|
+
apply_required_fields = ("patient_id", "staff_id")
|
|
14
|
+
|
|
15
|
+
patient_id: str | None = None
|
|
16
|
+
staff_id: str | None = None
|
|
17
|
+
|
|
18
|
+
@property
|
|
19
|
+
def values(self) -> dict[str, Any]:
|
|
20
|
+
"""Eligibility Request values."""
|
|
21
|
+
return {
|
|
22
|
+
"patient_id": self.patient_id,
|
|
23
|
+
"staff_id": self.staff_id,
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@property
|
|
27
|
+
def effect_payload(self) -> dict[str, Any]:
|
|
28
|
+
"""Eligibility Request effect payload."""
|
|
29
|
+
return self.values
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class SendSurescriptsMedicationHistoryRequestEffect(_BaseEffect):
|
|
33
|
+
"""
|
|
34
|
+
An effect that sends a Surescripts Medication History Request.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
class Meta:
|
|
38
|
+
effect_type = EffectType.SEND_SURESCRIPTS_MEDICATION_HISTORY_REQUEST
|
|
39
|
+
apply_required_fields = ("patient_id", "staff_id")
|
|
40
|
+
|
|
41
|
+
patient_id: str | None = None
|
|
42
|
+
staff_id: str | None = None
|
|
43
|
+
|
|
44
|
+
@property
|
|
45
|
+
def values(self) -> dict[str, Any]:
|
|
46
|
+
"""Medication History Request values."""
|
|
47
|
+
return {
|
|
48
|
+
"patient_id": self.patient_id,
|
|
49
|
+
"staff_id": self.staff_id,
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@property
|
|
53
|
+
def effect_payload(self) -> dict[str, Any]:
|
|
54
|
+
"""Medication History Request effect payload."""
|
|
55
|
+
return self.values
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class SendSurescriptsBenefitsRequestEffect(_BaseEffect):
|
|
59
|
+
"""
|
|
60
|
+
An effect that sends a Surescripts Benefits Request.
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
class Meta:
|
|
64
|
+
effect_type = EffectType.SEND_SURESCRIPTS_BENEFITS_REQUEST
|
|
65
|
+
apply_required_fields = (
|
|
66
|
+
"patient_id",
|
|
67
|
+
"staff_id",
|
|
68
|
+
"medication_description",
|
|
69
|
+
"medication_ndc",
|
|
70
|
+
"plan",
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
patient_id: str | None = None
|
|
74
|
+
staff_id: str | None = None
|
|
75
|
+
medication_description: str | None = None
|
|
76
|
+
medication_ndc: str | None = None
|
|
77
|
+
plan: str | None = None
|
|
78
|
+
|
|
79
|
+
@property
|
|
80
|
+
def values(self) -> dict[str, Any]:
|
|
81
|
+
"""Benefits Request values."""
|
|
82
|
+
return {
|
|
83
|
+
"patient_id": self.patient_id,
|
|
84
|
+
"staff_id": self.staff_id,
|
|
85
|
+
"medication_description": self.medication_description,
|
|
86
|
+
"medication_ndc": self.medication_ndc,
|
|
87
|
+
"plan": self.plan,
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@property
|
|
91
|
+
def effect_payload(self) -> dict[str, Any]:
|
|
92
|
+
"""Benefits Request effect payload."""
|
|
93
|
+
return self.values
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import dataclasses
|
|
2
|
+
import json
|
|
3
|
+
from functools import cached_property
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
from django.apps import apps
|
|
7
|
+
from django.db import models
|
|
8
|
+
|
|
9
|
+
from canvas_generated.messages.events_pb2 import Event as EventRequest
|
|
10
|
+
from canvas_generated.messages.events_pb2 import EventType
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@dataclasses.dataclass
|
|
14
|
+
class TargetType:
|
|
15
|
+
"""The target of the event."""
|
|
16
|
+
|
|
17
|
+
id: str
|
|
18
|
+
type: type[models.Model] | None
|
|
19
|
+
|
|
20
|
+
@cached_property
|
|
21
|
+
def instance(self) -> models.Model | None:
|
|
22
|
+
"""Return the instance of the target."""
|
|
23
|
+
return self.type._default_manager.filter(id=self.id).first() if self.type else None
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class Event:
|
|
27
|
+
"""An event that occurs in the Canvas environment."""
|
|
28
|
+
|
|
29
|
+
name: str
|
|
30
|
+
type: EventType
|
|
31
|
+
context: dict[str, Any]
|
|
32
|
+
target: TargetType
|
|
33
|
+
|
|
34
|
+
def __init__(self, event_request: EventRequest) -> None:
|
|
35
|
+
try:
|
|
36
|
+
target_model = apps.get_model(
|
|
37
|
+
app_label="canvas_sdk", model_name=event_request.target_type
|
|
38
|
+
)
|
|
39
|
+
except LookupError:
|
|
40
|
+
target_model = None
|
|
41
|
+
|
|
42
|
+
try:
|
|
43
|
+
context = json.loads(event_request.context)
|
|
44
|
+
except ValueError:
|
|
45
|
+
context = {}
|
|
46
|
+
|
|
47
|
+
self.type = event_request.type
|
|
48
|
+
self.name = EventType.Name(self.type)
|
|
49
|
+
self.context = context
|
|
50
|
+
self.target = TargetType(id=event_request.target, type=target_model)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import importlib.metadata
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
import deprecation
|
|
5
|
+
|
|
6
|
+
from canvas_sdk.events import Event
|
|
7
|
+
|
|
8
|
+
version = importlib.metadata.version("canvas")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class BaseHandler:
|
|
12
|
+
"""The class that all handlers inherit from."""
|
|
13
|
+
|
|
14
|
+
secrets: dict[str, Any]
|
|
15
|
+
event: Event
|
|
16
|
+
|
|
17
|
+
def __init__(
|
|
18
|
+
self,
|
|
19
|
+
event: Event,
|
|
20
|
+
secrets: dict[str, Any] | None = None,
|
|
21
|
+
) -> None:
|
|
22
|
+
self.event = event
|
|
23
|
+
self.secrets = secrets or {}
|
|
24
|
+
|
|
25
|
+
@property
|
|
26
|
+
@deprecation.deprecated(
|
|
27
|
+
deprecated_in="0.11.0",
|
|
28
|
+
removed_in="1.0.0",
|
|
29
|
+
current_version=version,
|
|
30
|
+
details="Use 'event.context' directly instead",
|
|
31
|
+
)
|
|
32
|
+
def context(self) -> dict[str, Any]:
|
|
33
|
+
"""The context of the event."""
|
|
34
|
+
return self.event.context
|
|
35
|
+
|
|
36
|
+
@property
|
|
37
|
+
@deprecation.deprecated(
|
|
38
|
+
deprecated_in="0.11.0",
|
|
39
|
+
removed_in="1.0.0",
|
|
40
|
+
current_version=version,
|
|
41
|
+
details="Use 'event.target['id']' directly instead",
|
|
42
|
+
)
|
|
43
|
+
def target(self) -> str:
|
|
44
|
+
"""The target id of the event."""
|
|
45
|
+
return self.event.target.id
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# ruff: noqa
|
|
2
|
+
# register all models in the app so they can be used with apps.get_model()
|
|
3
|
+
from canvas_sdk.v1.data.command import Command
|
|
4
|
+
from canvas_sdk.v1.data.condition import Condition
|
|
5
|
+
from canvas_sdk.v1.data.note import Note
|
|
6
|
+
from canvas_sdk.v1.data.patient import Patient
|
|
7
|
+
from canvas_sdk.v1.data.user import CanvasUser
|
|
@@ -15,6 +15,7 @@ from typing import Any, TypedDict
|
|
|
15
15
|
import grpc
|
|
16
16
|
import statsd
|
|
17
17
|
|
|
18
|
+
from canvas_generated.messages.effects_pb2 import EffectType
|
|
18
19
|
from canvas_generated.messages.plugins_pb2 import (
|
|
19
20
|
ReloadPluginsRequest,
|
|
20
21
|
ReloadPluginsResponse,
|
|
@@ -24,7 +25,7 @@ from canvas_generated.services.plugin_runner_pb2_grpc import (
|
|
|
24
25
|
add_PluginRunnerServicer_to_server,
|
|
25
26
|
)
|
|
26
27
|
from canvas_sdk.effects import Effect
|
|
27
|
-
from canvas_sdk.events import Event, EventResponse, EventType
|
|
28
|
+
from canvas_sdk.events import Event, EventRequest, EventResponse, EventType
|
|
28
29
|
from canvas_sdk.protocols import ClinicalQualityMeasure
|
|
29
30
|
from canvas_sdk.utils.stats import get_duration_ms, tags_to_line_protocol
|
|
30
31
|
from logger import log
|
|
@@ -98,16 +99,17 @@ class PluginRunner(PluginRunnerServicer):
|
|
|
98
99
|
sandbox: Sandbox
|
|
99
100
|
|
|
100
101
|
async def HandleEvent(
|
|
101
|
-
self, request:
|
|
102
|
+
self, request: EventRequest, context: Any
|
|
102
103
|
) -> AsyncGenerator[EventResponse, None]:
|
|
103
104
|
"""This is invoked when an event comes in."""
|
|
104
105
|
event_start_time = time.time()
|
|
105
|
-
|
|
106
|
-
|
|
106
|
+
event = Event(request)
|
|
107
|
+
event_type = event.type
|
|
108
|
+
event_name = event.name
|
|
107
109
|
relevant_plugins = EVENT_PROTOCOL_MAP[event_name]
|
|
108
110
|
|
|
109
111
|
if event_type in [EventType.PLUGIN_CREATED, EventType.PLUGIN_UPDATED]:
|
|
110
|
-
plugin_name =
|
|
112
|
+
plugin_name = event.target.id
|
|
111
113
|
# filter only for the plugin(s) that were created/updated
|
|
112
114
|
relevant_plugins = [p for p in relevant_plugins if p.startswith(f"{plugin_name}:")]
|
|
113
115
|
|
|
@@ -122,7 +124,7 @@ class PluginRunner(PluginRunnerServicer):
|
|
|
122
124
|
secrets["graphql_jwt"] = token_for_plugin(plugin_name=plugin_name, audience="home")
|
|
123
125
|
|
|
124
126
|
try:
|
|
125
|
-
protocol = protocol_class(
|
|
127
|
+
protocol = protocol_class(event, secrets)
|
|
126
128
|
classname = (
|
|
127
129
|
protocol.__class__.__name__
|
|
128
130
|
if isinstance(protocol, ClinicalQualityMeasure)
|
|
@@ -140,6 +142,11 @@ class PluginRunner(PluginRunnerServicer):
|
|
|
140
142
|
)
|
|
141
143
|
for effect in _effects
|
|
142
144
|
]
|
|
145
|
+
|
|
146
|
+
effects = validate_effects(effects)
|
|
147
|
+
|
|
148
|
+
apply_effects_to_context(effects, event=event)
|
|
149
|
+
|
|
143
150
|
compute_duration = get_duration_ms(compute_start_time)
|
|
144
151
|
|
|
145
152
|
log.info(f"{plugin_name}.compute() completed ({compute_duration} ms)")
|
|
@@ -182,6 +189,43 @@ class PluginRunner(PluginRunnerServicer):
|
|
|
182
189
|
yield ReloadPluginsResponse(success=True)
|
|
183
190
|
|
|
184
191
|
|
|
192
|
+
def validate_effects(effects: list[Effect]) -> list[Effect]:
|
|
193
|
+
"""Validates the effects based on predefined rules.
|
|
194
|
+
Keeps only the first AUTOCOMPLETE_SEARCH_RESULTS effect and preserve all non-search-related effects.
|
|
195
|
+
"""
|
|
196
|
+
seen_autocomplete = False
|
|
197
|
+
validated_effects = []
|
|
198
|
+
|
|
199
|
+
for effect in effects:
|
|
200
|
+
if effect.type == EffectType.AUTOCOMPLETE_SEARCH_RESULTS:
|
|
201
|
+
if seen_autocomplete:
|
|
202
|
+
log.warning("Discarding additional AUTOCOMPLETE_SEARCH_RESULTS effect.")
|
|
203
|
+
continue
|
|
204
|
+
seen_autocomplete = True
|
|
205
|
+
validated_effects.append(effect)
|
|
206
|
+
|
|
207
|
+
return validated_effects
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
def apply_effects_to_context(effects: list[Effect], event: Event) -> Event:
|
|
211
|
+
"""Applies AUTOCOMPLETE_SEARCH_RESULTS effects to the event context.
|
|
212
|
+
If we are dealing with a search event, we need to update the context with the search results.
|
|
213
|
+
"""
|
|
214
|
+
event_name = event.name
|
|
215
|
+
|
|
216
|
+
# Skip if the event is not a search event
|
|
217
|
+
if not event_name.endswith("__PRE_SEARCH") and not event_name.endswith("__POST_SEARCH"):
|
|
218
|
+
return event
|
|
219
|
+
|
|
220
|
+
for effect in effects:
|
|
221
|
+
if effect.type == EffectType.AUTOCOMPLETE_SEARCH_RESULTS:
|
|
222
|
+
event.context["results"] = json.loads(effect.payload)
|
|
223
|
+
# Stop processing effects if we've found a AUTOCOMPLETE_SEARCH_RESULTS
|
|
224
|
+
break
|
|
225
|
+
|
|
226
|
+
return event
|
|
227
|
+
|
|
228
|
+
|
|
185
229
|
def handle_hup_cb(_signum: int, _frame: FrameType | None) -> None:
|
|
186
230
|
"""handle_hup_cb."""
|
|
187
231
|
log.info("Received SIGHUP, reloading plugins...")
|
|
@@ -7,7 +7,7 @@ import pytest
|
|
|
7
7
|
|
|
8
8
|
from canvas_generated.messages.effects_pb2 import EffectType
|
|
9
9
|
from canvas_generated.messages.plugins_pb2 import ReloadPluginsRequest
|
|
10
|
-
from canvas_sdk.events import
|
|
10
|
+
from canvas_sdk.events import EventRequest, EventType
|
|
11
11
|
from plugin_runner.plugin_runner import (
|
|
12
12
|
EVENT_PROTOCOL_MAP,
|
|
13
13
|
LOADED_PLUGINS,
|
|
@@ -91,7 +91,7 @@ async def test_load_plugins_with_plugin_that_imports_other_modules_within_plugin
|
|
|
91
91
|
|
|
92
92
|
result = [
|
|
93
93
|
response
|
|
94
|
-
async for response in plugin_runner.HandleEvent(
|
|
94
|
+
async for response in plugin_runner.HandleEvent(EventRequest(type=EventType.UNKNOWN), None)
|
|
95
95
|
]
|
|
96
96
|
|
|
97
97
|
assert len(result) == 1
|
|
@@ -160,7 +160,7 @@ async def test_handle_plugin_event_returns_expected_result(
|
|
|
160
160
|
"""Test that HandleEvent successfully calls the relevant plugins and returns the expected result."""
|
|
161
161
|
load_plugins()
|
|
162
162
|
|
|
163
|
-
event =
|
|
163
|
+
event = EventRequest(type=EventType.UNKNOWN)
|
|
164
164
|
|
|
165
165
|
result = []
|
|
166
166
|
async for response in plugin_runner.HandleEvent(event, None):
|
|
@@ -47,11 +47,12 @@ packages = [
|
|
|
47
47
|
{include = "settings.py"}
|
|
48
48
|
]
|
|
49
49
|
readme = "README.md"
|
|
50
|
-
version = "0.
|
|
50
|
+
version = "0.11.0"
|
|
51
51
|
|
|
52
52
|
[tool.poetry.dependencies]
|
|
53
53
|
cookiecutter = "*"
|
|
54
54
|
cron-converter = "^1.2.1"
|
|
55
|
+
deprecation = "^2.1.0"
|
|
55
56
|
django = "^5.1.1"
|
|
56
57
|
django-stubs = {extras = ["compatible-mypy"], version = "^5.1.1"}
|
|
57
58
|
django-timezone-utils = "^0.15.0"
|
|
@@ -63,7 +64,7 @@ keyring = "*"
|
|
|
63
64
|
protobuf = "^4.25.3"
|
|
64
65
|
psycopg = {extras = ["binary"], version = "^3.2.2"}
|
|
65
66
|
pydantic = "^2.6.1"
|
|
66
|
-
pyjwt = "2.10.
|
|
67
|
+
pyjwt = "2.10.1"
|
|
67
68
|
python = ">=3.11,<3.13"
|
|
68
69
|
python-dotenv = "^1.0.1"
|
|
69
70
|
rapidfuzz = "^3.10.1"
|
|
@@ -80,7 +81,7 @@ grpcio-tools = "^1.60.1"
|
|
|
80
81
|
mypy = "*"
|
|
81
82
|
pre-commit = "*"
|
|
82
83
|
pytest = "*"
|
|
83
|
-
pytest-asyncio = "
|
|
84
|
+
pytest-asyncio = ">=0.24,<0.26"
|
|
84
85
|
pytest-mock = "*"
|
|
85
86
|
python-semantic-release = "*"
|
|
86
87
|
requests-mock = "*"
|