clinicedc 2.0.11__py3-none-any.whl → 2.0.13__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 clinicedc might be problematic. Click here for more details.

Files changed (137) hide show
  1. {clinicedc-2.0.11.dist-info → clinicedc-2.0.13.dist-info}/METADATA +2 -1
  2. {clinicedc-2.0.11.dist-info → clinicedc-2.0.13.dist-info}/RECORD +137 -24
  3. edc_action_item/migrations/0017_auto_20190305_0123.py +1 -1
  4. edc_action_item/migrations/0030_edcpermissions.py +1 -1
  5. edc_action_item/migrations/0041_alter_actionitem_revision_alter_actiontype_revision_and_more.py +86 -0
  6. edc_adverse_event/migrations/0001_initial.py +1 -1
  7. edc_adverse_event/migrations/0002_auto_20190802_0059.py +1 -1
  8. edc_adverse_event/migrations/0008_auto_20220825_0451.py +1 -1
  9. edc_adverse_event/migrations/0009_auto_20220907_0157.py +1 -1
  10. edc_adverse_event/migrations/0017_alter_aeactionclassification_revision_and_more.py +77 -0
  11. edc_adverse_event/model_mixins/hospitaization/hospitalization_model_mixin.py +1 -3
  12. edc_analytics/__init__.py +3 -0
  13. edc_analytics/apps.py +8 -0
  14. edc_analytics/constants.py +26 -0
  15. edc_analytics/custom_tables/__init__.py +11 -0
  16. edc_analytics/custom_tables/age.py +72 -0
  17. edc_analytics/custom_tables/art.py +88 -0
  18. edc_analytics/custom_tables/bmi.py +125 -0
  19. edc_analytics/custom_tables/bp.py +103 -0
  20. edc_analytics/custom_tables/fasting.py +126 -0
  21. edc_analytics/custom_tables/fbg.py +98 -0
  22. edc_analytics/custom_tables/fbg_ogtt.py +384 -0
  23. edc_analytics/custom_tables/gender.py +12 -0
  24. edc_analytics/custom_tables/hba1c.py +87 -0
  25. edc_analytics/custom_tables/ogtt.py +95 -0
  26. edc_analytics/custom_tables/waist.py +105 -0
  27. edc_analytics/data.py +36 -0
  28. edc_analytics/row/__init__.py +4 -0
  29. edc_analytics/row/row_definition.py +43 -0
  30. edc_analytics/row/row_definitions.py +32 -0
  31. edc_analytics/row/row_statistics.py +88 -0
  32. edc_analytics/row/row_statistics_with_gender.py +115 -0
  33. edc_analytics/stata/__init__.py +1 -0
  34. edc_analytics/stata/get_stata_labels_from_model.py +44 -0
  35. edc_analytics/styler.py +93 -0
  36. edc_analytics/table.py +108 -0
  37. edc_analytics/urls.py +6 -0
  38. edc_appointment/migrations/0018_auto_20190305_0123.py +1 -1
  39. edc_appointment/migrations/0051_alter_appointment_revision_and_more.py +38 -0
  40. edc_auth/migrations/0001_squashed_0033_alter_userprofile_is_multisite_viewer.py +1 -1
  41. edc_auth/migrations/0012_auto_20191026_0034.py +1 -1
  42. edc_auth/migrations/0013_auto_20191026_0055.py +1 -1
  43. edc_auth/migrations/0025_permissions.py +1 -1
  44. edc_auth/migrations/0037_alter_edcpermissions_revision_alter_role_revision.py +38 -0
  45. edc_consent/migrations/0001_initial.py +1 -1
  46. edc_consent/migrations/0007_alter_edcpermissions_revision.py +26 -0
  47. edc_crf/migrations/0010_alter_crfstatus_revision.py +26 -0
  48. edc_dashboard/migrations/0001_initial.py +1 -1
  49. edc_dashboard/migrations/0007_alter_edcpermissions_revision.py +26 -0
  50. edc_data_manager/migrations/0001_initial.py +1 -1
  51. edc_data_manager/migrations/0025_edcpermissions.py +1 -1
  52. edc_data_manager/migrations/0042_alter_datadictionary_revision_and_more.py +98 -0
  53. edc_dx/__init__.py +6 -0
  54. edc_dx/apps.py +5 -0
  55. edc_dx/diagnoses.py +250 -0
  56. edc_dx/form_validators/__init__.py +2 -0
  57. edc_dx/form_validators/diagnosis_form_validator_mixin.py +54 -0
  58. edc_dx/form_validators/result_form_validator_mixin.py +65 -0
  59. edc_dx/utils.py +42 -0
  60. edc_dx_review/__init__.py +0 -0
  61. edc_dx_review/apps.py +5 -0
  62. edc_dx_review/auth_objects.py +13 -0
  63. edc_dx_review/auths.py +12 -0
  64. edc_dx_review/choices.py +24 -0
  65. edc_dx_review/constants.py +7 -0
  66. edc_dx_review/fieldsets.py +47 -0
  67. edc_dx_review/form_mixins/__init__.py +3 -0
  68. edc_dx_review/form_mixins/clinical_review_baseline_required_form_mixin.py +25 -0
  69. edc_dx_review/form_validator_mixins/__init__.py +6 -0
  70. edc_dx_review/form_validator_mixins/clinical_review_baseline_form_validator_mixin.py +7 -0
  71. edc_dx_review/form_validator_mixins/clinical_review_followup_form_validator_mixin.py +25 -0
  72. edc_dx_review/list_data.py +19 -0
  73. edc_dx_review/medical_date.py +195 -0
  74. edc_dx_review/migrations/0001_initial.py +307 -0
  75. edc_dx_review/migrations/0002_diagnosislocations_extra_value_and_more.py +32 -0
  76. edc_dx_review/migrations/0003_alter_diagnosislocations_options_and_more.py +148 -0
  77. edc_dx_review/migrations/0004_remove_diagnosislocations_edc_dx_revi_name_a39b40_idx_and_more.py +20 -0
  78. edc_dx_review/migrations/__init__.py +0 -0
  79. edc_dx_review/model_mixins/__init__.py +20 -0
  80. edc_dx_review/model_mixins/clinical_review_baseline_model_mixin.py +25 -0
  81. edc_dx_review/model_mixins/clinical_review_followup/__init__.py +5 -0
  82. edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_chol_model_mixin.py +54 -0
  83. edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_dm_model_mixin.py +54 -0
  84. edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_hiv_model_mixin.py +54 -0
  85. edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_htn_model_mixin.py +56 -0
  86. edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_model_mixin.py +25 -0
  87. edc_dx_review/model_mixins/dx_location_model_mixin.py +17 -0
  88. edc_dx_review/model_mixins/factory/__init__.py +4 -0
  89. edc_dx_review/model_mixins/factory/baseline_review_model_mixin_factory.py +55 -0
  90. edc_dx_review/model_mixins/factory/calculate_date.py +43 -0
  91. edc_dx_review/model_mixins/factory/dx_initial_review_model_mixin_factory.py +97 -0
  92. edc_dx_review/model_mixins/factory/followup_review_model_mixin_factory.py +39 -0
  93. edc_dx_review/model_mixins/factory/rx_initial_review_model_mixin_factory.py +69 -0
  94. edc_dx_review/model_mixins/followup_review/__init__.py +2 -0
  95. edc_dx_review/model_mixins/followup_review/followup_review_model_mixin.py +22 -0
  96. edc_dx_review/model_mixins/followup_review/hiv_followup_review_model_mixin.py +32 -0
  97. edc_dx_review/model_mixins/initial_review/__init__.py +6 -0
  98. edc_dx_review/model_mixins/initial_review/chol_initial_review_model_mixin.py +34 -0
  99. edc_dx_review/model_mixins/initial_review/hiv_initial_model_mixins.py +119 -0
  100. edc_dx_review/model_mixins/initial_review/ncd_initial_review_model_mixin.py +42 -0
  101. edc_dx_review/models.py +20 -0
  102. edc_dx_review/radio_fields.py +30 -0
  103. edc_dx_review/utils.py +220 -0
  104. edc_export/migrations/0004_auto_20190305_0123.py +1 -1
  105. edc_export/migrations/0013_edcpermissions.py +1 -1
  106. edc_export/migrations/0024_alter_datarequest_revision_and_more.py +170 -0
  107. edc_facility/migrations/0005_healthfacility_healthfacilitytypes_and_more.py +1 -1
  108. edc_facility/migrations/0018_alter_healthfacility_revision_and_more.py +38 -0
  109. edc_form_runners/migrations/0006_alter_issue_revision.py +26 -0
  110. edc_identifier/migrations/0012_alter_identifiermodel_revision.py +26 -0
  111. edc_lab/migrations/0039_alter_aliquot_revision_alter_box_revision_and_more.py +269 -0
  112. edc_lab_dashboard/migrations/0006_alter_edcpermissions_revision.py +26 -0
  113. edc_label/migrations/0008_alter_zpllabeltemplates_revision.py +26 -0
  114. edc_listboard/migrations/0008_alter_listboard_revision.py +26 -0
  115. edc_locator/migrations/0042_alter_historicalsubjectlocator_revision_and_more.py +38 -0
  116. edc_metadata/migrations/0032_alter_crfmetadata_revision_and_more.py +38 -0
  117. edc_navbar/migrations/0010_alter_edcpermissions_revision.py +26 -0
  118. edc_notification/migrations/0012_alter_notification_revision.py +26 -0
  119. edc_offstudy/migrations/0025_alter_historicalsubjectoffstudy_revision_and_more.py +41 -0
  120. edc_pharmacy/migrations/0091_alter_allocation_revision_alter_assignment_revision_and_more.py +794 -0
  121. edc_protocol_incident/migrations/0026_alter_historicalprotocoldeviationviolation_revision_and_more.py +65 -0
  122. edc_pylabels/migrations/0014_alter_labelconfiguration_revision.py +26 -0
  123. edc_qareports/migrations/0021_alter_edcpermissions_revision_alter_note_revision.py +38 -0
  124. edc_randomization/migrations/0015_alter_edcpermissions_revision_and_more.py +50 -0
  125. edc_refusal/migrations/0014_alter_historicalsubjectrefusal_revision_and_more.py +38 -0
  126. edc_registration/migrations/0034_alter_historicalregisteredsubject_revision_and_more.py +41 -0
  127. edc_reportable/migrations/0008_alter_gradingdata_revision_and_more.py +110 -0
  128. edc_review_dashboard/migrations/0007_alter_edcpermissions_revision.py +26 -0
  129. edc_screening/migrations/0006_alter_edcpermissions_revision.py +26 -0
  130. edc_sites/migrations/0011_alter_edcpermissions_revision.py +26 -0
  131. edc_subject_dashboard/migrations/0006_alter_edcpermissions_revision.py +26 -0
  132. edc_unblinding/migrations/0016_alter_historicalunblindingrequest_revision_and_more.py +65 -0
  133. edc_visit_schedule/migrations/0021_alter_historicalonschedule_revision_and_more.py +89 -0
  134. edc_visit_tracking/migrations/0011_alter_historicalsubjectvisit_revision_and_more.py +65 -0
  135. edc_vitals/model_mixins/blood_pressure_model_mixin.py +1 -0
  136. {clinicedc-2.0.11.dist-info → clinicedc-2.0.13.dist-info}/WHEEL +0 -0
  137. {clinicedc-2.0.11.dist-info → clinicedc-2.0.13.dist-info}/licenses/LICENSE +0 -0
