canvas 0.42.0__py3-none-any.whl → 0.43.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (37) hide show
  1. {canvas-0.42.0.dist-info → canvas-0.43.0.dist-info}/METADATA +1 -1
  2. {canvas-0.42.0.dist-info → canvas-0.43.0.dist-info}/RECORD +37 -27
  3. canvas_generated/messages/effects_pb2.py +2 -2
  4. canvas_generated/messages/effects_pb2.pyi +2 -0
  5. canvas_sdk/effects/patient/__init__.py +10 -2
  6. canvas_sdk/effects/patient/base.py +20 -1
  7. canvas_sdk/effects/patient/create_patient_external_identifier.py +40 -0
  8. canvas_sdk/effects/protocol_card/__init__.py +4 -1
  9. canvas_sdk/effects/protocol_card/protocol_card.py +2 -0
  10. canvas_sdk/utils/http.py +46 -2
  11. canvas_sdk/v1/data/__init__.py +29 -0
  12. canvas_sdk/v1/data/allergy_intolerance.py +6 -2
  13. canvas_sdk/v1/data/assessment.py +7 -3
  14. canvas_sdk/v1/data/billing.py +1 -1
  15. canvas_sdk/v1/data/claim.py +321 -0
  16. canvas_sdk/v1/data/claim_line_item.py +140 -0
  17. canvas_sdk/v1/data/command.py +12 -3
  18. canvas_sdk/v1/data/condition.py +7 -2
  19. canvas_sdk/v1/data/detected_issue.py +9 -3
  20. canvas_sdk/v1/data/device.py +9 -3
  21. canvas_sdk/v1/data/discount.py +21 -0
  22. canvas_sdk/v1/data/fields.py +37 -0
  23. canvas_sdk/v1/data/imaging.py +18 -6
  24. canvas_sdk/v1/data/invoice.py +62 -0
  25. canvas_sdk/v1/data/lab.py +36 -12
  26. canvas_sdk/v1/data/line_item_transaction.py +83 -0
  27. canvas_sdk/v1/data/medication.py +6 -2
  28. canvas_sdk/v1/data/observation.py +9 -3
  29. canvas_sdk/v1/data/organization.py +3 -1
  30. canvas_sdk/v1/data/payment_collection.py +35 -0
  31. canvas_sdk/v1/data/posting.py +225 -0
  32. canvas_sdk/v1/data/protocol_override.py +6 -2
  33. canvas_sdk/v1/data/questionnaire.py +6 -2
  34. canvas_sdk/v1/data/utils.py +10 -0
  35. protobufs/canvas_generated/messages/effects.proto +1 -0
  36. {canvas-0.42.0.dist-info → canvas-0.43.0.dist-info}/WHEEL +0 -0
  37. {canvas-0.42.0.dist-info → canvas-0.43.0.dist-info}/entry_points.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: canvas
3
- Version: 0.42.0
3
+ Version: 0.43.0
4
4
  Summary: SDK to customize event-driven actions in your Canvas instance
5
5
  Author-email: Canvas Team <engineering@canvasmedical.com>
6
6
  License-Expression: MIT
@@ -91,8 +91,8 @@ canvas_cli/utils/urls/urls.py,sha256=KwWTh5ERrEsZEvdBrZpZB71xtyWkDuglpXUbycWmBOo
91
91
  canvas_cli/utils/validators/__init__.py,sha256=rBvSR2O1hWkNAnUBdcr-zUkmqT796_A61b9pnvEhwrM,113
92
92
  canvas_cli/utils/validators/manifest_schema.py,sha256=HEXid9ZwLSChijVRRzVllSmEhZhr9ekx5Fu9CeKg0yE,6019
93
93
  canvas_cli/utils/validators/validators.py,sha256=lrUBQ0sF7seTe_pNGsNgASdr2BGp6g-Qui58V4H9qfQ,1598
94
- canvas_generated/messages/effects_pb2.py,sha256=yQiDG19XXvHduWgwbXmpQHCh7DavqUBPcBXgejYuWss,12625
95
- canvas_generated/messages/effects_pb2.pyi,sha256=57a4gWWDBK6HnzgJlVtEMXH3cidBHteZXV_MEOFO4Lk,22396
94
+ canvas_generated/messages/effects_pb2.py,sha256=arYOr5QxbXA4NC1MogGhHoVtqXrrihrsgWXoD8W4MAQ,12678
95
+ canvas_generated/messages/effects_pb2.pyi,sha256=3N4SsSCV4PHVMopFt7hWojRRfgE6mCQLMBxb5zl55DQ,22505
96
96
  canvas_generated/messages/effects_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
97
97
  canvas_generated/messages/events_pb2.py,sha256=jq7YelRp8-f6JSWUVjayLK-lpgEkjxamMwnOAt12_eI,51709
98
98
  canvas_generated/messages/events_pb2.pyi,sha256=GFrmww6N2heKMwXwbuTmj3D2jZQ0nrKonnCLUfSPf04,93036
