canvas 0.63.0__py3-none-any.whl → 0.89.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.
- {canvas-0.63.0.dist-info → canvas-0.89.0.dist-info}/METADATA +4 -1
- {canvas-0.63.0.dist-info → canvas-0.89.0.dist-info}/RECORD +184 -98
- {canvas-0.63.0.dist-info → canvas-0.89.0.dist-info}/WHEEL +1 -1
- canvas_cli/apps/emit/event_fixtures/UNKNOWN.ndjson +1 -0
- canvas_cli/apps/logs/logs.py +386 -22
- canvas_cli/main.py +3 -1
- canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/tests/test_models.py +46 -4
- canvas_cli/utils/context/context.py +13 -13
- canvas_cli/utils/validators/manifest_schema.py +26 -1
- canvas_generated/messages/effects_pb2.py +5 -5
- canvas_generated/messages/effects_pb2.pyi +108 -2
- canvas_generated/messages/events_pb2.py +6 -6
- canvas_generated/messages/events_pb2.pyi +282 -2
- canvas_sdk/clients/__init__.py +1 -0
- canvas_sdk/clients/llms/__init__.py +17 -0
- canvas_sdk/clients/llms/libraries/__init__.py +11 -0
- canvas_sdk/clients/llms/libraries/llm_anthropic.py +87 -0
- canvas_sdk/clients/llms/libraries/llm_api.py +143 -0
- canvas_sdk/clients/llms/libraries/llm_google.py +92 -0
- canvas_sdk/clients/llms/libraries/llm_openai.py +98 -0
- canvas_sdk/clients/llms/structures/__init__.py +9 -0
- canvas_sdk/clients/llms/structures/llm_response.py +33 -0
- canvas_sdk/clients/llms/structures/llm_tokens.py +53 -0
- canvas_sdk/clients/llms/structures/llm_turn.py +47 -0
- canvas_sdk/clients/llms/structures/settings/__init__.py +13 -0
- canvas_sdk/clients/llms/structures/settings/llm_settings.py +27 -0
- canvas_sdk/clients/llms/structures/settings/llm_settings_anthropic.py +43 -0
- canvas_sdk/clients/llms/structures/settings/llm_settings_gemini.py +40 -0
- canvas_sdk/clients/llms/structures/settings/llm_settings_gpt4.py +40 -0
- canvas_sdk/clients/llms/structures/settings/llm_settings_gpt5.py +48 -0
- canvas_sdk/clients/third_party.py +3 -0
- canvas_sdk/commands/__init__.py +12 -0
- canvas_sdk/commands/base.py +33 -2
- canvas_sdk/commands/commands/adjust_prescription.py +4 -0
- canvas_sdk/commands/commands/custom_command.py +86 -0
- canvas_sdk/commands/commands/family_history.py +17 -1
- canvas_sdk/commands/commands/immunization_statement.py +42 -2
- canvas_sdk/commands/commands/medication_statement.py +16 -1
- canvas_sdk/commands/commands/past_surgical_history.py +16 -1
- canvas_sdk/commands/commands/perform.py +18 -1
- canvas_sdk/commands/commands/prescribe.py +8 -9
- canvas_sdk/commands/commands/refill.py +5 -5
- canvas_sdk/commands/commands/resolve_condition.py +5 -5
- canvas_sdk/commands/commands/review/__init__.py +3 -0
- canvas_sdk/commands/commands/review/base.py +72 -0
- canvas_sdk/commands/commands/review/imaging.py +13 -0
- canvas_sdk/commands/commands/review/lab.py +13 -0
- canvas_sdk/commands/commands/review/referral.py +13 -0
- canvas_sdk/commands/commands/review/uncategorized_document.py +13 -0
- canvas_sdk/commands/validation.py +43 -0
- canvas_sdk/effects/batch_originate.py +22 -0
- canvas_sdk/effects/calendar/__init__.py +13 -3
- canvas_sdk/effects/calendar/{create_calendar.py → calendar.py} +19 -5
- canvas_sdk/effects/calendar/event.py +172 -0
- canvas_sdk/effects/claim_label.py +93 -0
- canvas_sdk/effects/claim_line_item.py +47 -0
- canvas_sdk/effects/claim_queue.py +49 -0
- canvas_sdk/effects/fax/__init__.py +3 -0
- canvas_sdk/effects/fax/base.py +77 -0
- canvas_sdk/effects/fax/note.py +42 -0
- canvas_sdk/effects/metadata.py +15 -1
- canvas_sdk/effects/note/__init__.py +8 -1
- canvas_sdk/effects/note/appointment.py +135 -7
- canvas_sdk/effects/note/base.py +17 -0
- canvas_sdk/effects/note/message.py +22 -14
- canvas_sdk/effects/note/note.py +150 -1
- canvas_sdk/effects/observation/__init__.py +11 -0
- canvas_sdk/effects/observation/base.py +206 -0
- canvas_sdk/effects/patient/__init__.py +2 -0
- canvas_sdk/effects/patient/base.py +8 -0
- canvas_sdk/effects/payment/__init__.py +11 -0
- canvas_sdk/effects/payment/base.py +355 -0
- canvas_sdk/effects/payment/post_claim_payment.py +49 -0
- canvas_sdk/effects/send_contact_verification.py +42 -0
- canvas_sdk/effects/task/__init__.py +2 -1
- canvas_sdk/effects/task/task.py +30 -0
- canvas_sdk/effects/validation/__init__.py +3 -0
- canvas_sdk/effects/validation/base.py +92 -0
- canvas_sdk/events/base.py +15 -0
- canvas_sdk/handlers/application.py +7 -7
- canvas_sdk/handlers/simple_api/api.py +1 -4
- canvas_sdk/handlers/simple_api/websocket.py +1 -4
- canvas_sdk/handlers/utils.py +14 -0
- canvas_sdk/questionnaires/utils.py +1 -0
- canvas_sdk/templates/utils.py +17 -4
- canvas_sdk/test_utils/factories/FACTORY_GUIDE.md +362 -0
- canvas_sdk/test_utils/factories/__init__.py +115 -0
- canvas_sdk/test_utils/factories/calendar.py +24 -0
- canvas_sdk/test_utils/factories/claim.py +81 -0
- canvas_sdk/test_utils/factories/claim_diagnosis_code.py +16 -0
- canvas_sdk/test_utils/factories/coverage.py +17 -0
- canvas_sdk/test_utils/factories/imaging.py +74 -0
- canvas_sdk/test_utils/factories/lab.py +192 -0
- canvas_sdk/test_utils/factories/medication_history.py +75 -0
- canvas_sdk/test_utils/factories/note.py +52 -0
- canvas_sdk/test_utils/factories/organization.py +50 -0
- canvas_sdk/test_utils/factories/practicelocation.py +88 -0
- canvas_sdk/test_utils/factories/referral.py +81 -0
- canvas_sdk/test_utils/factories/staff.py +111 -0
- canvas_sdk/test_utils/factories/task.py +66 -0
- canvas_sdk/test_utils/factories/uncategorized_clinical_document.py +48 -0
- canvas_sdk/utils/metrics.py +4 -1
- canvas_sdk/v1/data/__init__.py +66 -7
- canvas_sdk/v1/data/allergy_intolerance.py +5 -11
- canvas_sdk/v1/data/appointment.py +18 -4
- canvas_sdk/v1/data/assessment.py +2 -12
- canvas_sdk/v1/data/banner_alert.py +2 -4
- canvas_sdk/v1/data/base.py +53 -14
- canvas_sdk/v1/data/billing.py +8 -11
- canvas_sdk/v1/data/calendar.py +64 -0
- canvas_sdk/v1/data/care_team.py +4 -10
- canvas_sdk/v1/data/claim.py +172 -66
- canvas_sdk/v1/data/claim_diagnosis_code.py +19 -0
- canvas_sdk/v1/data/claim_line_item.py +2 -5
- canvas_sdk/v1/data/coding.py +19 -0
- canvas_sdk/v1/data/command.py +2 -4
- canvas_sdk/v1/data/common.py +10 -0
- canvas_sdk/v1/data/compound_medication.py +3 -4
- canvas_sdk/v1/data/condition.py +4 -9
- canvas_sdk/v1/data/coverage.py +66 -26
- canvas_sdk/v1/data/detected_issue.py +20 -20
- canvas_sdk/v1/data/device.py +2 -14
- canvas_sdk/v1/data/discount.py +2 -5
- canvas_sdk/v1/data/encounter.py +44 -0
- canvas_sdk/v1/data/facility.py +1 -0
- canvas_sdk/v1/data/goal.py +2 -14
- canvas_sdk/v1/data/imaging.py +4 -30
- canvas_sdk/v1/data/immunization.py +7 -15
- canvas_sdk/v1/data/lab.py +12 -65
- canvas_sdk/v1/data/line_item_transaction.py +2 -5
- canvas_sdk/v1/data/medication.py +3 -8
- canvas_sdk/v1/data/medication_history.py +142 -0
- canvas_sdk/v1/data/medication_statement.py +41 -0
- canvas_sdk/v1/data/message.py +4 -8
- canvas_sdk/v1/data/note.py +37 -38
- canvas_sdk/v1/data/observation.py +9 -36
- canvas_sdk/v1/data/organization.py +70 -9
- canvas_sdk/v1/data/patient.py +8 -12
- canvas_sdk/v1/data/patient_consent.py +4 -14
- canvas_sdk/v1/data/payment_collection.py +2 -5
- canvas_sdk/v1/data/posting.py +3 -9
- canvas_sdk/v1/data/practicelocation.py +66 -7
- canvas_sdk/v1/data/protocol_override.py +3 -4
- canvas_sdk/v1/data/protocol_result.py +3 -3
- canvas_sdk/v1/data/questionnaire.py +10 -26
- canvas_sdk/v1/data/reason_for_visit.py +2 -6
- canvas_sdk/v1/data/referral.py +41 -17
- canvas_sdk/v1/data/staff.py +34 -26
- canvas_sdk/v1/data/stop_medication_event.py +27 -0
- canvas_sdk/v1/data/task.py +30 -11
- canvas_sdk/v1/data/team.py +2 -4
- canvas_sdk/v1/data/uncategorized_clinical_document.py +84 -0
- canvas_sdk/v1/data/user.py +14 -0
- canvas_sdk/v1/data/utils.py +5 -0
- canvas_sdk/value_set/v2026/__init__.py +1 -0
- canvas_sdk/value_set/v2026/adverse_event.py +157 -0
- canvas_sdk/value_set/v2026/allergy.py +116 -0
- canvas_sdk/value_set/v2026/assessment.py +466 -0
- canvas_sdk/value_set/v2026/communication.py +496 -0
- canvas_sdk/value_set/v2026/condition.py +52934 -0
- canvas_sdk/value_set/v2026/device.py +315 -0
- canvas_sdk/value_set/v2026/diagnostic_study.py +5243 -0
- canvas_sdk/value_set/v2026/encounter.py +2714 -0
- canvas_sdk/value_set/v2026/immunization.py +297 -0
- canvas_sdk/value_set/v2026/individual_characteristic.py +339 -0
- canvas_sdk/value_set/v2026/intervention.py +1703 -0
- canvas_sdk/value_set/v2026/laboratory_test.py +1831 -0
- canvas_sdk/value_set/v2026/medication.py +8218 -0
- canvas_sdk/value_set/v2026/no_qdm_category_assigned.py +26493 -0
- canvas_sdk/value_set/v2026/physical_exam.py +342 -0
- canvas_sdk/value_set/v2026/procedure.py +27869 -0
- canvas_sdk/value_set/v2026/symptom.py +625 -0
- logger/logger.py +30 -31
- logger/logstash.py +282 -0
- logger/pubsub.py +26 -0
- plugin_runner/allowed-module-imports.json +940 -9
- plugin_runner/generate_allowed_imports.py +1 -0
- plugin_runner/installation.py +2 -2
- plugin_runner/plugin_runner.py +21 -24
- plugin_runner/sandbox.py +34 -0
- protobufs/canvas_generated/messages/effects.proto +65 -0
- protobufs/canvas_generated/messages/events.proto +150 -51
- settings.py +27 -11
- canvas_sdk/effects/calendar/create_event.py +0 -43
- {canvas-0.63.0.dist-info → canvas-0.89.0.dist-info}/entry_points.txt +0 -0
canvas_sdk/v1/data/coverage.py
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
from datetime import date
|
|
2
|
+
|
|
1
3
|
from django.contrib.postgres.fields import ArrayField
|
|
2
4
|
from django.db import models
|
|
3
5
|
|
|
4
|
-
from canvas_sdk.v1.data.base import IdentifiableModel, Model
|
|
6
|
+
from canvas_sdk.v1.data.base import IdentifiableModel, Model, TimestampedModel
|
|
5
7
|
from canvas_sdk.v1.data.common import (
|
|
6
8
|
AddressState,
|
|
7
9
|
AddressType,
|
|
@@ -12,6 +14,16 @@ from canvas_sdk.v1.data.common import (
|
|
|
12
14
|
)
|
|
13
15
|
|
|
14
16
|
|
|
17
|
+
class CoverageRank(models.IntegerChoices):
|
|
18
|
+
"""CoverageRank."""
|
|
19
|
+
|
|
20
|
+
PRIMARY = 1, "Primary"
|
|
21
|
+
SECONDARY = 2, "Secondary"
|
|
22
|
+
TERTIARY = 3, "Tertiary"
|
|
23
|
+
QUATERNARY = 4, "Quaternary"
|
|
24
|
+
QUINARY = 5, "Quinary"
|
|
25
|
+
|
|
26
|
+
|
|
15
27
|
class CoverageStack(models.TextChoices):
|
|
16
28
|
"""CoverageStack."""
|
|
17
29
|
|
|
@@ -145,14 +157,12 @@ class TransactorType(models.TextChoices):
|
|
|
145
157
|
BCBS = "bcbs", "Blue Cross Blue Shield"
|
|
146
158
|
|
|
147
159
|
|
|
148
|
-
class Coverage(IdentifiableModel):
|
|
160
|
+
class Coverage(TimestampedModel, IdentifiableModel):
|
|
149
161
|
"""Coverage."""
|
|
150
162
|
|
|
151
163
|
class Meta:
|
|
152
164
|
db_table = "canvas_sdk_data_api_coverage_001"
|
|
153
165
|
|
|
154
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
155
|
-
modified = models.DateTimeField(auto_now=True)
|
|
156
166
|
patient = models.ForeignKey(
|
|
157
167
|
"v1.Patient", on_delete=models.DO_NOTHING, related_name="coverages", null=True
|
|
158
168
|
)
|
|
@@ -163,34 +173,54 @@ class Coverage(IdentifiableModel):
|
|
|
163
173
|
"v1.Patient", on_delete=models.DO_NOTHING, related_name="subscribed_coverages", null=True
|
|
164
174
|
)
|
|
165
175
|
patient_relationship_to_subscriber = models.CharField(
|
|
166
|
-
choices=CoverageRelationshipCode.choices,
|
|
176
|
+
choices=CoverageRelationshipCode.choices,
|
|
177
|
+
max_length=2,
|
|
178
|
+
default=CoverageRelationshipCode.SELF,
|
|
167
179
|
)
|
|
168
180
|
issuer = models.ForeignKey(
|
|
169
181
|
"v1.Transactor", on_delete=models.DO_NOTHING, related_name="coverages", null=True
|
|
170
182
|
)
|
|
171
|
-
id_number = models.CharField(max_length=100)
|
|
172
|
-
plan = models.CharField(max_length=255)
|
|
173
|
-
sub_plan = models.CharField(max_length=255)
|
|
174
|
-
group = models.CharField(max_length=255)
|
|
175
|
-
sub_group = models.CharField(max_length=255)
|
|
176
|
-
employer = models.CharField(max_length=255)
|
|
177
|
-
coverage_start_date = models.DateField()
|
|
178
|
-
coverage_end_date = models.DateField()
|
|
179
|
-
coverage_rank = models.IntegerField()
|
|
180
|
-
state = models.CharField(
|
|
181
|
-
|
|
182
|
-
|
|
183
|
+
id_number = models.CharField(max_length=100, blank=True, default="")
|
|
184
|
+
plan = models.CharField(max_length=255, blank=True, default="")
|
|
185
|
+
sub_plan = models.CharField(max_length=255, blank=True, default="")
|
|
186
|
+
group = models.CharField(max_length=255, default="", blank=True)
|
|
187
|
+
sub_group = models.CharField(max_length=255, default="", blank=True)
|
|
188
|
+
employer = models.CharField(max_length=255, default="", blank=True)
|
|
189
|
+
coverage_start_date = models.DateField(default=date.today)
|
|
190
|
+
coverage_end_date = models.DateField(null=True)
|
|
191
|
+
coverage_rank = models.IntegerField(choices=CoverageRank.choices, default=CoverageRank.PRIMARY)
|
|
192
|
+
state = models.CharField(
|
|
193
|
+
choices=CoverageState.choices, max_length=20, default=CoverageState.ACTIVE
|
|
194
|
+
)
|
|
195
|
+
plan_type = models.CharField(
|
|
196
|
+
choices=CoverageType.choices, max_length=20, default=CoverageType.COMMERCIAL
|
|
197
|
+
)
|
|
198
|
+
coverage_type = models.CharField(
|
|
199
|
+
choices=TransactorCoverageType.choices, max_length=64, null=True, blank=True
|
|
200
|
+
)
|
|
183
201
|
issuer_address = models.ForeignKey(
|
|
184
202
|
"v1.TransactorAddress",
|
|
185
203
|
on_delete=models.DO_NOTHING,
|
|
186
204
|
related_name="coverages",
|
|
187
205
|
null=True,
|
|
206
|
+
blank=True,
|
|
188
207
|
)
|
|
189
208
|
issuer_phone = models.ForeignKey(
|
|
190
|
-
"v1.TransactorPhone",
|
|
209
|
+
"v1.TransactorPhone",
|
|
210
|
+
on_delete=models.DO_NOTHING,
|
|
211
|
+
related_name="coverages",
|
|
212
|
+
null=True,
|
|
213
|
+
blank=True,
|
|
214
|
+
)
|
|
215
|
+
comments = models.TextField(default="", blank=True)
|
|
216
|
+
stack = models.CharField(
|
|
217
|
+
choices=CoverageStack.choices,
|
|
218
|
+
default=CoverageStack.IN_USE,
|
|
219
|
+
max_length=8,
|
|
220
|
+
db_index=True,
|
|
191
221
|
)
|
|
192
|
-
comments = models.TextField()
|
|
193
|
-
|
|
222
|
+
comments = models.TextField(default="", blank=True)
|
|
223
|
+
subscriber_identifier = models.CharField(max_length=100, blank=True, default="")
|
|
194
224
|
|
|
195
225
|
def __str__(self) -> str:
|
|
196
226
|
return f"id={self.id}"
|
|
@@ -236,14 +266,12 @@ class Transactor(Model):
|
|
|
236
266
|
)
|
|
237
267
|
|
|
238
268
|
|
|
239
|
-
class TransactorAddress(IdentifiableModel):
|
|
269
|
+
class TransactorAddress(TimestampedModel, IdentifiableModel):
|
|
240
270
|
"""TransactorAddress."""
|
|
241
271
|
|
|
242
272
|
class Meta:
|
|
243
273
|
db_table = "canvas_sdk_data_quality_and_revenue_transactoraddress_001"
|
|
244
274
|
|
|
245
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
246
|
-
modified = models.DateTimeField(auto_now=True)
|
|
247
275
|
line1 = models.CharField(max_length=255)
|
|
248
276
|
line2 = models.CharField(max_length=255)
|
|
249
277
|
city = models.CharField(max_length=255)
|
|
@@ -266,14 +294,12 @@ class TransactorAddress(IdentifiableModel):
|
|
|
266
294
|
return f"id={self.id}"
|
|
267
295
|
|
|
268
296
|
|
|
269
|
-
class TransactorPhone(IdentifiableModel):
|
|
297
|
+
class TransactorPhone(TimestampedModel, IdentifiableModel):
|
|
270
298
|
"""TransactorPhone."""
|
|
271
299
|
|
|
272
300
|
class Meta:
|
|
273
301
|
db_table = "canvas_sdk_data_quality_and_revenue_transactorphone_001"
|
|
274
302
|
|
|
275
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
276
|
-
modified = models.DateTimeField(auto_now=True)
|
|
277
303
|
system = models.CharField(choices=ContactPointSystem.choices, max_length=20)
|
|
278
304
|
value = models.CharField(max_length=100)
|
|
279
305
|
use = models.CharField(choices=ContactPointUse.choices, max_length=20)
|
|
@@ -288,11 +314,25 @@ class TransactorPhone(IdentifiableModel):
|
|
|
288
314
|
return f"id={self.id}"
|
|
289
315
|
|
|
290
316
|
|
|
317
|
+
class EligibilitySummary(TimestampedModel, IdentifiableModel):
|
|
318
|
+
"""EligibilitySummary."""
|
|
319
|
+
|
|
320
|
+
class Meta:
|
|
321
|
+
db_table = "canvas_sdk_data_quality_and_revenue_eligibilitysummary_001"
|
|
322
|
+
|
|
323
|
+
coverage = models.OneToOneField(
|
|
324
|
+
"v1.Coverage", on_delete=models.CASCADE, related_name="eligibility_summary"
|
|
325
|
+
)
|
|
326
|
+
copay_cents = models.IntegerField(null=True)
|
|
327
|
+
coinsurance = models.IntegerField(null=True)
|
|
328
|
+
|
|
329
|
+
|
|
291
330
|
__exports__ = (
|
|
292
331
|
"CoverageStack",
|
|
293
332
|
"CoverageState",
|
|
294
333
|
"CoverageType",
|
|
295
334
|
"CoverageRelationshipCode",
|
|
335
|
+
"EligibilitySummary",
|
|
296
336
|
"TransactorCoverageType",
|
|
297
337
|
"TransactorType",
|
|
298
338
|
"Coverage",
|
|
@@ -1,50 +1,50 @@
|
|
|
1
1
|
from django.db import models
|
|
2
2
|
|
|
3
|
-
from canvas_sdk.v1.data.base import IdentifiableModel
|
|
3
|
+
from canvas_sdk.v1.data.base import AuditedModel, IdentifiableModel
|
|
4
|
+
from canvas_sdk.v1.data.coding import Coding
|
|
4
5
|
|
|
5
6
|
|
|
6
|
-
class DetectedIssue(IdentifiableModel):
|
|
7
|
+
class DetectedIssue(AuditedModel, IdentifiableModel):
|
|
7
8
|
"""DetectedIssue."""
|
|
8
9
|
|
|
9
10
|
class Meta:
|
|
10
11
|
db_table = "canvas_sdk_data_api_detectedissue_001"
|
|
11
12
|
|
|
13
|
+
class Status(models.TextChoices):
|
|
14
|
+
REGISTERED = "registered", "Registered"
|
|
15
|
+
PRELIMINARY = "preliminary", "Preliminary"
|
|
16
|
+
CANCELLED = "cancelled", "Cancelled"
|
|
17
|
+
AMENDED = "amended", "Amended"
|
|
18
|
+
FINAL = "final", "Final"
|
|
19
|
+
CORRECTED = "corrected", "Corrected"
|
|
20
|
+
ENTERED_IN_ERROR = "entered-in-error", "Entered in Error"
|
|
21
|
+
|
|
22
|
+
class Severity(models.TextChoices):
|
|
23
|
+
HIGH = "high", "High"
|
|
24
|
+
MODERATE = "moderate", "Moderate"
|
|
25
|
+
LOW = "low", "Low"
|
|
26
|
+
|
|
12
27
|
created = models.DateTimeField(auto_now_add=True)
|
|
13
28
|
modified = models.DateTimeField(auto_now=True)
|
|
14
29
|
identified = models.DateTimeField()
|
|
15
|
-
deleted = models.BooleanField()
|
|
16
|
-
originator = models.ForeignKey(
|
|
17
|
-
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
18
|
-
)
|
|
19
|
-
committer = models.ForeignKey(
|
|
20
|
-
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
21
|
-
)
|
|
22
|
-
entered_in_error = models.ForeignKey(
|
|
23
|
-
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
24
|
-
)
|
|
25
30
|
patient = models.ForeignKey(
|
|
26
31
|
"v1.Patient", on_delete=models.DO_NOTHING, related_name="detected_issues", null=True
|
|
27
32
|
)
|
|
28
33
|
code = models.CharField(max_length=20)
|
|
29
|
-
status = models.CharField(max_length=16)
|
|
30
|
-
severity = models.CharField(max_length=10)
|
|
34
|
+
status = models.CharField(max_length=16, choices=Status.choices)
|
|
35
|
+
severity = models.CharField(max_length=10, choices=Severity.choices, blank=True, default="")
|
|
31
36
|
reference = models.CharField(max_length=200)
|
|
32
37
|
issue_identifier = models.CharField(max_length=255)
|
|
33
38
|
issue_identifier_system = models.CharField(max_length=255)
|
|
34
39
|
detail = models.TextField()
|
|
35
40
|
|
|
36
41
|
|
|
37
|
-
class DetectedIssueEvidence(IdentifiableModel):
|
|
42
|
+
class DetectedIssueEvidence(IdentifiableModel, Coding):
|
|
38
43
|
"""DetectedIssueEvidence."""
|
|
39
44
|
|
|
40
45
|
class Meta:
|
|
41
46
|
db_table = "canvas_sdk_data_api_detectedissueevidence_001"
|
|
42
47
|
|
|
43
|
-
system = models.CharField(max_length=255)
|
|
44
|
-
version = models.CharField(max_length=255)
|
|
45
|
-
code = models.CharField(max_length=255)
|
|
46
|
-
display = models.CharField(max_length=1000)
|
|
47
|
-
user_selected = models.BooleanField()
|
|
48
48
|
detected_issue = models.ForeignKey(
|
|
49
49
|
DetectedIssue,
|
|
50
50
|
on_delete=models.DO_NOTHING,
|
canvas_sdk/v1/data/device.py
CHANGED
|
@@ -1,30 +1,18 @@
|
|
|
1
1
|
from django.db import models
|
|
2
2
|
|
|
3
|
-
from canvas_sdk.v1.data.base import IdentifiableModel
|
|
3
|
+
from canvas_sdk.v1.data.base import AuditedModel, IdentifiableModel
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
class Device(IdentifiableModel):
|
|
6
|
+
class Device(AuditedModel, IdentifiableModel):
|
|
7
7
|
"""Device."""
|
|
8
8
|
|
|
9
9
|
class Meta:
|
|
10
10
|
db_table = "canvas_sdk_data_api_device_001"
|
|
11
11
|
|
|
12
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
13
|
-
modified = models.DateTimeField(auto_now=True)
|
|
14
|
-
originator = models.ForeignKey(
|
|
15
|
-
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
16
|
-
)
|
|
17
|
-
committer = models.ForeignKey(
|
|
18
|
-
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
19
|
-
)
|
|
20
|
-
entered_in_error = models.ForeignKey(
|
|
21
|
-
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
22
|
-
)
|
|
23
12
|
patient = models.ForeignKey(
|
|
24
13
|
"v1.Patient", on_delete=models.DO_NOTHING, related_name="devices", null=True
|
|
25
14
|
)
|
|
26
15
|
note_id = models.BigIntegerField()
|
|
27
|
-
deleted = models.BooleanField()
|
|
28
16
|
labeled_contains_NRL = models.BooleanField()
|
|
29
17
|
assigning_authority = models.CharField(max_length=255)
|
|
30
18
|
scoping_entity = models.CharField(max_length=255)
|
canvas_sdk/v1/data/discount.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from django.db import models
|
|
2
2
|
|
|
3
|
-
from canvas_sdk.v1.data.base import
|
|
3
|
+
from canvas_sdk.v1.data.base import TimestampedModel
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
class Discount(
|
|
6
|
+
class Discount(TimestampedModel):
|
|
7
7
|
"""Model to represent a discount applied to a claim or patient posting."""
|
|
8
8
|
|
|
9
9
|
class Meta:
|
|
@@ -14,8 +14,5 @@ class Discount(Model):
|
|
|
14
14
|
adjustment_code = models.CharField(max_length=3)
|
|
15
15
|
discount = models.DecimalField(max_digits=8, decimal_places=2)
|
|
16
16
|
|
|
17
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
18
|
-
modified = models.DateTimeField(auto_now=True)
|
|
19
|
-
|
|
20
17
|
|
|
21
18
|
__exports__ = ("Discount",)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
from django.utils import timezone
|
|
3
|
+
|
|
4
|
+
from canvas_sdk.v1.data.base import IdentifiableModel, TimestampedModel
|
|
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(TimestampedModel, 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
|
+
medium = models.CharField(choices=EncounterMedium.choices, max_length=20)
|
|
35
|
+
state = models.CharField(max_length=3, choices=EncounterState.choices)
|
|
36
|
+
start_time = models.DateTimeField(default=timezone.now, null=True)
|
|
37
|
+
end_time = models.DateTimeField(default=None, null=True)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
__exports__ = (
|
|
41
|
+
"Encounter",
|
|
42
|
+
"EncounterMedium",
|
|
43
|
+
"EncounterState",
|
|
44
|
+
)
|
canvas_sdk/v1/data/facility.py
CHANGED
|
@@ -12,6 +12,7 @@ class Facility(IdentifiableModel):
|
|
|
12
12
|
name = models.CharField(max_length=255)
|
|
13
13
|
npi_number = models.CharField(verbose_name="NPI number", max_length=10, blank=True)
|
|
14
14
|
phone_number = models.CharField(max_length=10, blank=True, default="")
|
|
15
|
+
fax_number = models.CharField(max_length=10, blank=True, default="")
|
|
15
16
|
active = models.BooleanField(default=True)
|
|
16
17
|
line1 = models.CharField(max_length=255, default="", blank=True)
|
|
17
18
|
line2 = models.CharField(max_length=255, default="", blank=True)
|
canvas_sdk/v1/data/goal.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from django.db import models
|
|
2
2
|
|
|
3
|
-
from canvas_sdk.v1.data.base import IdentifiableModel
|
|
3
|
+
from canvas_sdk.v1.data.base import AuditedModel, IdentifiableModel
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class GoalLifecycleStatus(models.TextChoices):
|
|
@@ -38,24 +38,12 @@ class GoalPriority(models.TextChoices):
|
|
|
38
38
|
LOW = "low-priority", "Low Priority"
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
class Goal(IdentifiableModel):
|
|
41
|
+
class Goal(AuditedModel, IdentifiableModel):
|
|
42
42
|
"""Goal."""
|
|
43
43
|
|
|
44
44
|
class Meta:
|
|
45
45
|
db_table = "canvas_sdk_data_api_goal_001"
|
|
46
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
47
|
patient = models.ForeignKey("v1.Patient", on_delete=models.DO_NOTHING, related_name="goals")
|
|
60
48
|
note = models.ForeignKey("v1.Note", on_delete=models.DO_NOTHING, related_name="goals")
|
|
61
49
|
lifecycle_status = models.CharField(max_length=20, choices=GoalLifecycleStatus.choices)
|
canvas_sdk/v1/data/imaging.py
CHANGED
|
@@ -2,7 +2,7 @@ import json
|
|
|
2
2
|
|
|
3
3
|
from django.db import models
|
|
4
4
|
|
|
5
|
-
from canvas_sdk.v1.data.base import IdentifiableModel
|
|
5
|
+
from canvas_sdk.v1.data.base import AuditedModel, IdentifiableModel, TimestampedModel
|
|
6
6
|
from canvas_sdk.v1.data.common import (
|
|
7
7
|
DocumentReviewMode,
|
|
8
8
|
OrderStatus,
|
|
@@ -12,24 +12,12 @@ from canvas_sdk.v1.data.common import (
|
|
|
12
12
|
from canvas_sdk.v1.data.task import Task
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
class ImagingOrder(IdentifiableModel):
|
|
15
|
+
class ImagingOrder(AuditedModel, IdentifiableModel):
|
|
16
16
|
"""Model to read ImagingOrder data."""
|
|
17
17
|
|
|
18
18
|
class Meta:
|
|
19
19
|
db_table = "canvas_sdk_data_api_imagingorder_001"
|
|
20
20
|
|
|
21
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
22
|
-
modified = models.DateTimeField(auto_now=True)
|
|
23
|
-
originator = models.ForeignKey(
|
|
24
|
-
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
25
|
-
)
|
|
26
|
-
deleted = models.BooleanField()
|
|
27
|
-
committer = models.ForeignKey(
|
|
28
|
-
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
29
|
-
)
|
|
30
|
-
entered_in_error = models.ForeignKey(
|
|
31
|
-
"v1.CanvasUser", on_delete=models.DO_NOTHING, related_name="+"
|
|
32
|
-
)
|
|
33
21
|
patient = models.ForeignKey(
|
|
34
22
|
"v1.Patient", on_delete=models.DO_NOTHING, related_name="imaging_orders", null=True
|
|
35
23
|
)
|
|
@@ -67,24 +55,12 @@ class ImagingOrder(IdentifiableModel):
|
|
|
67
55
|
return list(self.get_task_objects())
|
|
68
56
|
|
|
69
57
|
|
|
70
|
-
class ImagingReview(IdentifiableModel):
|
|
58
|
+
class ImagingReview(AuditedModel, IdentifiableModel):
|
|
71
59
|
"""Model to read ImagingReview data."""
|
|
72
60
|
|
|
73
61
|
class Meta:
|
|
74
62
|
db_table = "canvas_sdk_data_api_imagingreview_001"
|
|
75
63
|
|
|
76
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
77
|
-
modified = models.DateTimeField(auto_now=True)
|
|
78
|
-
originator = models.ForeignKey(
|
|
79
|
-
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
80
|
-
)
|
|
81
|
-
deleted = models.BooleanField()
|
|
82
|
-
committer = models.ForeignKey(
|
|
83
|
-
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
84
|
-
)
|
|
85
|
-
entered_in_error = models.ForeignKey(
|
|
86
|
-
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
87
|
-
)
|
|
88
64
|
patient_communication_method = models.CharField(
|
|
89
65
|
choices=ReviewPatientCommunicationMethod.choices, max_length=30
|
|
90
66
|
)
|
|
@@ -99,7 +75,7 @@ class ImagingReview(IdentifiableModel):
|
|
|
99
75
|
)
|
|
100
76
|
|
|
101
77
|
|
|
102
|
-
class ImagingReport(IdentifiableModel):
|
|
78
|
+
class ImagingReport(TimestampedModel, IdentifiableModel):
|
|
103
79
|
"""Model to read ImagingReport data."""
|
|
104
80
|
|
|
105
81
|
class ImagingReportSource(models.TextChoices):
|
|
@@ -110,8 +86,6 @@ class ImagingReport(IdentifiableModel):
|
|
|
110
86
|
class Meta:
|
|
111
87
|
db_table = "canvas_sdk_data_api_imagingreport_001"
|
|
112
88
|
|
|
113
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
114
|
-
modified = models.DateTimeField(auto_now=True)
|
|
115
89
|
review_mode = models.CharField(choices=DocumentReviewMode.choices, max_length=2)
|
|
116
90
|
junked = models.BooleanField()
|
|
117
91
|
requires_signature = models.BooleanField()
|
|
@@ -7,9 +7,9 @@ from canvas_sdk.v1.data.base import (
|
|
|
7
7
|
CommittableQuerySetMixin,
|
|
8
8
|
ForPatientQuerySetMixin,
|
|
9
9
|
IdentifiableModel,
|
|
10
|
-
Model,
|
|
11
10
|
ValueSetLookupQuerySet,
|
|
12
11
|
)
|
|
12
|
+
from canvas_sdk.v1.data.coding import Coding
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class ImmunizationStatus(models.TextChoices):
|
|
@@ -32,7 +32,9 @@ class ImmunizationReasonsNotGiven(models.TextChoices):
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
class ImmunizationQuerySet(
|
|
35
|
-
|
|
35
|
+
CommittableQuerySetMixin,
|
|
36
|
+
ForPatientQuerySetMixin,
|
|
37
|
+
ValueSetLookupQuerySet,
|
|
36
38
|
):
|
|
37
39
|
"""ImmunizationQuerySet."""
|
|
38
40
|
|
|
@@ -78,24 +80,19 @@ class Immunization(IdentifiableModel):
|
|
|
78
80
|
deleted = models.BooleanField()
|
|
79
81
|
|
|
80
82
|
|
|
81
|
-
class ImmunizationCoding(
|
|
83
|
+
class ImmunizationCoding(Coding):
|
|
82
84
|
"""ImmunizationCoding."""
|
|
83
85
|
|
|
84
86
|
class Meta:
|
|
85
87
|
db_table = "canvas_sdk_data_api_immunizationcoding_001"
|
|
86
88
|
|
|
87
|
-
system = models.CharField(max_length=255)
|
|
88
|
-
version = models.CharField(max_length=255)
|
|
89
|
-
code = models.CharField(max_length=255)
|
|
90
|
-
display = models.CharField(max_length=1000)
|
|
91
|
-
user_selected = models.BooleanField()
|
|
92
89
|
immunization = models.ForeignKey(
|
|
93
90
|
Immunization, on_delete=models.DO_NOTHING, related_name="codings", null=True
|
|
94
91
|
)
|
|
95
92
|
|
|
96
93
|
|
|
97
94
|
class ImmunizationStatementQuerySet(
|
|
98
|
-
|
|
95
|
+
CommittableQuerySetMixin, ForPatientQuerySetMixin, ValueSetLookupQuerySet
|
|
99
96
|
):
|
|
100
97
|
"""ImmunizationStatementQuerySet."""
|
|
101
98
|
|
|
@@ -133,17 +130,12 @@ class ImmunizationStatement(IdentifiableModel):
|
|
|
133
130
|
deleted = models.BooleanField()
|
|
134
131
|
|
|
135
132
|
|
|
136
|
-
class ImmunizationStatementCoding(
|
|
133
|
+
class ImmunizationStatementCoding(Coding):
|
|
137
134
|
"""ImmunizationStatementCoding."""
|
|
138
135
|
|
|
139
136
|
class Meta:
|
|
140
137
|
db_table = "canvas_sdk_data_api_immunizationstatementcoding_001"
|
|
141
138
|
|
|
142
|
-
system = models.CharField(max_length=255)
|
|
143
|
-
version = models.CharField(max_length=255)
|
|
144
|
-
code = models.CharField(max_length=255)
|
|
145
|
-
display = models.CharField(max_length=1000)
|
|
146
|
-
user_selected = models.BooleanField()
|
|
147
139
|
immunization_statement = models.ForeignKey(
|
|
148
140
|
ImmunizationStatement, on_delete=models.CASCADE, related_name="coding"
|
|
149
141
|
)
|