edc_analytics/table.py ADDED
@@ -0,0 +1,108 @@
1
+ import pandas as pd
2
+ from edc_constants.constants import FEMALE, MALE
3
+
4
+ from .constants import COUNT_COLUMN, N_ONLY, N_WITH_ROW_PROP, TITLE_COLUMN
5
+ from .row import RowDefinition, RowDefinitions, RowStatisticsWithGender
6
+
7
+
8
+ class Table:
9
+
10
+ title_column = "Characteristics"
11
+ label_column = "Statistic"
12
+ default_sublabel = "n"
13
+ gender_column = "gender"
14
+ row_statistics_cls: RowStatisticsWithGender = RowStatisticsWithGender
15
+
16
+ def __init__(
17
+ self,
18
+ colname: str | None = None,
19
+ main_df: pd.DataFrame = None,
20
+ title: str | None = None,
21
+ include_zero_counts: bool | None = None,
22
+ ):
23
+
24
+ self.colname = colname
25
+ self.main_df = main_df
26
+ self.title = title
27
+ self.include_zero_counts = include_zero_counts
28
+ self.table_df: pd.DataFrame = pd.DataFrame()
29
+
30
+ self.build_table_df()
31
+ if self.title:
32
+ # add a redundant column to hold title name for each
33
+ # row in this table.
34
+ self.table_df[TITLE_COLUMN] = self.title
35
+
36
+ @property
37
+ def row_definitions(self) -> RowDefinitions:
38
+ """Override with your RowDefs
39
+
40
+ The default adds a first row with gender breakdown.
41
+ """
42
+ row_defs = RowDefinitions(
43
+ colname=self.colname, row_statistics_cls=self.row_statistics_cls
44
+ )
45
+ row_defs.add(
46
+ RowDefinition(
47
+ title=self.title,
48
+ label=self.default_sublabel,
49
+ colname=None,
50
+ condition=(self.main_df[self.gender_column].notna()),
51
+ columns={
52
+ FEMALE: (N_WITH_ROW_PROP, 2),
53
+ MALE: (N_WITH_ROW_PROP, 2),
54
+ "All": (N_ONLY, 2),
55
+ },
56
+ drop=False,
57
+ )
58
+ )
59
+ return row_defs
60
+
61
+ def reorder_df(self):
62
+ """Override to reorder the rows in `table_df`."""
63
+ pass
64
+
65
+ def build_table_df(self) -> None:
66
+ """Build the table_df using the row definitions."""
67
+ df_denominator = self.main_df.copy()
68
+ rows = []
69
+ for index, rd in enumerate(self.row_definitions.definitions):
70
+ if not rd.condition.empty:
71
+ df_numerator = df_denominator.loc[rd.condition]
72
+ else:
73
+ # default to first col non-null values
74
+ df_numerator = df_denominator.loc[
75
+ df_denominator[df_denominator.columns[0]].notna()
76
+ ]
77
+ row_stats = self.row_statistics_cls(
78
+ colname=rd.colname,
79
+ df_numerator=df_numerator,
80
+ df_denominator=df_denominator,
81
+ df_all=self.main_df,
82
+ columns=rd.columns,
83
+ )
84
+ if index == 0:
85
+ columns = (
86
+ [self.title_column, self.label_column]
87
+ + row_stats.labels()
88
+ + [TITLE_COLUMN]
89
+ )
90
+ # reset table_df
91
+ self.table_df = pd.DataFrame(columns=columns)
92
+ rows.append([rd.title, rd.label] + row_stats.values_list() + [self.title])
93
+ if rd.drop and not df_numerator.empty:
94
+ df_denominator.drop(df_numerator.index, inplace=True)
95
+ if self.row_definitions.reverse_rows:
96
+ rows.reverse()
97
+ for index, values_list in enumerate(rows):
98
+ self.table_df.loc[index] = values_list
99
+ if not self.include_zero_counts:
100
+ self.table_df.drop(
101
+ self.table_df[self.table_df[COUNT_COLUMN] == 0].index, inplace=True
102
+ )
103
+ self.reorder_df()
104
+
105
+ @property
106
+ def formatted_df(self) -> pd.DataFrame:
107
+ """Return DF with first 5 columns"""
108
+ return self.table_df.iloc[:, :5]
edc_analytics/urls.py ADDED
@@ -0,0 +1,6 @@
1
+ from django.contrib import admin
2
+ from django.urls import path
3
+
4
+ urlpatterns = [
5
+ path("admin/", admin.site.urls),
6
+ ]
@@ -2,7 +2,7 @@
2
2
 