@@ -173,16 +173,17 @@ canvas_sdk/effects/note/appointment.py,sha256=uUiquciUdppc_R_wP_UkPeh4TQlzZRjtRR
173
173
  canvas_sdk/effects/note/base.py,sha256=b_zCtU7_5y5rexDD0sJg3wmzwRMeUUvKUXJe-laSUIU,3856
174
174
  canvas_sdk/effects/note/message.py,sha256=T6p6h4J_I0k2jQSirFtIusydak4tem9yBPOTexvOQ0s,3740
175
175
  canvas_sdk/effects/note/note.py,sha256=s8ASykdGtCHobg8AyHHAKdnDGW0k4NUXPC3J17qHt98,2392
176
- canvas_sdk/effects/patient/__init__.py,sha256=GQSED5Ux3_EV1CBvlVpxsVFGgxC7_0f62feoZEfZ0Dg,133
177
- canvas_sdk/effects/patient/base.py,sha256=fxkKgpPJqfubM9NTQZX6ynlsGpsOScib9Gx4vwsUYTw,3988
176
+ canvas_sdk/effects/patient/__init__.py,sha256=POWxjgR3zAawvaP0XVxFAVDmatAySR1kJSWg9_jOfpU,358
177
+ canvas_sdk/effects/patient/base.py,sha256=OXqymxGvRTSd8DxtGQuhORFIxDQYimkXFsYLgjkKNls,4596
178
+ canvas_sdk/effects/patient/create_patient_external_identifier.py,sha256=d03jzJcz2n19_NVo_wAq88iKZRuuM60qsZhGGhL7pGE,1055
178
179
  canvas_sdk/effects/patient_metadata/__init__.py,sha256=vxTpaP9gY1iNf0iVSoh24buFR7XfY2FKVYKn_P7BJkg,342
179
180
  canvas_sdk/effects/patient_metadata/base.py,sha256=pq_xtFLyzHfYWTCjWEicOfsLkG3Nu_ECzLB85tYOToM,1286
180
181
  canvas_sdk/effects/patient_metadata/patient_metadata_create_form.py,sha256=ePoPcG2vuFrsnhPWU_XavMK5UVAxBvcMzDhpu9HzTu0,1918
181
182
  canvas_sdk/effects/patient_portal/__init__.py,sha256=YYXr5tEQlnwMgTXJbOG963tKSPiUOM4mUkX8wuiqp7U,17
182
183
  canvas_sdk/effects/patient_portal/application_configuration.py,sha256=v9aGKH5jRcvjjzgOhU7vUsUN5lbN0a4wI1cL8uDRzXk,714
183
184
  canvas_sdk/effects/patient_portal/form_result.py,sha256=xe5_hZdBOQ_7UYEvoqI8ek0_e9DqgeTqta5ovnFRcwQ,977
184
- canvas_sdk/effects/protocol_card/__init__.py,sha256=arCJePOjuqO-k_4y0_h7b7a3Hxlj1is_vu9jbXTWxC4,148
185
- canvas_sdk/effects/protocol_card/protocol_card.py,sha256=ACTgLonoMhzBsLLXWTmOCkFVeN1gymDNGWkfzKPWQ2o,2766
185
+ canvas_sdk/effects/protocol_card/__init__.py,sha256=SIJhxskbqQEL5yVNiGABjf2ldDnsocDC-Vzcwejy6Jw,159
186
+ canvas_sdk/effects/protocol_card/protocol_card.py,sha256=kYkyl0gUi147VJUm-mgrrtRfdgm_eMfgdpdxXjBcVy0,2850
186
187
  canvas_sdk/effects/surescripts/__init__.py,sha256=vD-g2zW8HzGMfxcaure5ZhrQNP72iIDROAsCrzLH3y4,349
187
188
  canvas_sdk/effects/surescripts/surescripts_messages.py,sha256=7Cd_93SJVCgrneXadubUSjLQwS0N2lNp2ISH_6a24cs,2746
188
189
  canvas_sdk/effects/task/__init__.py,sha256=KlIinP5QbWMkoHGWPTg6Wi-TolPWW7TnEMVZ-h0Z3YE,168
@@ -212,42 +213,51 @@ canvas_sdk/templates/__init__.py,sha256=LtUmLDsGSTq249T6sA7PUzkl2OfCAyvtIOGPNHr6
212
213
  canvas_sdk/templates/utils.py,sha256=_AIYcGQD3ePWzQpH7ZirkV_ATtIHlzf-T_03mHoeIWI,1460
213
214
  canvas_sdk/utils/__init__.py,sha256=PADveJMf-BtOapK5Cczy-nOuZzVh-HT2H6sfJW_SK9U,198
214
215
  canvas_sdk/utils/db.py,sha256=wOZORBfyBVxQkay5vyEtQ4i0KVCfASFGREmecHMR8DE,409
