meta-edc 1.1.10__py3-none-any.whl → 1.1.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 meta-edc might be problematic. Click here for more details.

Files changed (1141) hide show
  1. meta_ae/__init__.py +0 -0
  2. meta_ae/action_items.py +2 -1
  3. meta_ae/admin/__init__.py +11 -0
  4. meta_ae/admin/ae_followup_admin.py +0 -0
  5. meta_ae/admin/ae_initial_admin.py +0 -0
  6. meta_ae/admin/ae_local_review_admin.py +0 -0
  7. meta_ae/admin/ae_sponsor_review_admin.py +0 -0
  8. meta_ae/admin/ae_susar_admin.py +1 -1
  9. meta_ae/admin/ae_tmg_admin.py +0 -0
  10. meta_ae/admin/death_report_admin.py +1 -1
  11. meta_ae/admin/death_report_tmg_admin.py +0 -0
  12. meta_ae/admin/death_report_tmg_second_admin.py +0 -0
  13. meta_ae/admin/hospitalization_admin.py +0 -0
  14. meta_ae/admin/modeladmin_mixins.py +10 -12
  15. meta_ae/admin_site.py +0 -0
  16. meta_ae/apps.py +0 -0
  17. meta_ae/baker_recipes.py +3 -3
  18. meta_ae/choices.py +0 -0
  19. meta_ae/constants.py +0 -0
  20. meta_ae/forms/__init__.py +13 -0
  21. meta_ae/forms/ae_followup_form.py +0 -0
  22. meta_ae/forms/ae_initial_form.py +0 -0
  23. meta_ae/forms/ae_local_review_form.py +0 -0
  24. meta_ae/forms/ae_sponsor_review_form.py +0 -0
  25. meta_ae/forms/ae_susar_form.py +0 -0
  26. meta_ae/forms/ae_tmg_form.py +0 -0
  27. meta_ae/forms/death_report_form.py +0 -0
  28. meta_ae/forms/death_report_tmg_form.py +0 -0
  29. meta_ae/forms/death_report_tmg_second_form.py +0 -0
  30. meta_ae/forms/hospitalization_form.py +0 -0
  31. meta_ae/forms/modelform_mixins.py +2 -2
  32. meta_ae/list_data.py +0 -0
  33. meta_ae/migrations/0001_initial.py +27 -27
  34. meta_ae/migrations/0002_auto_20191024_1000.py +0 -0
  35. meta_ae/migrations/0003_auto_20191102_0033.py +0 -0
  36. meta_ae/migrations/0004_auto_20191114_0821.py +0 -0
  37. meta_ae/migrations/0005_auto_20210624_0225.py +0 -0
  38. meta_ae/migrations/0006_aelocalreview_aesponsorreview.py +5 -5
  39. meta_ae/migrations/0007_auto_20210911_2036.py +0 -0
  40. meta_ae/migrations/0008_auto_20211011_1657.py +0 -0
  41. meta_ae/migrations/0009_auto_20220307_1929.py +0 -0
  42. meta_ae/migrations/0010_auto_20220704_1841.py +0 -0
  43. meta_ae/migrations/0011_alter_aefollowup_action_identifier_and_more.py +0 -0
  44. meta_ae/migrations/0012_auto_20220826_0258.py +0 -0
  45. meta_ae/migrations/0013_auto_20220826_0322.py +0 -0
  46. meta_ae/migrations/0014_auto_20220826_0406.py +0 -0
  47. meta_ae/migrations/0015_auto_20220907_0157.py +0 -0
  48. meta_ae/migrations/0016_rename_narrative_aetmg_investigator_narrative_and_more.py +0 -0
  49. meta_ae/migrations/0017_auto_20221130_2257.py +0 -0
  50. meta_ae/migrations/0018_alter_deathreporttmg_cause_of_death_agreed_and_more.py +0 -0
  51. meta_ae/migrations/0019_alter_aefollowup_managers_alter_aeinitial_managers_and_more.py +0 -0
  52. meta_ae/migrations/0020_alter_aesusar_options_alter_aetmg_options_and_more.py +0 -0
  53. meta_ae/migrations/0021_alter_aefollowup_site_alter_aeinitial_site_and_more.py +0 -0
  54. meta_ae/migrations/0022_historicalhospitalization_hospitalization.py +5 -13
  55. meta_ae/migrations/0023_alter_aefollowup_action_identifier_and_more.py +2017 -0
  56. meta_ae/migrations/__init__.py +0 -0
  57. meta_ae/model_mixins/__init__.py +2 -0
  58. meta_ae/model_mixins/ae_review_model_mixin.py +6 -6
  59. meta_ae/model_mixins/death_report_model_mixin.py +3 -3
  60. meta_ae/models/__init__.py +13 -0
  61. meta_ae/models/ae_followup.py +0 -0
  62. meta_ae/models/ae_initial.py +0 -0
  63. meta_ae/models/ae_local_review.py +0 -0
  64. meta_ae/models/ae_sponsor_review.py +0 -0
  65. meta_ae/models/ae_susar.py +0 -0
  66. meta_ae/models/ae_tmg.py +0 -0
  67. meta_ae/models/death_report.py +0 -0
  68. meta_ae/models/death_report_tmg.py +0 -0
  69. meta_ae/models/death_report_tmg_second.py +0 -0
  70. meta_ae/models/hospitalization.py +3 -3
  71. meta_ae/models/managers.py +0 -0
  72. meta_ae/pdf_reports/__init__.py +2 -0
  73. meta_ae/pdf_reports/ae_pdf_report.py +0 -0
  74. meta_ae/pdf_reports/death_pdf_report.py +0 -0
  75. meta_ae/pdf_reports/meta_pdf_report_mixin.py +0 -0
  76. meta_ae/templates/meta_ae/aeinitial_description.html +0 -0
  77. meta_ae/templatetags/__init__.py +0 -0
  78. meta_ae/templatetags/meta_ae_extras.py +0 -0
  79. meta_ae/urls.py +0 -0
  80. {meta_edc → meta_analytics}/.DS_Store +0 -0
  81. meta_analytics/README.rst +0 -0
  82. meta_analytics/__init__.py +0 -0
  83. meta_analytics/constants.py +0 -0
  84. meta_analytics/dataframes/__init__.py +24 -0
  85. meta_analytics/dataframes/constants.py +0 -0
  86. meta_analytics/dataframes/get_eos_df.py +1 -2
  87. meta_analytics/dataframes/get_glucose_df.py +6 -7
  88. meta_analytics/dataframes/get_glucose_fbg_df.py +2 -3
  89. meta_analytics/dataframes/get_glucose_fbg_ogtt_df.py +1 -2
  90. meta_analytics/dataframes/get_last_imp_visits_df.py +5 -6
  91. meta_analytics/dataframes/glucose_endpoints/__init__.py +2 -0
  92. meta_analytics/dataframes/glucose_endpoints/endpoint_by_date.py +13 -20
  93. meta_analytics/dataframes/glucose_endpoints/glucose_endpoints_by_date.py +9 -10
  94. meta_analytics/dataframes/screening/__init__.py +2 -0
  95. meta_analytics/dataframes/screening/get_glucose_tested_only_df.py +1 -2
  96. meta_analytics/dataframes/screening/get_screening_df.py +6 -10
  97. meta_analytics/dataframes/utils.py +3 -8
  98. meta_analytics/get_tables.py +1 -2
  99. meta_analytics/tables/__init__.py +2 -0
  100. meta_analytics/tables/eligible.py +0 -0
  101. meta_analytics/tables/enrolled/__init__.py +0 -0
  102. meta_analytics/tables/enrolled/glucose.py +0 -0
  103. meta_analytics/tables/has_dm.py +0 -0
  104. meta_analytics/utils.py +0 -0
  105. meta_auth/__init__.py +0 -0
  106. meta_auth/apps.py +0 -0
  107. meta_auth/auth_objects.py +0 -0
  108. meta_auth/auths.py +0 -0
  109. meta_auth/urls.py +0 -0
  110. meta_consent/__init__.py +0 -0
  111. meta_consent/action_items.py +2 -1
  112. meta_consent/admin/__init__.py +6 -0
  113. meta_consent/admin/actions/__init__.py +2 -0
  114. meta_consent/admin/actions/create_missing_prescriptions.py +1 -1
  115. meta_consent/admin/list_filters.py +2 -2
  116. meta_consent/admin/modeladmin_mixins.py +3 -4
  117. meta_consent/admin/subject_consent_admin.py +0 -0
  118. meta_consent/admin/subject_consent_v1_admin.py +0 -0
  119. meta_consent/admin/subject_consent_v1_ext_admin.py +2 -2
  120. meta_consent/admin_site.py +0 -0
  121. meta_consent/apps.py +0 -0
  122. meta_consent/baker_recipes.py +7 -8
  123. meta_consent/consents.py +0 -0
  124. meta_consent/constants.py +0 -0
  125. meta_consent/form_validators/__init__.py +2 -0
  126. meta_consent/form_validators/subject_consent_form_validator.py +0 -0
  127. meta_consent/forms/__init__.py +7 -0
  128. meta_consent/forms/subject_consent_form.py +0 -0
  129. meta_consent/forms/subject_consent_v1_ext_form.py +2 -3
  130. meta_consent/forms/subject_consent_v1_form.py +0 -0
  131. meta_consent/forms/subject_reconsent_form.py +4 -4
  132. meta_consent/locale/lg/LC_MESSAGES/django.po +0 -0
  133. meta_consent/locale/sw/LC_MESSAGES/django.po +0 -0
  134. meta_consent/management/__init__.py +0 -0
  135. meta_consent/management/commands/__init__.py +0 -0
  136. meta_consent/management/commands/create_missing_prescriptions.py +4 -2
  137. meta_consent/migrations/0001_initial.py +9 -9
  138. meta_consent/migrations/0002_auto_20191024_1000.py +0 -0
  139. meta_consent/migrations/0003_auto_20200325_0901.py +0 -0
  140. meta_consent/migrations/0004_auto_20210624_0225.py +0 -0
  141. meta_consent/migrations/0005_alter_subjectconsent_options.py +0 -0
  142. meta_consent/migrations/0006_auto_20210911_2036.py +0 -0
  143. meta_consent/migrations/0007_auto_20220128_1719.py +0 -0
  144. meta_consent/migrations/0008_auto_20220412_2151.py +0 -0
  145. meta_consent/migrations/0009_auto_20220704_1841.py +0 -0
  146. meta_consent/migrations/0010_alter_historicalsubjectreconsent_action_identifier_and_more.py +0 -0
  147. meta_consent/migrations/0011_auto_20220826_0258.py +0 -0
  148. meta_consent/migrations/0012_auto_20220826_0322.py +0 -0
  149. meta_consent/migrations/0013_auto_20220826_0406.py +0 -0
  150. meta_consent/migrations/0014_alter_subjectconsent_managers.py +0 -0
  151. meta_consent/migrations/0015_auto_20220914_0542.py +0 -0
  152. meta_consent/migrations/0016_auto_20220914_0547.py +0 -0
  153. meta_consent/migrations/0017_auto_20220929_1742.py +0 -0
  154. meta_consent/migrations/0018_alter_subjectconsent_options_and_more.py +0 -0
  155. meta_consent/migrations/0019_alter_subjectconsent_options_and_more.py +0 -0
  156. meta_consent/migrations/0020_historicalsubjectconsent_model_name_and_more.py +0 -0
  157. meta_consent/migrations/0021_auto_20240111_0442.py +0 -0
  158. meta_consent/migrations/0022_alter_historicalsubjectconsent_site_and_more.py +0 -0
  159. meta_consent/migrations/0023_subjectconsentv1_and_more.py +0 -0
  160. meta_consent/migrations/0024_historicalsubjectconsentv1.py +3 -8
  161. meta_consent/migrations/0025_alter_historicalsubjectconsent_first_name_and_more.py +0 -0
  162. meta_consent/migrations/0026_historicalsubjectconsentv1ext_subjectconsentv1ext.py +5 -14
  163. meta_consent/migrations/0027_auto_20250111_0344.py +0 -0
  164. meta_consent/migrations/0028_historicalsubjectconsentv1ext_assessment_score_and_more.py +0 -0
  165. meta_consent/migrations/0029_alter_historicalsubjectconsentv1ext_agrees_to_extension_and_more.py +0 -0
  166. meta_consent/migrations/0030_auto_20250120_2114.py +0 -0
  167. meta_consent/migrations/0031_alter_historicalsubjectconsent_guardian_name_and_more.py +0 -0
  168. meta_consent/migrations/0032_alter_historicalsubjectconsent_device_created_and_more.py +678 -0
  169. meta_consent/migrations/__init__.py +0 -0
  170. meta_consent/models/__init__.py +9 -0
  171. meta_consent/models/model_mixins.py +1 -2
  172. meta_consent/models/signals.py +9 -10
  173. meta_consent/models/subject_consent.py +1 -1
  174. meta_consent/models/subject_consent_v1.py +0 -0
  175. meta_consent/models/subject_consent_v1_ext.py +0 -0
  176. meta_consent/models/subject_reconsent.py +3 -3
  177. meta_consent/urls.py +0 -0
  178. meta_dashboard/__init__.py +0 -0
  179. meta_dashboard/apps.py +0 -0
  180. meta_dashboard/locale/lg/LC_MESSAGES/django.po +0 -0
  181. meta_dashboard/locale/sw/LC_MESSAGES/django.po +0 -0
  182. meta_dashboard/migrations/__init__.py +0 -0
  183. meta_dashboard/navbars.py +0 -0
  184. meta_dashboard/patterns.py +1 -1
  185. meta_dashboard/templates/meta_dashboard/buttons/add_consent_button.html +0 -0
  186. meta_dashboard/templates/meta_dashboard/buttons/dashboard_button.html +0 -0
  187. meta_dashboard/templates/meta_dashboard/buttons/eligibility_button.html +0 -0
  188. meta_dashboard/templates/meta_dashboard/buttons/refusal_button.html +0 -0
  189. meta_dashboard/templates/meta_dashboard/buttons/screening_button.html +0 -0
  190. meta_dashboard/templates/meta_dashboard/screening/listboard.html +0 -0
  191. meta_dashboard/templates/meta_dashboard/subject/dashboard/sidebar.html +0 -0
  192. meta_dashboard/templates/meta_dashboard/subject/dashboard/top_bar.html +0 -0
  193. meta_dashboard/templates/meta_dashboard/subject/dashboard.html +0 -0
  194. meta_dashboard/templates/meta_dashboard/subject/listboard.html +0 -0
  195. meta_dashboard/templatetags/__init__.py +0 -0
  196. meta_dashboard/templatetags/meta_dashboard_extras.py +1 -1
  197. meta_dashboard/urls.py +0 -0
  198. meta_dashboard/view_utils/__init__.py +7 -0
  199. meta_dashboard/view_utils/subject_screening_button.py +9 -16
  200. meta_dashboard/views/__init__.py +8 -0
  201. meta_dashboard/views/ae/__init__.py +2 -0
  202. meta_dashboard/views/ae/ae_listboard_view.py +1 -1
  203. meta_dashboard/views/ae/death_report_listboard_view.py +1 -1
  204. meta_dashboard/views/screening/__init__.py +2 -0
  205. meta_dashboard/views/screening/listboard_view.py +0 -0
  206. meta_dashboard/views/subject/__init__.py +2 -0
  207. meta_dashboard/views/subject/dashboard/__init__.py +2 -0
  208. meta_dashboard/views/subject/dashboard/dashboard_view.py +1 -1
  209. meta_dashboard/views/subject/listboard/__init__.py +2 -0
  210. meta_dashboard/views/subject/listboard/listboard_view.py +0 -0
  211. meta_data_manager/__init__.py +0 -0
  212. meta_data_manager/apps.py +0 -0
  213. meta_data_manager/data_manager.py +0 -0
  214. meta_data_manager/handlers.py +0 -0
  215. meta_edc/__init__.py +1 -1
  216. meta_edc/admin.py +0 -0
  217. meta_edc/apps.py +0 -0
  218. meta_edc/asgi.py +0 -0
  219. meta_edc/celery.py +1 -1
  220. meta_edc/celery_live.py +1 -1
  221. meta_edc/celery_uat.py +1 -1
  222. meta_edc/management/__init__.py +0 -0
  223. meta_edc/management/commands/__init__.py +0 -0
  224. meta_edc/management/commands/update_forms_reference.py +10 -12
  225. meta_edc/meta_version.py +0 -0
  226. meta_edc/migrations/__init__.py +0 -0
  227. meta_edc/model_callers.py +0 -0
  228. meta_edc/models.py +0 -0
  229. meta_edc/navbars.py +0 -0
  230. meta_edc/settings/__init__.py +0 -0
  231. meta_edc/settings/debug.py +5 -4
  232. meta_edc/settings/defaults.py +2 -2
  233. meta_edc/settings/live.py +3 -1
  234. meta_edc/settings/logging.py +4 -4
  235. meta_edc/settings/minimal.py +4 -5
  236. meta_edc/settings/uat.py +3 -1
  237. meta_edc/templates/meta_edc/base.html +0 -0
  238. meta_edc/templates/meta_edc/home.html +0 -0
  239. meta_edc/urls.py +0 -0
  240. meta_edc/utils.py +0 -0
  241. meta_edc/views/__init__.py +2 -0
  242. meta_edc/views/home_view.py +0 -0
  243. meta_edc/wsgi.py +0 -0
  244. meta_edc/wsgi_live.py +0 -0
  245. meta_edc/wsgi_uat.py +0 -0
  246. meta_edc-1.1.13.dist-info/METADATA +175 -0
  247. meta_edc-1.1.13.dist-info/RECORD +1136 -0
  248. {meta_edc-1.1.10.dist-info → meta_edc-1.1.13.dist-info}/WHEEL +1 -1
  249. {meta_edc-1.1.10.dist-info → meta_edc-1.1.13.dist-info}/licenses/LICENSE +0 -0
  250. meta_export/__init__.py +0 -0
  251. meta_export/admin_site.py +0 -0
  252. meta_export/apps.py +0 -0
  253. meta_export/urls.py +0 -0
  254. meta_labs/__init__.py +0 -0
  255. meta_labs/aliquot_types.py +0 -0
  256. meta_labs/apps.py +0 -0
  257. meta_labs/lab_profiles.py +0 -0
  258. meta_labs/labs.py +0 -0
  259. meta_labs/list_data.py +0 -0
  260. meta_labs/processing_profiles.py +0 -0
  261. meta_labs/reportables.py +0 -0
  262. meta_lists/__init__.py +0 -0
  263. meta_lists/admin.py +0 -0
  264. meta_lists/admin_site.py +0 -0
  265. meta_lists/apps.py +0 -0
  266. meta_lists/list_data.py +0 -0
  267. meta_lists/migrations/0001_initial.py +0 -0
  268. meta_lists/migrations/0002_auto_20191026_2231.py +0 -0
  269. meta_lists/migrations/0003_auto_20191102_0033.py +0 -0
  270. meta_lists/migrations/0004_auto_20191102_1859.py +0 -0
  271. meta_lists/migrations/0005_auto_20191104_0930.py +0 -0
  272. meta_lists/migrations/0006_auto_20200514_1959.py +0 -0
  273. meta_lists/migrations/0007_auto_20200516_2356.py +0 -0
  274. meta_lists/migrations/0008_auto_20200528_1517.py +0 -0
  275. meta_lists/migrations/0009_auto_20200613_2041.py +0 -0
  276. meta_lists/migrations/0010_auto_20200617_1738.py +0 -0
  277. meta_lists/migrations/0011_auto_20210624_0225.py +0 -0
  278. meta_lists/migrations/0012_auto_20210728_1809.py +0 -0
  279. meta_lists/migrations/0013_transferreasons_and_more.py +0 -0
  280. meta_lists/migrations/0014_auto_20220913_2139.py +0 -0
  281. meta_lists/migrations/0015_abnormalfootappearanceobservations_extra_value_and_more.py +0 -0
  282. meta_lists/migrations/0016_alter_abnormalfootappearanceobservations_options_and_more.py +0 -0
  283. meta_lists/migrations/0017_complications_dmmedications_dmtreatments_and_more.py +0 -0
  284. meta_lists/migrations/0018_missedreferralreasons.py +0 -0
  285. meta_lists/migrations/0019_auto_20250128_0143.py +0 -0
  286. meta_lists/migrations/0020_alter_abnormalfootappearanceobservations_extra_value_and_more.py +404 -0
  287. meta_lists/migrations/__init__.py +0 -0
  288. meta_lists/models.py +0 -0
  289. meta_lists/urls.py +0 -0
  290. meta_pharmacy/__init__.py +0 -0
  291. meta_pharmacy/admin/__init__.py +5 -0
  292. meta_pharmacy/admin/rx_admin.py +0 -0
  293. meta_pharmacy/admin/substitutions_admin.py +2 -2
  294. meta_pharmacy/admin_site.py +0 -0
  295. meta_pharmacy/apps.py +0 -0
  296. meta_pharmacy/constants.py +0 -0
  297. meta_pharmacy/forms/__init__.py +2 -0
  298. meta_pharmacy/forms/rx_form.py +0 -0
  299. meta_pharmacy/forms/substitutions_form.py +6 -4
  300. meta_pharmacy/label_configs.py +0 -0
  301. meta_pharmacy/labels/__init__.py +4 -2
  302. meta_pharmacy/labels/draw_label_for_subject_with_barcode.py +1 -2
  303. meta_pharmacy/labels/draw_label_for_subject_with_code128.py +0 -0
  304. meta_pharmacy/labels/draw_label_with_test_data.py +2 -2
  305. meta_pharmacy/labels/label_data.py +1 -2
  306. meta_pharmacy/labels/print_sheets.py +4 -6
  307. meta_pharmacy/list_data.py +0 -0
  308. meta_pharmacy/management/__init__.py +0 -0
  309. meta_pharmacy/management/commands/__init__.py +0 -0
  310. meta_pharmacy/management/commands/update_initial_pharmacy_data.py +0 -0
  311. meta_pharmacy/migrations/0001_initial.py +0 -0
  312. meta_pharmacy/migrations/0002_initial.py +7 -20
  313. meta_pharmacy/migrations/0003_auto_20240909_2335.py +3 -2
  314. meta_pharmacy/migrations/0004_alter_historicalsubstitutions_report_datetime_and_more.py +0 -0
  315. meta_pharmacy/migrations/0005_auto_20240911_0352.py +0 -0
  316. meta_pharmacy/migrations/0006_lotnumber_label.py +5 -14
  317. meta_pharmacy/migrations/0007_lotnumber_medication.py +0 -0
  318. meta_pharmacy/migrations/0008_remove_lotnumber_medication_and_more.py +5 -6
  319. meta_pharmacy/migrations/0009_remove_historicalrx_slug.py +0 -0
  320. meta_pharmacy/migrations/0010_alter_historicallabeldata_device_created_and_more.py +382 -0
  321. meta_pharmacy/migrations/__init__.py +0 -0
  322. meta_pharmacy/models/__init__.py +7 -0
  323. meta_pharmacy/models/label_data.py +4 -5
  324. meta_pharmacy/models/rx.py +0 -0
  325. meta_pharmacy/models/rx_label.py +0 -0
  326. meta_pharmacy/models/substitutions.py +3 -3
  327. meta_pharmacy/prepare_meta_pharmacy.py +1 -1
  328. meta_pharmacy/urls.py +0 -0
  329. meta_pharmacy/utils/__init__.py +2 -0
  330. meta_pharmacy/utils/update_initial_pharmacy_data.py +1 -1
  331. meta_prn/__init__.py +0 -0
  332. meta_prn/action_items.py +0 -0
  333. meta_prn/admin/__init__.py +16 -0
  334. meta_prn/admin/dm_referral_admin.py +2 -1
  335. meta_prn/admin/end_of_study_admin.py +6 -7
  336. meta_prn/admin/loss_to_followup_admin.py +3 -2
  337. meta_prn/admin/off_study_medication_admin.py +5 -6
  338. meta_prn/admin/offschedule_admin.py +5 -6
  339. meta_prn/admin/offschedule_dm_referral_admin.py +6 -6
  340. meta_prn/admin/offschedule_postnatal_admin.py +7 -7
  341. meta_prn/admin/offschedule_pregnancy_admin.py +8 -7
  342. meta_prn/admin/onschedule_admin.py +7 -8
  343. meta_prn/admin/onschedule_dm_referral_admin.py +6 -7
  344. meta_prn/admin/pregnancy_notification_admin.py +5 -6
  345. meta_prn/admin/protocol_incident_admin.py +1 -1
  346. meta_prn/admin/subject_transfer_admin.py +1 -1
  347. meta_prn/admin_site.py +0 -0
  348. meta_prn/apps.py +0 -0
  349. meta_prn/baker_recipes.py +4 -4
  350. meta_prn/choices.py +0 -0
  351. meta_prn/constants.py +0 -0
  352. meta_prn/form_validators/__init__.py +5 -0
  353. meta_prn/form_validators/end_of_study.py +2 -2
  354. meta_prn/form_validators/protocol_incident.py +0 -0
  355. meta_prn/forms/__init__.py +13 -0
  356. meta_prn/forms/dm_referral_form.py +0 -0
  357. meta_prn/forms/end_of_study_form.py +0 -0
  358. meta_prn/forms/loss_to_followup_form.py +0 -0
  359. meta_prn/forms/off_study_medication_form.py +0 -0
  360. meta_prn/forms/offschedule_dm_referral_form.py +0 -0
  361. meta_prn/forms/offschedule_form.py +0 -0
  362. meta_prn/forms/offschedule_pregnancy_form.py +0 -0
  363. meta_prn/forms/pregnancy_notification_form.py +0 -0
  364. meta_prn/forms/protocol_incident_form.py +0 -0
  365. meta_prn/forms/subject_transfer_form.py +0 -0
  366. meta_prn/list_data.py +0 -0
  367. meta_prn/migrations/0001_initial.py +25 -25
  368. meta_prn/migrations/0002_auto_20191024_1000.py +0 -0
  369. meta_prn/migrations/0003_auto_20200120_2020.py +0 -0
  370. meta_prn/migrations/0004_auto_20200403_0332.py +0 -0
  371. meta_prn/migrations/0005_auto_20200524_1944.py +0 -0
  372. meta_prn/migrations/0006_auto_20210624_0225.py +0 -0
  373. meta_prn/migrations/0007_auto_20210721_0335.py +0 -0
  374. meta_prn/migrations/0008_auto_20210910_0238.py +0 -0
  375. meta_prn/migrations/0009_auto_20210910_0239.py +0 -0
  376. meta_prn/migrations/0010_auto_20210910_1906.py +0 -0
  377. meta_prn/migrations/0011_auto_20210910_1911.py +0 -0
  378. meta_prn/migrations/0012_auto_20210911_0004.py +0 -0
  379. meta_prn/migrations/0013_auto_20210911_2036.py +0 -0
  380. meta_prn/migrations/0014_auto_20211003_1709.py +0 -0
  381. meta_prn/migrations/0015_auto_20211104_1447.py +0 -0
  382. meta_prn/migrations/0016_auto_20220128_1719.py +0 -0
  383. meta_prn/migrations/0017_auto_20220307_1929.py +5 -5
  384. meta_prn/migrations/0018_auto_20220309_2106.py +9 -9
  385. meta_prn/migrations/0019_auto_20220309_2230.py +0 -0
  386. meta_prn/migrations/0020_auto_20220310_0439.py +0 -0
  387. meta_prn/migrations/0021_auto_20220316_2147.py +13 -13
  388. meta_prn/migrations/0022_auto_20220318_0133.py +9 -9
  389. meta_prn/migrations/0023_auto_20220415_1747.py +0 -0
  390. meta_prn/migrations/0024_alter_protocoldeviationviolation_violation.py +0 -0
  391. meta_prn/migrations/0025_alter_historicalprotocoldeviationviolation_options_and_more.py +0 -0
  392. meta_prn/migrations/0026_remove_historicalprotocoldeviationviolation_violation_type_and_more.py +0 -0
  393. meta_prn/migrations/0027_rename_historicalprotocoldeviationviolation_historicalprotocolincident_and_more.py +0 -0
  394. meta_prn/migrations/0028_historicalpregnancynotification_bhcg_date_and_more.py +0 -0
  395. meta_prn/migrations/0029_alter_historicalpregnancynotification_edd_and_more.py +0 -0
  396. meta_prn/migrations/0030_auto_20220627_1119.py +0 -0
  397. meta_prn/migrations/0031_alter_historicaloffschedule_options_and_more.py +0 -0
  398. meta_prn/migrations/0032_historicalegfrnotification_egfrnotification.py +5 -13
  399. meta_prn/migrations/0033_remove_historicalegfrnotification_action_item_and_more.py +0 -0
  400. meta_prn/migrations/0034_auto_20220630_1110.py +0 -0
  401. meta_prn/migrations/0035_auto_20220630_1140.py +0 -0
  402. meta_prn/migrations/0036_remove_endofstudy_meta_prn_en_id_a50384_idx_and_more.py +0 -0
  403. meta_prn/migrations/0037_endofstudy_delivery_date_endofstudy_pregnancy_date_and_more.py +0 -0
  404. meta_prn/migrations/0038_alter_endofstudy_delivery_date_and_more.py +5 -13
  405. meta_prn/migrations/0039_historicaloffstudymedication_reason_other_and_more.py +0 -0
  406. meta_prn/migrations/0040_remove_historicaloffstudymedication_expected_restart_date_and_more.py +0 -0
  407. meta_prn/migrations/0041_endofstudy_transfer_date_and_more.py +5 -13
  408. meta_prn/migrations/0042_remove_endofstudy_investigator_decision_and_more.py +0 -0
  409. meta_prn/migrations/0043_auto_20220704_1841.py +0 -0
  410. meta_prn/migrations/0044_alter_endofstudy_action_identifier_and_more.py +0 -0
  411. meta_prn/migrations/0045_auto_20220826_0258.py +0 -0
  412. meta_prn/migrations/0046_auto_20220826_0322.py +0 -0
  413. meta_prn/migrations/0047_auto_20220826_0406.py +0 -0
  414. meta_prn/migrations/0048_auto_20220922_2236.py +0 -0
  415. meta_prn/migrations/0049_auto_20220929_1742.py +0 -0
  416. meta_prn/migrations/0050_auto_20221004_0629.py +0 -0
  417. meta_prn/migrations/0051_historicalprotocolincident_reasons_withdrawn_and_more.py +0 -0
  418. meta_prn/migrations/0052_alter_historicalprotocolincident_reasons_withdrawn_and_more.py +0 -0
  419. meta_prn/migrations/0053_alter_losstofollowup_options_and_more.py +0 -0
  420. meta_prn/migrations/0054_alter_losstofollowup_options_and_more.py +0 -0
  421. meta_prn/migrations/0055_alter_endofstudy_site_and_more.py +0 -0
  422. meta_prn/migrations/0056_alter_endofstudy_clinical_withdrawal_reason_and_more.py +0 -0
  423. meta_prn/migrations/0057_historicalonscheduledmreferral_and_more.py +13 -38
  424. meta_prn/migrations/0058_dmreferral_referral_note_and_more.py +0 -0
  425. meta_prn/migrations/0059_alter_historicaloffstudymedication_reason_and_more.py +0 -0
  426. meta_prn/migrations/0060_alter_onschedule_managers_and_more.py +0 -0
  427. meta_prn/migrations/0061_auto_20250115_2025.py +0 -0
  428. meta_prn/migrations/0062_alter_endofstudy_offstudy_reason_and_more.py +0 -0
  429. meta_prn/migrations/0063_historicaloffstudymedication_singleton_field_and_more.py +0 -0
  430. meta_prn/migrations/0064_auto_20250602_2143.py +0 -0
  431. meta_prn/migrations/0065_alter_historicaloffstudymedication_subject_identifier_and_more.py +0 -0
  432. meta_prn/migrations/0066_alter_historicallosstofollowup_subject_identifier_and_more.py +0 -0
  433. meta_prn/migrations/0067_alter_offschedule_managers_and_more.py +2557 -0
  434. meta_prn/migrations/__init__.py +0 -0
  435. meta_prn/models/__init__.py +20 -0
  436. meta_prn/models/dm_referral.py +0 -0
  437. meta_prn/models/end_of_study.py +0 -0
  438. meta_prn/models/loss_to_followup.py +0 -0
  439. meta_prn/models/off_study_medication.py +0 -0
  440. meta_prn/models/offschedule.py +4 -4
  441. meta_prn/models/onschedule.py +0 -0
  442. meta_prn/models/pregnancy_notification.py +0 -0
  443. meta_prn/models/protocol_incident.py +1 -1
  444. meta_prn/models/signals.py +0 -0
  445. meta_prn/models/subject_transfer.py +8 -0
  446. meta_prn/pregnancy_action_item_mixin.py +0 -0
  447. meta_prn/templates/meta_prn/eos/additional_instructions.html +0 -0
  448. meta_prn/templates/meta_prn/offschedule/additional_instructions.html +0 -0
  449. meta_prn/urls.py +0 -0
  450. meta_rando/__init__.py +0 -0
  451. meta_rando/apps.py +0 -0
  452. meta_rando/migrations/0001_initial.py +5 -5
  453. meta_rando/migrations/0002_auto_20220704_1841.py +0 -0
  454. meta_rando/migrations/0003_auto_20220826_1640.py +0 -0
  455. meta_rando/migrations/0004_alter_randomizationlist_options_and_more.py +0 -0
  456. meta_rando/migrations/0005_alter_randomizationlist_options_and_more.py +0 -0
  457. meta_rando/migrations/0006_alter_historicalrandomizationlist_allocated_user_and_more.py +130 -0
  458. meta_rando/migrations/__init__.py +0 -0
  459. meta_rando/models.py +0 -0
  460. meta_rando/randomizers.py +0 -0
  461. meta_reports/__init__.py +2 -0
  462. meta_reports/admin/__init__.py +16 -0
  463. meta_reports/admin/dbviews/__init__.py +13 -0
  464. meta_reports/admin/dbviews/glucose_summary_admin.py +6 -6
  465. meta_reports/admin/dbviews/imp_substitutions_admin.py +12 -11
  466. meta_reports/admin/dbviews/missing_screening_ogtt_admin/__init__.py +5 -0
  467. meta_reports/admin/dbviews/missing_screening_ogtt_admin/note_model_admin.py +6 -10
  468. meta_reports/admin/dbviews/missing_screening_ogtt_admin/unmanaged_model_admin.py +6 -6
  469. meta_reports/admin/dbviews/on_study_missing_lab_values_admin/__init__.py +2 -0
  470. meta_reports/admin/dbviews/on_study_missing_lab_values_admin/unmanaged_model_admin.py +0 -3
  471. meta_reports/admin/dbviews/on_study_missing_values_admin/__init__.py +2 -0
  472. meta_reports/admin/dbviews/on_study_missing_values_admin/unmanaged_model_admin.py +0 -0
  473. meta_reports/admin/dbviews/patient_history_missing_baseline_cd4_admin.py +8 -8
  474. meta_reports/admin/dbviews/unattended_three_in_row2_admin.py +6 -6
  475. meta_reports/admin/dbviews/unattended_three_in_row_admin.py +5 -5
  476. meta_reports/admin/dbviews/unattended_two_in_row_admin.py +5 -5
  477. meta_reports/admin/endpoints_admin.py +1 -1
  478. meta_reports/admin/endpoints_all_admin.py +0 -0
  479. meta_reports/admin/last_imp_refill_admin.py +9 -9
  480. meta_reports/admin/list_filters.py +2 -2
  481. meta_reports/admin/modeladmin_mixins.py +9 -16
  482. meta_reports/admin_site.py +0 -0
  483. meta_reports/ae_report.py +0 -0
  484. meta_reports/apps.py +0 -0
  485. meta_reports/death_report.py +1 -1
  486. meta_reports/forms/__init__.py +2 -0
  487. meta_reports/forms/missing_ogtt_note_form.py +2 -3
  488. meta_reports/management/__init__.py +0 -0
  489. meta_reports/management/commands/__init__.py +0 -0
  490. meta_reports/management/commands/generate_endpoints.py +5 -4
  491. meta_reports/migrations/0001_initial.py +0 -0
  492. meta_reports/migrations/0002_patienthistorymissingbaselinecd4_and_more.py +0 -0
  493. meta_reports/migrations/0003_auto_20240618_0505.py +0 -0
  494. meta_reports/migrations/0004_alter_patienthistorymissingbaselinecd4_table.py +0 -0
  495. meta_reports/migrations/0005_endpoints.py +0 -0
  496. meta_reports/migrations/0006_endpoints_baseline_datetime.py +0 -0
  497. meta_reports/migrations/0007_alter_endpoints_endpoint_label_and_more.py +0 -0
  498. meta_reports/migrations/0008_alter_endpoints_endpoint_label.py +0 -0
  499. meta_reports/migrations/0009_alter_endpoints_options.py +0 -0
  500. meta_reports/migrations/0010_alter_patienthistorymissingbaselinecd4_options_and_more.py +0 -0
  501. meta_reports/migrations/0011_auto_20240813_0156.py +0 -0
  502. meta_reports/migrations/0012_auto_20240813_1516.py +0 -0
  503. meta_reports/migrations/0013_auto_20240813_1516.py +0 -0
  504. meta_reports/migrations/0014_auto_20240813_1517.py +0 -0
  505. meta_reports/migrations/0015_alter_endpoints_site.py +0 -0
  506. meta_reports/migrations/0016_missingscreeningogtt.py +0 -0
  507. meta_reports/migrations/0017_auto_20240819_1711.py +0 -0
  508. meta_reports/migrations/0018_auto_20240819_1713.py +0 -0
  509. meta_reports/migrations/0019_auto_20240819_1721.py +0 -0
  510. meta_reports/migrations/0020_auto_20240819_1811.py +0 -0
  511. meta_reports/migrations/0021_auto_20240819_1817.py +0 -0
  512. meta_reports/migrations/0022_auto_20240819_1832.py +0 -0
  513. meta_reports/migrations/0023_endpoints_meta_report_subject_a56b22_idx.py +0 -0
  514. meta_reports/migrations/0024_glucosesummary.py +0 -0
  515. meta_reports/migrations/0025_auto_20240822_0115.py +0 -0
  516. meta_reports/migrations/0026_auto_20240822_0120.py +0 -0
  517. meta_reports/migrations/0027_auto_20240822_0140.py +0 -0
  518. meta_reports/migrations/0028_alter_glucosesummary_options.py +0 -0
  519. meta_reports/migrations/0029_auto_20240822_0149.py +0 -0
  520. meta_reports/migrations/0030_auto_20240822_1637.py +0 -0
  521. meta_reports/migrations/0031_endpointsproxy.py +0 -0
  522. meta_reports/migrations/0032_alter_endpointsproxy_options.py +0 -0
  523. meta_reports/migrations/0033_auto_20240823_0012.py +0 -0
  524. meta_reports/migrations/0034_auto_20240823_1642.py +0 -0
  525. meta_reports/migrations/0035_historicalmissingogttnote_missingogttnote.py +5 -14
  526. meta_reports/migrations/0036_historicalmissingogttnote_fasting_and_more.py +0 -0
  527. meta_reports/migrations/0037_historicalmissingogttnote_result_status_and_more.py +0 -0
  528. meta_reports/migrations/0038_alter_historicalmissingogttnote_fasting_and_more.py +0 -0
  529. meta_reports/migrations/0039_onstudymissingvalues.py +0 -0
  530. meta_reports/migrations/0040_auto_20240824_0412.py +0 -0
  531. meta_reports/migrations/0041_auto_20240828_2229.py +0 -0
  532. meta_reports/migrations/0042_onstudymissinglabvalues.py +0 -0
  533. meta_reports/migrations/0043_auto_20240828_2309.py +0 -0
  534. meta_reports/migrations/0044_auto_20240828_2323.py +0 -0
  535. meta_reports/migrations/0045_auto_20240829_0248.py +0 -0
  536. meta_reports/migrations/0046_auto_20240829_0250.py +0 -0
  537. meta_reports/migrations/0047_impsubstitutions.py +0 -0
  538. meta_reports/migrations/0048_auto_20240909_2338.py +0 -0
  539. meta_reports/migrations/0049_auto_20240911_0327.py +0 -0
  540. meta_reports/migrations/0050_alter_endpoints_created.py +0 -0
  541. meta_reports/migrations/0051_remove_endpoints_baseline_datetime_and_more.py +0 -0
  542. meta_reports/migrations/0052_lastimpvisit.py +0 -0
  543. meta_reports/migrations/0053_rename_lastimpvisit_lastimprefill_and_more.py +0 -0
  544. meta_reports/migrations/0054_auto_20250422_2003.py +0 -0
  545. meta_reports/migrations/0055_alter_glucosesummary_table.py +0 -0
  546. meta_reports/migrations/0056_auto_20250422_2214.py +0 -0
  547. meta_reports/migrations/0057_auto_20250422_2224.py +0 -0
  548. meta_reports/migrations/0058_auto_20250422_2232.py +0 -0
  549. meta_reports/migrations/0059_alter_endpoints_created_and_more.py +161 -0
  550. meta_reports/migrations/__init__.py +0 -0
  551. meta_reports/models/__init__.py +17 -0
  552. meta_reports/models/dbviews/README +0 -0
  553. meta_reports/models/dbviews/__init__.py +14 -0
  554. meta_reports/models/dbviews/glucose_summary/__init__.py +2 -0
  555. meta_reports/models/dbviews/glucose_summary/unmanaged_model.py +4 -5
  556. meta_reports/models/dbviews/glucose_summary/view_definition.py +0 -0
  557. meta_reports/models/dbviews/imp_substitutions/__init__.py +2 -0
  558. meta_reports/models/dbviews/imp_substitutions/unmanaged_model.py +0 -0
  559. meta_reports/models/dbviews/imp_substitutions/view_definition.py +1 -1
  560. meta_reports/models/dbviews/missing_screening_ogtt/__init__.py +2 -0
  561. meta_reports/models/dbviews/missing_screening_ogtt/note_model.py +1 -1
  562. meta_reports/models/dbviews/missing_screening_ogtt/unmanaged_model.py +4 -3
  563. meta_reports/models/dbviews/missing_screening_ogtt/view_definition.py +0 -0
  564. meta_reports/models/dbviews/on_study_missing_lab_values/__init__.py +2 -0
  565. meta_reports/models/dbviews/on_study_missing_lab_values/qa_cases.py +13 -11
  566. meta_reports/models/dbviews/on_study_missing_lab_values/unmanged_model.py +0 -0
  567. meta_reports/models/dbviews/on_study_missing_lab_values/view_definition.py +0 -0
  568. meta_reports/models/dbviews/on_study_missing_values/__init__.py +2 -0
  569. meta_reports/models/dbviews/on_study_missing_values/qa_cases.py +0 -0
  570. meta_reports/models/dbviews/on_study_missing_values/unmanged_model.py +0 -0
  571. meta_reports/models/dbviews/on_study_missing_values/view_definition.py +0 -0
  572. meta_reports/models/dbviews/patient_history_missing_baseline_cd4/__init__.py +2 -0
  573. meta_reports/models/dbviews/patient_history_missing_baseline_cd4/unmanaged_model.py +0 -0
  574. meta_reports/models/dbviews/patient_history_missing_baseline_cd4/view_definition.py +0 -0
  575. meta_reports/models/dbviews/unattended_three_in_row/__init__.py +2 -0
  576. meta_reports/models/dbviews/unattended_three_in_row/unmanaged_model.py +0 -0
  577. meta_reports/models/dbviews/unattended_three_in_row/view_definition.py +0 -0
  578. meta_reports/models/dbviews/unattended_three_in_row2/__init__.py +2 -0
  579. meta_reports/models/dbviews/unattended_three_in_row2/unmanaged_model.py +0 -0
  580. meta_reports/models/dbviews/unattended_three_in_row2/view_definition.py +0 -0
  581. meta_reports/models/dbviews/unattended_two_in_row/__init__.py +2 -0
  582. meta_reports/models/dbviews/unattended_two_in_row/unmanaged_model.py +0 -0
  583. meta_reports/models/dbviews/unattended_two_in_row/view_definition.py +0 -0
  584. meta_reports/models/endpoints.py +4 -4
  585. meta_reports/models/endpoints_proxy.py +0 -0
  586. meta_reports/models/last_imp_refill.py +2 -3
  587. meta_reports/pdf_report.py +2 -2
  588. meta_reports/tasks.py +1 -1
  589. meta_reports/templates/meta_reports/columns/subject_identifier_column.html +0 -0
  590. meta_reports/templates/meta_reports/endpoints_all_change_list_note.html +0 -0
  591. meta_reports/templates/meta_reports/endpoints_change_list_note.html +0 -0
  592. meta_reports/templates/meta_reports/last_imp_refill/changelist_note.html +0 -0
  593. meta_reports/urls.py +0 -0
  594. meta_reports/utils.py +0 -0
  595. meta_screening/__init__.py +0 -0
  596. meta_screening/admin/__init__.py +8 -0
  597. meta_screening/admin/fieldsets.py +13 -14
  598. meta_screening/admin/list_filters.py +6 -4
  599. meta_screening/admin/screening_part_one_admin.py +1 -2
  600. meta_screening/admin/screening_part_three_admin.py +2 -3
  601. meta_screening/admin/screening_part_two_admin.py +7 -10
  602. meta_screening/admin/subject_refusal_admin.py +5 -3
  603. meta_screening/admin/subject_screening_admin.py +4 -4
  604. meta_screening/admin_site.py +0 -0
  605. meta_screening/apps.py +0 -0
  606. meta_screening/baker_recipes.py +9 -9
  607. meta_screening/calculators.py +0 -0
  608. meta_screening/choices.py +0 -0
  609. meta_screening/constants.py +0 -0
  610. meta_screening/eligibility/__init__.py +9 -0
  611. meta_screening/eligibility/eligibility.py +7 -7
  612. meta_screening/eligibility/eligibility_part_one.py +0 -0
  613. meta_screening/eligibility/eligibility_part_three/__init__.py +2 -0
  614. meta_screening/eligibility/eligibility_part_three/base_eligibility_part_three.py +8 -8
  615. meta_screening/eligibility/eligibility_part_three/eligibility_part_three_phase_three.py +13 -14
  616. meta_screening/eligibility/eligibility_part_two.py +0 -0
  617. meta_screening/form_validators/__init__.py +8 -0
  618. meta_screening/form_validators/screening_part_one.py +0 -0
  619. meta_screening/form_validators/screening_part_three.py +0 -0
  620. meta_screening/form_validators/screening_part_two.py +0 -0
  621. meta_screening/form_validators/subject_refusal.py +0 -0
  622. meta_screening/form_validators/subject_screening.py +0 -0
  623. meta_screening/forms/__init__.py +20 -0
  624. meta_screening/forms/field_lists.py +16 -17
  625. meta_screening/forms/screening_part_one_form.py +2 -2
  626. meta_screening/forms/screening_part_three_form.py +5 -3
  627. meta_screening/forms/screening_part_two_form.py +1 -5
  628. meta_screening/forms/subject_refusal_form.py +0 -4
  629. meta_screening/forms/subject_screening_form.py +0 -4
  630. meta_screening/migrations/0001_initial.py +15 -15
  631. meta_screening/migrations/0002_auto_20191020_0612.py +0 -0
  632. meta_screening/migrations/0003_auto_20191020_0627.py +0 -0
  633. meta_screening/migrations/0004_auto_20191020_0738.py +0 -0
  634. meta_screening/migrations/0005_auto_20191021_0353.py +0 -0
  635. meta_screening/migrations/0006_auto_20191022_0134.py +0 -0
  636. meta_screening/migrations/0007_auto_20191024_1000.py +0 -0
  637. meta_screening/migrations/0008_auto_20191031_0745.py +0 -0
  638. meta_screening/migrations/0009_auto_20191105_0122.py +0 -0
  639. meta_screening/migrations/0010_auto_20191106_0828.py +5 -5
  640. meta_screening/migrations/0011_auto_20191107_0342.py +0 -0
  641. meta_screening/migrations/0012_auto_20191107_0427.py +0 -0
  642. meta_screening/migrations/0013_auto_20191107_0442.py +0 -0
  643. meta_screening/migrations/0014_auto_20191107_0528.py +0 -0
  644. meta_screening/migrations/0015_auto_20191107_2249.py +0 -0
  645. meta_screening/migrations/0016_auto_20191119_2331.py +0 -0
  646. meta_screening/migrations/0017_auto_20191213_0314.py +0 -0
  647. meta_screening/migrations/0018_auto_20200118_1854.py +0 -0
  648. meta_screening/migrations/0019_auto_20200120_2256.py +0 -0
  649. meta_screening/migrations/0020_auto_20200524_1944.py +0 -0
  650. meta_screening/migrations/0021_auto_20210628_2105.py +0 -0
  651. meta_screening/migrations/0022_auto_20210702_0426.py +0 -0
  652. meta_screening/migrations/0023_auto_20210702_0533.py +0 -0
  653. meta_screening/migrations/0024_auto_20210710_1929.py +0 -0
  654. meta_screening/migrations/0025_auto_20210710_2247.py +0 -0
  655. meta_screening/migrations/0026_auto_20210712_0433.py +0 -0
  656. meta_screening/migrations/0027_auto_20210804_0438.py +0 -0
  657. meta_screening/migrations/0028_auto_20210823_2353.py +0 -0
  658. meta_screening/migrations/0029_auto_20211123_1645.py +0 -0
  659. meta_screening/migrations/0030_auto_20220128_1719.py +0 -0
  660. meta_screening/migrations/0031_auto_20220304_0448.py +0 -0
  661. meta_screening/migrations/0032_auto_20220304_0501.py +0 -0
  662. meta_screening/migrations/0033_auto_20220304_0504.py +0 -0
  663. meta_screening/migrations/0034_auto_20220304_0508.py +0 -0
  664. meta_screening/migrations/0035_auto_20220304_2233.py +0 -0
  665. meta_screening/migrations/0036_auto_20220304_2307.py +0 -0
  666. meta_screening/migrations/0037_auto_20220312_0339.py +0 -0
  667. meta_screening/migrations/0038_auto_20220312_1929.py +0 -0
  668. meta_screening/migrations/0039_auto_20220312_1938.py +0 -0
  669. meta_screening/migrations/0040_auto_20220316_2147.py +0 -0
  670. meta_screening/migrations/0041_auto_20220403_1227.py +0 -0
  671. meta_screening/migrations/0042_auto_20220403_1402.py +0 -0
  672. meta_screening/migrations/0043_auto_20220407_1713.py +0 -0
  673. meta_screening/migrations/0044_alter_historicalscreeningpartone_severe_htn_and_more.py +0 -0
  674. meta_screening/migrations/0045_historicalscreeningpartone_contact_number_and_more.py +0 -0
  675. meta_screening/migrations/0046_historicalscreeningpartone_hba1c_datetime_and_more.py +0 -0
  676. meta_screening/migrations/0047_historicalscreeningpartone_appt_datetime_repeat_and_more.py +0 -0
  677. meta_screening/migrations/0048_rename_appt_datetime_repeat_historicalscreeningpartone_repeat_appt_datetime_and_more.py +0 -0
  678. meta_screening/migrations/0049_historicalscreeningpartone_p3_ltfu_and_more.py +0 -0
  679. meta_screening/migrations/0050_historicalscreeningpartone_agree_to_p3_and_more.py +0 -0
  680. meta_screening/migrations/0051_alter_historicalscreeningpartone_advised_to_fast_and_more.py +0 -0
  681. meta_screening/migrations/0052_alter_historicalscreeningpartone_p3_ltfu_and_more.py +0 -0
  682. meta_screening/migrations/0053_auto_20220704_1841.py +0 -0
  683. meta_screening/migrations/0054_auto_20220722_2130.py +0 -0
  684. meta_screening/migrations/0055_alter_historicalscreeningpartone_creatinine_value_and_more.py +0 -0
  685. meta_screening/migrations/0056_alter_historicalscreeningpartone_agree_to_p3_and_more.py +0 -0
  686. meta_screening/migrations/0057_alter_historicalscreeningpartone_calculated_egfr_value_and_more.py +0 -0
  687. meta_screening/migrations/0058_alter_historicalscreeningpartone_eligibility_datetime_and_more.py +0 -0
  688. meta_screening/migrations/0059_alter_icpreferral_managers_and_more.py +0 -0
  689. meta_screening/migrations/0060_historicalicpreferral_locale_created_and_more.py +0 -0
  690. meta_screening/migrations/0061_alter_historicalicpreferral_site_and_more.py +0 -0
  691. meta_screening/migrations/0062_remove_icpreferral_site_and_more.py +0 -0
  692. meta_screening/migrations/0063_alter_historicalscreeningpartone_fasting_duration_str_and_more.py +0 -0
  693. meta_screening/migrations/0064_remove_historicalscreeningpartone_fasting_duration_minutes_and_more.py +0 -0
  694. meta_screening/migrations/0065_auto_20240516_0352.py +0 -0
  695. meta_screening/migrations/0066_alter_historicalscreeningpartone_fasting_duration_delta_and_more.py +0 -0
  696. meta_screening/migrations/0067_alter_historicalscreeningpartone_report_datetime_and_more.py +0 -0
  697. meta_screening/migrations/0068_alter_historicalscreeningpartone_acute_condition_and_more.py +1579 -0
  698. meta_screening/migrations/__init__.py +0 -0
  699. meta_screening/model_mixins/__init__.py +8 -0
  700. meta_screening/model_mixins/calculated_model_mixin.py +0 -0
  701. meta_screening/model_mixins/creatinine_fields_model_mixin.py +0 -0
  702. meta_screening/model_mixins/eligibility_model_mixin.py +5 -3
  703. meta_screening/model_mixins/part_one_fields_model_mixin.py +5 -9
  704. meta_screening/model_mixins/part_three_fields_model_mixin.py +5 -6
  705. meta_screening/model_mixins/part_two_fields_model_mixin.py +18 -16
  706. meta_screening/models/__init__.py +9 -0
  707. meta_screening/models/icp_referral.py +5 -5
  708. meta_screening/models/proxy_models.py +0 -0
  709. meta_screening/models/signals.py +10 -11
  710. meta_screening/models/subject_refusal.py +1 -1
  711. meta_screening/models/subject_screening.py +1 -3
  712. meta_screening/urls.py +0 -0
  713. meta_sites/__init__.py +0 -0
  714. meta_sites/apps.py +0 -0
  715. meta_sites/migrations/__init__.py +0 -0
  716. meta_sites/models.py +0 -0
  717. meta_sites/sites.py +0 -0
  718. meta_subject/__init__.py +0 -0
  719. meta_subject/action_items.py +13 -15
  720. meta_subject/admin/__init__.py +39 -0
  721. meta_subject/admin/autocomplete_admin.py +0 -0
  722. meta_subject/admin/birth_outcome_admin.py +4 -8
  723. meta_subject/admin/blood_results/__init__.py +9 -0
  724. meta_subject/admin/blood_results/blood_results_fbc_admin.py +1 -1
  725. meta_subject/admin/blood_results/blood_results_hba1c_admin.py +1 -1
  726. meta_subject/admin/blood_results/blood_results_ins_admin.py +1 -1
  727. meta_subject/admin/blood_results/blood_results_lft_admin.py +1 -1
  728. meta_subject/admin/blood_results/blood_results_lipids_admin.py +1 -1
  729. meta_subject/admin/blood_results/blood_results_rft_admin.py +3 -5
  730. meta_subject/admin/complications_admin.py +0 -0
  731. meta_subject/admin/complications_glycemia_admin.py +1 -1
  732. meta_subject/admin/concomitant_medication_admin.py +0 -0
  733. meta_subject/admin/delivery_admin.py +7 -10
  734. meta_subject/admin/diabetes/__init__.py +2 -0
  735. meta_subject/admin/diabetes/dm_endpoint_admin.py +2 -2
  736. meta_subject/admin/diabetes/dm_followup_admin.py +3 -2
  737. meta_subject/admin/egfr_drop_notification_admin.py +1 -1
  738. meta_subject/admin/eq5d3l_admin.py +0 -0
  739. meta_subject/admin/fields.py +0 -0
  740. meta_subject/admin/fieldsets.py +0 -0
  741. meta_subject/admin/followup_examination_admin.py +10 -9
  742. meta_subject/admin/followup_vitals_admin.py +4 -5
  743. meta_subject/admin/glucose_admin.py +2 -4
  744. meta_subject/admin/glucose_fbg_admin.py +1 -3
  745. meta_subject/admin/health_economics/__init__.py +2 -0
  746. meta_subject/admin/health_economics/health_economics_simple_admin.py +1 -1
  747. meta_subject/admin/health_economics/health_economics_update_admin.py +1 -1
  748. meta_subject/admin/hepatitis_test_admin.py +1 -1
  749. meta_subject/admin/list_filters.py +1 -1
  750. meta_subject/admin/malaria_test_admin.py +0 -0
  751. meta_subject/admin/medication_adherence_admin.py +0 -0
  752. meta_subject/admin/mnsi_admin.py +7 -5
  753. meta_subject/admin/modeladmin.py +0 -0
  754. meta_subject/admin/next_appointment_admin.py +0 -0
  755. meta_subject/admin/other_arv_regimens_admin.py +3 -3
  756. meta_subject/admin/patient_history_admin.py +4 -4
  757. meta_subject/admin/physical_exam_admin.py +1 -1
  758. meta_subject/admin/pregnancy_update_admin.py +1 -1
  759. meta_subject/admin/sf12_admin.py +0 -0
  760. meta_subject/admin/study_medication_admin.py +8 -15
  761. meta_subject/admin/subject_requisition_admin.py +1 -1
  762. meta_subject/admin/subject_visit_admin.py +1 -1
  763. meta_subject/admin/subject_visit_missed_admin.py +1 -1
  764. meta_subject/admin/urine_dipstick_test_admin.py +1 -1
  765. meta_subject/admin/urine_pregnancy_admin.py +1 -1
  766. meta_subject/admin_site.py +0 -0
  767. meta_subject/apps.py +0 -0
  768. meta_subject/baker_recipes.py +15 -15
  769. meta_subject/choices.py +0 -0
  770. meta_subject/constants.py +0 -0
  771. meta_subject/form_validators/__init__.py +11 -0
  772. meta_subject/form_validators/birth_outcomes_form_validator.py +0 -0
  773. meta_subject/form_validators/delivery_form_validator.py +2 -3
  774. meta_subject/form_validators/dm_endpoint_form_validator.py +1 -1
  775. meta_subject/form_validators/dm_followup_form_validator.py +7 -6
  776. meta_subject/form_validators/egfr_drop_notification_form_validator.py +0 -0
  777. meta_subject/form_validators/followup_examination_form_validator.py +0 -0
  778. meta_subject/form_validators/glucose_form_validator.py +3 -5
  779. meta_subject/form_validators/health_economics_form_validator.py +0 -0
  780. meta_subject/forms/__init__.py +41 -0
  781. meta_subject/forms/birth_outcomes_form.py +0 -0
  782. meta_subject/forms/blood_results/__init__.py +9 -0
  783. meta_subject/forms/blood_results/blood_results_fbc_form.py +0 -0
  784. meta_subject/forms/blood_results/blood_results_hba1c_form.py +0 -0
  785. meta_subject/forms/blood_results/blood_results_ins_form.py +0 -0
  786. meta_subject/forms/blood_results/blood_results_lft_form.py +0 -0
  787. meta_subject/forms/blood_results/blood_results_lipids_form.py +0 -0
  788. meta_subject/forms/blood_results/blood_results_rft_form.py +1 -2
  789. meta_subject/forms/complications_glycemia_form.py +0 -0
  790. meta_subject/forms/concomitant_medication_form.py +0 -0
  791. meta_subject/forms/delivery_form.py +0 -0
  792. meta_subject/forms/diabetes/__init__.py +2 -0
  793. meta_subject/forms/diabetes/dm_endpoint_form.py +0 -0
  794. meta_subject/forms/diabetes/dm_followup_form.py +2 -2
  795. meta_subject/forms/egfr_drop_notification_form.py +0 -0
  796. meta_subject/forms/eq53d3l_form.py +0 -0
  797. meta_subject/forms/followup_examination_form.py +0 -0
  798. meta_subject/forms/followup_vitals_form.py +3 -8
  799. meta_subject/forms/glucose_fbg_form.py +0 -0
  800. meta_subject/forms/glucose_form.py +0 -0
  801. meta_subject/forms/health_economics/__init__.py +2 -0
  802. meta_subject/forms/health_economics/health_economics_simple_form.py +0 -0
  803. meta_subject/forms/health_economics/health_economics_update_form.py +0 -0
  804. meta_subject/forms/hepatitis_test_form.py +0 -0
  805. meta_subject/forms/malaria_test_form.py +0 -0
  806. meta_subject/forms/medication_adherence_form.py +0 -0
  807. meta_subject/forms/mixins.py +0 -0
  808. meta_subject/forms/mnsi_form.py +0 -0
  809. meta_subject/forms/next_appointment_form.py +2 -3
  810. meta_subject/forms/other_arv_regimens_detail_form.py +0 -0
  811. meta_subject/forms/other_arv_regimens_form.py +0 -0
  812. meta_subject/forms/patient_history_form.py +0 -0
  813. meta_subject/forms/physical_exam_form.py +0 -0
  814. meta_subject/forms/pregnancy_update_form.py +0 -0
  815. meta_subject/forms/sf12_form.py +0 -0
  816. meta_subject/forms/slider_widget.py +1 -1
  817. meta_subject/forms/study_medication_form.py +11 -8
  818. meta_subject/forms/subject_requisition_form.py +0 -0
  819. meta_subject/forms/subject_visit_form.py +0 -0
  820. meta_subject/forms/subject_visit_missed_form.py +0 -0
  821. meta_subject/forms/urine_dipstick_test_form.py +0 -0
  822. meta_subject/forms/urine_pregnancy_form.py +0 -0
  823. meta_subject/identifiers.py +0 -0
  824. meta_subject/locale/lg/LC_MESSAGES/django.po +0 -0
  825. meta_subject/locale/sw/LC_MESSAGES/django.po +0 -0
  826. meta_subject/management/__init__py.py +0 -0
  827. meta_subject/management/commands/__init__py.py +0 -0
  828. meta_subject/management/commands/create_missing_refills.py +3 -3
  829. meta_subject/management/commands/create_missing_rx.py +1 -1
  830. meta_subject/management/commands/missed.py +20 -23
  831. meta_subject/metadata_rules/__init__.py +2 -0
  832. meta_subject/metadata_rules/metadata_rules.py +0 -0
  833. meta_subject/metadata_rules/predicates.py +25 -32
  834. meta_subject/migrations/0001_initial.py +61 -61
  835. meta_subject/migrations/0002_auto_20191021_0353.py +5 -5
  836. meta_subject/migrations/0003_auto_20191021_0534.py +0 -0
  837. meta_subject/migrations/0004_auto_20191022_0134.py +0 -0
  838. meta_subject/migrations/0005_auto_20191024_1000.py +0 -0
  839. meta_subject/migrations/0006_auto_20191104_0756.py +0 -0
  840. meta_subject/migrations/0007_auto_20191107_2249.py +0 -0
  841. meta_subject/migrations/0008_auto_20191115_0132.py +0 -0
  842. meta_subject/migrations/0009_auto_20191119_2331.py +0 -0
  843. meta_subject/migrations/0010_auto_20191213_0314.py +0 -0
  844. meta_subject/migrations/0011_auto_20200118_1854.py +0 -0
  845. meta_subject/migrations/0012_auto_20200118_2334.py +5 -5
  846. meta_subject/migrations/0013_auto_20200119_0013.py +0 -0
  847. meta_subject/migrations/0014_auto_20200120_1622.py +5 -5
  848. meta_subject/migrations/0015_auto_20200120_1943.py +0 -0
  849. meta_subject/migrations/0016_auto_20200123_1508.py +0 -0
  850. meta_subject/migrations/0017_auto_20200325_0901.py +0 -0
  851. meta_subject/migrations/0018_coronakap_historicalcoronakap.py +5 -5
  852. meta_subject/migrations/0019_auto_20200417_0315.py +0 -0
  853. meta_subject/migrations/0020_auto_20200417_0329.py +0 -0
  854. meta_subject/migrations/0021_auto_20200417_0332.py +0 -0
  855. meta_subject/migrations/0022_auto_20200419_2223.py +0 -0
  856. meta_subject/migrations/0023_auto_20200419_2305.py +0 -0
  857. meta_subject/migrations/0024_auto_20200419_2331.py +0 -0
  858. meta_subject/migrations/0025_auto_20200420_1455.py +0 -0
  859. meta_subject/migrations/0026_auto_20200420_1524.py +0 -0
  860. meta_subject/migrations/0027_auto_20200420_1645.py +0 -0
  861. meta_subject/migrations/0028_auto_20200420_1732.py +0 -0
  862. meta_subject/migrations/0029_auto_20200420_1751.py +0 -0
  863. meta_subject/migrations/0030_auto_20200420_1816.py +0 -0
  864. meta_subject/migrations/0031_auto_20200422_2039.py +0 -0
  865. meta_subject/migrations/0032_auto_20200515_0307.py +0 -0
  866. meta_subject/migrations/0033_auto_20200516_2356.py +5 -5
  867. meta_subject/migrations/0034_auto_20200517_0125.py +0 -0
  868. meta_subject/migrations/0035_auto_20200517_0128.py +0 -0
  869. meta_subject/migrations/0036_auto_20200517_0150.py +0 -0
  870. meta_subject/migrations/0037_auto_20200517_0207.py +0 -0
  871. meta_subject/migrations/0038_auto_20200520_0020.py +5 -5
  872. meta_subject/migrations/0039_auto_20200524_1944.py +0 -0
  873. meta_subject/migrations/0040_auto_20200527_2155.py +1 -1
  874. meta_subject/migrations/0041_auto_20200528_0242.py +0 -0
  875. meta_subject/migrations/0042_auto_20200528_0252.py +0 -0
  876. meta_subject/migrations/0043_auto_20200528_1555.py +0 -0
  877. meta_subject/migrations/0044_auto_20200528_1853.py +0 -0
  878. meta_subject/migrations/0045_auto_20200530_1801.py +1 -1
  879. meta_subject/migrations/0046_auto_20200530_1804.py +0 -0
  880. meta_subject/migrations/0047_auto_20200530_1819.py +0 -0
  881. meta_subject/migrations/0048_auto_20200530_1819.py +0 -0
  882. meta_subject/migrations/0049_auto_20200613_2041.py +0 -0
  883. meta_subject/migrations/0050_auto_20200614_1934.py +0 -0
  884. meta_subject/migrations/0051_auto_20200617_2117.py +5 -5
  885. meta_subject/migrations/0052_auto_20210624_0225.py +0 -0
  886. meta_subject/migrations/0053_auto_20210628_2105.py +0 -0
  887. meta_subject/migrations/0054_auto_20210628_2314.py +0 -0
  888. meta_subject/migrations/0055_auto_20210628_2331.py +0 -0
  889. meta_subject/migrations/0056_auto_20210702_0426.py +0 -0
  890. meta_subject/migrations/0057_auto_20210702_0458.py +0 -0
  891. meta_subject/migrations/0058_auto_20210702_0533.py +0 -0
  892. meta_subject/migrations/0059_auto_20210709_2056.py +0 -0
  893. meta_subject/migrations/0060_auto_20210709_2241.py +0 -0
  894. meta_subject/migrations/0061_auto_20210710_1929.py +0 -0
  895. meta_subject/migrations/0062_auto_20210713_0616.py +0 -0
  896. meta_subject/migrations/0063_auto_20210715_0337.py +5 -5
  897. meta_subject/migrations/0064_auto_20210715_2336.py +0 -0
  898. meta_subject/migrations/0065_auto_20210716_0813.py +0 -0
  899. meta_subject/migrations/0066_auto_20210721_0335.py +9 -9
  900. meta_subject/migrations/0067_auto_20210726_0340.py +5 -5
  901. meta_subject/migrations/0068_auto_20210728_1809.py +5 -5
  902. meta_subject/migrations/0069_auto_20210801_2021.py +0 -0
  903. meta_subject/migrations/0070_auto_20210804_0438.py +0 -0
  904. meta_subject/migrations/0071_auto_20210804_0715.py +0 -0
  905. meta_subject/migrations/0072_auto_20210805_1545.py +7 -7
  906. meta_subject/migrations/0073_auto_20210809_0055.py +5 -5
  907. meta_subject/migrations/0074_auto_20210809_1744.py +0 -0
  908. meta_subject/migrations/0075_auto_20210809_1744.py +0 -0
  909. meta_subject/migrations/0076_auto_20210809_1854.py +0 -0
  910. meta_subject/migrations/0077_auto_20210809_2323.py +3 -3
  911. meta_subject/migrations/0078_auto_20210810_0857.py +0 -0
  912. meta_subject/migrations/0079_auto_20210812_0335.py +0 -0
  913. meta_subject/migrations/0080_auto_20210812_0400.py +0 -0
  914. meta_subject/migrations/0081_auto_20210817_2306.py +0 -0
  915. meta_subject/migrations/0082_auto_20210823_1612.py +3 -3
  916. meta_subject/migrations/0083_auto_20210823_1620.py +3 -3
  917. meta_subject/migrations/0084_auto_20210910_0234.py +0 -0
  918. meta_subject/migrations/0085_auto_20210911_2036.py +0 -0
  919. meta_subject/migrations/0086_auto_20210920_0229.py +0 -0
  920. meta_subject/migrations/0087_auto_20210922_2058.py +0 -0
  921. meta_subject/migrations/0088_auto_20210924_0027.py +5 -5
  922. meta_subject/migrations/0089_auto_20210924_0121.py +0 -0
  923. meta_subject/migrations/0090_auto_20210924_0424.py +5 -5
  924. meta_subject/migrations/0091_auto_20210929_2324.py +0 -0
  925. meta_subject/migrations/0092_auto_20211013_0447.py +0 -0
  926. meta_subject/migrations/0093_auto_20211117_0352.py +5 -5
  927. meta_subject/migrations/0094_auto_20211123_1645.py +0 -0
  928. meta_subject/migrations/0095_auto_20220128_1719.py +5 -5
  929. meta_subject/migrations/0096_auto_20220304_0501.py +0 -0
  930. meta_subject/migrations/0097_auto_20220304_2233.py +0 -0
  931. meta_subject/migrations/0098_auto_20220309_2106.py +5 -5
  932. meta_subject/migrations/0099_auto_20220309_2218.py +0 -0
  933. meta_subject/migrations/0100_auto_20220309_2238.py +0 -0
  934. meta_subject/migrations/0101_auto_20220316_2147.py +13 -13
  935. meta_subject/migrations/0102_auto_20220324_0304.py +0 -0
  936. meta_subject/migrations/0103_auto_20220324_0326.py +0 -0
  937. meta_subject/migrations/0104_auto_20220412_2151.py +0 -0
  938. meta_subject/migrations/0105_auto_20220412_2310.py +0 -0
  939. meta_subject/migrations/0106_auto_20220414_1741.py +0 -0
  940. meta_subject/migrations/0107_auto_20220415_0043.py +0 -0
  941. meta_subject/migrations/0108_auto_20220415_1747.py +0 -0
  942. meta_subject/migrations/0109_auto_20220415_1758.py +0 -0
  943. meta_subject/migrations/0110_auto_20220512_1811.py +0 -0
  944. meta_subject/migrations/0111_alter_followupvitals_severe_htn_and_more.py +0 -0
  945. meta_subject/migrations/0112_historicalsubjectvisit_document_status_comments_and_more.py +0 -0
  946. meta_subject/migrations/0113_bloodresultsrft_egfr_percent_change_and_more.py +0 -0
  947. meta_subject/migrations/0114_alter_bloodresultsrft_egfr_percent_change_and_more.py +0 -0
  948. meta_subject/migrations/0115_historicalegfrnotification_egfrnotification.py +5 -13
  949. meta_subject/migrations/0116_egfrnotification_report_status_and_more.py +0 -0
  950. meta_subject/migrations/0117_alter_egfrnotification_managers_and_more.py +0 -0
  951. meta_subject/migrations/0118_delivery_crf_status_delivery_crf_status_comments_and_more.py +0 -0
  952. meta_subject/migrations/0119_historicalstudymedication_roundup_divisible_by_and_more.py +0 -0
  953. meta_subject/migrations/0120_alter_birthoutcomes_managers_and_more.py +0 -0
  954. meta_subject/migrations/0121_auto_20220704_1841.py +0 -0
  955. meta_subject/migrations/0122_auto_20220708_2144.py +0 -0
  956. meta_subject/migrations/0123_auto_20220714_2136.py +0 -0
  957. meta_subject/migrations/0124_auto_20220714_2303.py +0 -0
  958. meta_subject/migrations/0125_auto_20220719_2134.py +0 -0
  959. meta_subject/migrations/0126_auto_20220719_2142.py +0 -0
  960. meta_subject/migrations/0127_auto_20220720_0053.py +0 -0
  961. meta_subject/migrations/0128_auto_20220720_0055.py +0 -0
  962. meta_subject/migrations/0129_auto_20220720_0108.py +0 -0
  963. meta_subject/migrations/0130_auto_20220720_0216.py +0 -0
  964. meta_subject/migrations/0131_auto_20220722_0411.py +0 -0
  965. meta_subject/migrations/0132_auto_20220722_1825.py +0 -0
  966. meta_subject/migrations/0133_auto_20220722_2140.py +0 -0
  967. meta_subject/migrations/0134_auto_20220722_2211.py +0 -0
  968. meta_subject/migrations/0135_auto_20220722_2212.py +0 -0
  969. meta_subject/migrations/0136_egfrdropnotification_creatinine_quantifier_and_more.py +0 -0
  970. meta_subject/migrations/0137_alter_egfrdropnotification_egfr_percent_change_and_more.py +0 -0
  971. meta_subject/migrations/0138_alter_glucose_fbg_datetime_and_more.py +0 -0
  972. meta_subject/migrations/0139_alter_bloodresultsins_ins_units_and_more.py +0 -0
  973. meta_subject/migrations/0140_alter_bloodresultsfbc_action_identifier_and_more.py +0 -0
  974. meta_subject/migrations/0141_auto_20220826_0258.py +0 -0
  975. meta_subject/migrations/0142_auto_20220826_0322.py +0 -0
  976. meta_subject/migrations/0143_auto_20220826_0406.py +0 -0
  977. meta_subject/migrations/0144_auto_20220907_0157.py +0 -0
  978. meta_subject/migrations/0145_auto_20220907_0202.py +0 -0
  979. meta_subject/migrations/0146_auto_20220907_0207.py +0 -0
  980. meta_subject/migrations/0147_auto_20220907_1505.py +0 -0
  981. meta_subject/migrations/0148_auto_20220908_1826.py +0 -0
  982. meta_subject/migrations/0149_auto_20220913_2139.py +0 -0
  983. meta_subject/migrations/0150_auto_20220914_0039.py +0 -0
  984. meta_subject/migrations/0151_auto_20220918_0508.py +0 -0
  985. meta_subject/migrations/0152_auto_20220925_0509.py +0 -0
  986. meta_subject/migrations/0153_auto_20220928_0250.py +0 -0
  987. meta_subject/migrations/0154_auto_20220928_0419.py +0 -0
  988. meta_subject/migrations/0155_auto_20220929_1742.py +0 -0
  989. meta_subject/migrations/0156_alter_bloodresultsfbc_assay_datetime_and_more.py +0 -0
  990. meta_subject/migrations/0157_remove_bloodresultsfbc_crf_status_and_more.py +0 -0
  991. meta_subject/migrations/0158_alter_followupexamination_attended_clinic_and_more.py +0 -0
  992. meta_subject/migrations/0159_alter_bloodresultsfbc_results_abnormal_and_more.py +0 -0
  993. meta_subject/migrations/0160_alter_healtheconomicssimple_education_certificate_and_more.py +0 -0
  994. meta_subject/migrations/0161_alter_birthoutcomes_options_and_more.py +0 -0
  995. meta_subject/migrations/0162_alter_followupexamination_abdominal_tenderness_and_more.py +0 -0
  996. meta_subject/migrations/0163_alter_birthoutcomes_options_and_more.py +0 -0
  997. meta_subject/migrations/0164_dmreferralfollowup_historicaldmreferralfollowup.py +5 -5
  998. meta_subject/migrations/0165_alter_dmreferralfollowup_healthcare_workers.py +0 -0
  999. meta_subject/migrations/0166_rename_dm_medications_other_dmreferralfollowup_other_dm_medications_and_more.py +0 -0
  1000. meta_subject/migrations/0167_rename_healthcare_workers_other_dmreferralfollowup_other_healthcare_workers_and_more.py +0 -0
  1001. meta_subject/migrations/0168_alter_dmreferralfollowup_last_missed_pill_and_more.py +0 -0
  1002. meta_subject/migrations/0169_alter_dmreferralfollowup_options_and_more.py +0 -0
  1003. meta_subject/migrations/0170_remove_glucose_repeat_fbg_and_more.py +0 -0
  1004. meta_subject/migrations/0171_alter_glucose_endpoint_today_and_more.py +0 -0
  1005. meta_subject/migrations/0172_remove_historicalbloodresultsglu_action_item_and_more.py +1 -2
  1006. meta_subject/migrations/0173_alter_glucosefbg_options_and_more.py +0 -0
  1007. meta_subject/migrations/0174_remove_glucosefbg_glucose_abnormal_and_more.py +0 -0
  1008. meta_subject/migrations/0175_auto_20240214_2239.py +0 -0
  1009. meta_subject/migrations/0176_alter_glucosefbg_glucose_value_and_more.py +0 -0
  1010. meta_subject/migrations/0177_alter_bloodresultslft_alp_value_and_more.py +1 -2
  1011. meta_subject/migrations/0178_historicalhealtheconomicsupdate_and_more.py +5 -14
  1012. meta_subject/migrations/0179_alter_birthoutcomes_consent_model_and_more.py +0 -0
  1013. meta_subject/migrations/0180_dmreferralfollowup_missed_referral_reasons_and_more.py +0 -0
  1014. meta_subject/migrations/0181_dmreferralfollowup_action_identifier_and_more.py +0 -0
  1015. meta_subject/migrations/0182_rename_dmreferralfollowup_dmfollowup_and_more.py +0 -0
  1016. meta_subject/migrations/0183_alter_dmfollowup_on_dm_medications_and_more.py +0 -0
  1017. meta_subject/migrations/0184_alter_glucose_options_and_more.py +0 -0
  1018. meta_subject/migrations/0185_alter_bloodresultsins_fasting_duration_str_and_more.py +0 -0
  1019. meta_subject/migrations/0186_healtheconomicsupdate_singleton_field_and_more.py +1 -2
  1020. meta_subject/migrations/0187_dmdiagnosis_historicaldmdiagnosis_dmdxresult_and_more.py +5 -14
  1021. meta_subject/migrations/0188_historicaldmdxresult_dmdxresult.py +5 -14
  1022. meta_subject/migrations/0189_alter_dmdxresult_options_and_more.py +0 -0
  1023. meta_subject/migrations/0190_dmdiagnosis_dx_no_tmg_reason_and_more.py +0 -0
  1024. meta_subject/migrations/0191_alter_dmdiagnosis_dx_no_tmg_reason_and_more.py +0 -0
  1025. meta_subject/migrations/0192_rename_glucose_quantifier_glucosefbg_fbg_quantifier_and_more.py +0 -0
  1026. meta_subject/migrations/0193_alter_glucosefbg_fbg_value_and_more.py +0 -0
  1027. meta_subject/migrations/0194_remove_glucosefbg_assay_datetime_and_more.py +0 -0
  1028. meta_subject/migrations/0195_alter_glucosefbg_fbg_datetime_and_more.py +0 -0
  1029. meta_subject/migrations/0196_glucosefbg_fbg_not_performed_reason_and_more.py +0 -0
  1030. meta_subject/migrations/0197_glucosefbg_fasting_duration_estimated_and_more.py +0 -0
  1031. meta_subject/migrations/0198_alter_glucosefbg_fasting_duration_estimated_and_more.py +0 -0
  1032. meta_subject/migrations/0199_auto_20240516_0247.py +0 -0
  1033. meta_subject/migrations/0200_rename_fasting_duration_minutes_bloodresultsins_fasting_duration_delta_and_more.py +0 -0
  1034. meta_subject/migrations/0201_alter_bloodresultsins_fasting_duration_delta_and_more.py +0 -0
  1035. meta_subject/migrations/0202_auto_20240516_0315.py +0 -0
  1036. meta_subject/migrations/0203_alter_bloodresultsins_fasting_duration_delta_and_more.py +0 -0
  1037. meta_subject/migrations/0204_glucosefbg_repeat_fbg_date_and_more.py +0 -0
  1038. meta_subject/migrations/0205_historicalsubjectrequisition_crf_status_and_more.py +0 -0
  1039. meta_subject/migrations/0206_bloodresultsfbc_crf_status_and_more.py +0 -0
  1040. meta_subject/migrations/0207_alter_historicalphysicalexam_waist_circumference_and_more.py +0 -0
  1041. meta_subject/migrations/0208_birthoutcomes_crf_status_and_more.py +0 -0
  1042. meta_subject/migrations/0209_remove_historicaldmdxresult_dm_diagnosis_and_more.py +1 -2
  1043. meta_subject/migrations/0210_remove_dmdxresult_dm_diagnosis_and_more.py +0 -0
  1044. meta_subject/migrations/0211_dmendpoint_endpoint_reached_and_more.py +0 -0
  1045. meta_subject/migrations/0212_auto_20240827_2222.py +0 -0
  1046. meta_subject/migrations/0213_rename_bloodresultslipid_bloodresultslipids_and_more.py +0 -0
  1047. meta_subject/migrations/0214_historicalstudymedication_stock_codes_and_more.py +0 -0
  1048. meta_subject/migrations/0215_alter_historicalstudymedication_stock_codes_and_more.py +0 -0
  1049. meta_subject/migrations/0216_historicalnextappointment_nextappointment.py +5 -6
  1050. meta_subject/migrations/0217_alter_historicalnextappointment_appt_datetime_and_more.py +0 -0
  1051. meta_subject/migrations/0218_alter_historicalnextappointment_appt_date_and_more.py +0 -0
  1052. meta_subject/migrations/0219_remove_historicalnextappointment_allow_create_interim_and_more.py +0 -0
  1053. meta_subject/migrations/0220_historicalbloodresultsgludummy_bloodresultsgludummy.py +5 -14
  1054. meta_subject/migrations/0221_auto_20250402_1913.py +0 -0
  1055. meta_subject/migrations/0222_alter_historicalstudymedication_stock_codes_and_more.py +0 -0
  1056. meta_subject/migrations/0223_bloodresultsfbc_errors_bloodresultsgludummy_errors_and_more.py +0 -0
  1057. meta_subject/migrations/0224_bloodresultsfbc_abnormal_summary_and_more.py +0 -0
  1058. meta_subject/migrations/0225_followupvitals_waist_circumference_and_more.py +0 -0
  1059. meta_subject/migrations/0226_followupvitals_waist_circumference_comment_and_more.py +0 -0
  1060. meta_subject/migrations/0227_alter_followupvitals_waist_circumference_comment_and_more.py +0 -0
  1061. meta_subject/migrations/0228_bloodresultshba1c_hba1c_datetime_and_more.py +9297 -0
  1062. meta_subject/migrations/__init__.py +0 -0
  1063. meta_subject/model_mixins/__init__.py +8 -0
  1064. meta_subject/model_mixins/arv_history_model_mixin.py +0 -0
  1065. meta_subject/model_mixins/crf_model_mixin.py +0 -0
  1066. meta_subject/model_mixins/crf_with_action_model_mixin.py +0 -0
  1067. meta_subject/model_mixins/search_slug_model_mixin.py +1 -2
  1068. meta_subject/model_mixins/vitals_fields_model_mixin.py +1 -1
  1069. meta_subject/models/__init__.py +48 -0
  1070. meta_subject/models/birth_outcomes.py +3 -3
  1071. meta_subject/models/blood_results/__init__.py +11 -0
  1072. meta_subject/models/blood_results/blood_results_fbc.py +0 -0
  1073. meta_subject/models/blood_results/blood_results_glu.py +0 -0
  1074. meta_subject/models/blood_results/blood_results_hba1c.py +0 -0
  1075. meta_subject/models/blood_results/blood_results_ins.py +0 -0
  1076. meta_subject/models/blood_results/blood_results_lft.py +0 -0
  1077. meta_subject/models/blood_results/blood_results_lipids.py +0 -0
  1078. meta_subject/models/blood_results/blood_results_rft.py +0 -0
  1079. meta_subject/models/complications.py +0 -0
  1080. meta_subject/models/complications_glycemia.py +0 -0
  1081. meta_subject/models/concomitant_medication.py +0 -0
  1082. meta_subject/models/delivery.py +3 -3
  1083. meta_subject/models/diabetes/__init__.py +2 -0
  1084. meta_subject/models/diabetes/dm_endpoint.py +4 -4
  1085. meta_subject/models/diabetes/dm_followup.py +3 -4
  1086. meta_subject/models/diet_and_lifestyle.py +2 -2
  1087. meta_subject/models/egfr_drop_notification.py +0 -0
  1088. meta_subject/models/eq5d3l.py +0 -0
  1089. meta_subject/models/followup_examination.py +11 -11
  1090. meta_subject/models/followup_vitals.py +0 -0
  1091. meta_subject/models/glucose.py +4 -4
  1092. meta_subject/models/glucose_fbg.py +2 -3
  1093. meta_subject/models/glucose_review.py +0 -0
  1094. meta_subject/models/health_economics/__init__.py +2 -0
  1095. meta_subject/models/health_economics/health_economics.py +7 -7
  1096. meta_subject/models/health_economics/health_economics_simple.py +0 -0
  1097. meta_subject/models/health_economics/health_economics_update.py +2 -1
  1098. meta_subject/models/hepatitis_test.py +2 -2
  1099. meta_subject/models/malaria_test.py +0 -0
  1100. meta_subject/models/medication_adherence.py +0 -0
  1101. meta_subject/models/mnsi.py +0 -0
  1102. meta_subject/models/next_appointment.py +0 -0
  1103. meta_subject/models/off_study_drug.py +0 -0
  1104. meta_subject/models/other_arv_regimens.py +0 -0
  1105. meta_subject/models/other_arv_regimens_detail.py +1 -1
  1106. meta_subject/models/patient_history.py +5 -6
  1107. meta_subject/models/physical_exam.py +2 -2
  1108. meta_subject/models/pregnancy_update.py +1 -1
  1109. meta_subject/models/sf12.py +0 -0
  1110. meta_subject/models/signals.py +14 -12
  1111. meta_subject/models/study_medication.py +0 -0
  1112. meta_subject/models/subject_requisition.py +0 -0
  1113. meta_subject/models/subject_visit.py +1 -1
  1114. meta_subject/models/subject_visit_missed.py +0 -0
  1115. meta_subject/models/todo.txt +0 -0
  1116. meta_subject/models/urine_dipstick_test.py +1 -1
  1117. meta_subject/models/urine_pregnancy.py +1 -1
  1118. meta_subject/static/meta_subject/slider.css +0 -0
  1119. meta_subject/static/meta_subject/slider.png +0 -0
  1120. meta_subject/templates/meta_subject/endpoint_review_instructions.html +0 -0
  1121. meta_subject/templates/meta_subject/widgets/slider.html +0 -0
  1122. meta_subject/urls.py +0 -0
  1123. meta_visit_schedule/__init__.py +0 -0
  1124. meta_visit_schedule/apps.py +0 -0
  1125. meta_visit_schedule/constants.py +0 -0
  1126. meta_visit_schedule/migrations/__init__.py +0 -0
  1127. meta_visit_schedule/models.py +0 -0
  1128. meta_visit_schedule/visit_schedules/__init__.py +2 -0
  1129. meta_visit_schedule/visit_schedules/phase_three/__init__.py +2 -0
  1130. meta_visit_schedule/visit_schedules/phase_three/crfs.py +0 -0
  1131. meta_visit_schedule/visit_schedules/phase_three/crfs_pregnancy.py +0 -0
  1132. meta_visit_schedule/visit_schedules/phase_three/requisitions.py +0 -0
  1133. meta_visit_schedule/visit_schedules/phase_three/schedule.py +2 -2
  1134. meta_visit_schedule/visit_schedules/phase_three/schedule_dm_referral.py +1 -2
  1135. meta_visit_schedule/visit_schedules/phase_three/schedule_pregnancy.py +1 -2
  1136. meta_visit_schedule/visit_schedules/phase_three/visit_schedule.py +0 -0
  1137. meta_analytics/.ipynb_checkpoints/get_tables-checkpoint.py +0 -105
  1138. meta_analytics/dataframes/glucose_endpoints/utils.py +0 -0
  1139. meta_edc-1.1.10.dist-info/METADATA +0 -89
  1140. meta_edc-1.1.10.dist-info/RECORD +0 -1130
  1141. meta_screening/offline_models.py +0 -3