3
3
  import django_audit_fields.fields.hostname_modification_field
4
4
  import django_audit_fields.fields.userfield
5
- import django_audit_fields.models.audit_model_mixin
5
+ import django.utils.timezone
6
6
  from django.db import migrations, models
7
7
  import django.utils.timezone
8
8
 
@@ -0,0 +1,38 @@
1
+ # Generated by Django 5.2.6 on 2025-09-24 04:56
2
+
3
+ import django_revision.revision_field
4
+ from django.db import migrations
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ("edc_appointment", "0050_alter_appointment_appt_type_and_more"),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AlterField(
15
+ model_name="appointment",
16
+ name="revision",
17
+ field=django_revision.revision_field.RevisionField(
18
+ blank=True,
19
+ default="",
20
+ editable=False,
21
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
22
+ max_length=75,
23
+ verbose_name="Revision",
24
+ ),
25
+ ),
26
+ migrations.AlterField(
27
+ model_name="historicalappointment",
28
+ name="revision",
29
+ field=django_revision.revision_field.RevisionField(
30
+ blank=True,
31
+ default="",
32
+ editable=False,
33
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
34
+ max_length=75,
35
+ verbose_name="Revision",
36
+ ),
37
+ ),
38
+ ]
@@ -6,7 +6,7 @@ import django.db.models.deletion
6
6
  import django_audit_fields.fields.hostname_modification_field