215
- canvas_sdk/utils/http.py,sha256=n0Q9ndlwYi-fco7Hgu6JpjTmJnQFlkGkM5shT_ZRTvI,9043
216
+ canvas_sdk/utils/http.py,sha256=YluFiz3WOaDKpTjt-b_XdwOiM1winEkSZ2g3aZxxu3E,10542
216
217
  canvas_sdk/utils/metrics.py,sha256=ojCbXgjLSy1pEavHgRs8j4OVNdAUMa1nLqZdkA0uCQQ,5987
217
218
  canvas_sdk/utils/plugins.py,sha256=xxJUeVJBzfQWhlD1kO7HlFWxDAl01kkvbsf07Z08dOM,1551
218
219
  canvas_sdk/v1/__init__.py,sha256=YYXr5tEQlnwMgTXJbOG963tKSPiUOM4mUkX8wuiqp7U,17
219
220
  canvas_sdk/v1/apps.py,sha256=4MwQfQu78oX5bUVlyxYzbt4rZODi0ZesXe_3QOsEWO8,170
220
221
  canvas_sdk/v1/models.py,sha256=LqeHZ-Hz3EWyM9vYr9uZ9rBYdMXNuuvJqbmojV8EcEM,224
221
- canvas_sdk/v1/data/__init__.py,sha256=nG80UG9zrYMzBJbGDVCtQ6BdfJxckHKB36U_6jT5XEA,3415
222
- canvas_sdk/v1/data/allergy_intolerance.py,sha256=ZAGV3VybFODXrnVSPOXAbM1MDQMzvLo5xLIaAsRHuA0,2370
222
+ canvas_sdk/v1/data/__init__.py,sha256=SIHywHsxBBVrrPPFhnRlvxZOE3BZWFYUbMVA49XhqIU,4208
223
+ canvas_sdk/v1/data/allergy_intolerance.py,sha256=oVm9OgNT7eGylp-26Y_zw6G109qfkWVGZC0OsLqtlCM,2434
223
224
  canvas_sdk/v1/data/appointment.py,sha256=vSHa7GlLCsBS8bhxMxj4hZpYno-wxaaXOIZ2GyYCdGY,2715
224
- canvas_sdk/v1/data/assessment.py,sha256=2zX6N6rLbSbGkCwH0m3aSji7SijFLBrHUD0zMFgSPik,1536
225
+ canvas_sdk/v1/data/assessment.py,sha256=7K4ASCda3GGr9pj4lauGdoItyNWD-RpalAXFXa1t7Bk,1618
225
226
  canvas_sdk/v1/data/banner_alert.py,sha256=T9Iq_1FWFo_hqxFZnR2xFQ4xDpeBf_aUCvQilrRVh8Q,815
226
227
  canvas_sdk/v1/data/base.py,sha256=ZuLj9MSUkTR7L0NMwC5YflhY4Px-SgCvhh5G2Ili0SE,6347
227
- canvas_sdk/v1/data/billing.py,sha256=Dqf9niDtdyYDW9KOHSgzyyiql6WwLz_eF5a0JGv55V4,2689
228
+ canvas_sdk/v1/data/billing.py,sha256=E1Bf2SGQCTr4vF3cWQzKgVKvqJmXtzHsyIBcVx8ICMg,2719
228
229
  canvas_sdk/v1/data/care_team.py,sha256=Ce6uXz_g867oYrq1RLvK-KXLubT4MAkomuJIO-GC7Tw,1916
229
- canvas_sdk/v1/data/command.py,sha256=-hNE5AS1Ug7C5m3Qy6tdjF5_Za_pUkSkWRkwQd_P6E8,1642
230
+ canvas_sdk/v1/data/claim.py,sha256=IaC-k9AtcQy3JiIPG_NmFKzx7syvrgWS4FAIZl4vcNU,10821
231
+ canvas_sdk/v1/data/claim_line_item.py,sha256=rd8y2A29nWU_8ZAK0W4ITeUCHp2zAzc0fnUIXpVBOoA,4904
232
+ canvas_sdk/v1/data/command.py,sha256=fLxQMhLN7HT7cMtnrFGLNoZNyZFIK2zgKasYrivYhr0,1822
230
233
  canvas_sdk/v1/data/common.py,sha256=u5W3_7kXAGPe7guEBwRouKp8FMRCx9iZL6ei8QMmtwU,4880
231
- canvas_sdk/v1/data/condition.py,sha256=sbGk0sfeYWTZFIgNlLe8bMmFQeUF51eqh-zDC6zN-QM,2351
234
+ canvas_sdk/v1/data/condition.py,sha256=sUHiavSPmJbSaWK723-kOmQXLlwBj-1aNAiD6UqDlQc,2452
232
235
  canvas_sdk/v1/data/coverage.py,sha256=iuWf5Kou-w7hwkUVeZnwzDOMGw4YrT7NEbBbW7jchUU,11084