File without changes
@@ -3,3 +3,11 @@ from .eligibility_model_mixin import EligibilityModelMixin
3
3
  from .part_one_fields_model_mixin import PartOneFieldsModelMixin
4
4
  from .part_three_fields_model_mixin import PartThreeFieldsModelMixin
5
5
  from .part_two_fields_model_mixin import PartTwoFieldsModelMixin
6
+
7
+ __all__ = [
8
+ "CalculatedModelMixin",
9
+ "EligibilityModelMixin",
10
+ "PartOneFieldsModelMixin",
11
+ "PartThreeFieldsModelMixin",
12
+ "PartTwoFieldsModelMixin",
13
+ ]
File without changes
@@ -19,7 +19,7 @@ class EligibilityModelMixin(BaseEligibilityModelMixin):
19
19
  help_text="system calculated value",
20
20
  )
21
21
 
22
- reasons_ineligible_part_one = models.TextField(max_length=150, null=True, editable=False)
22
+ reasons_ineligible_part_one = models.TextField(max_length=150, default="", editable=False)
23
23
 
24
24
  eligible_part_two = models.CharField(
25
25
  max_length=15,
@@ -29,7 +29,7 @@ class EligibilityModelMixin(BaseEligibilityModelMixin):
29
29
  help_text="system calculated value",
30
30
  )
