canvas 0.14.0__py3-none-any.whl → 0.16.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.14.0.dist-info → canvas-0.16.0.dist-info}/METADATA +2 -2
- {canvas-0.14.0.dist-info → canvas-0.16.0.dist-info}/RECORD +87 -52
- canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/CANVAS_MANIFEST.json +6 -3
- canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/applications/my_application.py +4 -1
- canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/protocols/my_protocol.py +1 -1
- canvas_cli/utils/validators/manifest_schema.py +9 -2
- canvas_generated/messages/effects_pb2.py +2 -2
- canvas_generated/messages/effects_pb2.pyi +18 -0
- canvas_generated/messages/events_pb2.py +2 -2
- canvas_generated/messages/events_pb2.pyi +48 -0
- canvas_sdk/commands/tests/protocol/tests.py +3 -1
- canvas_sdk/commands/tests/test_utils.py +76 -18
- canvas_sdk/effects/banner_alert/tests.py +41 -20
- canvas_sdk/effects/launch_modal.py +14 -3
- canvas_sdk/events/base.py +1 -3
- canvas_sdk/handlers/action_button.py +33 -13
- canvas_sdk/handlers/application.py +1 -1
- canvas_sdk/handlers/cron_task.py +1 -1
- canvas_sdk/protocols/clinical_quality_measure.py +1 -1
- canvas_sdk/templates/__init__.py +3 -0
- canvas_sdk/templates/tests/__init__.py +0 -0
- canvas_sdk/templates/tests/test_utils.py +43 -0
- canvas_sdk/templates/utils.py +44 -0
- canvas_sdk/v1/apps.py +7 -0
- canvas_sdk/v1/data/__init__.py +98 -5
- canvas_sdk/v1/data/allergy_intolerance.py +25 -9
- canvas_sdk/v1/data/appointment.py +56 -0
- canvas_sdk/v1/data/assessment.py +40 -0
- canvas_sdk/v1/data/base.py +35 -22
- canvas_sdk/v1/data/billing.py +4 -7
- canvas_sdk/v1/data/care_team.py +60 -0
- canvas_sdk/v1/data/command.py +8 -10
- canvas_sdk/v1/data/common.py +53 -0
- canvas_sdk/v1/data/condition.py +22 -10
- canvas_sdk/v1/data/coverage.py +294 -0
- canvas_sdk/v1/data/detected_issue.py +5 -9
- canvas_sdk/v1/data/device.py +4 -8
- canvas_sdk/v1/data/imaging.py +12 -17
- canvas_sdk/v1/data/lab.py +41 -31
- canvas_sdk/v1/data/medication.py +16 -10
- canvas_sdk/v1/data/note.py +11 -14
- canvas_sdk/v1/data/observation.py +19 -14
- canvas_sdk/v1/data/organization.py +1 -2
- canvas_sdk/v1/data/patient.py +140 -2
- canvas_sdk/v1/data/practicelocation.py +2 -4
- canvas_sdk/v1/data/protocol_override.py +21 -8
- canvas_sdk/v1/data/questionnaire.py +20 -17
- canvas_sdk/v1/data/staff.py +5 -7
- canvas_sdk/v1/data/task.py +5 -11
- canvas_sdk/v1/data/user.py +0 -1
- canvas_sdk/v1/models.py +4 -0
- canvas_sdk/value_set/hcc2018.py +55369 -0
- plugin_runner/plugin_installer.py +1 -1
- plugin_runner/plugin_runner.py +5 -25
- plugin_runner/sandbox.py +133 -9
- plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/CANVAS_MANIFEST.json +38 -0
- plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/README.md +11 -0
- plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/protocols/__init__.py +0 -0
- plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/protocols/my_protocol.py +33 -0
- plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/templates/__init__.py +3 -0
- plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/templates/base.py +6 -0
- plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/utils/__init__.py +5 -0
- plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/utils/base.py +4 -0
- plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/CANVAS_MANIFEST.json +29 -0
- plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/README.md +12 -0
- plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/other_module/__init__.py +0 -0
- plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/other_module/base.py +10 -0
- plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/protocols/__init__.py +0 -0
- plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/protocols/my_protocol.py +18 -0
- plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/CANVAS_MANIFEST.json +29 -0
- plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/README.md +12 -0
- plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/other_module/__init__.py +0 -0
- plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/other_module/base.py +10 -0
- plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/protocols/__init__.py +0 -0
- plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/protocols/my_protocol.py +18 -0
- plugin_runner/tests/fixtures/plugins/test_render_template/CANVAS_MANIFEST.json +47 -0
- plugin_runner/tests/fixtures/plugins/test_render_template/README.md +11 -0
- plugin_runner/tests/fixtures/plugins/test_render_template/protocols/__init__.py +0 -0
- plugin_runner/tests/fixtures/plugins/test_render_template/protocols/my_protocol.py +43 -0
- plugin_runner/tests/fixtures/plugins/test_render_template/templates/template.html +10 -0
- plugin_runner/tests/test_application.py +9 -9
- plugin_runner/tests/test_plugin_installer.py +12 -1
- plugin_runner/tests/test_plugin_runner.py +159 -66
- plugin_runner/tests/test_sandbox.py +26 -14
- settings.py +13 -1
- canvas_sdk/models/__init__.py +0 -8
- {canvas-0.14.0.dist-info → canvas-0.16.0.dist-info}/WHEEL +0 -0
- {canvas-0.14.0.dist-info → canvas-0.16.0.dist-info}/entry_points.txt +0 -0
canvas_sdk/v1/data/patient.py
CHANGED
|
@@ -1,10 +1,22 @@
|
|
|
1
|
-
from typing import Self
|
|
1
|
+
from typing import TYPE_CHECKING, Any, Self
|
|
2
2
|
|
|
3
3
|
import arrow
|
|
4
4
|
from django.contrib.postgres.fields import ArrayField
|
|
5
5
|
from django.db import models
|
|
6
6
|
from django.db.models import TextChoices
|
|
7
7
|
|
|
8
|
+
from canvas_sdk.v1.data.common import (
|
|
9
|
+
AddressState,
|
|
10
|
+
AddressType,
|
|
11
|
+
AddressUse,
|
|
12
|
+
ContactPointState,
|
|
13
|
+
ContactPointSystem,
|
|
14
|
+
ContactPointUse,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
if TYPE_CHECKING:
|
|
18
|
+
from django_stubs_ext.db.models.manager import RelatedManager
|
|
19
|
+
|
|
8
20
|
|
|
9
21
|
class SexAtBirth(TextChoices):
|
|
10
22
|
"""SexAtBirth."""
|
|
@@ -16,12 +28,21 @@ class SexAtBirth(TextChoices):
|
|
|
16
28
|
BLANK = "", ""
|
|
17
29
|
|
|
18
30
|
|
|
31
|
+
class PatientSettingConstants:
|
|
32
|
+
"""PatientSettingConstants."""
|
|
33
|
+
|
|
34
|
+
LAB = "lab"
|
|
35
|
+
PHARMACY = "pharmacy"
|
|
36
|
+
IMAGING_CENTER = "imagingCenter"
|
|
37
|
+
CONTACT_METHOD = "contactMethod"
|
|
38
|
+
PREFERRED_SCHEDULING_TIMEZONE = "preferredSchedulingTimezone"
|
|
39
|
+
|
|
40
|
+
|
|
19
41
|
class Patient(models.Model):
|
|
20
42
|
"""A class representing a patient."""
|
|
21
43
|
|
|
22
44
|
class Meta:
|
|
23
45
|
managed = False
|
|
24
|
-
app_label = "canvas_sdk"
|
|
25
46
|
db_table = "canvas_sdk_data_api_patient_001"
|
|
26
47
|
|
|
27
48
|
id = models.CharField(max_length=32, db_column="key")
|
|
@@ -60,6 +81,8 @@ class Patient(models.Model):
|
|
|
60
81
|
default_location_id = models.BigIntegerField()
|
|
61
82
|
default_provider_id = models.BigIntegerField()
|
|
62
83
|
|
|
84
|
+
settings: "RelatedManager[PatientSetting]"
|
|
85
|
+
|
|
63
86
|
@classmethod
|
|
64
87
|
def find(cls, id: str) -> Self:
|
|
65
88
|
"""Find a patient by id."""
|
|
@@ -84,3 +107,118 @@ class Patient(models.Model):
|
|
|
84
107
|
next_year = birth_date.shift(years=age + 1)
|
|
85
108
|
age += (time.date() - current_year.date()) / (next_year.date() - current_year.date())
|
|
86
109
|
return age
|
|
110
|
+
|
|
111
|
+
def get_setting(self, name: str) -> Any:
|
|
112
|
+
"""Returns a patient setting value by name."""
|
|
113
|
+
try:
|
|
114
|
+
return self.settings.get(name=name).value
|
|
115
|
+
except PatientSetting.DoesNotExist:
|
|
116
|
+
return None
|
|
117
|
+
|
|
118
|
+
@property
|
|
119
|
+
def preferred_pharmacy(self) -> dict[str, str] | None:
|
|
120
|
+
"""Returns the patient's preferred pharmacy."""
|
|
121
|
+
pharmacy_setting = self.get_setting(PatientSettingConstants.PHARMACY) or {}
|
|
122
|
+
if isinstance(pharmacy_setting, list):
|
|
123
|
+
for pharmacy in pharmacy_setting:
|
|
124
|
+
if pharmacy.get("default", False):
|
|
125
|
+
return pharmacy
|
|
126
|
+
return None
|
|
127
|
+
return pharmacy_setting
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
class PatientContactPoint(models.Model):
|
|
131
|
+
"""A class representing a patient contact point."""
|
|
132
|
+
|
|
133
|
+
class Meta:
|
|
134
|
+
managed = False
|
|
135
|
+
db_table = "canvas_sdk_data_api_patientcontactpoint_001"
|
|
136
|
+
|
|
137
|
+
id = models.UUIDField()
|
|
138
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
139
|
+
system = models.CharField(choices=ContactPointSystem.choices)
|
|
140
|
+
value = models.CharField()
|
|
141
|
+
use = models.CharField(choices=ContactPointUse.choices)
|
|
142
|
+
use_notes = models.CharField()
|
|
143
|
+
rank = models.IntegerField()
|
|
144
|
+
state = models.CharField(choices=ContactPointState.choices)
|
|
145
|
+
patient = models.ForeignKey(
|
|
146
|
+
"v1.Patient", on_delete=models.DO_NOTHING, related_name="telecom", null=True
|
|
147
|
+
)
|
|
148
|
+
has_consent = models.BooleanField()
|
|
149
|
+
last_verified = models.DateTimeField
|
|
150
|
+
verification_token = models.CharField()
|
|
151
|
+
opted_out = models.BooleanField()
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
class PatientAddress(models.Model):
|
|
155
|
+
"""A class representing a patient address."""
|
|
156
|
+
|
|
157
|
+
class Meta:
|
|
158
|
+
managed = False
|
|
159
|
+
db_table = "canvas_sdk_data_api_patientaddress_001"
|
|
160
|
+
|
|
161
|
+
id = models.UUIDField()
|
|
162
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
163
|
+
line1 = models.CharField()
|
|
164
|
+
line2 = models.CharField()
|
|
165
|
+
city = models.CharField()
|
|
166
|
+
district = models.CharField()
|
|
167
|
+
state_code = models.CharField()
|
|
168
|
+
postal_code = models.CharField()
|
|
169
|
+
use = models.CharField(choices=AddressUse.choices)
|
|
170
|
+
type = models.CharField(choices=AddressType.choices)
|
|
171
|
+
longitude = models.FloatField()
|
|
172
|
+
latitude = models.FloatField()
|
|
173
|
+
start = models.DateField()
|
|
174
|
+
end = models.DateField()
|
|
175
|
+
country = models.CharField()
|
|
176
|
+
state = models.CharField(choices=AddressState.choices)
|
|
177
|
+
patient = models.ForeignKey(
|
|
178
|
+
"v1.Patient", on_delete=models.DO_NOTHING, related_name="addresses", null=True
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
def __str__(self) -> str:
|
|
182
|
+
return f"id={self.id}"
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
class PatientExternalIdentifier(models.Model):
|
|
186
|
+
"""A class representing a patient external identifier."""
|
|
187
|
+
|
|
188
|
+
class Meta:
|
|
189
|
+
managed = False
|
|
190
|
+
db_table = "canvas_sdk_data_api_patientexternalidentifier_001"
|
|
191
|
+
|
|
192
|
+
id = models.UUIDField()
|
|
193
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
194
|
+
created = models.DateTimeField()
|
|
195
|
+
modified = models.DateTimeField()
|
|
196
|
+
patient = models.ForeignKey(
|
|
197
|
+
"v1.Patient", related_name="external_identifiers", on_delete=models.DO_NOTHING, null=True
|
|
198
|
+
)
|
|
199
|
+
use = models.CharField()
|
|
200
|
+
identifier_type = models.CharField()
|
|
201
|
+
system = models.CharField()
|
|
202
|
+
value = models.CharField()
|
|
203
|
+
issued_date = models.DateField()
|
|
204
|
+
expiration_date = models.DateField()
|
|
205
|
+
|
|
206
|
+
def __str__(self) -> str:
|
|
207
|
+
return f"id={self.id}"
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
class PatientSetting(models.Model):
|
|
211
|
+
"""PatientSetting."""
|
|
212
|
+
|
|
213
|
+
class Meta:
|
|
214
|
+
managed = False
|
|
215
|
+
db_table = "canvas_sdk_data_api_patientsetting_001"
|
|
216
|
+
|
|
217
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
218
|
+
created = models.DateTimeField()
|
|
219
|
+
modified = models.DateTimeField()
|
|
220
|
+
patient = models.ForeignKey(
|
|
221
|
+
"v1.Patient", on_delete=models.DO_NOTHING, related_name="settings", null=True
|
|
222
|
+
)
|
|
223
|
+
name = models.CharField()
|
|
224
|
+
value = models.JSONField()
|
|
@@ -57,7 +57,6 @@ class PracticeLocation(models.Model):
|
|
|
57
57
|
|
|
58
58
|
class Meta:
|
|
59
59
|
managed = False
|
|
60
|
-
app_label = "canvas_sdk"
|
|
61
60
|
db_table = "canvas_sdk_data_api_practicelocation_001"
|
|
62
61
|
|
|
63
62
|
id = models.UUIDField()
|
|
@@ -65,7 +64,7 @@ class PracticeLocation(models.Model):
|
|
|
65
64
|
created = models.DateTimeField()
|
|
66
65
|
modified = models.DateTimeField()
|
|
67
66
|
organization = models.ForeignKey(
|
|
68
|
-
"Organization", on_delete=models.DO_NOTHING, related_name="practice_locations", null=True
|
|
67
|
+
"v1.Organization", on_delete=models.DO_NOTHING, related_name="practice_locations", null=True
|
|
69
68
|
)
|
|
70
69
|
place_of_service_code = models.CharField(choices=PracticeLocationPOS.choices)
|
|
71
70
|
full_name = models.CharField()
|
|
@@ -91,12 +90,11 @@ class PracticeLocationSetting(models.Model):
|
|
|
91
90
|
|
|
92
91
|
class Meta:
|
|
93
92
|
managed = False
|
|
94
|
-
app_label = "canvas_sdk"
|
|
95
93
|
db_table = "canvas_sdk_data_api_practicelocationsetting_001"
|
|
96
94
|
|
|
97
95
|
dbid = models.BigIntegerField(primary_key=True)
|
|
98
96
|
practice_location = models.ForeignKey(
|
|
99
|
-
PracticeLocation, on_delete=models.DO_NOTHING, related_name="settings", null=True
|
|
97
|
+
"v1.PracticeLocation", on_delete=models.DO_NOTHING, related_name="settings", null=True
|
|
100
98
|
)
|
|
101
99
|
name = models.CharField()
|
|
102
100
|
value = models.JSONField()
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
from typing import cast
|
|
2
|
+
|
|
1
3
|
from django.db import models
|
|
2
4
|
|
|
3
|
-
from canvas_sdk.v1.data.base import
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
from canvas_sdk.v1.data.base import (
|
|
6
|
+
BaseModelManager,
|
|
7
|
+
BaseQuerySet,
|
|
8
|
+
CommittableQuerySetMixin,
|
|
9
|
+
ForPatientQuerySetMixin,
|
|
10
|
+
)
|
|
6
11
|
|
|
7
12
|
|
|
8
13
|
class IntervalUnit(models.TextChoices):
|
|
@@ -20,25 +25,33 @@ class Status(models.TextChoices):
|
|
|
20
25
|
INACTIVE = "inactive", "inactive"
|
|
21
26
|
|
|
22
27
|
|
|
28
|
+
class ProtocolOverrideQuerySet(BaseQuerySet, ForPatientQuerySetMixin, CommittableQuerySetMixin):
|
|
29
|
+
"""ProtocolOverrideQuerySet."""
|
|
30
|
+
|
|
31
|
+
pass
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
ProtocolOverrideManager = BaseModelManager.from_queryset(ProtocolOverrideQuerySet)
|
|
35
|
+
|
|
36
|
+
|
|
23
37
|
class ProtocolOverride(models.Model):
|
|
24
38
|
"""ProtocolOverride."""
|
|
25
39
|
|
|
26
40
|
class Meta:
|
|
27
41
|
managed = False
|
|
28
|
-
app_label = "canvas_sdk"
|
|
29
42
|
db_table = "canvas_sdk_data_api_protocoloverride_001"
|
|
30
43
|
|
|
31
|
-
objects =
|
|
44
|
+
objects = cast(ProtocolOverrideQuerySet, ProtocolOverrideManager())
|
|
32
45
|
|
|
33
46
|
id = models.UUIDField()
|
|
34
47
|
dbid = models.BigIntegerField(primary_key=True)
|
|
35
48
|
created = models.DateTimeField()
|
|
36
49
|
modified = models.DateTimeField()
|
|
37
50
|
deleted = models.BooleanField()
|
|
38
|
-
committer = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING, null=True)
|
|
39
|
-
entered_in_error = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING, null=True)
|
|
51
|
+
committer = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
|
|
52
|
+
entered_in_error = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
|
|
40
53
|
patient = models.ForeignKey(
|
|
41
|
-
Patient, on_delete=models.DO_NOTHING, related_name="protocol_overrides", null=True
|
|
54
|
+
"v1.Patient", on_delete=models.DO_NOTHING, related_name="protocol_overrides", null=True
|
|
42
55
|
)
|
|
43
56
|
protocol_key = models.CharField()
|
|
44
57
|
is_adjustment = models.BooleanField()
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
from collections.abc import Container
|
|
2
|
+
from typing import cast
|
|
2
3
|
|
|
3
4
|
from django.db import models
|
|
4
5
|
from django.db.models import Q
|
|
5
6
|
|
|
6
|
-
from canvas_sdk.v1.data import Patient
|
|
7
7
|
from canvas_sdk.v1.data.base import (
|
|
8
|
-
|
|
8
|
+
BaseModelManager,
|
|
9
|
+
BaseQuerySet,
|
|
10
|
+
CommittableQuerySetMixin,
|
|
11
|
+
ForPatientQuerySetMixin,
|
|
9
12
|
ValueSetLookupByNameQuerySet,
|
|
10
13
|
)
|
|
11
|
-
from canvas_sdk.v1.data.user import CanvasUser
|
|
12
14
|
|
|
13
15
|
|
|
14
16
|
class ResponseOptionSet(models.Model):
|
|
@@ -16,7 +18,6 @@ class ResponseOptionSet(models.Model):
|
|
|
16
18
|
|
|
17
19
|
class Meta:
|
|
18
20
|
managed = False
|
|
19
|
-
app_label = "canvas_sdk"
|
|
20
21
|
db_table = "canvas_sdk_data_api_responseoptionset_001"
|
|
21
22
|
|
|
22
23
|
dbid = models.BigIntegerField(primary_key=True)
|
|
@@ -35,7 +36,6 @@ class ResponseOption(models.Model):
|
|
|
35
36
|
|
|
36
37
|
class Meta:
|
|
37
38
|
managed = False
|
|
38
|
-
app_label = "canvas_sdk"
|
|
39
39
|
db_table = "canvas_sdk_data_api_responseoption_001"
|
|
40
40
|
|
|
41
41
|
dbid = models.BigIntegerField(primary_key=True)
|
|
@@ -57,7 +57,6 @@ class Question(models.Model):
|
|
|
57
57
|
|
|
58
58
|
class Meta:
|
|
59
59
|
managed = False
|
|
60
|
-
app_label = "canvas_sdk"
|
|
61
60
|
db_table = "canvas_sdk_data_api_question_001"
|
|
62
61
|
|
|
63
62
|
id = models.UUIDField()
|
|
@@ -89,7 +88,6 @@ class Questionnaire(models.Model):
|
|
|
89
88
|
|
|
90
89
|
class Meta:
|
|
91
90
|
managed = False
|
|
92
|
-
app_label = "canvas_sdk"
|
|
93
91
|
db_table = "canvas_sdk_data_api_questionnaire_001"
|
|
94
92
|
|
|
95
93
|
objects = models.Manager.from_queryset(QuestionnaireValueSetLookupQuerySet)()
|
|
@@ -109,7 +107,7 @@ class Questionnaire(models.Model):
|
|
|
109
107
|
code_system = models.CharField()
|
|
110
108
|
code = models.CharField()
|
|
111
109
|
search_tags = models.CharField()
|
|
112
|
-
questions = models.ManyToManyField(Question, through="
|
|
110
|
+
questions = models.ManyToManyField(Question, through="v1.QuestionnaireQuestionMap") # type: ignore[misc, var-annotated]
|
|
113
111
|
use_in_shx = models.BooleanField()
|
|
114
112
|
carry_forward = models.TextField()
|
|
115
113
|
|
|
@@ -119,7 +117,6 @@ class QuestionnaireQuestionMap(models.Model):
|
|
|
119
117
|
|
|
120
118
|
class Meta:
|
|
121
119
|
managed = False
|
|
122
|
-
app_label = "canvas_sdk"
|
|
123
120
|
db_table = "canvas_sdk_data_api_questionnairequestionmap_001"
|
|
124
121
|
|
|
125
122
|
dbid = models.BigIntegerField(primary_key=True)
|
|
@@ -130,33 +127,41 @@ class QuestionnaireQuestionMap(models.Model):
|
|
|
130
127
|
question = models.ForeignKey(Question, on_delete=models.DO_NOTHING, null=True)
|
|
131
128
|
|
|
132
129
|
|
|
130
|
+
class InterviewQuerySet(BaseQuerySet, ForPatientQuerySetMixin, CommittableQuerySetMixin):
|
|
131
|
+
"""InterviewQuerySet."""
|
|
132
|
+
|
|
133
|
+
pass
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
InterviewManager = BaseModelManager.from_queryset(InterviewQuerySet)
|
|
137
|
+
|
|
138
|
+
|
|
133
139
|
class Interview(models.Model):
|
|
134
140
|
"""Interview."""
|
|
135
141
|
|
|
136
142
|
class Meta:
|
|
137
143
|
managed = False
|
|
138
|
-
app_label = "canvas_sdk"
|
|
139
144
|
db_table = "canvas_sdk_data_api_interview_001"
|
|
140
145
|
|
|
141
|
-
objects =
|
|
146
|
+
objects = cast(InterviewQuerySet, InterviewManager())
|
|
142
147
|
|
|
143
148
|
id = models.UUIDField()
|
|
144
149
|
dbid = models.BigIntegerField(primary_key=True)
|
|
145
150
|
deleted = models.BooleanField()
|
|
146
|
-
committer = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING, null=True)
|
|
147
|
-
entered_in_error = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING, null=True)
|
|
151
|
+
committer = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
|
|
152
|
+
entered_in_error = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
|
|
148
153
|
status = models.CharField()
|
|
149
154
|
name = models.CharField()
|
|
150
155
|
language_id = models.BigIntegerField()
|
|
151
156
|
use_case_in_charting = models.CharField()
|
|
152
157
|
patient = models.ForeignKey(
|
|
153
|
-
Patient, on_delete=models.DO_NOTHING, related_name="interviews", null=True
|
|
158
|
+
"v1.Patient", on_delete=models.DO_NOTHING, related_name="interviews", null=True
|
|
154
159
|
)
|
|
155
160
|
note_id = models.BigIntegerField()
|
|
156
161
|
appointment_id = models.BigIntegerField()
|
|
157
162
|
questionnaires = models.ManyToManyField( # type: ignore[var-annotated]
|
|
158
163
|
Questionnaire,
|
|
159
|
-
through="
|
|
164
|
+
through="v1.InterviewQuestionnaireMap", # type: ignore[misc]
|
|
160
165
|
)
|
|
161
166
|
progress_status = models.CharField()
|
|
162
167
|
created = models.DateTimeField()
|
|
@@ -168,7 +173,6 @@ class InterviewQuestionnaireMap(models.Model):
|
|
|
168
173
|
|
|
169
174
|
class Meta:
|
|
170
175
|
managed = False
|
|
171
|
-
app_label = "canvas_sdk"
|
|
172
176
|
db_table = "canvas_sdk_data_api_interviewquestionnairemap_001"
|
|
173
177
|
|
|
174
178
|
dbid = models.BigIntegerField(primary_key=True)
|
|
@@ -184,7 +188,6 @@ class InterviewQuestionResponse(models.Model):
|
|
|
184
188
|
|
|
185
189
|
class Meta:
|
|
186
190
|
managed = False
|
|
187
|
-
app_label = "canvas_sdk"
|
|
188
191
|
db_table = "canvas_sdk_data_api_interviewquestionresponse_001"
|
|
189
192
|
|
|
190
193
|
dbid = models.BigIntegerField(primary_key=True)
|
canvas_sdk/v1/data/staff.py
CHANGED
|
@@ -3,7 +3,6 @@ from django.db import models
|
|
|
3
3
|
from timezone_utils.fields import TimeZoneField
|
|
4
4
|
|
|
5
5
|
from canvas_sdk.v1.data.common import PersonSex, TaxIDType
|
|
6
|
-
from canvas_sdk.v1.data.user import CanvasUser
|
|
7
6
|
|
|
8
7
|
|
|
9
8
|
class Staff(models.Model):
|
|
@@ -11,7 +10,6 @@ class Staff(models.Model):
|
|
|
11
10
|
|
|
12
11
|
class Meta:
|
|
13
12
|
managed = False
|
|
14
|
-
app_label = "canvas_sdk"
|
|
15
13
|
db_table = "canvas_sdk_data_api_staff_001"
|
|
16
14
|
|
|
17
15
|
def __str__(self) -> str:
|
|
@@ -44,7 +42,7 @@ class Staff(models.Model):
|
|
|
44
42
|
active = models.BooleanField()
|
|
45
43
|
# TODO - uncomment when PracticeLocation field is developed
|
|
46
44
|
# primary_practice_location = models.ForeignKey(
|
|
47
|
-
# PracticeLocation, on_delete=models.DO_NOTHING, null=True
|
|
45
|
+
# 'v1.PracticeLocation', on_delete=models.DO_NOTHING, null=True
|
|
48
46
|
# )
|
|
49
47
|
npi_number = models.CharField()
|
|
50
48
|
nadean_number = models.CharField()
|
|
@@ -54,12 +52,12 @@ class Staff(models.Model):
|
|
|
54
52
|
tax_id_type = models.CharField(choices=TaxIDType.choices)
|
|
55
53
|
spi_number = models.CharField()
|
|
56
54
|
# TODO - uncomment when Language is developed
|
|
57
|
-
# language = models.ForeignKey(Language, on_delete=models.DO_NOTHING, related_name="staff_speakers", null=True)
|
|
58
|
-
# language_secondary = models.ForeignKey(Language, on_delete=models.DO_NOTHING, related_name="staff_secondary_speakers", null=True)
|
|
55
|
+
# language = models.ForeignKey('v1.Language', on_delete=models.DO_NOTHING, related_name="staff_speakers", null=True)
|
|
56
|
+
# language_secondary = models.ForeignKey('v1.Language', on_delete=models.DO_NOTHING, related_name="staff_secondary_speakers", null=True)
|
|
59
57
|
personal_meeting_room_link = models.URLField(null=True)
|
|
60
58
|
state = models.JSONField()
|
|
61
|
-
user = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING, null=True)
|
|
59
|
+
user = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
|
|
62
60
|
schedule_column_ordering = models.IntegerField()
|
|
63
61
|
default_supervising_provider = models.ForeignKey(
|
|
64
|
-
"Staff", on_delete=models.DO_NOTHING, related_name="supervising_team", null=True
|
|
62
|
+
"v1.Staff", on_delete=models.DO_NOTHING, related_name="supervising_team", null=True
|
|
65
63
|
)
|
canvas_sdk/v1/data/task.py
CHANGED
|
@@ -2,8 +2,6 @@ from django.contrib.postgres.fields import ArrayField
|
|
|
2
2
|
from django.db import models
|
|
3
3
|
|
|
4
4
|
from canvas_sdk.v1.data.common import ColorEnum, Origin
|
|
5
|
-
from canvas_sdk.v1.data.patient import Patient
|
|
6
|
-
from canvas_sdk.v1.data.staff import Staff
|
|
7
5
|
|
|
8
6
|
|
|
9
7
|
class TaskType(models.TextChoices):
|
|
@@ -39,7 +37,6 @@ class Task(models.Model):
|
|
|
39
37
|
|
|
40
38
|
class Meta:
|
|
41
39
|
managed = False
|
|
42
|
-
app_label = "canvas_sdk"
|
|
43
40
|
db_table = "canvas_sdk_data_api_task_001"
|
|
44
41
|
|
|
45
42
|
id = models.UUIDField()
|
|
@@ -47,15 +44,15 @@ class Task(models.Model):
|
|
|
47
44
|
created = models.DateTimeField()
|
|
48
45
|
modified = models.DateTimeField()
|
|
49
46
|
creator = models.ForeignKey(
|
|
50
|
-
Staff, on_delete=models.DO_NOTHING, related_name="creator_tasks", null=True
|
|
47
|
+
"v1.Staff", on_delete=models.DO_NOTHING, related_name="creator_tasks", null=True
|
|
51
48
|
)
|
|
52
49
|
assignee = models.ForeignKey(
|
|
53
|
-
Staff, on_delete=models.DO_NOTHING, related_name="assignee_tasks", null=True
|
|
50
|
+
"v1.Staff", on_delete=models.DO_NOTHING, related_name="assignee_tasks", null=True
|
|
54
51
|
)
|
|
55
52
|
# TODO - uncomment when Team model is created
|
|
56
|
-
# team = models.ForeignKey(Team, on_delete=models.DO_NOTHING, related_name="tasks", null=True)
|
|
53
|
+
# team = models.ForeignKey('v1.Team', on_delete=models.DO_NOTHING, related_name="tasks", null=True)
|
|
57
54
|
patient = models.ForeignKey(
|
|
58
|
-
Patient, on_delete=models.DO_NOTHING, blank=True, related_name="tasks", null=True
|
|
55
|
+
"v1.Patient", on_delete=models.DO_NOTHING, blank=True, related_name="tasks", null=True
|
|
59
56
|
)
|
|
60
57
|
task_type = models.CharField(choices=TaskType.choices)
|
|
61
58
|
tag = models.CharField()
|
|
@@ -70,7 +67,6 @@ class TaskComment(models.Model):
|
|
|
70
67
|
|
|
71
68
|
class Meta:
|
|
72
69
|
managed = False
|
|
73
|
-
app_label = "canvas_sdk"
|
|
74
70
|
db_table = "canvas_sdk_data_api_taskcomment_001"
|
|
75
71
|
|
|
76
72
|
id = models.UUIDField()
|
|
@@ -78,7 +74,7 @@ class TaskComment(models.Model):
|
|
|
78
74
|
created = models.DateTimeField()
|
|
79
75
|
modified = models.DateTimeField()
|
|
80
76
|
creator = models.ForeignKey(
|
|
81
|
-
Staff, on_delete=models.DO_NOTHING, related_name="comments", null=True
|
|
77
|
+
"v1.Staff", on_delete=models.DO_NOTHING, related_name="comments", null=True
|
|
82
78
|
)
|
|
83
79
|
task = models.ForeignKey(Task, on_delete=models.DO_NOTHING, related_name="comments", null=True)
|
|
84
80
|
body = models.TextField()
|
|
@@ -89,7 +85,6 @@ class TaskLabel(models.Model):
|
|
|
89
85
|
|
|
90
86
|
class Meta:
|
|
91
87
|
managed = False
|
|
92
|
-
app_label = "canvas_sdk"
|
|
93
88
|
db_table = "canvas_sdk_data_api_tasklabel_001"
|
|
94
89
|
|
|
95
90
|
id = models.UUIDField()
|
|
@@ -108,7 +103,6 @@ class TaskTaskLabel(models.Model):
|
|
|
108
103
|
|
|
109
104
|
class Meta:
|
|
110
105
|
managed = False
|
|
111
|
-
app_label = "canvas_sdk"
|
|
112
106
|
db_table = "canvas_sdk_data_api_tasktasklabel_001"
|
|
113
107
|
|
|
114
108
|
dbid = models.BigIntegerField(primary_key=True)
|
canvas_sdk/v1/data/user.py
CHANGED
canvas_sdk/v1/models.py
ADDED