233
- canvas_sdk/v1/data/detected_issue.py,sha256=zL_wed8zH9lgSgatSFpqvrjSTdGkuW7ZhaqyLNrhvdM,1744
234
- canvas_sdk/v1/data/device.py,sha256=B8HgCIAyTJhuXfL2W7ZEK4kOgh7obXlMi7htZqImEYI,1641
235
- canvas_sdk/v1/data/imaging.py,sha256=VwRR-IBw4hyufOP9fYjQFIjlHa75fhp95VmggdDuMgs,4379
236
- canvas_sdk/v1/data/lab.py,sha256=552gRPLiM1YiQ9yvVWcInk27DtWN3XUrYtX-svoCayQ,12685
237
- canvas_sdk/v1/data/medication.py,sha256=vgjQFhBCZEjRHiAupbCLkbxjjdcfLPwv5pKAlVgCe5U,2318
236
+ canvas_sdk/v1/data/detected_issue.py,sha256=jWVzrtFxXUWUb9_nGpF4v8LKsYLWUpqmqaxBXYtNkFA,1840
237
+ canvas_sdk/v1/data/device.py,sha256=2v1JOulQ5jZbKwolhUW78o0usPpP6KS4mC7xh5voYxw,1737
238
+ canvas_sdk/v1/data/discount.py,sha256=fguMBhVOwEGbV8WJZioxfwlr6uXZH7x4oFi9x-0hmNY,590
239
+ canvas_sdk/v1/data/fields.py,sha256=bI7mPI_3B36ntyoVQ6vuDq8eGLoUIkwZZr14lTC-4To,1104
240
+ canvas_sdk/v1/data/imaging.py,sha256=KujY01WQ3O_HWY91y_HWovqrZbMSCC3HAzc_vafn4-Y,4571
241
+ canvas_sdk/v1/data/invoice.py,sha256=LCw2Ax8m5SS3TlfXatOc1fbmpRkXgqbuZRzl-brGjTM,1917
242
+ canvas_sdk/v1/data/lab.py,sha256=ifsMcVJd5Lq4Dz6SExclh-si8-uQEtRRH6zhb1p4HvI,13069
243
+ canvas_sdk/v1/data/line_item_transaction.py,sha256=JVZANCBFuZz777837S9ILVjHR31QrBbvQ3Lwc6GyuA0,2440
244
+ canvas_sdk/v1/data/medication.py,sha256=5mTbqozFo0EdGALXeV1aAywzVFn_J6UxXqNpU_FLFyw,2382
238
245
  canvas_sdk/v1/data/message.py,sha256=P95_oeOnaSDEPFoCx6Gcl54-NgYbW8BgIXizl5pBSiQ,2435
239
246
  canvas_sdk/v1/data/note.py,sha256=E92cgA90hQCAZjIEqFzZOcWJ74RoVEwDpG4Fx35NCkM,6790
240
- canvas_sdk/v1/data/observation.py,sha256=jhnFEoN5GxU3YOcrq2Ws14mM5xTSrSCz7PpVV_MVzWQ,3938
241
- canvas_sdk/v1/data/organization.py,sha256=w26opo08J6R42FxiYDB1FU1ErUNzVfZkVJzEOhufsos,999
247
+ canvas_sdk/v1/data/observation.py,sha256=Hh8UKY1iqIYAqySWhwoj86Gmkbhz90C2m4GIx56ucyo,4034
248
+ canvas_sdk/v1/data/organization.py,sha256=-q1MbjPWihCaoKx6ZkRSY2JD3VNzAHIGGd6foMDwAy8,1031
242
249
  canvas_sdk/v1/data/patient.py,sha256=wO_oo3nzb2h8u68v7Te6BCEdww90tNmU2E-bc3D1t3o,8317
250
+ canvas_sdk/v1/data/payment_collection.py,sha256=4ulvp6xWFwiFUrk0utPxy70FPkT1dmOrjwjxQrKYflY,939
251
+ canvas_sdk/v1/data/posting.py,sha256=1K5GwUIyKEDdN2P5zmOu5PWVjsAZTe6ZLluH0CXTmwE,7841
243
252
  canvas_sdk/v1/data/practicelocation.py,sha256=5Z6dq-XFsdo8fqr8nm4b8IvxDMgPgoViHMip8i8o8VE,4308
244
- canvas_sdk/v1/data/protocol_override.py,sha256=nHB425UiPUi6YbyLR1UhRuQhY-hZ9pj2avjXeccZgTY,2183
245
- canvas_sdk/v1/data/questionnaire.py,sha256=qsa-2hf2VtSw9B1gMwHh9QIvDAkW6gOErzm9d6Fk4Hk,7185
253
+ canvas_sdk/v1/data/protocol_override.py,sha256=B4FOunuS1h4VvO5m20SCwRHqG1_pAaxMgqrZ2Bwbong,2247
254
+ canvas_sdk/v1/data/questionnaire.py,sha256=1zp16o8nbNe-ZVEQdoBfDaF2Qcgq0xySE6w3W8cQ1fM,7249
246
255
  canvas_sdk/v1/data/reason_for_visit.py,sha256=lE0Fu5FCMlHPJzdE5fT5MQsuKd0dX2cEMRmDYYDgZRo,657