31
31
 
32
- reasons_ineligible_part_two = models.TextField(max_length=150, null=True, editable=False)
32
+ reasons_ineligible_part_two = models.TextField(max_length=150, default="", editable=False)
33
33
 
34
34
  eligible_part_three = models.CharField(
35
35
  max_length=15,
@@ -39,7 +39,9 @@ class EligibilityModelMixin(BaseEligibilityModelMixin):
39
39
  help_text="system calculated value",
40
40
  )
41
41
 
42
- reasons_ineligible_part_three = models.TextField(max_length=150, null=True, editable=False)
42
+ reasons_ineligible_part_three = models.TextField(
43
+ max_length=150, default="", editable=False
44
+ )
43
45
 
44
46
  def get_report_datetime_for_eligibility_datetime(self):
45
47
  return self.part_three_report_datetime
@@ -25,12 +25,10 @@ class PartOneFieldsModelMixin(models.Model):
25
25
  )
26
26
 
27
27
  meta_phase_two = models.CharField(
28
- verbose_name=mark_safe(
29
- "Was the subject enrolled in the <u>META Phase 2</u> trial?"
30
- ), # nosec B308
28
+ verbose_name=mark_safe("Was the subject enrolled in the <u>META Phase 2</u> trial?"), # nosec B308
31
29
  max_length=15,
32
30
  choices=YES_NO,
33
- null=True,
31
+ default="",
34
32
  blank=False,
35
33
  )
