canvas 0.67.0__py3-none-any.whl → 0.68.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.67.0.dist-info → canvas-0.68.0.dist-info}/METADATA +1 -1
- {canvas-0.67.0.dist-info → canvas-0.68.0.dist-info}/RECORD +66 -59
- canvas_generated/messages/effects_pb2.py +2 -2
- canvas_generated/messages/effects_pb2.pyi +6 -0
- canvas_generated/messages/events_pb2.py +2 -2
- canvas_generated/messages/events_pb2.pyi +2 -0
- canvas_sdk/effects/note/base.py +17 -0
- canvas_sdk/handlers/application.py +7 -7
- canvas_sdk/handlers/utils.py +14 -0
- canvas_sdk/test_utils/factories/__init__.py +25 -0
- canvas_sdk/test_utils/factories/claim.py +24 -0
- canvas_sdk/test_utils/factories/claim_diagnosis_code.py +1 -0
- canvas_sdk/test_utils/factories/note.py +37 -0
- canvas_sdk/test_utils/factories/organization.py +20 -0
- canvas_sdk/test_utils/factories/practicelocation.py +34 -0
- canvas_sdk/test_utils/factories/staff.py +111 -0
- canvas_sdk/v1/data/allergy_intolerance.py +4 -10
- canvas_sdk/v1/data/appointment.py +2 -4
- canvas_sdk/v1/data/assessment.py +2 -12
- canvas_sdk/v1/data/banner_alert.py +2 -4
- canvas_sdk/v1/data/base.py +28 -0
- canvas_sdk/v1/data/billing.py +8 -11
- canvas_sdk/v1/data/care_team.py +4 -10
- canvas_sdk/v1/data/claim.py +15 -29
- canvas_sdk/v1/data/claim_diagnosis_code.py +2 -5
- 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/compound_medication.py +3 -3
- canvas_sdk/v1/data/condition.py +2 -7
- canvas_sdk/v1/data/coverage.py +5 -13
- canvas_sdk/v1/data/detected_issue.py +4 -20
- canvas_sdk/v1/data/device.py +2 -14
- canvas_sdk/v1/data/discount.py +2 -5
- canvas_sdk/v1/data/encounter.py +2 -4
- canvas_sdk/v1/data/goal.py +2 -14
- canvas_sdk/v1/data/imaging.py +4 -30
- canvas_sdk/v1/data/immunization.py +3 -13
- canvas_sdk/v1/data/lab.py +9 -62
- canvas_sdk/v1/data/line_item_transaction.py +2 -5
- canvas_sdk/v1/data/medication.py +2 -7
- canvas_sdk/v1/data/medication_history.py +5 -15
- canvas_sdk/v1/data/medication_statement.py +2 -11
- canvas_sdk/v1/data/message.py +3 -7
- canvas_sdk/v1/data/note.py +11 -19
- canvas_sdk/v1/data/observation.py +8 -35
- canvas_sdk/v1/data/organization.py +5 -7
- canvas_sdk/v1/data/patient.py +4 -11
- 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 +4 -6
- canvas_sdk/v1/data/protocol_override.py +2 -3
- canvas_sdk/v1/data/protocol_result.py +3 -3
- canvas_sdk/v1/data/questionnaire.py +9 -25
- canvas_sdk/v1/data/reason_for_visit.py +2 -6
- canvas_sdk/v1/data/referral.py +3 -17
- canvas_sdk/v1/data/staff.py +33 -25
- canvas_sdk/v1/data/stop_medication_event.py +2 -11
- canvas_sdk/v1/data/task.py +3 -7
- canvas_sdk/v1/data/team.py +2 -4
- canvas_sdk/v1/data/utils.py +5 -0
- protobufs/canvas_generated/messages/effects.proto +4 -0
- protobufs/canvas_generated/messages/events.proto +2 -0
- {canvas-0.67.0.dist-info → canvas-0.68.0.dist-info}/WHEEL +0 -0
- {canvas-0.67.0.dist-info → canvas-0.68.0.dist-info}/entry_points.txt +0 -0
|
@@ -10,19 +10,17 @@ from canvas_sdk.v1.data.base import (
|
|
|
10
10
|
CommittableQuerySetMixin,
|
|
11
11
|
ForPatientQuerySetMixin,
|
|
12
12
|
IdentifiableModel,
|
|
13
|
-
|
|
13
|
+
TimestampedModel,
|
|
14
14
|
ValueSetLookupByNameQuerySet,
|
|
15
15
|
)
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
class ResponseOptionSet(
|
|
18
|
+
class ResponseOptionSet(TimestampedModel):
|
|
19
19
|
"""ResponseOptionSet."""
|
|
20
20
|
|
|
21
21
|
class Meta:
|
|
22
22
|
db_table = "canvas_sdk_data_api_responseoptionset_001"
|
|
23
23
|
|
|
24
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
25
|
-
modified = models.DateTimeField(auto_now=True)
|
|
26
24
|
status = models.CharField(max_length=2)
|
|
27
25
|
name = models.CharField(max_length=255)
|
|
28
26
|
code_system = models.CharField(max_length=255)
|
|
@@ -31,14 +29,12 @@ class ResponseOptionSet(Model):
|
|
|
31
29
|
use_in_shx = models.BooleanField()
|
|
32
30
|
|
|
33
31
|
|
|
34
|
-
class ResponseOption(
|
|
32
|
+
class ResponseOption(TimestampedModel):
|
|
35
33
|
"""ResponseOption."""
|
|
36
34
|
|
|
37
35
|
class Meta:
|
|
38
36
|
db_table = "canvas_sdk_data_api_responseoption_001"
|
|
39
37
|
|
|
40
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
41
|
-
modified = models.DateTimeField(auto_now=True)
|
|
42
38
|
status = models.CharField(max_length=2)
|
|
43
39
|
name = models.CharField(max_length=255)
|
|
44
40
|
code = models.CharField(max_length=100)
|
|
@@ -50,14 +46,12 @@ class ResponseOption(Model):
|
|
|
50
46
|
ordering = models.IntegerField()
|
|
51
47
|
|
|
52
48
|
|
|
53
|
-
class Question(IdentifiableModel):
|
|
49
|
+
class Question(TimestampedModel, IdentifiableModel):
|
|
54
50
|
"""Question."""
|
|
55
51
|
|
|
56
52
|
class Meta:
|
|
57
53
|
db_table = "canvas_sdk_data_api_question_001"
|
|
58
54
|
|
|
59
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
60
|
-
modified = models.DateTimeField(auto_now=True)
|
|
61
55
|
status = models.CharField(max_length=2)
|
|
62
56
|
name = models.CharField(max_length=255)
|
|
63
57
|
response_option_set = models.ForeignKey(
|
|
@@ -78,7 +72,7 @@ class QuestionnaireValueSetLookupQuerySet(ValueSetLookupByNameQuerySet):
|
|
|
78
72
|
return Q(code_system=system, code__in=codes)
|
|
79
73
|
|
|
80
74
|
|
|
81
|
-
class Questionnaire(IdentifiableModel):
|
|
75
|
+
class Questionnaire(TimestampedModel, IdentifiableModel):
|
|
82
76
|
"""Questionnaire."""
|
|
83
77
|
|
|
84
78
|
class Meta:
|
|
@@ -86,8 +80,6 @@ class Questionnaire(IdentifiableModel):
|
|
|
86
80
|
|
|
87
81
|
objects = models.Manager.from_queryset(QuestionnaireValueSetLookupQuerySet)()
|
|
88
82
|
|
|
89
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
90
|
-
modified = models.DateTimeField(auto_now=True)
|
|
91
83
|
status = models.CharField(max_length=2)
|
|
92
84
|
name = models.CharField(max_length=255)
|
|
93
85
|
expected_completion_time = models.FloatField()
|
|
@@ -104,14 +96,12 @@ class Questionnaire(IdentifiableModel):
|
|
|
104
96
|
carry_forward = models.TextField()
|
|
105
97
|
|
|
106
98
|
|
|
107
|
-
class QuestionnaireQuestionMap(
|
|
99
|
+
class QuestionnaireQuestionMap(TimestampedModel):
|
|
108
100
|
"""QuestionnaireQuestionMap."""
|
|
109
101
|
|
|
110
102
|
class Meta:
|
|
111
103
|
db_table = "canvas_sdk_data_api_questionnairequestionmap_001"
|
|
112
104
|
|
|
113
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
114
|
-
modified = models.DateTimeField(auto_now=True)
|
|
115
105
|
status = models.CharField(max_length=2)
|
|
116
106
|
questionnaire = models.ForeignKey(Questionnaire, on_delete=models.DO_NOTHING, null=True)
|
|
117
107
|
question = models.ForeignKey(Question, on_delete=models.DO_NOTHING, null=True)
|
|
@@ -126,7 +116,7 @@ class InterviewQuerySet(BaseQuerySet, ForPatientQuerySetMixin, CommittableQueryS
|
|
|
126
116
|
InterviewManager = BaseModelManager.from_queryset(InterviewQuerySet)
|
|
127
117
|
|
|
128
118
|
|
|
129
|
-
class Interview(IdentifiableModel):
|
|
119
|
+
class Interview(TimestampedModel, IdentifiableModel):
|
|
130
120
|
"""Interview."""
|
|
131
121
|
|
|
132
122
|
class Meta:
|
|
@@ -155,31 +145,25 @@ class Interview(IdentifiableModel):
|
|
|
155
145
|
through="v1.InterviewQuestionnaireMap",
|
|
156
146
|
)
|
|
157
147
|
progress_status = models.CharField(max_length=3)
|
|
158
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
159
|
-
modified = models.DateTimeField(auto_now=True)
|
|
160
148
|
|
|
161
149
|
|
|
162
|
-
class InterviewQuestionnaireMap(
|
|
150
|
+
class InterviewQuestionnaireMap(TimestampedModel):
|
|
163
151
|
"""InterviewQuestionnaireMap."""
|
|
164
152
|
|
|
165
153
|
class Meta:
|
|
166
154
|
db_table = "canvas_sdk_data_api_interviewquestionnairemap_001"
|
|
167
155
|
|
|
168
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
169
|
-
modified = models.DateTimeField(auto_now=True)
|
|
170
156
|
status = models.CharField(max_length=2)
|
|
171
157
|
interview = models.ForeignKey(Interview, on_delete=models.DO_NOTHING, null=True)
|
|
172
158
|
questionnaire = models.ForeignKey(Questionnaire, on_delete=models.DO_NOTHING, null=True)
|
|
173
159
|
|
|
174
160
|
|
|
175
|
-
class InterviewQuestionResponse(
|
|
161
|
+
class InterviewQuestionResponse(TimestampedModel):
|
|
176
162
|
"""InterviewQuestionResponse."""
|
|
177
163
|
|
|
178
164
|
class Meta:
|
|
179
165
|
db_table = "canvas_sdk_data_api_interviewquestionresponse_001"
|
|
180
166
|
|
|
181
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
182
|
-
modified = models.DateTimeField(auto_now=True)
|
|
183
167
|
status = models.CharField(max_length=2)
|
|
184
168
|
interview = models.ForeignKey(
|
|
185
169
|
Interview, on_delete=models.DO_NOTHING, related_name="interview_responses", null=True
|
|
@@ -2,9 +2,10 @@ from django.contrib.postgres.fields import ArrayField
|
|
|
2
2
|
from django.db import models
|
|
3
3
|
|
|
4
4
|
from canvas_sdk.v1.data.base import IdentifiableModel
|
|
5
|
+
from canvas_sdk.v1.data.coding import Coding
|
|
5
6
|
|
|
6
7
|
|
|
7
|
-
class ReasonForVisitSettingCoding(IdentifiableModel):
|
|
8
|
+
class ReasonForVisitSettingCoding(IdentifiableModel, Coding):
|
|
8
9
|
"""ReasonForVisitSettingCoding."""
|
|
9
10
|
|
|
10
11
|
class Meta:
|
|
@@ -12,11 +13,6 @@ class ReasonForVisitSettingCoding(IdentifiableModel):
|
|
|
12
13
|
|
|
13
14
|
objects: models.Manager["ReasonForVisitSettingCoding"]
|
|
14
15
|
|
|
15
|
-
code = models.CharField(max_length=255)
|
|
16
|
-
display = models.CharField(max_length=1000)
|
|
17
|
-
system = models.CharField(max_length=255)
|
|
18
|
-
version = models.CharField(max_length=255)
|
|
19
|
-
|
|
20
16
|
duration = ArrayField(models.DurationField())
|
|
21
17
|
|
|
22
18
|
|
canvas_sdk/v1/data/referral.py
CHANGED
|
@@ -2,28 +2,16 @@ 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.task import Task
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
class Referral(IdentifiableModel):
|
|
9
|
+
class Referral(AuditedModel, IdentifiableModel):
|
|
10
10
|
"""Referral."""
|
|
11
11
|
|
|
12
12
|
class Meta:
|
|
13
13
|
db_table = "canvas_sdk_data_api_referral_001"
|
|
14
14
|
|
|
15
|
-
created = models.DateTimeField()
|
|
16
|
-
modified = models.DateTimeField()
|
|
17
|
-
originator = models.ForeignKey(
|
|
18
|
-
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
19
|
-
)
|
|
20
|
-
deleted = models.BooleanField()
|
|
21
|
-
committer = models.ForeignKey(
|
|
22
|
-
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
23
|
-
)
|
|
24
|
-
entered_in_error = models.ForeignKey(
|
|
25
|
-
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
26
|
-
)
|
|
27
15
|
patient = models.ForeignKey("v1.Patient", on_delete=models.DO_NOTHING)
|
|
28
16
|
note = models.ForeignKey("v1.Note", on_delete=models.DO_NOTHING)
|
|
29
17
|
service_provider = models.ForeignKey(
|
|
@@ -66,14 +54,12 @@ class Referral(IdentifiableModel):
|
|
|
66
54
|
return f"Referral {self.id}"
|
|
67
55
|
|
|
68
56
|
|
|
69
|
-
class ReferralReport(IdentifiableModel):
|
|
57
|
+
class ReferralReport(TimestampedModel, IdentifiableModel):
|
|
70
58
|
"""ReferralReport."""
|
|
71
59
|
|
|
72
60
|
class Meta:
|
|
73
61
|
db_table = "canvas_sdk_data_api_referralreport_001"
|
|
74
62
|
|
|
75
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
76
|
-
modified = models.DateTimeField(auto_now=True)
|
|
77
63
|
originator = models.ForeignKey(
|
|
78
64
|
"v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
|
|
79
65
|
)
|
canvas_sdk/v1/data/staff.py
CHANGED
|
@@ -5,7 +5,7 @@ from django.db import models
|
|
|
5
5
|
from django.db.models.enums import TextChoices
|
|
6
6
|
from timezone_utils.fields import TimeZoneField
|
|
7
7
|
|
|
8
|
-
from canvas_sdk.v1.data.base import IdentifiableModel, Model
|
|
8
|
+
from canvas_sdk.v1.data.base import IdentifiableModel, Model, TimestampedModel
|
|
9
9
|
from canvas_sdk.v1.data.common import (
|
|
10
10
|
AddressState,
|
|
11
11
|
AddressType,
|
|
@@ -19,7 +19,7 @@ from canvas_sdk.v1.data.common import (
|
|
|
19
19
|
from canvas_sdk.v1.data.utils import create_key
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
class Staff(
|
|
22
|
+
class Staff(TimestampedModel):
|
|
23
23
|
"""Staff."""
|
|
24
24
|
|
|
25
25
|
class Meta:
|
|
@@ -35,8 +35,6 @@ class Staff(Model):
|
|
|
35
35
|
editable=False,
|
|
36
36
|
default=create_key,
|
|
37
37
|
)
|
|
38
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
39
|
-
modified = models.DateTimeField(auto_now=True)
|
|
40
38
|
prefix = models.CharField(max_length=100)
|
|
41
39
|
suffix = models.CharField(max_length=100)
|
|
42
40
|
first_name = models.CharField(max_length=255)
|
|
@@ -44,7 +42,7 @@ class Staff(Model):
|
|
|
44
42
|
last_name = models.CharField(max_length=255)
|
|
45
43
|
maiden_name = models.CharField(max_length=255)
|
|
46
44
|
nickname = models.CharField(max_length=255)
|
|
47
|
-
previous_names = models.JSONField()
|
|
45
|
+
previous_names = models.JSONField(default=list)
|
|
48
46
|
birth_date = models.DateField(null=True)
|
|
49
47
|
sex_at_birth = models.CharField(choices=PersonSex.choices, max_length=3)
|
|
50
48
|
sexual_orientation_term = models.CharField(max_length=255)
|
|
@@ -57,14 +55,14 @@ class Staff(Model):
|
|
|
57
55
|
cultural_ethnicity_codes = ArrayField(models.CharField(max_length=100))
|
|
58
56
|
cultural_ethnicity_terms = ArrayField(models.CharField(max_length=255))
|
|
59
57
|
last_known_timezone = TimeZoneField(null=True)
|
|
60
|
-
active = models.BooleanField()
|
|
58
|
+
active = models.BooleanField(default=True)
|
|
61
59
|
primary_practice_location = models.ForeignKey(
|
|
62
60
|
"v1.PracticeLocation", on_delete=models.DO_NOTHING, null=True
|
|
63
61
|
)
|
|
64
62
|
npi_number = models.CharField(max_length=10)
|
|
65
63
|
nadean_number = models.CharField(max_length=20)
|
|
66
64
|
group_npi_number = models.CharField(max_length=10)
|
|
67
|
-
bill_through_organization = models.BooleanField()
|
|
65
|
+
bill_through_organization = models.BooleanField(default=True)
|
|
68
66
|
tax_id = models.CharField(max_length=25)
|
|
69
67
|
tax_id_type = models.CharField(choices=TaxIDType.choices, max_length=1)
|
|
70
68
|
spi_number = models.CharField(max_length=50)
|
|
@@ -72,9 +70,9 @@ class Staff(Model):
|
|
|
72
70
|
# language = models.ForeignKey('v1.Language', on_delete=models.DO_NOTHING, related_name="staff_speakers", null=True)
|
|
73
71
|
# language_secondary = models.ForeignKey('v1.Language', on_delete=models.DO_NOTHING, related_name="staff_secondary_speakers", null=True)
|
|
74
72
|
personal_meeting_room_link = models.URLField(null=True)
|
|
75
|
-
state = models.JSONField()
|
|
73
|
+
state = models.JSONField(default=dict, blank=True)
|
|
76
74
|
user = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
|
|
77
|
-
schedule_column_ordering = models.IntegerField()
|
|
75
|
+
schedule_column_ordering = models.IntegerField(default=999)
|
|
78
76
|
default_supervising_provider = models.ForeignKey(
|
|
79
77
|
"v1.Staff", on_delete=models.DO_NOTHING, related_name="supervising_team", null=True
|
|
80
78
|
)
|
|
@@ -135,10 +133,14 @@ class StaffContactPoint(IdentifiableModel):
|
|
|
135
133
|
|
|
136
134
|
system = models.CharField(choices=ContactPointSystem.choices, max_length=20)
|
|
137
135
|
value = models.CharField(max_length=100)
|
|
138
|
-
use = models.CharField(
|
|
136
|
+
use = models.CharField(
|
|
137
|
+
choices=ContactPointUse.choices, max_length=20, default=ContactPointUse.HOME
|
|
138
|
+
)
|
|
139
139
|
use_notes = models.CharField(max_length=255)
|
|
140
|
-
rank = models.IntegerField()
|
|
141
|
-
state = models.CharField(
|
|
140
|
+
rank = models.IntegerField(default=1)
|
|
141
|
+
state = models.CharField(
|
|
142
|
+
choices=ContactPointState.choices, max_length=20, default=ContactPointState.ACTIVE
|
|
143
|
+
)
|
|
142
144
|
staff = models.ForeignKey(Staff, on_delete=models.DO_NOTHING, related_name="telecom")
|
|
143
145
|
|
|
144
146
|
|
|
@@ -148,31 +150,31 @@ class StaffAddress(IdentifiableModel):
|
|
|
148
150
|
class Meta:
|
|
149
151
|
db_table = "canvas_sdk_data_api_staffaddress_001"
|
|
150
152
|
|
|
151
|
-
line1 = models.CharField(max_length=255)
|
|
152
|
-
line2 = models.CharField(max_length=255)
|
|
153
|
+
line1 = models.CharField(max_length=255, default="", blank=True)
|
|
154
|
+
line2 = models.CharField(max_length=255, default="", blank=True)
|
|
153
155
|
city = models.CharField(max_length=255)
|
|
154
|
-
district = models.CharField(max_length=255)
|
|
156
|
+
district = models.CharField(max_length=255, blank=True, default="")
|
|
155
157
|
state_code = models.CharField(max_length=2)
|
|
156
158
|
postal_code = models.CharField(max_length=255)
|
|
157
|
-
use = models.CharField(choices=AddressUse.choices, max_length=10)
|
|
158
|
-
type = models.CharField(choices=AddressType.choices, max_length=10)
|
|
159
|
-
longitude = models.FloatField()
|
|
160
|
-
latitude = models.FloatField()
|
|
161
|
-
start = models.DateField()
|
|
162
|
-
end = models.DateField()
|
|
159
|
+
use = models.CharField(choices=AddressUse.choices, max_length=10, default=AddressUse.HOME)
|
|
160
|
+
type = models.CharField(choices=AddressType.choices, max_length=10, default=AddressType.BOTH)
|
|
161
|
+
longitude = models.FloatField(null=True, default=None, blank=True)
|
|
162
|
+
latitude = models.FloatField(null=True, default=None, blank=True)
|
|
163
|
+
start = models.DateField(null=True, blank=True)
|
|
164
|
+
end = models.DateField(null=True, blank=True)
|
|
163
165
|
country = models.CharField(max_length=255)
|
|
164
|
-
state = models.CharField(
|
|
166
|
+
state = models.CharField(
|
|
167
|
+
choices=AddressState.choices, max_length=20, default=AddressState.ACTIVE
|
|
168
|
+
)
|
|
165
169
|
staff = models.ForeignKey(Staff, on_delete=models.DO_NOTHING, related_name="addresses")
|
|
166
170
|
|
|
167
171
|
|
|
168
|
-
class StaffPhoto(
|
|
172
|
+
class StaffPhoto(TimestampedModel):
|
|
169
173
|
"""StaffPhoto."""
|
|
170
174
|
|
|
171
175
|
class Meta:
|
|
172
176
|
db_table = "canvas_sdk_data_api_staffphoto_001"
|
|
173
177
|
|
|
174
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
175
|
-
modified = models.DateTimeField(auto_now=True)
|
|
176
178
|
staff = models.ForeignKey(Staff, on_delete=models.CASCADE, related_name="photos")
|
|
177
179
|
url = models.CharField(
|
|
178
180
|
default="https://d3hn0m4rbsz438.cloudfront.net/avatar1.png", max_length=512
|
|
@@ -185,6 +187,12 @@ class StaffRole(Model):
|
|
|
185
187
|
|
|
186
188
|
class Meta:
|
|
187
189
|
db_table = "canvas_sdk_data_api_staffrole_001"
|
|
190
|
+
constraints = [
|
|
191
|
+
models.UniqueConstraint(
|
|
192
|
+
fields=["staff", "internal_code"],
|
|
193
|
+
name="staff_internal_code_unique",
|
|
194
|
+
)
|
|
195
|
+
]
|
|
188
196
|
|
|
189
197
|
class RoleDomain(TextChoices):
|
|
190
198
|
CLINICAL = "CLI", "Clinical"
|
|
@@ -1,9 +1,9 @@
|
|
|
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 StopMedicationEvent(IdentifiableModel):
|
|
6
|
+
class StopMedicationEvent(AuditedModel, IdentifiableModel):
|
|
7
7
|
"""StopMedicationEvent."""
|
|
8
8
|
|
|
9
9
|
class Meta:
|
|
@@ -21,15 +21,6 @@ class StopMedicationEvent(IdentifiableModel):
|
|
|
21
21
|
related_name="stopmedicationevent_set",
|
|
22
22
|
null=True,
|
|
23
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
24
|
rationale = models.CharField(max_length=1024, default="")
|
|
34
25
|
|
|
35
26
|
|
canvas_sdk/v1/data/task.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from django.contrib.postgres.fields import ArrayField
|
|
2
2
|
from django.db import models
|
|
3
3
|
|
|
4
|
-
from canvas_sdk.v1.data.base import IdentifiableModel, Model
|
|
4
|
+
from canvas_sdk.v1.data.base import IdentifiableModel, Model, TimestampedModel
|
|
5
5
|
from canvas_sdk.v1.data.common import ColorEnum, Origin
|
|
6
6
|
|
|
7
7
|
|
|
@@ -33,14 +33,12 @@ class TaskLabelModule(models.TextChoices):
|
|
|
33
33
|
TASKS = "tasks", "Tasks"
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
class Task(IdentifiableModel):
|
|
36
|
+
class Task(TimestampedModel, IdentifiableModel):
|
|
37
37
|
"""Task."""
|
|
38
38
|
|
|
39
39
|
class Meta:
|
|
40
40
|
db_table = "canvas_sdk_data_api_task_001"
|
|
41
41
|
|
|
42
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
43
|
-
modified = models.DateTimeField(auto_now=True)
|
|
44
42
|
creator = models.ForeignKey(
|
|
45
43
|
"v1.Staff", on_delete=models.DO_NOTHING, related_name="creator_tasks", null=True
|
|
46
44
|
)
|
|
@@ -60,14 +58,12 @@ class Task(IdentifiableModel):
|
|
|
60
58
|
status = models.CharField(choices=TaskStatus.choices, max_length=9)
|
|
61
59
|
|
|
62
60
|
|
|
63
|
-
class TaskComment(IdentifiableModel):
|
|
61
|
+
class TaskComment(TimestampedModel, IdentifiableModel):
|
|
64
62
|
"""TaskComment."""
|
|
65
63
|
|
|
66
64
|
class Meta:
|
|
67
65
|
db_table = "canvas_sdk_data_api_taskcomment_001"
|
|
68
66
|
|
|
69
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
70
|
-
modified = models.DateTimeField(auto_now=True)
|
|
71
67
|
creator = models.ForeignKey(
|
|
72
68
|
"v1.Staff", on_delete=models.DO_NOTHING, related_name="comments", null=True
|
|
73
69
|
)
|
canvas_sdk/v1/data/team.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from django.contrib.postgres.fields import ArrayField
|
|
2
2
|
from django.db import models
|
|
3
3
|
|
|
4
|
-
from canvas_sdk.v1.data.base import IdentifiableModel
|
|
4
|
+
from canvas_sdk.v1.data.base import IdentifiableModel, TimestampedModel
|
|
5
5
|
from canvas_sdk.v1.data.common import ContactPointState, ContactPointSystem, ContactPointUse
|
|
6
6
|
|
|
7
7
|
|
|
@@ -39,14 +39,12 @@ class TeamResponsibility(models.TextChoices):
|
|
|
39
39
|
REVIEW_COVERAGES = "REVIEW_COVERAGES", "Review incomplete patient coverages"
|
|
40
40
|
|
|
41
41
|
|
|
42
|
-
class Team(IdentifiableModel):
|
|
42
|
+
class Team(TimestampedModel, IdentifiableModel):
|
|
43
43
|
"""Team."""
|
|
44
44
|
|
|
45
45
|
class Meta:
|
|
46
46
|
db_table = "canvas_sdk_data_api_team_001"
|
|
47
47
|
|
|
48
|
-
created = models.DateTimeField(auto_now_add=True)
|
|
49
|
-
modified = models.DateTimeField(auto_now=True)
|
|
50
48
|
name = models.CharField(max_length=200)
|
|
51
49
|
responsibilities = ArrayField(
|
|
52
50
|
models.CharField(choices=TeamResponsibility.choices, max_length=64)
|
canvas_sdk/v1/data/utils.py
CHANGED
|
@@ -29,4 +29,9 @@ def generate_mrn(length: int = 9, max_attempts: int = 100) -> str:
|
|
|
29
29
|
raise RuntimeError(f"Unable to generate a unique MRN after {max_attempts} attempts")
|
|
30
30
|
|
|
31
31
|
|
|
32
|
+
def empty_note_body() -> list[dict[str, str]]:
|
|
33
|
+
"""Generates an empty note body with 15 empty text elements."""
|
|
34
|
+
return [{"type": "text", "value": ""}] * 15
|
|
35
|
+
|
|
36
|
+
|
|
32
37
|
__exports__ = ()
|
|
@@ -286,10 +286,12 @@ enum EffectType {
|
|
|
286
286
|
|
|
287
287
|
CREATE_APPOINTMENT = 6001;
|
|
288
288
|
UPDATE_APPOINTMENT = 6014;
|
|
289
|
+
RESCHEDULE_APPOINTMENT = 6022;
|
|
289
290
|
CANCEL_APPOINTMENT = 6015;
|
|
290
291
|
CREATE_SCHEDULE_EVENT = 6002;
|
|
291
292
|
UPDATE_SCHEDULE_EVENT = 6016;
|
|
292
293
|
DELETE_SCHEDULE_EVENT = 6017;
|
|
294
|
+
RESCHEDULE_SCHEDULE_EVENT = 6023;
|
|
293
295
|
|
|
294
296
|
CREATE_PATIENT = 6003;
|
|
295
297
|
UPDATE_PATIENT = 6008;
|
|
@@ -324,6 +326,8 @@ enum EffectType {
|
|
|
324
326
|
|
|
325
327
|
UPSERT_APPOINTMENT_METADATA = 6052;
|
|
326
328
|
|
|
329
|
+
APPOINTMENT__SLOTS__POST_SEARCH_RESULTS = 6053;
|
|
330
|
+
|
|
327
331
|
SHOW_PANEL_SECTIONS = 6100;
|
|
328
332
|
|
|
329
333
|
REDIRECT_CONTEXT = 6200;
|
|
File without changes
|
|
File without changes
|