247
256
  canvas_sdk/v1/data/staff.py,sha256=tdVQmAJa-fq9CWixkijZ_u0fLXXAZ5WPf0lYSA83B6A,4955
248
257
  canvas_sdk/v1/data/task.py,sha256=wmwgt70ocpboV_ov2GUAFbwcL-qGaotMgOk7DIpe6I0,3634
249
258
  canvas_sdk/v1/data/team.py,sha256=9i5EKhq9Nhmx52nt2RLC3qOVRddKsAQbhfoP5Z9xDbE,2861
250
259
  canvas_sdk/v1/data/user.py,sha256=Go2Mxso7RlMr0uhamPMenKt75RsyJCPnd9BscHxt6OA,435
260
+ canvas_sdk/v1/data/utils.py,sha256=r0vMl4l7hxBFYDWRA_kXKycvFCmEch3SmeTgdsOHDec,279
251
261
  canvas_sdk/value_set/__init__.py,sha256=YYXr5tEQlnwMgTXJbOG963tKSPiUOM4mUkX8wuiqp7U,17
252
262
  canvas_sdk/value_set/custom.py,sha256=smf5fnPwuW-7H_B49CUfLWnq1QH-PhItvYw0siVsu-o,20173
253
263
  canvas_sdk/value_set/hcc2018.py,sha256=MMudhqOOgvedh8-dDfC_JbHJn-sNRbk8Q357agD_Pww,2198496
@@ -280,13 +290,13 @@ plugin_runner/installation.py,sha256=LLjtnzPk-w4go3UbXnBItJTKz1ajR_5kGQbFXTaWTFU
280
290
  plugin_runner/load_all_plugins.py,sha256=4T2gW2YljhIx4xfwf1c0F_8oIbE1ubsLj0ShkHRtlVY,5847
281
291
  plugin_runner/plugin_runner.py,sha256=Z7ySPJSY4AMGRR0PtdXA_I3z8rxlDpjssuMspHIc79U,21655
282
292
  plugin_runner/sandbox.py,sha256=vxfPKkz3A31g_QAD6eqa-CFt7z6xTp4FHu6RBrxoNz8,28589
283
- protobufs/canvas_generated/messages/effects.proto,sha256=i6H_Fs6F3I1AzeEo68mhesoir6iH_5RngpDk9K42TZg,8617
293
+ protobufs/canvas_generated/messages/effects.proto,sha256=aMdW-xJsjPHfTsYZvAgu_cDIJqrqsdd3onBkJFKy5qM,8662
284
294
  protobufs/canvas_generated/messages/events.proto,sha256=DSxbxKp7BTZpI4M14Sm7-XpHdUnN3bC3RapRqZbxgiQ,48751
285
295
  protobufs/canvas_generated/messages/plugins.proto,sha256=oNainUPWFYQjgCX7bJEPI9_VnHC5VZduzOqgR4Q7dNM,109
286
296
  protobufs/canvas_generated/services/plugin_runner.proto,sha256=doadBKn5k4xAtOgR-q_pEvW4yzxpUaHNOowMG6CL5GY,304
287
297
  pubsub/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
288
298
  pubsub/pubsub.py,sha256=PHIvJ5SD3M-jQSYeGGSj1FuG6CvP6BQffAoGax9Uudk,1423
289
- canvas-0.42.0.dist-info/METADATA,sha256=iRF1zLbPJr_f2fDDkf38SEZZU3X8DH-GGSkfRIpVZ9A,4447
290
- canvas-0.42.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
291
- canvas-0.42.0.dist-info/entry_points.txt,sha256=0Vs_9GmTVUNniH6eDBlRPgofmADMV4BES6Ao26M4AbM,47
292
- canvas-0.42.0.dist-info/RECORD,,
299
+ canvas-0.43.0.dist-info/METADATA,sha256=lfvZjIaAiCkRAJ0C3TGnPy-lB7u6yyojOUq4zWBZzMU,4447
300
+ canvas-0.43.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
301
+ canvas-0.43.0.dist-info/entry_points.txt,sha256=0Vs_9GmTVUNniH6eDBlRPgofmADMV4BES6Ao26M4AbM,47
302
+ canvas-0.43.0.dist-info/RECORD,,
@@ -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*\xb3;\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.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*\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')
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=7778
25
+ _globals['_EFFECTTYPE']._serialized_end=7819
26
26
  _globals['_EFFECT']._serialized_start=51
27
27
  _globals['_EFFECT']._serialized_end=172
28
28
  # @@protoc_insertion_point(module_scope)
@@ -227,6 +227,7 @@ class EffectType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
227
227
  EDIT_MESSAGE: _ClassVar[EffectType]
228
228
  PATIENT_METADATA__CREATE_ADDITIONAL_FIELDS: _ClassVar[EffectType]
229
229
  UPSERT_PATIENT_METADATA: _ClassVar[EffectType]