36
34
 
@@ -80,7 +78,7 @@ class PartOneFieldsModelMixin(models.Model):
80
78
  ),
81
79
  max_length=15,
82
80
  choices=YES_NO,
83
- null=True,
81
+ default="",
84
82
  blank=False,
85
83
  help_text="META PHASE_TWO ONLY",
86
84
  editable=False,
@@ -93,7 +91,7 @@ class PartOneFieldsModelMixin(models.Model):
93
91
  ), # nosec B308
94
92
  max_length=15,
95
93
  choices=YES_NO,
96
- null=True,
94
+ default="",
97
95
  blank=False,
98
96
  )
99
97
 
@@ -102,9 +100,7 @@ class PartOneFieldsModelMixin(models.Model):
102
100
  )
103
101
 
104
102
  continue_part_two = models.CharField(
105
- verbose_name=mark_safe(
106
- "Continue with <U>part two</U> of the screening process?"
107
- ), # nosec B308
103
+ verbose_name=mark_safe("Continue with <U>part two</U> of the screening process?"), # nosec B308
108
104
  max_length=15,
109
105
  choices=YESDEFAULT_NO,
110
106
  default=YES,
@@ -3,7 +3,7 @@ from django.core.validators import MaxValueValidator, MinValueValidator
3
3
  from django.db import models
4
4
  from edc_constants.choices import NO, YES_NO, YES_NO_PENDING_NA_GLUCOSE_SCREENING
5
5
  from edc_constants.constants import NOT_APPLICABLE
6
- from edc_glucose.model_mixins import (
6
+ from edc_glucose.model_mixin_factories import (
7
7
  fasting_model_mixin_factory,
8
8
  fbg_model_mixin_factory,
9
9
  ogtt_model_mixin_factory,
@@ -94,14 +94,13 @@ class PartThreeFieldsModelMixin(
94
94
  ):
95
95
  repeat_glucose_opinion = models.CharField(
96
96
  verbose_name=(
97
- "In opinion of the clinician, " "should the glucose measurements be repeated?"
97
+ "In opinion of the clinician, should the glucose measurements be repeated?"
98
98
  ),
99
99
  max_length=15,
100
100
  choices=YES_NO,
101
101
  default=NO,
102
102
  help_text=(
103
- "If repeated, must be at least 3 days "
104
- "after the first glucose measures (FBG, OGTT)"
103
+ "If repeated, must be at least 3 days after the first glucose measures (FBG, OGTT)"
105
104
  ),
106
105
  )
107
106
 
@@ -124,7 +123,7 @@ class PartThreeFieldsModelMixin(
124
123
  verbose_name="Units (creatinine)",
125
124
  max_length=15,
126
125
  choices=SERUM_CREATININE_UNITS,
127
- null=True,
126
+ default="",
128
127
  blank=True,
129
128
  )
130
129
 
@@ -180,5 +179,5 @@ class PartThreeFieldsModelMixin(
180
179
  def p3_repeat_appt(self):
181
180
  return self.repeat_appt_datetime
182
181
 
183
- class Meta:
182
+ class Meta: # noqa: DJ012
184
183
  abstract = True
@@ -40,7 +40,7 @@ class PartTwoFieldsModelMixin(models.Model):
40
40
  ),
41
41
  max_length=15,
42
42
  choices=YES_NO,
43
- null=True,
43
+ default="",
44
44
  blank=False,
45
45
  )
46
46
 
@@ -48,7 +48,7 @@ class PartTwoFieldsModelMixin(models.Model):
48
48
  verbose_name="Is there clinical evidence of liver disease",
49
49
  max_length=15,
50
50
  choices=YES_NO,
51
- null=True,
51
+ default="",
52
52
  blank=False,
53
53
  help_text=(
54
54
  "Evidence of chronic liver disease: Jaundice, pruritus, "
@@ -62,7 +62,7 @@ class PartTwoFieldsModelMixin(models.Model):
62
62
  ),
63
63
  max_length=15,
64
64
  choices=YES_NO,
65
- null=True,
65
+ default="",
66
66
  blank=False,
67
67
  help_text=(
68
68
  "Evidence of alcoholism or acute alcohol intoxication: "
@@ -77,7 +77,7 @@ class PartTwoFieldsModelMixin(models.Model):
77
77
  ),
78
78
  max_length=15,
79
79
  choices=YES_NO,
80
- null=True,
80
+ default="",
81
81
  blank=False,
82
82
  help_text="lactic acidosis and/or diabetic ketoacidosis",
83
83
  )
@@ -88,7 +88,7 @@ class PartTwoFieldsModelMixin(models.Model):
88
88
  ),
