clinicedc 2.0.5__py3-none-any.whl → 2.0.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of clinicedc might be problematic. Click here for more details.

Files changed (387) hide show
  1. {clinicedc-2.0.5.dist-info → clinicedc-2.0.7.dist-info}/METADATA +2 -2
  2. {clinicedc-2.0.5.dist-info → clinicedc-2.0.7.dist-info}/RECORD +387 -336
  3. edc_action_item/action.py +1 -1
  4. edc_action_item/action_item_notification.py +2 -2
  5. edc_action_item/create_action_item.py +1 -1
  6. edc_action_item/decorators.py +1 -1
  7. edc_action_item/migrations/0001_initial.py +21 -22
  8. edc_action_item/migrations/0006_auto_20180707_1659.py +4 -4
  9. edc_action_item/migrations/0008_auto_20180809_0303.py +4 -4
  10. edc_action_item/migrations/0015_auto_20190114_0250.py +4 -4
  11. edc_action_item/migrations/0017_auto_20190305_0123.py +11 -30
  12. edc_action_item/migrations/0030_edcpermissions.py +3 -2
  13. edc_action_item/migrations/0039_alter_actionitem_auto_created_comment_and_more.py +398 -0
  14. edc_action_item/migrations/0040_alter_actionitem_report_datetime_and_more.py +34 -0
  15. edc_action_item/models/action_item.py +9 -4
  16. edc_action_item/models/action_model_mixin.py +4 -4
  17. edc_action_item/models/reference.py +2 -2
  18. edc_action_item/post_migrate_signals.py +1 -1
  19. edc_action_item/send_email.py +0 -85
  20. edc_adherence/migrations/0005_alter_nonadherencereasons_extra_value_and_more.py +36 -0
  21. edc_adherence/model_mixins.py +1 -1
  22. edc_adverse_event/migrations/0001_initial.py +5 -4
  23. edc_adverse_event/migrations/0002_auto_20190802_0059.py +3 -2
  24. edc_adverse_event/migrations/0008_auto_20220825_0451.py +3 -2
  25. edc_adverse_event/migrations/0009_auto_20220907_0157.py +3 -2
  26. edc_adverse_event/migrations/0016_alter_aeactionclassification_device_created_and_more.py +285 -0
  27. edc_adverse_event/model_mixins/ae_followup/ae_followup_fields_model_mixin.py +2 -2
  28. edc_adverse_event/model_mixins/ae_initial/ae_initial_fields_model_mixin.py +6 -5
  29. edc_adverse_event/model_mixins/ae_special_interest/aesi_fields_model_mixin.py +2 -2
  30. edc_adverse_event/model_mixins/ae_susar/ae_susar_fields_model_mixin.py +2 -2
  31. edc_adverse_event/model_mixins/ae_tmg/ae_tmg_fields_model_mixin.py +15 -11
  32. edc_adverse_event/model_mixins/death_report/death_report_model_mixin.py +5 -4
  33. edc_adverse_event/model_mixins/death_report/death_report_tmg_model_mixin.py +6 -3
  34. edc_adverse_event/model_mixins/death_report/simple_death_report_model_mixin.py +2 -2
  35. edc_adverse_event/model_mixins/hospitaization/hospitalization_model_mixin.py +4 -3
  36. edc_adverse_event/modeladmin_mixins/death_report_admin_mixin.py +3 -3
  37. edc_adverse_event/models/signals.py +7 -7
  38. edc_adverse_event/templatetags/edc_adverse_event_extras.py +5 -4
  39. edc_adverse_event/view_mixins/ae/ae_listboard_view_mixin.py +3 -5
  40. edc_adverse_event/view_mixins/ae/death_report_listboard_view_mixin.py +6 -8
  41. edc_adverse_event/view_mixins/tmg/tmg_ae_listboard_view_mixin.py +2 -2
  42. edc_adverse_event/views/tmg/summary_listboard_view.py +3 -2
  43. edc_appointment/admin/appointment_admin.py +2 -2
  44. edc_appointment/admin/list_filters.py +2 -2
  45. edc_appointment/form_validators/appointment_form_validator.py +108 -82
  46. edc_appointment/migrations/0003_auto_20161127_2226.py +5 -6
  47. edc_appointment/migrations/0006_auto_20170106_2118.py +5 -5
  48. edc_appointment/migrations/0018_auto_20190305_0123.py +5 -12
  49. edc_appointment/migrations/0050_alter_appointment_appt_type_and_more.py +220 -0
  50. edc_appointment/model_mixins/appointment_fields_model_mixin.py +1 -2
  51. edc_appointment/model_mixins/window_period_model_mixin.py +6 -7
  52. edc_appointment/models/signals.py +44 -35
  53. edc_appointment/view_utils/appointment_button.py +2 -2
  54. edc_auth/admin/user_admin.py +1 -1
  55. edc_auth/migrations/0001_squashed_0033_alter_userprofile_is_multisite_viewer.py +5 -5
  56. edc_auth/migrations/0012_auto_20191026_0034.py +3 -2
  57. edc_auth/migrations/0013_auto_20191026_0055.py +3 -2
  58. edc_auth/migrations/0025_permissions.py +3 -2
  59. edc_auth/migrations/0035_alter_edcpermissions_device_created_and_more.py +85 -0
  60. edc_auth/post_migrate_signals.py +1 -1
  61. edc_consent/actions.py +4 -5
  62. edc_consent/migrations/0001_initial.py +3 -2
  63. edc_consent/migrations/0006_alter_edcpermissions_device_created_and_more.py +49 -0
  64. edc_consent/model_mixins/consent_extension_model_mixin.py +4 -5
  65. edc_consent/model_mixins/requires_consent_fields_model_mixin.py +2 -2
  66. edc_consent/utils.py +1 -1
  67. edc_crf/migrations/0001_initial.py +3 -2
  68. edc_crf/migrations/0009_alter_crfstatus_device_created_and_more.py +54 -0
  69. edc_dashboard/migrations/0001_initial.py +3 -2
  70. edc_dashboard/migrations/0006_alter_edcpermissions_device_created_and_more.py +49 -0
  71. edc_dashboard/templatetags/edc_dashboard_extras.py +3 -2
  72. edc_data_manager/action_items.py +4 -6
  73. edc_data_manager/admin/actions.py +5 -5
  74. edc_data_manager/handlers/handlers.py +6 -7
  75. edc_data_manager/migrations/0001_initial.py +19 -19
  76. edc_data_manager/migrations/0025_edcpermissions.py +3 -2
  77. edc_data_manager/migrations/0040_alter_datadictionary_device_created_and_more.py +327 -0
  78. edc_data_manager/migrations/0041_alter_dataquery_dm_user_and_more.py +164 -0
  79. edc_data_manager/models/data_query.py +5 -5
  80. edc_data_manager/models/model_mixins.py +8 -8
  81. edc_data_manager/rule/rule_runner.py +4 -3
  82. edc_document_status/model_mixins.py +1 -1
  83. edc_egfr/egfr.py +11 -7
  84. edc_egfr/model_mixins/egfr_model_mixin.py +3 -7
  85. edc_export/admin/data_request_admin.py +2 -2
  86. edc_export/archive_exporter.py +4 -3
  87. edc_export/files_archiver.py +3 -2
  88. edc_export/migrations/0001_initial.py +26 -26
  89. edc_export/migrations/0004_auto_20190305_0123.py +25 -72
  90. edc_export/migrations/0013_edcpermissions.py +3 -2
  91. edc_export/migrations/0022_alter_datarequest_description_and_more.py +611 -0
  92. edc_export/migrations/0023_alter_datarequesthistory_archive_filename_and_more.py +29 -0
  93. edc_export/model_exporter/file_history_updater.py +10 -10
  94. edc_export/model_exporter/model_exporter.py +13 -14
  95. edc_export/model_exporter/object_history_helpers.py +2 -2
  96. edc_export/models/data_request_history.py +4 -4
  97. edc_export/utils.py +10 -15
  98. edc_facility/facility.py +10 -15
  99. edc_facility/import_holidays.py +13 -13
  100. edc_facility/migrations/0005_healthfacility_healthfacilitytypes_and_more.py +8 -7
  101. edc_facility/migrations/0016_alter_healthfacility_device_created_and_more.py +139 -0
  102. edc_facility/migrations/0017_alter_healthfacility_gps_and_more.py +54 -0
  103. edc_facility/model_mixins.py +5 -5
  104. edc_form_runners/form_runner.py +3 -5
  105. edc_form_runners/migrations/0001_initial.py +3 -2
  106. edc_form_runners/migrations/0005_alter_issue_device_created_and_more.py +49 -0
  107. edc_identifier/migrations/0001_squashed_0018_auto_20180128_1054.py +3 -3
  108. edc_identifier/migrations/0002_auto_20190305_0123.py +3 -6
  109. edc_identifier/migrations/0006_auto_20161127_2226.py +15 -15
  110. edc_identifier/migrations/0007_auto_20161204_2227.py +3 -3
  111. edc_identifier/migrations/0009_auto_20161221_2323.py +3 -5
  112. edc_identifier/migrations/0010_auto_20170112_0602.py +17 -17
  113. edc_identifier/migrations/0011_alter_identifiermodel_device_created_and_more.py +79 -0
  114. edc_identifier/model_mixins.py +1 -1
  115. edc_identifier/models.py +9 -9
  116. edc_identifier/simple_identifier.py +1 -3
  117. edc_identifier/subject_identifier.py +3 -2
  118. edc_lab/migrations/0001_initial.py +29 -29
  119. edc_lab/migrations/0008_auto_20170921_0719.py +3 -3
  120. edc_lab/migrations/0010_auto_20171127_1541.py +15 -15
  121. edc_lab/migrations/0012_auto_20180114_1438.py +3 -3
  122. edc_lab/migrations/0019_auto_20190305_0123.py +43 -127
  123. edc_lab/migrations/0036_alter_aliquot_comment_alter_aliquot_device_created_and_more.py +1139 -0
  124. edc_lab/migrations/0037_alter_historicalorder_order_datetime_and_more.py +31 -0
  125. edc_lab/model_mixins/aliquot/aliquot_identifier_model_mixin.py +2 -2
  126. edc_lab/model_mixins/aliquot/aliquot_model_mixin.py +2 -2
  127. edc_lab/model_mixins/panel_model_mixin.py +18 -7
  128. edc_lab/model_mixins/requisition/crf_with_requisition_model_mixin.py +2 -4
  129. edc_lab/model_mixins/requisition/requisition_model_mixin.py +7 -8
  130. edc_lab/model_mixins/requisition/requisition_verify_model_mixin.py +1 -1
  131. edc_lab/model_mixins/result/result_item_model_mixin.py +4 -4
  132. edc_lab/model_mixins/shipping/manifest_model_mixin.py +4 -5
  133. edc_lab/model_mixins/shipping/verify_model_mixin.py +4 -6
  134. edc_lab/models/box.py +1 -1
  135. edc_lab/models/box_item.py +6 -7
  136. edc_lab/models/manifest/manifest.py +1 -1
  137. edc_lab/models/manifest/manifest_item.py +6 -6
  138. edc_lab/models/manifest/shipper.py +3 -4
  139. edc_lab/models/order.py +6 -4
  140. edc_lab/models/panel.py +4 -4
  141. edc_lab/models/result.py +2 -2
  142. edc_lab/models/result_item.py +2 -2
  143. edc_lab_dashboard/migrations/0001_initial.py +3 -2
  144. edc_lab_dashboard/migrations/0005_alter_edcpermissions_device_created_and_more.py +49 -0
  145. edc_lab_dashboard/views/action_views/receive_view.py +2 -2
  146. edc_lab_dashboard/views/action_views/verify_box_item_view.py +2 -2
  147. edc_lab_results/model_mixins/blood_result_model_mixin.py +7 -7
  148. edc_lab_results/model_mixins/fbg_model_mixin.py +3 -3
  149. edc_lab_results/model_mixins/glucose_model_mixin.py +3 -3
  150. edc_lab_results/model_mixins/hba1c_model_mixin.py +3 -3
  151. edc_label/migrations/0001_initial.py +3 -2
  152. edc_label/migrations/0007_alter_zpllabeltemplates_device_created_and_more.py +49 -0
  153. edc_list_data/list_model_maker.py +2 -2
  154. edc_list_data/load_list_data.py +11 -14
  155. edc_list_data/model_mixins.py +12 -4
  156. edc_list_data/preload_data.py +3 -3
  157. edc_listboard/migrations/0001_initial.py +3 -2
  158. edc_listboard/migrations/0007_alter_listboard_device_created_and_more.py +49 -0
  159. edc_locator/migrations/0001_initial.py +7 -7
  160. edc_locator/migrations/0018_auto_20190305_0123.py +5 -12
  161. edc_locator/migrations/0040_alter_historicalsubjectlocator_action_identifier_and_more.py +187 -0
  162. edc_locator/migrations/0041_alter_historicalsubjectlocator_report_datetime_and_more.py +27 -0
  163. edc_locator/model_mixins/locator_model_mixin.py +2 -2
  164. edc_locator/model_mixins/subject_contact_fields_mixin.py +1 -1
  165. edc_locator/modeladmin_mixins.py +5 -4
  166. edc_ltfu/model_mixins.py +7 -5
  167. edc_metadata/metadata_rules/decorators.py +1 -1
  168. edc_metadata/migrations/0002_auto_20161127_2226.py +5 -5
  169. edc_metadata/migrations/0005_auto_20170112_0602.py +5 -5
  170. edc_metadata/migrations/0011_auto_20190305_0123.py +5 -12
  171. edc_metadata/migrations/0031_alter_crfmetadata_device_created_and_more.py +120 -0
  172. edc_metadata/model_mixins/updates/updates_crf_metadata_model_mixin.py +1 -1
  173. edc_metadata/model_mixins/updates/updates_requisition_metadata_model_mixin.py +1 -1
  174. edc_metadata/models/crf_metadata.py +5 -5
  175. edc_metadata/models/crf_metadata_model_mixin.py +4 -5
  176. edc_metadata/models/requisition_metadata.py +6 -6
  177. edc_metadata/views/refresh_metadata_actions_view.py +3 -3
  178. edc_model/models/address_mixin.py +6 -6
  179. edc_model/models/fields/initials_field.py +2 -1
  180. edc_model/models/historical_records.py +2 -9
  181. edc_model/models/url_model_mixin.py +2 -2
  182. edc_model/validators/date.py +7 -8
  183. edc_model_admin/list_filters/future_date_list_filter.py +3 -3
  184. edc_model_admin/list_filters/past_date_list_filter.py +3 -3
  185. edc_model_admin/mixins/model_admin_protect_pii_mixin.py +4 -5
  186. edc_model_fields/fields/other_charfield.py +2 -2
  187. edc_navbar/migrations/0004_auto_20220825_0451.py +3 -2
  188. edc_navbar/migrations/0009_alter_edcpermissions_device_created_and_more.py +49 -0
  189. edc_notification/migrations/0001_initial.py +3 -3
  190. edc_notification/migrations/0004_auto_20190305_0123.py +3 -6
  191. edc_notification/migrations/0011_alter_notification_device_created_and_more.py +59 -0
  192. edc_notification/models/notification.py +1 -1
  193. edc_notification/notification/notification.py +12 -12
  194. edc_offstudy/migrations/0001_initial.py +4 -4
  195. edc_offstudy/migrations/0002_auto_20180921_0434.py +4 -4
  196. edc_offstudy/migrations/0005_auto_20190305_0123.py +5 -12
  197. edc_offstudy/migrations/0023_alter_historicalsubjectoffstudy_action_identifier_and_more.py +188 -0
  198. edc_offstudy/migrations/0024_alter_historicalsubjectoffstudy_offstudy_datetime_and_more.py +43 -0
  199. edc_offstudy/model_mixins/offstudy_model_mixin.py +3 -2
  200. edc_pdutils/df_exporters/csv_exporter.py +33 -37
  201. edc_pdutils/df_exporters/csv_model_exporter.py +2 -1
  202. edc_pdutils/migrations/0001_initial.py +8 -8
  203. edc_pharmacy/admin/prescription/rx_refill_admin.py +4 -3
  204. edc_pharmacy/admin/reports/stock_availability_admin.py +5 -6
  205. edc_pharmacy/migrations/0001_initial.py +64 -63
  206. edc_pharmacy/migrations/0015_auto_20220913_2139.py +26 -26
  207. edc_pharmacy/migrations/0024_allocation_assignment_containerunits_dispense_and_more.py +81 -86
  208. edc_pharmacy/migrations/0037_remove_historicalstock_confirmed_at_site_by_and_more.py +5 -5
  209. edc_pharmacy/migrations/0039_remove_dispense_registered_subject_and_more.py +7 -8
  210. edc_pharmacy/migrations/0049_remove_stocktransferconfirmation_stock_and_more.py +12 -12
  211. edc_pharmacy/migrations/0050_remove_stocktransferconfirmation2_location_and_more.py +5 -5
  212. edc_pharmacy/migrations/0051_alter_historicalstocktransferconfirmationitem_options_and_more.py +3 -4
  213. edc_pharmacy/migrations/0053_alter_location_managers_alter_historicalstock_lot_and_more.py +3 -3
  214. edc_pharmacy/migrations/0057_scanduplicates.py +3 -3
  215. edc_pharmacy/migrations/0060_alter_container_max_per_subject_and_more.py +13 -15
  216. edc_pharmacy/migrations/0068_stockout.py +2 -3
  217. edc_pharmacy/migrations/0076_historicalstockadjustment_stockadjustment.py +5 -5
  218. edc_pharmacy/migrations/0077_historicalstockadjustment_adjustment_datetime_and_more.py +3 -4
  219. edc_pharmacy/migrations/0081_historicalconfirmation_confirmation.py +8 -8
  220. edc_pharmacy/migrations/0084_confirmationatsiteitem_and_more.py +0 -2
  221. edc_pharmacy/migrations/0089_alter_allocation_allocated_by_and_more.py +3284 -0
  222. edc_pharmacy/migrations/0090_alter_allocation_allocation_datetime_and_more.py +227 -0
  223. edc_pharmacy/model_mixins/study_medication_refill_model_mixin.py +2 -2
  224. edc_pharmacy/models/medication/medication.py +3 -3
  225. edc_pharmacy/models/model_mixins.py +10 -11
  226. edc_pharmacy/models/prescription/rx.py +13 -12
  227. edc_pharmacy/models/prescription/rx_refill.py +0 -1
  228. edc_pharmacy/models/stock/allocation.py +3 -3
  229. edc_pharmacy/models/stock/confirmation.py +3 -3
  230. edc_pharmacy/models/stock/confirmation_at_site.py +3 -2
  231. edc_pharmacy/models/stock/confirmation_at_site_item.py +3 -4
  232. edc_pharmacy/models/stock/dispense.py +5 -6
  233. edc_pharmacy/models/stock/dispense_item.py +2 -2
  234. edc_pharmacy/models/stock/location.py +3 -4
  235. edc_pharmacy/models/stock/lot.py +6 -7
  236. edc_pharmacy/models/stock/order.py +1 -1
  237. edc_pharmacy/models/stock/receive.py +3 -3
  238. edc_pharmacy/models/stock/receive_item.py +4 -4
  239. edc_pharmacy/models/stock/repack_request.py +2 -2
  240. edc_pharmacy/models/stock/stock.py +12 -18
  241. edc_pharmacy/models/stock/stock_adjustment.py +4 -4
  242. edc_pharmacy/models/stock/stock_request.py +2 -2
  243. edc_pharmacy/models/stock/stock_request_item.py +2 -2
  244. edc_pharmacy/models/stock/stock_transfer.py +3 -3
  245. edc_pharmacy/models/stock/stock_transfer_item.py +2 -2
  246. edc_pharmacy/models/stock/storage_bin.py +3 -4
  247. edc_pharmacy/models/stock/storage_bin_item.py +2 -2
  248. edc_pharmacy/models/stock/supplier.py +3 -4
  249. edc_pharmacy/models/storage/box.py +2 -2
  250. edc_pharmacy/models/storage/items/container_model_mixin.py +3 -4
  251. edc_pharmacy/models/storage/items/pill_bottle_model_mixin.py +2 -2
  252. edc_pharmacy/models/storage/items/subject_pill_bottle.py +1 -1
  253. edc_pharmacy/models/storage/room.py +2 -2
  254. edc_pharmacy/models/storage/shelf.py +2 -2
  255. edc_pharmacy/models/storage/utils.py +1 -1
  256. edc_pharmacy/utils/allocate_stock.py +2 -3
  257. edc_pharmacy/utils/confirm_stock.py +2 -3
  258. edc_pharmacy/utils/confirm_stock_at_site.py +3 -4
  259. edc_pharmacy/utils/dispense.py +3 -4
  260. edc_pharmacy/utils/process_repack_request.py +4 -5
  261. edc_pharmacy/utils/stock_request/bulk_create_stock_request_items.py +2 -3
  262. edc_pharmacy/utils/transfer_stock.py +2 -3
  263. edc_pharmacy/views/add_to_storage_bin_view.py +2 -2
  264. edc_pharmacy/views/allocate_to_subject_view.py +2 -2
  265. edc_pharmacy/views/dispense_view.py +2 -2
  266. edc_pharmacy/views/move_to_storage_bin_view.py +2 -3
  267. edc_pharmacy/views/print_labels_view.py +2 -2
  268. edc_protocol/research_protocol_config.py +2 -3
  269. edc_protocol_incident/migrations/0001_initial.py +7 -7
  270. edc_protocol_incident/migrations/0001_squashed_0015_auto_20220927_0401.py +13 -13
  271. edc_protocol_incident/migrations/0005_protocolincident_historicalprotocolincident_and_more.py +7 -7
  272. edc_protocol_incident/migrations/0024_alter_actionsrequired_extra_value_and_more.py +625 -0
  273. edc_protocol_incident/migrations/0025_alter_historicalprotocoldeviationviolation_report_datetime_and_more.py +42 -0
  274. edc_protocol_incident/model_mixins/protocol_deviation_violation_model_mixin.py +18 -11
  275. edc_protocol_incident/model_mixins/protocol_incident_model_mixin.py +26 -11
  276. edc_pylabels/actions.py +3 -5
  277. edc_pylabels/migrations/0002_alter_label_options_label_created_and_more.py +3 -7
  278. edc_pylabels/migrations/0005_labelconfiguration_delete_label_and_more.py +3 -3
  279. edc_pylabels/migrations/0013_alter_labelconfiguration_device_created_and_more.py +49 -0
  280. edc_qareports/migrations/0001_initial.py +4 -5
  281. edc_qareports/migrations/0005_edcpermissions.py +3 -3
  282. edc_qareports/migrations/0006_qareportlog.py +2 -3
  283. edc_qareports/migrations/0019_alter_edcpermissions_device_created_and_more.py +102 -0
  284. edc_qareports/migrations/0020_alter_note_report_datetime_and_more.py +24 -0
  285. edc_qareports/model_mixins/note_model_mixin.py +7 -4
  286. edc_qareports/model_mixins/on_study_missing_values_model_mixin.py +4 -4
  287. edc_qareports/model_mixins/qa_report_model_mixin.py +2 -3
  288. edc_qareports/models/note.py +4 -4
  289. edc_qareports/models/qa_reports_log.py +2 -3
  290. edc_randomization/decorators.py +1 -1
  291. edc_randomization/migrations/0001_initial.py +3 -2
  292. edc_randomization/migrations/0002_historicalrandomizationlist.py +3 -2
  293. edc_randomization/migrations/0009_edcpermissions.py +3 -2
  294. edc_randomization/migrations/0014_alter_edcpermissions_device_created_and_more.py +141 -0
  295. edc_randomization/model_mixins.py +9 -9
  296. edc_randomization/utils.py +2 -2
  297. edc_refusal/migrations/0001_initial.py +4 -4
  298. edc_refusal/migrations/0002_historicalsubjectrefusal.py +4 -4
  299. edc_refusal/migrations/0012_alter_historicalsubjectrefusal_comment_and_more.py +122 -0
  300. edc_refusal/migrations/0013_alter_historicalsubjectrefusal_report_datetime_and_more.py +28 -0
  301. edc_refusal/model_mixins.py +3 -3
  302. edc_registration/migrations/0002_auto_20161127_2226.py +3 -4
  303. edc_registration/migrations/0005_auto_20170111_1809.py +4 -2
  304. edc_registration/migrations/0016_historicalregisteredsubject.py +3 -2
  305. edc_registration/migrations/0017_auto_20190305_0123.py +5 -12
  306. edc_registration/migrations/0033_alter_historicalregisteredsubject_additional_key_and_more.py +302 -0
  307. edc_registration/model_mixins/updates_or_creates_registered_subject_model_mixin.py +2 -3
  308. edc_registration/models/registered_subject.py +27 -26
  309. edc_reportable/age_evaluator.py +4 -2
  310. edc_reportable/formula.py +5 -5
  311. edc_reportable/migrations/0001_initial.py +7 -7
  312. edc_reportable/migrations/0003_referencerangecollection_grade1_and_more.py +3 -3
  313. edc_reportable/migrations/0004_alter_referencerangecollection_grade3_and_more.py +5 -5
  314. edc_reportable/migrations/0006_alter_gradingdata_revision_and_more.py +5 -6
  315. edc_reportable/migrations/0007_alter_gradingdata_age_phrase_and_more.py +509 -0
  316. edc_reportable/models/normal_data.py +4 -5
  317. edc_reportable/models/reference_model_mixins.py +10 -11
  318. edc_reportable/models/reference_range_collection.py +12 -13
  319. edc_reportable/post_migrate_signals.py +1 -1
  320. edc_reportable/utils/convert_units.py +11 -45
  321. edc_reportable/utils/get_normal_data_or_raise.py +2 -2
  322. edc_reportable/utils/load_data.py +4 -4
  323. edc_reportable/utils/update_grading_data.py +5 -5
  324. edc_review_dashboard/migrations/0001_initial.py +3 -2
  325. edc_review_dashboard/migrations/0006_alter_edcpermissions_device_created_and_more.py +49 -0
  326. edc_screening/age_evaluator.py +3 -3
  327. edc_screening/migrations/0001_initial.py +3 -2
  328. edc_screening/migrations/0005_alter_edcpermissions_device_created_and_more.py +49 -0
  329. edc_screening/model_mixins/eligibility_model_mixin.py +3 -4
  330. edc_screening/model_mixins/screening_fields_model_mixin.py +6 -8
  331. edc_search/model_mixins.py +2 -3
  332. edc_search/search_slug.py +9 -8
  333. edc_search/updater.py +2 -2
  334. edc_sites/migrations/0007_edcpermissions.py +3 -2
  335. edc_sites/migrations/0010_alter_edcpermissions_device_created_and_more.py +69 -0
  336. edc_sites/model_mixins/site_model_mixin.py +2 -2
  337. edc_sites/site.py +5 -5
  338. edc_sites/system_checks.py +1 -1
  339. edc_subject_dashboard/migrations/0001_initial.py +3 -2
  340. edc_subject_dashboard/migrations/0005_alter_edcpermissions_device_created_and_more.py +49 -0
  341. edc_subject_dashboard/requisition_report.py +6 -4
  342. edc_subject_dashboard/requisition_verifier.py +6 -6
  343. edc_subject_dashboard/templatetags/edc_subject_dashboard_extras.py +2 -2
  344. edc_subject_dashboard/view_mixins/subject_visit_view_mixin.py +7 -8
  345. edc_subject_dashboard/view_utils/subject_consent_listboard_button.py +3 -2
  346. edc_subject_dashboard/view_utils/timepoint_status_button.py +2 -2
  347. edc_timepoint/model_mixins.py +22 -20
  348. edc_transfer/model_mixins.py +4 -4
  349. edc_transfer/modeladmin_mixins.py +1 -1
  350. edc_unblinding/migrations/0001_initial.py +13 -13
  351. edc_unblinding/migrations/0014_alter_historicalunblindingrequest_action_identifier_and_more.py +291 -0
  352. edc_unblinding/migrations/0015_alter_historicalunblindingrequest_report_datetime_and_more.py +45 -0
  353. edc_unblinding/models/unblinding_request.py +2 -2
  354. edc_unblinding/models/unblinding_review.py +3 -3
  355. edc_utils/age.py +10 -16
  356. edc_visit_schedule/migrations/0001_initial.py +3 -3
  357. edc_visit_schedule/migrations/0002_auto_20190305_0123.py +3 -6
  358. edc_visit_schedule/migrations/0003_historicalvisitschedule_visitschedule.py +5 -4
  359. edc_visit_schedule/migrations/0015_historicalonschedule_offschedule_onschedule.py +10 -10
  360. edc_visit_schedule/migrations/0019_alter_historicalonschedule_device_created_and_more.py +229 -0
  361. edc_visit_schedule/migrations/0020_alter_historicalonschedule_onschedule_datetime_and_more.py +65 -0
  362. edc_visit_schedule/model_mixins/off_schedule_model_mixin.py +5 -4
  363. edc_visit_schedule/model_mixins/on_schedule_model_mixin.py +5 -4
  364. edc_visit_schedule/model_mixins/visit_schedule/visit_code_fields_model_mixin.py +1 -1
  365. edc_visit_schedule/models/subject_schedule_history.py +6 -6
  366. edc_visit_schedule/schedule/visit_collection.py +1 -1
  367. edc_visit_schedule/subject_schedule.py +5 -4
  368. edc_visit_schedule/view_mixins.py +2 -3
  369. edc_visit_schedule/visit/visit.py +3 -2
  370. edc_visit_tracking/migrations/0004_subjectvisit_subjectvisitmissedreasons_extra_value_and_more.py +13 -13
  371. edc_visit_tracking/migrations/0009_alter_historicalsubjectvisit_comments_and_more.py +450 -0
  372. edc_visit_tracking/migrations/0010_alter_historicalsubjectvisit_report_datetime_and_more.py +68 -0
  373. edc_visit_tracking/model_mixins/base/visit_methods_model_mixin.py +3 -3
  374. edc_visit_tracking/model_mixins/crfs/visit_tracking_crf_model_mixin.py +2 -2
  375. edc_visit_tracking/model_mixins/requisitions/visit_tracking_requisition_model_mixin.py +2 -2
  376. edc_visit_tracking/model_mixins/subject_visit_missed_model_mixin.py +2 -2
  377. edc_visit_tracking/model_mixins/visit_model_mixin/caretaker_fields_mixin.py +2 -3
  378. edc_visit_tracking/model_mixins/visit_model_mixin/previous_visit_model_mixin.py +1 -1
  379. edc_visit_tracking/model_mixins/visit_model_mixin/visit_model_fields_mixin.py +8 -11
  380. edc_visit_tracking/model_mixins/visit_model_mixin/visit_model_mixin.py +1 -1
  381. edc_visit_tracking/models/signals.py +1 -1
  382. edc_visit_tracking/models/subject_visit.py +1 -1
  383. edc_vitals/calculators/bmi.py +7 -5
  384. edc_vitals/form_validators/blood_pressure_form_validator_mixin.py +3 -1
  385. edc_vitals/utils.py +1 -1
  386. {clinicedc-2.0.5.dist-info → clinicedc-2.0.7.dist-info}/WHEEL +0 -0
  387. {clinicedc-2.0.5.dist-info → clinicedc-2.0.7.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,625 @@
1
+ # Generated by Django 5.2.6 on 2025-09-17 16:53
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ (
10
+ "edc_protocol_incident",
11
+ "0023_alter_historicalprotocoldeviationviolation_revision_and_more",
12
+ ),
13
+ ]
14
+
15
+ operations = [
16
+ migrations.AlterField(
17
+ model_name="actionsrequired",
18
+ name="extra_value",
19
+ field=models.CharField(default="", max_length=250),
20
+ ),
21
+ migrations.AlterField(
22
+ model_name="actionsrequired",
23
+ name="field_name",
24
+ field=models.CharField(
25
+ blank=True,
26
+ default="",
27
+ editable=False,
28
+ help_text="Not required",
29
+ max_length=25,
30
+ ),
31
+ ),
32
+ migrations.AlterField(
33
+ model_name="actionsrequired",
34
+ name="plural_name",
35
+ field=models.CharField(
36
+ default="", max_length=250, verbose_name="Plural name"
37
+ ),
38
+ ),
39
+ migrations.AlterField(
40
+ model_name="historicalprotocoldeviationviolation",
41
+ name="action_identifier",
42
+ field=models.CharField(
43
+ blank=True, db_index=True, default="", max_length=50
44
+ ),
45
+ ),
46
+ migrations.AlterField(
47
+ model_name="historicalprotocoldeviationviolation",
48
+ name="action_item_reason",
49
+ field=models.TextField(default="", editable=False),
50
+ ),
51
+ migrations.AlterField(
52
+ model_name="historicalprotocoldeviationviolation",
53
+ name="corrective_action",
54
+ field=models.TextField(
55
+ blank=True, default="", verbose_name="Corrective action taken"
56
+ ),
57
+ ),
58
+ migrations.AlterField(
59
+ model_name="historicalprotocoldeviationviolation",
60
+ name="device_created",
61
+ field=models.CharField(
62
+ blank=True, default="", max_length=10, verbose_name="Device created"
63
+ ),
64
+ ),
65
+ migrations.AlterField(
66
+ model_name="historicalprotocoldeviationviolation",
67
+ name="device_modified",
68
+ field=models.CharField(
69
+ blank=True, default="", max_length=10, verbose_name="Device modified"
70
+ ),
71
+ ),
72
+ migrations.AlterField(
73
+ model_name="historicalprotocoldeviationviolation",
74
+ name="locale_created",
75
+ field=models.CharField(
76
+ blank=True,
77
+ default="",
78
+ help_text="Auto-updated by Modeladmin",
79
+ max_length=10,
80
+ verbose_name="Locale created",
81
+ ),
82
+ ),
83
+ migrations.AlterField(
84
+ model_name="historicalprotocoldeviationviolation",
85
+ name="locale_modified",
86
+ field=models.CharField(
87
+ blank=True,
88
+ default="",
89
+ help_text="Auto-updated by Modeladmin",
90
+ max_length=10,
91
+ verbose_name="Locale modified",
92
+ ),
93
+ ),
94
+ migrations.AlterField(
95
+ model_name="historicalprotocoldeviationviolation",
96
+ name="parent_action_identifier",
97
+ field=models.CharField(
98
+ blank=True,
99
+ default="",
100
+ help_text="action identifier that links to parent reference model instance.",
101
+ max_length=30,
102
+ ),
103
+ ),
104
+ migrations.AlterField(
105
+ model_name="historicalprotocoldeviationviolation",
106
+ name="preventative_action",
107
+ field=models.TextField(
108
+ blank=True, default="", verbose_name="Preventative action taken"
109
+ ),
110
+ ),
111
+ migrations.AlterField(
112
+ model_name="historicalprotocoldeviationviolation",
113
+ name="related_action_identifier",
114
+ field=models.CharField(
115
+ blank=True,
116
+ default="",
117
+ help_text="action identifier that links to related reference model instance.",
118
+ max_length=30,
119
+ ),
120
+ ),
121
+ migrations.AlterField(
122
+ model_name="historicalprotocoldeviationviolation",
123
+ name="safety_impact_details",
124
+ field=models.TextField(
125
+ blank=True, default="", verbose_name='If "Yes", provide details'
126
+ ),
127
+ ),
128
+ migrations.AlterField(
129
+ model_name="historicalprotocoldeviationviolation",
130
+ name="short_description",
131
+ field=models.CharField(
132
+ default="",
133
+ help_text='Max 35 characters. Note: If this occurrence is a "violation" there is additional space below for a more detailed description',
134
+ max_length=35,
135
+ verbose_name="Provide a short description of this occurrence",
136
+ ),
137
+ ),
138
+ migrations.AlterField(
139
+ model_name="historicalprotocoldeviationviolation",
140
+ name="study_outcomes_impact_details",
141
+ field=models.TextField(
142
+ blank=True, default="", verbose_name='If "Yes", provide details'
143
+ ),
144
+ ),
145
+ migrations.AlterField(
146
+ model_name="historicalprotocoldeviationviolation",
147
+ name="violation_description",
148
+ field=models.TextField(
149
+ blank=True,
150
+ default="",
151
+ help_text="Describe in full. Explain how the violation happened, what occurred, etc.",
152
+ verbose_name="Describe the violation",
153
+ ),
154
+ ),
155
+ migrations.AlterField(
156
+ model_name="historicalprotocoldeviationviolation",
157
+ name="violation_other",
158
+ field=models.CharField(
159
+ blank=True,
160
+ default="",
161
+ max_length=75,
162
+ verbose_name="If other, please specify",
163
+ ),
164
+ ),
165
+ migrations.AlterField(
166
+ model_name="historicalprotocoldeviationviolation",
167
+ name="violation_reason",
168
+ field=models.TextField(
169
+ blank=True,
170
+ default="",
171
+ verbose_name="Explain the reason why the violation occurred",
172
+ ),
173
+ ),
174
+ migrations.AlterField(
175
+ model_name="historicalprotocolincident",
176
+ name="action_identifier",
177
+ field=models.CharField(
178
+ blank=True, db_index=True, default="", max_length=50
179
+ ),
180
+ ),
181
+ migrations.AlterField(
182
+ model_name="historicalprotocolincident",
183
+ name="action_item_reason",
184
+ field=models.TextField(default="", editable=False),
185
+ ),
186
+ migrations.AlterField(
187
+ model_name="historicalprotocolincident",
188
+ name="corrective_action",
189
+ field=models.TextField(
190
+ blank=True, default="", verbose_name="Corrective action taken"
191
+ ),
192
+ ),
193
+ migrations.AlterField(
194
+ model_name="historicalprotocolincident",
195
+ name="device_created",
196
+ field=models.CharField(
197
+ blank=True, default="", max_length=10, verbose_name="Device created"
198
+ ),
199
+ ),
200
+ migrations.AlterField(
201
+ model_name="historicalprotocolincident",
202
+ name="device_modified",
203
+ field=models.CharField(
204
+ blank=True, default="", max_length=10, verbose_name="Device modified"
205
+ ),
206
+ ),
207
+ migrations.AlterField(
208
+ model_name="historicalprotocolincident",
209
+ name="incident_description",
210
+ field=models.TextField(
211
+ default="",
212
+ help_text="Describe in full. Explain how the incident happened, what occurred, etc.",
213
+ verbose_name="Describe the incident",
214
+ ),
215
+ ),
216
+ migrations.AlterField(
217
+ model_name="historicalprotocolincident",
218
+ name="incident_other",
219
+ field=models.CharField(
220
+ blank=True,
221
+ default="",
222
+ max_length=75,
223
+ verbose_name="If other, please specify",
224
+ ),
225
+ ),
226
+ migrations.AlterField(
227
+ model_name="historicalprotocolincident",
228
+ name="incident_reason",
229
+ field=models.TextField(
230
+ default="", verbose_name="Explain the reason why the incident occurred"
231
+ ),
232
+ ),
233
+ migrations.AlterField(
234
+ model_name="historicalprotocolincident",
235
+ name="locale_created",
236
+ field=models.CharField(
237
+ blank=True,
238
+ default="",
239
+ help_text="Auto-updated by Modeladmin",
240
+ max_length=10,
241
+ verbose_name="Locale created",
242
+ ),
243
+ ),
244
+ migrations.AlterField(
245
+ model_name="historicalprotocolincident",
246
+ name="locale_modified",
247
+ field=models.CharField(
248
+ blank=True,
249
+ default="",
250
+ help_text="Auto-updated by Modeladmin",
251
+ max_length=10,
252
+ verbose_name="Locale modified",
253
+ ),
254
+ ),
255
+ migrations.AlterField(
256
+ model_name="historicalprotocolincident",
257
+ name="parent_action_identifier",
258
+ field=models.CharField(
259
+ blank=True,
260
+ default="",
261
+ help_text="action identifier that links to parent reference model instance.",
262
+ max_length=30,
263
+ ),
264
+ ),
265
+ migrations.AlterField(
266
+ model_name="historicalprotocolincident",
267
+ name="preventative_action",
268
+ field=models.TextField(
269
+ blank=True, default="", verbose_name="Preventative action taken"
270
+ ),
271
+ ),
272
+ migrations.AlterField(
273
+ model_name="historicalprotocolincident",
274
+ name="reasons_withdrawn",
275
+ field=models.TextField(blank=True, default=""),
276
+ ),
277
+ migrations.AlterField(
278
+ model_name="historicalprotocolincident",
279
+ name="related_action_identifier",
280
+ field=models.CharField(
281
+ blank=True,
282
+ default="",
283
+ help_text="action identifier that links to related reference model instance.",
284
+ max_length=30,
285
+ ),
286
+ ),
287
+ migrations.AlterField(
288
+ model_name="historicalprotocolincident",
289
+ name="safety_impact_details",
290
+ field=models.TextField(
291
+ blank=True, default="", verbose_name='If "Yes", provide details'
292
+ ),
293
+ ),
294
+ migrations.AlterField(
295
+ model_name="historicalprotocolincident",
296
+ name="short_description",
297
+ field=models.CharField(
298
+ default="",
299
+ help_text="Max 35 characters. Note: there is additional space below for a more detailed description",
300
+ max_length=35,
301
+ verbose_name="Provide a short description of this incident",
302
+ ),
303
+ ),
304
+ migrations.AlterField(
305
+ model_name="historicalprotocolincident",
306
+ name="study_outcomes_impact_details",
307
+ field=models.TextField(
308
+ blank=True, default="", verbose_name='If "Yes", provide details'
309
+ ),
310
+ ),
311
+ migrations.AlterField(
312
+ model_name="protocoldeviationviolation",
313
+ name="action_identifier",
314
+ field=models.CharField(blank=True, default="", max_length=50, unique=True),
315
+ ),
316
+ migrations.AlterField(
317
+ model_name="protocoldeviationviolation",
318
+ name="action_item_reason",
319
+ field=models.TextField(default="", editable=False),
320
+ ),
321
+ migrations.AlterField(
322
+ model_name="protocoldeviationviolation",
323
+ name="corrective_action",
324
+ field=models.TextField(
325
+ blank=True, default="", verbose_name="Corrective action taken"
326
+ ),
327
+ ),
328
+ migrations.AlterField(
329
+ model_name="protocoldeviationviolation",
330
+ name="device_created",
331
+ field=models.CharField(
332
+ blank=True, default="", max_length=10, verbose_name="Device created"
333
+ ),
334
+ ),
335
+ migrations.AlterField(
336
+ model_name="protocoldeviationviolation",
337
+ name="device_modified",
338
+ field=models.CharField(
339
+ blank=True, default="", max_length=10, verbose_name="Device modified"
340
+ ),
341
+ ),
342
+ migrations.AlterField(
343
+ model_name="protocoldeviationviolation",
344
+ name="locale_created",
345
+ field=models.CharField(
346
+ blank=True,
347
+ default="",
348
+ help_text="Auto-updated by Modeladmin",
349
+ max_length=10,
350
+ verbose_name="Locale created",
351
+ ),
352
+ ),
353
+ migrations.AlterField(
354
+ model_name="protocoldeviationviolation",
355
+ name="locale_modified",
356
+ field=models.CharField(
357
+ blank=True,
358
+ default="",
359
+ help_text="Auto-updated by Modeladmin",
360
+ max_length=10,
361
+ verbose_name="Locale modified",
362
+ ),
363
+ ),
364
+ migrations.AlterField(
365
+ model_name="protocoldeviationviolation",
366
+ name="parent_action_identifier",
367
+ field=models.CharField(
368
+ blank=True,
369
+ default="",
370
+ help_text="action identifier that links to parent reference model instance.",
371
+ max_length=30,
372
+ ),
373
+ ),
374
+ migrations.AlterField(
375
+ model_name="protocoldeviationviolation",
376
+ name="preventative_action",
377
+ field=models.TextField(
378
+ blank=True, default="", verbose_name="Preventative action taken"
379
+ ),
380
+ ),
381
+ migrations.AlterField(
382
+ model_name="protocoldeviationviolation",
383
+ name="related_action_identifier",
384
+ field=models.CharField(
385
+ blank=True,
386
+ default="",
387
+ help_text="action identifier that links to related reference model instance.",
388
+ max_length=30,
389
+ ),
390
+ ),
391
+ migrations.AlterField(
392
+ model_name="protocoldeviationviolation",
393
+ name="safety_impact_details",
394
+ field=models.TextField(
395
+ blank=True, default="", verbose_name='If "Yes", provide details'
396
+ ),
397
+ ),
398
+ migrations.AlterField(
399
+ model_name="protocoldeviationviolation",
400
+ name="short_description",
401
+ field=models.CharField(
402
+ default="",
403
+ help_text='Max 35 characters. Note: If this occurrence is a "violation" there is additional space below for a more detailed description',
404
+ max_length=35,
405
+ verbose_name="Provide a short description of this occurrence",
406
+ ),
407
+ ),
408
+ migrations.AlterField(
409
+ model_name="protocoldeviationviolation",
410
+ name="study_outcomes_impact_details",
411
+ field=models.TextField(
412
+ blank=True, default="", verbose_name='If "Yes", provide details'
413
+ ),
414
+ ),
415
+ migrations.AlterField(
416
+ model_name="protocoldeviationviolation",
417
+ name="violation_description",
418
+ field=models.TextField(
419
+ blank=True,
420
+ default="",
421
+ help_text="Describe in full. Explain how the violation happened, what occurred, etc.",
422
+ verbose_name="Describe the violation",
423
+ ),
424
+ ),
425
+ migrations.AlterField(
426
+ model_name="protocoldeviationviolation",
427
+ name="violation_other",
428
+ field=models.CharField(
429
+ blank=True,
430
+ default="",
431
+ max_length=75,
432
+ verbose_name="If other, please specify",
433
+ ),
434
+ ),
435
+ migrations.AlterField(
436
+ model_name="protocoldeviationviolation",
437
+ name="violation_reason",
438
+ field=models.TextField(
439
+ blank=True,
440
+ default="",
441
+ verbose_name="Explain the reason why the violation occurred",
442
+ ),
443
+ ),
444
+ migrations.AlterField(
445
+ model_name="protocolincident",
446
+ name="action_identifier",
447
+ field=models.CharField(blank=True, default="", max_length=50, unique=True),
448
+ ),
449
+ migrations.AlterField(
450
+ model_name="protocolincident",
451
+ name="action_item_reason",
452
+ field=models.TextField(default="", editable=False),
453
+ ),
454
+ migrations.AlterField(
455
+ model_name="protocolincident",
456
+ name="corrective_action",
457
+ field=models.TextField(
458
+ blank=True, default="", verbose_name="Corrective action taken"
459
+ ),
460
+ ),
461
+ migrations.AlterField(
462
+ model_name="protocolincident",
463
+ name="device_created",
464
+ field=models.CharField(
465
+ blank=True, default="", max_length=10, verbose_name="Device created"
466
+ ),
467
+ ),
468
+ migrations.AlterField(
469
+ model_name="protocolincident",
470
+ name="device_modified",
471
+ field=models.CharField(
472
+ blank=True, default="", max_length=10, verbose_name="Device modified"
473
+ ),
474
+ ),
475
+ migrations.AlterField(
476
+ model_name="protocolincident",
477
+ name="incident_description",
478
+ field=models.TextField(
479
+ default="",
480
+ help_text="Describe in full. Explain how the incident happened, what occurred, etc.",
481
+ verbose_name="Describe the incident",
482
+ ),
483
+ ),
484
+ migrations.AlterField(
485
+ model_name="protocolincident",
486
+ name="incident_other",
487
+ field=models.CharField(
488
+ blank=True,
489
+ default="",
490
+ max_length=75,
491
+ verbose_name="If other, please specify",
492
+ ),
493
+ ),
494
+ migrations.AlterField(
495
+ model_name="protocolincident",
496
+ name="incident_reason",
497
+ field=models.TextField(
498
+ default="", verbose_name="Explain the reason why the incident occurred"
499
+ ),
500
+ ),
501
+ migrations.AlterField(
502
+ model_name="protocolincident",
503
+ name="locale_created",
504
+ field=models.CharField(
505
+ blank=True,
506
+ default="",
507
+ help_text="Auto-updated by Modeladmin",
508
+ max_length=10,
509
+ verbose_name="Locale created",
510
+ ),
511
+ ),
512
+ migrations.AlterField(
513
+ model_name="protocolincident",
514
+ name="locale_modified",
515
+ field=models.CharField(
516
+ blank=True,
517
+ default="",
518
+ help_text="Auto-updated by Modeladmin",
519
+ max_length=10,
520
+ verbose_name="Locale modified",
521
+ ),
522
+ ),
523
+ migrations.AlterField(
524
+ model_name="protocolincident",
525
+ name="parent_action_identifier",
526
+ field=models.CharField(
527
+ blank=True,
528
+ default="",
529
+ help_text="action identifier that links to parent reference model instance.",
530
+ max_length=30,
531
+ ),
532
+ ),
533
+ migrations.AlterField(
534
+ model_name="protocolincident",
535
+ name="preventative_action",
536
+ field=models.TextField(
537
+ blank=True, default="", verbose_name="Preventative action taken"
538
+ ),
539
+ ),
540
+ migrations.AlterField(
541
+ model_name="protocolincident",
542
+ name="reasons_withdrawn",
543
+ field=models.TextField(blank=True, default=""),
544
+ ),
545
+ migrations.AlterField(
546
+ model_name="protocolincident",
547
+ name="related_action_identifier",
548
+ field=models.CharField(
549
+ blank=True,
550
+ default="",
551
+ help_text="action identifier that links to related reference model instance.",
552
+ max_length=30,
553
+ ),
554
+ ),
555
+ migrations.AlterField(
556
+ model_name="protocolincident",
557
+ name="safety_impact_details",
558
+ field=models.TextField(
559
+ blank=True, default="", verbose_name='If "Yes", provide details'
560
+ ),
561
+ ),
562
+ migrations.AlterField(
563
+ model_name="protocolincident",
564
+ name="short_description",
565
+ field=models.CharField(
566
+ default="",
567
+ help_text="Max 35 characters. Note: there is additional space below for a more detailed description",
568
+ max_length=35,
569
+ verbose_name="Provide a short description of this incident",
570
+ ),
571
+ ),
572
+ migrations.AlterField(
573
+ model_name="protocolincident",
574
+ name="study_outcomes_impact_details",
575
+ field=models.TextField(
576
+ blank=True, default="", verbose_name='If "Yes", provide details'
577
+ ),
578
+ ),
579
+ migrations.AlterField(
580
+ model_name="protocolincidents",
581
+ name="extra_value",
582
+ field=models.CharField(default="", max_length=250),
583
+ ),
584
+ migrations.AlterField(
585
+ model_name="protocolincidents",
586
+ name="field_name",
587
+ field=models.CharField(
588
+ blank=True,
589
+ default="",
590
+ editable=False,
591
+ help_text="Not required",
592
+ max_length=25,
593
+ ),
594
+ ),
595
+ migrations.AlterField(
596
+ model_name="protocolincidents",
597
+ name="plural_name",
598
+ field=models.CharField(
599
+ default="", max_length=250, verbose_name="Plural name"
600
+ ),
601
+ ),
602
+ migrations.AlterField(
603
+ model_name="protocolviolations",
604
+ name="extra_value",
605
+ field=models.CharField(default="", max_length=250),
606
+ ),
607
+ migrations.AlterField(
608
+ model_name="protocolviolations",
609
+ name="field_name",
610
+ field=models.CharField(
611
+ blank=True,
612
+ default="",
613
+ editable=False,
614
+ help_text="Not required",
615
+ max_length=25,
616
+ ),
617
+ ),
618
+ migrations.AlterField(
619
+ model_name="protocolviolations",
620
+ name="plural_name",
621
+ field=models.CharField(
622
+ default="", max_length=250, verbose_name="Plural name"
623
+ ),
624
+ ),
625
+ ]
@@ -0,0 +1,42 @@
1
+ # Generated by Django 5.2.6 on 2025-09-18 00:24
2
+
3
+ import django.utils.timezone
4
+ from django.db import migrations, models
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ("edc_protocol_incident", "0024_alter_actionsrequired_extra_value_and_more"),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AlterField(
15
+ model_name="historicalprotocoldeviationviolation",
16
+ name="report_datetime",
17
+ field=models.DateTimeField(
18
+ default=django.utils.timezone.now, verbose_name="Report Date and Time"
19
+ ),
20
+ ),
21
+ migrations.AlterField(
22
+ model_name="historicalprotocolincident",
23
+ name="report_datetime",
24
+ field=models.DateTimeField(
25
+ default=django.utils.timezone.now, verbose_name="Report Date and Time"
26
+ ),
27
+ ),
28
+ migrations.AlterField(
29
+ model_name="protocoldeviationviolation",
30
+ name="report_datetime",
31
+ field=models.DateTimeField(
32
+ default=django.utils.timezone.now, verbose_name="Report Date and Time"
33
+ ),
34
+ ),
35
+ migrations.AlterField(
36
+ model_name="protocolincident",
37
+ name="report_datetime",
38
+ field=models.DateTimeField(
39
+ default=django.utils.timezone.now, verbose_name="Report Date and Time"
40
+ ),
41
+ ),
42
+ ]