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
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class CareTeamMembershipStatus(models.TextChoices):
|
|
5
|
+
"""CareTeamMembershipStatus."""
|
|
6
|
+
|
|
7
|
+
PROPOSED = "proposed", "Proposed"
|
|
8
|
+
ACTIVE = "active", "Active"
|
|
9
|
+
SUSPENDED = "suspended", "Suspended"
|
|
10
|
+
INACTIVE = "inactive", "Inactive"
|
|
11
|
+
ENTERED_IN_ERROR = "entered-in-error", "Entered in Error"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class CareTeamRole(models.Model):
|
|
15
|
+
"""CareTeamRole."""
|
|
16
|
+
|
|
17
|
+
class Meta:
|
|
18
|
+
managed = False
|
|
19
|
+
db_table = "canvas_sdk_data_api_careteamrole_001"
|
|
20
|
+
|
|
21
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
22
|
+
system = models.CharField()
|
|
23
|
+
version = models.CharField()
|
|
24
|
+
code = models.CharField()
|
|
25
|
+
display = models.CharField()
|
|
26
|
+
user_selected = models.BooleanField()
|
|
27
|
+
active = models.BooleanField()
|
|
28
|
+
|
|
29
|
+
def __str__(self) -> str:
|
|
30
|
+
return self.display
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class CareTeamMembership(models.Model):
|
|
34
|
+
"""CareTeamMembership."""
|
|
35
|
+
|
|
36
|
+
class Meta:
|
|
37
|
+
managed = False
|
|
38
|
+
db_table = "canvas_sdk_data_api_careteammembership_001"
|
|
39
|
+
|
|
40
|
+
id = models.UUIDField()
|
|
41
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
42
|
+
created = models.DateTimeField()
|
|
43
|
+
modified = models.DateTimeField()
|
|
44
|
+
patient = models.ForeignKey(
|
|
45
|
+
"v1.Patient", on_delete=models.DO_NOTHING, related_name="care_team_memberships", null=True
|
|
46
|
+
)
|
|
47
|
+
staff = models.ForeignKey(
|
|
48
|
+
"v1.Staff", on_delete=models.DO_NOTHING, related_name="care_team_memberships", null=True
|
|
49
|
+
)
|
|
50
|
+
role = models.ForeignKey(
|
|
51
|
+
"v1.CareTeamRole", related_name="care_teams", on_delete=models.DO_NOTHING, null=True
|
|
52
|
+
)
|
|
53
|
+
status = models.CharField(choices=CareTeamMembershipStatus.choices)
|
|
54
|
+
lead = models.BooleanField()
|
|
55
|
+
role_code = models.CharField()
|
|
56
|
+
role_system = models.CharField()
|
|
57
|
+
role_display = models.CharField()
|
|
58
|
+
|
|
59
|
+
def __str__(self) -> str:
|
|
60
|
+
return f"id={self.id}"
|
canvas_sdk/v1/data/command.py
CHANGED
|
@@ -1,28 +1,24 @@
|
|
|
1
1
|
from django.apps import apps
|
|
2
2
|
from django.db import models
|
|
3
3
|
|
|
4
|
-
from canvas_sdk.v1.data.patient import Patient
|
|
5
|
-
from canvas_sdk.v1.data.user import CanvasUser
|
|
6
|
-
|
|
7
4
|
|
|
8
5
|
class Command(models.Model):
|
|
9
6
|
"""Command."""
|
|
10
7
|
|
|
11
8
|
class Meta:
|
|
12
9
|
managed = False
|
|
13
|
-
app_label = "canvas_sdk"
|
|
14
10
|
db_table = "canvas_sdk_data_commands_command_001"
|
|
15
11
|
|
|
16
12
|
id = models.UUIDField()
|
|
17
13
|
dbid = models.BigIntegerField(primary_key=True)
|
|
18
14
|
created = models.DateTimeField()
|
|
19
15
|
modified = models.DateTimeField()
|
|
20
|
-
originator = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING, null=True)
|
|
21
|
-
committer = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING, null=True)
|
|
22
|
-
entered_in_error = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING, null=True)
|
|
16
|
+
originator = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
|
|
17
|
+
committer = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
|
|
18
|
+
entered_in_error = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
|
|
23
19
|
state = models.CharField()
|
|
24
|
-
patient = models.ForeignKey(Patient, on_delete=models.DO_NOTHING, null=True)
|
|
25
|
-
|
|
20
|
+
patient = models.ForeignKey("v1.Patient", on_delete=models.DO_NOTHING, null=True)
|
|
21
|
+
note = models.ForeignKey("v1.Note", on_delete=models.DO_NOTHING, related_name="commands")
|
|
26
22
|
schema_key = models.TextField()
|
|
27
23
|
data = models.JSONField()
|
|
28
24
|
origination_source = models.CharField()
|
|
@@ -36,5 +32,7 @@ class Command(models.Model):
|
|
|
36
32
|
"""
|
|
37
33
|
# TODO: Is the anchor object type enough here, or do we need a mapping? The home-app model
|
|
38
34
|
# names might not exactly match the plugins model names.
|
|
39
|
-
anchor_model = apps.get_model(
|
|
35
|
+
anchor_model = apps.get_model(
|
|
36
|
+
app_label=self._meta.app_label, model_name=self.anchor_object_type
|
|
37
|
+
)
|
|
40
38
|
return anchor_model.objects.get(dbid=self.anchor_object_dbid)
|
canvas_sdk/v1/data/common.py
CHANGED
|
@@ -101,3 +101,56 @@ class Origin(models.TextChoices):
|
|
|
101
101
|
FLAGGED_POSTING_REVIEW = ("FLG_PST_REV", "Flagged posting review")
|
|
102
102
|
BATCH_PATIENT_STATEMENTS = ("BAT_PTN_STA", "Batch patient statements")
|
|
103
103
|
INCOMPLETE_COVERAGE = ("INC_COV", "Incomplete Coverage")
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
class ContactPointSystem(models.TextChoices):
|
|
107
|
+
"""ContactPointSystem."""
|
|
108
|
+
|
|
109
|
+
PHONE = "phone", "phone"
|
|
110
|
+
FAX = "fax", "fax"
|
|
111
|
+
EMAIL = "email", "email"
|
|
112
|
+
PAGER = "pager", "pager"
|
|
113
|
+
OTHER = "other", "other"
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
class ContactPointUse(models.TextChoices):
|
|
117
|
+
"""ContactPointUse."""
|
|
118
|
+
|
|
119
|
+
HOME = "home", "Home"
|
|
120
|
+
WORK = "work", "Work"
|
|
121
|
+
TEMP = "temp", "Temp"
|
|
122
|
+
OLD = "old", "Old"
|
|
123
|
+
OTHER = "other", "Other"
|
|
124
|
+
MOBILE = "mobile", "Mobile"
|
|
125
|
+
AUTOMATION = "automation", "Automation"
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
class ContactPointState(models.TextChoices):
|
|
129
|
+
"""ContactPointState."""
|
|
130
|
+
|
|
131
|
+
ACTIVE = "active", "Active"
|
|
132
|
+
DELETED = "deleted", "Deleted"
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
class AddressUse(models.TextChoices):
|
|
136
|
+
"""AddressUse."""
|
|
137
|
+
|
|
138
|
+
HOME = "home", "Home"
|
|
139
|
+
WORK = "work", "Work"
|
|
140
|
+
TEMP = "temp", "Temp"
|
|
141
|
+
OLD = "old", "Old"
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
class AddressType(models.TextChoices):
|
|
145
|
+
"""AddressType."""
|
|
146
|
+
|
|
147
|
+
POSTAL = "postal", "Postal"
|
|
148
|
+
PHYSICAL = "physical", "Physical"
|
|
149
|
+
BOTH = "both", "Both"
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
class AddressState(models.TextChoices):
|
|
153
|
+
"""AddressState."""
|
|
154
|
+
|
|
155
|
+
ACTIVE = "active", "Active"
|
|
156
|
+
DELETED = "deleted", "Deleted"
|
canvas_sdk/v1/data/condition.py
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
|
+
from typing import cast
|
|
2
|
+
|
|
1
3
|
from django.db import models
|
|
2
4
|
from django.db.models import TextChoices
|
|
3
5
|
|
|
4
|
-
from canvas_sdk.v1.data.base import
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
from canvas_sdk.v1.data.base import (
|
|
7
|
+
BaseModelManager,
|
|
8
|
+
BaseQuerySet,
|
|
9
|
+
CommittableQuerySetMixin,
|
|
10
|
+
ForPatientQuerySetMixin,
|
|
11
|
+
ValueSetLookupQuerySetMixin,
|
|
12
|
+
)
|
|
7
13
|
|
|
8
14
|
|
|
9
15
|
class ClinicalStatus(TextChoices):
|
|
@@ -16,29 +22,36 @@ class ClinicalStatus(TextChoices):
|
|
|
16
22
|
INVESTIGATIVE = "investigative", "investigative"
|
|
17
23
|
|
|
18
24
|
|
|
19
|
-
class ConditionQuerySet(
|
|
25
|
+
class ConditionQuerySet(
|
|
26
|
+
BaseQuerySet,
|
|
27
|
+
ValueSetLookupQuerySetMixin,
|
|
28
|
+
CommittableQuerySetMixin,
|
|
29
|
+
ForPatientQuerySetMixin,
|
|
30
|
+
):
|
|
20
31
|
"""ConditionQuerySet."""
|
|
21
32
|
|
|
22
33
|
pass
|
|
23
34
|
|
|
24
35
|
|
|
36
|
+
ConditionManager = BaseModelManager.from_queryset(ConditionQuerySet)
|
|
37
|
+
|
|
38
|
+
|
|
25
39
|
class Condition(models.Model):
|
|
26
40
|
"""Condition."""
|
|
27
41
|
|
|
28
42
|
class Meta:
|
|
29
43
|
managed = False
|
|
30
|
-
app_label = "canvas_sdk"
|
|
31
44
|
db_table = "canvas_sdk_data_api_condition_001"
|
|
32
45
|
|
|
33
|
-
objects = ConditionQuerySet
|
|
46
|
+
objects = cast(ConditionQuerySet, ConditionManager())
|
|
34
47
|
|
|
35
48
|
id = models.UUIDField()
|
|
36
49
|
dbid = models.BigIntegerField(primary_key=True)
|
|
37
50
|
deleted = models.BooleanField()
|
|
38
|
-
entered_in_error = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING, null=True)
|
|
39
|
-
committer = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING, null=True)
|
|
51
|
+
entered_in_error = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
|
|
52
|
+
committer = 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="conditions", null=True
|
|
54
|
+
"v1.Patient", on_delete=models.DO_NOTHING, related_name="conditions", null=True
|
|
42
55
|
)
|
|
43
56
|
onset_date = models.DateField()
|
|
44
57
|
resolution_date = models.DateField()
|
|
@@ -50,7 +63,6 @@ class ConditionCoding(models.Model):
|
|
|
50
63
|
|
|
51
64
|
class Meta:
|
|
52
65
|
managed = False
|
|
53
|
-
app_label = "canvas_sdk"
|
|
54
66
|
db_table = "canvas_sdk_data_api_conditioncoding_001"
|
|
55
67
|
|
|
56
68
|
dbid = models.BigIntegerField(primary_key=True)
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
from django.contrib.postgres.fields import ArrayField
|
|
2
|
+
from django.db import models
|
|
3
|
+
|
|
4
|
+
from canvas_sdk.v1.data.common import (
|
|
5
|
+
AddressState,
|
|
6
|
+
AddressType,
|
|
7
|
+
AddressUse,
|
|
8
|
+
ContactPointState,
|
|
9
|
+
ContactPointSystem,
|
|
10
|
+
ContactPointUse,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class CoverageStack(models.TextChoices):
|
|
15
|
+
"""CoverageStack."""
|
|
16
|
+
|
|
17
|
+
IN_USE = "IN_USE", "In use"
|
|
18
|
+
OTHER = "OTHER", "Other"
|
|
19
|
+
REMOVED = "REMOVED", "Removed"
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class CoverageState(models.TextChoices):
|
|
23
|
+
"""CoverageState."""
|
|
24
|
+
|
|
25
|
+
ACTIVE = "active", "Active"
|
|
26
|
+
DELETED = "deleted", "Deleted"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class CoverageType(models.TextChoices):
|
|
30
|
+
"""CoverageType."""
|
|
31
|
+
|
|
32
|
+
COMMERCIAL = "commercial", "Commercial"
|
|
33
|
+
WORKERS_COMP = "workerscomp", "Workers Comp"
|
|
34
|
+
BCBS = "bcbs", "Blue Cross Blue Shield"
|
|
35
|
+
TRICARE = "champus", "Tricare/Champus"
|
|
36
|
+
MEDICAID = "medicaid", "Medicaid"
|
|
37
|
+
MEDICARE = "medicare", "Medicare"
|
|
38
|
+
OTHER = "other", "Other"
|
|
39
|
+
TPA = "tpa", "Third Party Administrator"
|
|
40
|
+
MVA = "motorvehicle", "Motor Vehicle"
|
|
41
|
+
LIEN = "lien", "Attorney/Lien"
|
|
42
|
+
PIP = "pip", "Personal Injury"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class CoverageRelationshipCode(models.TextChoices):
|
|
46
|
+
"""CoverageRelationshipCode."""
|
|
47
|
+
|
|
48
|
+
SELF = "18", "Self"
|
|
49
|
+
SPOUSE = "01" "Spouse"
|
|
50
|
+
CHILD_INSURED_HAS_FINANCIAL_RESP = "19", "Natural Child, insured has financial responsibility"
|
|
51
|
+
CHILD_HAS_FINANCIAL_RESP = "43", "Natural Child, insured does not have financial responsibility"
|
|
52
|
+
STEP_CHILD = "17", "Step Child"
|
|
53
|
+
FOSTER_CHILD = "10", "Foster Child"
|
|
54
|
+
WARD_OF_COURT = "15", "Ward of the Court"
|
|
55
|
+
EMPLOYEE = "20", "Employee"
|
|
56
|
+
UNKNOWN = "21", "Unknown"
|
|
57
|
+
HANDICAPPED_DEPENDENT = "22", "Handicapped Dependent"
|
|
58
|
+
ORGAN_DONOR = "39", "Organ donor"
|
|
59
|
+
CADAVER_DONOR = "40", "Cadaver donor"
|
|
60
|
+
GRANDCHILD = "05", "Grandchild"
|
|
61
|
+
NIECE_NEPHEW = "07", "Niece/Nephew"
|
|
62
|
+
INJURED_PLAINTIFF = "41", "Injured Plaintiff"
|
|
63
|
+
SPONSORED_DEPENDENT = "23", "Sponsored Dependent"
|
|
64
|
+
MINOR_DEP_OF_MINOR_DEP = "24", "Minor Dependent of a Minor Dependent"
|
|
65
|
+
MOTHER = "32", "Mother"
|
|
66
|
+
FATHER = "33", "Father"
|
|
67
|
+
GRANDPARENT = "04", "Grandparent"
|
|
68
|
+
LIFE_PARTNER = "53", "Life Partner"
|
|
69
|
+
SIGNIFICANT_OTHER = "29", "Significant Other"
|
|
70
|
+
OTHER = "G8", "Other"
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class TransactorCoverageType(models.TextChoices):
|
|
74
|
+
"""TransactorCoverageType."""
|
|
75
|
+
|
|
76
|
+
ANNU = "ANNU", "annuity policy"
|
|
77
|
+
AUTOPOL = "AUTOPOL", "automobile"
|
|
78
|
+
CHAR = "CHAR", "charity program"
|
|
79
|
+
COL = "COL", "collision coverage policy"
|
|
80
|
+
CRIME = "CRIME", "crime victim program"
|
|
81
|
+
DENTAL = "DENTAL", "dental care policy"
|
|
82
|
+
DENTPRG = "DENTPRG", "dental program"
|
|
83
|
+
DIS = "DIS", "disability insurance policy"
|
|
84
|
+
DISEASE = "DISEASE", "disease specific policy"
|
|
85
|
+
DRUGPOL = "DRUGPOL", "drug policy"
|
|
86
|
+
EAP = "EAP", "employee assistance program"
|
|
87
|
+
EWB = "EWB", "employee welfare benefit plan policy"
|
|
88
|
+
ENDRENAL = "ENDRENAL", "end renal program"
|
|
89
|
+
EHCPOL = "EHCPOL", "extended healthcare"
|
|
90
|
+
FLEXP = "FLEXP", "flexible benefit plan policy"
|
|
91
|
+
GOVEMP = "GOVEMP", "government employee health program"
|
|
92
|
+
HIP = "HIP", "health insurance plan policy"
|
|
93
|
+
HMO = "HMO", "health maintenance organization policy"
|
|
94
|
+
HSAPOL = "HSAPOL", "health spending account"
|
|
95
|
+
HIRISK = "HIRISK", "high risk pool program"
|
|
96
|
+
HIVAIDS = "HIVAIDS", "HIV-AIDS program"
|
|
97
|
+
IND = "IND", "indigenous peoples health program"
|
|
98
|
+
LIFE = "LIFE", "life insurance policy"
|
|
99
|
+
LTC = "LTC", "long term care policy"
|
|
100
|
+
MCPOL = "MCPOL", "managed care policy"
|
|
101
|
+
MANDPOL = "MANDPOL", "mandatory health program"
|
|
102
|
+
MENTPOL = "MENTPOL", "mental health policy"
|
|
103
|
+
MENTPRG = "MENTPRG", "mental health program"
|
|
104
|
+
MILITARY = "MILITARY", "military health program"
|
|
105
|
+
PAY = "pay", "Pay"
|
|
106
|
+
POS = "POS", "point of service policy"
|
|
107
|
+
PPO = "PPO", "preferred provider organization policy"
|
|
108
|
+
PNC = "PNC", "property and casualty insurance policy"
|
|
109
|
+
DISEASEPRG = "DISEASEPRG", "public health program"
|
|
110
|
+
PUBLICPOL = "PUBLICPOL", "public healthcare"
|
|
111
|
+
REI = "REI", "reinsurance policy"
|
|
112
|
+
RETIRE = "RETIRE", "retiree health program"
|
|
113
|
+
SAFNET = "SAFNET", "safety net clinic program"
|
|
114
|
+
SOCIAL = "SOCIAL", "social service program"
|
|
115
|
+
SUBSIDIZ = "SUBSIDIZ", "subsidized health program"
|
|
116
|
+
SUBSIDMC = "SUBSIDMC", "subsidized managed care program"
|
|
117
|
+
SUBSUPP = "SUBSUPP", "subsidized supplemental health program"
|
|
118
|
+
SUBPOL = "SUBPOL", "substance use policy"
|
|
119
|
+
SUBPRG = "SUBPRG", "substance use program"
|
|
120
|
+
SURPL = "SURPL", "surplus line insurance policy"
|
|
121
|
+
TLIFE = "TLIFE", "term life insurance policy"
|
|
122
|
+
UMBRL = "UMBRL", "umbrella liability insurance policy"
|
|
123
|
+
UNINSMOT = "UNINSMOT", "uninsured motorist policy"
|
|
124
|
+
ULIFE = "ULIFE", "universal life insurance policy"
|
|
125
|
+
VET = "VET", "veteran health program"
|
|
126
|
+
VISPOL = "VISPOL", "vision care policy"
|
|
127
|
+
CANPRG = "CANPRG", "women's cancer detection program"
|
|
128
|
+
WCBPOL = "WCBPOL", "worker's compensation"
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
class TransactorType(models.TextChoices):
|
|
132
|
+
"""TransactorType."""
|
|
133
|
+
|
|
134
|
+
COMMERCIAL = "commercial", "Commercial"
|
|
135
|
+
WORKERS_COMP = "workerscomp", "Workers Comp"
|
|
136
|
+
TRICARE = "champus", "Tricare/Champus"
|
|
137
|
+
MEDICAID = "medicaid", "Medicaid"
|
|
138
|
+
MEDICARE = "medicare", "Medicare"
|
|
139
|
+
MEDICARE_ADVANTAGE = "medicare_advantage", "Medicare Advantage"
|
|
140
|
+
CHIP = "CHIP", "CHIP"
|
|
141
|
+
AUTO = "automobile", "Automobile"
|
|
142
|
+
EMPLOYER = "employer", "Employer"
|
|
143
|
+
DIRECT_CARE = "direct_care", "Direct Care"
|
|
144
|
+
BCBS = "bcbs", "Blue Cross Blue Shield"
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
class Coverage(models.Model):
|
|
148
|
+
"""Coverage."""
|
|
149
|
+
|
|
150
|
+
class Meta:
|
|
151
|
+
managed = False
|
|
152
|
+
db_table = "canvas_sdk_data_api_coverage_001"
|
|
153
|
+
|
|
154
|
+
id = models.UUIDField()
|
|
155
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
156
|
+
created = models.DateTimeField()
|
|
157
|
+
modified = models.DateTimeField()
|
|
158
|
+
patient = models.ForeignKey(
|
|
159
|
+
"v1.Patient", on_delete=models.DO_NOTHING, related_name="coverages", null=True
|
|
160
|
+
)
|
|
161
|
+
guarantor = models.ForeignKey(
|
|
162
|
+
"v1.Patient", on_delete=models.DO_NOTHING, related_name="dependent_coverages", null=True
|
|
163
|
+
)
|
|
164
|
+
subscriber = models.ForeignKey(
|
|
165
|
+
"v1.Patient", on_delete=models.DO_NOTHING, related_name="subscribed_coverages", null=True
|
|
166
|
+
)
|
|
167
|
+
patient_relationship_to_subscriber = models.CharField(choices=CoverageRelationshipCode.choices)
|
|
168
|
+
issuer = models.ForeignKey(
|
|
169
|
+
"v1.Transactor", on_delete=models.DO_NOTHING, related_name="coverages", null=True
|
|
170
|
+
)
|
|
171
|
+
id_number = models.CharField()
|
|
172
|
+
plan = models.CharField()
|
|
173
|
+
sub_plan = models.CharField()
|
|
174
|
+
group = models.CharField()
|
|
175
|
+
sub_group = models.CharField()
|
|
176
|
+
employer = models.CharField()
|
|
177
|
+
coverage_start_date = models.DateField()
|
|
178
|
+
coverage_end_date = models.DateField()
|
|
179
|
+
coverage_rank = models.IntegerField()
|
|
180
|
+
state = models.CharField(choices=CoverageState.choices)
|
|
181
|
+
plan_type = models.CharField(choices=CoverageType.choices)
|
|
182
|
+
coverage_type = models.CharField(choices=TransactorCoverageType.choices)
|
|
183
|
+
issuer_address = models.ForeignKey(
|
|
184
|
+
"v1.TransactorAddress",
|
|
185
|
+
on_delete=models.DO_NOTHING,
|
|
186
|
+
related_name="coverages",
|
|
187
|
+
null=True,
|
|
188
|
+
)
|
|
189
|
+
issuer_phone = models.ForeignKey(
|
|
190
|
+
"v1.TransactorPhone", on_delete=models.DO_NOTHING, related_name="coverages", null=True
|
|
191
|
+
)
|
|
192
|
+
comments = models.TextField()
|
|
193
|
+
stack = models.CharField(choices=CoverageStack.choices)
|
|
194
|
+
|
|
195
|
+
def __str__(self) -> str:
|
|
196
|
+
return f"id={self.id}"
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
class Transactor(models.Model):
|
|
200
|
+
"""Transactor."""
|
|
201
|
+
|
|
202
|
+
class Meta:
|
|
203
|
+
managed = False
|
|
204
|
+
db_table = "canvas_sdk_data_quality_and_revenue_transactor_001"
|
|
205
|
+
|
|
206
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
207
|
+
payer_id = models.CharField()
|
|
208
|
+
name = models.CharField()
|
|
209
|
+
type = models.CharField()
|
|
210
|
+
transactor_type = models.CharField(choices=TransactorType.choices)
|
|
211
|
+
clearinghouse_payer = models.BooleanField()
|
|
212
|
+
institutional = models.BooleanField(null=True)
|
|
213
|
+
institutional_enrollment_req = models.BooleanField(null=True)
|
|
214
|
+
professional = models.BooleanField(null=True)
|
|
215
|
+
professional_enrollment_req = models.BooleanField(null=True)
|
|
216
|
+
era = models.BooleanField(null=True)
|
|
217
|
+
era_enrollment_req = models.BooleanField(null=True)
|
|
218
|
+
eligibility = models.BooleanField(null=True)
|
|
219
|
+
eligibility_enrollment_req = models.BooleanField(null=True)
|
|
220
|
+
workers_comp = models.BooleanField(null=True)
|
|
221
|
+
secondary_support = models.BooleanField(null=True)
|
|
222
|
+
claim_fee = models.BooleanField(null=True)
|
|
223
|
+
remit_fee = models.BooleanField(null=True)
|
|
224
|
+
state = models.CharField()
|
|
225
|
+
description = models.CharField()
|
|
226
|
+
active = models.BooleanField()
|
|
227
|
+
use_provider_for_eligibility = models.BooleanField()
|
|
228
|
+
|
|
229
|
+
use_for_submission = models.ForeignKey(
|
|
230
|
+
"v1.Transactor",
|
|
231
|
+
on_delete=models.DO_NOTHING,
|
|
232
|
+
null=True,
|
|
233
|
+
related_name="used_for_submission_by",
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
coverage_types = ArrayField(models.CharField(choices=TransactorCoverageType.choices))
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
class TransactorAddress(models.Model):
|
|
240
|
+
"""TransactorAddress."""
|
|
241
|
+
|
|
242
|
+
class Meta:
|
|
243
|
+
managed = False
|
|
244
|
+
db_table = "canvas_sdk_data_quality_and_revenue_transactoraddress_001"
|
|
245
|
+
|
|
246
|
+
id = models.UUIDField()
|
|
247
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
248
|
+
created = models.DateTimeField()
|
|
249
|
+
modified = models.DateTimeField()
|
|
250
|
+
line1 = models.CharField()
|
|
251
|
+
line2 = models.CharField()
|
|
252
|
+
city = models.CharField()
|
|
253
|
+
district = models.CharField()
|
|
254
|
+
state_code = models.CharField()
|
|
255
|
+
postal_code = models.CharField()
|
|
256
|
+
use = models.CharField(choices=AddressUse.choices)
|
|
257
|
+
type = models.CharField(choices=AddressType.choices)
|
|
258
|
+
longitude = models.FloatField(null=True, default=None, blank=True)
|
|
259
|
+
latitude = models.FloatField(null=True, default=None, blank=True)
|
|
260
|
+
start = models.DateField(null=True, blank=True)
|
|
261
|
+
end = models.DateField(null=True, blank=True)
|
|
262
|
+
country = models.CharField(max_length=255)
|
|
263
|
+
state = models.CharField(choices=AddressState.choices)
|
|
264
|
+
transactor = models.ForeignKey(
|
|
265
|
+
"v1.Transactor", on_delete=models.DO_NOTHING, related_name="addresses", null=True
|
|
266
|
+
)
|
|
267
|
+
|
|
268
|
+
def __str__(self) -> str:
|
|
269
|
+
return f"id={self.id}"
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
class TransactorPhone(models.Model):
|
|
273
|
+
"""TransactorPhone."""
|
|
274
|
+
|
|
275
|
+
class Meta:
|
|
276
|
+
managed = False
|
|
277
|
+
db_table = "canvas_sdk_data_quality_and_revenue_transactorphone_001"
|
|
278
|
+
|
|
279
|
+
id = models.UUIDField()
|
|
280
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
281
|
+
created = models.DateTimeField()
|
|
282
|
+
modified = models.DateTimeField()
|
|
283
|
+
system = models.CharField(choices=ContactPointSystem.choices)
|
|
284
|
+
value = models.CharField()
|
|
285
|
+
use = models.CharField(choices=ContactPointUse.choices)
|
|
286
|
+
use_notes = models.CharField()
|
|
287
|
+
rank = models.IntegerField()
|
|
288
|
+
state = models.CharField(choices=ContactPointState.choices)
|
|
289
|
+
transactor = models.ForeignKey(
|
|
290
|
+
"v1.Transactor", on_delete=models.DO_NOTHING, related_name="phones", null=True
|
|
291
|
+
)
|
|
292
|
+
|
|
293
|
+
def __str__(self) -> str:
|
|
294
|
+
return f"id={self.id}"
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
from django.db import models
|
|
2
2
|
|
|
3
|
-
from canvas_sdk.v1.data import Patient
|
|
4
|
-
from canvas_sdk.v1.data.user import CanvasUser
|
|
5
|
-
|
|
6
3
|
|
|
7
4
|
class DetectedIssue(models.Model):
|
|
8
5
|
"""DetectedIssue."""
|
|
9
6
|
|
|
10
7
|
class Meta:
|
|
11
8
|
managed = False
|
|
12
|
-
app_label = "canvas_sdk"
|
|
13
9
|
db_table = "canvas_sdk_data_api_detectedissue_001"
|
|
14
10
|
|
|
15
11
|
id = models.UUIDField()
|
|
@@ -18,11 +14,11 @@ class DetectedIssue(models.Model):
|
|
|
18
14
|
modified = models.DateTimeField()
|
|
19
15
|
identified = models.DateTimeField()
|
|
20
16
|
deleted = models.BooleanField()
|
|
21
|
-
originator = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING, null=True)
|
|
22
|
-
committer = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING, null=True)
|
|
23
|
-
entered_in_error = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING, null=True)
|
|
17
|
+
originator = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
|
|
18
|
+
committer = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
|
|
19
|
+
entered_in_error = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
|
|
24
20
|
patient = models.ForeignKey(
|
|
25
|
-
Patient, on_delete=models.DO_NOTHING, related_name="detected_issues", null=True
|
|
21
|
+
"v1.Patient", on_delete=models.DO_NOTHING, related_name="detected_issues", null=True
|
|
26
22
|
)
|
|
27
23
|
code = models.CharField()
|
|
28
24
|
status = models.CharField()
|
|
@@ -38,9 +34,9 @@ class DetectedIssueEvidence(models.Model):
|
|
|
38
34
|
|
|
39
35
|
class Meta:
|
|
40
36
|
managed = False
|
|
41
|
-
app_label = "canvas_sdk"
|
|
42
37
|
db_table = "canvas_sdk_data_api_detectedissueevidence_001"
|
|
43
38
|
|
|
39
|
+
id = models.UUIDField()
|
|
44
40
|
dbid = models.BigIntegerField(primary_key=True)
|
|
45
41
|
system = models.CharField()
|
|
46
42
|
version = models.CharField()
|
canvas_sdk/v1/data/device.py
CHANGED
|
@@ -1,26 +1,22 @@
|
|
|
1
1
|
from django.db import models
|
|
2
2
|
|
|
3
|
-
from canvas_sdk.v1.data import Patient
|
|
4
|
-
from canvas_sdk.v1.data.user import CanvasUser
|
|
5
|
-
|
|
6
3
|
|
|
7
4
|
class Device(models.Model):
|
|
8
5
|
"""Device."""
|
|
9
6
|
|
|
10
7
|
class Meta:
|
|
11
8
|
managed = False
|
|
12
|
-
app_label = "canvas_sdk"
|
|
13
9
|
db_table = "canvas_sdk_data_api_device_001"
|
|
14
10
|
|
|
15
11
|
id = models.UUIDField()
|
|
16
12
|
dbid = models.BigIntegerField(primary_key=True)
|
|
17
13
|
created = models.DateTimeField()
|
|
18
14
|
modified = models.DateTimeField()
|
|
19
|
-
originator = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING, null=True)
|
|
20
|
-
committer = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING, null=True)
|
|
21
|
-
entered_in_error = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING, null=True)
|
|
15
|
+
originator = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
|
|
16
|
+
committer = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
|
|
17
|
+
entered_in_error = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
|
|
22
18
|
patient = models.ForeignKey(
|
|
23
|
-
Patient, on_delete=models.DO_NOTHING, related_name="devices", null=True
|
|
19
|
+
"v1.Patient", on_delete=models.DO_NOTHING, related_name="devices", null=True
|
|
24
20
|
)
|
|
25
21
|
note_id = models.BigIntegerField()
|
|
26
22
|
deleted = models.BooleanField()
|