89
89
  max_length=15,
90
90
  choices=YES_NO,
91
- null=True,
91
+ default="",
92
92
  blank=False,
93
93
  )
94
94
 
@@ -98,7 +98,7 @@ class PartTwoFieldsModelMixin(models.Model):
98
98
  ),
99
99
  max_length=15,
100
100
  choices=YES_NO,
101
- null=True,
101
+ default="",
102
102
  blank=False,
103
103
  help_text=(
104
104
  "Including: decompensated heart failure, respiratory failure, "
@@ -113,7 +113,7 @@ class PartTwoFieldsModelMixin(models.Model):
113
113
  ),
114
114
  max_length=15,
115
115
  choices=YES_NO,
116
- null=True,
116
+ default="",
117
117
  blank=False,
118
118
  )
119
119
 
@@ -124,7 +124,7 @@ class PartTwoFieldsModelMixin(models.Model):
124
124
  ),
125
125
  max_length=15,
126
126
  choices=YES_NO,
127
- null=True,
127
+ default="",
128
128
  blank=False,
129
129
  help_text=(
130
130
  "For example: Magnesium stearate, sodium carboxymethylcellulose, hypromellose"
@@ -135,7 +135,7 @@ class PartTwoFieldsModelMixin(models.Model):
135
135
  verbose_name="Is the patient known to have diabetes?",
136
136
  max_length=15,
137
137
  choices=YES_NO,
138
- null=True,
138
+ default="",
139
139
  blank=False,
140
140
  )
