meta-edc 1.1.18__py3-none-any.whl → 1.1.19__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 meta-edc might be problematic. Click here for more details.
- meta_consent/admin/__init__.py +1 -0
- meta_consent/admin/subject_consent_spfq_admin.py +58 -0
- meta_consent/forms/__init__.py +2 -0
- meta_consent/forms/subject_consent_spfq_form.py +55 -0
- meta_consent/migrations/0033_historicalsubjectconsentspfq_subjectconsentspfq.py +615 -0
- meta_consent/models/__init__.py +2 -0
- meta_consent/models/subject_consent_spfq.py +103 -0
- {meta_edc-1.1.18.dist-info → meta_edc-1.1.19.dist-info}/METADATA +5 -5
- {meta_edc-1.1.18.dist-info → meta_edc-1.1.19.dist-info}/RECORD +30 -15
- meta_labs/list_data.py +2 -2
- meta_rando/migrations/0007_spfqlist.py +197 -0
- meta_rando/models/__init__.py +2 -0
- meta_rando/{models.py → models/randomization_list.py} +3 -3
- meta_rando/models/spfq_list.py +26 -0
- meta_subject/admin/__init__.py +2 -0
- meta_subject/admin/spfg_admin.py +103 -0
- meta_subject/choices.py +37 -0
- meta_subject/constants.py +14 -0
- meta_subject/forms/__init__.py +2 -0
- meta_subject/forms/spfq_form.py +65 -0
- meta_subject/migrations/0228_bloodresultshba1c_hba1c_datetime_and_more.py +1 -6780
- meta_subject/migrations/0229_alter_glucosefbg_consent_model_and_more.py +1918 -0
- meta_subject/migrations/0230_alter_historicaldelivery_action_identifier_and_more.py +1733 -0
- meta_subject/migrations/0231_alter_historicalmedicationadherence_consent_model_and_more.py +2054 -0
- meta_subject/migrations/0232_alter_patienthistory_concomitant_conditions_and_more.py +1170 -0
- meta_subject/migrations/0233_historicalspfq_spfq.py +1066 -0
- meta_subject/models/__init__.py +2 -0
- meta_subject/models/spfq.py +190 -0
- {meta_edc-1.1.18.dist-info → meta_edc-1.1.19.dist-info}/WHEEL +0 -0
- {meta_edc-1.1.18.dist-info → meta_edc-1.1.19.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
from django.conf import settings
|
|
2
|
+
from django.contrib.sites.managers import CurrentSiteManager
|
|
3
|
+
from django.core.validators import RegexValidator
|
|
4
|
+
from django.db import models
|
|
5
|
+
from django.utils import timezone
|
|
6
|
+
from django.utils.translation import gettext_lazy as _
|
|
7
|
+
from django_crypto_fields.fields import EncryptedCharField
|
|
8
|
+
from edc_consent.field_mixins import (
|
|
9
|
+
ReviewFieldsMixin,
|
|
10
|
+
)
|
|
11
|
+
from edc_consent.managers import ConsentObjectsManager
|
|
12
|
+
from edc_constants.choices import GENDER
|
|
13
|
+
from edc_constants.constants import NULL_STRING
|
|
14
|
+
from edc_model.models import BaseUuidModel, HistoricalRecords
|
|
15
|
+
from edc_sites.model_mixins import SiteModelMixin
|
|
16
|
+
|
|
17
|
+
from .model_mixins import SearchSlugModelMixin
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class SubjectConsentSpfq(
|
|
21
|
+
SiteModelMixin,
|
|
22
|
+
ReviewFieldsMixin,
|
|
23
|
+
SearchSlugModelMixin,
|
|
24
|
+
BaseUuidModel,
|
|
25
|
+
):
|
|
26
|
+
"""A model completed by the user that captures the ICF for SPFQ."""
|
|
27
|
+
|
|
28
|
+
subject_identifier = models.CharField(
|
|
29
|
+
verbose_name=_("Subject identifier"), max_length=50, unique=True
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
initials = EncryptedCharField(
|
|
33
|
+
validators=[
|
|
34
|
+
RegexValidator(
|
|
35
|
+
regex=r"^[A-Z]{2,3}$",
|
|
36
|
+
message="Ensure initials consist of letters only in upper case, no spaces.",
|
|
37
|
+
)
|
|
38
|
+
],
|
|
39
|
+
default=NULL_STRING,
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
gender = models.CharField(
|
|
43
|
+
verbose_name="Gender",
|
|
44
|
+
choices=GENDER,
|
|
45
|
+
max_length=1,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
consent_datetime = models.DateTimeField(
|
|
49
|
+
verbose_name=_("Consent datetime"), default=timezone.now
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
report_datetime = models.DateTimeField(null=True, editable=False)
|
|
53
|
+
|
|
54
|
+
language = models.CharField(
|
|
55
|
+
verbose_name=_("Language of consent"),
|
|
56
|
+
max_length=25,
|
|
57
|
+
choices=settings.LANGUAGES,
|
|
58
|
+
help_text=_(
|
|
59
|
+
"The language used for the consent process will "
|
|
60
|
+
"also be used during data collection."
|
|
61
|
+
),
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
model_name = models.CharField(
|
|
65
|
+
verbose_name="model",
|
|
66
|
+
max_length=50,
|
|
67
|
+
help_text=(
|
|
68
|
+
"label_lower of this model class. Will be different if "
|
|
69
|
+
"instance has been added/edited via a proxy model"
|
|
70
|
+
),
|
|
71
|
+
default=NULL_STRING,
|
|
72
|
+
editable=False,
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
version = models.CharField(
|
|
76
|
+
verbose_name="Consent version",
|
|
77
|
+
max_length=10,
|
|
78
|
+
default="1.0",
|
|
79
|
+
help_text="See 'consent definition' for consent versions by period.",
|
|
80
|
+
editable=False,
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
on_site = CurrentSiteManager()
|
|
84
|
+
|
|
85
|
+
objects = ConsentObjectsManager()
|
|
86
|
+
|
|
87
|
+
history = HistoricalRecords()
|
|
88
|
+
|
|
89
|
+
def __str__(self):
|
|
90
|
+
return f"{self.subject_identifier} V{self.version}"
|
|
91
|
+
|
|
92
|
+
def save(self, *args, **kwargs):
|
|
93
|
+
if not self.id:
|
|
94
|
+
self.model_name = self._meta.label_lower
|
|
95
|
+
self.report_datetime = self.consent_datetime
|
|
96
|
+
super().save(*args, **kwargs)
|
|
97
|
+
|
|
98
|
+
def natural_key(self):
|
|
99
|
+
return self.subject_identifier, self.version
|
|
100
|
+
|
|
101
|
+
class Meta(BaseUuidModel.Meta):
|
|
102
|
+
verbose_name = "Subject Consent for SPFQ"
|
|
103
|
+
verbose_name_plural = "Subject Consents for SPFQ"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meta-edc
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.19
|
|
4
4
|
Summary: META Trial EDC (https://www.isrctn.com/ISRCTN76157257)
|
|
5
5
|
Keywords: django,clinicedc,META EDC,EDC,clinical trials,META Trial,ISRCTN76157257
|
|
6
6
|
Author: Erik van Widenfelt, Jonathan Willitts
|
|
@@ -15,7 +15,7 @@ Classifier: Intended Audience :: Science/Research
|
|
|
15
15
|
Classifier: Operating System :: OS Independent
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.12
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
-
Requires-Dist: clinicedc>=2.0.
|
|
18
|
+
Requires-Dist: clinicedc>=2.0.27
|
|
19
19
|
Requires-Dist: edc-he>=1.2.0
|
|
20
20
|
Requires-Dist: edc-microscopy>=1.2.0
|
|
21
21
|
Requires-Dist: edc-mnsi>=1.2.0
|
|
@@ -88,8 +88,8 @@ Assuming you are logged into the account ``myaccount``:
|
|
|
88
88
|
mkdir ~/edc && \
|
|
89
89
|
cd ~/edc && \
|
|
90
90
|
uv venv && \
|
|
91
|
-
uv pip install -U meta-edc==1.1.
|
|
92
|
-
wget https://raw.githubusercontent.com/meta-trial/meta-edc/1.1.
|
|
91
|
+
uv pip install -U meta-edc==1.1.18 && \
|
|
92
|
+
wget https://raw.githubusercontent.com/meta-trial/meta-edc/1.1.18/manage.py && \
|
|
93
93
|
uv pip freeze | grep meta-edc
|
|
94
94
|
|
|
95
95
|
Copy your ``.env`` file to ``~/.etc``.
|
|
@@ -139,7 +139,7 @@ From the above example:
|
|
|
139
139
|
|
|
140
140
|
cd ~/edc && \
|
|
141
141
|
uv venv --clear && \
|
|
142
|
-
uv pip install -U meta-edc==1.1.
|
|
142
|
+
uv pip install -U meta-edc==1.1.18 && \
|
|
143
143
|
wget -O manage.py https://raw.githubusercontent.com/meta-trial/meta-edc/1.1.10/manage.py && \
|
|
144
144
|
uv pip freeze | grep meta-edc && \
|
|
145
145
|
python manage.py check
|
|
@@ -109,12 +109,13 @@ meta_auth/auths.py,sha256=EBdK6b5b2yduDvqYmnmJFRvuJ0fLDQ_q226iuwHA_QU,3008
|
|
|
109
109
|
meta_auth/urls.py,sha256=_sVCnQeiAFRYKhxga3_DjoKj_4bgs1s2gjcynDiapvA,111
|
|
110
110
|
meta_consent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
111
111
|
meta_consent/action_items.py,sha256=tSt9PsKWommXY59d65gvT8YxJc55mwp5RDlRH6RqHZY,1425
|
|
112
|
-
meta_consent/admin/__init__.py,sha256=
|
|
112
|
+
meta_consent/admin/__init__.py,sha256=xSwd9MBy1MyumjzbZc3-HL_9Oko6FepGbvEkK0PM5hA,349
|
|
113
113
|
meta_consent/admin/actions/__init__.py,sha256=dxQmm21wkVYcznzBeQU6cBEfPRnkEsBQLwptJr2xoYI,113
|
|
114
114
|
meta_consent/admin/actions/create_missing_prescriptions.py,sha256=mksb9aAL8FK0KN3Z2a5N-QRrUSiilObUMCqoWCTlfv8,1500
|
|
115
115
|
meta_consent/admin/list_filters.py,sha256=gVKcHW1YHT3X0fYDDgCI_PDY9F7A3Z3z8CRq2ZRC9MA,775
|
|
116
116
|
meta_consent/admin/modeladmin_mixins.py,sha256=AWGHMjjZleGtE4UhfL_1hykiT1qpBkndgKbgeEo3ilo,5387
|
|
117
117
|
meta_consent/admin/subject_consent_admin.py,sha256=IfGANb9TFvVs9yga8WOTxHxy2yRHP--KgsVUWEg30MQ,647
|
|
118
|
+
meta_consent/admin/subject_consent_spfq_admin.py,sha256=Om1rkJSCfxLfHuTZ4K-q5pCSS5ZXnRfpeuJOrrM73lQ,1720
|
|
118
119
|
meta_consent/admin/subject_consent_v1_admin.py,sha256=nmssuWL7eomQfXi3mVrszs3Ghufhz46JAwr9wFU3gkI,657
|
|
119
120
|
meta_consent/admin/subject_consent_v1_ext_admin.py,sha256=o0XiCiyFr7ARV6f3Y-TLVknljomsoKrVFDxQfCRgEaY,2849
|
|
120
121
|
meta_consent/admin_site.py,sha256=r5FtGwonVpqhyGekVNplmHr2mwbEGilJBiyvsIz2_lY,169
|
|
@@ -124,8 +125,9 @@ meta_consent/consents.py,sha256=JkO2dlt7Fn7ckWRGgdicAaXWgtIANo1amwxK5ykL5uk,1185
|
|
|
124
125
|
meta_consent/constants.py,sha256=w5n3B4jwUDDZEc4gMpkKeffsHqi724GnoABFtjmvbQk,78
|
|
125
126
|
meta_consent/form_validators/__init__.py,sha256=3xf1nNmydleMyROWyHvwI8-HC5y7gMYQW_bTeStiI7Q,115
|
|
126
127
|
meta_consent/form_validators/subject_consent_form_validator.py,sha256=2f4FY1VZ1qU4u35LSoRtBIhmRhrflOhs0Zal8z1Ogo8,1258
|
|
127
|
-
meta_consent/forms/__init__.py,sha256=
|
|
128
|
+
meta_consent/forms/__init__.py,sha256=5Q_KvDuxEJ_CR21RaGhMT2ZYva58JRAimMauTc16MGM,453
|
|
128
129
|
meta_consent/forms/subject_consent_form.py,sha256=Dwnwn7y-8AABvzgTa1zfs2b2Mli0OKnNMsx0VOxO9n0,1293
|
|
130
|
+
meta_consent/forms/subject_consent_spfq_form.py,sha256=NGC7HhL2uCqrDGnO7boe0Cq_2ZbVJYB9qeecu5aMZyY,2016
|
|
129
131
|
meta_consent/forms/subject_consent_v1_ext_form.py,sha256=jkm3bDrmepChP2OsmiAalhCW-IwhsR7BhR_qcycrTlc,1735
|
|
130
132
|
meta_consent/forms/subject_consent_v1_form.py,sha256=XHrklzP-wh6ny3VJ2Bf9v7BTaUlfTToYVrpIAm3JZFc,766
|
|
131
133
|
meta_consent/forms/subject_reconsent_form.py,sha256=hR2c1SgBXDXbL2gv33ArACr6UoGsM22C03uyCtuwT8o,1350
|
|
@@ -166,11 +168,13 @@ meta_consent/migrations/0029_alter_historicalsubjectconsentv1ext_agrees_to_exten
|
|
|
166
168
|
meta_consent/migrations/0030_auto_20250120_2114.py,sha256=Unk3dddqbNTog5VZOmq-68oi_RshtT21wlNVqcSf5-U,1349
|
|
167
169
|
meta_consent/migrations/0031_alter_historicalsubjectconsent_guardian_name_and_more.py,sha256=a3-_1ls36Z8UXe3v2U44SqPVeNiCgUjJX6jOWsk1EoQ,5645
|
|
168
170
|
meta_consent/migrations/0032_alter_historicalsubjectconsent_device_created_and_more.py,sha256=Ty4I6TSHw_rHRKyrYQUMDuZmCSe9_rC4PMD8PM6EdB0,24682
|
|
171
|
+
meta_consent/migrations/0033_historicalsubjectconsentspfq_subjectconsentspfq.py,sha256=6GKEKT1BbPqqq2U2rHMQWl1VITtB3Inzl3aJGiy26ro,25192
|
|
169
172
|
meta_consent/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
170
|
-
meta_consent/models/__init__.py,sha256=
|
|
173
|
+
meta_consent/models/__init__.py,sha256=DURcTNQg9A7ok4_SVKm59yQAACZbj0_moy_7EPb0nSQ,544
|
|
171
174
|
meta_consent/models/model_mixins.py,sha256=mEN2gDycLKoZiExM2_H3Dxz8AMAwRSrCq4vu3afr5hA,275
|
|
172
175
|
meta_consent/models/signals.py,sha256=grdBFzC46jX_IpoMLhDkYY1MjeK4Xzc8kv-yXdF4mnY,5198
|
|
173
176
|
meta_consent/models/subject_consent.py,sha256=Ssr94mZijpseoer-APH0jhh54cLeoUI0TPUah3od91c,3804
|
|
177
|
+
meta_consent/models/subject_consent_spfq.py,sha256=vXMRfEU9AeOqKDGUzTNnZl6D_hM-H4_uEfcx3QjJlzc,3038
|
|
174
178
|
meta_consent/models/subject_consent_v1.py,sha256=ELkFhv_6eRiuuoJOohdLwq3b2e2YXngK5omkGwMoRQE,457
|
|
175
179
|
meta_consent/models/subject_consent_v1_ext.py,sha256=MpK5TlUqf2JuYRpmRLzYBClOFstC_6pIGwDRUckIztU,1033
|
|
176
180
|
meta_consent/models/subject_reconsent.py,sha256=CqkrnThqjfnJnIj-k5QEEijue3gqp-0YvzcqKHjC8Gs,3605
|
|
@@ -252,7 +256,7 @@ meta_labs/aliquot_types.py,sha256=1tiBgZ6Dn8uxqJPukdcYtaTC0mK18n5RB_Swj3WyGH8,87
|
|
|
252
256
|
meta_labs/apps.py,sha256=KizTZ5y6jbPc87IrCyzVqi7DAwrKXrp1cKa3TmMwBfk,200
|
|
253
257
|
meta_labs/lab_profiles.py,sha256=I3s07bzAQaRzNSAqBuprx6uIO048ovffL5gD28ZE2N0,957
|
|
254
258
|
meta_labs/labs.py,sha256=0mpfORDUsjxBeyJdEC5NiF4kQHSQTfKiQuMKZ9Svaqw,128
|
|
255
|
-
meta_labs/list_data.py,sha256=
|
|
259
|
+
meta_labs/list_data.py,sha256=Cbu8yBpogDno1B10MtC8HCXLRbtxqUGjLxuAjUbyLYg,473
|
|
256
260
|
meta_labs/processing_profiles.py,sha256=fRX72FOl2rsnOJYhgup5QacfGSXKtWqn2gD3Giz2GDA,500
|
|
257
261
|
meta_labs/reportables.py,sha256=AgONHYWB7QsQ53ZsQOYcpgtV7Tl8yyt28GEkgjZ5lms,2204
|
|
258
262
|
meta_lists/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -452,8 +456,11 @@ meta_rando/migrations/0003_auto_20220826_1640.py,sha256=J7x_wOMhSvUj9FvC9ZoT7Nek
|
|
|
452
456
|
meta_rando/migrations/0004_alter_randomizationlist_options_and_more.py,sha256=_UZa13k3D_gp6HLBSWqeW-aPnBhd5zaLZF3mQh2Gt6s,3572
|
|
453
457
|
meta_rando/migrations/0005_alter_randomizationlist_options_and_more.py,sha256=GBaNqwy4SlmQ88lYX2uEqAI0FIUQem-C8qJLI6d6SfI,3248
|
|
454
458
|
meta_rando/migrations/0006_alter_historicalrandomizationlist_allocated_user_and_more.py,sha256=XS6srUOHPAJWqsTLLPCHmcIKlOkEky95JrH1739gL2w,4584
|
|
459
|
+
meta_rando/migrations/0007_spfqlist.py,sha256=UbzXuvNy3EuapG0ZQktiEVOM3BVjLgeAmTqViAh9cKg,7276
|
|
455
460
|
meta_rando/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
456
|
-
meta_rando/models.py,sha256=
|
|
461
|
+
meta_rando/models/__init__.py,sha256=iKW5AvXiLK58AMspZmWYUzOmA7mrJQp3_FcMqtWa5xc,82
|
|
462
|
+
meta_rando/models/randomization_list.py,sha256=IBj1kSui1tHNgZdVbHvgmunw9BwBZ4ZZnft98x1B-Gg,510
|
|
463
|
+
meta_rando/models/spfq_list.py,sha256=Ba0nasvtMAPnJVukOCFZ1EvVuyEeXxiPjDX0N1t4C9w,839
|
|
457
464
|
meta_rando/randomizers.py,sha256=GpsV3kkqd-HupfnQw6Y7R172ZpOEpIbmVkXOwsOf-HA,1592
|
|
458
465
|
meta_reports/__init__.py,sha256=huYR-GaImMWZqv6puEYfY7y_8m1OA_hRVXRYNBvNLkQ,80
|
|
459
466
|
meta_reports/admin/__init__.py,sha256=V-rlMJJZCgnDaMOwk5PgZNIclOp_FW2y9yc-iCLQFHA,910
|
|
@@ -715,7 +722,7 @@ meta_sites/models.py,sha256=DLA-hDdFszAVNCe1sZqVoLmIXifFW0HeZsipP9D1Ic4,46
|
|
|
715
722
|
meta_sites/sites.py,sha256=H26Erar3_fLVl5wf2ILDM5C6wGEoi0dQbiSPmzb9OGw,1625
|
|
716
723
|
meta_subject/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
717
724
|
meta_subject/action_items.py,sha256=l7Bw4m0Hu72bemH70UToI__VCERz8YKEKcsWCL6BJxk,6804
|
|
718
|
-
meta_subject/admin/__init__.py,sha256=
|
|
725
|
+
meta_subject/admin/__init__.py,sha256=75Z-caHseLIT6Z5w5eYc8WUjmMlyNiGU8M5Ghiq95Tc,2830
|
|
719
726
|
meta_subject/admin/autocomplete_admin.py,sha256=bVxma7KTHhKHWqLPxbP2GwiGcHeBUyMutTDXZ2RomEY,1158
|
|
720
727
|
meta_subject/admin/birth_outcome_admin.py,sha256=76hwS4wIbuFpxAvIoQwjVqyr4znVGhWOnuKBuk1FIZ8,3242
|
|
721
728
|
meta_subject/admin/blood_results/__init__.py,sha256=24WaqyGYCj3F-8amy7HFEwet1Z1ZHgsVvdSrWmmGvVs,546
|
|
@@ -755,6 +762,7 @@ meta_subject/admin/patient_history_admin.py,sha256=xeHhoeZS-F7nXAopZI8HxAjZUFLDY
|
|
|
755
762
|
meta_subject/admin/physical_exam_admin.py,sha256=NnYsclV3dAQZO9f9IUIj44d8ttbCFFmAPi-KXF8uVQg,1874
|
|
756
763
|
meta_subject/admin/pregnancy_update_admin.py,sha256=g-pXELecNtxePvDGlx7Iwx7w0GNUtPMEw0q5eVdMAg0,929
|
|
757
764
|
meta_subject/admin/sf12_admin.py,sha256=1PDNewdE_JDcjfyh0tb0MEWnBgpE3-7W0tkNfWkSX5U,742
|
|
765
|
+
meta_subject/admin/spfg_admin.py,sha256=xAKximXRHtUgpuqDK4dmXbpN7OodLRQcEBbRy4Nb-iE,3522
|
|
758
766
|
meta_subject/admin/study_medication_admin.py,sha256=E1xZDDEMDoCSfgYhJ7E815ClSrh-A4HTY7iOy52auF4,6146
|
|
759
767
|
meta_subject/admin/subject_requisition_admin.py,sha256=CJxO4Qvphxm8RfjS0IFef9smMFVmVzI2KbSmdhpocXU,1864
|
|
760
768
|
meta_subject/admin/subject_visit_admin.py,sha256=FMJ6-aB_3JLrYnCAKM8vvYyWqN9P58RwR25JB1Po6bc,1405
|
|
@@ -764,8 +772,8 @@ meta_subject/admin/urine_pregnancy_admin.py,sha256=o90kDiRm28SqgSR8pwj4MVSICkzt_
|
|
|
764
772
|
meta_subject/admin_site.py,sha256=fxUn5QKgo6wYUG18HW11kVrPqWvmWV2_PzKbgZQM4pU,169
|
|
765
773
|
meta_subject/apps.py,sha256=iAQ8lizUpKa4gJnCGkTsuRQPtGWmSjnshZn8rZUguO8,289
|
|
766
774
|
meta_subject/baker_recipes.py,sha256=KEJQTjNH47KcGCR_2OxDwmSKhAWhmjiD3YsnqeqkzFU,2816
|
|
767
|
-
meta_subject/choices.py,sha256=
|
|
768
|
-
meta_subject/constants.py,sha256=
|
|
775
|
+
meta_subject/choices.py,sha256=m-7bftnK_GoFEkeCDbBzxJGf6nf_6Ll0OShUGBo62oo,7721
|
|
776
|
+
meta_subject/constants.py,sha256=LUbaJbgY88FgRiVStpWuyJn6LPhW_nUAfydPQkAL_84,1124
|
|
769
777
|
meta_subject/form_validators/__init__.py,sha256=2g1unLOkE4Wj1ZrWkXSdnZzYnV0kggn_SCpMrhnc_Rg,840
|
|
770
778
|
meta_subject/form_validators/birth_outcomes_form_validator.py,sha256=vujgXKIW4z8bJ536_9uBhETlbChhUvA3Rj5H8zR3UfI,349
|
|
771
779
|
meta_subject/form_validators/delivery_form_validator.py,sha256=mmi6mnr-DLa93uGMoqud_J1LuM1nPyu-VcNyIwEOXk8,3205
|
|
@@ -775,7 +783,7 @@ meta_subject/form_validators/egfr_drop_notification_form_validator.py,sha256=y5M
|
|
|
775
783
|
meta_subject/form_validators/followup_examination_form_validator.py,sha256=NS3Sa-bwC_HEe-CmezkFrbbjPanLe9p1v5ZOFspqgxg,4241
|
|
776
784
|
meta_subject/form_validators/glucose_form_validator.py,sha256=azIttaercmdE2-KM8hrlAzBmH3LHknrIxQ-o_s1kYcE,3979
|
|
777
785
|
meta_subject/form_validators/health_economics_form_validator.py,sha256=kp-LQU4ydBXlnYFt-0xKuVSb8Y4irlhz9d_X8ppvWgE,250
|
|
778
|
-
meta_subject/forms/__init__.py,sha256=
|
|
786
|
+
meta_subject/forms/__init__.py,sha256=Zu39xg6SPfQUuh231UWe6BbPqWrXA-CPVJJF_VPnY7s,2824
|
|
779
787
|
meta_subject/forms/birth_outcomes_form.py,sha256=qqhZNQKiYk8C8CFebZTQB0hOm4ONrgkTG7hfuK7kW-o,374
|
|
780
788
|
meta_subject/forms/blood_results/__init__.py,sha256=DYs2J30cgTPxvY9qDuKfr_kF_muoZ1iVmpu_I3wLpdM,528
|
|
781
789
|
meta_subject/forms/blood_results/blood_results_fbc_form.py,sha256=g6m0HE9I3DIxDPgk6TZUPVU-vliOb3Fiqe3kDyN7h38,714
|
|
@@ -812,6 +820,7 @@ meta_subject/forms/physical_exam_form.py,sha256=QgH1zAmYgp8Hi1tU-e68HaRRkZxf-6xG
|
|
|
812
820
|
meta_subject/forms/pregnancy_update_form.py,sha256=BTiWPoQ-HYbZhW0Go2DSqYU_e51pmJ_UIxEdSNlzTwE,559
|
|
813
821
|
meta_subject/forms/sf12_form.py,sha256=VDV4hyU9UckPX70isylfHWggcWZwiQfCWrpk9kGvxis,397
|
|
814
822
|
meta_subject/forms/slider_widget.py,sha256=aHUszQ1Xxjyf9Ph0echFMX1VuWl4mmabvWN2ixpRy-I,837
|
|
823
|
+
meta_subject/forms/spfq_form.py,sha256=WNMawCxrKCKq3gV1GOoZpxAeF5oAh4QBt6TMu1xGRv0,2123
|
|
815
824
|
meta_subject/forms/study_medication_form.py,sha256=zLPxVmxE3czWIRrSTnnD5-BRvIj5YDfOxhCNQELA9q4,3218
|
|
816
825
|
meta_subject/forms/subject_requisition_form.py,sha256=wf_IVqrwrgaZrPxwyS7Ku-NfWR9eWGW4N9VexANcnHA,950
|
|
817
826
|
meta_subject/forms/subject_visit_form.py,sha256=Zxyjb5-7wUmcLHD-M76ofuM8Vr92yzjvXqQ7GsB3U6o,1374
|
|
@@ -1056,7 +1065,12 @@ meta_subject/migrations/0224_bloodresultsfbc_abnormal_summary_and_more.py,sha256
|
|
|
1056
1065
|
meta_subject/migrations/0225_followupvitals_waist_circumference_and_more.py,sha256=50t7cUy6s5phxdpRBV7zSnkb4igqZkjU3Bjl2lFEPEY,1451
|
|
1057
1066
|
meta_subject/migrations/0226_followupvitals_waist_circumference_comment_and_more.py,sha256=E8EsKrrGBubuGkALTAOErXZ8nozfEcF4N1Ikpx586x4,3751
|
|
1058
1067
|
meta_subject/migrations/0227_alter_followupvitals_waist_circumference_comment_and_more.py,sha256=FmBinQXVVdQ5lDcXcxHWcpoU17p6cUXypi9lq58CkEg,4051
|
|
1059
|
-
meta_subject/migrations/0228_bloodresultshba1c_hba1c_datetime_and_more.py,sha256=
|
|
1068
|
+
meta_subject/migrations/0228_bloodresultshba1c_hba1c_datetime_and_more.py,sha256=bJSV5-XmNsoaL4Mgms6xK7Oh95ZLyuZM-IoOWPZj4Vk,94333
|
|
1069
|
+
meta_subject/migrations/0229_alter_glucosefbg_consent_model_and_more.py,sha256=-qy4sAda3F5FQitmotXeYGccLGD8KdBKg7Q0l9P3ycY,73555
|
|
1070
|
+
meta_subject/migrations/0230_alter_historicaldelivery_action_identifier_and_more.py,sha256=_3uAfAPvYQirX9awt5Mcvas6RLaZNP9ojEIQ6twSS2w,66935
|
|
1071
|
+
meta_subject/migrations/0231_alter_historicalmedicationadherence_consent_model_and_more.py,sha256=LMY0vJ4utO36Zpk0uugU_KlXkv9bCG9-nf8oFsUuWII,78654
|
|
1072
|
+
meta_subject/migrations/0232_alter_patienthistory_concomitant_conditions_and_more.py,sha256=vX0wJmbLQSg7JYnvzAt3zA20bfPz1AnxNpodKAxdYhM,43686
|
|
1073
|
+
meta_subject/migrations/0233_historicalspfq_spfq.py,sha256=U8imocD_gtCGTC0zUNt6UZlqZYBUtUNB7cEdFxBbnjA,46072
|
|
1060
1074
|
meta_subject/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1061
1075
|
meta_subject/model_mixins/__init__.py,sha256=fWZpFJ_Ex-TOJFjgSGjcrquKSCenCh_K9Hiy8QUg36o,439
|
|
1062
1076
|
meta_subject/model_mixins/arv_history_model_mixin.py,sha256=6ILacF2koyYmwZIFHmmQO1uIT1eWzrahXxhAlxpQiX0,2898
|
|
@@ -1064,7 +1078,7 @@ meta_subject/model_mixins/crf_model_mixin.py,sha256=UK1ycbYwaZ8LSNTJm74QJ5c-01HD
|
|
|
1064
1078
|
meta_subject/model_mixins/crf_with_action_model_mixin.py,sha256=q1Q16YyPjQlpDtCPOXRkO5C7Vr7JO_QL8xWC48Uz33M,298
|
|
1065
1079
|
meta_subject/model_mixins/search_slug_model_mixin.py,sha256=mEN2gDycLKoZiExM2_H3Dxz8AMAwRSrCq4vu3afr5hA,275
|
|
1066
1080
|
meta_subject/model_mixins/vitals_fields_model_mixin.py,sha256=Uimo-sQS-l4I3KyHej8t0_49mT2UakMKCbO8giYUMQw,2205
|
|
1067
|
-
meta_subject/models/__init__.py,sha256=
|
|
1081
|
+
meta_subject/models/__init__.py,sha256=d2ruW2PO_9tCPts8tprk7kj2ScpUokwwGCm1PXlnvjY,3009
|
|
1068
1082
|
meta_subject/models/birth_outcomes.py,sha256=DQp-8Cv5ZWBuaGdiYlL1V3uJaL6H2tf9gYPfYcMTCs8,3142
|
|
1069
1083
|
meta_subject/models/blood_results/__init__.py,sha256=F2jncEUtvrb4G9v5V6p3gSi4dI721CFVCImdJ9qFHmQ,530
|
|
1070
1084
|
meta_subject/models/blood_results/blood_results_fbc.py,sha256=kkOqCsqeIvCf2rw7vHGWMCEgo1_yiMDtTOi44aKtBro,1324
|
|
@@ -1106,6 +1120,7 @@ meta_subject/models/physical_exam.py,sha256=0QH10ZutmowM6_uLyHaMsO0UiH3RrVWhfZD_
|
|
|
1106
1120
|
meta_subject/models/pregnancy_update.py,sha256=yeoMeDkMQxUBjKYjFvqkQCwByTH50jU0QiNXchqJMZo,950
|
|
1107
1121
|
meta_subject/models/sf12.py,sha256=1f6cAMtBUXy7jMaacAU8RJFFv73r9c3rJjBbNl-bSM4,283
|
|
1108
1122
|
meta_subject/models/signals.py,sha256=Z5qoVkSmls9bVm2HwdbaBAPuI6X9Y8v-7PP5F-GQbiU,4568
|
|
1123
|
+
meta_subject/models/spfq.py,sha256=kJjwPsG9YNU8P1XHOmmFvuKX1C36Agm4Np2reWliYcc,6239
|
|
1109
1124
|
meta_subject/models/study_medication.py,sha256=1kA_w4pYT1gcunfiQ46KdM01pd1jrQqLt4JEPLvfTTo,461
|
|
1110
1125
|
meta_subject/models/subject_requisition.py,sha256=bSDwD-hpXeioH3xA7E6eGMu4hxWLDDSxhznfjrpXTjw,341
|
|
1111
1126
|
meta_subject/models/subject_visit.py,sha256=UQQ31lsJS0znw-8d2ft7VOPamn1o-cixHQ9L8rV1vWA,2153
|
|
@@ -1132,7 +1147,7 @@ meta_visit_schedule/visit_schedules/phase_three/schedule.py,sha256=LU1HRaV6o1UeK
|
|
|
1132
1147
|
meta_visit_schedule/visit_schedules/phase_three/schedule_dm_referral.py,sha256=q12p5wXc2D7lSiJVBnoSQw8Q3vL6uDx1t3PuDJO-Z-U,1735
|
|
1133
1148
|
meta_visit_schedule/visit_schedules/phase_three/schedule_pregnancy.py,sha256=bEpbpCX3vfZmnsqudr0z8PU5kiaX4ws1sO5Im98Mo28,1106
|
|
1134
1149
|
meta_visit_schedule/visit_schedules/phase_three/visit_schedule.py,sha256=ak4qazeKlpIlvpqrK9hDDO0fwWuWyvb4Ec-JU31IJxc,654
|
|
1135
|
-
meta_edc-1.1.
|
|
1136
|
-
meta_edc-1.1.
|
|
1137
|
-
meta_edc-1.1.
|
|
1138
|
-
meta_edc-1.1.
|
|
1150
|
+
meta_edc-1.1.19.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
1151
|
+
meta_edc-1.1.19.dist-info/WHEEL,sha256=-neZj6nU9KAMg2CnCY6T3w8J53nx1kFGw_9HfoSzM60,79
|
|
1152
|
+
meta_edc-1.1.19.dist-info/METADATA,sha256=pms4LnnVTVZfwtk5LloEcHLiyPqQ6sgziU_MbCzrp4o,5136
|
|
1153
|
+
meta_edc-1.1.19.dist-info/RECORD,,
|
meta_labs/list_data.py
CHANGED
|
@@ -6,11 +6,11 @@ model_data = {
|
|
|
6
6
|
"address": "NIMR Tanzania",
|
|
7
7
|
"postal_code": "-",
|
|
8
8
|
"city": "Dar es Salaam",
|
|
9
|
-
"state":
|
|
9
|
+
"state": "",
|
|
10
10
|
"country": "Tanzania",
|
|
11
11
|
"telephone": "+255763244779",
|
|
12
12
|
"mobile": "+255763244779",
|
|
13
|
-
"fax":
|
|
13
|
+
"fax": "",
|
|
14
14
|
"email": "sokoinele@yahoo.co.uk",
|
|
15
15
|
}
|
|
16
16
|
]
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# Generated by Django 5.2.6 on 2025-09-30 05:07
|
|
2
|
+
|
|
3
|
+
import _socket
|
|
4
|
+
import django.db.models.deletion
|
|
5
|
+
import django.db.models.manager
|
|
6
|
+
import django.utils.timezone
|
|
7
|
+
import django_audit_fields.fields.hostname_modification_field
|
|
8
|
+
import django_audit_fields.fields.userfield
|
|
9
|
+
import django_audit_fields.fields.uuid_auto_field
|
|
10
|
+
import django_revision.revision_field
|
|
11
|
+
import edc_sites.managers
|
|
12
|
+
from django.db import migrations, models
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class Migration(migrations.Migration):
|
|
16
|
+
|
|
17
|
+
dependencies = [
|
|
18
|
+
(
|
|
19
|
+
"meta_rando",
|
|
20
|
+
"0006_alter_historicalrandomizationlist_allocated_user_and_more",
|
|
21
|
+
),
|
|
22
|
+
("sites", "0002_alter_domain_unique"),
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
operations = [
|
|
26
|
+
migrations.CreateModel(
|
|
27
|
+
name="SpfqList",
|
|
28
|
+
fields=[
|
|
29
|
+
(
|
|
30
|
+
"revision",
|
|
31
|
+
django_revision.revision_field.RevisionField(
|
|
32
|
+
blank=True,
|
|
33
|
+
default="",
|
|
34
|
+
editable=False,
|
|
35
|
+
help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
|
|
36
|
+
max_length=75,
|
|
37
|
+
verbose_name="Revision",
|
|
38
|
+
),
|
|
39
|
+
),
|
|
40
|
+
(
|
|
41
|
+
"created",
|
|
42
|
+
models.DateTimeField(blank=True, default=django.utils.timezone.now),
|
|
43
|
+
),
|
|
44
|
+
(
|
|
45
|
+
"modified",
|
|
46
|
+
models.DateTimeField(blank=True, default=django.utils.timezone.now),
|
|
47
|
+
),
|
|
48
|
+
(
|
|
49
|
+
"user_created",
|
|
50
|
+
django_audit_fields.fields.userfield.UserField(
|
|
51
|
+
blank=True,
|
|
52
|
+
default="",
|
|
53
|
+
help_text="Updated by admin.save_model",
|
|
54
|
+
max_length=50,
|
|
55
|
+
verbose_name="user created",
|
|
56
|
+
),
|
|
57
|
+
),
|
|
58
|
+
(
|
|
59
|
+
"user_modified",
|
|
60
|
+
django_audit_fields.fields.userfield.UserField(
|
|
61
|
+
blank=True,
|
|
62
|
+
default="",
|
|
63
|
+
help_text="Updated by admin.save_model",
|
|
64
|
+
max_length=50,
|
|
65
|
+
verbose_name="user modified",
|
|
66
|
+
),
|
|
67
|
+
),
|
|
68
|
+
(
|
|
69
|
+
"hostname_created",
|
|
70
|
+
models.CharField(
|
|
71
|
+
blank=True,
|
|
72
|
+
default=_socket.gethostname,
|
|
73
|
+
help_text="System field. (modified on create only)",
|
|
74
|
+
max_length=60,
|
|
75
|
+
verbose_name="Hostname created",
|
|
76
|
+
),
|
|
77
|
+
),
|
|
78
|
+
(
|
|
79
|
+
"hostname_modified",
|
|
80
|
+
django_audit_fields.fields.hostname_modification_field.HostnameModificationField(
|
|
81
|
+
blank=True,
|
|
82
|
+
default="",
|
|
83
|
+
help_text="System field. (modified on every save)",
|
|
84
|
+
max_length=50,
|
|
85
|
+
verbose_name="Hostname modified",
|
|
86
|
+
),
|
|
87
|
+
),
|
|
88
|
+
(
|
|
89
|
+
"device_created",
|
|
90
|
+
models.CharField(
|
|
91
|
+
blank=True,
|
|
92
|
+
default="",
|
|
93
|
+
max_length=10,
|
|
94
|
+
verbose_name="Device created",
|
|
95
|
+
),
|
|
96
|
+
),
|
|
97
|
+
(
|
|
98
|
+
"device_modified",
|
|
99
|
+
models.CharField(
|
|
100
|
+
blank=True,
|
|
101
|
+
default="",
|
|
102
|
+
max_length=10,
|
|
103
|
+
verbose_name="Device modified",
|
|
104
|
+
),
|
|
105
|
+
),
|
|
106
|
+
(
|
|
107
|
+
"locale_created",
|
|
108
|
+
models.CharField(
|
|
109
|
+
blank=True,
|
|
110
|
+
default="",
|
|
111
|
+
help_text="Auto-updated by Modeladmin",
|
|
112
|
+
max_length=10,
|
|
113
|
+
verbose_name="Locale created",
|
|
114
|
+
),
|
|
115
|
+
),
|
|
116
|
+
(
|
|
117
|
+
"locale_modified",
|
|
118
|
+
models.CharField(
|
|
119
|
+
blank=True,
|
|
120
|
+
default="",
|
|
121
|
+
help_text="Auto-updated by Modeladmin",
|
|
122
|
+
max_length=10,
|
|
123
|
+
verbose_name="Locale modified",
|
|
124
|
+
),
|
|
125
|
+
),
|
|
126
|
+
(
|
|
127
|
+
"id",
|
|
128
|
+
django_audit_fields.fields.uuid_auto_field.UUIDAutoField(
|
|
129
|
+
blank=True,
|
|
130
|
+
editable=False,
|
|
131
|
+
help_text="System auto field. UUID primary key.",
|
|
132
|
+
primary_key=True,
|
|
133
|
+
serialize=False,
|
|
134
|
+
),
|
|
135
|
+
),
|
|
136
|
+
("subject_identifier", models.CharField(max_length=50, unique=True)),
|
|
137
|
+
("sid", models.IntegerField(unique=True)),
|
|
138
|
+
("last_visit_code", models.CharField(max_length=25)),
|
|
139
|
+
("last_appt_datetime", models.DateTimeField()),
|
|
140
|
+
(
|
|
141
|
+
"gender",
|
|
142
|
+
models.CharField(
|
|
143
|
+
choices=[("M", "Male"), ("F", "Female")], max_length=10
|
|
144
|
+
),
|
|
145
|
+
),
|
|
146
|
+
(
|
|
147
|
+
"weight_bin",
|
|
148
|
+
models.CharField(
|
|
149
|
+
choices=[
|
|
150
|
+
("lt_35", "<35"),
|
|
151
|
+
("gte_35__lte_49", "35-49"),
|
|
152
|
+
("gte_50", ">=50"),
|
|
153
|
+
],
|
|
154
|
+
max_length=25,
|
|
155
|
+
),
|
|
156
|
+
),
|
|
157
|
+
("date_generated", models.DateTimeField()),
|
|
158
|
+
(
|
|
159
|
+
"site",
|
|
160
|
+
models.ForeignKey(
|
|
161
|
+
null=True,
|
|
162
|
+
on_delete=django.db.models.deletion.PROTECT,
|
|
163
|
+
related_name="+",
|
|
164
|
+
to="sites.site",
|
|
165
|
+
),
|
|
166
|
+
),
|
|
167
|
+
],
|
|
168
|
+
options={
|
|
169
|
+
"verbose_name": "SPFQ List",
|
|
170
|
+
"verbose_name_plural": "SPFQ List",
|
|
171
|
+
"abstract": False,
|
|
172
|
+
"default_permissions": (
|
|
173
|
+
"add",
|
|
174
|
+
"change",
|
|
175
|
+
"delete",
|
|
176
|
+
"view",
|
|
177
|
+
"export",
|
|
178
|
+
"import",
|
|
179
|
+
),
|
|
180
|
+
"default_manager_name": "objects",
|
|
181
|
+
"indexes": [
|
|
182
|
+
models.Index(
|
|
183
|
+
fields=["modified", "created"],
|
|
184
|
+
name="meta_rando__modifie_f4fcd8_idx",
|
|
185
|
+
),
|
|
186
|
+
models.Index(
|
|
187
|
+
fields=["user_modified", "user_created"],
|
|
188
|
+
name="meta_rando__user_mo_79b855_idx",
|
|
189
|
+
),
|
|
190
|
+
],
|
|
191
|
+
},
|
|
192
|
+
managers=[
|
|
193
|
+
("on_site", edc_sites.managers.CurrentSiteManager()),
|
|
194
|
+
("objects", django.db.models.manager.Manager()),
|
|
195
|
+
],
|
|
196
|
+
),
|
|
197
|
+
]
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
from django.db import models
|
|
2
2
|
from edc_constants.choices import GENDER
|
|
3
|
-
from edc_model import
|
|
3
|
+
from edc_model.models import BaseUuidModel
|
|
4
4
|
from edc_randomization.model_mixins import RandomizationListModelMixin
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
class RandomizationList(RandomizationListModelMixin,
|
|
7
|
+
class RandomizationList(RandomizationListModelMixin, BaseUuidModel):
|
|
8
8
|
gender = models.CharField(max_length=25, choices=GENDER)
|
|
9
9
|
|
|
10
|
-
class Meta(RandomizationListModelMixin.Meta,
|
|
10
|
+
class Meta(RandomizationListModelMixin.Meta, BaseUuidModel.Meta):
|
|
11
11
|
verbose_name = "Randomization List (Phase Three)"
|
|
12
12
|
verbose_name_plural = "Randomization List (Phase Three)"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
from edc_constants.choices import GENDER
|
|
3
|
+
from edc_identifier.model_mixins import UniqueSubjectIdentifierFieldMixin
|
|
4
|
+
from edc_model.models import BaseUuidModel
|
|
5
|
+
from edc_sites.model_mixins import SiteModelMixin
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class SpfqList(SiteModelMixin, UniqueSubjectIdentifierFieldMixin, BaseUuidModel):
|
|
9
|
+
sid = models.IntegerField(unique=True)
|
|
10
|
+
|
|
11
|
+
last_visit_code = models.CharField(max_length=25)
|
|
12
|
+
|
|
13
|
+
last_appt_datetime = models.DateTimeField()
|
|
14
|
+
|
|
15
|
+
gender = models.CharField(max_length=10, choices=GENDER)
|
|
16
|
+
|
|
17
|
+
weight_bin = models.CharField(
|
|
18
|
+
max_length=25,
|
|
19
|
+
choices=(("lt_35", "<35"), ("gte_35__lte_49", "35-49"), ("gte_50", ">=50")),
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
date_generated = models.DateTimeField()
|
|
23
|
+
|
|
24
|
+
class Meta(BaseUuidModel.Meta):
|
|
25
|
+
verbose_name = "SPFQ List"
|
|
26
|
+
verbose_name_plural = "SPFQ List"
|
meta_subject/admin/__init__.py
CHANGED
|
@@ -28,6 +28,7 @@ from .patient_history_admin import PatientHistoryAdmin
|
|
|
28
28
|
from .physical_exam_admin import PhysicalExamAdmin
|
|
29
29
|
from .pregnancy_update_admin import PregnancyUpdateAdmin
|
|
30
30
|
from .sf12_admin import Sf12Admin
|
|
31
|
+
from .spfg_admin import SpfqAdmin
|
|
31
32
|
from .study_medication_admin import StudyMedicationAdmin
|
|
32
33
|
from .subject_requisition_admin import SubjectRequisitionAdmin
|
|
33
34
|
from .subject_visit_admin import SubjectVisitAdmin
|
|
@@ -66,6 +67,7 @@ __all__ = [
|
|
|
66
67
|
"PhysicalExamAdmin",
|
|
67
68
|
"PregnancyUpdateAdmin",
|
|
68
69
|
"Sf12Admin",
|
|
70
|
+
"SpfqAdmin",
|
|
69
71
|
"StudyMedicationAdmin",
|
|
70
72
|
"SubjectRequisitionAdmin",
|
|
71
73
|
"SubjectVisitAdmin",
|