canvas 0.63.0__py3-none-any.whl → 0.64.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.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: canvas
3
- Version: 0.63.0
3
+ Version: 0.64.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
@@ -1,4 +1,4 @@
1
- settings.py,sha256=8CGtEpfAZ43FM6XPNJ8CgGwhWU9xn5mmncD7HZWi-Vk,6321
1
+ settings.py,sha256=m3JUFjzlS3vetR35JVTFVPT72lv7BMSunvW4ICIXhBc,6678
2
2
  canvas_cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  canvas_cli/main.py,sha256=INnlb8THwC0kbUJY94FVFq4UtDRGRyBBm6jASTzV0mU,3111
4
4
  canvas_cli/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -219,11 +219,12 @@ canvas_sdk/protocols/base.py,sha256=itPYb_rvfj63l5UgKeAhCXEutR8WO4qww0GdZvAdaNE,
219
219
  canvas_sdk/protocols/clinical_quality_measure.py,sha256=ZkAJ6rWMz5YZFQf6iQWJyNTV2Vj-5gzy4XWvnd7y374,4922
220
220
  canvas_sdk/protocols/timeframe.py,sha256=vdlgUpDam9r4oJpw8HKQOkr6o66jFwfoTtieHBtZxvw,1179
221
221
  canvas_sdk/questionnaires/__init__.py,sha256=Pe3R-RY70AOllljO_caNAPpHpJfA3ML5zmw9v1EewzE,110
222
- canvas_sdk/questionnaires/utils.py,sha256=avDMUcQ5XmLfhlBpPJNMtNrVqrPy7g7HtqbSzztuIeQ,3666
222
+ canvas_sdk/questionnaires/utils.py,sha256=6RrGQbcc1uxG6-H5fCzS2mwQTYQdYiQlVVrtSbPls_U,3693
223
223
  canvas_sdk/templates/__init__.py,sha256=LtUmLDsGSTq249T6sA7PUzkl2OfCAyvtIOGPNHr6wTo,83
224
224
  canvas_sdk/templates/utils.py,sha256=J-wDQ9ijOr_jz1SJxjpyZgR7JwXqtGMSS5IperLi2qE,1475
225
225
  canvas_sdk/test_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
226
- canvas_sdk/test_utils/factories/__init__.py,sha256=xzQECzqaDsPAYEBNqfSiz7CEFFI9I7pnYQtHaTuP2r0,398
226
+ canvas_sdk/test_utils/factories/__init__.py,sha256=Rg8C6um05bil4PuajoWyPGMecXKvMqe0uClgTBiaYSk,491
227
+ canvas_sdk/test_utils/factories/claim_diagnosis_code.py,sha256=3kqcgDRfZup8aly66EW-OX2hs3oJNqHkJY5aeeID0Po,557
227
228
  canvas_sdk/test_utils/factories/facility.py,sha256=9ZNBHCgPelD4oQynwez32I4Gx0kV1O78kgKvuiByyhg,697
228
229
  canvas_sdk/test_utils/factories/patient.py,sha256=zXy47K9C6cmQympOABHGUv-1hOqYIXNb7c4TziFO1RE,1594
229
230
  canvas_sdk/test_utils/factories/protocol_current.py,sha256=twq6GdTM29WYZ-AvfE3vkfV3dOMhZDmv_lNZC2eGe8g,1904
@@ -236,7 +237,7 @@ canvas_sdk/utils/plugins.py,sha256=OPq9OiE1v1AF24HSdEEOlSJxRVc2NVksK0Gpf6OH1NE,1
236
237
  canvas_sdk/v1/__init__.py,sha256=YYXr5tEQlnwMgTXJbOG963tKSPiUOM4mUkX8wuiqp7U,17
237
238
  canvas_sdk/v1/apps.py,sha256=4MwQfQu78oX5bUVlyxYzbt4rZODi0ZesXe_3QOsEWO8,170
