canvas 0.58.1__py3-none-any.whl → 0.60.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.
- {canvas-0.58.1.dist-info → canvas-0.60.0.dist-info}/METADATA +1 -1
- {canvas-0.58.1.dist-info → canvas-0.60.0.dist-info}/RECORD +23 -16
- canvas_generated/messages/effects_pb2.py +2 -2
- canvas_generated/messages/effects_pb2.pyi +4 -0
- canvas_sdk/effects/patient/__init__.py +13 -1
- canvas_sdk/effects/patient/base.py +159 -26
- canvas_sdk/effects/patient/create_patient_preferred_pharmacies.py +70 -0
- canvas_sdk/test_utils/factories/__init__.py +11 -2
- canvas_sdk/test_utils/factories/facility.py +21 -0
- canvas_sdk/test_utils/factories/patient.py +13 -1
- canvas_sdk/test_utils/factories/protocol_current.py +44 -0
- canvas_sdk/v1/data/__init__.py +10 -1
- canvas_sdk/v1/data/facility.py +27 -0
- canvas_sdk/v1/data/goal.py +70 -0
- canvas_sdk/v1/data/note.py +1 -0
- canvas_sdk/v1/data/patient.py +39 -7
- canvas_sdk/v1/data/protocol_current.py +23 -0
- canvas_sdk/v1/data/protocol_result.py +46 -0
- canvas_sdk/v1/data/staff.py +36 -1
- plugin_runner/allowed-module-imports.json +34 -2
- protobufs/canvas_generated/messages/effects.proto +3 -1
- {canvas-0.58.1.dist-info → canvas-0.60.0.dist-info}/WHEEL +0 -0
- {canvas-0.58.1.dist-info → canvas-0.60.0.dist-info}/entry_points.txt +0 -0
|
@@ -81,8 +81,8 @@ canvas_cli/utils/urls/urls.py,sha256=KwWTh5ERrEsZEvdBrZpZB71xtyWkDuglpXUbycWmBOo
|
|
|
81
81
|
canvas_cli/utils/validators/__init__.py,sha256=rBvSR2O1hWkNAnUBdcr-zUkmqT796_A61b9pnvEhwrM,113
|
|
82
82
|
canvas_cli/utils/validators/manifest_schema.py,sha256=XNw-sbFgxaXzffWnQd6zLg5V74odv7jGiEFENWKnluA,6057
|
|
83
83
|
canvas_cli/utils/validators/validators.py,sha256=lrUBQ0sF7seTe_pNGsNgASdr2BGp6g-Qui58V4H9qfQ,1598
|
|
84
|
-
canvas_generated/messages/effects_pb2.py,sha256=
|
|
85
|
-
canvas_generated/messages/effects_pb2.pyi,sha256=
|
|
84
|
+
canvas_generated/messages/effects_pb2.py,sha256=S8DwZqNNukADofnE4iUw6J_AE1Gyj5J5DrUiKxF_IqY,14157
|
|
85
|
+
canvas_generated/messages/effects_pb2.pyi,sha256=eYGOGEh7HPW3TvIAFFFHNfbx0Qrgpc0XPJwoVCQmM4k,25351
|
|
86
86
|
canvas_generated/messages/effects_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
87
87
|
canvas_generated/messages/events_pb2.py,sha256=h7Uh37N5qEcocRFjLc3P-8WQXgU419hDbXAMcCqhbfw,55788
|
|
88
88
|
canvas_generated/messages/events_pb2.pyi,sha256=1Q6Htlh7bjD4U67OYrdpQDyc6yLVW74nPeKvbsQdqBI,100563
|
|
@@ -171,9 +171,10 @@ canvas_sdk/effects/note/appointment.py,sha256=ca46df8onI-I6szPJWSz_N745PWchKMBcr
|
|
|
171
171
|
canvas_sdk/effects/note/base.py,sha256=3TeUdVsWWl0iJ8fkbCLJ0SjcZ0fEASy50r-ubSXvCpI,7587
|
|
172
172
|
canvas_sdk/effects/note/message.py,sha256=T6p6h4J_I0k2jQSirFtIusydak4tem9yBPOTexvOQ0s,3740
|
|
173
173
|
canvas_sdk/effects/note/note.py,sha256=_iVVagZUM4fWOMw3Cy4KXl5rd-1_NgF57QSBl5y9d7w,4610
|
|
174
|
-
canvas_sdk/effects/patient/__init__.py,sha256=
|
|
175
|
-
canvas_sdk/effects/patient/base.py,sha256=
|
|
174
|
+
canvas_sdk/effects/patient/__init__.py,sha256=QC5UszNibt-BTC3rfCq9y-j4-APuBMUZfAllB8WnIDY,636
|
|
175
|
+
canvas_sdk/effects/patient/base.py,sha256=E60n-RtD8q5Fo1UxCS1-RmZu14qBV5raiYtm2TcxrWU,8342
|
|
176
176
|
canvas_sdk/effects/patient/create_patient_external_identifier.py,sha256=d03jzJcz2n19_NVo_wAq88iKZRuuM60qsZhGGhL7pGE,1055
|
|
177
|
+
canvas_sdk/effects/patient/create_patient_preferred_pharmacies.py,sha256=Vaby6L5PALtLAiJCNmqKsDec8UZ7DVFyP7kU0fHrpT4,2096
|
|
177
178
|
canvas_sdk/effects/patient_metadata/__init__.py,sha256=vxTpaP9gY1iNf0iVSoh24buFR7XfY2FKVYKn_P7BJkg,342
|
|
178
179
|
canvas_sdk/effects/patient_metadata/base.py,sha256=pq_xtFLyzHfYWTCjWEicOfsLkG3Nu_ECzLB85tYOToM,1286
|
|
179
180
|
canvas_sdk/effects/patient_metadata/patient_metadata_create_form.py,sha256=ePoPcG2vuFrsnhPWU_XavMK5UVAxBvcMzDhpu9HzTu0,1918
|
|
@@ -213,8 +214,10 @@ canvas_sdk/questionnaires/utils.py,sha256=avDMUcQ5XmLfhlBpPJNMtNrVqrPy7g7HtqbSzz
|
|
|
213
214
|
canvas_sdk/templates/__init__.py,sha256=LtUmLDsGSTq249T6sA7PUzkl2OfCAyvtIOGPNHr6wTo,83
|
|
214
215
|
canvas_sdk/templates/utils.py,sha256=J-wDQ9ijOr_jz1SJxjpyZgR7JwXqtGMSS5IperLi2qE,1475
|
|
215
216
|
canvas_sdk/test_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
216
|
-
canvas_sdk/test_utils/factories/__init__.py,sha256=
|
|
217
|
-
canvas_sdk/test_utils/factories/
|
|
217
|
+
canvas_sdk/test_utils/factories/__init__.py,sha256=xzQECzqaDsPAYEBNqfSiz7CEFFI9I7pnYQtHaTuP2r0,398
|
|
218
|
+
canvas_sdk/test_utils/factories/facility.py,sha256=9ZNBHCgPelD4oQynwez32I4Gx0kV1O78kgKvuiByyhg,697
|
|
219
|
+
canvas_sdk/test_utils/factories/patient.py,sha256=zXy47K9C6cmQympOABHGUv-1hOqYIXNb7c4TziFO1RE,1594
|
|
220
|
+
canvas_sdk/test_utils/factories/protocol_current.py,sha256=twq6GdTM29WYZ-AvfE3vkfV3dOMhZDmv_lNZC2eGe8g,1904
|
|
218
221
|
canvas_sdk/test_utils/factories/user.py,sha256=QLxilvK22fHSsGFxe1j354VdMrdquO8nyWApdXXdS8Q,306
|
|
219
222
|
canvas_sdk/utils/__init__.py,sha256=PADveJMf-BtOapK5Cczy-nOuZzVh-HT2H6sfJW_SK9U,198
|
|
220
223
|
canvas_sdk/utils/db.py,sha256=wOZORBfyBVxQkay5vyEtQ4i0KVCfASFGREmecHMR8DE,409
|
|
@@ -224,7 +227,7 @@ canvas_sdk/utils/plugins.py,sha256=OPq9OiE1v1AF24HSdEEOlSJxRVc2NVksK0Gpf6OH1NE,1
|
|
|
224
227
|
canvas_sdk/v1/__init__.py,sha256=YYXr5tEQlnwMgTXJbOG963tKSPiUOM4mUkX8wuiqp7U,17
|
|
225
228
|
canvas_sdk/v1/apps.py,sha256=4MwQfQu78oX5bUVlyxYzbt4rZODi0ZesXe_3QOsEWO8,170
|
|
226
229
|
canvas_sdk/v1/models.py,sha256=LqeHZ-Hz3EWyM9vYr9uZ9rBYdMXNuuvJqbmojV8EcEM,224
|
|
227
|
-
canvas_sdk/v1/data/__init__.py,sha256=
|
|
230
|
+
canvas_sdk/v1/data/__init__.py,sha256=z-mtXiNq6ylRVfICK6xizERIx2F3DHUqLB2Gw3-HM2U,5524
|
|
228
231
|
canvas_sdk/v1/data/allergy_intolerance.py,sha256=KXfU7UqTdRfHUFrP8yncQGMvlRPEt2K6TrC_y7JYgiE,2453
|
|
229
232
|
canvas_sdk/v1/data/appointment.py,sha256=UXvn6wYEgsphhTQaFbFg-UE7Bumy_UR-AQFnsSrL5Dk,2658
|
|
230
233
|
canvas_sdk/v1/data/assessment.py,sha256=vnVoaKWoJGCfaYn6WilxpI5cTgkvM647hFIuTyi_AgY,1663
|
|
@@ -244,28 +247,32 @@ canvas_sdk/v1/data/coverage.py,sha256=i03BeVxNCsxXWnBL8klySFRXXN-T1hF01HyCvcCnlY
|
|
|
244
247
|
canvas_sdk/v1/data/detected_issue.py,sha256=k-tOX6fpzfRf9WmG7neHPEeWrpZUdTiTEqYzKaa2haI,1865
|
|
245
248
|
canvas_sdk/v1/data/device.py,sha256=5YnCApQR3ZprGO9zCsSP-4spwo4HVRDSTY3QCNwqYlo,1932
|
|
246
249
|
canvas_sdk/v1/data/discount.py,sha256=Bqa0PcytSdqZ0MJor9EShtRUmNWGcBKtivGCmjk9Pbw,618
|
|
250
|
+
canvas_sdk/v1/data/facility.py,sha256=_Ux4D34Evcexu95iRMLN0foGcHJI6KweIYkbyYVAe0s,947
|
|
247
251
|
canvas_sdk/v1/data/fields.py,sha256=bI7mPI_3B36ntyoVQ6vuDq8eGLoUIkwZZr14lTC-4To,1104
|
|
252
|
+
canvas_sdk/v1/data/goal.py,sha256=dOI0rakLBnnYSkdMt5W2uh7_W5Pp21G6s1z70PzU3TY,2465
|
|
248
253
|
canvas_sdk/v1/data/imaging.py,sha256=N0OkJjmHI3jtv1w8RBhqGZGDGidNpf1ZwT0ypm1o60M,5246
|
|
249
254
|
canvas_sdk/v1/data/invoice.py,sha256=F5j_Hvu-YwqhHFkp6FDui8vx6GumCAgj14YgDvfyeYU,1877
|
|
250
255
|
canvas_sdk/v1/data/lab.py,sha256=8FPnApgcEfZ5f62387EgY6RZd8za2wps5LMzCB0_x6U,12969
|
|
251
256
|
canvas_sdk/v1/data/line_item_transaction.py,sha256=OJA_3DLA1RF0v8jCgQ8SHaoqij_Z97Iatfi5i6CVEis,2406
|
|
252
257
|
canvas_sdk/v1/data/medication.py,sha256=QMAUqqldJeQK9IuaoO5mWFp3IEjbqcqrxkzIgFZ4O0U,2333
|
|
253
258
|
canvas_sdk/v1/data/message.py,sha256=EKc2kkWGuzrgBH3sDUa9jiNpRP7J1ZdWE6BnPhY2gvs,2268
|
|
254
|
-
canvas_sdk/v1/data/note.py,sha256=
|
|
259
|
+
canvas_sdk/v1/data/note.py,sha256=Eq0JgDRzwK84BAT6Y51f47Gke2rseC3vvcjoqhzAsVE,9335
|
|
255
260
|
canvas_sdk/v1/data/observation.py,sha256=l1EXGQ8FBBInxQthsmY1Oms9v73ni_J7SAP5M8Hmkvg,3881
|
|
256
261
|
canvas_sdk/v1/data/organization.py,sha256=gt0KZC1hklwWf57vCxs2K0qPnLpMyyNFWNL7-WZ6AqI,1159
|
|
257
|
-
canvas_sdk/v1/data/patient.py,sha256=
|
|
262
|
+
canvas_sdk/v1/data/patient.py,sha256=VMFlr6P5BxLN6MK0k8hjIccfumdkL8CJrMtDrLms0qY,11748
|
|
258
263
|
canvas_sdk/v1/data/patient_consent.py,sha256=zx1C__E6On-MC7OnTgEeP50tn77R6UXw15wC125jDog,2704
|
|
259
264
|
canvas_sdk/v1/data/payment_collection.py,sha256=h17qmQkCCwSdukIeeYMqBHZnpxpahOa03ckMHmgZV-I,954
|
|
260
265
|
canvas_sdk/v1/data/payor_specific_charge.py,sha256=TtByy7-QF00PfONC-QDo2kkxRAOdLaRjkhssQBPvZjw,770
|
|
261
266
|
canvas_sdk/v1/data/posting.py,sha256=fZhglI5WNGCuZy-kcCurX9hnNUtFUFKjwsqjxyiOC7U,7749
|
|
262
267
|
canvas_sdk/v1/data/practicelocation.py,sha256=O-avErANUE3KwUB_vlRbTe9MywVj2jfBgcZda_q-_Vw,4381
|
|
268
|
+
canvas_sdk/v1/data/protocol_current.py,sha256=TpJR0u6dncWALhGzYgkyJbdSKRtKD-KjWWJplc8pJL0,615
|
|
263
269
|
canvas_sdk/v1/data/protocol_override.py,sha256=zSDHngf9Pqz4irYN_BoX5wy-uJc83NFunPBJnUfS1OI,2259
|
|
270
|
+
canvas_sdk/v1/data/protocol_result.py,sha256=PTzNx57ADsGzG_Zrt3HUa1vi_QyejIYuVMFRZqqJS2A,1604
|
|
264
271
|
canvas_sdk/v1/data/questionnaire.py,sha256=4vQFbBjnvfXwvb73Q0ES64bnWME6P-Oy_9E9ioWAOg8,7209
|
|
265
272
|
canvas_sdk/v1/data/reason_for_visit.py,sha256=diXbeGUUc_XBmIDpzubxesc6Nhj5F87zw2oYurPSE3M,669
|
|
266
273
|
canvas_sdk/v1/data/referral.py,sha256=qVPHWqDlJoBzrYsNhP6z2NQ2Wpus_OxW8LwHYpLlM-M,3589
|
|
267
274
|
canvas_sdk/v1/data/service_provider.py,sha256=LQfQ0esg97NpmSYnftsWqYUJyJIQOZKmpZFNnGsxXoQ,1917
|
|
268
|
-
canvas_sdk/v1/data/staff.py,sha256=
|
|
275
|
+
canvas_sdk/v1/data/staff.py,sha256=osAPzLw2y-SJW5TQt69RnKBmsDx5wKeDNmbBtfxYDWw,9392
|
|
269
276
|
canvas_sdk/v1/data/task.py,sha256=9jSqr7e7ODJTs4hanWsOD-1Rb8gByJOuLta90V9V_hY,3480
|
|
270
277
|
canvas_sdk/v1/data/team.py,sha256=J4s98sS7UuUw9jJCe-_7eikr1dV4SQARDzK5oxmsO_o,2832
|
|
271
278
|
canvas_sdk/v1/data/user.py,sha256=82jnqVrYeWo2eBXY_MH2r75LZo5EKgY9kalahrUl0_s,511
|
|
@@ -295,7 +302,7 @@ canvas_sdk/views/__init__.py,sha256=YYXr5tEQlnwMgTXJbOG963tKSPiUOM4mUkX8wuiqp7U,
|
|
|
295
302
|
logger/__init__.py,sha256=uMIOf1CDdKSmBKxKwO4CmDpvnJITci76IMXENOwSHEo,85
|
|
296
303
|
logger/logger.py,sha256=l5W5jn3vGQt6TM7OxOpoMy-vC7RNNA2pGnQJJgHeXWA,2068
|
|
297
304
|
plugin_runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
298
|
-
plugin_runner/allowed-module-imports.json,sha256=
|
|
305
|
+
plugin_runner/allowed-module-imports.json,sha256=Z0WtFFA52DUF-oCeI50_4iURWRSN2-vdd1T-ewxh4rM,36717
|
|
299
306
|
plugin_runner/authentication.py,sha256=UyyhXajokVFH866dpDhoTlXS9Cg7y0sQltn0_LcwXrY,1131
|
|
300
307
|
plugin_runner/aws_headers.py,sha256=wZ8584E1fTW0CdGxOCnLSF8alH27z-URcUyoc6y6ohg,2782
|
|
301
308
|
plugin_runner/exceptions.py,sha256=ltqn56SMTg-T5miSh5hux4ojwx0hZGSWaB7BxyAmcAo,545
|
|
@@ -304,7 +311,7 @@ plugin_runner/installation.py,sha256=2KTDWWsQ97WIN2k9tC4d50zN77WWK_1D5obXlhLfWw8
|
|
|
304
311
|
plugin_runner/load_all_plugins.py,sha256=4T2gW2YljhIx4xfwf1c0F_8oIbE1ubsLj0ShkHRtlVY,5847
|
|
305
312
|
plugin_runner/plugin_runner.py,sha256=RpcZoXXzGEflJGuHJaAOCP24mWb4fG1bLw3ryA6n88k,26623
|
|
306
313
|
plugin_runner/sandbox.py,sha256=A5iaxQePwA5FERK232MArq2VzZzHKM5ydrfTDFeXcLg,30232
|
|
307
|
-
protobufs/canvas_generated/messages/effects.proto,sha256=
|
|
314
|
+
protobufs/canvas_generated/messages/effects.proto,sha256=ovVNjjWd6LvRnrk0Pu76AeT6wQjA_K-vvxMvgafQYMI,9827
|
|
308
315
|
protobufs/canvas_generated/messages/events.proto,sha256=21qM3Ct9-iIG_T7O-XoFPWpnVafocYJ1KGiZ2nn1CFM,52047
|
|
309
316
|
protobufs/canvas_generated/messages/plugins.proto,sha256=xJyEeTwM6wWja3vGECLsIzfabwf1VahDgacoPL3TuwI,323
|
|
310
317
|
protobufs/canvas_generated/services/plugin_runner.proto,sha256=PZ0Ts11b9tdA5Gkg2M05JVEKAm0R4LFEwrGRS-TQ16E,466
|
|
@@ -324,7 +331,7 @@ canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/{{ cookie
|
|
|
324
331
|
canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/{{ cookiecutter.__package_name }}/README.md,sha256=3QKoJQq3YmdplGnDOBMsLCJ3Ya1_aKjoz-QiWc4QfjA,291
|
|
325
332
|
canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/{{ cookiecutter.__package_name }}/protocols/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
326
333
|
canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/{{ cookiecutter.__package_name }}/protocols/my_protocol.py,sha256=fKLLcOIwvSWenW8-7tr8VqnF4Iox_5wU9V-Qw9UySsA,2381
|
|
327
|
-
canvas-0.
|
|
328
|
-
canvas-0.
|
|
329
|
-
canvas-0.
|
|
330
|
-
canvas-0.
|
|
334
|
+
canvas-0.60.0.dist-info/METADATA,sha256=ubqSX0pfGxciJWZiyzLwb2dijpOB5f8uM3PPV1DHFF8,4758
|
|
335
|
+
canvas-0.60.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
336
|
+
canvas-0.60.0.dist-info/entry_points.txt,sha256=0Vs_9GmTVUNniH6eDBlRPgofmADMV4BES6Ao26M4AbM,47
|
|
337
|
+
canvas-0.60.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*\xb2\x43\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\x1b\n\x16SEND_PRESCRIBE_COMMAND\x10\x99\n\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\x1b\n\x16SEND_LAB_ORDER_COMMAND\x10\x9a\n\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\x18\n\x13SEND_REFILL_COMMAND\x10\x9c\n\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 SEND_ADJUST_PRESCRIPTION_COMMAND\x10\x9b\n\x12+\n&ORIGINATE_CHART_SECTION_REVIEW_COMMAND\x10\xf8\n\x12-\n(ORIGINATE_IMMUNIZATION_STATEMENT_COMMAND\x10\xdc\x0b\x12(\n#EDIT_IMMUNIZATION_STATEMENT_COMMAND\x10\xdd\x0b\x12*\n%DELETE_IMMUNIZATION_STATEMENT_COMMAND\x10\xde\x0b\x12*\n%COMMIT_IMMUNIZATION_STATEMENT_COMMAND\x10\xdf\x0b\x12\x32\n-ENTER_IN_ERROR_IMMUNIZATION_STATEMENT_COMMAND\x10\xe0\x0b\x12&\n!COMMAND_AVAILABLE_ACTIONS_RESULTS\x10\xc0\x0c\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.\x12\x1f\n\x1a\x43REATE_COMPOUND_MEDICATION\x10\x84/\x12\x1f\n\x1aUPDATE_COMPOUND_MEDICATION\x10\x85/\x12\x1f\n\x1aPATIENT_CHART__GROUP_ITEMS\x10\x8e/\x12\x18\n\x13SHOW_PANEL_SECTIONS\x10\xd4/\x12\x15\n\x10REDIRECT_CONTEXT\x10\xb8\x30\x12)\n$REVENUE__PAYMENT_PROCESSOR__METADATA\x10\xd9\x36\x12%\n REVENUE__PAYMENT_PROCESSOR__FORM\x10\xda\x36\x12\x38\n3REVENUE__PAYMENT_PROCESSOR__CREDIT_CARD_TRANSACTION\x10\xdb\x36\x12/\n*REVENUE__PAYMENT_PROCESSOR__PAYMENT_METHOD\x10\xdc\x36\x12=\n8REVENUE__PAYMENT_PROCESSOR__PAYMENT_METHOD__ADD_RESPONSE\x10\xdd\x36\x12@\n;REVENUE__PAYMENT_PROCESSOR__PAYMENT_METHOD__REMOVE_RESPONSE\x10\xde\x36\x62\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*\xf1\x43\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\x1b\n\x16SEND_PRESCRIBE_COMMAND\x10\x99\n\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\x1b\n\x16SEND_LAB_ORDER_COMMAND\x10\x9a\n\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\x18\n\x13SEND_REFILL_COMMAND\x10\x9c\n\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 SEND_ADJUST_PRESCRIPTION_COMMAND\x10\x9b\n\x12+\n&ORIGINATE_CHART_SECTION_REVIEW_COMMAND\x10\xf8\n\x12-\n(ORIGINATE_IMMUNIZATION_STATEMENT_COMMAND\x10\xdc\x0b\x12(\n#EDIT_IMMUNIZATION_STATEMENT_COMMAND\x10\xdd\x0b\x12*\n%DELETE_IMMUNIZATION_STATEMENT_COMMAND\x10\xde\x0b\x12*\n%COMMIT_IMMUNIZATION_STATEMENT_COMMAND\x10\xdf\x0b\x12\x32\n-ENTER_IN_ERROR_IMMUNIZATION_STATEMENT_COMMAND\x10\xe0\x0b\x12&\n!COMMAND_AVAILABLE_ACTIONS_RESULTS\x10\xc0\x0c\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\x0eUPDATE_PATIENT\x10\xf8.\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.\x12(\n#CREATE_PATIENT_PREFERRED_PHARMACIES\x10\x82/\x12\x1f\n\x1a\x43REATE_COMPOUND_MEDICATION\x10\x84/\x12\x1f\n\x1aUPDATE_COMPOUND_MEDICATION\x10\x85/\x12\x1f\n\x1aPATIENT_CHART__GROUP_ITEMS\x10\x8e/\x12\x18\n\x13SHOW_PANEL_SECTIONS\x10\xd4/\x12\x15\n\x10REDIRECT_CONTEXT\x10\xb8\x30\x12)\n$REVENUE__PAYMENT_PROCESSOR__METADATA\x10\xd9\x36\x12%\n REVENUE__PAYMENT_PROCESSOR__FORM\x10\xda\x36\x12\x38\n3REVENUE__PAYMENT_PROCESSOR__CREDIT_CARD_TRANSACTION\x10\xdb\x36\x12/\n*REVENUE__PAYMENT_PROCESSOR__PAYMENT_METHOD\x10\xdc\x36\x12=\n8REVENUE__PAYMENT_PROCESSOR__PAYMENT_METHOD__ADD_RESPONSE\x10\xdd\x36\x12@\n;REVENUE__PAYMENT_PROCESSOR__PAYMENT_METHOD__REMOVE_RESPONSE\x10\xde\x36\x62\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=8864
|
|
26
26
|
_globals['_EFFECT']._serialized_start=51
|
|
27
27
|
_globals['_EFFECT']._serialized_end=172
|
|
28
28
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -236,6 +236,7 @@ class EffectType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
|
236
236
|
UPDATE_SCHEDULE_EVENT: _ClassVar[EffectType]
|
|
237
237
|
DELETE_SCHEDULE_EVENT: _ClassVar[EffectType]
|
|
238
238
|
CREATE_PATIENT: _ClassVar[EffectType]
|
|
239
|
+
UPDATE_PATIENT: _ClassVar[EffectType]
|
|
239
240
|
CREATE_MESSAGE: _ClassVar[EffectType]
|
|
240
241
|
SEND_MESSAGE: _ClassVar[EffectType]
|
|
241
242
|
CREATE_AND_SEND_MESSAGE: _ClassVar[EffectType]
|
|
@@ -243,6 +244,7 @@ class EffectType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
|
243
244
|
PATIENT_METADATA__CREATE_ADDITIONAL_FIELDS: _ClassVar[EffectType]
|
|
244
245
|
UPSERT_PATIENT_METADATA: _ClassVar[EffectType]
|
|
245
246
|
CREATE_PATIENT_EXTERNAL_IDENTIFIER: _ClassVar[EffectType]
|
|
247
|
+
CREATE_PATIENT_PREFERRED_PHARMACIES: _ClassVar[EffectType]
|
|
246
248
|
CREATE_COMPOUND_MEDICATION: _ClassVar[EffectType]
|
|
247
249
|
UPDATE_COMPOUND_MEDICATION: _ClassVar[EffectType]
|
|
248
250
|
PATIENT_CHART__GROUP_ITEMS: _ClassVar[EffectType]
|
|
@@ -483,6 +485,7 @@ CREATE_SCHEDULE_EVENT: EffectType
|
|
|
483
485
|
UPDATE_SCHEDULE_EVENT: EffectType
|
|
484
486
|
DELETE_SCHEDULE_EVENT: EffectType
|
|
485
487
|
CREATE_PATIENT: EffectType
|
|
488
|
+
UPDATE_PATIENT: EffectType
|
|
486
489
|
CREATE_MESSAGE: EffectType
|
|
487
490
|
SEND_MESSAGE: EffectType
|
|
488
491
|
CREATE_AND_SEND_MESSAGE: EffectType
|
|
@@ -490,6 +493,7 @@ EDIT_MESSAGE: EffectType
|
|
|
490
493
|
PATIENT_METADATA__CREATE_ADDITIONAL_FIELDS: EffectType
|
|
491
494
|
UPSERT_PATIENT_METADATA: EffectType
|
|
492
495
|
CREATE_PATIENT_EXTERNAL_IDENTIFIER: EffectType
|
|
496
|
+
CREATE_PATIENT_PREFERRED_PHARMACIES: EffectType
|
|
493
497
|
CREATE_COMPOUND_MEDICATION: EffectType
|
|
494
498
|
UPDATE_COMPOUND_MEDICATION: EffectType
|
|
495
499
|
PATIENT_CHART__GROUP_ITEMS: EffectType
|
|
@@ -1,11 +1,23 @@
|
|
|
1
|
-
from canvas_sdk.effects.patient.base import
|
|
1
|
+
from canvas_sdk.effects.patient.base import (
|
|
2
|
+
Patient,
|
|
3
|
+
PatientAddress,
|
|
4
|
+
PatientContactPoint,
|
|
5
|
+
PatientExternalIdentifier,
|
|
6
|
+
PatientPreferredPharmacy,
|
|
7
|
+
)
|
|
2
8
|
from canvas_sdk.effects.patient.create_patient_external_identifier import (
|
|
3
9
|
CreatePatientExternalIdentifier,
|
|
4
10
|
)
|
|
11
|
+
from canvas_sdk.effects.patient.create_patient_preferred_pharmacies import (
|
|
12
|
+
CreatePatientPreferredPharmacies,
|
|
13
|
+
)
|
|
5
14
|
|
|
6
15
|
__all__ = __exports__ = (
|
|
7
16
|
"Patient",
|
|
17
|
+
"PatientAddress",
|
|
8
18
|
"PatientContactPoint",
|
|
9
19
|
"PatientExternalIdentifier",
|
|
20
|
+
"PatientPreferredPharmacy",
|
|
10
21
|
"CreatePatientExternalIdentifier",
|
|
22
|
+
"CreatePatientPreferredPharmacies",
|
|
11
23
|
)
|
|
@@ -7,8 +7,15 @@ from pydantic_core import InitErrorDetails
|
|
|
7
7
|
|
|
8
8
|
from canvas_generated.messages.effects_pb2 import Effect
|
|
9
9
|
from canvas_sdk.base import TrackableFieldsModel
|
|
10
|
+
from canvas_sdk.v1.data import Patient as PatientModel
|
|
10
11
|
from canvas_sdk.v1.data import PracticeLocation, Staff
|
|
11
|
-
from canvas_sdk.v1.data.common import
|
|
12
|
+
from canvas_sdk.v1.data.common import (
|
|
13
|
+
AddressType,
|
|
14
|
+
AddressUse,
|
|
15
|
+
ContactPointSystem,
|
|
16
|
+
ContactPointUse,
|
|
17
|
+
PersonSex,
|
|
18
|
+
)
|
|
12
19
|
|
|
13
20
|
|
|
14
21
|
@dataclass
|
|
@@ -47,14 +54,63 @@ class PatientExternalIdentifier:
|
|
|
47
54
|
}
|
|
48
55
|
|
|
49
56
|
|
|
57
|
+
@dataclass
|
|
58
|
+
class PatientPreferredPharmacy:
|
|
59
|
+
"""A class representing a preferred pharmacy."""
|
|
60
|
+
|
|
61
|
+
ncpdp_id: str
|
|
62
|
+
default: bool = False
|
|
63
|
+
|
|
64
|
+
def to_dict(self) -> dict[str, Any]:
|
|
65
|
+
"""Convert the preferred pharmacy to a dictionary."""
|
|
66
|
+
return {
|
|
67
|
+
"ncpdp_id": self.ncpdp_id,
|
|
68
|
+
"default": self.default,
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
@dataclass
|
|
73
|
+
class PatientAddress:
|
|
74
|
+
"""A class representing a patient address."""
|
|
75
|
+
|
|
76
|
+
line1: str
|
|
77
|
+
country: str
|
|
78
|
+
line2: str | None = None
|
|
79
|
+
use: AddressUse = AddressUse.HOME
|
|
80
|
+
type: AddressType = AddressType.BOTH
|
|
81
|
+
city: str | None = None
|
|
82
|
+
district: str | None = None
|
|
83
|
+
state_code: str | None = None
|
|
84
|
+
postal_code: str | None = None
|
|
85
|
+
longitude: float | None = None
|
|
86
|
+
latitude: float | None = None
|
|
87
|
+
|
|
88
|
+
def to_dict(self) -> dict[str, Any]:
|
|
89
|
+
"""Convert the address to a dictionary."""
|
|
90
|
+
return {
|
|
91
|
+
"line1": self.line1,
|
|
92
|
+
"line2": self.line2,
|
|
93
|
+
"country": self.country,
|
|
94
|
+
"use": self.use.value,
|
|
95
|
+
"type": self.type.value,
|
|
96
|
+
"city": self.city,
|
|
97
|
+
"district": self.district,
|
|
98
|
+
"state_code": self.state_code,
|
|
99
|
+
"postal_code": self.postal_code,
|
|
100
|
+
"longitude": self.longitude,
|
|
101
|
+
"latitude": self.latitude,
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
|
|
50
105
|
class Patient(TrackableFieldsModel):
|
|
51
106
|
"""Effect to create a Patient record."""
|
|
52
107
|
|
|
53
108
|
class Meta:
|
|
54
109
|
effect_type = "PATIENT"
|
|
55
110
|
|
|
56
|
-
|
|
57
|
-
|
|
111
|
+
patient_id: str | None = None
|
|
112
|
+
first_name: str | None = None
|
|
113
|
+
last_name: str | None = None
|
|
58
114
|
middle_name: str | None = None
|
|
59
115
|
birthdate: datetime.date | None = None
|
|
60
116
|
prefix: str | None = None
|
|
@@ -69,36 +125,94 @@ class Patient(TrackableFieldsModel):
|
|
|
69
125
|
previous_names: list[str] | None = None
|
|
70
126
|
contact_points: list[PatientContactPoint] | None = None
|
|
71
127
|
external_identifiers: list[PatientExternalIdentifier] | None = None
|
|
128
|
+
preferred_pharmacies: list[PatientPreferredPharmacy] | None = None
|
|
129
|
+
addresses: list[PatientAddress] | None = None
|
|
72
130
|
|
|
73
131
|
@property
|
|
74
132
|
def values(self) -> dict[str, Any]:
|
|
75
133
|
"""Return the values of the patient as a dictionary."""
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
"
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
"
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
134
|
+
values = super().values
|
|
135
|
+
|
|
136
|
+
if self.is_dirty("contact_points"):
|
|
137
|
+
values["contact_points"] = (
|
|
138
|
+
[cp.to_dict() for cp in self.contact_points]
|
|
139
|
+
if self.contact_points is not None
|
|
140
|
+
else None
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
if self.is_dirty("external_identifiers"):
|
|
144
|
+
values["external_identifiers"] = (
|
|
145
|
+
[ids.to_dict() for ids in self.external_identifiers]
|
|
146
|
+
if self.external_identifiers is not None
|
|
147
|
+
else None
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
if self.is_dirty("addresses"):
|
|
151
|
+
values["addresses"] = (
|
|
152
|
+
[addr.to_dict() for addr in self.addresses] if self.addresses is not None else None
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
if self.is_dirty("preferred_pharmacies"):
|
|
156
|
+
values["preferred_pharmacies"] = (
|
|
157
|
+
[pharmacy.to_dict() for pharmacy in self.preferred_pharmacies]
|
|
158
|
+
if self.preferred_pharmacies
|
|
159
|
+
else None
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
return values
|
|
98
163
|
|
|
99
164
|
def _get_error_details(self, method: Any) -> list[InitErrorDetails]:
|
|
100
165
|
errors = super()._get_error_details(method)
|
|
101
166
|
|
|
167
|
+
# Validate create-specific requirements
|
|
168
|
+
if method == "create":
|
|
169
|
+
if self.patient_id:
|
|
170
|
+
errors.append(
|
|
171
|
+
self._create_error_detail(
|
|
172
|
+
"value",
|
|
173
|
+
"Patient ID should not be set when creating a new patient.",
|
|
174
|
+
self.patient_id,
|
|
175
|
+
)
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
# first_name and last_name are required for create
|
|
179
|
+
if not self.first_name:
|
|
180
|
+
errors.append(
|
|
181
|
+
self._create_error_detail(
|
|
182
|
+
"value",
|
|
183
|
+
"First name is required when creating a new patient.",
|
|
184
|
+
self.first_name,
|
|
185
|
+
)
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
if not self.last_name:
|
|
189
|
+
errors.append(
|
|
190
|
+
self._create_error_detail(
|
|
191
|
+
"value",
|
|
192
|
+
"Last name is required when creating a new patient.",
|
|
193
|
+
self.last_name,
|
|
194
|
+
)
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
# Validate update-specific requirements
|
|
198
|
+
if method == "update":
|
|
199
|
+
if not self.patient_id:
|
|
200
|
+
errors.append(
|
|
201
|
+
self._create_error_detail(
|
|
202
|
+
"value",
|
|
203
|
+
"Patient ID must be set when updating an existing patient.",
|
|
204
|
+
self.patient_id,
|
|
205
|
+
)
|
|
206
|
+
)
|
|
207
|
+
elif not PatientModel.objects.filter(id=self.patient_id).exists():
|
|
208
|
+
errors.append(
|
|
209
|
+
self._create_error_detail(
|
|
210
|
+
"value",
|
|
211
|
+
f"Patient with ID {self.patient_id} does not exist.",
|
|
212
|
+
self.patient_id,
|
|
213
|
+
)
|
|
214
|
+
)
|
|
215
|
+
|
|
102
216
|
if (
|
|
103
217
|
self.default_location_id
|
|
104
218
|
and not PracticeLocation.objects.filter(id=self.default_location_id).exists()
|
|
@@ -138,5 +252,24 @@ class Patient(TrackableFieldsModel):
|
|
|
138
252
|
),
|
|
139
253
|
)
|
|
140
254
|
|
|
255
|
+
def update(self) -> Effect:
|
|
256
|
+
"""Update an existing Patient."""
|
|
257
|
+
self._validate_before_effect("update")
|
|
258
|
+
|
|
259
|
+
return Effect(
|
|
260
|
+
type=f"UPDATE_{self.Meta.effect_type}",
|
|
261
|
+
payload=json.dumps(
|
|
262
|
+
{
|
|
263
|
+
"data": self.values,
|
|
264
|
+
}
|
|
265
|
+
),
|
|
266
|
+
)
|
|
267
|
+
|
|
141
268
|
|
|
142
|
-
__exports__ = (
|
|
269
|
+
__exports__ = (
|
|
270
|
+
"Patient",
|
|
271
|
+
"PatientAddress",
|
|
272
|
+
"PatientContactPoint",
|
|
273
|
+
"PatientExternalIdentifier",
|
|
274
|
+
"PatientPreferredPharmacy",
|
|
275
|
+
)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import json
|
|
2
|
+
from typing import Any
|
|
3
|
+
from uuid import UUID
|
|
4
|
+
|
|
5
|
+
from pydantic_core import InitErrorDetails
|
|
6
|
+
|
|
7
|
+
from canvas_generated.messages.effects_pb2 import Effect
|
|
8
|
+
from canvas_sdk.effects import _BaseEffect
|
|
9
|
+
from canvas_sdk.effects.patient import PatientPreferredPharmacy
|
|
10
|
+
from canvas_sdk.v1.data import Patient
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CreatePatientPreferredPharmacies(_BaseEffect):
|
|
14
|
+
"""Effect to create a Patient External Identifier record."""
|
|
15
|
+
|
|
16
|
+
class Meta:
|
|
17
|
+
effect_type = "CREATE_PATIENT_PREFERRED_PHARMACIES"
|
|
18
|
+
|
|
19
|
+
pharmacies: list[PatientPreferredPharmacy]
|
|
20
|
+
patient_id: str | UUID
|
|
21
|
+
|
|
22
|
+
def _get_error_details(self, method: Any) -> list[InitErrorDetails]:
|
|
23
|
+
errors = super()._get_error_details(method)
|
|
24
|
+
|
|
25
|
+
if not Patient.objects.filter(id=self.patient_id).exists():
|
|
26
|
+
errors.append(
|
|
27
|
+
self._create_error_detail(
|
|
28
|
+
"value",
|
|
29
|
+
f"Patient with ID {self.patient_id} does not exist.",
|
|
30
|
+
self.patient_id,
|
|
31
|
+
)
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
default_count = sum(1 for pharmacy in self.pharmacies if pharmacy.default)
|
|
35
|
+
if default_count > 1:
|
|
36
|
+
errors.append(
|
|
37
|
+
self._create_error_detail(
|
|
38
|
+
"value",
|
|
39
|
+
"Only one preferred pharmacy can be set as default.",
|
|
40
|
+
None,
|
|
41
|
+
)
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
return errors
|
|
45
|
+
|
|
46
|
+
@property
|
|
47
|
+
def values(self) -> dict[str, Any]:
|
|
48
|
+
"""Return the values of the preferred pharmacies."""
|
|
49
|
+
return {
|
|
50
|
+
"preferred_pharmacies": [
|
|
51
|
+
preferred_pharmacy.to_dict() for preferred_pharmacy in self.pharmacies
|
|
52
|
+
],
|
|
53
|
+
"patient_id": str(self.patient_id),
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
def create(self) -> Effect:
|
|
57
|
+
"""Create Patient Preferred Pharmacies."""
|
|
58
|
+
self._validate_before_effect("create")
|
|
59
|
+
|
|
60
|
+
return Effect(
|
|
61
|
+
type=self.Meta.effect_type,
|
|
62
|
+
payload=json.dumps(
|
|
63
|
+
{
|
|
64
|
+
"data": self.values,
|
|
65
|
+
}
|
|
66
|
+
),
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
__exports__ = ("CreatePatientPreferredPharmacies",)
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
from .
|
|
1
|
+
from .facility import FacilityFactory
|
|
2
|
+
from .patient import PatientAddressFactory, PatientFacilityAddressFactory, PatientFactory
|
|
3
|
+
from .protocol_current import ProtocolCurrentFactory
|
|
2
4
|
from .user import CanvasUserFactory
|
|
3
5
|
|
|
4
|
-
__all__ = (
|
|
6
|
+
__all__ = (
|
|
7
|
+
"CanvasUserFactory",
|
|
8
|
+
"FacilityFactory",
|
|
9
|
+
"PatientAddressFactory",
|
|
10
|
+
"PatientFacilityAddressFactory",
|
|
11
|
+
"PatientFactory",
|
|
12
|
+
"ProtocolCurrentFactory",
|
|
13
|
+
)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import factory
|
|
2
|
+
|
|
3
|
+
from canvas_sdk.v1.data import Facility
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class FacilityFactory(factory.django.DjangoModelFactory[Facility]):
|
|
7
|
+
"""Factory for creating a Facility."""
|
|
8
|
+
|
|
9
|
+
class Meta:
|
|
10
|
+
model = Facility
|
|
11
|
+
|
|
12
|
+
name = factory.Faker("company")
|
|
13
|
+
npi_number = factory.Faker("numerify", text="##########") # 10 digit NPI number
|
|
14
|
+
phone_number = factory.Faker("numerify", text="##########") # 10 digit phone number
|
|
15
|
+
active = True
|
|
16
|
+
line1 = factory.Faker("street_address")
|
|
17
|
+
line2 = factory.Faker("secondary_address")
|
|
18
|
+
city = factory.Faker("city")
|
|
19
|
+
district = factory.Faker("city_suffix")
|
|
20
|
+
state_code = factory.Faker("state_abbr")
|
|
21
|
+
postal_code = factory.Faker("postcode")
|
|
@@ -3,8 +3,9 @@ import datetime
|
|
|
3
3
|
import factory
|
|
4
4
|
from factory.fuzzy import FuzzyDate
|
|
5
5
|
|
|
6
|
+
from canvas_sdk.test_utils.factories.facility import FacilityFactory
|
|
6
7
|
from canvas_sdk.test_utils.factories.user import CanvasUserFactory
|
|
7
|
-
from canvas_sdk.v1.data import Patient, PatientAddress
|
|
8
|
+
from canvas_sdk.v1.data import Patient, PatientAddress, PatientFacilityAddress
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
class PatientAddressFactory(factory.django.DjangoModelFactory[PatientAddress]):
|
|
@@ -37,3 +38,14 @@ class PatientFactory(factory.django.DjangoModelFactory[Patient]):
|
|
|
37
38
|
last_name = factory.Faker("last_name")
|
|
38
39
|
addresses = factory.RelatedFactory(PatientAddressFactory, "patient")
|
|
39
40
|
user = factory.SubFactory(CanvasUserFactory)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class PatientFacilityAddressFactory(factory.django.DjangoModelFactory[PatientFacilityAddress]):
|
|
44
|
+
"""Factory for creating a PatientFacilityAddress."""
|
|
45
|
+
|
|
46
|
+
class Meta:
|
|
47
|
+
model = PatientFacilityAddress
|
|
48
|
+
|
|
49
|
+
facility = factory.SubFactory(FacilityFactory)
|
|
50
|
+
patient = factory.SubFactory(PatientFactory)
|
|
51
|
+
room_number = factory.Faker("building_number")
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
|
|
3
|
+
import factory
|
|
4
|
+
from factory.fuzzy import FuzzyChoice, FuzzyDate, FuzzyInteger
|
|
5
|
+
|
|
6
|
+
from canvas_sdk.test_utils.factories.patient import PatientFactory
|
|
7
|
+
from canvas_sdk.v1.data import ProtocolCurrent
|
|
8
|
+
from canvas_sdk.v1.data.protocol_result import ProtocolResultStatus
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ProtocolCurrentFactory(factory.django.DjangoModelFactory[ProtocolCurrent]):
|
|
12
|
+
"""Factory for creating a ProtocolCurrent."""
|
|
13
|
+
|
|
14
|
+
class Meta:
|
|
15
|
+
model = ProtocolCurrent
|
|
16
|
+
|
|
17
|
+
# Fields from ProtocolResult (abstract base class)
|
|
18
|
+
title = factory.Faker("sentence", nb_words=4)
|
|
19
|
+
narrative = factory.Faker("text", max_nb_chars=200)
|
|
20
|
+
types = factory.LazyFunction(lambda: ["screening", "preventive"])
|
|
21
|
+
protocol_key = factory.Faker("slug")
|
|
22
|
+
plugin_name = factory.Faker("slug")
|
|
23
|
+
status = FuzzyChoice(ProtocolResultStatus.choices, getter=lambda c: c[0])
|
|
24
|
+
due_in = FuzzyInteger(-30, 365) # Days until due (can be negative for overdue)
|
|
25
|
+
days_of_notice = FuzzyInteger(7, 60)
|
|
26
|
+
snoozed = factory.Faker("boolean", chance_of_getting_true=20)
|
|
27
|
+
sources = factory.LazyFunction(lambda: {"conditions": [], "medications": [], "labs": []})
|
|
28
|
+
recommendations = factory.LazyFunction(lambda: {"primary": "Schedule annual checkup"})
|
|
29
|
+
top_recommendation_key = factory.Faker("slug")
|
|
30
|
+
next_review = factory.Faker("date_time_between", start_date="+1d", end_date="+1y")
|
|
31
|
+
feedback_enabled = factory.Faker("boolean", chance_of_getting_true=30)
|
|
32
|
+
plugin_can_be_snoozed = factory.Faker("boolean", chance_of_getting_true=70)
|
|
33
|
+
|
|
34
|
+
# Fields specific to ProtocolCurrent
|
|
35
|
+
patient = factory.SubFactory(PatientFactory)
|
|
36
|
+
result_hash = factory.Faker("md5")
|
|
37
|
+
snooze_date = factory.Maybe(
|
|
38
|
+
"snoozed",
|
|
39
|
+
yes_declaration=FuzzyDate(
|
|
40
|
+
start_date=datetime.date.today(),
|
|
41
|
+
end_date=datetime.date.today() + datetime.timedelta(days=90),
|
|
42
|
+
),
|
|
43
|
+
no_declaration=None,
|
|
44
|
+
)
|
canvas_sdk/v1/data/__init__.py
CHANGED
|
@@ -15,6 +15,8 @@ from .coverage import Coverage, Transactor, TransactorAddress, TransactorPhone
|
|
|
15
15
|
from .detected_issue import DetectedIssue, DetectedIssueEvidence
|
|
16
16
|
from .device import Device
|
|
17
17
|
from .discount import Discount
|
|
18
|
+
from .facility import Facility
|
|
19
|
+
from .goal import Goal
|
|
18
20
|
from .imaging import ImagingOrder, ImagingReport, ImagingReview
|
|
19
21
|
from .invoice import Invoice
|
|
20
22
|
from .lab import (
|
|
@@ -50,6 +52,7 @@ from .patient import (
|
|
|
50
52
|
PatientAddress,
|
|
51
53
|
PatientContactPoint,
|
|
52
54
|
PatientExternalIdentifier,
|
|
55
|
+
PatientFacilityAddress,
|
|
53
56
|
PatientMetadata,
|
|
54
57
|
PatientSetting,
|
|
55
58
|
)
|
|
@@ -68,6 +71,7 @@ from .posting import (
|
|
|
68
71
|
PatientPosting,
|
|
69
72
|
)
|
|
70
73
|
from .practicelocation import PracticeLocation, PracticeLocationSetting
|
|
74
|
+
from .protocol_current import ProtocolCurrent
|
|
71
75
|
from .protocol_override import ProtocolOverride
|
|
72
76
|
from .questionnaire import (
|
|
73
77
|
Interview,
|
|
@@ -82,7 +86,7 @@ from .questionnaire import (
|
|
|
82
86
|
from .reason_for_visit import ReasonForVisitSettingCoding
|
|
83
87
|
from .referral import Referral, ReferralReport
|
|
84
88
|
from .service_provider import ServiceProvider
|
|
85
|
-
from .staff import Staff, StaffAddress, StaffContactPoint, StaffPhoto, StaffRole
|
|
89
|
+
from .staff import Staff, StaffAddress, StaffContactPoint, StaffLicense, StaffPhoto, StaffRole
|
|
86
90
|
from .task import Task, TaskComment, TaskLabel, TaskTaskLabel
|
|
87
91
|
from .team import Team, TeamContactPoint
|
|
88
92
|
from .user import CanvasUser
|
|
@@ -120,6 +124,8 @@ __all__ = __exports__ = (
|
|
|
120
124
|
"DetectedIssueEvidence",
|
|
121
125
|
"Device",
|
|
122
126
|
"Discount",
|
|
127
|
+
"Facility",
|
|
128
|
+
"Goal",
|
|
123
129
|
"ImagingOrder",
|
|
124
130
|
"ImagingReport",
|
|
125
131
|
"ImagingReview",
|
|
@@ -159,6 +165,7 @@ __all__ = __exports__ = (
|
|
|
159
165
|
"PatientAddress",
|
|
160
166
|
"PatientContactPoint",
|
|
161
167
|
"PatientExternalIdentifier",
|
|
168
|
+
"PatientFacilityAddress",
|
|
162
169
|
"PatientPosting",
|
|
163
170
|
"PatientSetting",
|
|
164
171
|
"PatientMetadata",
|
|
@@ -169,6 +176,7 @@ __all__ = __exports__ = (
|
|
|
169
176
|
"PaymentCollection",
|
|
170
177
|
"PracticeLocation",
|
|
171
178
|
"PracticeLocationSetting",
|
|
179
|
+
"ProtocolCurrent",
|
|
172
180
|
"ProtocolOverride",
|
|
173
181
|
"Question",
|
|
174
182
|
"Questionnaire",
|
|
@@ -181,6 +189,7 @@ __all__ = __exports__ = (
|
|
|
181
189
|
"ServiceProvider",
|
|
182
190
|
"Staff",
|
|
183
191
|
"StaffAddress",
|
|
192
|
+
"StaffLicense",
|
|
184
193
|
"StaffPhoto",
|
|
185
194
|
"StaffRole",
|
|
186
195
|
"StaffContactPoint",
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
from canvas_sdk.v1.data.base import IdentifiableModel
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Facility(IdentifiableModel):
|
|
7
|
+
"""Facility model representing a healthcare facility."""
|
|
8
|
+
|
|
9
|
+
class Meta:
|
|
10
|
+
db_table = "canvas_sdk_data_api_facility_001"
|
|
11
|
+
|
|
12
|
+
name = models.CharField(max_length=255)
|
|
13
|
+
npi_number = models.CharField(verbose_name="NPI number", max_length=10, blank=True)
|
|
14
|
+
phone_number = models.CharField(max_length=10, blank=True, default="")
|
|
15
|
+
active = models.BooleanField(default=True)
|
|
16
|
+
line1 = models.CharField(max_length=255, default="", blank=True)
|
|
17
|
+
line2 = models.CharField(max_length=255, default="", blank=True)
|
|
18
|
+
city = models.CharField(max_length=255)
|
|
19
|
+
district = models.CharField(max_length=255, blank=True, default="")
|
|
20
|
+
state_code = models.CharField(max_length=2)
|
|
21
|
+
postal_code = models.CharField(max_length=255)
|
|
22
|
+
|
|
23
|
+
def __str__(self) -> str:
|
|
24
|
+
return self.name
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
__exports__ = ("Facility",)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
from canvas_sdk.v1.data.base import IdentifiableModel
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GoalLifecycleStatus(models.TextChoices):
|
|
7
|
+
"""GoalLifecycleStatus choices."""
|
|
8
|
+
|
|
9
|
+
PROPOSED = "proposed", "Proposed"
|
|
10
|
+
PLANNED = "planned", "Planned"
|
|
11
|
+
ACCEPTED = "accepted", "Accepted"
|
|
12
|
+
ACTIVE = "active", "Active"
|
|
13
|
+
ON_HOLD = "on-hold", "On Hold"
|
|
14
|
+
COMPLETED = "completed", "Completed"
|
|
15
|
+
CANCELLED = "cancelled", "Cancelled"
|
|
16
|
+
REJECTED = "rejected", "Rejected"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class GoalAchievementStatus(models.TextChoices):
|
|
20
|
+
"""GoalAchievementStatus choices."""
|
|
21
|
+
|
|
22
|
+
IN_PROGRESS = "in-progress", "In Progress"
|
|
23
|
+
IMPROVING = "improving", "Improving"
|
|
24
|
+
WORSENING = "worsening", "Worsening"
|
|
25
|
+
NO_CHANGE = "no-change", "No Change"
|
|
26
|
+
ACHIEVED = "achieved", "Achieved"
|
|
27
|
+
SUSTAINING = "sustaining", "Sustaining"
|
|
28
|
+
NOT_ACHIEVED = "not-achieved", "Not Achieved"
|
|
29
|
+
NO_PROGRESS = "no-progress", "No Progress"
|
|
30
|
+
NOT_ATTAINABLE = "not-attainable", "Not Attainable"
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class GoalPriority(models.TextChoices):
|
|
34
|
+
"""GoalPriority choices."""
|
|
35
|
+
|
|
36
|
+
HIGH = "high-priority", "High Priority"
|
|
37
|
+
MEDIUM = "medium-priority", "Medium Priority"
|
|
38
|
+
LOW = "low-priority", "Low Priority"
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class Goal(IdentifiableModel):
|
|
42
|
+
"""Goal."""
|
|
43
|
+
|
|
44
|
+
class Meta:
|
|
45
|
+
db_table = "canvas_sdk_data_api_goal_001"
|
|
46
|
+
|
|
47
|
+
created = models.DateTimeField(auto_now_add=True)
|
|
48
|
+
modified = models.DateTimeField(auto_now=True)
|
|
49
|
+
originator = models.ForeignKey(
|
|
50
|
+
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
51
|
+
)
|
|
52
|
+
committer = models.ForeignKey(
|
|
53
|
+
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
54
|
+
)
|
|
55
|
+
entered_in_error = models.ForeignKey(
|
|
56
|
+
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
patient = models.ForeignKey("v1.Patient", on_delete=models.DO_NOTHING, related_name="goals")
|
|
60
|
+
note = models.ForeignKey("v1.Note", on_delete=models.DO_NOTHING, related_name="goals")
|
|
61
|
+
lifecycle_status = models.CharField(max_length=20, choices=GoalLifecycleStatus.choices)
|
|
62
|
+
achievement_status = models.CharField(max_length=20, choices=GoalAchievementStatus.choices)
|
|
63
|
+
priority = models.CharField(max_length=20, choices=GoalPriority.choices)
|
|
64
|
+
due_date = models.DateField()
|
|
65
|
+
progress = models.TextField()
|
|
66
|
+
goal_statement = models.TextField()
|
|
67
|
+
start_date = models.DateField()
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
__exports__ = ("Goal", "GoalLifecycleStatus", "GoalAchievementStatus", "GoalPriority")
|
canvas_sdk/v1/data/note.py
CHANGED
|
@@ -223,6 +223,7 @@ class CurrentNoteStateEvent(IdentifiableModel):
|
|
|
223
223
|
"""Returns a boolean to indicate if the related note can be edited."""
|
|
224
224
|
return self.state in [
|
|
225
225
|
NoteStates.NEW,
|
|
226
|
+
NoteStates.CONVERTED,
|
|
226
227
|
NoteStates.PUSHED,
|
|
227
228
|
NoteStates.UNLOCKED,
|
|
228
229
|
NoteStates.RESTORED,
|
canvas_sdk/v1/data/patient.py
CHANGED
|
@@ -116,13 +116,6 @@ class Patient(Model):
|
|
|
116
116
|
def __str__(self) -> str:
|
|
117
117
|
return f"{self.first_name} {self.last_name}"
|
|
118
118
|
|
|
119
|
-
@property
|
|
120
|
-
def full_name(self) -> str:
|
|
121
|
-
"""Returns the patient's full name."""
|
|
122
|
-
return " ".join(
|
|
123
|
-
n for n in (self.first_name, self.middle_name, self.last_name, self.suffix) if n
|
|
124
|
-
)
|
|
125
|
-
|
|
126
119
|
def age_at(self, time: arrow.Arrow) -> float:
|
|
127
120
|
"""Given a datetime, returns what the patient's age would be at that datetime."""
|
|
128
121
|
age = float(0)
|
|
@@ -147,6 +140,13 @@ class Patient(Model):
|
|
|
147
140
|
except PatientSetting.DoesNotExist:
|
|
148
141
|
return None
|
|
149
142
|
|
|
143
|
+
@property
|
|
144
|
+
def full_name(self) -> str:
|
|
145
|
+
"""Returns the patient's full name."""
|
|
146
|
+
return " ".join(
|
|
147
|
+
n for n in (self.first_name, self.middle_name, self.last_name, self.suffix) if n
|
|
148
|
+
)
|
|
149
|
+
|
|
150
150
|
@property
|
|
151
151
|
def preferred_pharmacy(self) -> dict[str, str] | None:
|
|
152
152
|
"""Returns the patient's preferred pharmacy."""
|
|
@@ -158,6 +158,20 @@ class Patient(Model):
|
|
|
158
158
|
return None
|
|
159
159
|
return pharmacy_setting
|
|
160
160
|
|
|
161
|
+
@property
|
|
162
|
+
def preferred_pharmacies(self) -> list[dict[str, Any]] | None:
|
|
163
|
+
"""
|
|
164
|
+
Returns the pharmacy patient setting, a list of dicts of the patient's preferred pharmacies.
|
|
165
|
+
If the pharmacy setting is currently a dict, make it the default and a list.
|
|
166
|
+
"""
|
|
167
|
+
pharmacy_setting = self.get_setting(PatientSettingConstants.PHARMACY) or []
|
|
168
|
+
if isinstance(pharmacy_setting, dict):
|
|
169
|
+
return [{**pharmacy_setting, "default": True}]
|
|
170
|
+
elif isinstance(pharmacy_setting, list):
|
|
171
|
+
return pharmacy_setting
|
|
172
|
+
|
|
173
|
+
return None
|
|
174
|
+
|
|
161
175
|
@property
|
|
162
176
|
def preferred_full_name(self) -> str:
|
|
163
177
|
"""Returns the patient's preferred full name, taking nickname into consideration."""
|
|
@@ -168,6 +182,11 @@ class Patient(Model):
|
|
|
168
182
|
"""Returns the patient's preferred first name, taking nickname into consideration."""
|
|
169
183
|
return self.nickname or self.first_name
|
|
170
184
|
|
|
185
|
+
@property
|
|
186
|
+
def primary_phone_number(self) -> PatientContactPoint | None:
|
|
187
|
+
"""Returns the patient's primary phone number, if available."""
|
|
188
|
+
return (self.telecom.filter(system=ContactPointSystem.PHONE).order_by("rank")).first()
|
|
189
|
+
|
|
171
190
|
|
|
172
191
|
class PatientContactPoint(IdentifiableModel):
|
|
173
192
|
"""A class representing a patient contact point."""
|
|
@@ -274,12 +293,25 @@ class PatientMetadata(IdentifiableModel):
|
|
|
274
293
|
value = models.CharField(max_length=255)
|
|
275
294
|
|
|
276
295
|
|
|
296
|
+
class PatientFacilityAddress(PatientAddress):
|
|
297
|
+
"""PatientFacilityAddress."""
|
|
298
|
+
|
|
299
|
+
class Meta:
|
|
300
|
+
db_table = "canvas_sdk_data_api_patientfacilityaddress_001"
|
|
301
|
+
|
|
302
|
+
room_number = models.CharField(max_length=100, null=True)
|
|
303
|
+
facility = models.ForeignKey(
|
|
304
|
+
"v1.Facility", on_delete=models.DO_NOTHING, related_name="patient_facilities", null=True
|
|
305
|
+
)
|
|
306
|
+
|
|
307
|
+
|
|
277
308
|
__exports__ = (
|
|
278
309
|
"SexAtBirth",
|
|
279
310
|
"PatientSettingConstants",
|
|
280
311
|
"Patient",
|
|
281
312
|
"PatientContactPoint",
|
|
282
313
|
"PatientAddress",
|
|
314
|
+
"PatientFacilityAddress",
|
|
283
315
|
"PatientExternalIdentifier",
|
|
284
316
|
"PatientSetting",
|
|
285
317
|
"PatientMetadata",
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
from canvas_sdk.v1.data.base import IdentifiableModel
|
|
4
|
+
from canvas_sdk.v1.data.protocol_result import ProtocolResult
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class ProtocolCurrent(ProtocolResult, IdentifiableModel):
|
|
8
|
+
"""ProtocolCurrent."""
|
|
9
|
+
|
|
10
|
+
class Meta:
|
|
11
|
+
db_table = "canvas_sdk_data_api_protocolcurrent_001"
|
|
12
|
+
|
|
13
|
+
patient = models.ForeignKey(
|
|
14
|
+
"v1.Patient", on_delete=models.DO_NOTHING, related_name="protocol_currents"
|
|
15
|
+
)
|
|
16
|
+
result_hash = models.CharField(max_length=32, default="")
|
|
17
|
+
snooze_date = models.DateField(null=True)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
__exports__ = (
|
|
21
|
+
"ProtocolCurrent",
|
|
22
|
+
"ProtocolCurrentStatus",
|
|
23
|
+
)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from django.contrib.postgres.fields import ArrayField
|
|
2
|
+
from django.db import models
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class ProtocolResultStatus(models.TextChoices):
|
|
6
|
+
"""Constants for ProtocolResultStatus."""
|
|
7
|
+
|
|
8
|
+
STATUS_DUE = "due"
|
|
9
|
+
STATUS_SATISFIED = "satisfied"
|
|
10
|
+
STATUS_NOT_APPLICABLE = "not_applicable"
|
|
11
|
+
STATUS_PENDING = "pending"
|
|
12
|
+
STATUS_NOT_RELEVANT = "not_relevant"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ProtocolResult(models.Model):
|
|
16
|
+
"""ProtocolResult."""
|
|
17
|
+
|
|
18
|
+
class Meta:
|
|
19
|
+
abstract = True
|
|
20
|
+
|
|
21
|
+
title = models.TextField(blank=True, default="")
|
|
22
|
+
narrative = models.TextField(blank=True, default="")
|
|
23
|
+
result_identifiers = ArrayField(base_field=models.TextField())
|
|
24
|
+
types = ArrayField(base_field=models.TextField())
|
|
25
|
+
protocol_key = models.TextField(default="")
|
|
26
|
+
plugin_name = models.TextField(null=True, blank=True)
|
|
27
|
+
status = models.TextField(
|
|
28
|
+
choices=ProtocolResultStatus.choices, default=ProtocolResultStatus.STATUS_NOT_APPLICABLE
|
|
29
|
+
)
|
|
30
|
+
due_in = models.IntegerField(null=True, default=-1)
|
|
31
|
+
days_of_notice = models.IntegerField(default=30)
|
|
32
|
+
snoozed = models.BooleanField(default=False)
|
|
33
|
+
sources = models.JSONField(default=dict)
|
|
34
|
+
recommendations = models.JSONField(default=dict)
|
|
35
|
+
top_recommendation_key = models.TextField(blank=True, default="")
|
|
36
|
+
next_review = models.DateTimeField(null=True)
|
|
37
|
+
feedback_enabled = models.BooleanField(default=False)
|
|
38
|
+
plugin_can_be_snoozed = models.BooleanField(default=False)
|
|
39
|
+
created = models.DateTimeField(auto_now_add=True)
|
|
40
|
+
modified = models.DateTimeField(auto_now=True)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
__exports__ = (
|
|
44
|
+
"ProtocolResult",
|
|
45
|
+
"ProtocolResultStatus",
|
|
46
|
+
)
|
canvas_sdk/v1/data/staff.py
CHANGED
|
@@ -211,4 +211,39 @@ class StaffRole(Model):
|
|
|
211
211
|
role_type = models.CharField(max_length=50, choices=RoleType.choices, blank=True)
|
|
212
212
|
|
|
213
213
|
|
|
214
|
-
|
|
214
|
+
class StaffLicense(IdentifiableModel):
|
|
215
|
+
"""StaffLicense."""
|
|
216
|
+
|
|
217
|
+
class Meta:
|
|
218
|
+
db_table = "canvas_sdk_data_api_stafflicense_001"
|
|
219
|
+
|
|
220
|
+
class LicenseType(TextChoices):
|
|
221
|
+
CLIA = "CLIA", "CLIA"
|
|
222
|
+
DEA = "DEA", "DEA"
|
|
223
|
+
PTAN = "PTAN", "PTAN"
|
|
224
|
+
STATE_LICENSE = "STATE", "State license"
|
|
225
|
+
TAXONOMY = "TAXONOMY", "Taxonomy"
|
|
226
|
+
SPI = "SPI", "SPI"
|
|
227
|
+
OTHER = "OTHER", "Other"
|
|
228
|
+
|
|
229
|
+
staff = models.ForeignKey(Staff, on_delete=models.CASCADE, related_name="licenses")
|
|
230
|
+
issuing_authority_long_name = models.CharField(max_length=200, null=True, blank=True)
|
|
231
|
+
issuing_authority_url = models.URLField(blank=True, null=True)
|
|
232
|
+
license_or_certification_identifier = models.CharField(max_length=50)
|
|
233
|
+
issuance_date = models.DateField()
|
|
234
|
+
expiration_date = models.DateField()
|
|
235
|
+
license_type = models.CharField(
|
|
236
|
+
max_length=50, choices=LicenseType.choices, null=True, blank=True
|
|
237
|
+
)
|
|
238
|
+
primary = models.BooleanField(default=False)
|
|
239
|
+
state = models.CharField(max_length=2, blank=True, null=True)
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
__exports__ = (
|
|
243
|
+
"Staff",
|
|
244
|
+
"StaffAddress",
|
|
245
|
+
"StaffContactPoint",
|
|
246
|
+
"StaffLicense",
|
|
247
|
+
"StaffPhoto",
|
|
248
|
+
"StaffRole",
|
|
249
|
+
)
|
|
@@ -244,18 +244,26 @@
|
|
|
244
244
|
],
|
|
245
245
|
"canvas_sdk.effects.patient": [
|
|
246
246
|
"CreatePatientExternalIdentifier",
|
|
247
|
+
"CreatePatientPreferredPharmacies",
|
|
247
248
|
"Patient",
|
|
249
|
+
"PatientAddress",
|
|
248
250
|
"PatientContactPoint",
|
|
249
|
-
"PatientExternalIdentifier"
|
|
251
|
+
"PatientExternalIdentifier",
|
|
252
|
+
"PatientPreferredPharmacy"
|
|
250
253
|
],
|
|
251
254
|
"canvas_sdk.effects.patient.base": [
|
|
252
255
|
"Patient",
|
|
256
|
+
"PatientAddress",
|
|
253
257
|
"PatientContactPoint",
|
|
254
|
-
"PatientExternalIdentifier"
|
|
258
|
+
"PatientExternalIdentifier",
|
|
259
|
+
"PatientPreferredPharmacy"
|
|
255
260
|
],
|
|
256
261
|
"canvas_sdk.effects.patient.create_patient_external_identifier": [
|
|
257
262
|
"CreatePatientExternalIdentifier"
|
|
258
263
|
],
|
|
264
|
+
"canvas_sdk.effects.patient.create_patient_preferred_pharmacies": [
|
|
265
|
+
"CreatePatientPreferredPharmacies"
|
|
266
|
+
],
|
|
259
267
|
"canvas_sdk.effects.patient_chart_group": [
|
|
260
268
|
"PatientChartGroup"
|
|
261
269
|
],
|
|
@@ -532,6 +540,8 @@
|
|
|
532
540
|
"DetectedIssueEvidence",
|
|
533
541
|
"Device",
|
|
534
542
|
"Discount",
|
|
543
|
+
"Facility",
|
|
544
|
+
"Goal",
|
|
535
545
|
"ImagingOrder",
|
|
536
546
|
"ImagingReport",
|
|
537
547
|
"ImagingReview",
|
|
@@ -574,6 +584,7 @@
|
|
|
574
584
|
"PatientConsentRejectionCoding",
|
|
575
585
|
"PatientContactPoint",
|
|
576
586
|
"PatientExternalIdentifier",
|
|
587
|
+
"PatientFacilityAddress",
|
|
577
588
|
"PatientMetadata",
|
|
578
589
|
"PatientPosting",
|
|
579
590
|
"PatientSetting",
|
|
@@ -581,6 +592,7 @@
|
|
|
581
592
|
"PayorSpecificCharge",
|
|
582
593
|
"PracticeLocation",
|
|
583
594
|
"PracticeLocationSetting",
|
|
595
|
+
"ProtocolCurrent",
|
|
584
596
|
"ProtocolOverride",
|
|
585
597
|
"Question",
|
|
586
598
|
"Questionnaire",
|
|
@@ -594,6 +606,7 @@
|
|
|
594
606
|
"Staff",
|
|
595
607
|
"StaffAddress",
|
|
596
608
|
"StaffContactPoint",
|
|
609
|
+
"StaffLicense",
|
|
597
610
|
"StaffPhoto",
|
|
598
611
|
"StaffRole",
|
|
599
612
|
"Task",
|
|
@@ -706,6 +719,15 @@
|
|
|
706
719
|
"canvas_sdk.v1.data.discount": [
|
|
707
720
|
"Discount"
|
|
708
721
|
],
|
|
722
|
+
"canvas_sdk.v1.data.facility": [
|
|
723
|
+
"Facility"
|
|
724
|
+
],
|
|
725
|
+
"canvas_sdk.v1.data.goal": [
|
|
726
|
+
"Goal",
|
|
727
|
+
"GoalAchievementStatus",
|
|
728
|
+
"GoalLifecycleStatus",
|
|
729
|
+
"GoalPriority"
|
|
730
|
+
],
|
|
709
731
|
"canvas_sdk.v1.data.imaging": [
|
|
710
732
|
"ImagingOrder",
|
|
711
733
|
"ImagingReport",
|
|
@@ -775,6 +797,7 @@
|
|
|
775
797
|
"PatientAddress",
|
|
776
798
|
"PatientContactPoint",
|
|
777
799
|
"PatientExternalIdentifier",
|
|
800
|
+
"PatientFacilityAddress",
|
|
778
801
|
"PatientMetadata",
|
|
779
802
|
"PatientSetting",
|
|
780
803
|
"PatientSettingConstants",
|
|
@@ -804,11 +827,19 @@
|
|
|
804
827
|
"PracticeLocationPOS",
|
|
805
828
|
"PracticeLocationSetting"
|
|
806
829
|
],
|
|
830
|
+
"canvas_sdk.v1.data.protocol_current": [
|
|
831
|
+
"ProtocolCurrent",
|
|
832
|
+
"ProtocolCurrentStatus"
|
|
833
|
+
],
|
|
807
834
|
"canvas_sdk.v1.data.protocol_override": [
|
|
808
835
|
"IntervalUnit",
|
|
809
836
|
"ProtocolOverride",
|
|
810
837
|
"Status"
|
|
811
838
|
],
|
|
839
|
+
"canvas_sdk.v1.data.protocol_result": [
|
|
840
|
+
"ProtocolResult",
|
|
841
|
+
"ProtocolResultStatus"
|
|
842
|
+
],
|
|
812
843
|
"canvas_sdk.v1.data.questionnaire": [
|
|
813
844
|
"Interview",
|
|
814
845
|
"InterviewQuerySet",
|
|
@@ -834,6 +865,7 @@
|
|
|
834
865
|
"Staff",
|
|
835
866
|
"StaffAddress",
|
|
836
867
|
"StaffContactPoint",
|
|
868
|
+
"StaffLicense",
|
|
837
869
|
"StaffPhoto",
|
|
838
870
|
"StaffRole"
|
|
839
871
|
],
|
|
@@ -291,6 +291,7 @@ enum EffectType {
|
|
|
291
291
|
DELETE_SCHEDULE_EVENT = 6017;
|
|
292
292
|
|
|
293
293
|
CREATE_PATIENT = 6003;
|
|
294
|
+
UPDATE_PATIENT = 6008;
|
|
294
295
|
|
|
295
296
|
CREATE_MESSAGE = 6004;
|
|
296
297
|
SEND_MESSAGE = 6005;
|
|
@@ -300,7 +301,7 @@ enum EffectType {
|
|
|
300
301
|
PATIENT_METADATA__CREATE_ADDITIONAL_FIELDS = 6010;
|
|
301
302
|
UPSERT_PATIENT_METADATA = 6011;
|
|
302
303
|
CREATE_PATIENT_EXTERNAL_IDENTIFIER = 6012;
|
|
303
|
-
|
|
304
|
+
CREATE_PATIENT_PREFERRED_PHARMACIES = 6018;
|
|
304
305
|
CREATE_COMPOUND_MEDICATION = 6020;
|
|
305
306
|
UPDATE_COMPOUND_MEDICATION = 6021;
|
|
306
307
|
|
|
@@ -316,6 +317,7 @@ enum EffectType {
|
|
|
316
317
|
REVENUE__PAYMENT_PROCESSOR__PAYMENT_METHOD = 7004;
|
|
317
318
|
REVENUE__PAYMENT_PROCESSOR__PAYMENT_METHOD__ADD_RESPONSE = 7005;
|
|
318
319
|
REVENUE__PAYMENT_PROCESSOR__PAYMENT_METHOD__REMOVE_RESPONSE = 7006;
|
|
320
|
+
|
|
319
321
|
}
|
|
320
322
|
|
|
321
323
|
message Effect {
|
|
File without changes
|
|
File without changes
|