canvas 0.44.3__py3-none-any.whl → 0.46.0__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (64) hide show
  1. {canvas-0.44.3.dist-info → canvas-0.46.0.dist-info}/METADATA +4 -2
  2. {canvas-0.44.3.dist-info → canvas-0.46.0.dist-info}/RECORD +64 -59
  3. canvas_cli/apps/plugin/plugin.py +21 -2
  4. canvas_generated/messages/effects_pb2.py +2 -2
  5. canvas_generated/messages/effects_pb2.pyi +10 -0
  6. canvas_generated/messages/events_pb2.py +2 -2
  7. canvas_generated/messages/events_pb2.pyi +18 -0
  8. canvas_sdk/commands/commands/exam.py +2 -1
  9. canvas_sdk/commands/commands/immunization_statement.py +32 -0
  10. canvas_sdk/commands/commands/questionnaire/__init__.py +18 -3
  11. canvas_sdk/commands/commands/questionnaire/question.py +3 -2
  12. canvas_sdk/commands/commands/questionnaire/toggle_questions.py +68 -0
  13. canvas_sdk/commands/commands/review_of_systems.py +2 -1
  14. canvas_sdk/utils/http.py +4 -1
  15. canvas_sdk/v1/data/__init__.py +17 -3
  16. canvas_sdk/v1/data/allergy_intolerance.py +16 -19
  17. canvas_sdk/v1/data/appointment.py +10 -14
  18. canvas_sdk/v1/data/assessment.py +9 -10
  19. canvas_sdk/v1/data/banner_alert.py +12 -12
  20. canvas_sdk/v1/data/base.py +45 -1
  21. canvas_sdk/v1/data/billing.py +13 -18
  22. canvas_sdk/v1/data/business_line.py +7 -8
  23. canvas_sdk/v1/data/care_team.py +14 -17
  24. canvas_sdk/v1/data/charge_description_master.py +29 -0
  25. canvas_sdk/v1/data/claim.py +87 -95
  26. canvas_sdk/v1/data/claim_line_item.py +17 -18
  27. canvas_sdk/v1/data/command.py +8 -9
  28. canvas_sdk/v1/data/condition.py +9 -12
  29. canvas_sdk/v1/data/coverage.py +47 -53
  30. canvas_sdk/v1/data/detected_issue.py +16 -20
  31. canvas_sdk/v1/data/device.py +20 -21
  32. canvas_sdk/v1/data/discount.py +8 -8
  33. canvas_sdk/v1/data/imaging.py +24 -30
  34. canvas_sdk/v1/data/invoice.py +3 -3
  35. canvas_sdk/v1/data/lab.py +65 -84
  36. canvas_sdk/v1/data/line_item_transaction.py +7 -9
  37. canvas_sdk/v1/data/medication.py +14 -17
  38. canvas_sdk/v1/data/message.py +10 -17
  39. canvas_sdk/v1/data/note.py +87 -24
  40. canvas_sdk/v1/data/observation.py +24 -33
  41. canvas_sdk/v1/data/organization.py +14 -15
  42. canvas_sdk/v1/data/patient.py +57 -68
  43. canvas_sdk/v1/data/patient_consent.py +14 -19
  44. canvas_sdk/v1/data/payment_collection.py +7 -8
  45. canvas_sdk/v1/data/payor_specific_charge.py +10 -12
  46. canvas_sdk/v1/data/posting.py +10 -18
  47. canvas_sdk/v1/data/practicelocation.py +17 -21
  48. canvas_sdk/v1/data/protocol_override.py +8 -10
  49. canvas_sdk/v1/data/questionnaire.py +56 -73
  50. canvas_sdk/v1/data/reason_for_visit.py +7 -9
  51. canvas_sdk/v1/data/staff.py +61 -57
  52. canvas_sdk/v1/data/task.py +21 -31
  53. canvas_sdk/v1/data/team.py +15 -18
  54. canvas_sdk/v1/data/user.py +3 -3
  55. canvas_sdk/v1/data/utils.py +6 -0
  56. plugin_runner/allowed-module-imports.json +1340 -0
  57. plugin_runner/generate_allowed_imports.py +97 -0
  58. plugin_runner/plugin_runner.py +9 -0
  59. plugin_runner/sandbox.py +55 -60
  60. protobufs/canvas_generated/messages/effects.proto +6 -0
  61. protobufs/canvas_generated/messages/events.proto +12 -1
  62. settings.py +56 -22
  63. {canvas-0.44.3.dist-info → canvas-0.46.0.dist-info}/WHEEL +0 -0
  64. {canvas-0.44.3.dist-info → canvas-0.46.0.dist-info}/entry_points.txt +0 -0