141
141
 
@@ -143,7 +143,7 @@ class PartTwoFieldsModelMixin(models.Model):
143
143
  verbose_name="Is the patient known to be taking anti-diabetic medications?",
144
144
  max_length=15,
145
145
  choices=YES_NO,
146
- null=True,
146
+ default="",
147
147
  blank=False,
148
148
  )
149
149
 
@@ -191,9 +191,9 @@ class PartTwoFieldsModelMixin(models.Model):
191
191
  choices=YES_PENDING_NA,
192
192
  default=NOT_APPLICABLE,
193
193
  help_text=(
194
- "Only applicable if the patient missed the appointment for the second stage "
195
- "of screening (P3), several attempts have been made to contact the patient, "
196
- "and the patient has not started P3. See above"
194
+ "Only applicable if the patient missed the appointment for the second "
195
+ "stage of screening (P3), several attempts have been made to contact the "
196
+ "patient, and the patient has not started P3. See above"
197
197
  ),
198
198
  )
199
199
 
@@ -201,12 +201,14 @@ class PartTwoFieldsModelMixin(models.Model):
201
201
  verbose_name="Date decision made",
202
202
  null=True,
203
203
  blank=True,
204
- help_text="Must be after the appointment date for the second stage of screening (P3)",
204
+ help_text=(
205
+ "Must be after the appointment date for the second stage of screening (P3)"
206
+ ),
205
207
  )