7
7
  import django_audit_fields.fields.userfield
8
8
  import django_audit_fields.fields.uuid_auto_field
9
- import django_audit_fields.models.audit_model_mixin
9
+ import django.utils.timezone
10
10
  import django_revision.revision_field
11
11
  from django.conf import settings
12
12
  from django.db import migrations, models
@@ -4,7 +4,7 @@ import _socket
4
4
  import django_audit_fields.fields.hostname_modification_field
5
5
  import django_audit_fields.fields.userfield
6
6
  import django_audit_fields.fields.uuid_auto_field
7
- import django_audit_fields.models.audit_model_mixin
7
+ import django.utils.timezone
8
8
  import django_revision.revision_field
9
9
  from django.db import migrations, models
10
10
  import django.utils.timezone
@@ -4,7 +4,7 @@ import _socket
4
4
  import django_audit_fields.fields.hostname_modification_field
5
5
  import django_audit_fields.fields.userfield
6
6
  import django_audit_fields.fields.uuid_auto_field
7
- import django_audit_fields.models.audit_model_mixin
7
+ import django.utils.timezone
8
8
  import django_revision.revision_field
9
9
  from django.db import migrations, models
10
10
  import django.utils.timezone
@@ -4,7 +4,7 @@ import _socket
4
4
  import django_audit_fields.fields.hostname_modification_field