230
+ CREATE_PATIENT_EXTERNAL_IDENTIFIER: _ClassVar[EffectType]
230
231
  UNKNOWN_EFFECT: EffectType
231
232
  LOG: EffectType
232
233
  ADD_PLAN_COMMAND: EffectType
@@ -447,6 +448,7 @@ CREATE_AND_SEND_MESSAGE: EffectType
447
448
  EDIT_MESSAGE: EffectType
448
449
  PATIENT_METADATA__CREATE_ADDITIONAL_FIELDS: EffectType
449
450
  UPSERT_PATIENT_METADATA: EffectType
451
+ CREATE_PATIENT_EXTERNAL_IDENTIFIER: EffectType
450
452
 
451
453
  class Effect(_message.Message):
452
454
  __slots__ = ("type", "payload", "plugin_name", "classname", "handler_name")
@@ -1,3 +1,11 @@
1
- from canvas_sdk.effects.patient.base import Patient, PatientContactPoint
1
+ from canvas_sdk.effects.patient.base import Patient, PatientContactPoint, PatientExternalIdentifier
2
+ from canvas_sdk.effects.patient.create_patient_external_identifier import (
3
+ CreatePatientExternalIdentifier,
4
+ )
2
5
 
3
- __all__ = __exports__ = ("Patient", "PatientContactPoint")
6
+ __all__ = __exports__ = (
7
+ "Patient",
8
+ "PatientContactPoint",
9
+ "PatientExternalIdentifier",
10
+ "CreatePatientExternalIdentifier",
11
+ )
@@ -32,6 +32,21 @@ class PatientContactPoint:
32
32
  }
33
33
 
34
34
 
35
+ @dataclass
36
+ class PatientExternalIdentifier:
37
+ """A class representing a patient external identifier."""
38
+
39
+ value: str
40
+ system: str | None = None
41
+
42
+ def to_dict(self) -> dict[str, Any]:
43
+ """Convert the external identifier to a dictionary."""
44
+ return {
45
+ "system": self.system,
46
+ "value": self.value,
47
+ }
48
+
49
+
35
50
  class Patient(TrackableFieldsModel):
36
51
  """Effect to create a Patient record."""
37
52
 
@@ -53,6 +68,7 @@ class Patient(TrackableFieldsModel):
53
68
  default_provider_id: str | None = None
54
69
  previous_names: list[str] | None = None
55
70
  contact_points: list[PatientContactPoint] | None = None
71
+ external_identifiers: list[PatientExternalIdentifier] | None = None
56
72
 
57
73
  @property
58
74
  def values(self) -> dict[str, Any]:
@@ -75,6 +91,9 @@ class Patient(TrackableFieldsModel):
75
91
  "contact_points": [cp.to_dict() for cp in self.contact_points]
76
92
  if self.contact_points
77
93
  else None,
94
+ "external_identifiers": [ids.to_dict() for ids in self.external_identifiers]
95
+ if self.external_identifiers
96
+ else None,
78
97
  }
79
98
 
80
99
  def _get_error_details(self, method: Any) -> list[InitErrorDetails]:
@@ -120,4 +139,4 @@ class Patient(TrackableFieldsModel):
120
139
  )
121
140
 
122
141
 
123
- __exports__ = ("Patient", "PatientContactPoint")
142
+ __exports__ = ("Patient", "PatientContactPoint", "PatientExternalIdentifier")
@@ -0,0 +1,40 @@
1
+ import json
2
+
3
+ from canvas_generated.messages.effects_pb2 import Effect
4
+ from canvas_sdk.base import TrackableFieldsModel
5
+
6
+
7
+ class CreatePatientExternalIdentifier(TrackableFieldsModel):
8
+ """Effect to create a Patient External Identifier record."""
9
+
10
+ class Meta:
11
+ effect_type = "PATIENT_EXTERNAL_IDENTIFIER"
12
+
13
+ value: str
14
+ system: str | None = None
15
+ patient_id: str | None = None
16
+
17
+ @property
18
+ def values(self) -> dict[str, str | None]:
19
+ """Return the values of the external identifier."""
20
+ return {
21
+ "value": self.value,
22
+ "system": self.system,
23
+ "patient_id": self.patient_id,
24
+ }
25
+
26
+ def create(self) -> Effect:
27
+ """Create a new Patient External Identifier."""
28
+ self._validate_before_effect("create")
29
+
30
+ return Effect(
31
+ type=f"CREATE_{self.Meta.effect_type}",
32
+ payload=json.dumps(
33
+ {
34
+ "data": self.values,
35
+ }
36
+ ),
37
+ )
38
+
39
+
40
+ __exports__ = ("CreatePatientExternalIdentifier",)
@@ -1,3 +1,6 @@
1
1
  from canvas_sdk.effects.protocol_card.protocol_card import ProtocolCard, Recommendation
2
2
 