206
208
 
207
209
  p3_ltfu_comment = models.TextField(
208
210
  verbose_name="Provide any additional comments on this decision (or leave blank)",
209
- null=True,
211
+ default="",
210
212
  blank=True,
211
213
  )
212
214
 
@@ -214,5 +216,5 @@ class PartTwoFieldsModelMixin(models.Model):
214
216
  def p3_appt(self):
215
217
  return self.appt_datetime
216
218
 
217
- class Meta:
219
+ class Meta: # noqa: DJ012
218
220
  abstract = True
@@ -3,3 +3,12 @@ from .proxy_models import ScreeningPartOne, ScreeningPartThree, ScreeningPartTwo
3
3
  from .signals import update_p3_ltfu_on_post_save
4
4
  from .subject_refusal import SubjectRefusal
5
5
  from .subject_screening import SubjectScreening
6
+
7
+ __all__ = [
8
+ "ScreeningPartOne",
9
+ "ScreeningPartThree",
10
+ "ScreeningPartTwo",
11
+ "SubjectRefusal",
12
+ "SubjectScreening",
13
+ "update_p3_ltfu_on_post_save",
14
+ ]
@@ -21,7 +21,7 @@ class IcpReferralManager(models.Manager):
21
21
 
22
22
 
23
23
  class IcpReferral(SiteModelMixin, BaseUuidModel):
24
- """ "Not used"""
24
+ """Not used"""
25
25
 
26
26
  subject_screening = models.OneToOneField(
27
27
  SubjectScreening, null=True, on_delete=models.PROTECT
@@ -91,7 +91,7 @@ class IcpReferral(SiteModelMixin, BaseUuidModel):
91
91
 
92
92
  referred_datetime = models.DateTimeField(null=True, help_text="Date and time of referral")
93
93
 
94
- referral_reasons = models.TextField(null=True)
94
+ referral_reasons = models.TextField(default="")
95
95
 
96
96
  objects = IcpReferralManager()
97
97
 
@@ -102,17 +102,17 @@ class IcpReferral(SiteModelMixin, BaseUuidModel):
102
102
  def save(self, *args, **kwargs):
103
103
  try:
104
104
  SubjectScreening.objects.get(screening_identifier=self.screening_identifier)
105
- except ObjectDoesNotExist:
105
+ except ObjectDoesNotExist as e:
106
106
  raise IcpReferralError(
107
107
  f"Invalid META screening identifier. Got {self.screening_identifier}"
108
- )
108
+ ) from e
109
109
  super().save(*args, **kwargs)
110
110
 
111
111
  def __str__(self):
112
112
  return f"{self.screening_identifier} {self.gender} {self.age_in_years}"
113
113
 
114
114
  def natural_key(self):
115
- return (self.screening_identifier,) # noqa
115
+ return (self.screening_identifier,)
116
116
 
117
117
  class Meta:
118
118
  pass
File without changes
@@ -1,6 +1,6 @@
1
1
  from django.db.models.signals import post_save
2
2
  from django.dispatch import receiver
3
- from edc_constants.constants import NOT_APPLICABLE
3
+ from edc_constants.constants import NOT_APPLICABLE, NULL_STRING
4
4
 
5
5
  from .proxy_models import ScreeningPartThree
6
6
 
@@ -11,14 +11,13 @@ from .proxy_models import ScreeningPartThree
11
11
  sender=ScreeningPartThree,
12
12
  dispatch_uid="update_p3_ltfu_on_post_save",
13
13
  )
14
- def update_p3_ltfu_on_post_save(sender, instance, raw, created, **kwargs):
14
+ def update_p3_ltfu_on_post_save(sender, instance, raw, created, **kwargs): # noqa: ARG001
15
15
  """ """