238
239
  canvas_sdk/v1/models.py,sha256=LqeHZ-Hz3EWyM9vYr9uZ9rBYdMXNuuvJqbmojV8EcEM,224
239
- canvas_sdk/v1/data/__init__.py,sha256=iU3iuq0fl870cLdvf4rMldVBbqjKM20ZyfLGPM36dzo,5814
240
+ canvas_sdk/v1/data/__init__.py,sha256=asFixU1731QJTXQSgZn5WACoRGcHui0DFVvQRN4WypY,6106
240
241
  canvas_sdk/v1/data/allergy_intolerance.py,sha256=KXfU7UqTdRfHUFrP8yncQGMvlRPEt2K6TrC_y7JYgiE,2453
241
242
  canvas_sdk/v1/data/appointment.py,sha256=wRxRYWvGHP6zXFA-Hq3I08fwC56wHKb3zwpp5kqj4Yw,3227
242
243
  canvas_sdk/v1/data/assessment.py,sha256=vnVoaKWoJGCfaYn6WilxpI5cTgkvM647hFIuTyi_AgY,1663
@@ -247,6 +248,7 @@ canvas_sdk/v1/data/business_line.py,sha256=pj7gWj_5FR1V7YUn3bhwjI0j0kcH-ZKQRqbbn
247
248
  canvas_sdk/v1/data/care_team.py,sha256=vQh2QS8T6JvYL8seMVpVFI9qQLpZRo6NT5lMgnSf0WY,1940
248
249
  canvas_sdk/v1/data/charge_description_master.py,sha256=dyxa4Fiwts6wTyoDR-blbPZ_D95pojDLWPrNbmemx2Y,856
249
250
  canvas_sdk/v1/data/claim.py,sha256=xCuZ1SSiQ_LxUX-0GoxwKstEZwi87cnqjn8QB6m86S8,11530
251
+ canvas_sdk/v1/data/claim_diagnosis_code.py,sha256=JJIOAXeleCn1TthepA3PA5MTnf9pe_FyqxLy7CvAXAA,713
250
252
  canvas_sdk/v1/data/claim_line_item.py,sha256=5WyTqlWSdQSDKyGWwRv5Dyn24_etyp8Zg_Q8aNgGL6o,5072
251
253
  canvas_sdk/v1/data/command.py,sha256=G7qtNypiTK274QQExKLbnij4gM71HZMs8f79VFYvIiY,1944
252
254
  canvas_sdk/v1/data/common.py,sha256=u5W3_7kXAGPe7guEBwRouKp8FMRCx9iZL6ei8QMmtwU,4880
@@ -256,6 +258,7 @@ canvas_sdk/v1/data/coverage.py,sha256=i03BeVxNCsxXWnBL8klySFRXXN-T1hF01HyCvcCnlY
256
258
  canvas_sdk/v1/data/detected_issue.py,sha256=k-tOX6fpzfRf9WmG7neHPEeWrpZUdTiTEqYzKaa2haI,1865
257
259
  canvas_sdk/v1/data/device.py,sha256=5YnCApQR3ZprGO9zCsSP-4spwo4HVRDSTY3QCNwqYlo,1932
258
260
  canvas_sdk/v1/data/discount.py,sha256=Bqa0PcytSdqZ0MJor9EShtRUmNWGcBKtivGCmjk9Pbw,618
261
+ canvas_sdk/v1/data/encounter.py,sha256=FDQfcqtCdufZ5B5LpkthM4Qf_D3oK6Gkv1WwoGNQy9U,1315
259
262
  canvas_sdk/v1/data/facility.py,sha256=_Ux4D34Evcexu95iRMLN0foGcHJI6KweIYkbyYVAe0s,947
260
263
  canvas_sdk/v1/data/fields.py,sha256=bI7mPI_3B36ntyoVQ6vuDq8eGLoUIkwZZr14lTC-4To,1104
261
264
  canvas_sdk/v1/data/goal.py,sha256=dOI0rakLBnnYSkdMt5W2uh7_W5Pp21G6s1z70PzU3TY,2465