3
- __all__ = __exports__ = ("ProtocolCard", "Recommendation")
3
+ __all__ = __exports__ = (
4
+ "ProtocolCard",
5
+ "Recommendation",
6
+ )
@@ -55,6 +55,7 @@ class ProtocolCard(_BaseEffect):
55
55
  status: Status = Status.DUE
56
56
  feedback_enabled: bool = False
57
57
  due_in: int = -1
58
+ can_be_snoozed: bool = False
58
59
 
59
60
  @property
60
61
  def values(self) -> dict[str, Any]:
@@ -68,6 +69,7 @@ class ProtocolCard(_BaseEffect):
68
69
  "status": self.status.value,
69
70
  "feedback_enabled": self.feedback_enabled,
70
71
  "due_in": self.due_in,
72
+ "can_be_snoozed": self.can_be_snoozed,
71
73
  }
72
74
 
73
75
  @property
canvas_sdk/utils/http.py CHANGED
@@ -281,29 +281,73 @@ class OntologiesHttp(JsonOnlyHttp):
281
281
  """
282
282
 
283
283
  def __init__(self) -> None:
284
- super().__init__(base_url="https://ontologies.canvasmedical.com")
284
+ super().__init__(
285
+ base_url=os.getenv("ONTOLOGIES_ENDPOINT", "https://ontologies.canvasmedical.com")
286
+ )
285
287
 
286
288
  self._session.headers.update({"Authorization": os.getenv("PRE_SHARED_KEY", "")})
287
289
 
288
290
 
291
+ class PharmacyHttp:
292
+ """
293
+ An HTTP client for the pharmacy service.
294
+ """
295
+
296
+ def __init__(self) -> None:
297
+ self._http_client = JsonOnlyHttp(
298
+ base_url=os.getenv("PHARMACY_ENDPOINT", "https://pharmacy.canvasmedical.com")
299
+ )
300
+
301
+ self._http_client._session.headers.update(
302
+ {"Authorization": os.getenv("PRE_SHARED_KEY", "")}
303
+ )
304
+
305
+ def search_pharmacies(
306
+ self, search_term: str, latitude: str | None = None, longitude: str | None = None
307
+ ) -> list[dict]:
308
+ """Search for pharmacies by term and optional location."""
309
+ params = {"search": search_term}
310
+ if latitude and longitude:
311
+ params.update(
312
+ {
313
+ "latitude": latitude,
314
+ "longitude": longitude,
315
+ }
316
+ )
317
+
318
+ query_string = urllib.parse.urlencode(params)
319
+ response = self._http_client.get_json(f"/surescripts/pharmacy/?{query_string}")
320
+ response_json = response.json()
321
+ return response_json.get("results", []) if response_json else []
322
+
323
+ def get_pharmacy_by_ncpdp_id(self, ncpdp_id: str) -> dict[str, Any] | None:
324
+ """Lookup a pharmacy by its NCPDP ID."""
325
+ response = self._http_client.get_json(f"/surescripts/pharmacy/ncpdp_id/{ncpdp_id}/")
326
+ return response.json()
327
+
328
+
289
329
  class ScienceHttp(JsonOnlyHttp):
290
330
  """
291
331
  An HTTP client for the ontologies service.