@@ -9,69 +9,64 @@ from canvas_sdk.v1.data.base import (
9
9
  BaseQuerySet,
10
10
  CommittableQuerySetMixin,
11
11
  ForPatientQuerySetMixin,
12
+ IdentifiableModel,
13
+ Model,
12
14
  ValueSetLookupByNameQuerySet,
13
15
  )
14
16
 
15
17
 
16
- class ResponseOptionSet(models.Model):
18
+ class ResponseOptionSet(Model):
17
19
  """ResponseOptionSet."""
18
20
 
19
21
  class Meta:
20
- managed = False
21
22
  db_table = "canvas_sdk_data_api_responseoptionset_001"
22
23
 
23
- dbid = models.BigIntegerField(primary_key=True)
24
- created = models.DateTimeField()
25
- modified = models.DateTimeField()
26
- status = models.CharField()
27
- name = models.CharField()
28
- code_system = models.CharField()
29
- code = models.CharField()
30
- type = models.CharField()
24
+ created = models.DateTimeField(auto_now_add=True)
25
+ modified = models.DateTimeField(auto_now=True)
26
+ status = models.CharField(max_length=2)
27
+ name = models.CharField(max_length=255)
28
+ code_system = models.CharField(max_length=255)
29
+ code = models.CharField(max_length=100)
30
+ type = models.CharField(max_length=4)
31
31
  use_in_shx = models.BooleanField()
32
32
 
33
33
 
34
- class ResponseOption(models.Model):
34
+ class ResponseOption(Model):
35
35
  """ResponseOption."""
36
36
 
37
37
  class Meta:
38
- managed = False
39
38
  db_table = "canvas_sdk_data_api_responseoption_001"
40
39
 
41
- dbid = models.BigIntegerField(primary_key=True)
42
- created = models.DateTimeField()
43
- modified = models.DateTimeField()
44
- status = models.CharField()
45
- name = models.CharField()
46
- code = models.CharField()
47
- code_description = models.CharField()
48
- value = models.CharField()
40
+ created = models.DateTimeField(auto_now_add=True)
41
+ modified = models.DateTimeField(auto_now=True)
42
+ status = models.CharField(max_length=2)
43
+ name = models.CharField(max_length=255)
44
+ code = models.CharField(max_length=100)
45
+ code_description = models.CharField(max_length=255)
46
+ value = models.CharField(max_length=1000)
49
47
  response_option_set = models.ForeignKey(
50
48
  ResponseOptionSet, on_delete=models.DO_NOTHING, related_name="options", null=True
51
49
  )
52
50
  ordering = models.IntegerField()
53
51
 
54
52
 
55
- class Question(models.Model):
53
+ class Question(IdentifiableModel):
56
54
  """Question."""
57
55
 
58
56
  class Meta:
59
- managed = False
60
57
  db_table = "canvas_sdk_data_api_question_001"
61
58
 
62
- id = models.UUIDField()
63
- dbid = models.BigIntegerField(primary_key=True)
64
- created = models.DateTimeField()
65
- modified = models.DateTimeField()
66
- status = models.CharField()
67
- name = models.CharField()
59
+ created = models.DateTimeField(auto_now_add=True)
60
+ modified = models.DateTimeField(auto_now=True)
61
+ status = models.CharField(max_length=2)
62
+ name = models.CharField(max_length=255)
68
63
  response_option_set = models.ForeignKey(
69
64
  ResponseOptionSet, on_delete=models.DO_NOTHING, related_name="questions", null=True
70
65
  )
71
66
  acknowledge_only = models.BooleanField()
72
67
  show_prologue = models.BooleanField()
73
- code_system = models.CharField()
74
- code = models.CharField()
68
+ code_system = models.CharField(max_length=255)
69
+ code = models.CharField(max_length=100)
75
70
 
76
71
 
77
72
  class QuestionnaireValueSetLookupQuerySet(ValueSetLookupByNameQuerySet):
