meta-edc 1.1.17__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.

Files changed (31) hide show
  1. meta_consent/admin/__init__.py +1 -0
  2. meta_consent/admin/subject_consent_spfq_admin.py +58 -0
  3. meta_consent/forms/__init__.py +2 -0
  4. meta_consent/forms/subject_consent_spfq_form.py +55 -0
  5. meta_consent/migrations/0033_historicalsubjectconsentspfq_subjectconsentspfq.py +615 -0
  6. meta_consent/models/__init__.py +2 -0
  7. meta_consent/models/subject_consent_spfq.py +103 -0
  8. meta_edc/settings/defaults.py +1 -1
  9. {meta_edc-1.1.17.dist-info → meta_edc-1.1.19.dist-info}/METADATA +5 -5
  10. {meta_edc-1.1.17.dist-info → meta_edc-1.1.19.dist-info}/RECORD +31 -16
  11. meta_labs/list_data.py +2 -2
  12. meta_rando/migrations/0007_spfqlist.py +197 -0
  13. meta_rando/models/__init__.py +2 -0
  14. meta_rando/{models.py → models/randomization_list.py} +3 -3
  15. meta_rando/models/spfq_list.py +26 -0
  16. meta_subject/admin/__init__.py +2 -0
  17. meta_subject/admin/spfg_admin.py +103 -0
  18. meta_subject/choices.py +37 -0
  19. meta_subject/constants.py +14 -0
  20. meta_subject/forms/__init__.py +2 -0
  21. meta_subject/forms/spfq_form.py +65 -0
  22. meta_subject/migrations/0228_bloodresultshba1c_hba1c_datetime_and_more.py +1 -6780
  23. meta_subject/migrations/0229_alter_glucosefbg_consent_model_and_more.py +1918 -0
  24. meta_subject/migrations/0230_alter_historicaldelivery_action_identifier_and_more.py +1733 -0
  25. meta_subject/migrations/0231_alter_historicalmedicationadherence_consent_model_and_more.py +2054 -0
  26. meta_subject/migrations/0232_alter_patienthistory_concomitant_conditions_and_more.py +1170 -0
  27. meta_subject/migrations/0233_historicalspfq_spfq.py +1066 -0
  28. meta_subject/models/__init__.py +2 -0
  29. meta_subject/models/spfq.py +190 -0
  30. {meta_edc-1.1.17.dist-info → meta_edc-1.1.19.dist-info}/WHEEL +0 -0
  31. {meta_edc-1.1.17.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"
@@ -550,7 +550,7 @@ if env("AWS_ENABLED"):
550
550
  AWS_LOCATION = env.str("AWS_LOCATION")
551
551
  AWS_IS_GZIPPED = True
552
552
  STORAGES = {"staticfiles": {"BACKEND": "storages.backends.s3boto3.S3Boto3Storage"}}
553
- STATIC_URL = urljoin(AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
553
+ STATIC_URL = urljoin(AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION) + "/"
554
554
  STATIC_ROOT = ""
555
555
  elif DEBUG:
556
556
  STATIC_URL = env.str("DJANGO_STATIC_URL")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meta-edc
3
- Version: 1.1.17
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.26
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.16 && \
92
- wget https://raw.githubusercontent.com/meta-trial/meta-edc/1.1.16/manage.py && \
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.16 && \
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=d_6yWMi1yGgKxq4kFQIr7NNj96GqLDppXE0P83A14WQ,285
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=owYPqBIxjy6U58sdWHrCgxqBY0ObE_tlIOXOcnTy7LM,361
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=qDfnpsbAP3hr5oKa80hkr5u9P2PN6KV8P5EMujfgt_8,465
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
@@ -229,7 +233,7 @@ meta_edc/models.py,sha256=DLA-hDdFszAVNCe1sZqVoLmIXifFW0HeZsipP9D1Ic4,46
229
233
  meta_edc/navbars.py,sha256=Rl2a62elRVTbkGVV9toYwwT388TE1BI7-1j1w2v1m-I,1208
230
234
  meta_edc/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
231
235
  meta_edc/settings/debug.py,sha256=XfYEL34kzpyiXQkTil34-r-NVKhmxs_kVQP2u5XtfVE,1313
232
- meta_edc/settings/defaults.py,sha256=hsYjkJDHivf7e1uwTjGJNYGg7cg5W7p_iBsmcCCGD2g,20233
236
+ meta_edc/settings/defaults.py,sha256=uHcahlXL1lmgIzekQrfR6_wb07jcrBCz6BuJHQ_l7zc,20239
233
237
  meta_edc/settings/live.py,sha256=A4gDWiUIgcRDUWaT4oEOHkGmaeLRPNsr7MPrl0r8AuI,289
234
238
  meta_edc/settings/logging.py,sha256=7RQ2guyuMhK3MtoojmnD0CVqiFZZ6ZT6zc7Rwn0nYGk,2115
235
239
  meta_edc/settings/minimal.py,sha256=ZZM7hZ-3AH33nGpLJLbYgs50oa5meKv_aGShidnm9G0,511
@@ -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=ZWvQ7ZuOgNZ8Cz-y5lzrAYCZC2HarlnlleFXdsI1P9c,477
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=GYFxlzBRcihpSe1tpfLGkD1NaMKA6kfGhgv-cz5hqk8,532
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=04MeBKUNsTc1DKJDE7r9w-KfZWxBEB-QLBIiazhzzFs,2779
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=lFseBsxliIRshCmqsIwdPnYXs1p_WT5D_Dfn2PcWONs,6754
768
- meta_subject/constants.py,sha256=6rpHsHj3CPV7ntdWxYScRhPVoj4YIxX2lUZdZ9lrFN0,704
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=LaxPRgHKMfmEWYnxHFbPkVFGSSNVrelG8dL2x49M5oU,2776
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=MZCdXg0TUCvsxFUD9WFPyzLUi7IY95W-Nipjd_gTClI,353586
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=NXw6Ba2QlYL7ZjZoWeoS1A5g6R3ONnOKtFEH8ltDTvg,2974
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.17.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
1136
- meta_edc-1.1.17.dist-info/WHEEL,sha256=-neZj6nU9KAMg2CnCY6T3w8J53nx1kFGw_9HfoSzM60,79
1137
- meta_edc-1.1.17.dist-info/METADATA,sha256=VIctWco1ISuics6LlG8G3YV0jai83ui3bJKZbcIt4Sk,5136
1138
- meta_edc-1.1.17.dist-info/RECORD,,
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": None,
9
+ "state": "",
10
10
  "country": "Tanzania",
11
11
  "telephone": "+255763244779",
12
12
  "mobile": "+255763244779",
13
- "fax": None,
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
+ ]
@@ -0,0 +1,2 @@
1
+ from .randomization_list import RandomizationList
2
+ from .spfq_list import SpfqList
@@ -1,12 +1,12 @@
1
1
  from django.db import models
2
2
  from edc_constants.choices import GENDER
3
- from edc_model import models as edc_models
3
+ from edc_model.models import BaseUuidModel
4
4
  from edc_randomization.model_mixins import RandomizationListModelMixin
5
5
 
6
6
 
7
- class RandomizationList(RandomizationListModelMixin, edc_models.BaseUuidModel):
7
+ class RandomizationList(RandomizationListModelMixin, BaseUuidModel):
8
8
  gender = models.CharField(max_length=25, choices=GENDER)
9
9
 
10
- class Meta(RandomizationListModelMixin.Meta, edc_models.BaseUuidModel.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"
@@ -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",