@@ -265,11 +268,12 @@ canvas_sdk/v1/data/invoice.py,sha256=F5j_Hvu-YwqhHFkp6FDui8vx6GumCAgj14YgDvfyeYU
265
268
  canvas_sdk/v1/data/lab.py,sha256=8FPnApgcEfZ5f62387EgY6RZd8za2wps5LMzCB0_x6U,12969
266
269
  canvas_sdk/v1/data/line_item_transaction.py,sha256=OJA_3DLA1RF0v8jCgQ8SHaoqij_Z97Iatfi5i6CVEis,2406
267
270
  canvas_sdk/v1/data/medication.py,sha256=QMAUqqldJeQK9IuaoO5mWFp3IEjbqcqrxkzIgFZ4O0U,2333
271
+ canvas_sdk/v1/data/medication_statement.py,sha256=lNzwQryRIAxt0m4sC7AHUpx7WXxyrsFPC-s4Si-to1E,1987
268
272
  canvas_sdk/v1/data/message.py,sha256=EKc2kkWGuzrgBH3sDUa9jiNpRP7J1ZdWE6BnPhY2gvs,2268
269
273
  canvas_sdk/v1/data/note.py,sha256=Eq0JgDRzwK84BAT6Y51f47Gke2rseC3vvcjoqhzAsVE,9335
270
274
  canvas_sdk/v1/data/observation.py,sha256=l1EXGQ8FBBInxQthsmY1Oms9v73ni_J7SAP5M8Hmkvg,3881
271
275
  canvas_sdk/v1/data/organization.py,sha256=gt0KZC1hklwWf57vCxs2K0qPnLpMyyNFWNL7-WZ6AqI,1159
272
- canvas_sdk/v1/data/patient.py,sha256=xEtPFnjgAyelRb9TwA7jmQPRoK8mfIV91EBPsEtw3Zk,11744
276
+ canvas_sdk/v1/data/patient.py,sha256=XmOtO7B2qnoj8-fsy15k6OnGcKT0AHj663yZfh5VDa0,11884
273
277
  canvas_sdk/v1/data/patient_consent.py,sha256=zx1C__E6On-MC7OnTgEeP50tn77R6UXw15wC125jDog,2704
274
278
  canvas_sdk/v1/data/payment_collection.py,sha256=h17qmQkCCwSdukIeeYMqBHZnpxpahOa03ckMHmgZV-I,954
275
279
  canvas_sdk/v1/data/payor_specific_charge.py,sha256=TtByy7-QF00PfONC-QDo2kkxRAOdLaRjkhssQBPvZjw,770
@@ -283,6 +287,7 @@ canvas_sdk/v1/data/reason_for_visit.py,sha256=diXbeGUUc_XBmIDpzubxesc6Nhj5F87zw2
283
287
  canvas_sdk/v1/data/referral.py,sha256=qVPHWqDlJoBzrYsNhP6z2NQ2Wpus_OxW8LwHYpLlM-M,3589
284
288
  canvas_sdk/v1/data/service_provider.py,sha256=LQfQ0esg97NpmSYnftsWqYUJyJIQOZKmpZFNnGsxXoQ,1917
285
289
  canvas_sdk/v1/data/staff.py,sha256=osAPzLw2y-SJW5TQt69RnKBmsDx5wKeDNmbBtfxYDWw,9392
290
+ canvas_sdk/v1/data/stop_medication_event.py,sha256=mvUZnlVEZz1BY9hUT8bb_LZauwEOH2ZVcud625rdiLo,1221
286
291
  canvas_sdk/v1/data/task.py,sha256=9jSqr7e7ODJTs4hanWsOD-1Rb8gByJOuLta90V9V_hY,3480
287
292
  canvas_sdk/v1/data/team.py,sha256=J4s98sS7UuUw9jJCe-_7eikr1dV4SQARDzK5oxmsO_o,2832
288
293
  canvas_sdk/v1/data/user.py,sha256=82jnqVrYeWo2eBXY_MH2r75LZo5EKgY9kalahrUl0_s,511