@@ -83,46 +78,41 @@ class QuestionnaireValueSetLookupQuerySet(ValueSetLookupByNameQuerySet):
83
78
  return Q(code_system=system, code__in=codes)
84
79
 
85
80
 
86
- class Questionnaire(models.Model):
81
+ class Questionnaire(IdentifiableModel):
87
82
  """Questionnaire."""
88
83
 
89
84
  class Meta:
90
- managed = False
91
85
  db_table = "canvas_sdk_data_api_questionnaire_001"
92
86
 
93
87
  objects = models.Manager.from_queryset(QuestionnaireValueSetLookupQuerySet)()
94
88
 
95
- id = models.UUIDField()
96
- dbid = models.BigIntegerField(primary_key=True)
97
- created = models.DateTimeField()
98
- modified = models.DateTimeField()
99
- status = models.CharField()
100
- name = models.CharField()
89
+ created = models.DateTimeField(auto_now_add=True)
90
+ modified = models.DateTimeField(auto_now=True)
91
+ status = models.CharField(max_length=2)
92
+ name = models.CharField(max_length=255)
101
93
  expected_completion_time = models.FloatField()
102
94
  can_originate_in_charting = models.BooleanField()
103
- use_case_in_charting = models.CharField()
95
+ use_case_in_charting = models.CharField(max_length=4)
104
96
  scoring_function_name = models.TextField()
105
- scoring_code_system = models.CharField()
106
- scoring_code = models.CharField()
107
- code_system = models.CharField()
108
- code = models.CharField()
109
- search_tags = models.CharField()
97
+ scoring_code_system = models.CharField(max_length=255)
98
+ scoring_code = models.CharField(max_length=100)
99
+ code_system = models.CharField(max_length=255)
100
+ code = models.CharField(max_length=100)
101
+ search_tags = models.CharField(max_length=500)
110
102
  questions = models.ManyToManyField(Question, through="v1.QuestionnaireQuestionMap")
111
103
  use_in_shx = models.BooleanField()
112
104
  carry_forward = models.TextField()
113
105
 
114
106
 
115
- class QuestionnaireQuestionMap(models.Model):
107
+ class QuestionnaireQuestionMap(Model):
116
108
  """QuestionnaireQuestionMap."""
117
109
 
118
110
  class Meta:
119
- managed = False
120
111
  db_table = "canvas_sdk_data_api_questionnairequestionmap_001"
121
112
 
122
- dbid = models.BigIntegerField(primary_key=True)
123
- created = models.DateTimeField()
124
- modified = models.DateTimeField()
125
- status = models.CharField()
113
+ created = models.DateTimeField(auto_now_add=True)
114
+ modified = models.DateTimeField(auto_now=True)
115
+ status = models.CharField(max_length=2)
126
116
  questionnaire = models.ForeignKey(Questionnaire, on_delete=models.DO_NOTHING, null=True)
127
117
  question = models.ForeignKey(Question, on_delete=models.DO_NOTHING, null=True)
128
118
 
