canvas 0.1.15__py3-none-any.whl → 0.2.10__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.1.15.dist-info → canvas-0.2.10.dist-info}/METADATA +7 -1
- canvas-0.2.10.dist-info/RECORD +143 -0
- canvas_cli/apps/plugin/plugin.py +51 -9
- canvas_cli/apps/plugin/tests.py +51 -0
- canvas_cli/tests.py +193 -4
- canvas_cli/utils/validators/manifest_schema.py +1 -0
- canvas_generated/messages/effects_pb2.py +2 -2
- canvas_generated/messages/effects_pb2.pyi +138 -0
- canvas_generated/messages/events_pb2.py +3 -3
- canvas_generated/messages/events_pb2.pyi +616 -0
- canvas_sdk/__init__.py +7 -0
- canvas_sdk/base.py +6 -2
- canvas_sdk/commands/__init__.py +26 -0
- canvas_sdk/commands/base.py +35 -32
- canvas_sdk/commands/commands/allergy.py +49 -0
- canvas_sdk/commands/commands/assess.py +1 -1
- canvas_sdk/commands/commands/close_goal.py +22 -0
- canvas_sdk/commands/commands/diagnose.py +3 -3
- canvas_sdk/commands/commands/family_history.py +18 -0
- canvas_sdk/commands/commands/goal.py +3 -3
- canvas_sdk/commands/commands/history_present_illness.py +1 -1
- canvas_sdk/commands/commands/instruct.py +17 -0
- canvas_sdk/commands/commands/lab_order.py +33 -0
- canvas_sdk/commands/commands/medical_history.py +34 -0
- canvas_sdk/commands/commands/medication_statement.py +1 -1
- canvas_sdk/commands/commands/past_surgical_history.py +28 -0
- canvas_sdk/commands/commands/perform.py +17 -0
- canvas_sdk/commands/commands/plan.py +2 -2
- canvas_sdk/commands/commands/prescribe.py +10 -7
- canvas_sdk/commands/commands/questionnaire.py +1 -1
- canvas_sdk/commands/commands/refill.py +16 -0
- canvas_sdk/commands/commands/remove_allergy.py +26 -0
- canvas_sdk/commands/commands/stop_medication.py +1 -1
- canvas_sdk/commands/commands/task.py +52 -0
- canvas_sdk/commands/commands/update_diagnosis.py +27 -0
- canvas_sdk/commands/commands/update_goal.py +1 -1
- canvas_sdk/commands/commands/vitals.py +78 -0
- canvas_sdk/commands/constants.py +7 -0
- canvas_sdk/commands/tests/protocol/__init__.py +0 -0
- canvas_sdk/commands/tests/protocol/tests.py +55 -0
- canvas_sdk/commands/tests/schema/__init__.py +0 -0
- canvas_sdk/commands/tests/schema/tests.py +104 -0
- canvas_sdk/commands/tests/test_utils.py +170 -6
- canvas_sdk/commands/tests/unit/__init__.py +0 -0
- canvas_sdk/commands/tests/{tests.py → unit/tests.py} +20 -194
- canvas_sdk/data/client.py +82 -0
- canvas_sdk/data/patient.py +1 -21
- canvas_sdk/effects/banner_alert/add_banner_alert.py +8 -7
- canvas_sdk/effects/banner_alert/remove_banner_alert.py +3 -2
- canvas_sdk/effects/banner_alert/tests.py +224 -0
- canvas_sdk/effects/base.py +3 -5
- canvas_sdk/effects/patient_chart_summary_configuration.py +39 -0
- canvas_sdk/effects/protocol_card/__init__.py +1 -0
- canvas_sdk/effects/protocol_card/protocol_card.py +83 -0
- canvas_sdk/effects/protocol_card/tests.py +184 -0
- canvas_sdk/handlers/base.py +14 -1
- canvas_sdk/protocols/base.py +14 -0
- canvas_sdk/protocols/clinical_quality_measure.py +41 -0
- canvas_sdk/utils/db.py +17 -0
- canvas_sdk/v1/__init__.py +0 -0
- canvas_sdk/v1/data/__init__.py +3 -0
- canvas_sdk/v1/data/allergy_intolerance.py +63 -0
- canvas_sdk/v1/data/base.py +47 -0
- canvas_sdk/v1/data/condition.py +48 -0
- canvas_sdk/v1/data/lab.py +96 -0
- canvas_sdk/v1/data/medication.py +54 -0
- canvas_sdk/v1/data/patient.py +49 -0
- canvas_sdk/v1/data/user.py +10 -0
- canvas_sdk/value_set/tests/test_value_sets.py +65 -0
- canvas_sdk/value_set/v2022/adverse_event.py +33 -0
- canvas_sdk/value_set/v2022/allergy.py +232 -0
- canvas_sdk/value_set/v2022/assessment.py +215 -0
- canvas_sdk/value_set/v2022/communication.py +325 -0
- canvas_sdk/value_set/v2022/condition.py +40654 -0
- canvas_sdk/value_set/v2022/device.py +174 -0
- canvas_sdk/value_set/v2022/diagnostic_study.py +4967 -0
- canvas_sdk/value_set/v2022/encounter.py +2564 -0
- canvas_sdk/value_set/v2022/immunization.py +341 -0
- canvas_sdk/value_set/v2022/individual_characteristic.py +307 -0
- canvas_sdk/value_set/v2022/intervention.py +1356 -0
- canvas_sdk/value_set/v2022/laboratory_test.py +1250 -0
- canvas_sdk/value_set/v2022/medication.py +5130 -0
- canvas_sdk/value_set/v2022/physical_exam.py +201 -0
- canvas_sdk/value_set/v2022/procedure.py +4037 -0
- canvas_sdk/value_set/v2022/symptom.py +176 -0
- canvas_sdk/value_set/value_set.py +91 -0
- canvas-0.1.15.dist-info/RECORD +0 -95
- canvas_generated/data_access_layer/data_access_layer_pb2.py +0 -30
- canvas_generated/data_access_layer/data_access_layer_pb2.pyi +0 -23
- canvas_generated/data_access_layer/data_access_layer_pb2_grpc.py +0 -66
- canvas_sdk/data/data_access_layer_client.py +0 -95
- canvas_sdk/data/exceptions.py +0 -16
- {canvas-0.1.15.dist-info → canvas-0.2.10.dist-info}/WHEEL +0 -0
- {canvas-0.1.15.dist-info → canvas-0.2.10.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
from django.contrib.postgres.fields import ArrayField
|
|
2
|
+
from django.db import models
|
|
3
|
+
|
|
4
|
+
from canvas_sdk.v1.data.base import CommittableModelManager
|
|
5
|
+
from canvas_sdk.v1.data.patient import Patient
|
|
6
|
+
from canvas_sdk.v1.data.user import CanvasUser
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class AllergyIntolerance(models.Model):
|
|
10
|
+
"""AllergyIntolerance."""
|
|
11
|
+
|
|
12
|
+
class Meta:
|
|
13
|
+
managed = False
|
|
14
|
+
app_label = "canvas_sdk"
|
|
15
|
+
db_table = "canvas_sdk_data_api_allergyintolerance_001"
|
|
16
|
+
|
|
17
|
+
objects = CommittableModelManager()
|
|
18
|
+
|
|
19
|
+
id = models.UUIDField()
|
|
20
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
21
|
+
created = models.DateTimeField()
|
|
22
|
+
modified = models.DateTimeField()
|
|
23
|
+
editors = ArrayField(models.IntegerField())
|
|
24
|
+
deleted = models.BooleanField()
|
|
25
|
+
committer = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING)
|
|
26
|
+
entered_in_error = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING)
|
|
27
|
+
patient = models.ForeignKey(
|
|
28
|
+
Patient,
|
|
29
|
+
on_delete=models.DO_NOTHING,
|
|
30
|
+
related_name="allergy_intolerances",
|
|
31
|
+
)
|
|
32
|
+
note_id = models.BigIntegerField()
|
|
33
|
+
allergy_intolerance_type = models.CharField()
|
|
34
|
+
category = models.IntegerField()
|
|
35
|
+
status = models.CharField()
|
|
36
|
+
severity = models.CharField()
|
|
37
|
+
onset_date = models.DateField()
|
|
38
|
+
onset_date_original_input = models.CharField()
|
|
39
|
+
last_occurrence = models.DateField()
|
|
40
|
+
last_occurrence_original_input = models.CharField()
|
|
41
|
+
recorded_date = models.DateTimeField()
|
|
42
|
+
narrative = models.CharField()
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class AllergyIntoleranceCoding(models.Model):
|
|
46
|
+
"""AllergyIntoleranceCoding."""
|
|
47
|
+
|
|
48
|
+
class Meta:
|
|
49
|
+
managed = False
|
|
50
|
+
app_label = "canvas_sdk"
|
|
51
|
+
db_table = "canvas_sdk_data_api_allergyintolerancecoding_001"
|
|
52
|
+
|
|
53
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
54
|
+
system = models.CharField()
|
|
55
|
+
version = models.CharField()
|
|
56
|
+
code = models.CharField()
|
|
57
|
+
display = models.CharField()
|
|
58
|
+
user_selected = models.BooleanField()
|
|
59
|
+
allergy_intolerance = models.ForeignKey(
|
|
60
|
+
AllergyIntolerance,
|
|
61
|
+
on_delete=models.DO_NOTHING,
|
|
62
|
+
related_name="codings",
|
|
63
|
+
)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING, Type
|
|
2
|
+
|
|
3
|
+
from django.db import models
|
|
4
|
+
from django.db.models import Q
|
|
5
|
+
|
|
6
|
+
if TYPE_CHECKING:
|
|
7
|
+
from canvas_sdk.value_set.value_set import ValueSet
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class CommittableModelManager(models.Manager):
|
|
11
|
+
def get_queryset(self) -> "models.QuerySet":
|
|
12
|
+
# TODO: Should we just filter these out at the view level?
|
|
13
|
+
return super().get_queryset().filter(deleted=False)
|
|
14
|
+
|
|
15
|
+
def committed(self) -> "models.QuerySet":
|
|
16
|
+
# The committer_id IS set, and the entered_in_error_id IS NOT set
|
|
17
|
+
return self.filter(committer_id__isnull=False, entered_in_error_id__isnull=True)
|
|
18
|
+
|
|
19
|
+
def for_patient(self, patient_id: str) -> "models.QuerySet":
|
|
20
|
+
return self.filter(patient__id=patient_id)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class ValueSetLookupQuerySet(models.QuerySet):
|
|
24
|
+
def find(self, value_set: Type["ValueSet"]) -> models.QuerySet:
|
|
25
|
+
"""
|
|
26
|
+
Filters conditions, medications, etc. to those found in the inherited ValueSet class that is passed.
|
|
27
|
+
|
|
28
|
+
For example:
|
|
29
|
+
|
|
30
|
+
from canvas_sdk.v1.data.condition import Condition
|
|
31
|
+
from canvas_sdk.value_set.v2022.condition import MorbidObesity
|
|
32
|
+
morbid_obesity_conditions = Condition.objects.find(MorbidObesity)
|
|
33
|
+
|
|
34
|
+
This method can also be chained like so:
|
|
35
|
+
|
|
36
|
+
Condition.objects.find(MorbidObesity).find(AnaphylacticReactionToCommonBakersYeast)
|
|
37
|
+
"""
|
|
38
|
+
values_dict = value_set.values
|
|
39
|
+
uri_codes = [
|
|
40
|
+
(i[1], values_dict[i[0]])
|
|
41
|
+
for i in value_set.CODE_SYSTEM_MAPPING.items()
|
|
42
|
+
if i[0] in values_dict
|
|
43
|
+
]
|
|
44
|
+
q_filter = Q()
|
|
45
|
+
for system, codes in uri_codes:
|
|
46
|
+
q_filter |= Q(codings__system=system, codings__code__in=codes)
|
|
47
|
+
return self.filter(q_filter).distinct()
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
from canvas_sdk.v1.data.base import CommittableModelManager, ValueSetLookupQuerySet
|
|
4
|
+
from canvas_sdk.v1.data.patient import Patient
|
|
5
|
+
from canvas_sdk.v1.data.user import CanvasUser
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ConditionQuerySet(ValueSetLookupQuerySet):
|
|
9
|
+
"""ConditionQuerySet."""
|
|
10
|
+
|
|
11
|
+
pass
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class Condition(models.Model):
|
|
15
|
+
"""Condition."""
|
|
16
|
+
|
|
17
|
+
class Meta:
|
|
18
|
+
managed = False
|
|
19
|
+
app_label = "canvas_sdk"
|
|
20
|
+
db_table = "canvas_sdk_data_api_condition_001"
|
|
21
|
+
|
|
22
|
+
objects = CommittableModelManager.from_queryset(ConditionQuerySet)()
|
|
23
|
+
|
|
24
|
+
id = models.UUIDField()
|
|
25
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
26
|
+
onset_date = models.DateField()
|
|
27
|
+
resolution_date = models.DateField()
|
|
28
|
+
deleted = models.BooleanField()
|
|
29
|
+
entered_in_error = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING)
|
|
30
|
+
committer = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING)
|
|
31
|
+
patient = models.ForeignKey(Patient, on_delete=models.DO_NOTHING, related_name="conditions")
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class ConditionCoding(models.Model):
|
|
35
|
+
"""ConditionCoding."""
|
|
36
|
+
|
|
37
|
+
class Meta:
|
|
38
|
+
managed = False
|
|
39
|
+
app_label = "canvas_sdk"
|
|
40
|
+
db_table = "canvas_sdk_data_api_conditioncoding_001"
|
|
41
|
+
|
|
42
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
43
|
+
system = models.CharField()
|
|
44
|
+
version = models.CharField()
|
|
45
|
+
code = models.CharField()
|
|
46
|
+
display = models.CharField()
|
|
47
|
+
user_selected = models.BooleanField()
|
|
48
|
+
condition = models.ForeignKey(Condition, on_delete=models.DO_NOTHING, related_name="codings")
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
from canvas_sdk.v1.data.base import CommittableModelManager
|
|
4
|
+
from canvas_sdk.v1.data.patient import Patient
|
|
5
|
+
from canvas_sdk.v1.data.user import CanvasUser
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class LabReport(models.Model):
|
|
9
|
+
class Meta:
|
|
10
|
+
managed = False
|
|
11
|
+
app_label = "canvas_sdk"
|
|
12
|
+
db_table = "canvas_sdk_data_api_labreport_001"
|
|
13
|
+
|
|
14
|
+
objects = CommittableModelManager()
|
|
15
|
+
|
|
16
|
+
id = models.UUIDField()
|
|
17
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
18
|
+
created = models.DateTimeField()
|
|
19
|
+
modified = models.DateTimeField()
|
|
20
|
+
review_mode = models.CharField()
|
|
21
|
+
junked = models.BooleanField()
|
|
22
|
+
requires_signature = models.BooleanField()
|
|
23
|
+
assigned_date = models.DateTimeField()
|
|
24
|
+
patient = models.ForeignKey(Patient, on_delete=models.DO_NOTHING, related_name="lab_reports")
|
|
25
|
+
transmission_type = models.CharField()
|
|
26
|
+
for_test_only = models.BooleanField()
|
|
27
|
+
external_id = models.CharField()
|
|
28
|
+
version = models.IntegerField()
|
|
29
|
+
requisition_number = models.CharField()
|
|
30
|
+
review = models.ForeignKey("LabReview", related_name="reports", on_delete=models.DO_NOTHING)
|
|
31
|
+
original_date = models.DateTimeField()
|
|
32
|
+
date_performed = models.DateTimeField()
|
|
33
|
+
custom_document_name = models.CharField()
|
|
34
|
+
originator = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING)
|
|
35
|
+
committer = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING)
|
|
36
|
+
entered_in_error = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING)
|
|
37
|
+
deleted = models.BooleanField()
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class LabReview(models.Model):
|
|
41
|
+
class Meta:
|
|
42
|
+
managed = False
|
|
43
|
+
app_label = "canvas_sdk"
|
|
44
|
+
db_table = "canvas_sdk_data_api_labreview_001"
|
|
45
|
+
|
|
46
|
+
objects = CommittableModelManager()
|
|
47
|
+
|
|
48
|
+
id = models.UUIDField()
|
|
49
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
50
|
+
created = models.DateTimeField()
|
|
51
|
+
modified = models.DateTimeField()
|
|
52
|
+
originator = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING)
|
|
53
|
+
deleted = models.BooleanField()
|
|
54
|
+
committer = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING)
|
|
55
|
+
entered_in_error = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING)
|
|
56
|
+
internal_comment = models.TextField()
|
|
57
|
+
message_to_patient = models.CharField()
|
|
58
|
+
status = models.CharField()
|
|
59
|
+
patient = models.ForeignKey(Patient, on_delete=models.DO_NOTHING)
|
|
60
|
+
patient_communication_method = models.CharField()
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class LabValue(models.Model):
|
|
64
|
+
class Meta:
|
|
65
|
+
managed = False
|
|
66
|
+
app_label = "canvas_sdk"
|
|
67
|
+
db_table = "canvas_sdk_data_api_labvalue_001"
|
|
68
|
+
|
|
69
|
+
id = models.UUIDField()
|
|
70
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
71
|
+
created = models.DateTimeField()
|
|
72
|
+
modified = models.DateTimeField()
|
|
73
|
+
report = models.ForeignKey("LabReport", related_name="values", on_delete=models.DO_NOTHING)
|
|
74
|
+
value = models.TextField()
|
|
75
|
+
units = models.CharField()
|
|
76
|
+
abnormal_flag = models.CharField()
|
|
77
|
+
reference_range = models.CharField()
|
|
78
|
+
low_threshold = models.CharField()
|
|
79
|
+
high_threshold = models.CharField()
|
|
80
|
+
comment = models.TextField()
|
|
81
|
+
observation_status = models.CharField()
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class LabValueCoding(models.Model):
|
|
85
|
+
class Meta:
|
|
86
|
+
managed = False
|
|
87
|
+
app_label = "canvas_sdk"
|
|
88
|
+
db_table = "canvas_sdk_data_api_labvaluecoding_001"
|
|
89
|
+
|
|
90
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
91
|
+
created = models.DateTimeField()
|
|
92
|
+
modified = models.DateTimeField()
|
|
93
|
+
value = models.ForeignKey(LabValue, on_delete=models.DO_NOTHING, related_name="codings")
|
|
94
|
+
code = models.CharField()
|
|
95
|
+
name = models.CharField()
|
|
96
|
+
system = models.CharField()
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
from canvas_sdk.v1.data.base import CommittableModelManager, ValueSetLookupQuerySet
|
|
4
|
+
from canvas_sdk.v1.data.patient import Patient
|
|
5
|
+
from canvas_sdk.v1.data.user import CanvasUser
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class MedicationQuerySet(ValueSetLookupQuerySet):
|
|
9
|
+
"""MedicationQuerySet."""
|
|
10
|
+
|
|
11
|
+
pass
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class Medication(models.Model):
|
|
15
|
+
"""Medication."""
|
|
16
|
+
|
|
17
|
+
class Meta:
|
|
18
|
+
managed = False
|
|
19
|
+
app_label = "canvas_sdk"
|
|
20
|
+
db_table = "canvas_sdk_data_api_medication_001"
|
|
21
|
+
|
|
22
|
+
objects = CommittableModelManager.from_queryset(MedicationQuerySet)()
|
|
23
|
+
|
|
24
|
+
id = models.UUIDField()
|
|
25
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
26
|
+
patient = models.ForeignKey(Patient, on_delete=models.DO_NOTHING, related_name="medications")
|
|
27
|
+
deleted = models.BooleanField()
|
|
28
|
+
entered_in_error = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING)
|
|
29
|
+
committer = models.ForeignKey(CanvasUser, on_delete=models.DO_NOTHING)
|
|
30
|
+
status = models.CharField()
|
|
31
|
+
start_date = models.DateField()
|
|
32
|
+
end_date = models.DateField()
|
|
33
|
+
quantity_qualifier_description = models.CharField()
|
|
34
|
+
clinical_quantity_description = models.CharField()
|
|
35
|
+
potency_unit_code = models.CharField()
|
|
36
|
+
national_drug_code = models.CharField()
|
|
37
|
+
erx_quantity = models.CharField()
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class MedicationCoding(models.Model):
|
|
41
|
+
"""MedicationCoding."""
|
|
42
|
+
|
|
43
|
+
class Meta:
|
|
44
|
+
managed = False
|
|
45
|
+
app_label = "canvas_sdk"
|
|
46
|
+
db_table = "canvas_sdk_data_api_medicationcoding_001"
|
|
47
|
+
|
|
48
|
+
dbid = models.BigIntegerField(primary_key=True)
|
|
49
|
+
system = models.CharField()
|
|
50
|
+
version = models.CharField()
|
|
51
|
+
code = models.CharField()
|
|
52
|
+
display = models.CharField()
|
|
53
|
+
user_selected = models.BooleanField()
|
|
54
|
+
medication = models.ForeignKey(Medication, on_delete=models.DO_NOTHING, related_name="codings")
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
from typing import Self
|
|
2
|
+
|
|
3
|
+
from django.db import models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Patient(models.Model):
|
|
7
|
+
class Meta:
|
|
8
|
+
managed = False
|
|
9
|
+
app_label = "canvas_sdk"
|
|
10
|
+
db_table = "canvas_sdk_data_api_patient_001"
|
|
11
|
+
|
|
12
|
+
id = models.CharField(max_length=32, db_column="key")
|
|
13
|
+
dbid = models.BigIntegerField(db_column="dbid", primary_key=True)
|
|
14
|
+
first_name = models.CharField()
|
|
15
|
+
last_name = models.CharField()
|
|
16
|
+
birth_date = models.DateField()
|
|
17
|
+
sex_at_birth = models.CharField()
|
|
18
|
+
created = models.DateTimeField()
|
|
19
|
+
modified = models.DateTimeField()
|
|
20
|
+
prefix = models.CharField()
|
|
21
|
+
suffix = models.CharField()
|
|
22
|
+
middle_name = models.CharField()
|
|
23
|
+
maiden_name = models.CharField()
|
|
24
|
+
nickname = models.CharField()
|
|
25
|
+
sexual_orientation_term = models.CharField()
|
|
26
|
+
sexual_orientation_code = models.CharField()
|
|
27
|
+
gender_identity_term = models.CharField()
|
|
28
|
+
gender_identity_code = models.CharField()
|
|
29
|
+
preferred_pronouns = models.CharField()
|
|
30
|
+
last_known_timezone = models.CharField()
|
|
31
|
+
mrn = models.CharField()
|
|
32
|
+
active = models.BooleanField()
|
|
33
|
+
deceased = models.BooleanField()
|
|
34
|
+
deceased_datetime = models.DateTimeField()
|
|
35
|
+
deceased_cause = models.TextField()
|
|
36
|
+
deceased_comment = models.TextField()
|
|
37
|
+
other_gender_description = models.CharField()
|
|
38
|
+
social_security_number = models.CharField()
|
|
39
|
+
administrative_note = models.TextField()
|
|
40
|
+
clinical_note = models.TextField()
|
|
41
|
+
mothers_maiden_name = models.CharField()
|
|
42
|
+
multiple_birth_indicator = models.BooleanField()
|
|
43
|
+
birth_order = models.BigIntegerField()
|
|
44
|
+
default_location_id = models.BigIntegerField()
|
|
45
|
+
default_provider_id = models.BigIntegerField()
|
|
46
|
+
|
|
47
|
+
@classmethod
|
|
48
|
+
def find(cls, id: str) -> Self:
|
|
49
|
+
return cls.objects.get(id=id)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
|
|
3
|
+
from canvas_sdk.value_set.v2022.condition import (
|
|
4
|
+
DisordersOfTheImmuneSystem,
|
|
5
|
+
EncephalopathyDueToChildhoodVaccination,
|
|
6
|
+
Rhabdomyolysis,
|
|
7
|
+
StableAndUnstableAngina,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def test_value_set_class_values_property() -> None:
|
|
12
|
+
value_set = DisordersOfTheImmuneSystem
|
|
13
|
+
assert value_set.values["ICD10CM"] == DisordersOfTheImmuneSystem.ICD10CM
|
|
14
|
+
assert value_set.values["SNOMEDCT"] == DisordersOfTheImmuneSystem.SNOMEDCT
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_value_set_class_pipe_operator_with_two_value_sets() -> None:
|
|
18
|
+
combined_value_set = DisordersOfTheImmuneSystem | EncephalopathyDueToChildhoodVaccination
|
|
19
|
+
|
|
20
|
+
both_classes_icd_10_codes = DisordersOfTheImmuneSystem.ICD10CM.union(
|
|
21
|
+
EncephalopathyDueToChildhoodVaccination.ICD10CM
|
|
22
|
+
)
|
|
23
|
+
both_classes_snomed_codes = DisordersOfTheImmuneSystem.SNOMEDCT.union(
|
|
24
|
+
EncephalopathyDueToChildhoodVaccination.SNOMEDCT
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
assert both_classes_icd_10_codes == combined_value_set.values["ICD10CM"]
|
|
28
|
+
assert both_classes_snomed_codes == combined_value_set.values["SNOMEDCT"]
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def test_value_set_class_pipe_operator_with_three_value_sets() -> None:
|
|
32
|
+
combined_value_set = (
|
|
33
|
+
DisordersOfTheImmuneSystem | EncephalopathyDueToChildhoodVaccination | Rhabdomyolysis
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
all_classes_icd_10_codes = DisordersOfTheImmuneSystem.ICD10CM.union(
|
|
37
|
+
EncephalopathyDueToChildhoodVaccination.ICD10CM
|
|
38
|
+
).union(Rhabdomyolysis.ICD10CM)
|
|
39
|
+
all_classes_snomed_codes = DisordersOfTheImmuneSystem.SNOMEDCT.union(
|
|
40
|
+
EncephalopathyDueToChildhoodVaccination.SNOMEDCT
|
|
41
|
+
).union(Rhabdomyolysis.SNOMEDCT)
|
|
42
|
+
|
|
43
|
+
assert all_classes_icd_10_codes == combined_value_set.values["ICD10CM"]
|
|
44
|
+
assert all_classes_snomed_codes == combined_value_set.values["SNOMEDCT"]
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def test_value_set_class_pipe_operator_with_two_combined_value_sets() -> None:
|
|
48
|
+
combined_value_set_1 = DisordersOfTheImmuneSystem | EncephalopathyDueToChildhoodVaccination
|
|
49
|
+
combined_value_set_2 = Rhabdomyolysis | StableAndUnstableAngina
|
|
50
|
+
|
|
51
|
+
combined_value_set = combined_value_set_1 | combined_value_set_2
|
|
52
|
+
|
|
53
|
+
all_classes_icd_10_codes = (
|
|
54
|
+
DisordersOfTheImmuneSystem.ICD10CM.union(EncephalopathyDueToChildhoodVaccination.ICD10CM)
|
|
55
|
+
.union(Rhabdomyolysis.ICD10CM)
|
|
56
|
+
.union(StableAndUnstableAngina.ICD10CM)
|
|
57
|
+
)
|
|
58
|
+
all_classes_snomed_codes = (
|
|
59
|
+
DisordersOfTheImmuneSystem.SNOMEDCT.union(EncephalopathyDueToChildhoodVaccination.SNOMEDCT)
|
|
60
|
+
.union(Rhabdomyolysis.SNOMEDCT)
|
|
61
|
+
.union(StableAndUnstableAngina.SNOMEDCT)
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
assert combined_value_set.values["ICD10CM"] == all_classes_icd_10_codes
|
|
65
|
+
assert combined_value_set.values["SNOMEDCT"] == all_classes_snomed_codes
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from ..value_set import ValueSet
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class StatinAllergen(ValueSet):
|
|
5
|
+
"""
|
|
6
|
+
**Clinical Focus:** The purpose of this value set is to represent concepts of an allergy to statin medications.
|
|
7
|
+
|
|
8
|
+
**Data Element Scope:** This value set may use a model element related to Allergy/Intolerance.
|
|
9
|
+
|
|
10
|
+
**Inclusion Criteria:** Includes concepts that define an allergy to statin medications.
|
|
11
|
+
|
|
12
|
+
**Exclusion Criteria:** No exclusions.
|
|
13
|
+
|
|
14
|
+
** Used in:** CMS347v5
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
VALUE_SET_NAME = "Statin Allergen"
|
|
18
|
+
OID = "2.16.840.1.113762.1.4.1110.42"
|
|
19
|
+
DEFINITION_VERSION = "20210220"
|
|
20
|
+
EXPANSION_VERSION = "eCQM Update 2021-05-06"
|
|
21
|
+
|
|
22
|
+
RXNORM = {
|
|
23
|
+
"6472", # lovastatin
|
|
24
|
+
"36567", # simvastatin
|
|
25
|
+
"41127", # fluvastatin
|
|
26
|
+
"42463", # pravastatin
|
|
27
|
+
"83367", # atorvastatin
|
|
28
|
+
"301542", # rosuvastatin
|
|
29
|
+
"861634", # pitavastatin
|
|
30
|
+
}
|
|
31
|
+
SNOMEDCT = {
|
|
32
|
+
"372912004", # Substance with 3-hydroxy-3-methylglutaryl-coenzyme A reductase inhibitor mechanism of action (substance)
|
|
33
|
+
}
|