@@ -312,7 +317,7 @@ canvas_sdk/views/__init__.py,sha256=YYXr5tEQlnwMgTXJbOG963tKSPiUOM4mUkX8wuiqp7U,
312
317
  logger/__init__.py,sha256=uMIOf1CDdKSmBKxKwO4CmDpvnJITci76IMXENOwSHEo,85
313
318
  logger/logger.py,sha256=l5W5jn3vGQt6TM7OxOpoMy-vC7RNNA2pGnQJJgHeXWA,2068
314
319
  plugin_runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
315
- plugin_runner/allowed-module-imports.json,sha256=6jLUeS-YMuX8NzgqEVDTFstWF4m5HPRP6DHcw6KDQ10,37904
320
+ plugin_runner/allowed-module-imports.json,sha256=txhTDIMO3kCz3HXO1tPboWMCfLD4VX8pY1QDqVOgwKk,38364
316
321
  plugin_runner/authentication.py,sha256=UyyhXajokVFH866dpDhoTlXS9Cg7y0sQltn0_LcwXrY,1131
317
322
  plugin_runner/aws_headers.py,sha256=wZ8584E1fTW0CdGxOCnLSF8alH27z-URcUyoc6y6ohg,2782
318
323
  plugin_runner/exceptions.py,sha256=ltqn56SMTg-T5miSh5hux4ojwx0hZGSWaB7BxyAmcAo,545