5
5
  import django_audit_fields.fields.userfield
6
6
  import django_audit_fields.fields.uuid_auto_field
7
- import django_audit_fields.models.audit_model_mixin
7
+ import django.utils.timezone
8
8
  import django_revision.revision_field
9
9
  from django.db import migrations, models
10
10
  import django.utils.timezone
@@ -0,0 +1,38 @@
1
+ # Generated by Django 5.2.6 on 2025-09-24 04:56
2
+
3
+ import django_revision.revision_field
4
+ from django.db import migrations
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ("edc_auth", "0036_alter_userprofile_alternate_email_and_more"),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AlterField(
15
+ model_name="edcpermissions",
16
+ name="revision",
17
+ field=django_revision.revision_field.RevisionField(
18
+ blank=True,
19
+ default="",
20
+ editable=False,
21
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
22
+ max_length=75,
23
+ verbose_name="Revision",
24
+ ),
25
+ ),
26
+ migrations.AlterField(
27
+ model_name="role",
28
+ name="revision",
29
+ field=django_revision.revision_field.RevisionField(
30
+ blank=True,
31
+ default="",
32
+ editable=False,
33
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
34
+ max_length=75,
35
+ verbose_name="Revision",
36
+ ),
37
+ ),
38
+ ]
@@ -4,7 +4,7 @@ import _socket
4
4
  import django_audit_fields.fields.hostname_modification_field