@@ -136,17 +126,14 @@ class InterviewQuerySet(BaseQuerySet, ForPatientQuerySetMixin, CommittableQueryS
136
126
  InterviewManager = BaseModelManager.from_queryset(InterviewQuerySet)
137
127
 
138
128
 
139
- class Interview(models.Model):
129
+ class Interview(IdentifiableModel):
140
130
  """Interview."""
141
131
 
142
132
  class Meta:
143
- managed = False
144
133
  db_table = "canvas_sdk_data_api_interview_001"
145
134
 
146
135
  objects = cast(InterviewQuerySet, InterviewManager())
147
136
 
148
- id = models.UUIDField()
149
- dbid = models.BigIntegerField(primary_key=True)
150
137
  deleted = models.BooleanField()
151
138
  committer = models.ForeignKey(
152
139
  "v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
@@ -154,10 +141,10 @@ class Interview(models.Model):
154
141
  entered_in_error = models.ForeignKey(
155
142
  "v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
156
143
  )
157
- status = models.CharField()
158
- name = models.CharField()
144
+ status = models.CharField(max_length=2)
145
+ name = models.CharField(max_length=255)
159
146
  language_id = models.BigIntegerField()
160
- use_case_in_charting = models.CharField()
147
+ use_case_in_charting = models.CharField(max_length=4)
161
148
  patient = models.ForeignKey(
162
149
  "v1.Patient", on_delete=models.DO_NOTHING, related_name="interviews", null=True
163
150
  )
@@ -167,37 +154,33 @@ class Interview(models.Model):
167
154
  Questionnaire,
168
155
  through="v1.InterviewQuestionnaireMap",
169
156
  )
170
- progress_status = models.CharField()
171
- created = models.DateTimeField()
172
- modified = models.DateTimeField()
157
+ progress_status = models.CharField(max_length=3)
158
+ created = models.DateTimeField(auto_now_add=True)
159
+ modified = models.DateTimeField(auto_now=True)
173
160
 
174
161
 
175
- class InterviewQuestionnaireMap(models.Model):
162
+ class InterviewQuestionnaireMap(Model):
176
163
  """InterviewQuestionnaireMap."""
177
164
 
178
165
  class Meta:
179
- managed = False
180
166
  db_table = "canvas_sdk_data_api_interviewquestionnairemap_001"
181
167
 
182
- dbid = models.BigIntegerField(primary_key=True)
183
- created = models.DateTimeField()
184
- modified = models.DateTimeField()
185
- status = models.CharField()
168
+ created = models.DateTimeField(auto_now_add=True)
169
+ modified = models.DateTimeField(auto_now=True)
170
+ status = models.CharField(max_length=2)
186
171
  interview = models.ForeignKey(Interview, on_delete=models.DO_NOTHING, null=True)
187
172
  questionnaire = models.ForeignKey(Questionnaire, on_delete=models.DO_NOTHING, null=True)
188
173
 
189
174
 
190
- class InterviewQuestionResponse(models.Model):
175
+ class InterviewQuestionResponse(Model):
191
176
  """InterviewQuestionResponse."""
192
177
 
193
178
  class Meta:
194
- managed = False
195
179
  db_table = "canvas_sdk_data_api_interviewquestionresponse_001"
196
180
 
197
- dbid = models.BigIntegerField(primary_key=True)
198
- created = models.DateTimeField()
199
- modified = models.DateTimeField()
200
- status = models.CharField()
181
+ created = models.DateTimeField(auto_now_add=True)
182
+ modified = models.DateTimeField(auto_now=True)
183
+ status = models.CharField(max_length=2)
201
184
  interview = models.ForeignKey(
202
185
  Interview, on_delete=models.DO_NOTHING, related_name="interview_responses", null=True
203
186
  )
@@ -213,7 +196,7 @@ class InterviewQuestionResponse(models.Model):
213
196
  response_option_value = models.TextField()
214
197
  questionnaire_state = models.TextField()
215
198
  interview_state = models.TextField()
216
- comment = models.CharField()
199
+ comment = models.CharField(max_length=1024)
217
200
 
218
201
 
219
202
  __exports__ = (
@@ -1,23 +1,21 @@
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
5
 
5
- class ReasonForVisitSettingCoding(models.Model):
6
+
7
+ class ReasonForVisitSettingCoding(IdentifiableModel):
6
8
  """ReasonForVisitSettingCoding."""
7
9
 
8
10
  class Meta:
9
- managed = False
10
11
  db_table = "canvas_sdk_data_api_reasonforvisitsettingcoding_001"
11
12
 
12
13
  objects: models.Manager["ReasonForVisitSettingCoding"]
13
14
 
14
- id = models.UUIDField()
15
- dbid = models.BigIntegerField(primary_key=True)
16
-
17
- code = models.CharField()
18
- display = models.CharField()
19
- system = models.CharField()
20
- version = models.CharField()
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)
21
19
 
22
20
  duration = ArrayField(models.DurationField())
23
21
 
@@ -2,6 +2,7 @@ from django.contrib.postgres.fields import ArrayField
2
2
  from django.db import models
3
3
  from timezone_utils.fields import TimeZoneField
4
4
 
5
+ from canvas_sdk.v1.data.base import IdentifiableModel, Model
5
6
  from canvas_sdk.v1.data.common import (
6
7
  AddressState,
7
8
  AddressType,
@@ -12,53 +13,58 @@ from canvas_sdk.v1.data.common import (
12
13
  PersonSex,
13
14
  TaxIDType,
14
15
  )
16
+ from canvas_sdk.v1.data.utils import create_key
15
17
 
16
18
 
17
- class Staff(models.Model):
19
+ class Staff(Model):
18
20
  """Staff."""
19
21
 
20
22
  class Meta:
21
- managed = False
22
23
  db_table = "canvas_sdk_data_api_staff_001"
23
24
 
24
25
  def __str__(self) -> str:
25
26
  return f"{self.first_name} {self.last_name}"
26
27
 
27
- id = models.CharField(max_length=32, db_column="key")
28
- dbid = models.BigIntegerField(db_column="dbid", primary_key=True)
29
- created = models.DateTimeField()
30
- modified = models.DateTimeField()
31
- prefix = models.CharField()
32
- suffix = models.CharField()
33
- first_name = models.CharField()
34
- middle_name = models.CharField()
35
- last_name = models.CharField()
36
- maiden_name = models.CharField()
37
- nickname = models.CharField()
28
+ id = models.CharField(
29
+ max_length=32,
30
+ db_column="key",
31
+ unique=True,
32
+ editable=False,
33
+ default=create_key,
34
+ )
35
+ created = models.DateTimeField(auto_now_add=True)
36
+ modified = models.DateTimeField(auto_now=True)
37
+ prefix = models.CharField(max_length=100)
38
+ suffix = models.CharField(max_length=100)
39
+ first_name = models.CharField(max_length=255)
40
+ middle_name = models.CharField(max_length=255)
41
+ last_name = models.CharField(max_length=255)
42
+ maiden_name = models.CharField(max_length=255)
43
+ nickname = models.CharField(max_length=255)
38
44
  previous_names = models.JSONField()
39
45
  birth_date = models.DateField(null=True)
40
- sex_at_birth = models.CharField(choices=PersonSex.choices)
41
- sexual_orientation_term = models.CharField()
42
- sexual_orientation_code = models.CharField()
43
- gender_identity_term = models.CharField()
44
- gender_identity_code = models.CharField()
45
- preferred_pronouns = models.CharField()
46
- biological_race_codes = ArrayField(models.CharField())
47
- biological_race_terms = ArrayField(models.CharField())
48
- cultural_ethnicity_codes = ArrayField(models.CharField())
49
- cultural_ethnicity_terms = ArrayField(models.CharField())
46
+ sex_at_birth = models.CharField(choices=PersonSex.choices, max_length=3)
47
+ sexual_orientation_term = models.CharField(max_length=255)
48
+ sexual_orientation_code = models.CharField(max_length=255)
49
+ gender_identity_term = models.CharField(max_length=255)
50
+ gender_identity_code = models.CharField(max_length=255)
51
+ preferred_pronouns = models.CharField(max_length=255)
52
+ biological_race_codes = ArrayField(models.CharField(max_length=100))
53
+ biological_race_terms = ArrayField(models.CharField(max_length=255))
54
+ cultural_ethnicity_codes = ArrayField(models.CharField(max_length=100))
55
+ cultural_ethnicity_terms = ArrayField(models.CharField(max_length=255))
50
56
  last_known_timezone = TimeZoneField(null=True)
51
57
  active = models.BooleanField()
52
58
  primary_practice_location = models.ForeignKey(
53
59
  "v1.PracticeLocation", on_delete=models.DO_NOTHING, null=True
54
60
  )
55
- npi_number = models.CharField()
56
- nadean_number = models.CharField()
57
- group_npi_number = models.CharField()
61
+ npi_number = models.CharField(max_length=10)
62
+ nadean_number = models.CharField(max_length=20)
63
+ group_npi_number = models.CharField(max_length=10)
58
64
  bill_through_organization = models.BooleanField()
59
- tax_id = models.CharField()
60
- tax_id_type = models.CharField(choices=TaxIDType.choices)
61
- spi_number = models.CharField()
65
+ tax_id = models.CharField(max_length=25)
66
+ tax_id_type = models.CharField(choices=TaxIDType.choices, max_length=1)
67
+ spi_number = models.CharField(max_length=50)
62
68
  # TODO - uncomment when Language is developed
63
69
  # language = models.ForeignKey('v1.Language', on_delete=models.DO_NOTHING, related_name="staff_speakers", null=True)
64
70
  # language_secondary = models.ForeignKey('v1.Language', on_delete=models.DO_NOTHING, related_name="staff_secondary_speakers", null=True)
@@ -70,61 +76,59 @@ class Staff(models.Model):
70
76
  "v1.Staff", on_delete=models.DO_NOTHING, related_name="supervising_team", null=True
71
77
  )
72
78
 
79
+ @property
80
+ def photo_url(self) -> str:
81
+ """Return the URL of the staff's first photo."""
82
+ photo = self.photos.first()
83
+ return photo.url if photo else "https://d3hn0m4rbsz438.cloudfront.net/avatar1.png"
84
+
73
85
 
74
- class StaffContactPoint(models.Model):
86
+ class StaffContactPoint(IdentifiableModel):
75
87
  """StaffContactPoint."""
76
88
 
77
89
  class Meta:
78
- managed = False
79
90
  db_table = "canvas_sdk_data_api_staffcontactpoint_001"
80
91
 
81
- id = models.UUIDField()
82
- dbid = models.BigIntegerField(primary_key=True)
83
- system = models.CharField(choices=ContactPointSystem.choices)
84
- value = models.CharField()
85
- use = models.CharField(choices=ContactPointUse.choices)
86
- use_notes = models.CharField()
92
+ system = models.CharField(choices=ContactPointSystem.choices, max_length=20)
93
+ value = models.CharField(max_length=100)
94
+ use = models.CharField(choices=ContactPointUse.choices, max_length=20)
95
+ use_notes = models.CharField(max_length=255)
87
96
  rank = models.IntegerField()
88
- state = models.CharField(choices=ContactPointState.choices)
97
+ state = models.CharField(choices=ContactPointState.choices, max_length=20)
89
98
  staff = models.ForeignKey(Staff, on_delete=models.DO_NOTHING, related_name="telecom")
90
99
 
91
100
 
92
- class StaffAddress(models.Model):
101
+ class StaffAddress(IdentifiableModel):
93
102
  """StaffAddress."""
94
103
 
95
104
  class Meta:
96
- managed = False
97
105
  db_table = "canvas_sdk_data_api_staffaddress_001"
98
106
 
99
- id = models.UUIDField()
100
- dbid = models.BigIntegerField(primary_key=True)
101
- line1 = models.CharField()
102
- line2 = models.CharField()
103
- city = models.CharField()
104
- district = models.CharField()
105
- state_code = models.CharField()
106
- postal_code = models.CharField()
107
- use = models.CharField(choices=AddressUse.choices)
108
- type = models.CharField(choices=AddressType.choices)
107
+ line1 = models.CharField(max_length=255)
108
+ line2 = models.CharField(max_length=255)
109
+ city = models.CharField(max_length=255)
110
+ district = models.CharField(max_length=255)
111
+ state_code = models.CharField(max_length=2)
112
+ postal_code = models.CharField(max_length=255)
113
+ use = models.CharField(choices=AddressUse.choices, max_length=10)
114
+ type = models.CharField(choices=AddressType.choices, max_length=10)
109
115
  longitude = models.FloatField()
110
116
  latitude = models.FloatField()
111
117
  start = models.DateField()
112
118
  end = models.DateField()
113
- country = models.CharField()
114
- state = models.CharField(choices=AddressState.choices)
119
+ country = models.CharField(max_length=255)
120
+ state = models.CharField(choices=AddressState.choices, max_length=20)
115
121
  staff = models.ForeignKey(Staff, on_delete=models.DO_NOTHING, related_name="addresses")
116
122
 
117
123
 
118
- class StaffPhoto(models.Model):
124
+ class StaffPhoto(Model):
119
125
  """StaffPhoto."""
120
126
 
121
127
  class Meta:
122
- managed = False
123
128
  db_table = "canvas_sdk_data_api_staffphoto_001"
124
129
 
125
- dbid = models.BigIntegerField(primary_key=True)
126
- created = models.DateTimeField()
127
- modified = models.DateTimeField()
130
+ created = models.DateTimeField(auto_now_add=True)
131
+ modified = models.DateTimeField(auto_now=True)
128
132
  staff = models.ForeignKey(Staff, on_delete=models.CASCADE, related_name="photos")
129
133
  url = models.CharField(
130
134
  default="https://d3hn0m4rbsz438.cloudfront.net/avatar1.png", max_length=512
@@ -1,20 +1,21 @@
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
5
  from canvas_sdk.v1.data.common import ColorEnum, Origin
5
6
 
6
7
 
7
8
  class TaskType(models.TextChoices):
8
9
  """Choices for task types."""
9
10
 
10
- TASK = "Task", "Task"
11
- REMINDER = "Reminder", "Reminder"
11
+ TASK = "T", "Task"
12
+ REMINDER = "R", "Reminder"
12
13
 
13
14
 
14
15
  class EventType(models.TextChoices):
15
16
  """Choices for event types."""
16
17
 
17
- EVENT_CHART_OPEN = "Chart Open", "Chart Open"
18
+ EVENT_CHART_OPEN = "CHART_OPEN", "Chart Open"
18
19
 
19
20
 
20
21
  class TaskStatus(models.TextChoices):
@@ -32,17 +33,14 @@ class TaskLabelModule(models.TextChoices):
32
33
  TASKS = "tasks", "Tasks"
33
34
 
34
35
 
35
- class Task(models.Model):
36
+ class Task(IdentifiableModel):
36
37
  """Task."""
37
38
 
38
39
  class Meta:
39
- managed = False
40
40
  db_table = "canvas_sdk_data_api_task_001"
41
41
 
42
- id = models.UUIDField()
43
- dbid = models.BigIntegerField(primary_key=True)
44
- created = models.DateTimeField()
45
- modified = models.DateTimeField()
42
+ created = models.DateTimeField(auto_now_add=True)
43
+ modified = models.DateTimeField(auto_now=True)
46
44
  creator = models.ForeignKey(
47
45
  "v1.Staff", on_delete=models.DO_NOTHING, related_name="creator_tasks", null=True
48
46
  )
@@ -54,25 +52,22 @@ class Task(models.Model):
54
52
  patient = models.ForeignKey(
55
53
  "v1.Patient", on_delete=models.DO_NOTHING, blank=True, related_name="tasks", null=True
56
54
  )
57
- task_type = models.CharField(choices=TaskType.choices)
58
- tag = models.CharField()
59
- title = models.CharField()
55
+ task_type = models.CharField(choices=TaskType.choices, max_length=1)
56
+ tag = models.CharField(max_length=64)
57
+ title = models.TextField()
60
58
  due = models.DateTimeField(null=True)
61
- due_event = models.CharField(choices=EventType.choices, blank=True)
62
- status = models.CharField(choices=TaskStatus.choices)
59
+ due_event = models.CharField(choices=EventType.choices, blank=True, max_length=16)
60
+ status = models.CharField(choices=TaskStatus.choices, max_length=9)
63
61
 
64
62
 
65
- class TaskComment(models.Model):
63
+ class TaskComment(IdentifiableModel):
66
64
  """TaskComment."""
67
65
 
68
66
  class Meta:
69
- managed = False
70
67
  db_table = "canvas_sdk_data_api_taskcomment_001"
71
68
 
72
- id = models.UUIDField()
73
- dbid = models.BigIntegerField(primary_key=True)
74
- created = models.DateTimeField()
75
- modified = models.DateTimeField()
69
+ created = models.DateTimeField(auto_now_add=True)
70
+ modified = models.DateTimeField(auto_now=True)
76
71
  creator = models.ForeignKey(
77
72
  "v1.Staff", on_delete=models.DO_NOTHING, related_name="comments", null=True
78
73
  )
@@ -80,32 +75,27 @@ class TaskComment(models.Model):
80
75
  body = models.TextField()
81
76
 
82
77
 
83
- class TaskLabel(models.Model):
78
+ class TaskLabel(IdentifiableModel):
84
79
  """TaskLabel."""
85
80
 
86
81
  class Meta:
87
- managed = False
88
82
  db_table = "canvas_sdk_data_api_tasklabel_001"
89
83
 
90
- id = models.UUIDField()
91
- dbid = models.BigIntegerField(primary_key=True)
92
84
  tasks = models.ManyToManyField(Task, related_name="labels", through="TaskTaskLabel") # type: ignore[var-annotated]
93
85
  position = models.IntegerField()
94
- color = models.CharField(choices=ColorEnum.choices)
95
- task_association = ArrayField(models.CharField(choices=Origin.choices))
96
- name = models.CharField()
86
+ color = models.CharField(choices=ColorEnum.choices, max_length=50)
87
+ task_association = ArrayField(models.CharField(choices=Origin.choices, max_length=32))
88
+ name = models.CharField(max_length=255)
97
89
  active = models.BooleanField()
98
- modules = ArrayField(models.CharField(choices=TaskLabelModule.choices))
90
+ modules = ArrayField(models.CharField(choices=TaskLabelModule.choices, max_length=32))
99
91
 
100
92
 
101
- class TaskTaskLabel(models.Model):
93
+ class TaskTaskLabel(Model):
102
94
  """M2M for Task -> TaskLabels."""
103
95
 
104
96
  class Meta:
105
- managed = False
106
97
  db_table = "canvas_sdk_data_api_tasktasklabel_001"
107
98
 
108
- dbid = models.BigIntegerField(primary_key=True)
109
99
  task_label = models.ForeignKey(TaskLabel, on_delete=models.DO_NOTHING, null=True)
110
100
  task = models.ForeignKey(Task, on_delete=models.DO_NOTHING, null=True)
111
101
 
@@ -1,6 +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
5
  from canvas_sdk.v1.data.common import ContactPointState, ContactPointSystem, ContactPointUse
5
6
 
6
7
 
@@ -38,41 +39,37 @@ class TeamResponsibility(models.TextChoices):
38
39
  REVIEW_COVERAGES = "REVIEW_COVERAGES", "Review incomplete patient coverages"
39
40
 
40
41
 
41
- class Team(models.Model):
42
+ class Team(IdentifiableModel):
42
43
  """Team."""
43
44
 
44
45
  class Meta:
45
- managed = False
46
46
  db_table = "canvas_sdk_data_api_team_001"
47
47
 
48
- id = models.UUIDField()
49
- dbid = models.BigIntegerField(primary_key=True)
50
- created = models.DateTimeField()
51
- modified = models.DateTimeField()
52
- name = models.CharField()
53
- responsibilities = ArrayField(models.CharField(choices=TeamResponsibility.choices))
54
- members = models.ManyToManyField( # type: ignore[var-annotated]
48
+ created = models.DateTimeField(auto_now_add=True)
49
+ modified = models.DateTimeField(auto_now=True)
50
+ name = models.CharField(max_length=200)
51
+ responsibilities = ArrayField(
52
+ models.CharField(choices=TeamResponsibility.choices, max_length=64)
53
+ )
54
+ members = models.ManyToManyField(
55
55
  "v1.Staff",
56
56
  related_name="teams",
57
57
  db_table="canvas_sdk_data_api_team_members_001",
58
58
  )
59
59
 
60
60
 
61
- class TeamContactPoint(models.Model):
61
+ class TeamContactPoint(IdentifiableModel):
62
62
  """TeamContactPoint."""
63
63
 
64
64
  class Meta:
65
- managed = False
66
65
  db_table = "canvas_sdk_data_api_teamcontactpoint_001"
67
66
 
68
- id = models.UUIDField()
69
- dbid = models.BigIntegerField(primary_key=True)
70
- system = models.CharField(choices=ContactPointSystem.choices)
71
- value = models.CharField()
72
- use = models.CharField(choices=ContactPointUse.choices)
73
- use_notes = models.CharField()
67
+ system = models.CharField(choices=ContactPointSystem.choices, max_length=20)
68
+ value = models.CharField(max_length=100)
69
+ use = models.CharField(choices=ContactPointUse.choices, max_length=20)
70
+ use_notes = models.CharField(max_length=255)
74
71
  rank = models.IntegerField()
75
- state = models.CharField(choices=ContactPointState.choices)
72
+ state = models.CharField(choices=ContactPointState.choices, max_length=20)
76
73
  team = models.ForeignKey(Team, on_delete=models.DO_NOTHING, related_name="telecom")
77
74
 
78
75
 
@@ -1,14 +1,14 @@
1
1
  from django.db import models
2
2
 
3
+ from canvas_sdk.v1.data.base import Model
3
4
 
4
- class CanvasUser(models.Model):
5
+
6
+ class CanvasUser(Model):
5
7
  """A class representing a Canvas User."""
6
8
 
7
9
  class Meta:
8
- managed = False
9
10
  db_table = "canvas_sdk_data_api_auth_user_001"
10
11
 
11
- dbid = models.BigIntegerField(db_column="dbid", primary_key=True)
12
12
  email = models.EmailField(db_column="email")
13
13
  phone_number = models.CharField(db_column="phone_number", max_length=255)
14
14
  last_invite_date_time = models.DateTimeField()