292
332
  """
293
333
 
294
334
  def __init__(self) -> None:
295
- super().__init__(base_url="https://science.canvasmedical.com")
335
+ super().__init__(
336
+ base_url=os.getenv("SCIENCE_ENDPOINT", "https://science.canvasmedical.com")
337
+ )
296
338
 
297
339
  self._session.headers.update({"Authorization": os.getenv("PRE_SHARED_KEY", "")})
298
340
 
299
341
 
300
342
  ontologies_http = OntologiesHttp()
301
343
  science_http = ScienceHttp()
344
+ pharmacy_http = PharmacyHttp()
302
345
 
303
346
  __all__ = __exports__ = (
304
347
  "ThreadPoolExecutor",
305
348
  "Http",
306
349
  "ontologies_http",
350
+ "pharmacy_http",
307
351
  "science_http",
308
352
  "batch_get",
309
353
  "batch_post",
@@ -4,12 +4,16 @@ from .assessment import Assessment
4
4
  from .banner_alert import BannerAlert
5
5
  from .billing import BillingLineItem, BillingLineItemModifier
6
6
  from .care_team import CareTeamMembership, CareTeamRole
7
+ from .claim import Claim, ClaimCoverage, ClaimPatient, ClaimQueue
8
+ from .claim_line_item import ClaimLineItem
7
9
  from .command import Command
8
10
  from .condition import Condition, ConditionCoding
9
11
  from .coverage import Coverage, Transactor, TransactorAddress, TransactorPhone
10
12
  from .detected_issue import DetectedIssue, DetectedIssueEvidence
11
13
  from .device import Device
14
+ from .discount import Discount
12
15
  from .imaging import ImagingOrder, ImagingReport, ImagingReview
16
+ from .invoice import Invoice
13
17
  from .lab import (
14
18
  LabOrder,
15
19
  LabOrderReason,
@@ -20,6 +24,7 @@ from .lab import (
20
24
  LabValue,
21
25
  LabValueCoding,
22
26
  )
27
+ from .line_item_transaction import LineItemTransfer, NewLineItemAdjustment, NewLineItemPayment
23
28
  from .medication import Medication, MedicationCoding
24
29
  from .message import Message, MessageAttachment, MessageTransmission
25
30
  from .note import Note, NoteType
@@ -39,6 +44,14 @@ from .patient import (
39
44
  PatientMetadata,
40
45
  PatientSetting,
41
46
  )
47
+ from .payment_collection import PaymentCollection
48
+ from .posting import (
49
+ BasePosting,
50
+ BaseRemittanceAdvice,
51
+ BulkPatientPosting,
52
+ CoveragePosting,
53
+ PatientPosting,
54
+ )
42
55
  from .practicelocation import PracticeLocation, PracticeLocationSetting
43
56
  from .protocol_override import ProtocolOverride
44
57
  from .questionnaire import (
@@ -63,24 +76,35 @@ __all__ = __exports__ = (
63
76
  "AllergyIntoleranceCoding",
64
77
  "Assessment",
65
78
  "BannerAlert",
79
+ "BasePosting",
80
+ "BaseRemittanceAdvice",
66
81
  "BillingLineItem",
67
82
  "BillingLineItemModifier",
83
+ "BulkPatientPosting",
68
84
  "CanvasUser",
69
85
  "CareTeamMembership",
70
86
  "CareTeamRole",
87
+ "Claim",
88
+ "ClaimCoverage",
89
+ "ClaimLineItem",
90
+ "ClaimPatient",
91
+ "ClaimQueue",
71
92
  "Command",
72
93
  "Condition",
73
94
  "ConditionCoding",
74
95
  "Coverage",
96
+ "CoveragePosting",
75
97
  "DetectedIssue",
76
98
  "DetectedIssueEvidence",
77
99
  "Device",
100
+ "Discount",
78
101
  "ImagingOrder",
79
102
  "ImagingReport",
80
103
  "ImagingReview",
81
104
  "Interview",
82
105
  "InterviewQuestionnaireMap",
83
106
  "InterviewQuestionResponse",
107
+ "Invoice",
84
108
  "LabOrder",
85
109
  "LabOrderReason",
86
110
  "LabOrderReasonCondition",
@@ -89,11 +113,14 @@ __all__ = __exports__ = (
89
113
  "LabTest",
90
114
  "LabValue",
91
115
  "LabValueCoding",
116
+ "LineItemTransfer",
92
117
  "Medication",
93
118
  "MedicationCoding",
94
119
  "Message",
95
120
  "MessageAttachment",
96
121
  "MessageTransmission",
122
+ "NewLineItemAdjustment",
123
+ "NewLineItemPayment",
97
124
  "Note",
98
125
  "NoteType",
99
126
  "Observation",
@@ -106,8 +133,10 @@ __all__ = __exports__ = (
106
133
  "PatientAddress",
107
134
  "PatientContactPoint",
108
135
  "PatientExternalIdentifier",
136
+ "PatientPosting",
109
137
  "PatientSetting",
110
138
  "PatientMetadata",
139
+ "PaymentCollection",
111
140
  "PracticeLocation",
112
141
  "PracticeLocationSetting",
113
142
  "ProtocolOverride",
@@ -37,8 +37,12 @@ class AllergyIntolerance(models.Model):
37
37
  created = models.DateTimeField()
38
38
  modified = models.DateTimeField()
39
39
  deleted = models.BooleanField()
40
- committer = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
41
- entered_in_error = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
40
+ committer = models.ForeignKey(
41
+ "v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
42
+ )
43
+ entered_in_error = models.ForeignKey(
44
+ "v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
45
+ )
42
46
  patient = models.ForeignKey(
43
47
  "v1.Patient",
44
48
  on_delete=models.DO_NOTHING,
@@ -20,10 +20,14 @@ class Assessment(models.Model):
20
20
  dbid = models.BigIntegerField(primary_key=True)
21
21
  created = models.DateTimeField()
22
22
  modified = models.DateTimeField()
23
- originator = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING)
24
- committer = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
23
+ originator = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, related_name="+")
24
+ committer = models.ForeignKey(
25
+ "v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
26
+ )
25
27
  deleted = models.BooleanField()
26
- entered_in_error = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
28
+ entered_in_error = models.ForeignKey(
29
+ "v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
30
+ )
27
31
  patient = models.ForeignKey(
28
32
  "v1.Patient",
29
33
  on_delete=models.DO_NOTHING,
@@ -56,7 +56,7 @@ class BillingLineItem(models.Model):
56
56
  null=True,
57
57
  )
58
58
  cpt = models.CharField()
59
- charge = models.DecimalField()
59
+ charge = models.DecimalField(decimal_places=2, max_digits=8)
60
60
  description = models.CharField()
61
61
  units = models.IntegerField()
62
62
  command_type = models.CharField()