16
- if not raw:
17
- if instance.p3_ltfu != NOT_APPLICABLE and instance.part_three_report_datetime:
18
- msg = "[auto-updated p3 submitted]"
19
- instance.p3_ltfu = NOT_APPLICABLE
20
- instance.p3_ltfu_date = None
21
- instance.p3_ltfu_comment = (
22
- f"{msg} {instance.p3_ltfu_comment.replace(msg, '') or ''}".strip()
23
- )
24
- instance.save_base(update_fields=["p3_ltfu", "p3_ltfu_date", "p3_ltfu_comment"])
16
+ if not raw and instance.p3_ltfu != NOT_APPLICABLE and instance.part_three_report_datetime:
17
+ msg = "[auto-updated p3 submitted]"
18
+ instance.p3_ltfu = NOT_APPLICABLE
19
+ instance.p3_ltfu_date = None
20
+ instance.p3_ltfu_comment = (
21
+ f"{msg} {instance.p3_ltfu_comment.replace(msg, NULL_STRING) or NULL_STRING}"
22
+ ).strip()
23
+ instance.save_base(update_fields=["p3_ltfu", "p3_ltfu_date", "p3_ltfu_comment"])
@@ -58,7 +58,7 @@ class SubjectRefusal(NonUniqueSubjectIdentifierModelMixin, SiteModelMixin, BaseU
58
58
  return (self.subject_identifier,)
59
59
 
60
60
  def get_search_slug_fields(self):
61
- return ["screening_identifier", "subject_identifier"]
61
+ return "screening_identifier", "subject_identifier"
62
62
 
63
63
  class Meta:
64
64
  verbose_name = "Subject Refusal"
@@ -10,8 +10,6 @@ from edc_screening.screening_identifier import (
10
10
  )
11
11
  from edc_utils import get_utcnow
12
12
 
13
- from meta_consent.consents import consent_v1
14
-
15
13
  from ..model_mixins import (
16
14
  CalculatedModelMixin,
17
15
  EligibilityModelMixin,
@@ -39,7 +37,7 @@ class SubjectScreening(
39
37
  BaseUuidModel,
40
38
  ):
41
39
  identifier_cls = ScreeningIdentifier
42
- consent_definitions = [consent_v1]
40
+ # consent_definitions = [consent_v1]
43
41
 
44
42
  contact_number = EncryptedCharField(
45
43
  validators=[RegexValidator(r"^[0-9\-\(\)\ ]+$", message="Enter a valid number")],
meta_screening/urls.py CHANGED
File without changes
meta_sites/__init__.py CHANGED
File without changes
meta_sites/apps.py CHANGED
File without changes
File without changes
meta_sites/models.py CHANGED
File without changes
meta_sites/sites.py CHANGED
File without changes
meta_subject/__init__.py CHANGED
File without changes
@@ -1,18 +1,19 @@
1
1
  from django.apps import apps as django_apps
2
- from edc_action_item import Action, ActionWithNotification, site_action_items
3
- from edc_action_item.site_action_items import AlreadyRegistered
2
+ from edc_action_item.action import Action
3
+ from edc_action_item.action_with_notification import ActionWithNotification
4
+ from edc_action_item.site_action_items import AlreadyRegistered, site_action_items
4
5
  from edc_adverse_event.constants import AE_INITIAL_ACTION
5
6
  from edc_constants.constants import GRADE3, GRADE4, HIGH_PRIORITY, NEW, NONE, POS, YES
6
7
  from edc_egfr.constants import EGFR_DROP_NOTIFICATION_ACTION
7
- from edc_lab_results.action_items import BloodResultsFbcAction
8
- from edc_lab_results.action_items import (
9
- BloodResultsGluAction as BaseBloodResultsGluAction,
10
- )
11
8
  from edc_lab_results.action_items import (
9
+ BloodResultsFbcAction,
12
10
  BloodResultsHba1cAction,
13
11
  BloodResultsLftAction,
14
12
  BloodResultsLipidsAction,
15
13
  )
14
+ from edc_lab_results.action_items import (
15
+ BloodResultsGluAction as BaseBloodResultsGluAction,
16
+ )
16
17
  from edc_lab_results.action_items import (
17
18
  BloodResultsRftAction as BaseBloodResultsRftAction,
18
19
  )
@@ -90,8 +91,7 @@ class FollowupExaminationAction(Action):
90
91
  self.reference_obj.symptoms_g3.exclude(name=NONE).count() > 0
91
92
  or self.reference_obj.symptoms_g4.exclude(name=NONE).count() > 0
92
93
  or self.reference_obj.any_other_problems_sae_grade in [GRADE3, GRADE4]
93
- or self.reference_obj.lactic_acidosis == YES
94
- or self.reference_obj.hepatomegaly == YES
94
+ or YES in (self.reference_obj.lactic_acidosis, self.reference_obj.hepatomegaly)
95
95
  ) and not is_baseline(instance=self.reference_obj.subject_visit):
96
96
  next_actions.append(AE_INITIAL_ACTION)
97
97
  return next_actions
@@ -132,7 +132,7 @@ class DeliveryAction(ActionWithNotification):
132
132
  name = DELIVERY_ACTION
133
133
  display_name = "Submit Delivery Form"
134
134
  notification_display_name = "Delivery Form"
135
- parent_action_names = [PREGNANCY_NOTIFICATION_ACTION]
135
+ parent_action_names = (PREGNANCY_NOTIFICATION_ACTION,)
136
136
  reference_model = "meta_subject.delivery"
137
137
  show_link_to_changelist = True
138
138
  show_link_to_add = False
@@ -140,15 +140,14 @@ class DeliveryAction(ActionWithNotification):
140
140
  priority = HIGH_PRIORITY
141
141
 
142
142
  def get_next_actions(self):
143
- next_actions = [OFFSCHEDULE_PREGNANCY_ACTION]
144
- return next_actions
143
+ return [OFFSCHEDULE_PREGNANCY_ACTION]
145
144
 
146
145
 
147
146
  class EgfrDropNotificationAction(ActionWithNotification):
148
147
  name = EGFR_DROP_NOTIFICATION_ACTION
149
148
  display_name = "eGFR drop warning"
150
149
  notification_display_name = "eGFR drop warning"
151
- parent_action_names = []
150
+ parent_action_names = ()
152
151
  reference_model = "meta_subject.egfrdropnotification"
153
152
  show_link_to_changelist = True
154
153
  show_link_to_add = True
@@ -163,7 +162,7 @@ class DmFollowAction(ActionWithNotification):
163
162
  name = DM_FOLLOWUP_ACTION
164
163
  display_name = "Diabetes Followup"
165
164
  notification_display_name = "Diabetes Followup"
166
- parent_action_names = [DM_REFFERAL_ACTION]
165
+ parent_action_names = (DM_REFFERAL_ACTION,)
167
166
  reference_model = "meta_subject.dmfollowup"
168
167
  show_link_to_changelist = True
169
168
  show_link_to_add = False
@@ -174,8 +173,7 @@ class DmFollowAction(ActionWithNotification):
174
173
  priority = HIGH_PRIORITY
175
174
 
176
175
  def get_next_actions(self):
177
- next_actions = [OFFSCHEDULE_DM_REFERRAL_ACTION]
178
- return next_actions
176
+ return [OFFSCHEDULE_DM_REFERRAL_ACTION]
179
177
 
180
178
 
181
179
  def register_actions():
@@ -34,3 +34,42 @@ from .subject_visit_admin import SubjectVisitAdmin
34
34
  from .subject_visit_missed_admin import SubjectVisitMissedAdmin
35
35
  from .urine_dipstick_test_admin import UrineDipstickTestAdmin
36
36
  from .urine_pregnancy_admin import UrinePregnancyAdmin
37
+
38
+ __all__ = [
39
+ "ArvRegimensAdmin",
40
+ "BirthOutcomesAdmin",
41
+ "BloodResultsFbcAdmin",
42
+ "BloodResultsLftAdmin",
43
+ "BloodResultsLipidsAdmin",
44
+ "BloodResultsRftAdmin",
45
+ "ComplicationsAdmin",
46
+ "ComplicationsGlycemiaAdmin",
47
+ "ConcomitantMedicationAdmin",
48
+ "DeliveryAdmin",
49
+ "DmEndpointAdmin",
50
+ "DmFollowupAdmin",
51
+ "EgfrDropNotificationAdmin",
52
+ "Eq5d3lAdmin",
53
+ "FollowupExaminationAdmin",
54
+ "FollowupVitalsAdmin",
55
+ "GlucoseAdmin",
56
+ "GlucoseFbgAdmin",
57
+ "HealthEconomicsSimpleAdmin",
58
+ "HealthEconomicsUpdateAdmin",
59
+ "HepatitisTestAdmin",
60
+ "MalariaTestAdmin",
61
+ "MedicationAdherenceAdmin",
62
+ "MnsiAdmin",
63
+ "NextAppointmentAdmin",
64
+ "OtherArvRegimensAdmin",
65
+ "PatientHistoryAdmin",
66
+ "PhysicalExamAdmin",
67
+ "PregnancyUpdateAdmin",
68
+ "Sf12Admin",
69
+ "StudyMedicationAdmin",
70
+ "SubjectRequisitionAdmin",
71
+ "SubjectVisitAdmin",
72
+ "SubjectVisitMissedAdmin",
73
+ "UrineDipstickTestAdmin",
74
+ "UrinePregnancyAdmin",
75
+ ]
File without changes
@@ -1,5 +1,3 @@
1
- from typing import Tuple
2
-
3
1
  from django.contrib import admin
4
2
  from django.core.exceptions import ObjectDoesNotExist
5
3
  from django.template.loader import render_to_string
@@ -47,11 +45,11 @@ class BirthOutcomesAdmin(
47
45
  "birth_outcome",
48
46
  )
49
47
 
50
- radio_fields = {
48
+ radio_fields = { # noqa: RUF012
51
49
  "birth_outcome": admin.VERTICAL,
52
50
  }
53
51
 
54
- def get_list_filter(self, request) -> Tuple[str, ...]:
52
+ def get_list_filter(self, request) -> tuple[str, ...]:
55
53
  fields = super().get_list_filter(request)
56
54
  custom_fields = (
57
55
  "birth_order",
@@ -59,7 +57,7 @@ class BirthOutcomesAdmin(
59
57
  )
60
58
  return custom_fields + fields
61
59
 
62
- def get_search_fields(self, request) -> Tuple[str, ...]:
60
+ def get_search_fields(self, request) -> tuple[str, ...]:
63
61
  fields = super().get_search_fields(request)
64
62
  custom_fields = (
65
63
  "delivery__subject_visit__subject_identifier",
@@ -92,7 +90,5 @@ class BirthOutcomesAdmin(
92
90
  if callable(super().view_on_site):
93
91
  url = super().view_on_site(obj)
94
92
  else:
95
- raise NoReverseMatch(
96
- f"{e}. See subject_dashboard_url_name for {repr(self)}."
97
- )
93
+ raise NoReverseMatch(f"{e}. See subject_dashboard_url_name for {self!r}.")
98
94
  return url
@@ -4,3 +4,12 @@ from .blood_results_ins_admin import BloodResultsInsAdmin
4
4
  from .blood_results_lft_admin import BloodResultsLftAdmin
5
5
  from .blood_results_lipids_admin import BloodResultsLipidsAdmin
6
6
  from .blood_results_rft_admin import BloodResultsRftAdmin
7
+
8
+ __all__ = [
9
+ "BloodResultsFbcAdmin",
10
+ "BloodResultsHba1cAdmin",
11
+ "BloodResultsInsAdmin",
12
+ "BloodResultsLftAdmin",
13
+ "BloodResultsLipidsAdmin",
14
+ "BloodResultsRftAdmin",
15
+ ]
@@ -1,5 +1,5 @@
1
1
  from django.contrib import admin
2
- from edc_action_item import action_fieldset_tuple
2
+ from edc_action_item.fieldsets import action_fieldset_tuple
3
3
  from edc_lab_results.admin import BloodResultsModelAdminMixin
4
4
  from edc_lab_results.fieldsets import BloodResultFieldset
5
5
  from edc_model_admin.history import SimpleHistoryAdmin
@@ -1,5 +1,5 @@
1
1
  from django.contrib import admin
2
- from edc_action_item import action_fieldset_tuple
2
+ from edc_action_item.fieldsets import action_fieldset_tuple
3
3
  from edc_lab_panel.panels import hba1c_panel
4
4
  from edc_lab_results.admin import BloodResultsModelAdminMixin
5
5
  from edc_lab_results.fieldsets import BloodResultFieldset
@@ -1,5 +1,5 @@
1
1
  from django.contrib import admin
2
- from edc_action_item import action_fieldset_tuple
2
+ from edc_action_item.fieldsets import action_fieldset_tuple
3
3
  from edc_lab_results.admin import BloodResultsModelAdminMixin
4
4
  from edc_lab_results.fieldsets import BloodResultFieldset
5
5
  from edc_model_admin.history import SimpleHistoryAdmin
@@ -1,5 +1,5 @@
1
1
  from django.contrib import admin
2
- from edc_action_item import action_fieldset_tuple
2
+ from edc_action_item.fieldsets import action_fieldset_tuple
3
3
  from edc_lab_results.admin import BloodResultsModelAdminMixin
4
4
  from edc_lab_results.fieldsets import BloodResultFieldset
5
5
  from edc_model_admin.history import SimpleHistoryAdmin
@@ -1,5 +1,5 @@
1
1
  from django.contrib import admin
2
- from edc_action_item import action_fieldset_tuple
2
+ from edc_action_item.fieldsets import action_fieldset_tuple
3
3
  from edc_lab_results.admin import BloodResultsModelAdminMixin
4
4
  from edc_lab_results.fieldsets import BloodResultFieldset
5
5
  from edc_model_admin.history import SimpleHistoryAdmin
@@ -1,8 +1,6 @@
1
- from typing import Tuple
2
-
3
1
  from django.contrib import admin, messages
4
2
  from django.core.exceptions import MultipleObjectsReturned
5
- from edc_action_item import action_fieldset_tuple
3
+ from edc_action_item.fieldsets import action_fieldset_tuple
6
4
  from edc_egfr.egfr import Egfr
7
5
  from edc_lab_results.admin import BloodResultsModelAdminMixin
8
6
  from edc_lab_results.fieldsets import (
@@ -28,7 +26,7 @@ class BloodResultsRftAdmin(
28
26
  BloodResultsModelAdminMixin, CrfModelAdminMixin, SimpleHistoryAdmin
29
27
  ):
30
28
  form = BloodResultsRftForm
31
- actions = ["create_or_update_egfr_notification", "recalculate_egfr"]
29
+ actions = ("create_or_update_egfr_notification", "recalculate_egfr")
32
30
  fieldsets = (
33
31
  *BloodResultFieldset(
34
32
  BloodResultsRft.lab_panel,
@@ -42,7 +40,7 @@ class BloodResultsRftAdmin(
42
40
  ).fieldsets,
43
41
  )
44
42
 
45
- def get_readonly_fields(self, request, obj=None) -> Tuple[str, ...]:
43
+ def get_readonly_fields(self, request, obj=None) -> tuple[str, ...]: # noqa: ARG002
46
44
  readonly_fields = super().get_readonly_fields(request)
47
45
  custom_fields = (
48
46
  "egfr_value",
File without changes
@@ -98,7 +98,7 @@ class ComplicationsGlycemiaAdmin(CrfModelAdminMixin, SimpleHistoryAdmin):
98
98
  audit_fieldset_tuple,
99
99
  )
100
100
 
101
- radio_fields = {
101
+ radio_fields = { # noqa: RUF012
102
102
  "at_reflex": admin.VERTICAL,
103
103
  "cataracts": admin.VERTICAL,
104
104
  "dns_burning": admin.VERTICAL,
File without changes