5
5
  import django_audit_fields.fields.userfield
6
6
  import django_audit_fields.fields.uuid_auto_field
7
- import django_audit_fields.models.audit_model_mixin
7
+ import django.utils.timezone
8
8
  import django_revision.revision_field
9
9
  from django.db import migrations, models
10
10
  import django.utils.timezone
@@ -0,0 +1,26 @@
1
+ # Generated by Django 5.2.6 on 2025-09-24 04:56
2
+
3
+ import django_revision.revision_field
4
+ from django.db import migrations
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ("edc_consent", "0006_alter_edcpermissions_device_created_and_more"),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AlterField(
15
+ model_name="edcpermissions",
16
+ name="revision",
17
+ field=django_revision.revision_field.RevisionField(
18
+ blank=True,
19
+ default="",
20
+ editable=False,
21
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
22
+ max_length=75,
23
+ verbose_name="Revision",
24
+ ),
25
+ ),
26
+ ]
@@ -0,0 +1,26 @@
1
+ # Generated by Django 5.2.6 on 2025-09-24 04:56
2
+
3
+ import django_revision.revision_field
4
+ from django.db import migrations
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ("edc_crf", "0009_alter_crfstatus_device_created_and_more"),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AlterField(
15
+ model_name="crfstatus",
16
+ name="revision",
17
+ field=django_revision.revision_field.RevisionField(
18
+ blank=True,
19
+ default="",
20
+ editable=False,
21
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
22
+ max_length=75,
23
+ verbose_name="Revision",
24
+ ),
25
+ ),
26
+ ]
@@ -4,7 +4,7 @@ import _socket
4
4
  import django_audit_fields.fields.hostname_modification_field
5
5
  import django_audit_fields.fields.userfield
6
6
  import django_audit_fields.fields.uuid_auto_field
7
- import django_audit_fields.models.audit_model_mixin
7
+ import django.utils.timezone
8
8
  import django_revision.revision_field
9
9
  from django.db import migrations, models
10
10
  import django.utils.timezone
@@ -0,0 +1,26 @@
1
+ # Generated by Django 5.2.6 on 2025-09-24 04:56
2
+
3
+ import django_revision.revision_field
4
+ from django.db import migrations
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ("edc_dashboard", "0006_alter_edcpermissions_device_created_and_more"),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AlterField(
15
+ model_name="edcpermissions",
16
+ name="revision",
17
+ field=django_revision.revision_field.RevisionField(
18
+ blank=True,
19
+ default="",
20
+ editable=False,
21
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
22
+ max_length=75,
23
+ verbose_name="Revision",
24
+ ),
25
+ ),
26
+ ]
@@ -10,7 +10,7 @@ import django.db.models.manager
10
10
  import django_audit_fields.fields.hostname_modification_field
11
11
  import django_audit_fields.fields.userfield
12
12
  import django_audit_fields.fields.uuid_auto_field