@@ -341,7 +346,7 @@ canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/{{ cookie
341
346
  canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/{{ cookiecutter.__package_name }}/README.md,sha256=3QKoJQq3YmdplGnDOBMsLCJ3Ya1_aKjoz-QiWc4QfjA,291
342
347
  canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/{{ cookiecutter.__package_name }}/protocols/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
343
348
  canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/{{ cookiecutter.__package_name }}/protocols/my_protocol.py,sha256=fKLLcOIwvSWenW8-7tr8VqnF4Iox_5wU9V-Qw9UySsA,2381
344
- canvas-0.63.0.dist-info/METADATA,sha256=6bXMf4EVoeYKwf1Z7BOyTY3PbKpeI39Ad_1EoFcOqeo,4758
345
- canvas-0.63.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
346
- canvas-0.63.0.dist-info/entry_points.txt,sha256=0Vs_9GmTVUNniH6eDBlRPgofmADMV4BES6Ao26M4AbM,47
347
- canvas-0.63.0.dist-info/RECORD,,
349
+ canvas-0.64.0.dist-info/METADATA,sha256=FP2NAEIk_X8u7B7pJehu0FKQ2GQz2KhFvsdFslOohrI,4758
350
+ canvas-0.64.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
351
+ canvas-0.64.0.dist-info/entry_points.txt,sha256=0Vs_9GmTVUNniH6eDBlRPgofmADMV4BES6Ao26M4AbM,47
352
+ canvas-0.64.0.dist-info/RECORD,,
@@ -121,4 +121,5 @@ __exports__ = (
121
121
  "Draft7Validator",
122
122
  "ExtendedDraft7Validator",
123
123
  "from_yaml",
124
+ "QuestionnaireConfig",
124
125
  )
@@ -1,3 +1,4 @@
1
+ from .claim_diagnosis_code import ClaimDiagnosisCodeFactory
1
2
  from .facility import FacilityFactory
2
3
  from .patient import PatientAddressFactory, PatientFacilityAddressFactory, PatientFactory
3
4
  from .protocol_current import ProtocolCurrentFactory
@@ -5,6 +6,7 @@ from .user import CanvasUserFactory
5
6
 
6
7
  __all__ = (
7
8
  "CanvasUserFactory",
9
+ "ClaimDiagnosisCodeFactory",
8
10
  "FacilityFactory",
9
11
  "PatientAddressFactory",
10
12
  "PatientFacilityAddressFactory",
@@ -0,0 +1,15 @@
1
+ import factory
2
+ from factory.fuzzy import FuzzyInteger
3
+
4
+ from canvas_sdk.v1.data import ClaimDiagnosisCode
5
+
6
+
7
+ class ClaimDiagnosisCodeFactory(factory.django.DjangoModelFactory[ClaimDiagnosisCode]):
8
+ """Factory for creating a ClaimDiagnosisCode."""
9
+
10
+ class Meta:
11
+ model = ClaimDiagnosisCode
12
+
13
+ rank = FuzzyInteger(1, 12) # ICD-10 allows up to 12 diagnosis codes on a claim
14
+ code = factory.Faker("bothify", text="?##.##") # ICD-10 format like A01.23
15
+ display = factory.Faker("sentence", nb_words=4) # Human readable diagnosis description
@@ -7,6 +7,7 @@ from .business_line import BusinessLine
7
7
  from .care_team import CareTeamMembership, CareTeamRole
8
8
  from .charge_description_master import ChargeDescriptionMaster
9
9
  from .claim import Claim, ClaimCoverage, ClaimPatient, ClaimQueue, InstallmentPlan
10
+ from .claim_diagnosis_code import ClaimDiagnosisCode
10
11
  from .claim_line_item import ClaimLineItem
11
12
  from .command import Command
12
13
  from .compound_medication import CompoundMedication
@@ -15,6 +16,7 @@ from .coverage import Coverage, Transactor, TransactorAddress, TransactorPhone
15
16
  from .detected_issue import DetectedIssue, DetectedIssueEvidence
16
17
  from .device import Device
17
18
  from .discount import Discount
19
+ from .encounter import Encounter
18
20
  from .facility import Facility
19
21
  from .goal import Goal
20
22
  from .imaging import ImagingOrder, ImagingReport, ImagingReview
@@ -43,6 +45,7 @@ from .line_item_transaction import (
43
45
  NewLineItemPayment,
44
46
  )
45
47
  from .medication import Medication, MedicationCoding
48
+ from .medication_statement import MedicationStatement
46
49
  from .message import Message, MessageAttachment, MessageTransmission
47
50
  from .note import CurrentNoteStateEvent, Note, NoteStateChangeEvent, NoteType
48
51
  from .observation import (
@@ -93,6 +96,7 @@ from .reason_for_visit import ReasonForVisitSettingCoding
93
96
  from .referral import Referral, ReferralReport
94
97
  from .service_provider import ServiceProvider
95
98
  from .staff import Staff, StaffAddress, StaffContactPoint, StaffLicense, StaffPhoto, StaffRole
99
+ from .stop_medication_event import StopMedicationEvent
96
100
  from .task import Task, TaskComment, TaskLabel, TaskTaskLabel
97
101
  from .team import Team, TeamContactPoint
98
102
  from .user import CanvasUser
@@ -117,6 +121,7 @@ __all__ = __exports__ = (
117
121
  "ChargeDescriptionMaster",
118
122
  "Claim",
119
123
  "ClaimCoverage",
124
+ "ClaimDiagnosisCode",
120
125
  "ClaimLineItem",
121
126
  "ClaimPatient",
122
127
  "ClaimQueue",
@@ -131,6 +136,7 @@ __all__ = __exports__ = (
131
136
  "DetectedIssueEvidence",
132
137
  "Device",
133
138
  "Discount",
139
+ "Encounter",
134
140
  "Facility",
135
141
  "Goal",
136
142
  "ImagingOrder",
@@ -158,6 +164,7 @@ __all__ = __exports__ = (
158
164
  "LineItemTransfer",
159
165
  "Medication",
160
166
  "MedicationCoding",
167
+ "MedicationStatement",
161
168
  "Message",
162
169
  "MessageAttachment",
163
170
  "MessageTransmission",
@@ -204,6 +211,7 @@ __all__ = __exports__ = (
204
211
  "StaffPhoto",
205
212
  "StaffRole",
206
213
  "StaffContactPoint",
214
+ "StopMedicationEvent",
207
215
  "Task",
208
216
  "TaskComment",
209
217
  "TaskLabel",
@@ -0,0 +1,22 @@
1
+ from django.db import models
2
+
3
+ from canvas_sdk.v1.data.base import IdentifiableModel
4
+
5
+
6
+ class ClaimDiagnosisCode(IdentifiableModel):
7
+ """ClaimDiagnosisCode model for claim diagnosis codes."""
8
+
9
+ class Meta:
10
+ db_table = "canvas_sdk_data_quality_and_revenue_claimdiagnosiscode_001"
11
+ ordering = ["rank"]
12
+
13
+ claim = models.ForeignKey("v1.Claim", on_delete=models.CASCADE, related_name="diagnosis_codes")
14
+ rank = models.IntegerField()
15
+ code = models.CharField(max_length=20, blank=True)
16
+ display = models.CharField(max_length=1000, blank=True)
17
+
18
+ created = models.DateTimeField(auto_now_add=True)
19
+ modified = models.DateTimeField(auto_now=True)
20
+
21
+
22
+ __exports__ = ("ClaimDiagnosisCode",)
@@ -0,0 +1,46 @@
1
+ from django.db import models
2
+ from django.utils import timezone
3
+
4
+ from canvas_sdk.v1.data.base import IdentifiableModel
5
+
6
+
7
+ class EncounterMedium(models.TextChoices):
8
+ """Encounter medium."""
9
+
10
+ VOICE = "voice", "Telephone visit"
11
+ VIDEO = "video", "Video visit"
12
+ OFFICE = "office", "Office visit"
13
+ HOME = "home", "Home visit"
14
+ OFFSITE = "offsite", "Other offsite visit"
15
+ LAB = "lab", "Lab visit"
16
+
17
+
18
+ class EncounterState(models.TextChoices):
19
+ """Encounter state."""
20
+
21
+ STARTED = "STA", "Started"
22
+ PLANNED = "PLA", "Planned"
23
+ CONCLUDED = "CON", "Concluded"
24
+ CANCELLED = "CAN", "Cancelled"
25
+
26
+
27
+ class Encounter(IdentifiableModel):
28
+ """Encounter."""
29
+
30
+ class Meta:
31
+ db_table = "canvas_sdk_data_api_encounter_001"
32
+
33
+ note = models.OneToOneField("v1.Note", on_delete=models.CASCADE, related_name="encounter")
34
+ created = models.DateTimeField(auto_now_add=True)
35
+ modified = models.DateTimeField(auto_now=True)
36
+ medium = models.CharField(choices=EncounterMedium.choices, max_length=20)
37
+ state = models.CharField(max_length=3, choices=EncounterState.choices)
38
+ start_time = models.DateTimeField(default=timezone.now, null=True)
39
+ end_time = models.DateTimeField(default=None, null=True)
40
+
41
+
42
+ __exports__ = (
43
+ "Encounter",
44
+ "EncounterMedium",
45
+ "EncounterState",
46
+ )
@@ -0,0 +1,50 @@
1
+ from django.db import models
2
+
3
+ from canvas_sdk.v1.data.base import IdentifiableModel
4
+
5
+
6
+ class MedicationStatement(IdentifiableModel):
7
+ """MedicationStatement."""
8
+
9
+ class Meta:
10
+ db_table = "canvas_sdk_data_api_medicationstatement_001"
11
+
12
+ patient = models.ForeignKey(
13
+ "v1.Patient", on_delete=models.DO_NOTHING, related_name="medication_statements"
14
+ )
15
+ note = models.ForeignKey(
16
+ "v1.Note", on_delete=models.DO_NOTHING, related_name="medication_statements"
17
+ )
18
+ medication = models.ForeignKey(
19
+ "v1.Medication",
20
+ on_delete=models.DO_NOTHING,
21
+ related_name="medication_statements",
22
+ null=True,
23
+ )
24
+ indications = models.ManyToManyField(
25
+ "v1.Assessment",
26
+ related_name="treatments_stated",
27
+ db_table="canvas_sdk_data_api_medicationstatement_indications_001",
28
+ )
29
+ entered_in_error = models.ForeignKey(
30
+ "v1.CanvasUser", on_delete=models.DO_NOTHING, related_name="+", null=True
31
+ )
32
+ committer = models.ForeignKey(
33
+ "v1.CanvasUser", on_delete=models.DO_NOTHING, related_name="+", null=True
34
+ )
35
+ originator = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, related_name="+")
36
+ created = models.DateTimeField(auto_now_add=True)
37
+ modified = models.DateTimeField(auto_now=True)
38
+ start_date_original_input = models.CharField(max_length=255, default="")
39
+ start_date = models.DateField(default=None, null=True)
40
+ end_date_original_input = models.CharField(max_length=255, default="")
41
+ end_date = models.DateField(default=None, null=True)
42
+ dose_quantity = models.FloatField(null=True)
43
+ dose_form = models.CharField(max_length=255, default="")
44
+ dose_route = models.CharField(max_length=255, default="")
45
+ dose_frequency = models.FloatField(null=True)
46
+ dose_frequency_interval = models.CharField(max_length=255, default="")
47
+ sig_original_input = models.CharField(max_length=255, default="")
48
+
49
+
50
+ __exports__ = ("MedicationStatement",)
@@ -72,6 +72,9 @@ class Patient(Model):
72
72
  biological_race_codes = ArrayField(
73
73
  models.CharField(max_length=100, default="", blank=True), default=list, blank=True
74
74
  )
75
+ cultural_ethnicity_codes = ArrayField(
76
+ models.CharField(max_length=100, default="", blank=True), default=list, blank=True
77
+ )
75
78
  last_known_timezone = models.CharField(max_length=32, null=True, blank=True)
76
79
  mrn = models.CharField(max_length=9, unique=True, default=generate_mrn)
77
80
  active = models.BooleanField(default=True)
@@ -0,0 +1,36 @@
1
+ from django.db import models
2
+
3
+ from canvas_sdk.v1.data.base import IdentifiableModel
4
+
5
+
6
+ class StopMedicationEvent(IdentifiableModel):
7
+ """StopMedicationEvent."""
8
+
9
+ class Meta:
10
+ db_table = "canvas_sdk_data_api_stopmedicationevent_001"
11
+
12
+ patient = models.ForeignKey(
13
+ "v1.Patient", on_delete=models.DO_NOTHING, related_name="stopped_medications"
14
+ )
15
+ note = models.ForeignKey(
16
+ "v1.Note", on_delete=models.DO_NOTHING, related_name="stopped_medications"
17
+ )
18
+ medication = models.ForeignKey(
19
+ "v1.Medication",
20
+ on_delete=models.DO_NOTHING,
21
+ related_name="stopmedicationevent_set",
22
+ null=True,
23
+ )
24
+ entered_in_error = models.ForeignKey(
25
+ "v1.CanvasUser", on_delete=models.DO_NOTHING, related_name="+", null=True
26
+ )
27
+ committer = models.ForeignKey(
28
+ "v1.CanvasUser", on_delete=models.DO_NOTHING, related_name="+", null=True
29
+ )
30
+ originator = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, related_name="+")
31
+ created = models.DateTimeField(auto_now_add=True)
32
+ modified = models.DateTimeField(auto_now=True)
33
+ rationale = models.CharField(max_length=1024, default="")
34
+
35
+
36
+ __exports__ = ("StopMedicationEvent",)
@@ -509,6 +509,7 @@
509
509
  "canvas_sdk.questionnaires.utils": [
510
510
  "Draft7Validator",
511
511
  "ExtendedDraft7Validator",
512
+ "QuestionnaireConfig",
512
513
  "from_yaml"
513
514
  ],
514
515
  "canvas_sdk.templates": [
@@ -558,6 +559,7 @@
558
559
  "ChargeDescriptionMaster",
559
560
  "Claim",
560
561
  "ClaimCoverage",
562
+ "ClaimDiagnosisCode",
561
563
  "ClaimLineItem",
562
564
  "ClaimPatient",
563
565
  "ClaimQueue",
@@ -572,6 +574,7 @@
572
574
  "DetectedIssueEvidence",
573
575
  "Device",
574
576
  "Discount",
577
+ "Encounter",
575
578
  "Facility",
576
579
  "Goal",
577
580
  "ImagingOrder",
@@ -599,6 +602,7 @@
599
602
  "LineItemTransfer",
600
603
  "Medication",
601
604
  "MedicationCoding",
605
+ "MedicationStatement",
602
606
  "Message",
603
607
  "MessageAttachment",
604
608
  "MessageTransmission",
@@ -645,6 +649,7 @@
645
649
  "StaffLicense",
646
650
  "StaffPhoto",
647
651
  "StaffRole",
652
+ "StopMedicationEvent",
648
653
  "Task",
649
654
  "TaskComment",
650
655
  "TaskLabel",
@@ -701,6 +706,9 @@
701
706
  "InstallmentPlan",
702
707
  "InstallmentPlanStatus"
703
708
  ],
709
+ "canvas_sdk.v1.data.claim_diagnosis_code": [
710
+ "ClaimDiagnosisCode"
711
+ ],
704
712
  "canvas_sdk.v1.data.claim_line_item": [
705
713
  "ClaimLineItem",
706
714
  "ClaimLineItemStatus",
@@ -756,6 +764,11 @@
756
764
  "canvas_sdk.v1.data.discount": [
757
765
  "Discount"
758
766
  ],
767
+ "canvas_sdk.v1.data.encounter": [
768
+ "Encounter",
769
+ "EncounterMedium",
770
+ "EncounterState"
771
+ ],
759
772
  "canvas_sdk.v1.data.facility": [
760
773
  "Facility"
761
774
  ],
@@ -809,6 +822,9 @@
809
822
  "MedicationCoding",
810
823
  "Status"
811
824
  ],
825
+ "canvas_sdk.v1.data.medication_statement": [
826
+ "MedicationStatement"
827
+ ],
812
828
  "canvas_sdk.v1.data.message": [
813
829
  "Message",
814
830
  "MessageAttachment",
@@ -914,6 +930,9 @@
914
930
  "StaffPhoto",
915
931
  "StaffRole"
916
932
  ],
933
+ "canvas_sdk.v1.data.stop_medication_event": [
934
+ "StopMedicationEvent"
935
+ ],
917
936
  "canvas_sdk.v1.data.task": [
918
937
  "EventType",
919
938
  "Task",
settings.py CHANGED
@@ -77,10 +77,24 @@ else:
77
77
 
78
78
  PLUGIN_RUNNER_MAX_WORKERS = int(os.getenv("PLUGIN_RUNNER_MAX_WORKERS", 5))
79
79
 
80
+ # By default, allow a pool size that gives each worker 2 active connections
81
+ # and allow overriding via environment variable if necessary
82
+ PLUGIN_RUNNER_DATABASE_POOL_MAX = int(
83
+ os.getenv(
84
+ "PLUGIN_RUNNER_DATABASE_POOL_MAX",
85
+ PLUGIN_RUNNER_MAX_WORKERS * 2,
86
+ )
87
+ )
88
+
80
89
  if CANVAS_SDK_DB_BACKEND == "postgres":
81
90
  db_config: dict[str, Any] = {
82
91
  "ENGINE": "django.db.backends.postgresql",
83
- "OPTIONS": {"pool": {"min_size": 2, "max_size": PLUGIN_RUNNER_MAX_WORKERS}},
92
+ "OPTIONS": {
93
+ "pool": {
94
+ "min_size": 2,
95
+ "max_size": PLUGIN_RUNNER_DATABASE_POOL_MAX,
96
+ }
97
+ },
84
98
  }
85
99
 
86
100
  if CANVAS_SDK_DB_URL: