meta-edc 1.1.8__py3-none-any.whl → 1.1.12__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 (475) hide show
  1. meta_ae/action_items.py +2 -1
  2. meta_ae/admin/__init__.py +11 -0
  3. meta_ae/admin/ae_susar_admin.py +1 -1
  4. meta_ae/admin/death_report_admin.py +1 -1
  5. meta_ae/admin/modeladmin_mixins.py +10 -12
  6. meta_ae/baker_recipes.py +3 -3
  7. meta_ae/forms/__init__.py +13 -0
  8. meta_ae/forms/modelform_mixins.py +2 -2
  9. meta_ae/migrations/0001_initial.py +27 -27
  10. meta_ae/migrations/0006_aelocalreview_aesponsorreview.py +5 -5
  11. meta_ae/migrations/0022_historicalhospitalization_hospitalization.py +5 -13
  12. meta_ae/migrations/0023_alter_aefollowup_action_identifier_and_more.py +2017 -0
  13. meta_ae/model_mixins/__init__.py +2 -0
  14. meta_ae/model_mixins/ae_review_model_mixin.py +6 -6
  15. meta_ae/model_mixins/death_report_model_mixin.py +3 -3
  16. meta_ae/models/__init__.py +13 -0
  17. meta_ae/models/hospitalization.py +3 -3
  18. meta_ae/pdf_reports/__init__.py +2 -0
  19. meta_analytics/.DS_Store +0 -0
  20. meta_analytics/dataframes/__init__.py +24 -0
  21. meta_analytics/dataframes/get_eos_df.py +1 -2
  22. meta_analytics/dataframes/get_glucose_df.py +6 -7
  23. meta_analytics/dataframes/get_glucose_fbg_df.py +2 -3
  24. meta_analytics/dataframes/get_glucose_fbg_ogtt_df.py +1 -2
  25. meta_analytics/dataframes/get_last_imp_visits_df.py +5 -6
  26. meta_analytics/dataframes/glucose_endpoints/__init__.py +2 -0
  27. meta_analytics/dataframes/glucose_endpoints/endpoint_by_date.py +13 -20
  28. meta_analytics/dataframes/glucose_endpoints/glucose_endpoints_by_date.py +9 -10
  29. meta_analytics/dataframes/screening/__init__.py +2 -0
  30. meta_analytics/dataframes/screening/get_glucose_tested_only_df.py +1 -2
  31. meta_analytics/dataframes/screening/get_screening_df.py +6 -10
  32. meta_analytics/dataframes/utils.py +3 -8
  33. meta_analytics/get_tables.py +1 -2
  34. meta_analytics/tables/__init__.py +2 -0
  35. meta_consent/action_items.py +2 -1
  36. meta_consent/admin/__init__.py +6 -0
  37. meta_consent/admin/actions/__init__.py +2 -0
  38. meta_consent/admin/actions/create_missing_prescriptions.py +1 -1
  39. meta_consent/admin/list_filters.py +2 -2
  40. meta_consent/admin/modeladmin_mixins.py +3 -4
  41. meta_consent/admin/subject_consent_v1_ext_admin.py +2 -2
  42. meta_consent/baker_recipes.py +7 -8
  43. meta_consent/form_validators/__init__.py +2 -0
  44. meta_consent/forms/__init__.py +7 -0
  45. meta_consent/forms/subject_consent_v1_ext_form.py +2 -3
  46. meta_consent/forms/subject_reconsent_form.py +4 -4
  47. meta_consent/management/commands/create_missing_prescriptions.py +4 -2
  48. meta_consent/migrations/0001_initial.py +9 -9
  49. meta_consent/migrations/0024_historicalsubjectconsentv1.py +3 -8
  50. meta_consent/migrations/0026_historicalsubjectconsentv1ext_subjectconsentv1ext.py +5 -14
  51. meta_consent/migrations/0032_alter_historicalsubjectconsent_device_created_and_more.py +678 -0
  52. meta_consent/models/__init__.py +9 -0
  53. meta_consent/models/model_mixins.py +1 -2
  54. meta_consent/models/signals.py +9 -10
  55. meta_consent/models/subject_consent.py +1 -1
  56. meta_consent/models/subject_reconsent.py +3 -3
  57. meta_dashboard/patterns.py +1 -1
  58. meta_dashboard/templatetags/meta_dashboard_extras.py +1 -1
  59. meta_dashboard/view_utils/__init__.py +7 -0
  60. meta_dashboard/view_utils/subject_screening_button.py +9 -16
  61. meta_dashboard/views/__init__.py +8 -0
  62. meta_dashboard/views/ae/__init__.py +2 -0
  63. meta_dashboard/views/ae/ae_listboard_view.py +1 -1
  64. meta_dashboard/views/ae/death_report_listboard_view.py +1 -1
  65. meta_dashboard/views/screening/__init__.py +2 -0
  66. meta_dashboard/views/subject/__init__.py +2 -0
  67. meta_dashboard/views/subject/dashboard/__init__.py +2 -0
  68. meta_dashboard/views/subject/dashboard/dashboard_view.py +1 -1
  69. meta_dashboard/views/subject/listboard/__init__.py +2 -0
  70. meta_edc/__init__.py +5 -9
  71. meta_edc/celery.py +1 -1
  72. meta_edc/celery_live.py +1 -1
  73. meta_edc/celery_uat.py +1 -1
  74. meta_edc/management/commands/update_forms_reference.py +10 -12
  75. meta_edc/settings/debug.py +5 -4
  76. meta_edc/settings/defaults.py +18 -3
  77. meta_edc/settings/live.py +3 -1
  78. meta_edc/settings/logging.py +9 -4
  79. meta_edc/settings/minimal.py +4 -5
  80. meta_edc/settings/uat.py +3 -1
  81. meta_edc/views/__init__.py +2 -0
  82. meta_edc-1.1.12.dist-info/METADATA +174 -0
  83. {meta_edc-1.1.8.dist-info → meta_edc-1.1.12.dist-info}/RECORD +413 -526
  84. meta_edc-1.1.12.dist-info/WHEEL +4 -0
  85. meta_lists/migrations/0020_alter_abnormalfootappearanceobservations_extra_value_and_more.py +404 -0
  86. meta_pharmacy/admin/__init__.py +5 -0
  87. meta_pharmacy/admin/substitutions_admin.py +2 -2
  88. meta_pharmacy/forms/__init__.py +2 -0
  89. meta_pharmacy/forms/substitutions_form.py +6 -4
  90. meta_pharmacy/labels/__init__.py +4 -2
  91. meta_pharmacy/labels/draw_label_for_subject_with_barcode.py +1 -2
  92. meta_pharmacy/labels/draw_label_with_test_data.py +2 -2
  93. meta_pharmacy/labels/label_data.py +1 -2
  94. meta_pharmacy/labels/print_sheets.py +4 -6
  95. meta_pharmacy/migrations/0002_initial.py +7 -20
  96. meta_pharmacy/migrations/0003_auto_20240909_2335.py +3 -2
  97. meta_pharmacy/migrations/0006_lotnumber_label.py +5 -14
  98. meta_pharmacy/migrations/0008_remove_lotnumber_medication_and_more.py +5 -6
  99. meta_pharmacy/migrations/0010_alter_historicallabeldata_device_created_and_more.py +382 -0
  100. meta_pharmacy/models/__init__.py +7 -0
  101. meta_pharmacy/models/label_data.py +4 -5
  102. meta_pharmacy/models/substitutions.py +3 -3
  103. meta_pharmacy/prepare_meta_pharmacy.py +1 -1
  104. meta_pharmacy/utils/__init__.py +2 -0
  105. meta_pharmacy/utils/update_initial_pharmacy_data.py +1 -1
  106. meta_prn/admin/__init__.py +16 -0
  107. meta_prn/admin/dm_referral_admin.py +2 -1
  108. meta_prn/admin/end_of_study_admin.py +6 -7
  109. meta_prn/admin/loss_to_followup_admin.py +3 -2
  110. meta_prn/admin/off_study_medication_admin.py +5 -6
  111. meta_prn/admin/offschedule_admin.py +5 -6
  112. meta_prn/admin/offschedule_dm_referral_admin.py +6 -6
  113. meta_prn/admin/offschedule_postnatal_admin.py +7 -7
  114. meta_prn/admin/offschedule_pregnancy_admin.py +8 -7
  115. meta_prn/admin/onschedule_admin.py +7 -8
  116. meta_prn/admin/onschedule_dm_referral_admin.py +6 -7
  117. meta_prn/admin/pregnancy_notification_admin.py +5 -6
  118. meta_prn/admin/protocol_incident_admin.py +1 -1
  119. meta_prn/admin/subject_transfer_admin.py +1 -1
  120. meta_prn/baker_recipes.py +4 -4
  121. meta_prn/form_validators/__init__.py +5 -0
  122. meta_prn/form_validators/end_of_study.py +2 -2
  123. meta_prn/forms/__init__.py +13 -0
  124. meta_prn/migrations/0001_initial.py +25 -25
  125. meta_prn/migrations/0017_auto_20220307_1929.py +5 -5
  126. meta_prn/migrations/0018_auto_20220309_2106.py +9 -9
  127. meta_prn/migrations/0021_auto_20220316_2147.py +13 -13
  128. meta_prn/migrations/0022_auto_20220318_0133.py +9 -9
  129. meta_prn/migrations/0032_historicalegfrnotification_egfrnotification.py +5 -13
  130. meta_prn/migrations/0038_alter_endofstudy_delivery_date_and_more.py +5 -13
  131. meta_prn/migrations/0041_endofstudy_transfer_date_and_more.py +5 -13
  132. meta_prn/migrations/0057_historicalonscheduledmreferral_and_more.py +13 -38
  133. meta_prn/migrations/0067_alter_offschedule_managers_and_more.py +2557 -0
  134. meta_prn/models/__init__.py +20 -0
  135. meta_prn/models/offschedule.py +4 -4
  136. meta_prn/models/protocol_incident.py +1 -1
  137. meta_prn/models/subject_transfer.py +8 -0
  138. meta_rando/migrations/0001_initial.py +5 -5
  139. meta_rando/migrations/0006_alter_historicalrandomizationlist_allocated_user_and_more.py +130 -0
  140. meta_reports/__init__.py +2 -0
  141. meta_reports/admin/__init__.py +16 -0
  142. meta_reports/admin/dbviews/__init__.py +13 -0
  143. meta_reports/admin/dbviews/glucose_summary_admin.py +6 -6
  144. meta_reports/admin/dbviews/imp_substitutions_admin.py +12 -11
  145. meta_reports/admin/dbviews/missing_screening_ogtt_admin/__init__.py +5 -0
  146. meta_reports/admin/dbviews/missing_screening_ogtt_admin/note_model_admin.py +27 -3
  147. meta_reports/admin/dbviews/missing_screening_ogtt_admin/unmanaged_model_admin.py +6 -6
  148. meta_reports/admin/dbviews/on_study_missing_lab_values_admin/__init__.py +2 -0
  149. meta_reports/admin/dbviews/on_study_missing_lab_values_admin/unmanaged_model_admin.py +0 -3
  150. meta_reports/admin/dbviews/on_study_missing_values_admin/__init__.py +2 -0
  151. meta_reports/admin/dbviews/patient_history_missing_baseline_cd4_admin.py +8 -8
  152. meta_reports/admin/dbviews/unattended_three_in_row2_admin.py +6 -6
  153. meta_reports/admin/dbviews/unattended_three_in_row_admin.py +5 -5
  154. meta_reports/admin/dbviews/unattended_two_in_row_admin.py +5 -5
  155. meta_reports/admin/endpoints_admin.py +1 -1
  156. meta_reports/admin/last_imp_refill_admin.py +9 -9
  157. meta_reports/admin/list_filters.py +2 -2
  158. meta_reports/admin/modeladmin_mixins.py +9 -16
  159. meta_reports/death_report.py +1 -1
  160. meta_reports/forms/__init__.py +2 -0
  161. meta_reports/forms/missing_ogtt_note_form.py +2 -3
  162. meta_reports/management/commands/generate_endpoints.py +5 -4
  163. meta_reports/migrations/0035_historicalmissingogttnote_missingogttnote.py +5 -14
  164. meta_reports/migrations/0059_alter_endpoints_created_and_more.py +161 -0
  165. meta_reports/models/__init__.py +17 -0
  166. meta_reports/models/dbviews/__init__.py +14 -0
  167. meta_reports/models/dbviews/glucose_summary/__init__.py +2 -0
  168. meta_reports/models/dbviews/glucose_summary/unmanaged_model.py +4 -5
  169. meta_reports/models/dbviews/imp_substitutions/__init__.py +2 -0
  170. meta_reports/models/dbviews/imp_substitutions/view_definition.py +1 -1
  171. meta_reports/models/dbviews/missing_screening_ogtt/__init__.py +2 -0
  172. meta_reports/models/dbviews/missing_screening_ogtt/note_model.py +1 -1
  173. meta_reports/models/dbviews/missing_screening_ogtt/unmanaged_model.py +4 -3
  174. meta_reports/models/dbviews/on_study_missing_lab_values/__init__.py +2 -0
  175. meta_reports/models/dbviews/on_study_missing_lab_values/qa_cases.py +13 -11
  176. meta_reports/models/dbviews/on_study_missing_values/__init__.py +2 -0
  177. meta_reports/models/dbviews/on_study_missing_values/qa_cases.py +18 -0
  178. meta_reports/models/dbviews/patient_history_missing_baseline_cd4/__init__.py +2 -0
  179. meta_reports/models/dbviews/unattended_three_in_row/__init__.py +2 -0
  180. meta_reports/models/dbviews/unattended_three_in_row2/__init__.py +2 -0
  181. meta_reports/models/dbviews/unattended_two_in_row/__init__.py +2 -0
  182. meta_reports/models/endpoints.py +4 -4
  183. meta_reports/models/last_imp_refill.py +2 -3
  184. meta_reports/pdf_report.py +2 -2
  185. meta_reports/tasks.py +1 -1
  186. meta_screening/admin/__init__.py +8 -0
  187. meta_screening/admin/fieldsets.py +13 -14
  188. meta_screening/admin/list_filters.py +6 -4
  189. meta_screening/admin/screening_part_one_admin.py +1 -2
  190. meta_screening/admin/screening_part_three_admin.py +2 -3
  191. meta_screening/admin/screening_part_two_admin.py +7 -10
  192. meta_screening/admin/subject_refusal_admin.py +5 -3
  193. meta_screening/admin/subject_screening_admin.py +4 -4
  194. meta_screening/baker_recipes.py +9 -9
  195. meta_screening/eligibility/__init__.py +9 -0
  196. meta_screening/eligibility/eligibility.py +7 -7
  197. meta_screening/eligibility/eligibility_part_three/__init__.py +2 -0
  198. meta_screening/eligibility/eligibility_part_three/base_eligibility_part_three.py +8 -8
  199. meta_screening/eligibility/eligibility_part_three/eligibility_part_three_phase_three.py +13 -14
  200. meta_screening/form_validators/__init__.py +8 -0
  201. meta_screening/forms/__init__.py +20 -0
  202. meta_screening/forms/field_lists.py +16 -17
  203. meta_screening/forms/screening_part_one_form.py +2 -2
  204. meta_screening/forms/screening_part_three_form.py +5 -3
  205. meta_screening/forms/screening_part_two_form.py +1 -5
  206. meta_screening/forms/subject_refusal_form.py +0 -4
  207. meta_screening/forms/subject_screening_form.py +0 -4
  208. meta_screening/migrations/0001_initial.py +15 -15
  209. meta_screening/migrations/0010_auto_20191106_0828.py +5 -5
  210. meta_screening/migrations/0068_alter_historicalscreeningpartone_acute_condition_and_more.py +1579 -0
  211. meta_screening/model_mixins/__init__.py +8 -0
  212. meta_screening/model_mixins/eligibility_model_mixin.py +5 -3
  213. meta_screening/model_mixins/part_one_fields_model_mixin.py +5 -9
  214. meta_screening/model_mixins/part_three_fields_model_mixin.py +5 -6
  215. meta_screening/model_mixins/part_two_fields_model_mixin.py +18 -16
  216. meta_screening/models/__init__.py +9 -0
  217. meta_screening/models/icp_referral.py +5 -5
  218. meta_screening/models/signals.py +10 -11
  219. meta_screening/models/subject_refusal.py +1 -1
  220. meta_screening/models/subject_screening.py +1 -3
  221. meta_subject/action_items.py +13 -15
  222. meta_subject/admin/__init__.py +39 -0
  223. meta_subject/admin/birth_outcome_admin.py +4 -8
  224. meta_subject/admin/blood_results/__init__.py +9 -0
  225. meta_subject/admin/blood_results/blood_results_fbc_admin.py +1 -1
  226. meta_subject/admin/blood_results/blood_results_hba1c_admin.py +1 -1
  227. meta_subject/admin/blood_results/blood_results_ins_admin.py +1 -1
  228. meta_subject/admin/blood_results/blood_results_lft_admin.py +1 -1
  229. meta_subject/admin/blood_results/blood_results_lipids_admin.py +1 -1
  230. meta_subject/admin/blood_results/blood_results_rft_admin.py +3 -5
  231. meta_subject/admin/complications_glycemia_admin.py +1 -1
  232. meta_subject/admin/delivery_admin.py +7 -10
  233. meta_subject/admin/diabetes/__init__.py +2 -0
  234. meta_subject/admin/diabetes/dm_endpoint_admin.py +2 -2
  235. meta_subject/admin/diabetes/dm_followup_admin.py +3 -2
  236. meta_subject/admin/egfr_drop_notification_admin.py +1 -1
  237. meta_subject/admin/followup_examination_admin.py +10 -9
  238. meta_subject/admin/followup_vitals_admin.py +4 -5
  239. meta_subject/admin/glucose_admin.py +2 -4
  240. meta_subject/admin/glucose_fbg_admin.py +1 -3
  241. meta_subject/admin/health_economics/__init__.py +2 -0
  242. meta_subject/admin/health_economics/health_economics_simple_admin.py +1 -1
  243. meta_subject/admin/health_economics/health_economics_update_admin.py +1 -1
  244. meta_subject/admin/hepatitis_test_admin.py +1 -1
  245. meta_subject/admin/list_filters.py +1 -1
  246. meta_subject/admin/mnsi_admin.py +7 -5
  247. meta_subject/admin/other_arv_regimens_admin.py +3 -3
  248. meta_subject/admin/patient_history_admin.py +4 -4
  249. meta_subject/admin/physical_exam_admin.py +1 -1
  250. meta_subject/admin/pregnancy_update_admin.py +1 -1
  251. meta_subject/admin/study_medication_admin.py +8 -15
  252. meta_subject/admin/subject_requisition_admin.py +1 -1
  253. meta_subject/admin/subject_visit_admin.py +1 -1
  254. meta_subject/admin/subject_visit_missed_admin.py +1 -1
  255. meta_subject/admin/urine_dipstick_test_admin.py +1 -1
  256. meta_subject/admin/urine_pregnancy_admin.py +1 -1
  257. meta_subject/baker_recipes.py +15 -15
  258. meta_subject/form_validators/__init__.py +11 -0
  259. meta_subject/form_validators/delivery_form_validator.py +2 -3
  260. meta_subject/form_validators/dm_endpoint_form_validator.py +1 -1
  261. meta_subject/form_validators/dm_followup_form_validator.py +7 -6
  262. meta_subject/form_validators/glucose_form_validator.py +3 -5
  263. meta_subject/forms/__init__.py +41 -0
  264. meta_subject/forms/blood_results/__init__.py +9 -0
  265. meta_subject/forms/blood_results/blood_results_rft_form.py +1 -2
  266. meta_subject/forms/diabetes/__init__.py +2 -0
  267. meta_subject/forms/diabetes/dm_followup_form.py +2 -2
  268. meta_subject/forms/followup_vitals_form.py +3 -8
  269. meta_subject/forms/health_economics/__init__.py +2 -0
  270. meta_subject/forms/next_appointment_form.py +2 -3
  271. meta_subject/forms/slider_widget.py +1 -1
  272. meta_subject/forms/study_medication_form.py +11 -8
  273. meta_subject/management/commands/create_missing_refills.py +3 -3
  274. meta_subject/management/commands/create_missing_rx.py +1 -1
  275. meta_subject/management/commands/missed.py +20 -23
  276. meta_subject/metadata_rules/__init__.py +2 -0
  277. meta_subject/metadata_rules/predicates.py +25 -32
  278. meta_subject/migrations/0001_initial.py +61 -61
  279. meta_subject/migrations/0002_auto_20191021_0353.py +5 -5
  280. meta_subject/migrations/0012_auto_20200118_2334.py +5 -5
  281. meta_subject/migrations/0014_auto_20200120_1622.py +5 -5
  282. meta_subject/migrations/0018_coronakap_historicalcoronakap.py +5 -5
  283. meta_subject/migrations/0033_auto_20200516_2356.py +5 -5
  284. meta_subject/migrations/0038_auto_20200520_0020.py +5 -5
  285. meta_subject/migrations/0040_auto_20200527_2155.py +1 -1
  286. meta_subject/migrations/0045_auto_20200530_1801.py +1 -1
  287. meta_subject/migrations/0051_auto_20200617_2117.py +5 -5
  288. meta_subject/migrations/0063_auto_20210715_0337.py +5 -5
  289. meta_subject/migrations/0066_auto_20210721_0335.py +9 -9
  290. meta_subject/migrations/0067_auto_20210726_0340.py +5 -5
  291. meta_subject/migrations/0068_auto_20210728_1809.py +5 -5
  292. meta_subject/migrations/0072_auto_20210805_1545.py +7 -7
  293. meta_subject/migrations/0073_auto_20210809_0055.py +5 -5
  294. meta_subject/migrations/0077_auto_20210809_2323.py +3 -3
  295. meta_subject/migrations/0082_auto_20210823_1612.py +3 -3
  296. meta_subject/migrations/0083_auto_20210823_1620.py +3 -3
  297. meta_subject/migrations/0088_auto_20210924_0027.py +5 -5
  298. meta_subject/migrations/0090_auto_20210924_0424.py +5 -5
  299. meta_subject/migrations/0093_auto_20211117_0352.py +5 -5
  300. meta_subject/migrations/0095_auto_20220128_1719.py +5 -5
  301. meta_subject/migrations/0098_auto_20220309_2106.py +5 -5
  302. meta_subject/migrations/0101_auto_20220316_2147.py +13 -13
  303. meta_subject/migrations/0115_historicalegfrnotification_egfrnotification.py +5 -13
  304. meta_subject/migrations/0164_dmreferralfollowup_historicaldmreferralfollowup.py +5 -5
  305. meta_subject/migrations/0172_remove_historicalbloodresultsglu_action_item_and_more.py +1 -2
  306. meta_subject/migrations/0177_alter_bloodresultslft_alp_value_and_more.py +1 -2
  307. meta_subject/migrations/0178_historicalhealtheconomicsupdate_and_more.py +5 -14
  308. meta_subject/migrations/0186_healtheconomicsupdate_singleton_field_and_more.py +1 -2
  309. meta_subject/migrations/0187_dmdiagnosis_historicaldmdiagnosis_dmdxresult_and_more.py +5 -14
  310. meta_subject/migrations/0188_historicaldmdxresult_dmdxresult.py +5 -14
  311. meta_subject/migrations/0209_remove_historicaldmdxresult_dm_diagnosis_and_more.py +1 -2
  312. meta_subject/migrations/0216_historicalnextappointment_nextappointment.py +5 -6
  313. meta_subject/migrations/0220_historicalbloodresultsgludummy_bloodresultsgludummy.py +5 -14
  314. meta_subject/migrations/0227_alter_followupvitals_waist_circumference_comment_and_more.py +97 -0
  315. meta_subject/migrations/0228_bloodresultshba1c_hba1c_datetime_and_more.py +9297 -0
  316. meta_subject/model_mixins/__init__.py +8 -0
  317. meta_subject/model_mixins/search_slug_model_mixin.py +1 -2
  318. meta_subject/model_mixins/vitals_fields_model_mixin.py +1 -1
  319. meta_subject/models/__init__.py +48 -0
  320. meta_subject/models/birth_outcomes.py +3 -3
  321. meta_subject/models/blood_results/__init__.py +11 -0
  322. meta_subject/models/delivery.py +3 -3
  323. meta_subject/models/diabetes/__init__.py +2 -0
  324. meta_subject/models/diabetes/dm_endpoint.py +4 -4
  325. meta_subject/models/diabetes/dm_followup.py +3 -4
  326. meta_subject/models/diet_and_lifestyle.py +2 -2
  327. meta_subject/models/followup_examination.py +11 -11
  328. meta_subject/models/glucose.py +4 -4
  329. meta_subject/models/glucose_fbg.py +2 -3
  330. meta_subject/models/health_economics/__init__.py +2 -0
  331. meta_subject/models/health_economics/health_economics.py +7 -7
  332. meta_subject/models/health_economics/health_economics_update.py +2 -1
  333. meta_subject/models/hepatitis_test.py +2 -2
  334. meta_subject/models/other_arv_regimens_detail.py +1 -1
  335. meta_subject/models/patient_history.py +5 -6
  336. meta_subject/models/physical_exam.py +2 -2
  337. meta_subject/models/pregnancy_update.py +1 -1
  338. meta_subject/models/signals.py +14 -12
  339. meta_subject/models/subject_visit.py +1 -1
  340. meta_subject/models/urine_dipstick_test.py +1 -1
  341. meta_subject/models/urine_pregnancy.py +1 -1
  342. meta_visit_schedule/visit_schedules/__init__.py +2 -0
  343. meta_visit_schedule/visit_schedules/phase_three/__init__.py +2 -0
  344. meta_visit_schedule/visit_schedules/phase_three/schedule.py +2 -2
  345. meta_visit_schedule/visit_schedules/phase_three/schedule_dm_referral.py +1 -2
  346. meta_visit_schedule/visit_schedules/phase_three/schedule_pregnancy.py +1 -2
  347. meta_ae/tests/holidays.csv +0 -15
  348. meta_ae/tests/tests/test_actions.py +0 -126
  349. meta_ae/tests/urls.py +0 -10
  350. meta_analytics/dataframes/glucose_endpoints/utils.py +0 -0
  351. meta_analytics/notebooks/anu.ipynb +0 -95
  352. meta_analytics/notebooks/appointment_planning.ipynb +0 -329
  353. meta_analytics/notebooks/arvs.ipynb +0 -103
  354. meta_analytics/notebooks/cleaning/__init__.py +0 -0
  355. meta_analytics/notebooks/cleaning/consent_v1_ext.ipynb +0 -227
  356. meta_analytics/notebooks/cleaning/offschedule_eos.ipynb +0 -353
  357. meta_analytics/notebooks/dsmc/renal_dysfunction.ipynb +0 -435
  358. meta_analytics/notebooks/endpoints/meta_endpoints_by_date.ipynb +0 -656
  359. meta_analytics/notebooks/followup_examination.ipynb +0 -141
  360. meta_analytics/notebooks/hba1c.ipynb +0 -136
  361. meta_analytics/notebooks/hiv_regimens.ipynb +0 -429
  362. meta_analytics/notebooks/incidence.ipynb +0 -232
  363. meta_analytics/notebooks/liver.ipynb +0 -389
  364. meta_analytics/notebooks/magreth.ipynb +0 -645
  365. meta_analytics/notebooks/monitoring_report.ipynb +0 -1834
  366. meta_analytics/notebooks/pharmacy.ipynb +0 -1061
  367. meta_analytics/notebooks/pharmacy_stock_202410.ipynb +0 -306
  368. meta_analytics/notebooks/qa.ipynb +0 -273
  369. meta_analytics/notebooks/steering.ipynb +0 -61
  370. meta_analytics/notebooks/undiagnosed/meta3_screening_consort_chart.ipynb +0 -1176
  371. meta_analytics/notebooks/undiagnosed/meta3_screening_undiagnosed.ipynb +0 -519
  372. meta_analytics/notebooks/undiagnosed/meta_screening_table2.ipynb +0 -964
  373. meta_analytics/notebooks/undiagnosed/screen_undiagnosed_or.ipynb +0 -296
  374. meta_analytics/notebooks/undiagnosed/screening.ipynb +0 -273
  375. meta_analytics/notebooks/undiagnosed/screening2.ipynb +0 -958
  376. meta_analytics/notebooks/undiagnosed/screening_undiagnosed_20241002.ipynb +0 -958
  377. meta_analytics/notebooks/ven.ipynb +0 -191
  378. meta_analytics/notebooks/vitals.ipynb +0 -263
  379. meta_analytics/tests/__init__.py +0 -0
  380. meta_analytics/tests/test_endpoints_by_date.py +0 -94
  381. meta_consent/tests/__init__.py +0 -0
  382. meta_consent/tests/holidays.csv +0 -15
  383. meta_consent/tests/tests/__init__.py +0 -0
  384. meta_consent/tests/tests/test_form_validators.py +0 -110
  385. meta_consent/tests/tests/test_subject_consent.py +0 -10
  386. meta_consent/tests/urls.py +0 -17
  387. meta_dashboard/tests/__init__.py +0 -0
  388. meta_dashboard/tests/admin.py +0 -22
  389. meta_dashboard/tests/holidays.csv +0 -15
  390. meta_dashboard/tests/tests/__init__.py +0 -0
  391. meta_dashboard/tests/urls.py +0 -55
  392. meta_edc/tests/__init__.py +0 -0
  393. meta_edc/tests/tests/__init__.py +0 -0
  394. meta_edc/tests/tests/test_endpoints.py +0 -555
  395. meta_edc-1.1.8.dist-info/METADATA +0 -767
  396. meta_edc-1.1.8.dist-info/WHEEL +0 -5
  397. meta_edc-1.1.8.dist-info/licenses/AUTHORS.rst +0 -8
  398. meta_edc-1.1.8.dist-info/top_level.txt +0 -20
  399. meta_labs/tests/__init__.py +0 -0
  400. meta_labs/tests/test_labs.py +0 -27
  401. meta_labs/tests/test_reportables.py +0 -70
  402. meta_labs/tests/urls.py +0 -4
  403. meta_lists/tests/__init__.py +0 -0
  404. meta_lists/tests/test_lists.py +0 -8
  405. meta_pharmacy/notebooks/pharmacy.ipynb +0 -41
  406. meta_prn/tests/__init__.py +0 -0
  407. meta_prn/tests/tests/__init__.py +0 -0
  408. meta_prn/tests/tests/test_actions.py +0 -97
  409. meta_prn/tests/tests/test_dm_referral.py +0 -203
  410. meta_prn/tests/tests/test_eos_events.py +0 -134
  411. meta_prn/tests/tests/test_manager_order.py +0 -14
  412. meta_prn/tests/tests/test_pregnancy_notification.py +0 -93
  413. meta_prn/tests/urls.py +0 -10
  414. meta_rando/tests/__init__.py +0 -0
  415. meta_rando/tests/tests/__init__.py +0 -0
  416. meta_rando/tests/tests/test_randomizers.py +0 -57
  417. meta_reports/tests/__init__.py +0 -0
  418. meta_reports/tests/test_reports.py +0 -35
  419. meta_reports/tests/test_sql_gen.py +0 -5
  420. meta_reports/tests/urls.py +0 -4
  421. meta_screening/offline_models.py +0 -3
  422. meta_screening/tests/__init__.py +0 -0
  423. meta_screening/tests/holidays.csv +0 -15
  424. meta_screening/tests/meta_test_case_mixin.py +0 -234
  425. meta_screening/tests/options.py +0 -127
  426. meta_screening/tests/tests/__init__.py +0 -0
  427. meta_screening/tests/tests/test_forms.py +0 -404
  428. meta_screening/tests/tests/test_screening_part_one.py +0 -108
  429. meta_screening/tests/tests/test_screening_part_three.py +0 -433
  430. meta_screening/tests/tests/test_screening_part_two.py +0 -84
  431. meta_sites/tests/__init__.py +0 -0
  432. meta_sites/tests/test_sites.py +0 -12
  433. meta_sites/tests/urls.py +0 -4
  434. meta_stats/__init__.py +0 -0
  435. meta_stats/incidence.py +0 -16
  436. meta_stats/models.py +0 -0
  437. meta_stats/tests/__init__.py +0 -0
  438. meta_stats/tests/tests/__init__.py +0 -0
  439. meta_stats/tests/tests/test_incidence.py +0 -10
  440. meta_subject/tests/__init__.py +0 -0
  441. meta_subject/tests/holidays.csv +0 -15
  442. meta_subject/tests/tests/__init__.py +0 -0
  443. meta_subject/tests/tests/test_egfr.py +0 -234
  444. meta_subject/tests/tests/test_fixes.py +0 -64
  445. meta_subject/tests/tests/test_followup.py +0 -52
  446. meta_subject/tests/tests/test_manager_order.py +0 -11
  447. meta_subject/tests/tests/test_medication_adherence.py +0 -79
  448. meta_subject/tests/tests/test_metadata_rules.py +0 -135
  449. meta_subject/tests/tests/test_mnsi.py +0 -341
  450. meta_subject/tests/tests/test_next_appointment.py +0 -231
  451. meta_subject/tests/tests/test_patient_history_form.py +0 -74
  452. meta_subject/tests/tests/test_physical_exam.py +0 -84
  453. meta_subject/tests/tests/test_sf12.py +0 -161
  454. meta_subject/tests/tests/test_study_medication.py +0 -229
  455. meta_subject/tests/urls.py +0 -24
  456. meta_visit_schedule/tests/__init__.py +0 -0
  457. meta_visit_schedule/tests/tests/__init__.py +0 -0
  458. meta_visit_schedule/tests/tests/test_schedule.py +0 -181
  459. meta_visit_schedule/tests/urls.py +0 -4
  460. tests/__init__.py +0 -0
  461. tests/etc/randomization_list.csv +0 -241
  462. tests/etc/randomization_list_phase_three.csv +0 -241
  463. tests/etc/user-aes-local.key +0 -0
  464. tests/etc/user-aes-restricted.key +0 -1
  465. tests/etc/user-rsa-local-private.pem +0 -27
  466. tests/etc/user-rsa-local-public.pem +0 -9
  467. tests/etc/user-rsa-restricted-private.pem +0 -27
  468. tests/etc/user-rsa-restricted-public.pem +0 -9
  469. tests/etc/user-salt-local.key +0 -0
  470. tests/etc/user-salt-restricted.key +0 -0
  471. tests/holidays.csv +0 -15
  472. tests/test_settings.py +0 -185
  473. {meta_edc-1.1.8.dist-info → meta_edc-1.1.12.dist-info}/licenses/LICENSE +0 -0
  474. /meta_ae/tests/__init__.py → /meta_subject/management/__init__py.py +0 -0
  475. /meta_ae/tests/tests/__init__.py → /meta_subject/management/commands/__init__py.py +0 -0
@@ -5,13 +5,12 @@ import django.db.models.deletion
5
5
  import django_audit_fields.fields.hostname_modification_field
6
6
  import django_audit_fields.fields.userfield
7
7
  import django_audit_fields.fields.uuid_auto_field
8
- import django_audit_fields.models.audit_model_mixin
8
+ import django.utils.timezone
9
9
  import django_revision.revision_field
10
10
  from django.db import migrations, models
11
11
 
12
12
 
13
13
  class Migration(migrations.Migration):
14
-
15
14
  dependencies = [
16
15
  ("meta_pharmacy", "0005_auto_20240911_0352"),
17
16
  ]
@@ -33,15 +32,11 @@ class Migration(migrations.Migration):
33
32
  ),
34
33
  (
35
34
  "created",
36
- models.DateTimeField(
37
- blank=True, default=django_audit_fields.models.audit_model_mixin.utcnow
38
- ),
35
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
39
36
  ),
40
37
  (
41
38
  "modified",
42
- models.DateTimeField(
43
- blank=True, default=django_audit_fields.models.audit_model_mixin.utcnow
44
- ),
39
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
45
40
  ),
46
41
  (
47
42
  "user_created",
@@ -163,15 +158,11 @@ class Migration(migrations.Migration):
163
158
  ),
164
159
  (
165
160
  "created",
166
- models.DateTimeField(
167
- blank=True, default=django_audit_fields.models.audit_model_mixin.utcnow
168
- ),
161
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
169
162
  ),
170
163
  (
171
164
  "modified",
172
- models.DateTimeField(
173
- blank=True, default=django_audit_fields.models.audit_model_mixin.utcnow
174
- ),
165
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
175
166
  ),
176
167
  (
177
168
  "user_created",
@@ -5,7 +5,7 @@ import django.db.models.deletion
5
5
  import django_audit_fields.fields.hostname_modification_field
6
6
  import django_audit_fields.fields.userfield
7
7
  import django_audit_fields.fields.uuid_auto_field
8
- import django_audit_fields.models.audit_model_mixin
8
+ import django.utils.timezone
9
9
  import django_revision.revision_field
10
10
  import edc_sites.managers
11
11
  import simple_history.models
@@ -15,7 +15,6 @@ from django.db import migrations, models
15
15
 
16
16
 
17
17
  class Migration(migrations.Migration):
18
-
19
18
  dependencies = [
20
19
  ("edc_registration", "0031_alter_historicalregisteredsubject_site_and_more"),
21
20
  ("meta_pharmacy", "0007_lotnumber_medication"),
@@ -59,14 +58,14 @@ class Migration(migrations.Migration):
59
58
  "created",
60
59
  models.DateTimeField(
61
60
  blank=True,
62
- default=django_audit_fields.models.audit_model_mixin.utcnow,
61
+ default=django.utils.timezone.now,
63
62
  ),
64
63
  ),
65
64
  (
66
65
  "modified",
67
66
  models.DateTimeField(
68
67
  blank=True,
69
- default=django_audit_fields.models.audit_model_mixin.utcnow,
68
+ default=django.utils.timezone.now,
70
69
  ),
71
70
  ),
72
71
  (
@@ -243,14 +242,14 @@ class Migration(migrations.Migration):
243
242
  "created",
244
243
  models.DateTimeField(
245
244
  blank=True,
246
- default=django_audit_fields.models.audit_model_mixin.utcnow,
245
+ default=django.utils.timezone.now,
247
246
  ),
248
247
  ),
249
248
  (
250
249
  "modified",
251
250
  models.DateTimeField(
252
251
  blank=True,
253
- default=django_audit_fields.models.audit_model_mixin.utcnow,
252
+ default=django.utils.timezone.now,
254
253
  ),
255
254
  ),
256
255
  (
@@ -0,0 +1,382 @@
1
+ # Generated by Django 5.2.6 on 2025-09-24 05:45
2
+
3
+ import django.utils.timezone
4
+ import django_revision.revision_field
5
+ from django.db import migrations, models
6
+
7
+
8
+ class Migration(migrations.Migration):
9
+
10
+ dependencies = [
11
+ ("meta_pharmacy", "0009_remove_historicalrx_slug"),
12
+ ]
13
+
14
+ operations = [
15
+ migrations.AlterField(
16
+ model_name="historicallabeldata",
17
+ name="device_created",
18
+ field=models.CharField(
19
+ blank=True, default="", max_length=10, verbose_name="Device created"
20
+ ),
21
+ ),
22
+ migrations.AlterField(
23
+ model_name="historicallabeldata",
24
+ name="device_modified",
25
+ field=models.CharField(
26
+ blank=True, default="", max_length=10, verbose_name="Device modified"
27
+ ),
28
+ ),
29
+ migrations.AlterField(
30
+ model_name="historicallabeldata",
31
+ name="gender",
32
+ field=models.CharField(default="", max_length=5),
33
+ ),
34
+ migrations.AlterField(
35
+ model_name="historicallabeldata",
36
+ name="locale_created",
37
+ field=models.CharField(
38
+ blank=True,
39
+ default="",
40
+ help_text="Auto-updated by Modeladmin",
41
+ max_length=10,
42
+ verbose_name="Locale created",
43
+ ),
44
+ ),
45
+ migrations.AlterField(
46
+ model_name="historicallabeldata",
47
+ name="locale_modified",
48
+ field=models.CharField(
49
+ blank=True,
50
+ default="",
51
+ help_text="Auto-updated by Modeladmin",
52
+ max_length=10,
53
+ verbose_name="Locale modified",
54
+ ),
55
+ ),
56
+ migrations.AlterField(
57
+ model_name="historicallabeldata",
58
+ name="reference",
59
+ field=models.CharField(
60
+ db_index=True, default="", help_text="Bottle reference", max_length=10
61
+ ),
62
+ ),
63
+ migrations.AlterField(
64
+ model_name="historicallabeldata",
65
+ name="revision",
66
+ field=django_revision.revision_field.RevisionField(
67
+ blank=True,
68
+ default="",
69
+ editable=False,
70
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
71
+ max_length=75,
72
+ verbose_name="Revision",
73
+ ),
74
+ ),
75
+ migrations.AlterField(
76
+ model_name="historicallabeldata",
77
+ name="site_name",
78
+ field=models.CharField(default="", max_length=15),
79
+ ),
80
+ migrations.AlterField(
81
+ model_name="historicallabeldata",
82
+ name="subject_identifier",
83
+ field=models.CharField(default="", max_length=15),
84
+ ),
85
+ migrations.AlterField(
86
+ model_name="historicalrx",
87
+ name="action_identifier",
88
+ field=models.CharField(
89
+ blank=True, db_index=True, default="", max_length=50
90
+ ),
91
+ ),
92
+ migrations.AlterField(
93
+ model_name="historicalrx",
94
+ name="action_item_reason",
95
+ field=models.TextField(default="", editable=False),
96
+ ),
97
+ migrations.AlterField(
98
+ model_name="historicalrx",
99
+ name="clinician_initials",
100
+ field=models.CharField(default="", max_length=3),
101
+ ),
102
+ migrations.AlterField(
103
+ model_name="historicalrx",
104
+ name="device_created",
105
+ field=models.CharField(
106
+ blank=True, default="", max_length=10, verbose_name="Device created"
107
+ ),
108
+ ),
109
+ migrations.AlterField(
110
+ model_name="historicalrx",
111
+ name="device_modified",
112
+ field=models.CharField(
113
+ blank=True, default="", max_length=10, verbose_name="Device modified"
114
+ ),
115
+ ),
116
+ migrations.AlterField(
117
+ model_name="historicalrx",
118
+ name="locale_created",
119
+ field=models.CharField(
120
+ blank=True,
121
+ default="",
122
+ help_text="Auto-updated by Modeladmin",
123
+ max_length=10,
124
+ verbose_name="Locale created",
125
+ ),
126
+ ),
127
+ migrations.AlterField(
128
+ model_name="historicalrx",
129
+ name="locale_modified",
130
+ field=models.CharField(
131
+ blank=True,
132
+ default="",
133
+ help_text="Auto-updated by Modeladmin",
134
+ max_length=10,
135
+ verbose_name="Locale modified",
136
+ ),
137
+ ),
138
+ migrations.AlterField(
139
+ model_name="historicalrx",
140
+ name="notes",
141
+ field=models.TextField(
142
+ blank=True,
143
+ default="",
144
+ help_text="Private notes for pharmacist only",
145
+ max_length=250,
146
+ ),
147
+ ),
148
+ migrations.AlterField(
149
+ model_name="historicalrx",
150
+ name="parent_action_identifier",
151
+ field=models.CharField(
152
+ blank=True,
153
+ default="",
154
+ help_text="action identifier that links to parent reference model instance.",
155
+ max_length=30,
156
+ ),
157
+ ),
158
+ migrations.AlterField(
159
+ model_name="historicalrx",
160
+ name="rando_sid",
161
+ field=models.CharField(blank=True, default="", max_length=25),
162
+ ),
163
+ migrations.AlterField(
164
+ model_name="historicalrx",
165
+ name="randomizer_name",
166
+ field=models.CharField(blank=True, default="", max_length=25),
167
+ ),
168
+ migrations.AlterField(
169
+ model_name="historicalrx",
170
+ name="related_action_identifier",
171
+ field=models.CharField(
172
+ blank=True,
173
+ default="",
174
+ help_text="action identifier that links to related reference model instance.",
175
+ max_length=30,
176
+ ),
177
+ ),
178
+ migrations.AlterField(
179
+ model_name="historicalrx",
180
+ name="report_datetime",
181
+ field=models.DateTimeField(default=django.utils.timezone.now),
182
+ ),
183
+ migrations.AlterField(
184
+ model_name="historicalrx",
185
+ name="revision",
186
+ field=django_revision.revision_field.RevisionField(
187
+ blank=True,
188
+ default="",
189
+ editable=False,
190
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
191
+ max_length=75,
192
+ verbose_name="Revision",
193
+ ),
194
+ ),
195
+ migrations.AlterField(
196
+ model_name="historicalrx",
197
+ name="rx_date",
198
+ field=models.DateField(
199
+ default=django.utils.timezone.now, verbose_name="Date RX written"
200
+ ),
201
+ ),
202
+ migrations.AlterField(
203
+ model_name="historicalsubstitutions",
204
+ name="device_created",
205
+ field=models.CharField(
206
+ blank=True, default="", max_length=10, verbose_name="Device created"
207
+ ),
208
+ ),
209
+ migrations.AlterField(
210
+ model_name="historicalsubstitutions",
211
+ name="device_modified",
212
+ field=models.CharField(
213
+ blank=True, default="", max_length=10, verbose_name="Device modified"
214
+ ),
215
+ ),
216
+ migrations.AlterField(
217
+ model_name="historicalsubstitutions",
218
+ name="locale_created",
219
+ field=models.CharField(
220
+ blank=True,
221
+ default="",
222
+ help_text="Auto-updated by Modeladmin",
223
+ max_length=10,
224
+ verbose_name="Locale created",
225
+ ),
226
+ ),
227
+ migrations.AlterField(
228
+ model_name="historicalsubstitutions",
229
+ name="locale_modified",
230
+ field=models.CharField(
231
+ blank=True,
232
+ default="",
233
+ help_text="Auto-updated by Modeladmin",
234
+ max_length=10,
235
+ verbose_name="Locale modified",
236
+ ),
237
+ ),
238
+ migrations.AlterField(
239
+ model_name="historicalsubstitutions",
240
+ name="revision",
241
+ field=django_revision.revision_field.RevisionField(
242
+ blank=True,
243
+ default="",
244
+ editable=False,
245
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
246
+ max_length=75,
247
+ verbose_name="Revision",
248
+ ),
249
+ ),
250
+ migrations.AlterField(
251
+ model_name="historicalsubstitutions",
252
+ name="updated_subject_identifier",
253
+ field=models.CharField(
254
+ blank=True, default="", max_length=50, verbose_name="Taken from subject"
255
+ ),
256
+ ),
257
+ migrations.AlterField(
258
+ model_name="labeldata",
259
+ name="device_created",
260
+ field=models.CharField(
261
+ blank=True, default="", max_length=10, verbose_name="Device created"
262
+ ),
263
+ ),
264
+ migrations.AlterField(
265
+ model_name="labeldata",
266
+ name="device_modified",
267
+ field=models.CharField(
268
+ blank=True, default="", max_length=10, verbose_name="Device modified"
269
+ ),
270
+ ),
271
+ migrations.AlterField(
272
+ model_name="labeldata",
273
+ name="gender",
274
+ field=models.CharField(default="", max_length=5),
275
+ ),
276
+ migrations.AlterField(
277
+ model_name="labeldata",
278
+ name="locale_created",
279
+ field=models.CharField(
280
+ blank=True,
281
+ default="",
282
+ help_text="Auto-updated by Modeladmin",
283
+ max_length=10,
284
+ verbose_name="Locale created",
285
+ ),
286
+ ),
287
+ migrations.AlterField(
288
+ model_name="labeldata",
289
+ name="locale_modified",
290
+ field=models.CharField(
291
+ blank=True,
292
+ default="",
293
+ help_text="Auto-updated by Modeladmin",
294
+ max_length=10,
295
+ verbose_name="Locale modified",
296
+ ),
297
+ ),
298
+ migrations.AlterField(
299
+ model_name="labeldata",
300
+ name="reference",
301
+ field=models.CharField(
302
+ default="", help_text="Bottle reference", max_length=10, unique=True
303
+ ),
304
+ ),
305
+ migrations.AlterField(
306
+ model_name="labeldata",
307
+ name="revision",
308
+ field=django_revision.revision_field.RevisionField(
309
+ blank=True,
310
+ default="",
311
+ editable=False,
312
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
313
+ max_length=75,
314
+ verbose_name="Revision",
315
+ ),
316
+ ),
317
+ migrations.AlterField(
318
+ model_name="labeldata",
319
+ name="site_name",
320
+ field=models.CharField(default="", max_length=15),
321
+ ),
322
+ migrations.AlterField(
323
+ model_name="labeldata",
324
+ name="subject_identifier",
325
+ field=models.CharField(default="", max_length=15),
326
+ ),
327
+ migrations.AlterField(
328
+ model_name="substitutions",
329
+ name="device_created",
330
+ field=models.CharField(
331
+ blank=True, default="", max_length=10, verbose_name="Device created"
332
+ ),
333
+ ),
334
+ migrations.AlterField(
335
+ model_name="substitutions",
336
+ name="device_modified",
337
+ field=models.CharField(
338
+ blank=True, default="", max_length=10, verbose_name="Device modified"
339
+ ),
340
+ ),
341
+ migrations.AlterField(
342
+ model_name="substitutions",
343
+ name="locale_created",
344
+ field=models.CharField(
345
+ blank=True,
346
+ default="",
347
+ help_text="Auto-updated by Modeladmin",
348
+ max_length=10,
349
+ verbose_name="Locale created",
350
+ ),
351
+ ),
352
+ migrations.AlterField(
353
+ model_name="substitutions",
354
+ name="locale_modified",
355
+ field=models.CharField(
356
+ blank=True,
357
+ default="",
358
+ help_text="Auto-updated by Modeladmin",
359
+ max_length=10,
360
+ verbose_name="Locale modified",
361
+ ),
362
+ ),
363
+ migrations.AlterField(
364
+ model_name="substitutions",
365
+ name="revision",
366
+ field=django_revision.revision_field.RevisionField(
367
+ blank=True,
368
+ default="",
369
+ editable=False,
370
+ help_text="System field. From git repository (tag:branch:commit), project metadata, project toml, project VERSION, or settings.",
371
+ max_length=75,
372
+ verbose_name="Revision",
373
+ ),
374
+ ),
375
+ migrations.AlterField(
376
+ model_name="substitutions",
377
+ name="updated_subject_identifier",
378
+ field=models.CharField(
379
+ blank=True, default="", max_length=50, verbose_name="Taken from subject"
380
+ ),
381
+ ),
382
+ ]
@@ -1,3 +1,10 @@
1
1
  from .label_data import LabelData
2
2
  from .rx import Rx
3
3
  from .substitutions import MyManager, Substitutions
4
+
5
+ __all__ = [
6
+ "LabelData",
7
+ "MyManager",
8
+ "Rx",
9
+ "Substitutions",
10
+ ]
@@ -9,14 +9,13 @@ random.seed(237548)
9
9
 
10
10
 
11
11
  class LabelData(SiteModelMixin, BaseUuidModel):
12
-
13
- subject_identifier = models.CharField(max_length=15, null=True)
12
+ subject_identifier = models.CharField(max_length=15, default="")
14
13
  sid = models.IntegerField(null=True, help_text="Pharmacy reference")
15
14
  reference = models.CharField(
16
- max_length=10, null=True, unique=True, help_text="Bottle reference"
15
+ max_length=10, default="", unique=True, help_text="Bottle reference"
17
16
  )
18
- site_name = models.CharField(max_length=15, null=True)
19
- gender = models.CharField(max_length=5, null=True)
17
+ site_name = models.CharField(max_length=15, default="")
18
+ gender = models.CharField(max_length=5, default="")
20
19
  pills_per_bottle = models.IntegerField(null=True, default=128)
21
20
 
22
21
  printed_datetime = models.DateTimeField(null=True)
@@ -42,7 +42,7 @@ class Substitutions(NonUniqueSubjectIdentifierFieldMixin, SiteModelMixin, BaseUu
42
42
  updated_visit_no = models.IntegerField("Visit Number", null=True, blank=True)
43
43
 
44
44
  updated_subject_identifier = models.CharField(
45
- max_length=50, verbose_name="Taken from subject", null=True, blank=True
45
+ max_length=50, verbose_name="Taken from subject", default="", blank=True
46
46
  )
47
47
 
48
48
  arm_match = models.CharField(
@@ -82,7 +82,7 @@ class Substitutions(NonUniqueSubjectIdentifierFieldMixin, SiteModelMixin, BaseUu
82
82
  class Meta(SiteModelMixin.Meta, BaseUuidModel.Meta):
83
83
  verbose_name_plural = "IMP Substitutions"
84
84
  verbose_name = "IMP Substitution"
85
- indexes = [
85
+ indexes = (
86
86
  Index(fields=["sid", "dispensed_sid", "subject_identifier"]),
87
87
  Index(fields=["row_index"]),
88
- ]
88
+ )
@@ -9,7 +9,7 @@ style = color_style()
9
9
 
10
10
 
11
11
  def prepare_meta_pharmacy():
12
- from django.apps import apps as django_apps
12
+ from django.apps import apps as django_apps # noqa: PLC0415
13
13
 
14
14
  sys.stdout.write(style.MIGRATE_HEADING("Populating static pharmacy models for META3:\n"))
15
15
 
@@ -1 +1,3 @@
1
1
  from .update_initial_pharmacy_data import update_initial_pharmacy_data
2
+
3
+ __all__ = ["update_initial_pharmacy_data"]
@@ -136,7 +136,7 @@ def update_labels():
136
136
  LabelSpecification().save()
137
137
  default = LabelSpecification.objects.get(name="default")
138
138
 
139
- for name, label_config in site_label_configs.registry.items():
139
+ for name in site_label_configs.registry:
140
140
  LabelConfiguration.objects.create(name=name, label_specification=default)
141
141
  for label_configuration in LabelConfiguration.objects.filter(name__contains="patient"):
142
142
  label_configuration.requires_allocation = True
@@ -11,3 +11,19 @@ from .onschedule_dm_referral_admin import OnScheduleDmReferralAdmin
11
11
  from .pregnancy_notification_admin import PregnancyNotificationAdmin
12
12
  from .protocol_incident_admin import ProtocolIncidentAdmin
13
13
  from .subject_transfer_admin import SubjectTransferAdmin
14
+
15
+ __all__ = [
16
+ "DmReferralAdmin",
17
+ "EndOfStudyAdmin",
18
+ "LossToFollowupAdmin",
19
+ "OffScheduleAdmin",
20
+ "OffScheduleDmReferralAdmin",
21
+ "OffSchedulePostnatalAdmin",
22
+ "OffSchedulePregnancyAdmin",
23
+ "OffStudyMedicationAdmin",
24
+ "OnScheduleAdmin",
25
+ "OnScheduleDmReferralAdmin",
26
+ "PregnancyNotificationAdmin",
27
+ "ProtocolIncidentAdmin",
28
+ "SubjectTransferAdmin",
29
+ ]
@@ -1,6 +1,7 @@
1
1
  from django.contrib import admin
2
2
  from django_audit_fields.admin import audit_fieldset_tuple
3
- from edc_action_item import ActionItemModelAdminMixin, action_fieldset_tuple
3
+ from edc_action_item.fieldsets import action_fieldset_tuple
4
+ from edc_action_item.modeladmin_mixins import ActionItemModelAdminMixin
4
5
  from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
5
6
  from edc_model_admin.history import SimpleHistoryAdmin
6
7
  from edc_sites.admin import SiteModelAdminMixin
@@ -1,12 +1,11 @@
1
- from typing import Tuple
2
-
3
1
  from dateutil.relativedelta import relativedelta
4
2
  from django.contrib import admin
5
3
  from django.template.loader import render_to_string
6
4
  from django.utils.html import format_html
7
5
  from django.utils.safestring import mark_safe
8
6
  from django_audit_fields.admin import audit_fieldset_tuple
9
- from edc_action_item import ActionItemModelAdminMixin, action_fieldset_tuple
7
+ from edc_action_item.fieldsets import action_fieldset_tuple
8
+ from edc_action_item.modeladmin_mixins import ActionItemModelAdminMixin
10
9
  from edc_constants.constants import OTHER
11
10
  from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
12
11
  from edc_model_admin.history import SimpleHistoryAdmin
@@ -30,7 +29,7 @@ class EndOfStudyAdmin(
30
29
  ):
31
30
  additional_instructions = format_html(
32
31
  "{html}",
33
- html=mark_safe(
32
+ html=mark_safe( # noqa: S308
34
33
  render_to_string(
35
34
  "meta_prn/eos/additional_instructions.html",
36
35
  context=dict(
@@ -123,7 +122,7 @@ class EndOfStudyAdmin(
123
122
  kwargs["queryset"] = OffstudyReasons.objects.order_by("display_index")
124
123
  return super().formfield_for_foreignkey(db_field, request, **kwargs)
125
124
 
126
- def get_list_display(self, request) -> Tuple[str, ...]:
125
+ def get_list_display(self, request) -> tuple[str, ...]:
127
126
  list_display = super().get_list_display(request)
128
127
  custom_fields = (
129
128
  "subject_identifier",
@@ -137,12 +136,12 @@ class EndOfStudyAdmin(
137
136
  f for f in list_display if f not in custom_fields + ("__str__",)
138
137
  )
139
138
 
140
- def get_list_filter(self, request) -> Tuple[str, ...]:
139
+ def get_list_filter(self, request) -> tuple[str, ...]:
141
140
  list_filter = super().get_list_filter(request)
142
141
  custom_fields = ("offstudy_reason", "last_seen_date")
143
142
  return custom_fields + tuple(f for f in list_filter if f not in custom_fields)
144
143
 
145
- def get_search_fields(self, request) -> Tuple[str, ...]:
144
+ def get_search_fields(self, request) -> tuple[str, ...]:
146
145
  search_fields = super().get_search_fields(request)
147
146
  custom_fields = ("subject_identifier",)
148
147
  return tuple(set(custom_fields + search_fields))
@@ -1,6 +1,7 @@
1
1
  from django.contrib import admin
2
2
  from django_audit_fields.admin import audit_fieldset_tuple
3
- from edc_action_item import ActionItemModelAdminMixin, action_fieldset_tuple
3
+ from edc_action_item.fieldsets import action_fieldset_tuple
4
+ from edc_action_item.modeladmin_mixins import ActionItemModelAdminMixin
4
5
  from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
5
6
  from edc_model_admin.history import SimpleHistoryAdmin
6
7
  from edc_sites.admin import SiteModelAdminMixin
@@ -54,7 +55,7 @@ class LossToFollowupAdmin(
54
55
  "number_consecutive_missed_visits",
55
56
  )
56
57
 
57
- radio_fields = {
58
+ radio_fields = { # noqa: RUF012
58
59
  "home_visited": admin.VERTICAL,
59
60
  "loss_category": admin.VERTICAL,
60
61
  }