canvas 0.43.0__tar.gz → 0.44.1__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.43.0 → canvas-0.44.1}/PKG-INFO +1 -2
- canvas-0.44.1/canvas_cli/apps/auth/storage.py +65 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/auth/utils.py +6 -42
- {canvas-0.43.0 → canvas-0.44.1}/canvas_generated/messages/effects_pb2.py +2 -2
- {canvas-0.43.0 → canvas-0.44.1}/canvas_generated/messages/effects_pb2.pyi +10 -0
- canvas-0.44.1/canvas_sdk/effects/note/appointment.py +233 -0
- canvas-0.44.1/canvas_sdk/effects/note/base.py +227 -0
- canvas-0.44.1/canvas_sdk/effects/note/note.py +138 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/__init__.py +17 -1
- canvas-0.44.1/canvas_sdk/v1/data/business_line.py +35 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/claim.py +7 -4
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/patient.py +17 -1
- canvas-0.44.1/canvas_sdk/v1/data/patient_consent.py +92 -0
- canvas-0.44.1/canvas_sdk/v1/data/payor_specific_charge.py +28 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/user.py +2 -0
- {canvas-0.43.0 → canvas-0.44.1}/protobufs/canvas_generated/messages/effects.proto +6 -0
- {canvas-0.43.0 → canvas-0.44.1}/pyproject.toml +2 -2
- canvas-0.43.0/canvas_sdk/effects/note/appointment.py +0 -148
- canvas-0.43.0/canvas_sdk/effects/note/base.py +0 -129
- canvas-0.43.0/canvas_sdk/effects/note/note.py +0 -79
- {canvas-0.43.0 → canvas-0.44.1}/.gitignore +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/README.md +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/auth/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/emit.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/ALLERGY_INTOLERANCE_CREATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/ALLERGY_INTOLERANCE_UPDATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CANCELED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CHECKED_IN.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CREATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_NO_SHOWED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_RESCHEDULED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_RESTORED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_UPDATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__CONDITION_SELECTED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__POST_COMMIT.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__POST_ORIGINATE.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__POST_UPDATE.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__PRE_COMMIT.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__PRE_ORIGINATE.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__PRE_UPDATE.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/BILLING_LINE_ITEM_CREATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/BILLING_LINE_ITEM_UPDATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/CONDITION_ASSESSED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/CONDITION_CREATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/CONDITION_UPDATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/CRON.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/ENCOUNTER_CREATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/ENCOUNTER_UPDATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_CREATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_STATEMENT_CREATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_STATEMENT_UPDATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_UPDATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/INTERVIEW_CREATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/INTERVIEW_UPDATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/LAB_ORDER_CREATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/LAB_ORDER_UPDATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_LIST_ITEM_CREATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_LIST_ITEM_UPDATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__POST_COMMIT.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__POST_ORIGINATE.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__POST_UPDATE.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__PRE_COMMIT.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__PRE_ORIGINATE.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__PRE_UPDATE.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT__MEDICATION__POST_SEARCH.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/PATIENT_CREATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/PATIENT_UPDATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/PLAN_COMMAND__POST_ORIGINATE.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/PLAN_COMMAND__PRE_ORIGINATE.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__POST_COMMIT.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__POST_ORIGINATE.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__POST_UPDATE.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__PRE_COMMIT.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__PRE_ORIGINATE.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__PRE_UPDATE.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE__QUESTIONNAIRE__POST_SEARCH.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/SIMPLE_API_REQUEST.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/TASK_COMMENT_CREATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/TASK_CREATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/TASK_UPDATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/VITAL_SIGN_CREATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/emit/event_fixtures/VITAL_SIGN_UPDATED.ndjson +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/logs/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/logs/logs.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/plugin/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/plugin/plugin.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/run_plugins/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/apps/run_plugins/run_plugins.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/main.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/templates/plugins/application/cookiecutter.json +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/CANVAS_MANIFEST.json +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/README.md +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/applications/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/applications/my_application.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/assets/python-logo.png +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/templates/plugins/default/cookiecutter.json +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/CANVAS_MANIFEST.json +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/README.md +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/protocols/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/protocols/my_protocol.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/utils/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/utils/context/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/utils/context/context.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/utils/print/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/utils/print/print.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/utils/urls/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/utils/urls/urls.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/utils/validators/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/utils/validators/manifest_schema.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_cli/utils/validators/validators.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_generated/messages/effects_pb2_grpc.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_generated/messages/events_pb2.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_generated/messages/events_pb2.pyi +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_generated/messages/events_pb2_grpc.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_generated/messages/plugins_pb2.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_generated/messages/plugins_pb2.pyi +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_generated/messages/plugins_pb2_grpc.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_generated/services/plugin_runner_pb2.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_generated/services/plugin_runner_pb2.pyi +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_generated/services/plugin_runner_pb2_grpc.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/base.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/caching/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/caching/base.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/caching/client.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/caching/exceptions.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/caching/plugins.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/caching/utils.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/base.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/adjust_prescription.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/allergy.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/assess.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/change_medication.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/chart_section_review.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/close_goal.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/diagnose.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/exam.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/family_history.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/follow_up.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/goal.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/history_present_illness.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/imaging_order.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/instruct.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/lab_order.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/medical_history.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/medication_statement.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/past_surgical_history.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/perform.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/plan.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/prescribe.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/questionnaire/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/questionnaire/question.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/reason_for_visit.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/refer.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/refill.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/remove_allergy.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/resolve_condition.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/review_of_systems.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/stop_medication.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/structured_assessment.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/task.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/update_diagnosis.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/update_goal.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/commands/vitals.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/commands/constants.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/banner_alert/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/banner_alert/add_banner_alert.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/banner_alert/remove_banner_alert.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/base.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/billing_line_item/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/billing_line_item/add_billing_line_item.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/billing_line_item/remove_billing_line_item.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/billing_line_item/update_billing_line_item.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/launch_modal.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/note/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/note/message.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/patient/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/patient/base.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/patient/create_patient_external_identifier.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/patient_chart_summary_configuration.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/patient_metadata/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/patient_metadata/base.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/patient_metadata/patient_metadata_create_form.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/patient_portal/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/patient_portal/application_configuration.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/patient_portal/form_result.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/patient_portal_menu_configuration.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/patient_profile_configuration.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/protocol_card/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/protocol_card/protocol_card.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/questionnaire_result.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/send_invite.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/show_button.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/simple_api.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/surescripts/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/surescripts/surescripts_messages.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/task/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/task/task.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/update_user.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/widgets/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/effects/widgets/portal_widget.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/events/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/events/base.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/handlers/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/handlers/action_button.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/handlers/application.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/handlers/base.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/handlers/cron_task.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/handlers/simple_api/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/handlers/simple_api/api.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/handlers/simple_api/exceptions.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/handlers/simple_api/security.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/handlers/simple_api/tools.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/handlers/simple_api/websocket.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/protocols/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/protocols/base.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/protocols/clinical_quality_measure.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/protocols/timeframe.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/questionnaires/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/questionnaires/utils.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/templates/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/templates/utils.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/utils/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/utils/db.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/utils/http.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/utils/metrics.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/utils/plugins.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/apps.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/allergy_intolerance.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/appointment.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/assessment.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/banner_alert.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/base.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/billing.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/care_team.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/claim_line_item.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/command.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/common.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/condition.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/coverage.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/detected_issue.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/device.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/discount.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/fields.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/imaging.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/invoice.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/lab.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/line_item_transaction.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/medication.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/message.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/note.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/observation.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/organization.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/payment_collection.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/posting.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/practicelocation.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/protocol_override.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/questionnaire.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/reason_for_visit.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/staff.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/task.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/team.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/data/utils.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/v1/models.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/custom.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/hcc2018.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/adverse_event.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/allergy.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/assessment.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/communication.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/condition.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/device.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/diagnostic_study.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/encounter.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/immunization.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/individual_characteristic.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/intervention.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/laboratory_test.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/medication.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/physical_exam.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/procedure.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/v2022/symptom.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/value_set/value_set.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/canvas_sdk/views/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/logger/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/logger/logger.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/plugin_runner/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/plugin_runner/authentication.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/plugin_runner/aws_headers.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/plugin_runner/exceptions.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/plugin_runner/installation.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/plugin_runner/load_all_plugins.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/plugin_runner/plugin_runner.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/plugin_runner/sandbox.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/protobufs/canvas_generated/messages/events.proto +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/protobufs/canvas_generated/messages/plugins.proto +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/protobufs/canvas_generated/services/plugin_runner.proto +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/pubsub/__init__.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/pubsub/pubsub.py +0 -0
- {canvas-0.43.0 → canvas-0.44.1}/settings.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: canvas
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.44.1
|
|
4
4
|
Summary: SDK to customize event-driven actions in your Canvas instance
|
|
5
5
|
Author-email: Canvas Team <engineering@canvasmedical.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -16,7 +16,6 @@ Requires-Dist: frozendict>=2.4.6
|
|
|
16
16
|
Requires-Dist: grpcio<2,>=1.60.1
|
|
17
17
|
Requires-Dist: ipython<9,>=8.21.0
|
|
18
18
|
Requires-Dist: jsonschema<5,>=4.21.1
|
|
19
|
-
Requires-Dist: keyring
|
|
20
19
|
Requires-Dist: protobuf<5,>=4.25.3
|
|
21
20
|
Requires-Dist: psycopg[binary,pool]<4,>=3.2.2
|
|
22
21
|
Requires-Dist: pydantic<3,>=2.6.1
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import json
|
|
2
|
+
from datetime import datetime
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
TOKENS_PATH = Path.home() / ".canvas" / "tokens.json"
|
|
7
|
+
TOKENS_PATH.parent.mkdir(parents=True, exist_ok=True)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def _load_tokens() -> dict:
|
|
11
|
+
if not TOKENS_PATH.exists():
|
|
12
|
+
return {}
|
|
13
|
+
with TOKENS_PATH.open("r") as f:
|
|
14
|
+
return json.load(f)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def _save_tokens(tokens: dict) -> None:
|
|
18
|
+
with TOKENS_PATH.open("w") as f:
|
|
19
|
+
json.dump(tokens, f, indent=2)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _set_value(key: str, value: Any) -> None:
|
|
23
|
+
"""Set a value in the token storage."""
|
|
24
|
+
tokens = _load_tokens()
|
|
25
|
+
tokens[key] = value
|
|
26
|
+
_save_tokens(tokens)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _get_value(key: str) -> Any | None:
|
|
30
|
+
"""Get value from the token storage."""
|
|
31
|
+
tokens = _load_tokens()
|
|
32
|
+
return tokens.get(key)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _delete_value(key: str) -> None:
|
|
36
|
+
"""Delete a value from the token storage."""
|
|
37
|
+
tokens = _load_tokens()
|
|
38
|
+
tokens.pop(key, None)
|
|
39
|
+
_save_tokens(tokens)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def set_token(host_token_key: str, token: str, exp: datetime) -> None:
|
|
43
|
+
"""Set a token with an expiry date in the token storage."""
|
|
44
|
+
_set_value(host_token_key, {"token": token, "exp_date": exp.isoformat()})
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def get_token(host_token_key: str) -> str | None:
|
|
48
|
+
"""Get a token from the token storage."""
|
|
49
|
+
value = _get_value(host_token_key)
|
|
50
|
+
|
|
51
|
+
if not value:
|
|
52
|
+
return None
|
|
53
|
+
try:
|
|
54
|
+
exp = value["exp_date"]
|
|
55
|
+
if datetime.fromisoformat(exp) <= datetime.now():
|
|
56
|
+
return None
|
|
57
|
+
except ValueError:
|
|
58
|
+
return None
|
|
59
|
+
|
|
60
|
+
return value["token"]
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def delete_token(host_token_key: str) -> None:
|
|
64
|
+
"""Delete a token from the token storage."""
|
|
65
|
+
_delete_value(host_token_key)
|
|
@@ -3,34 +3,16 @@ from datetime import datetime, timedelta
|
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
from urllib.parse import urlparse
|
|
5
5
|
|
|
6
|
-
import keyring
|
|
7
6
|
import requests
|
|
8
7
|
|
|
8
|
+
from canvas_cli.apps.auth.storage import get_token, set_token
|
|
9
9
|
from canvas_sdk.utils import Http
|
|
10
10
|
|
|
11
|
-
# Keyring namespace we'll use
|
|
12
|
-
KEYRING_SERVICE = __name__
|
|
13
|
-
|
|
14
11
|
CONFIG_PATH = Path.home() / ".canvas" / "credentials.ini"
|
|
15
12
|
|
|
16
13
|
LOCALHOST = "http://localhost:8000"
|
|
17
14
|
|
|
18
15
|
|
|
19
|
-
def get_password(username: str) -> str | None:
|
|
20
|
-
"""Return the stored password for username, or None."""
|
|
21
|
-
return keyring.get_password(KEYRING_SERVICE, username)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
def set_password(username: str, password: str) -> None:
|
|
25
|
-
"""Set the password for the given username."""
|
|
26
|
-
keyring.set_password(KEYRING_SERVICE, username=username, password=password)
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def delete_password(username: str) -> None:
|
|
30
|
-
"""Delete the password for the given username."""
|
|
31
|
-
keyring.delete_password(KEYRING_SERVICE, username=username)
|
|
32
|
-
|
|
33
|
-
|
|
34
16
|
def get_config() -> configparser.ConfigParser:
|
|
35
17
|
"""Reads the config file and returns a ConfigParser object."""
|
|
36
18
|
config = configparser.ConfigParser()
|
|
@@ -64,7 +46,7 @@ def read_config(host: str, property: str) -> str:
|
|
|
64
46
|
|
|
65
47
|
|
|
66
48
|
def get_api_client_credentials(host: str) -> str:
|
|
67
|
-
"""Either return the given api_key, or fetch it from the
|
|
49
|
+
"""Either return the given api_key, or fetch it from the token storage."""
|
|
68
50
|
hostname = urlparse(host).hostname
|
|
69
51
|
|
|
70
52
|
if not hostname:
|
|
@@ -119,23 +101,6 @@ def request_api_token(host: str, api_client_credentials: str) -> dict:
|
|
|
119
101
|
return token_response.json()
|
|
120
102
|
|
|
121
103
|
|
|
122
|
-
def is_token_valid(host_token_key: str, expiration_date: datetime | None = None) -> bool:
|
|
123
|
-
"""True if the token has not expired yet."""
|
|
124
|
-
token_exp_date_key = f"{host_token_key}|exp_date"
|
|
125
|
-
|
|
126
|
-
if expiration_date:
|
|
127
|
-
if expiration_date <= datetime.now():
|
|
128
|
-
return False
|
|
129
|
-
set_password(token_exp_date_key, expiration_date.isoformat())
|
|
130
|
-
return True
|
|
131
|
-
|
|
132
|
-
stored_expiration_date = get_password(token_exp_date_key)
|
|
133
|
-
return (
|
|
134
|
-
stored_expiration_date is not None
|
|
135
|
-
and datetime.fromisoformat(stored_expiration_date) > datetime.now()
|
|
136
|
-
)
|
|
137
|
-
|
|
138
|
-
|
|
139
104
|
def get_or_request_api_token(host: str | None = None) -> str:
|
|
140
105
|
"""Returns an existing stored token if it has not expired, or requests a new one."""
|
|
141
106
|
if not (host := get_default_host(host)):
|
|
@@ -143,10 +108,9 @@ def get_or_request_api_token(host: str | None = None) -> str:
|
|
|
143
108
|
f"Please specify a host or add one to the configuration file at '{CONFIG_PATH}'"
|
|
144
109
|
)
|
|
145
110
|
|
|
146
|
-
|
|
147
|
-
token = get_password(host_token_key)
|
|
111
|
+
token = get_token(host)
|
|
148
112
|
|
|
149
|
-
if token
|
|
113
|
+
if token:
|
|
150
114
|
return token
|
|
151
115
|
|
|
152
116
|
api_client_credentials = get_api_client_credentials(host)
|
|
@@ -155,9 +119,9 @@ def get_or_request_api_token(host: str | None = None) -> str:
|
|
|
155
119
|
raise Exception(f"A token could not be acquired from the given host '{host}'")
|
|
156
120
|
|
|
157
121
|
token_expiration_date = datetime.now() + timedelta(seconds=token_response["expires_in"])
|
|
158
|
-
if
|
|
122
|
+
if token_expiration_date <= datetime.now():
|
|
159
123
|
raise Exception(f"A valid token could not be acquired from the given host '{host}'")
|
|
160
124
|
|
|
161
125
|
new_token = token_response["access_token"]
|
|
162
|
-
|
|
126
|
+
set_token(host, new_token, token_expiration_date)
|
|
163
127
|
return new_token
|
|
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'canvas_generated/messages/effects.proto\x12\x06\x63\x61nvas\"y\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\x12\x14\n\x0chandler_name\x18\x05 \x01(\t*\xdc;\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\x1c\n\x17ORIGINATE_REFER_COMMAND\x10\x8b\x01\x12\x17\n\x12\x45\x44IT_REFER_COMMAND\x10\x8c\x01\x12\x19\n\x14\x44\x45LETE_REFER_COMMAND\x10\x8d\x01\x12\x19\n\x14\x43OMMIT_REFER_COMMAND\x10\x8e\x01\x12!\n\x1c\x45NTER_IN_ERROR_REFER_COMMAND\x10\x8f\x01\x12(\n#ORIGINATE_CHANGE_MEDICATION_COMMAND\x10\x96\x01\x12#\n\x1e\x45\x44IT_CHANGE_MEDICATION_COMMAND\x10\x97\x01\x12%\n DELETE_CHANGE_MEDICATION_COMMAND\x10\x98\x01\x12%\n COMMIT_CHANGE_MEDICATION_COMMAND\x10\x99\x01\x12-\n(ENTER_IN_ERROR_CHANGE_MEDICATION_COMMAND\x10\x9a\x01\x12 \n\x1b\x43REATE_QUESTIONNAIRE_RESULT\x10\x8a\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\x12\x1b\n\x16ORIGINATE_EXAM_COMMAND\x10\xbc\x05\x12\x16\n\x11\x45\x44IT_EXAM_COMMAND\x10\xbd\x05\x12\x18\n\x13\x44\x45LETE_EXAM_COMMAND\x10\xbe\x05\x12\x18\n\x13\x43OMMIT_EXAM_COMMAND\x10\xbf\x05\x12 \n\x1b\x45NTER_IN_ERROR_EXAM_COMMAND\x10\xc0\x05\x12\x1a\n\x15ORIGINATE_ROS_COMMAND\x10\xa0\x06\x12\x15\n\x10\x45\x44IT_ROS_COMMAND\x10\xa1\x06\x12\x17\n\x12\x44\x45LETE_ROS_COMMAND\x10\xa2\x06\x12\x17\n\x12\x43OMMIT_ROS_COMMAND\x10\xa3\x06\x12\x1f\n\x1a\x45NTER_IN_ERROR_ROS_COMMAND\x10\xa4\x06\x12,\n\'ORIGINATE_STRUCTURED_ASSESSMENT_COMMAND\x10\x84\x07\x12\'\n\"EDIT_STRUCTURED_ASSESSMENT_COMMAND\x10\x85\x07\x12)\n$DELETE_STRUCTURED_ASSESSMENT_COMMAND\x10\x86\x07\x12)\n$COMMIT_STRUCTURED_ASSESSMENT_COMMAND\x10\x87\x07\x12\x31\n,ENTER_IN_ERROR_STRUCTURED_ASSESSMENT_COMMAND\x10\x88\x07\x12 \n\x1bORIGINATE_FOLLOW_UP_COMMAND\x10\x89\x07\x12\x1b\n\x16\x45\x44IT_FOLLOW_UP_COMMAND\x10\x8a\x07\x12\x1d\n\x18\x44\x45LETE_FOLLOW_UP_COMMAND\x10\x8b\x07\x12\x1d\n\x18\x43OMMIT_FOLLOW_UP_COMMAND\x10\x8c\x07\x12%\n ENTER_IN_ERROR_FOLLOW_UP_COMMAND\x10\x8d\x07\x12$\n\x1fORIGINATE_IMAGING_ORDER_COMMAND\x10\xcc\x08\x12\x1f\n\x1a\x45\x44IT_IMAGING_ORDER_COMMAND\x10\xcd\x08\x12!\n\x1c\x44\x45LETE_IMAGING_ORDER_COMMAND\x10\xce\x08\x12!\n\x1c\x43OMMIT_IMAGING_ORDER_COMMAND\x10\xcf\x08\x12)\n$ENTER_IN_ERROR_IMAGING_ORDER_COMMAND\x10\xd0\x08\x12(\n#ORIGINATE_RESOLVE_CONDITION_COMMAND\x10\xb0\t\x12#\n\x1e\x45\x44IT_RESOLVE_CONDITION_COMMAND\x10\xb1\t\x12%\n DELETE_RESOLVE_CONDITION_COMMAND\x10\xb2\t\x12%\n COMMIT_RESOLVE_CONDITION_COMMAND\x10\xb3\t\x12-\n(ENTER_IN_ERROR_RESOLVE_CONDITION_COMMAND\x10\xb4\t\x12*\n%ORIGINATE_ADJUST_PRESCRIPTION_COMMAND\x10\x94\n\x12%\n EDIT_ADJUST_PRESCRIPTION_COMMAND\x10\x95\n\x12\'\n\"DELETE_ADJUST_PRESCRIPTION_COMMAND\x10\x96\n\x12\'\n\"COMMIT_ADJUST_PRESCRIPTION_COMMAND\x10\x97\n\x12/\n*ENTER_IN_ERROR_ADJUST_PRESCRIPTION_COMMAND\x10\x98\n\x12+\n&ORIGINATE_CHART_SECTION_REVIEW_COMMAND\x10\xf8\n\x12\x17\n\x12SHOW_ACTION_BUTTON\x10\xe8\x07\x12 \n\x1bPATIENT_PORTAL__FORM_RESULT\x10\xd0\x0f\x12.\n)PATIENT_PORTAL__APPOINTMENT_IS_CANCELABLE\x10\xd1\x0f\x12\x31\n,PATIENT_PORTAL__APPOINTMENT_IS_RESCHEDULABLE\x10\xd2\x0f\x12\x32\n-PATIENT_PORTAL__APPOINTMENT_SHOW_MEETING_LINK\x10\xd3\x0f\x12 \n\x1bPATIENT_PORTAL__SEND_INVITE\x10\xd4\x0f\x12=\n8PATIENT_PORTAL__APPOINTMENTS__SLOTS__POST_SEARCH_RESULTS\x10\xd5\x0f\x12M\nHPATIENT_PORTAL__APPOINTMENTS__FORM_APPOINTMENT_TYPES__PRE_SEARCH_RESULTS\x10\xd6\x0f\x12N\nIPATIENT_PORTAL__APPOINTMENTS__FORM_APPOINTMENT_TYPES__POST_SEARCH_RESULTS\x10\xd7\x0f\x12\x45\n@PATIENT_PORTAL__APPOINTMENTS__FORM_LOCATIONS__PRE_SEARCH_RESULTS\x10\xd8\x0f\x12\x46\nAPATIENT_PORTAL__APPOINTMENTS__FORM_LOCATIONS__POST_SEARCH_RESULTS\x10\xd9\x0f\x12\x45\n@PATIENT_PORTAL__APPOINTMENTS__FORM_PROVIDERS__PRE_SEARCH_RESULTS\x10\xda\x0f\x12\x46\nAPATIENT_PORTAL__APPOINTMENTS__FORM_PROVIDERS__POST_SEARCH_RESULTS\x10\xdb\x0f\x12.\n)PATIENT_PORTAL__APPLICATION_CONFIGURATION\x10\xdc\x0f\x12\x1a\n\x15\x41\x44\x44_BILLING_LINE_ITEM\x10\xee\x0f\x12\x1d\n\x18UPDATE_BILLING_LINE_ITEM\x10\xef\x0f\x12\x1d\n\x18REMOVE_BILLING_LINE_ITEM\x10\xf0\x0f\x12#\n\x1eSHOW_PATIENT_PORTAL_MENU_ITEMS\x10\xb4\x10\x12\x12\n\rPORTAL_WIDGET\x10\xb5\x10\x12\x11\n\x0cLAUNCH_MODAL\x10\xb8\x17\x12\x18\n\x13SIMPLE_API_RESPONSE\x10\xa0\x1f\x12 \n\x1bSIMPLE_API_WEBSOCKET_ACCEPT\x10\xa1\x1f\x12\x1e\n\x19SIMPLE_API_WEBSOCKET_DENY\x10\xa2\x1f\x12#\n\x1eSIMPLE_API_WEBSOCKET_BROADCAST\x10\xa3\x1f\x12\x10\n\x0bUPDATE_USER\x10\x88\'\x12\x10\n\x0b\x43REATE_NOTE\x10\xf0.\x12\x17\n\x12\x43REATE_APPOINTMENT\x10\xf1.\x12\x1a\n\x15\x43REATE_SCHEDULE_EVENT\x10\xf2.\x12\x13\n\x0e\x43REATE_PATIENT\x10\xf3.\x12\x13\n\x0e\x43REATE_MESSAGE\x10\xf4.\x12\x11\n\x0cSEND_MESSAGE\x10\xf5.\x12\x1c\n\x17\x43REATE_AND_SEND_MESSAGE\x10\xf6.\x12\x11\n\x0c\x45\x44IT_MESSAGE\x10\xf7.\x12/\n*PATIENT_METADATA__CREATE_ADDITIONAL_FIELDS\x10\xfa.\x12\x1c\n\x17UPSERT_PATIENT_METADATA\x10\xfb.\x12\'\n\"CREATE_PATIENT_EXTERNAL_IDENTIFIER\x10\xfc.b\x06proto3')
|
|
17
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'canvas_generated/messages/effects.proto\x12\x06\x63\x61nvas\"y\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\x12\x14\n\x0chandler_name\x18\x05 \x01(\t*\xd8<\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\x1c\n\x17ORIGINATE_REFER_COMMAND\x10\x8b\x01\x12\x17\n\x12\x45\x44IT_REFER_COMMAND\x10\x8c\x01\x12\x19\n\x14\x44\x45LETE_REFER_COMMAND\x10\x8d\x01\x12\x19\n\x14\x43OMMIT_REFER_COMMAND\x10\x8e\x01\x12!\n\x1c\x45NTER_IN_ERROR_REFER_COMMAND\x10\x8f\x01\x12(\n#ORIGINATE_CHANGE_MEDICATION_COMMAND\x10\x96\x01\x12#\n\x1e\x45\x44IT_CHANGE_MEDICATION_COMMAND\x10\x97\x01\x12%\n DELETE_CHANGE_MEDICATION_COMMAND\x10\x98\x01\x12%\n COMMIT_CHANGE_MEDICATION_COMMAND\x10\x99\x01\x12-\n(ENTER_IN_ERROR_CHANGE_MEDICATION_COMMAND\x10\x9a\x01\x12 \n\x1b\x43REATE_QUESTIONNAIRE_RESULT\x10\x8a\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\x12\x1b\n\x16ORIGINATE_EXAM_COMMAND\x10\xbc\x05\x12\x16\n\x11\x45\x44IT_EXAM_COMMAND\x10\xbd\x05\x12\x18\n\x13\x44\x45LETE_EXAM_COMMAND\x10\xbe\x05\x12\x18\n\x13\x43OMMIT_EXAM_COMMAND\x10\xbf\x05\x12 \n\x1b\x45NTER_IN_ERROR_EXAM_COMMAND\x10\xc0\x05\x12\x1a\n\x15ORIGINATE_ROS_COMMAND\x10\xa0\x06\x12\x15\n\x10\x45\x44IT_ROS_COMMAND\x10\xa1\x06\x12\x17\n\x12\x44\x45LETE_ROS_COMMAND\x10\xa2\x06\x12\x17\n\x12\x43OMMIT_ROS_COMMAND\x10\xa3\x06\x12\x1f\n\x1a\x45NTER_IN_ERROR_ROS_COMMAND\x10\xa4\x06\x12,\n\'ORIGINATE_STRUCTURED_ASSESSMENT_COMMAND\x10\x84\x07\x12\'\n\"EDIT_STRUCTURED_ASSESSMENT_COMMAND\x10\x85\x07\x12)\n$DELETE_STRUCTURED_ASSESSMENT_COMMAND\x10\x86\x07\x12)\n$COMMIT_STRUCTURED_ASSESSMENT_COMMAND\x10\x87\x07\x12\x31\n,ENTER_IN_ERROR_STRUCTURED_ASSESSMENT_COMMAND\x10\x88\x07\x12 \n\x1bORIGINATE_FOLLOW_UP_COMMAND\x10\x89\x07\x12\x1b\n\x16\x45\x44IT_FOLLOW_UP_COMMAND\x10\x8a\x07\x12\x1d\n\x18\x44\x45LETE_FOLLOW_UP_COMMAND\x10\x8b\x07\x12\x1d\n\x18\x43OMMIT_FOLLOW_UP_COMMAND\x10\x8c\x07\x12%\n ENTER_IN_ERROR_FOLLOW_UP_COMMAND\x10\x8d\x07\x12$\n\x1fORIGINATE_IMAGING_ORDER_COMMAND\x10\xcc\x08\x12\x1f\n\x1a\x45\x44IT_IMAGING_ORDER_COMMAND\x10\xcd\x08\x12!\n\x1c\x44\x45LETE_IMAGING_ORDER_COMMAND\x10\xce\x08\x12!\n\x1c\x43OMMIT_IMAGING_ORDER_COMMAND\x10\xcf\x08\x12)\n$ENTER_IN_ERROR_IMAGING_ORDER_COMMAND\x10\xd0\x08\x12(\n#ORIGINATE_RESOLVE_CONDITION_COMMAND\x10\xb0\t\x12#\n\x1e\x45\x44IT_RESOLVE_CONDITION_COMMAND\x10\xb1\t\x12%\n DELETE_RESOLVE_CONDITION_COMMAND\x10\xb2\t\x12%\n COMMIT_RESOLVE_CONDITION_COMMAND\x10\xb3\t\x12-\n(ENTER_IN_ERROR_RESOLVE_CONDITION_COMMAND\x10\xb4\t\x12*\n%ORIGINATE_ADJUST_PRESCRIPTION_COMMAND\x10\x94\n\x12%\n EDIT_ADJUST_PRESCRIPTION_COMMAND\x10\x95\n\x12\'\n\"DELETE_ADJUST_PRESCRIPTION_COMMAND\x10\x96\n\x12\'\n\"COMMIT_ADJUST_PRESCRIPTION_COMMAND\x10\x97\n\x12/\n*ENTER_IN_ERROR_ADJUST_PRESCRIPTION_COMMAND\x10\x98\n\x12+\n&ORIGINATE_CHART_SECTION_REVIEW_COMMAND\x10\xf8\n\x12\x17\n\x12SHOW_ACTION_BUTTON\x10\xe8\x07\x12 \n\x1bPATIENT_PORTAL__FORM_RESULT\x10\xd0\x0f\x12.\n)PATIENT_PORTAL__APPOINTMENT_IS_CANCELABLE\x10\xd1\x0f\x12\x31\n,PATIENT_PORTAL__APPOINTMENT_IS_RESCHEDULABLE\x10\xd2\x0f\x12\x32\n-PATIENT_PORTAL__APPOINTMENT_SHOW_MEETING_LINK\x10\xd3\x0f\x12 \n\x1bPATIENT_PORTAL__SEND_INVITE\x10\xd4\x0f\x12=\n8PATIENT_PORTAL__APPOINTMENTS__SLOTS__POST_SEARCH_RESULTS\x10\xd5\x0f\x12M\nHPATIENT_PORTAL__APPOINTMENTS__FORM_APPOINTMENT_TYPES__PRE_SEARCH_RESULTS\x10\xd6\x0f\x12N\nIPATIENT_PORTAL__APPOINTMENTS__FORM_APPOINTMENT_TYPES__POST_SEARCH_RESULTS\x10\xd7\x0f\x12\x45\n@PATIENT_PORTAL__APPOINTMENTS__FORM_LOCATIONS__PRE_SEARCH_RESULTS\x10\xd8\x0f\x12\x46\nAPATIENT_PORTAL__APPOINTMENTS__FORM_LOCATIONS__POST_SEARCH_RESULTS\x10\xd9\x0f\x12\x45\n@PATIENT_PORTAL__APPOINTMENTS__FORM_PROVIDERS__PRE_SEARCH_RESULTS\x10\xda\x0f\x12\x46\nAPATIENT_PORTAL__APPOINTMENTS__FORM_PROVIDERS__POST_SEARCH_RESULTS\x10\xdb\x0f\x12.\n)PATIENT_PORTAL__APPLICATION_CONFIGURATION\x10\xdc\x0f\x12\x1a\n\x15\x41\x44\x44_BILLING_LINE_ITEM\x10\xee\x0f\x12\x1d\n\x18UPDATE_BILLING_LINE_ITEM\x10\xef\x0f\x12\x1d\n\x18REMOVE_BILLING_LINE_ITEM\x10\xf0\x0f\x12#\n\x1eSHOW_PATIENT_PORTAL_MENU_ITEMS\x10\xb4\x10\x12\x12\n\rPORTAL_WIDGET\x10\xb5\x10\x12\x11\n\x0cLAUNCH_MODAL\x10\xb8\x17\x12\x18\n\x13SIMPLE_API_RESPONSE\x10\xa0\x1f\x12 \n\x1bSIMPLE_API_WEBSOCKET_ACCEPT\x10\xa1\x1f\x12\x1e\n\x19SIMPLE_API_WEBSOCKET_DENY\x10\xa2\x1f\x12#\n\x1eSIMPLE_API_WEBSOCKET_BROADCAST\x10\xa3\x1f\x12\x10\n\x0bUPDATE_USER\x10\x88\'\x12\x10\n\x0b\x43REATE_NOTE\x10\xf0.\x12\x10\n\x0bUPDATE_NOTE\x10\xfd.\x12\x17\n\x12\x43REATE_APPOINTMENT\x10\xf1.\x12\x17\n\x12UPDATE_APPOINTMENT\x10\xfe.\x12\x17\n\x12\x43\x41NCEL_APPOINTMENT\x10\xff.\x12\x1a\n\x15\x43REATE_SCHEDULE_EVENT\x10\xf2.\x12\x1a\n\x15UPDATE_SCHEDULE_EVENT\x10\x80/\x12\x1a\n\x15\x44\x45LETE_SCHEDULE_EVENT\x10\x81/\x12\x13\n\x0e\x43REATE_PATIENT\x10\xf3.\x12\x13\n\x0e\x43REATE_MESSAGE\x10\xf4.\x12\x11\n\x0cSEND_MESSAGE\x10\xf5.\x12\x1c\n\x17\x43REATE_AND_SEND_MESSAGE\x10\xf6.\x12\x11\n\x0c\x45\x44IT_MESSAGE\x10\xf7.\x12/\n*PATIENT_METADATA__CREATE_ADDITIONAL_FIELDS\x10\xfa.\x12\x1c\n\x17UPSERT_PATIENT_METADATA\x10\xfb.\x12\'\n\"CREATE_PATIENT_EXTERNAL_IDENTIFIER\x10\xfc.b\x06proto3')
|
|
18
18
|
|
|
19
19
|
_globals = globals()
|
|
20
20
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -22,7 +22,7 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'canvas_generated.messages.e
|
|
|
22
22
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
23
23
|
DESCRIPTOR._options = None
|
|
24
24
|
_globals['_EFFECTTYPE']._serialized_start=175
|
|
25
|
-
_globals['_EFFECTTYPE']._serialized_end=
|
|
25
|
+
_globals['_EFFECTTYPE']._serialized_end=7943
|
|
26
26
|
_globals['_EFFECT']._serialized_start=51
|
|
27
27
|
_globals['_EFFECT']._serialized_end=172
|
|
28
28
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -218,8 +218,13 @@ class EffectType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
|
218
218
|
SIMPLE_API_WEBSOCKET_BROADCAST: _ClassVar[EffectType]
|
|
219
219
|
UPDATE_USER: _ClassVar[EffectType]
|
|
220
220
|
CREATE_NOTE: _ClassVar[EffectType]
|
|
221
|
+
UPDATE_NOTE: _ClassVar[EffectType]
|
|
221
222
|
CREATE_APPOINTMENT: _ClassVar[EffectType]
|
|
223
|
+
UPDATE_APPOINTMENT: _ClassVar[EffectType]
|
|
224
|
+
CANCEL_APPOINTMENT: _ClassVar[EffectType]
|
|
222
225
|
CREATE_SCHEDULE_EVENT: _ClassVar[EffectType]
|
|
226
|
+
UPDATE_SCHEDULE_EVENT: _ClassVar[EffectType]
|
|
227
|
+
DELETE_SCHEDULE_EVENT: _ClassVar[EffectType]
|
|
223
228
|
CREATE_PATIENT: _ClassVar[EffectType]
|
|
224
229
|
CREATE_MESSAGE: _ClassVar[EffectType]
|
|
225
230
|
SEND_MESSAGE: _ClassVar[EffectType]
|
|
@@ -439,8 +444,13 @@ SIMPLE_API_WEBSOCKET_DENY: EffectType
|
|
|
439
444
|
SIMPLE_API_WEBSOCKET_BROADCAST: EffectType
|
|
440
445
|
UPDATE_USER: EffectType
|
|
441
446
|
CREATE_NOTE: EffectType
|
|
447
|
+
UPDATE_NOTE: EffectType
|
|
442
448
|
CREATE_APPOINTMENT: EffectType
|
|
449
|
+
UPDATE_APPOINTMENT: EffectType
|
|
450
|
+
CANCEL_APPOINTMENT: EffectType
|
|
443
451
|
CREATE_SCHEDULE_EVENT: EffectType
|
|
452
|
+
UPDATE_SCHEDULE_EVENT: EffectType
|
|
453
|
+
DELETE_SCHEDULE_EVENT: EffectType
|
|
444
454
|
CREATE_PATIENT: EffectType
|
|
445
455
|
CREATE_MESSAGE: EffectType
|
|
446
456
|
SEND_MESSAGE: EffectType
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import json
|
|
2
|
+
from typing import Any
|
|
3
|
+
from uuid import UUID
|
|
4
|
+
|
|
5
|
+
from pydantic_core import InitErrorDetails
|
|
6
|
+
|
|
7
|
+
from canvas_sdk.effects import Effect
|
|
8
|
+
from canvas_sdk.effects.note.base import AppointmentABC
|
|
9
|
+
from canvas_sdk.v1.data import NoteType, Patient
|
|
10
|
+
from canvas_sdk.v1.data.note import NoteTypeCategories
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ScheduleEvent(AppointmentABC):
|
|
14
|
+
"""
|
|
15
|
+
Effect to create a schedule event.
|
|
16
|
+
|
|
17
|
+
Attributes:
|
|
18
|
+
note_type_id (UUID | str | None): The ID of the note type.
|
|
19
|
+
patient_id (str | None): The ID of the patient, if applicable.
|
|
20
|
+
description (str | None): The description of the schedule event, if applicable.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
class Meta:
|
|
24
|
+
effect_type = "SCHEDULE_EVENT"
|
|
25
|
+
|
|
26
|
+
note_type_id: UUID | str | None = None
|
|
27
|
+
patient_id: str | None = None
|
|
28
|
+
description: str | None = None
|
|
29
|
+
|
|
30
|
+
def _get_error_details(self, method: Any) -> list[InitErrorDetails]:
|
|
31
|
+
"""
|
|
32
|
+
Validates the schedule event note type and returns a list of error details if validation fails.
|
|
33
|
+
|
|
34
|
+
Args:
|
|
35
|
+
method (Any): The method being validated.
|
|
36
|
+
|
|
37
|
+
Returns:
|
|
38
|
+
list[InitErrorDetails]: A list of error details for invalid schedule event note types.
|
|
39
|
+
"""
|
|
40
|
+
errors = super()._get_error_details(method)
|
|
41
|
+
|
|
42
|
+
# note_type_id is required for create
|
|
43
|
+
if method == "create" and not self.note_type_id:
|
|
44
|
+
errors.append(
|
|
45
|
+
self._create_error_detail(
|
|
46
|
+
"missing",
|
|
47
|
+
"Field 'note_type_id' is required to create a schedule event.",
|
|
48
|
+
None,
|
|
49
|
+
)
|
|
50
|
+
)
|
|
51
|
+
return errors
|
|
52
|
+
|
|
53
|
+
if self.note_type_id:
|
|
54
|
+
note_type = (
|
|
55
|
+
NoteType.objects.values("category", "is_patient_required", "allow_custom_title")
|
|
56
|
+
.filter(id=self.note_type_id)
|
|
57
|
+
.first()
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
if not note_type:
|
|
61
|
+
errors.append(
|
|
62
|
+
self._create_error_detail(
|
|
63
|
+
"value",
|
|
64
|
+
f"Note type with ID {self.note_type_id} does not exist.",
|
|
65
|
+
self.note_type_id,
|
|
66
|
+
)
|
|
67
|
+
)
|
|
68
|
+
return errors
|
|
69
|
+
|
|
70
|
+
if note_type["category"] != NoteTypeCategories.SCHEDULE_EVENT:
|
|
71
|
+
errors.append(
|
|
72
|
+
self._create_error_detail(
|
|
73
|
+
"value",
|
|
74
|
+
f"Schedule event note type must be of type: {NoteTypeCategories.SCHEDULE_EVENT}.",
|
|
75
|
+
self.note_type_id,
|
|
76
|
+
)
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
if note_type["is_patient_required"] and not self.patient_id:
|
|
80
|
+
errors.append(
|
|
81
|
+
self._create_error_detail(
|
|
82
|
+
"value",
|
|
83
|
+
"Patient ID is required for this note type.",
|
|
84
|
+
self.note_type_id,
|
|
85
|
+
)
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
if not note_type["allow_custom_title"] and self.description:
|
|
89
|
+
errors.append(
|
|
90
|
+
self._create_error_detail(
|
|
91
|
+
"value",
|
|
92
|
+
"Description is not allowed for this note type.",
|
|
93
|
+
self.note_type_id,
|
|
94
|
+
)
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
# Validate patient exists if provided
|
|
98
|
+
if self.patient_id and not Patient.objects.filter(id=self.patient_id).exists():
|
|
99
|
+
errors.append(
|
|
100
|
+
self._create_error_detail(
|
|
101
|
+
"value",
|
|
102
|
+
f"Patient with ID {self.patient_id} does not exist.",
|
|
103
|
+
self.patient_id,
|
|
104
|
+
)
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
return errors
|
|
108
|
+
|
|
109
|
+
def delete(self) -> Effect:
|
|
110
|
+
"""Send a DELETE effect for the schedule event."""
|
|
111
|
+
self._validate_before_effect("delete")
|
|
112
|
+
return Effect(
|
|
113
|
+
type=f"DELETE_{self.Meta.effect_type}",
|
|
114
|
+
payload=json.dumps(
|
|
115
|
+
{
|
|
116
|
+
"data": self.values,
|
|
117
|
+
}
|
|
118
|
+
),
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class Appointment(AppointmentABC):
|
|
123
|
+
"""
|
|
124
|
+
Effect to create or update an appointment.
|
|
125
|
+
|
|
126
|
+
Attributes:
|
|
127
|
+
appointment_note_type_id (UUID | str | None): The ID of the appointment note type.
|
|
128
|
+
meeting_link (str | None): The meeting link for the appointment, if any.
|
|
129
|
+
patient_id (str | None): The ID of the patient.
|
|
130
|
+
"""
|
|
131
|
+
|
|
132
|
+
class Meta:
|
|
133
|
+
effect_type = "APPOINTMENT"
|
|
134
|
+
|
|
135
|
+
appointment_note_type_id: UUID | str | None = None
|
|
136
|
+
meeting_link: str | None = None
|
|
137
|
+
patient_id: str | None = None
|
|
138
|
+
|
|
139
|
+
def _get_error_details(self, method: Any) -> list[InitErrorDetails]:
|
|
140
|
+
"""
|
|
141
|
+
Validates the appointment note type and returns a list of error details if validation fails.
|
|
142
|
+
|
|
143
|
+
Args:
|
|
144
|
+
method (Any): The method being validated.
|
|
145
|
+
|
|
146
|
+
Returns:
|
|
147
|
+
list[InitErrorDetails]: A list of error details for invalid appointment note types or missing patient IDs.
|
|
148
|
+
"""
|
|
149
|
+
errors = super()._get_error_details(method)
|
|
150
|
+
|
|
151
|
+
if method == "create":
|
|
152
|
+
if not self.appointment_note_type_id:
|
|
153
|
+
errors.append(
|
|
154
|
+
self._create_error_detail(
|
|
155
|
+
"missing",
|
|
156
|
+
"Field 'appointment_note_type_id' is required to create an appointment.",
|
|
157
|
+
None,
|
|
158
|
+
)
|
|
159
|
+
)
|
|
160
|
+
if not self.patient_id:
|
|
161
|
+
errors.append(
|
|
162
|
+
self._create_error_detail(
|
|
163
|
+
"missing",
|
|
164
|
+
"Field 'patient_id' is required to create an appointment.",
|
|
165
|
+
None,
|
|
166
|
+
)
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
if method == "update" and self.patient_id:
|
|
170
|
+
errors.append(
|
|
171
|
+
self._create_error_detail(
|
|
172
|
+
"value",
|
|
173
|
+
"Field 'patient_id' cannot be updated for an existing appointment.",
|
|
174
|
+
None,
|
|
175
|
+
)
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
if self.patient_id and not Patient.objects.filter(id=self.patient_id).exists():
|
|
179
|
+
errors.append(
|
|
180
|
+
self._create_error_detail(
|
|
181
|
+
"value",
|
|
182
|
+
"Patient with ID {self.patient_id} does not exist.",
|
|
183
|
+
self.patient_id,
|
|
184
|
+
)
|
|
185
|
+
)
|
|
186
|
+
|
|
187
|
+
if self.appointment_note_type_id:
|
|
188
|
+
try:
|
|
189
|
+
category, is_scheduleable = NoteType.objects.values_list(
|
|
190
|
+
"category", "is_scheduleable"
|
|
191
|
+
).get(id=self.appointment_note_type_id)
|
|
192
|
+
if category != NoteTypeCategories.ENCOUNTER:
|
|
193
|
+
errors.append(
|
|
194
|
+
self._create_error_detail(
|
|
195
|
+
"value",
|
|
196
|
+
f"Appointment note type must be of type, {NoteTypeCategories.ENCOUNTER} but got: {category}.",
|
|
197
|
+
self.appointment_note_type_id,
|
|
198
|
+
)
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
if not is_scheduleable:
|
|
202
|
+
errors.append(
|
|
203
|
+
self._create_error_detail(
|
|
204
|
+
"value",
|
|
205
|
+
"Appointment note type must be scheduleable.",
|
|
206
|
+
self.appointment_note_type_id,
|
|
207
|
+
)
|
|
208
|
+
)
|
|
209
|
+
except NoteType.DoesNotExist:
|
|
210
|
+
errors.append(
|
|
211
|
+
self._create_error_detail(
|
|
212
|
+
"value",
|
|
213
|
+
f"Note type with ID {self.appointment_note_type_id} does not exist.",
|
|
214
|
+
self.appointment_note_type_id,
|
|
215
|
+
)
|
|
216
|
+
)
|
|
217
|
+
|
|
218
|
+
return errors
|
|
219
|
+
|
|
220
|
+
def cancel(self) -> Effect:
|
|
221
|
+
"""Send a CANCEL effect for the appointment."""
|
|
222
|
+
self._validate_before_effect("cancel")
|
|
223
|
+
return Effect(
|
|
224
|
+
type=f"CANCEL_{self.Meta.effect_type}",
|
|
225
|
+
payload=json.dumps(
|
|
226
|
+
{
|
|
227
|
+
"data": self.values,
|
|
228
|
+
}
|
|
229
|
+
),
|
|
230
|
+
)
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
__exports__ = ("ScheduleEvent", "Appointment")
|