13
- import django_audit_fields.models.audit_model_mixin
13
+ import django.utils.timezone
14
14
  import django_revision.revision_field
15
15
  import simple_history.models
16
16
  from django.conf import settings
@@ -4,7 +4,7 @@ import _socket
4
4
  import django_audit_fields.fields.hostname_modification_field
5
5
  import django_audit_fields.fields.userfield
6
6
  import django_audit_fields.fields.uuid_auto_field
7
- import django_audit_fields.models.audit_model_mixin
7
+ import django.utils.timezone
8
8
  import django_revision.revision_field
9
9
  from django.db import migrations, models
10
10
  import django.utils.timezone
@@ -0,0 +1,98 @@
1
+ # Generated by Django 5.2.6 on 2025-09-24 04:56
2
+
3
+ import django_revision.revision_field
4
+ from django.db import migrations
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ("edc_data_manager", "0041_alter_dataquery_dm_user_and_more"),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AlterField(
15
+ model_name="datadictionary",
16
+ name="revision",
17
+ field=django_revision.revision_field.RevisionField(
18
+ blank=True,
19
+ default="",
20
+ editable=False,
21
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
22
+ max_length=75,
23
+ verbose_name="Revision",
24
+ ),
25
+ ),
26
+ migrations.AlterField(
27
+ model_name="dataquery",
28
+ name="revision",
29
+ field=django_revision.revision_field.RevisionField(
30
+ blank=True,
31
+ default="",
32
+ editable=False,
33
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
34
+ max_length=75,
35
+ verbose_name="Revision",
36
+ ),
37
+ ),
38
+ migrations.AlterField(
39
+ model_name="edcpermissions",
40
+ name="revision",
41
+ field=django_revision.revision_field.RevisionField(
42
+ blank=True,
43
+ default="",
44
+ editable=False,
45
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
46
+ max_length=75,
47
+ verbose_name="Revision",
48
+ ),
49
+ ),
50
+ migrations.AlterField(
51
+ model_name="historicaldatadictionary",
52
+ name="revision",
53
+ field=django_revision.revision_field.RevisionField(
54
+ blank=True,
55
+ default="",
56
+ editable=False,
57
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
58
+ max_length=75,
59
+ verbose_name="Revision",
60
+ ),
61
+ ),
62
+ migrations.AlterField(
63
+ model_name="historicaldataquery",
64
+ name="revision",
65
+ field=django_revision.revision_field.RevisionField(
66
+ blank=True,
67
+ default="",
68
+ editable=False,
69
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
70
+ max_length=75,
71
+ verbose_name="Revision",
72
+ ),
73
+ ),
74
+ migrations.AlterField(
75
+ model_name="historicalqueryrule",
76
+ name="revision",
77
+ field=django_revision.revision_field.RevisionField(
78
+ blank=True,
79
+ default="",
80
+ editable=False,
81
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
82
+ max_length=75,
83
+ verbose_name="Revision",
84
+ ),
85
+ ),
86
+ migrations.AlterField(
87
+ model_name="queryrule",
88
+ name="revision",
89
+ field=django_revision.revision_field.RevisionField(
90
+ blank=True,
91
+ default="",
92
+ editable=False,
93
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
94
+ max_length=75,
95
+ verbose_name="Revision",
96
+ ),
97
+ ),
98
+ ]
edc_dx/__init__.py ADDED
@@ -0,0 +1,6 @@
1
+ from .diagnoses import Diagnoses
2
+ from .utils import (
3
+ get_diagnosis_labels,
4
+ get_diagnosis_labels_prefixes,
5
+ raise_on_unknown_diagnosis_labels,
6
+ )
edc_dx/apps.py ADDED
@@ -0,0 +1,5 @@
1
+ from django.apps import AppConfig as DjangoAppConfig
2
+
3
+
4
+ class AppConfig(DjangoAppConfig):
5
+ name = "edc_dx"