clinicedc 2.0.6__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.
- {clinicedc-2.0.6.dist-info → clinicedc-2.0.7.dist-info}/METADATA +2 -2
- {clinicedc-2.0.6.dist-info → clinicedc-2.0.7.dist-info}/RECORD +386 -335
- edc_action_item/action.py +1 -1
- edc_action_item/action_item_notification.py +2 -2
- edc_action_item/create_action_item.py +1 -1
- edc_action_item/decorators.py +1 -1
- edc_action_item/migrations/0001_initial.py +21 -22
- edc_action_item/migrations/0006_auto_20180707_1659.py +4 -4
- edc_action_item/migrations/0008_auto_20180809_0303.py +4 -4
- edc_action_item/migrations/0015_auto_20190114_0250.py +4 -4
- edc_action_item/migrations/0017_auto_20190305_0123.py +11 -30
- edc_action_item/migrations/0030_edcpermissions.py +3 -2
- edc_action_item/migrations/0039_alter_actionitem_auto_created_comment_and_more.py +398 -0
- edc_action_item/migrations/0040_alter_actionitem_report_datetime_and_more.py +34 -0
- edc_action_item/models/action_item.py +9 -4
- edc_action_item/models/action_model_mixin.py +4 -4
- edc_action_item/models/reference.py +2 -2
- edc_action_item/post_migrate_signals.py +1 -1
- edc_action_item/send_email.py +0 -85
- edc_adherence/migrations/0005_alter_nonadherencereasons_extra_value_and_more.py +36 -0
- edc_adherence/model_mixins.py +1 -1
- edc_adverse_event/migrations/0001_initial.py +5 -4
- edc_adverse_event/migrations/0002_auto_20190802_0059.py +3 -2
- edc_adverse_event/migrations/0008_auto_20220825_0451.py +3 -2
- edc_adverse_event/migrations/0009_auto_20220907_0157.py +3 -2
- edc_adverse_event/migrations/0016_alter_aeactionclassification_device_created_and_more.py +285 -0
- edc_adverse_event/model_mixins/ae_followup/ae_followup_fields_model_mixin.py +2 -2
- edc_adverse_event/model_mixins/ae_initial/ae_initial_fields_model_mixin.py +6 -5
- edc_adverse_event/model_mixins/ae_special_interest/aesi_fields_model_mixin.py +2 -2
- edc_adverse_event/model_mixins/ae_susar/ae_susar_fields_model_mixin.py +2 -2
- edc_adverse_event/model_mixins/ae_tmg/ae_tmg_fields_model_mixin.py +15 -11
- edc_adverse_event/model_mixins/death_report/death_report_model_mixin.py +5 -4
- edc_adverse_event/model_mixins/death_report/death_report_tmg_model_mixin.py +6 -3
- edc_adverse_event/model_mixins/death_report/simple_death_report_model_mixin.py +2 -2
- edc_adverse_event/model_mixins/hospitaization/hospitalization_model_mixin.py +4 -3
- edc_adverse_event/modeladmin_mixins/death_report_admin_mixin.py +3 -3
- edc_adverse_event/models/signals.py +7 -7
- edc_adverse_event/templatetags/edc_adverse_event_extras.py +5 -4
- edc_adverse_event/view_mixins/ae/ae_listboard_view_mixin.py +3 -5
- edc_adverse_event/view_mixins/ae/death_report_listboard_view_mixin.py +6 -8
- edc_adverse_event/view_mixins/tmg/tmg_ae_listboard_view_mixin.py +2 -2
- edc_adverse_event/views/tmg/summary_listboard_view.py +3 -2
- edc_appointment/admin/appointment_admin.py +2 -2
- edc_appointment/admin/list_filters.py +2 -2
- edc_appointment/form_validators/appointment_form_validator.py +108 -82
- edc_appointment/migrations/0003_auto_20161127_2226.py +5 -6
- edc_appointment/migrations/0006_auto_20170106_2118.py +5 -5
- edc_appointment/migrations/0018_auto_20190305_0123.py +5 -12
- edc_appointment/migrations/0050_alter_appointment_appt_type_and_more.py +220 -0
- edc_appointment/model_mixins/appointment_fields_model_mixin.py +1 -2
- edc_appointment/model_mixins/window_period_model_mixin.py +6 -7
- edc_appointment/models/signals.py +44 -35
- edc_appointment/view_utils/appointment_button.py +2 -2
- edc_auth/admin/user_admin.py +1 -1
- edc_auth/migrations/0001_squashed_0033_alter_userprofile_is_multisite_viewer.py +5 -5
- edc_auth/migrations/0012_auto_20191026_0034.py +3 -2
- edc_auth/migrations/0013_auto_20191026_0055.py +3 -2
- edc_auth/migrations/0025_permissions.py +3 -2
- edc_auth/migrations/0035_alter_edcpermissions_device_created_and_more.py +85 -0
- edc_auth/post_migrate_signals.py +1 -1
- edc_consent/actions.py +4 -5
- edc_consent/migrations/0001_initial.py +3 -2
- edc_consent/migrations/0006_alter_edcpermissions_device_created_and_more.py +49 -0
- edc_consent/model_mixins/consent_extension_model_mixin.py +4 -5
- edc_consent/model_mixins/requires_consent_fields_model_mixin.py +2 -2
- edc_consent/utils.py +1 -1
- edc_crf/migrations/0001_initial.py +3 -2
- edc_crf/migrations/0009_alter_crfstatus_device_created_and_more.py +54 -0
- edc_dashboard/migrations/0001_initial.py +3 -2
- edc_dashboard/migrations/0006_alter_edcpermissions_device_created_and_more.py +49 -0
- edc_dashboard/templatetags/edc_dashboard_extras.py +3 -2
- edc_data_manager/action_items.py +4 -6
- edc_data_manager/admin/actions.py +5 -5
- edc_data_manager/handlers/handlers.py +6 -7
- edc_data_manager/migrations/0001_initial.py +19 -19
- edc_data_manager/migrations/0025_edcpermissions.py +3 -2
- edc_data_manager/migrations/0040_alter_datadictionary_device_created_and_more.py +327 -0
- edc_data_manager/migrations/0041_alter_dataquery_dm_user_and_more.py +164 -0
- edc_data_manager/models/data_query.py +5 -5
- edc_data_manager/models/model_mixins.py +8 -8
- edc_data_manager/rule/rule_runner.py +4 -3
- edc_document_status/model_mixins.py +1 -1
- edc_egfr/egfr.py +11 -7
- edc_egfr/model_mixins/egfr_model_mixin.py +3 -7
- edc_export/admin/data_request_admin.py +2 -2
- edc_export/archive_exporter.py +4 -3
- edc_export/files_archiver.py +3 -2
- edc_export/migrations/0001_initial.py +26 -26
- edc_export/migrations/0004_auto_20190305_0123.py +25 -72
- edc_export/migrations/0013_edcpermissions.py +3 -2
- edc_export/migrations/0022_alter_datarequest_description_and_more.py +611 -0
- edc_export/migrations/0023_alter_datarequesthistory_archive_filename_and_more.py +29 -0
- edc_export/model_exporter/file_history_updater.py +10 -10
- edc_export/model_exporter/model_exporter.py +13 -14
- edc_export/model_exporter/object_history_helpers.py +2 -2
- edc_export/models/data_request_history.py +4 -4
- edc_export/utils.py +10 -15
- edc_facility/facility.py +10 -15
- edc_facility/import_holidays.py +13 -13
- edc_facility/migrations/0005_healthfacility_healthfacilitytypes_and_more.py +8 -7
- edc_facility/migrations/0016_alter_healthfacility_device_created_and_more.py +139 -0
- edc_facility/migrations/0017_alter_healthfacility_gps_and_more.py +54 -0
- edc_facility/model_mixins.py +5 -5
- edc_form_runners/form_runner.py +3 -5
- edc_form_runners/migrations/0001_initial.py +3 -2
- edc_form_runners/migrations/0005_alter_issue_device_created_and_more.py +49 -0
- edc_identifier/migrations/0001_squashed_0018_auto_20180128_1054.py +3 -3
- edc_identifier/migrations/0002_auto_20190305_0123.py +3 -6
- edc_identifier/migrations/0006_auto_20161127_2226.py +15 -15
- edc_identifier/migrations/0007_auto_20161204_2227.py +3 -3
- edc_identifier/migrations/0009_auto_20161221_2323.py +3 -5
- edc_identifier/migrations/0010_auto_20170112_0602.py +17 -17
- edc_identifier/migrations/0011_alter_identifiermodel_device_created_and_more.py +79 -0
- edc_identifier/model_mixins.py +1 -1
- edc_identifier/models.py +9 -9
- edc_identifier/simple_identifier.py +1 -3
- edc_identifier/subject_identifier.py +3 -2
- edc_lab/migrations/0001_initial.py +29 -29
- edc_lab/migrations/0008_auto_20170921_0719.py +3 -3
- edc_lab/migrations/0010_auto_20171127_1541.py +15 -15
- edc_lab/migrations/0012_auto_20180114_1438.py +3 -3
- edc_lab/migrations/0019_auto_20190305_0123.py +43 -127
- edc_lab/migrations/0036_alter_aliquot_comment_alter_aliquot_device_created_and_more.py +1139 -0
- edc_lab/migrations/0037_alter_historicalorder_order_datetime_and_more.py +31 -0
- edc_lab/model_mixins/aliquot/aliquot_identifier_model_mixin.py +2 -2
- edc_lab/model_mixins/aliquot/aliquot_model_mixin.py +2 -2
- edc_lab/model_mixins/panel_model_mixin.py +18 -7
- edc_lab/model_mixins/requisition/crf_with_requisition_model_mixin.py +2 -4
- edc_lab/model_mixins/requisition/requisition_model_mixin.py +7 -8
- edc_lab/model_mixins/requisition/requisition_verify_model_mixin.py +1 -1
- edc_lab/model_mixins/result/result_item_model_mixin.py +4 -4
- edc_lab/model_mixins/shipping/manifest_model_mixin.py +4 -5
- edc_lab/model_mixins/shipping/verify_model_mixin.py +4 -6
- edc_lab/models/box.py +1 -1
- edc_lab/models/box_item.py +6 -7
- edc_lab/models/manifest/manifest.py +1 -1
- edc_lab/models/manifest/manifest_item.py +6 -6
- edc_lab/models/manifest/shipper.py +3 -4
- edc_lab/models/order.py +6 -4
- edc_lab/models/panel.py +4 -4
- edc_lab/models/result.py +2 -2
- edc_lab/models/result_item.py +2 -2
- edc_lab_dashboard/migrations/0001_initial.py +3 -2
- edc_lab_dashboard/migrations/0005_alter_edcpermissions_device_created_and_more.py +49 -0
- edc_lab_dashboard/views/action_views/receive_view.py +2 -2
- edc_lab_dashboard/views/action_views/verify_box_item_view.py +2 -2
- edc_lab_results/model_mixins/blood_result_model_mixin.py +7 -7
- edc_lab_results/model_mixins/fbg_model_mixin.py +3 -3
- edc_lab_results/model_mixins/glucose_model_mixin.py +3 -3
- edc_lab_results/model_mixins/hba1c_model_mixin.py +3 -3
- edc_label/migrations/0001_initial.py +3 -2
- edc_label/migrations/0007_alter_zpllabeltemplates_device_created_and_more.py +49 -0
- edc_list_data/list_model_maker.py +2 -2
- edc_list_data/load_list_data.py +11 -14
- edc_list_data/model_mixins.py +12 -4
- edc_list_data/preload_data.py +3 -3
- edc_listboard/migrations/0001_initial.py +3 -2
- edc_listboard/migrations/0007_alter_listboard_device_created_and_more.py +49 -0
- edc_locator/migrations/0001_initial.py +7 -7
- edc_locator/migrations/0018_auto_20190305_0123.py +5 -12
- edc_locator/migrations/0040_alter_historicalsubjectlocator_action_identifier_and_more.py +187 -0
- edc_locator/migrations/0041_alter_historicalsubjectlocator_report_datetime_and_more.py +27 -0
- edc_locator/model_mixins/locator_model_mixin.py +2 -2
- edc_locator/model_mixins/subject_contact_fields_mixin.py +1 -1
- edc_locator/modeladmin_mixins.py +5 -4
- edc_ltfu/model_mixins.py +7 -5
- edc_metadata/metadata_rules/decorators.py +1 -1
- edc_metadata/migrations/0002_auto_20161127_2226.py +5 -5
- edc_metadata/migrations/0005_auto_20170112_0602.py +5 -5
- edc_metadata/migrations/0011_auto_20190305_0123.py +5 -12
- edc_metadata/migrations/0031_alter_crfmetadata_device_created_and_more.py +120 -0
- edc_metadata/model_mixins/updates/updates_crf_metadata_model_mixin.py +1 -1
- edc_metadata/model_mixins/updates/updates_requisition_metadata_model_mixin.py +1 -1
- edc_metadata/models/crf_metadata.py +5 -5
- edc_metadata/models/crf_metadata_model_mixin.py +4 -5
- edc_metadata/models/requisition_metadata.py +6 -6
- edc_metadata/views/refresh_metadata_actions_view.py +3 -3
- edc_model/models/address_mixin.py +6 -6
- edc_model/models/fields/initials_field.py +2 -1
- edc_model/models/historical_records.py +2 -9
- edc_model/models/url_model_mixin.py +2 -2
- edc_model/validators/date.py +7 -8
- edc_model_admin/list_filters/future_date_list_filter.py +3 -3
- edc_model_admin/list_filters/past_date_list_filter.py +3 -3
- edc_model_admin/mixins/model_admin_protect_pii_mixin.py +4 -5
- edc_model_fields/fields/other_charfield.py +2 -2
- edc_navbar/migrations/0004_auto_20220825_0451.py +3 -2
- edc_navbar/migrations/0009_alter_edcpermissions_device_created_and_more.py +49 -0
- edc_notification/migrations/0001_initial.py +3 -3
- edc_notification/migrations/0004_auto_20190305_0123.py +3 -6
- edc_notification/migrations/0011_alter_notification_device_created_and_more.py +59 -0
- edc_notification/models/notification.py +1 -1
- edc_notification/notification/notification.py +12 -12
- edc_offstudy/migrations/0001_initial.py +4 -4
- edc_offstudy/migrations/0002_auto_20180921_0434.py +4 -4
- edc_offstudy/migrations/0005_auto_20190305_0123.py +5 -12
- edc_offstudy/migrations/0023_alter_historicalsubjectoffstudy_action_identifier_and_more.py +188 -0
- edc_offstudy/migrations/0024_alter_historicalsubjectoffstudy_offstudy_datetime_and_more.py +43 -0
- edc_offstudy/model_mixins/offstudy_model_mixin.py +3 -2
- edc_pdutils/df_exporters/csv_exporter.py +33 -37
- edc_pdutils/df_exporters/csv_model_exporter.py +2 -1
- edc_pdutils/migrations/0001_initial.py +8 -8
- edc_pharmacy/admin/prescription/rx_refill_admin.py +4 -3
- edc_pharmacy/admin/reports/stock_availability_admin.py +5 -6
- edc_pharmacy/migrations/0001_initial.py +64 -63
- edc_pharmacy/migrations/0015_auto_20220913_2139.py +26 -26
- edc_pharmacy/migrations/0024_allocation_assignment_containerunits_dispense_and_more.py +81 -86
- edc_pharmacy/migrations/0037_remove_historicalstock_confirmed_at_site_by_and_more.py +5 -5
- edc_pharmacy/migrations/0039_remove_dispense_registered_subject_and_more.py +7 -8
- edc_pharmacy/migrations/0049_remove_stocktransferconfirmation_stock_and_more.py +12 -12
- edc_pharmacy/migrations/0050_remove_stocktransferconfirmation2_location_and_more.py +5 -5
- edc_pharmacy/migrations/0051_alter_historicalstocktransferconfirmationitem_options_and_more.py +3 -4
- edc_pharmacy/migrations/0053_alter_location_managers_alter_historicalstock_lot_and_more.py +3 -3
- edc_pharmacy/migrations/0057_scanduplicates.py +3 -3
- edc_pharmacy/migrations/0060_alter_container_max_per_subject_and_more.py +13 -15
- edc_pharmacy/migrations/0068_stockout.py +2 -3
- edc_pharmacy/migrations/0076_historicalstockadjustment_stockadjustment.py +5 -5
- edc_pharmacy/migrations/0077_historicalstockadjustment_adjustment_datetime_and_more.py +3 -4
- edc_pharmacy/migrations/0081_historicalconfirmation_confirmation.py +8 -8
- edc_pharmacy/migrations/0084_confirmationatsiteitem_and_more.py +0 -2
- edc_pharmacy/migrations/0089_alter_allocation_allocated_by_and_more.py +3284 -0
- edc_pharmacy/migrations/0090_alter_allocation_allocation_datetime_and_more.py +227 -0
- edc_pharmacy/model_mixins/study_medication_refill_model_mixin.py +2 -2
- edc_pharmacy/models/medication/medication.py +3 -3
- edc_pharmacy/models/model_mixins.py +10 -11
- edc_pharmacy/models/prescription/rx.py +13 -12
- edc_pharmacy/models/prescription/rx_refill.py +0 -1
- edc_pharmacy/models/stock/allocation.py +3 -3
- edc_pharmacy/models/stock/confirmation.py +3 -3
- edc_pharmacy/models/stock/confirmation_at_site.py +3 -2
- edc_pharmacy/models/stock/confirmation_at_site_item.py +3 -4
- edc_pharmacy/models/stock/dispense.py +5 -6
- edc_pharmacy/models/stock/dispense_item.py +2 -2
- edc_pharmacy/models/stock/location.py +3 -4
- edc_pharmacy/models/stock/lot.py +6 -7
- edc_pharmacy/models/stock/order.py +1 -1
- edc_pharmacy/models/stock/receive.py +3 -3
- edc_pharmacy/models/stock/receive_item.py +4 -4
- edc_pharmacy/models/stock/repack_request.py +2 -2
- edc_pharmacy/models/stock/stock.py +12 -18
- edc_pharmacy/models/stock/stock_adjustment.py +4 -4
- edc_pharmacy/models/stock/stock_request.py +2 -2
- edc_pharmacy/models/stock/stock_request_item.py +2 -2
- edc_pharmacy/models/stock/stock_transfer.py +3 -3
- edc_pharmacy/models/stock/stock_transfer_item.py +2 -2
- edc_pharmacy/models/stock/storage_bin.py +3 -4
- edc_pharmacy/models/stock/storage_bin_item.py +2 -2
- edc_pharmacy/models/stock/supplier.py +3 -4
- edc_pharmacy/models/storage/box.py +2 -2
- edc_pharmacy/models/storage/items/container_model_mixin.py +3 -4
- edc_pharmacy/models/storage/items/pill_bottle_model_mixin.py +2 -2
- edc_pharmacy/models/storage/items/subject_pill_bottle.py +1 -1
- edc_pharmacy/models/storage/room.py +2 -2
- edc_pharmacy/models/storage/shelf.py +2 -2
- edc_pharmacy/models/storage/utils.py +1 -1
- edc_pharmacy/utils/allocate_stock.py +2 -3
- edc_pharmacy/utils/confirm_stock.py +2 -3
- edc_pharmacy/utils/confirm_stock_at_site.py +3 -4
- edc_pharmacy/utils/dispense.py +3 -4
- edc_pharmacy/utils/process_repack_request.py +4 -5
- edc_pharmacy/utils/stock_request/bulk_create_stock_request_items.py +2 -3
- edc_pharmacy/utils/transfer_stock.py +2 -3
- edc_pharmacy/views/add_to_storage_bin_view.py +2 -2
- edc_pharmacy/views/allocate_to_subject_view.py +2 -2
- edc_pharmacy/views/dispense_view.py +2 -2
- edc_pharmacy/views/move_to_storage_bin_view.py +2 -3
- edc_pharmacy/views/print_labels_view.py +2 -2
- edc_protocol/research_protocol_config.py +2 -3
- edc_protocol_incident/migrations/0001_initial.py +7 -7
- edc_protocol_incident/migrations/0001_squashed_0015_auto_20220927_0401.py +13 -13
- edc_protocol_incident/migrations/0005_protocolincident_historicalprotocolincident_and_more.py +7 -7
- edc_protocol_incident/migrations/0024_alter_actionsrequired_extra_value_and_more.py +625 -0
- edc_protocol_incident/migrations/0025_alter_historicalprotocoldeviationviolation_report_datetime_and_more.py +42 -0
- edc_protocol_incident/model_mixins/protocol_deviation_violation_model_mixin.py +18 -11
- edc_protocol_incident/model_mixins/protocol_incident_model_mixin.py +26 -11
- edc_pylabels/actions.py +3 -5
- edc_pylabels/migrations/0002_alter_label_options_label_created_and_more.py +3 -7
- edc_pylabels/migrations/0005_labelconfiguration_delete_label_and_more.py +3 -3
- edc_pylabels/migrations/0013_alter_labelconfiguration_device_created_and_more.py +49 -0
- edc_qareports/migrations/0001_initial.py +4 -5
- edc_qareports/migrations/0005_edcpermissions.py +3 -3
- edc_qareports/migrations/0006_qareportlog.py +2 -3
- edc_qareports/migrations/0019_alter_edcpermissions_device_created_and_more.py +102 -0
- edc_qareports/migrations/0020_alter_note_report_datetime_and_more.py +24 -0
- edc_qareports/model_mixins/note_model_mixin.py +7 -4
- edc_qareports/model_mixins/on_study_missing_values_model_mixin.py +4 -4
- edc_qareports/model_mixins/qa_report_model_mixin.py +2 -3
- edc_qareports/models/note.py +4 -4
- edc_qareports/models/qa_reports_log.py +2 -3
- edc_randomization/decorators.py +1 -1
- edc_randomization/migrations/0001_initial.py +3 -2
- edc_randomization/migrations/0002_historicalrandomizationlist.py +3 -2
- edc_randomization/migrations/0009_edcpermissions.py +3 -2
- edc_randomization/migrations/0014_alter_edcpermissions_device_created_and_more.py +141 -0
- edc_randomization/model_mixins.py +9 -9
- edc_randomization/utils.py +2 -2
- edc_refusal/migrations/0001_initial.py +4 -4
- edc_refusal/migrations/0002_historicalsubjectrefusal.py +4 -4
- edc_refusal/migrations/0012_alter_historicalsubjectrefusal_comment_and_more.py +122 -0
- edc_refusal/migrations/0013_alter_historicalsubjectrefusal_report_datetime_and_more.py +28 -0
- edc_refusal/model_mixins.py +3 -3
- edc_registration/migrations/0002_auto_20161127_2226.py +3 -4
- edc_registration/migrations/0005_auto_20170111_1809.py +4 -2
- edc_registration/migrations/0016_historicalregisteredsubject.py +3 -2
- edc_registration/migrations/0017_auto_20190305_0123.py +5 -12
- edc_registration/migrations/0033_alter_historicalregisteredsubject_additional_key_and_more.py +302 -0
- edc_registration/model_mixins/updates_or_creates_registered_subject_model_mixin.py +2 -3
- edc_registration/models/registered_subject.py +27 -26
- edc_reportable/age_evaluator.py +4 -2
- edc_reportable/formula.py +5 -5
- edc_reportable/migrations/0001_initial.py +7 -7
- edc_reportable/migrations/0003_referencerangecollection_grade1_and_more.py +3 -3
- edc_reportable/migrations/0004_alter_referencerangecollection_grade3_and_more.py +5 -5
- edc_reportable/migrations/0006_alter_gradingdata_revision_and_more.py +5 -6
- edc_reportable/migrations/0007_alter_gradingdata_age_phrase_and_more.py +509 -0
- edc_reportable/models/normal_data.py +4 -5
- edc_reportable/models/reference_model_mixins.py +10 -11
- edc_reportable/models/reference_range_collection.py +12 -13
- edc_reportable/post_migrate_signals.py +1 -1
- edc_reportable/utils/convert_units.py +11 -45
- edc_reportable/utils/get_normal_data_or_raise.py +2 -2
- edc_reportable/utils/load_data.py +4 -4
- edc_reportable/utils/update_grading_data.py +5 -5
- edc_review_dashboard/migrations/0001_initial.py +3 -2
- edc_review_dashboard/migrations/0006_alter_edcpermissions_device_created_and_more.py +49 -0
- edc_screening/age_evaluator.py +3 -3
- edc_screening/migrations/0001_initial.py +3 -2
- edc_screening/migrations/0005_alter_edcpermissions_device_created_and_more.py +49 -0
- edc_screening/model_mixins/eligibility_model_mixin.py +3 -4
- edc_screening/model_mixins/screening_fields_model_mixin.py +6 -8
- edc_search/model_mixins.py +2 -3
- edc_search/search_slug.py +9 -8
- edc_search/updater.py +2 -2
- edc_sites/migrations/0007_edcpermissions.py +3 -2
- edc_sites/migrations/0010_alter_edcpermissions_device_created_and_more.py +69 -0
- edc_sites/model_mixins/site_model_mixin.py +2 -2
- edc_sites/site.py +5 -5
- edc_sites/system_checks.py +1 -1
- edc_subject_dashboard/migrations/0001_initial.py +3 -2
- edc_subject_dashboard/migrations/0005_alter_edcpermissions_device_created_and_more.py +49 -0
- edc_subject_dashboard/requisition_report.py +6 -4
- edc_subject_dashboard/requisition_verifier.py +6 -6
- edc_subject_dashboard/templatetags/edc_subject_dashboard_extras.py +2 -2
- edc_subject_dashboard/view_mixins/subject_visit_view_mixin.py +7 -8
- edc_subject_dashboard/view_utils/subject_consent_listboard_button.py +3 -2
- edc_subject_dashboard/view_utils/timepoint_status_button.py +2 -2
- edc_timepoint/model_mixins.py +22 -20
- edc_transfer/model_mixins.py +4 -4
- edc_transfer/modeladmin_mixins.py +1 -1
- edc_unblinding/migrations/0001_initial.py +13 -13
- edc_unblinding/migrations/0014_alter_historicalunblindingrequest_action_identifier_and_more.py +291 -0
- edc_unblinding/migrations/0015_alter_historicalunblindingrequest_report_datetime_and_more.py +45 -0
- edc_unblinding/models/unblinding_request.py +2 -2
- edc_unblinding/models/unblinding_review.py +3 -3
- edc_utils/age.py +10 -16
- edc_visit_schedule/migrations/0001_initial.py +3 -3
- edc_visit_schedule/migrations/0002_auto_20190305_0123.py +3 -6
- edc_visit_schedule/migrations/0003_historicalvisitschedule_visitschedule.py +5 -4
- edc_visit_schedule/migrations/0015_historicalonschedule_offschedule_onschedule.py +10 -10
- edc_visit_schedule/migrations/0019_alter_historicalonschedule_device_created_and_more.py +229 -0
- edc_visit_schedule/migrations/0020_alter_historicalonschedule_onschedule_datetime_and_more.py +65 -0
- edc_visit_schedule/model_mixins/off_schedule_model_mixin.py +5 -4
- edc_visit_schedule/model_mixins/on_schedule_model_mixin.py +5 -4
- edc_visit_schedule/model_mixins/visit_schedule/visit_code_fields_model_mixin.py +1 -1
- edc_visit_schedule/models/subject_schedule_history.py +6 -6
- edc_visit_schedule/schedule/visit_collection.py +1 -1
- edc_visit_schedule/subject_schedule.py +5 -4
- edc_visit_schedule/view_mixins.py +2 -3
- edc_visit_schedule/visit/visit.py +3 -2
- edc_visit_tracking/migrations/0004_subjectvisit_subjectvisitmissedreasons_extra_value_and_more.py +13 -13
- edc_visit_tracking/migrations/0009_alter_historicalsubjectvisit_comments_and_more.py +450 -0
- edc_visit_tracking/migrations/0010_alter_historicalsubjectvisit_report_datetime_and_more.py +68 -0
- edc_visit_tracking/model_mixins/base/visit_methods_model_mixin.py +3 -3
- edc_visit_tracking/model_mixins/crfs/visit_tracking_crf_model_mixin.py +2 -2
- edc_visit_tracking/model_mixins/requisitions/visit_tracking_requisition_model_mixin.py +2 -2
- edc_visit_tracking/model_mixins/subject_visit_missed_model_mixin.py +2 -2
- edc_visit_tracking/model_mixins/visit_model_mixin/caretaker_fields_mixin.py +2 -3
- edc_visit_tracking/model_mixins/visit_model_mixin/previous_visit_model_mixin.py +1 -1
- edc_visit_tracking/model_mixins/visit_model_mixin/visit_model_fields_mixin.py +8 -11
- edc_visit_tracking/model_mixins/visit_model_mixin/visit_model_mixin.py +1 -1
- edc_visit_tracking/models/signals.py +1 -1
- edc_visit_tracking/models/subject_visit.py +1 -1
- edc_vitals/calculators/bmi.py +7 -5
- edc_vitals/utils.py +1 -1
- {clinicedc-2.0.6.dist-info → clinicedc-2.0.7.dist-info}/WHEEL +0 -0
- {clinicedc-2.0.6.dist-info → clinicedc-2.0.7.dist-info}/licenses/LICENSE +0 -0
|
@@ -7,6 +7,7 @@ import django_audit_fields.fields.uuid_auto_field
|
|
|
7
7
|
import django_audit_fields.models.audit_model_mixin
|
|
8
8
|
import django_revision.revision_field
|
|
9
9
|
from django.db import migrations, models
|
|
10
|
+
import django.utils.timezone
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
class Migration(migrations.Migration):
|
|
@@ -33,14 +34,14 @@ class Migration(migrations.Migration):
|
|
|
33
34
|
"created",
|
|
34
35
|
models.DateTimeField(
|
|
35
36
|
blank=True,
|
|
36
|
-
default=
|
|
37
|
+
default=django.utils.timezone.now,
|
|
37
38
|
),
|
|
38
39
|
),
|
|
39
40
|
(
|
|
40
41
|
"modified",
|
|
41
42
|
models.DateTimeField(
|
|
42
43
|
blank=True,
|
|
43
|
-
default=
|
|
44
|
+
default=django.utils.timezone.now,
|
|
44
45
|
),
|
|
45
46
|
),
|
|
46
47
|
(
|
|
@@ -154,14 +155,14 @@ class Migration(migrations.Migration):
|
|
|
154
155
|
"created",
|
|
155
156
|
models.DateTimeField(
|
|
156
157
|
blank=True,
|
|
157
|
-
default=
|
|
158
|
+
default=django.utils.timezone.now,
|
|
158
159
|
),
|
|
159
160
|
),
|
|
160
161
|
(
|
|
161
162
|
"modified",
|
|
162
163
|
models.DateTimeField(
|
|
163
164
|
blank=True,
|
|
164
|
-
default=
|
|
165
|
+
default=django.utils.timezone.now,
|
|
165
166
|
),
|
|
166
167
|
),
|
|
167
168
|
(
|
|
@@ -7,6 +7,7 @@ import django_audit_fields.fields.uuid_auto_field
|
|
|
7
7
|
import django_audit_fields.models.audit_model_mixin
|
|
8
8
|
import django_revision.revision_field
|
|
9
9
|
from django.db import migrations, models
|
|
10
|
+
import django.utils.timezone
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
class Migration(migrations.Migration):
|
|
@@ -31,14 +32,14 @@ class Migration(migrations.Migration):
|
|
|
31
32
|
"created",
|
|
32
33
|
models.DateTimeField(
|
|
33
34
|
blank=True,
|
|
34
|
-
default=
|
|
35
|
+
default=django.utils.timezone.now,
|
|
35
36
|
),
|
|
36
37
|
),
|
|
37
38
|
(
|
|
38
39
|
"modified",
|
|
39
40
|
models.DateTimeField(
|
|
40
41
|
blank=True,
|
|
41
|
-
default=
|
|
42
|
+
default=django.utils.timezone.now,
|
|
42
43
|
),
|
|
43
44
|
),
|
|
44
45
|
(
|
|
@@ -7,6 +7,7 @@ import django_audit_fields.fields.uuid_auto_field
|
|
|
7
7
|
import django_audit_fields.models.audit_model_mixin
|
|
8
8
|
import django_revision.revision_field
|
|
9
9
|
from django.db import migrations, models
|
|
10
|
+
import django.utils.timezone
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
class Migration(migrations.Migration):
|
|
@@ -36,14 +37,14 @@ class Migration(migrations.Migration):
|
|
|
36
37
|
"created",
|
|
37
38
|
models.DateTimeField(
|
|
38
39
|
blank=True,
|
|
39
|
-
default=
|
|
40
|
+
default=django.utils.timezone.now,
|
|
40
41
|
),
|
|
41
42
|
),
|
|
42
43
|
(
|
|
43
44
|
"modified",
|
|
44
45
|
models.DateTimeField(
|
|
45
46
|
blank=True,
|
|
46
|
-
default=
|
|
47
|
+
default=django.utils.timezone.now,
|
|
47
48
|
),
|
|
48
49
|
),
|
|
49
50
|
(
|
|
@@ -7,6 +7,7 @@ import django_audit_fields.fields.uuid_auto_field
|
|
|
7
7
|
import django_audit_fields.models.audit_model_mixin
|
|
8
8
|
import django_revision.revision_field
|
|
9
9
|
from django.db import migrations, models
|
|
10
|
+
import django.utils.timezone
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
class Migration(migrations.Migration):
|
|
@@ -33,14 +34,14 @@ class Migration(migrations.Migration):
|
|
|
33
34
|
"created",
|
|
34
35
|
models.DateTimeField(
|
|
35
36
|
blank=True,
|
|
36
|
-
default=
|
|
37
|
+
default=django.utils.timezone.now,
|
|
37
38
|
),
|
|
38
39
|
),
|
|
39
40
|
(
|
|
40
41
|
"modified",
|
|
41
42
|
models.DateTimeField(
|
|
42
43
|
blank=True,
|
|
43
|
-
default=
|
|
44
|
+
default=django.utils.timezone.now,
|
|
44
45
|
),
|
|
45
46
|
),
|
|
46
47
|
(
|
|
@@ -0,0 +1,285 @@
|
|
|
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
|
+
("edc_adverse_event", "0015_alter_aeactionclassification_revision_and_more"),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AlterField(
|
|
14
|
+
model_name="aeactionclassification",
|
|
15
|
+
name="device_created",
|
|
16
|
+
field=models.CharField(
|
|
17
|
+
blank=True, default="", max_length=10, verbose_name="Device created"
|
|
18
|
+
),
|
|
19
|
+
),
|
|
20
|
+
migrations.AlterField(
|
|
21
|
+
model_name="aeactionclassification",
|
|
22
|
+
name="device_modified",
|
|
23
|
+
field=models.CharField(
|
|
24
|
+
blank=True, default="", max_length=10, verbose_name="Device modified"
|
|
25
|
+
),
|
|
26
|
+
),
|
|
27
|
+
migrations.AlterField(
|
|
28
|
+
model_name="aeactionclassification",
|
|
29
|
+
name="extra_value",
|
|
30
|
+
field=models.CharField(default="", max_length=250),
|
|
31
|
+
),
|
|
32
|
+
migrations.AlterField(
|
|
33
|
+
model_name="aeactionclassification",
|
|
34
|
+
name="field_name",
|
|
35
|
+
field=models.CharField(
|
|
36
|
+
blank=True,
|
|
37
|
+
default="",
|
|
38
|
+
editable=False,
|
|
39
|
+
help_text="Not required",
|
|
40
|
+
max_length=25,
|
|
41
|
+
),
|
|
42
|
+
),
|
|
43
|
+
migrations.AlterField(
|
|
44
|
+
model_name="aeactionclassification",
|
|
45
|
+
name="locale_created",
|
|
46
|
+
field=models.CharField(
|
|
47
|
+
blank=True,
|
|
48
|
+
default="",
|
|
49
|
+
help_text="Auto-updated by Modeladmin",
|
|
50
|
+
max_length=10,
|
|
51
|
+
verbose_name="Locale created",
|
|
52
|
+
),
|
|
53
|
+
),
|
|
54
|
+
migrations.AlterField(
|
|
55
|
+
model_name="aeactionclassification",
|
|
56
|
+
name="locale_modified",
|
|
57
|
+
field=models.CharField(
|
|
58
|
+
blank=True,
|
|
59
|
+
default="",
|
|
60
|
+
help_text="Auto-updated by Modeladmin",
|
|
61
|
+
max_length=10,
|
|
62
|
+
verbose_name="Locale modified",
|
|
63
|
+
),
|
|
64
|
+
),
|
|
65
|
+
migrations.AlterField(
|
|
66
|
+
model_name="aeactionclassification",
|
|
67
|
+
name="plural_name",
|
|
68
|
+
field=models.CharField(
|
|
69
|
+
default="", max_length=250, verbose_name="Plural name"
|
|
70
|
+
),
|
|
71
|
+
),
|
|
72
|
+
migrations.AlterField(
|
|
73
|
+
model_name="aeclassification",
|
|
74
|
+
name="device_created",
|
|
75
|
+
field=models.CharField(
|
|
76
|
+
blank=True, default="", max_length=10, verbose_name="Device created"
|
|
77
|
+
),
|
|
78
|
+
),
|
|
79
|
+
migrations.AlterField(
|
|
80
|
+
model_name="aeclassification",
|
|
81
|
+
name="device_modified",
|
|
82
|
+
field=models.CharField(
|
|
83
|
+
blank=True, default="", max_length=10, verbose_name="Device modified"
|
|
84
|
+
),
|
|
85
|
+
),
|
|
86
|
+
migrations.AlterField(
|
|
87
|
+
model_name="aeclassification",
|
|
88
|
+
name="extra_value",
|
|
89
|
+
field=models.CharField(default="", max_length=250),
|
|
90
|
+
),
|
|
91
|
+
migrations.AlterField(
|
|
92
|
+
model_name="aeclassification",
|
|
93
|
+
name="field_name",
|
|
94
|
+
field=models.CharField(
|
|
95
|
+
blank=True,
|
|
96
|
+
default="",
|
|
97
|
+
editable=False,
|
|
98
|
+
help_text="Not required",
|
|
99
|
+
max_length=25,
|
|
100
|
+
),
|
|
101
|
+
),
|
|
102
|
+
migrations.AlterField(
|
|
103
|
+
model_name="aeclassification",
|
|
104
|
+
name="locale_created",
|
|
105
|
+
field=models.CharField(
|
|
106
|
+
blank=True,
|
|
107
|
+
default="",
|
|
108
|
+
help_text="Auto-updated by Modeladmin",
|
|
109
|
+
max_length=10,
|
|
110
|
+
verbose_name="Locale created",
|
|
111
|
+
),
|
|
112
|
+
),
|
|
113
|
+
migrations.AlterField(
|
|
114
|
+
model_name="aeclassification",
|
|
115
|
+
name="locale_modified",
|
|
116
|
+
field=models.CharField(
|
|
117
|
+
blank=True,
|
|
118
|
+
default="",
|
|
119
|
+
help_text="Auto-updated by Modeladmin",
|
|
120
|
+
max_length=10,
|
|
121
|
+
verbose_name="Locale modified",
|
|
122
|
+
),
|
|
123
|
+
),
|
|
124
|
+
migrations.AlterField(
|
|
125
|
+
model_name="aeclassification",
|
|
126
|
+
name="plural_name",
|
|
127
|
+
field=models.CharField(
|
|
128
|
+
default="", max_length=250, verbose_name="Plural name"
|
|
129
|
+
),
|
|
130
|
+
),
|
|
131
|
+
migrations.AlterField(
|
|
132
|
+
model_name="causeofdeath",
|
|
133
|
+
name="device_created",
|
|
134
|
+
field=models.CharField(
|
|
135
|
+
blank=True, default="", max_length=10, verbose_name="Device created"
|
|
136
|
+
),
|
|
137
|
+
),
|
|
138
|
+
migrations.AlterField(
|
|
139
|
+
model_name="causeofdeath",
|
|
140
|
+
name="device_modified",
|
|
141
|
+
field=models.CharField(
|
|
142
|
+
blank=True, default="", max_length=10, verbose_name="Device modified"
|
|
143
|
+
),
|
|
144
|
+
),
|
|
145
|
+
migrations.AlterField(
|
|
146
|
+
model_name="causeofdeath",
|
|
147
|
+
name="extra_value",
|
|
148
|
+
field=models.CharField(default="", max_length=250),
|
|
149
|
+
),
|
|
150
|
+
migrations.AlterField(
|
|
151
|
+
model_name="causeofdeath",
|
|
152
|
+
name="field_name",
|
|
153
|
+
field=models.CharField(
|
|
154
|
+
blank=True,
|
|
155
|
+
default="",
|
|
156
|
+
editable=False,
|
|
157
|
+
help_text="Not required",
|
|
158
|
+
max_length=25,
|
|
159
|
+
),
|
|
160
|
+
),
|
|
161
|
+
migrations.AlterField(
|
|
162
|
+
model_name="causeofdeath",
|
|
163
|
+
name="locale_created",
|
|
164
|
+
field=models.CharField(
|
|
165
|
+
blank=True,
|
|
166
|
+
default="",
|
|
167
|
+
help_text="Auto-updated by Modeladmin",
|
|
168
|
+
max_length=10,
|
|
169
|
+
verbose_name="Locale created",
|
|
170
|
+
),
|
|
171
|
+
),
|
|
172
|
+
migrations.AlterField(
|
|
173
|
+
model_name="causeofdeath",
|
|
174
|
+
name="locale_modified",
|
|
175
|
+
field=models.CharField(
|
|
176
|
+
blank=True,
|
|
177
|
+
default="",
|
|
178
|
+
help_text="Auto-updated by Modeladmin",
|
|
179
|
+
max_length=10,
|
|
180
|
+
verbose_name="Locale modified",
|
|
181
|
+
),
|
|
182
|
+
),
|
|
183
|
+
migrations.AlterField(
|
|
184
|
+
model_name="causeofdeath",
|
|
185
|
+
name="plural_name",
|
|
186
|
+
field=models.CharField(
|
|
187
|
+
default="", max_length=250, verbose_name="Plural name"
|
|
188
|
+
),
|
|
189
|
+
),
|
|
190
|
+
migrations.AlterField(
|
|
191
|
+
model_name="edcpermissions",
|
|
192
|
+
name="device_created",
|
|
193
|
+
field=models.CharField(
|
|
194
|
+
blank=True, default="", max_length=10, verbose_name="Device created"
|
|
195
|
+
),
|
|
196
|
+
),
|
|
197
|
+
migrations.AlterField(
|
|
198
|
+
model_name="edcpermissions",
|
|
199
|
+
name="device_modified",
|
|
200
|
+
field=models.CharField(
|
|
201
|
+
blank=True, default="", max_length=10, verbose_name="Device modified"
|
|
202
|
+
),
|
|
203
|
+
),
|
|
204
|
+
migrations.AlterField(
|
|
205
|
+
model_name="edcpermissions",
|
|
206
|
+
name="locale_created",
|
|
207
|
+
field=models.CharField(
|
|
208
|
+
blank=True,
|
|
209
|
+
default="",
|
|
210
|
+
help_text="Auto-updated by Modeladmin",
|
|
211
|
+
max_length=10,
|
|
212
|
+
verbose_name="Locale created",
|
|
213
|
+
),
|
|
214
|
+
),
|
|
215
|
+
migrations.AlterField(
|
|
216
|
+
model_name="edcpermissions",
|
|
217
|
+
name="locale_modified",
|
|
218
|
+
field=models.CharField(
|
|
219
|
+
blank=True,
|
|
220
|
+
default="",
|
|
221
|
+
help_text="Auto-updated by Modeladmin",
|
|
222
|
+
max_length=10,
|
|
223
|
+
verbose_name="Locale modified",
|
|
224
|
+
),
|
|
225
|
+
),
|
|
226
|
+
migrations.AlterField(
|
|
227
|
+
model_name="saereason",
|
|
228
|
+
name="device_created",
|
|
229
|
+
field=models.CharField(
|
|
230
|
+
blank=True, default="", max_length=10, verbose_name="Device created"
|
|
231
|
+
),
|
|
232
|
+
),
|
|
233
|
+
migrations.AlterField(
|
|
234
|
+
model_name="saereason",
|
|
235
|
+
name="device_modified",
|
|
236
|
+
field=models.CharField(
|
|
237
|
+
blank=True, default="", max_length=10, verbose_name="Device modified"
|
|
238
|
+
),
|
|
239
|
+
),
|
|
240
|
+
migrations.AlterField(
|
|
241
|
+
model_name="saereason",
|
|
242
|
+
name="extra_value",
|
|
243
|
+
field=models.CharField(default="", max_length=250),
|
|
244
|
+
),
|
|
245
|
+
migrations.AlterField(
|
|
246
|
+
model_name="saereason",
|
|
247
|
+
name="field_name",
|
|
248
|
+
field=models.CharField(
|
|
249
|
+
blank=True,
|
|
250
|
+
default="",
|
|
251
|
+
editable=False,
|
|
252
|
+
help_text="Not required",
|
|
253
|
+
max_length=25,
|
|
254
|
+
),
|
|
255
|
+
),
|
|
256
|
+
migrations.AlterField(
|
|
257
|
+
model_name="saereason",
|
|
258
|
+
name="locale_created",
|
|
259
|
+
field=models.CharField(
|
|
260
|
+
blank=True,
|
|
261
|
+
default="",
|
|
262
|
+
help_text="Auto-updated by Modeladmin",
|
|
263
|
+
max_length=10,
|
|
264
|
+
verbose_name="Locale created",
|
|
265
|
+
),
|
|
266
|
+
),
|
|
267
|
+
migrations.AlterField(
|
|
268
|
+
model_name="saereason",
|
|
269
|
+
name="locale_modified",
|
|
270
|
+
field=models.CharField(
|
|
271
|
+
blank=True,
|
|
272
|
+
default="",
|
|
273
|
+
help_text="Auto-updated by Modeladmin",
|
|
274
|
+
max_length=10,
|
|
275
|
+
verbose_name="Locale modified",
|
|
276
|
+
),
|
|
277
|
+
),
|
|
278
|
+
migrations.AlterField(
|
|
279
|
+
model_name="saereason",
|
|
280
|
+
name="plural_name",
|
|
281
|
+
field=models.CharField(
|
|
282
|
+
default="", max_length=250, verbose_name="Plural name"
|
|
283
|
+
),
|
|
284
|
+
),
|
|
285
|
+
]
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from django.db import models
|
|
2
|
+
from django.utils import timezone
|
|
2
3
|
|
|
3
4
|
from edc_constants.choices import YES_NO
|
|
4
5
|
from edc_constants.constants import NOT_APPLICABLE, YES
|
|
5
6
|
from edc_model.validators import date_not_future
|
|
6
|
-
from edc_utils import get_utcnow
|
|
7
7
|
|
|
8
8
|
from ...choices import AE_GRADE_SIMPLE, AE_OUTCOME
|
|
9
9
|
from ...utils import get_adverse_event_app_label
|
|
@@ -15,7 +15,7 @@ class AeFollowupFieldsModelMixin(models.Model):
|
|
|
15
15
|
)
|
|
16
16
|
|
|
17
17
|
report_datetime = models.DateTimeField(
|
|
18
|
-
verbose_name="Report date and time", default=
|
|
18
|
+
verbose_name="Report date and time", default=timezone.now
|
|
19
19
|
)
|
|
20
20
|
|
|
21
21
|
outcome = models.CharField(blank=False, null=False, max_length=25, choices=AE_OUTCOME)
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import django.utils.timezone
|
|
1
2
|
from django.db import models
|
|
2
3
|
|
|
3
4
|
from edc_constants.constants import NOT_APPLICABLE
|
|
4
5
|
from edc_model.validators import date_not_future
|
|
5
6
|
from edc_model_fields.fields.other_charfield import OtherCharField
|
|
6
|
-
from edc_utils.date import get_utcnow
|
|
7
7
|
|
|
8
8
|
from ...choices import AE_GRADE, STUDY_DRUG_RELATIONSHIP
|
|
9
9
|
from ...models import AeClassification
|
|
@@ -17,7 +17,7 @@ class AeInitialFieldsModelMixin(models.Model):
|
|
|
17
17
|
)
|
|
18
18
|
|
|
19
19
|
report_datetime = models.DateTimeField(
|
|
20
|
-
verbose_name="Report Date and Time", default=
|
|
20
|
+
verbose_name="Report Date and Time", default=django.utils.timezone.now
|
|
21
21
|
)
|
|
22
22
|
|
|
23
23
|
ae_classification = models.ForeignKey(
|
|
@@ -34,22 +34,23 @@ class AeInitialFieldsModelMixin(models.Model):
|
|
|
34
34
|
|
|
35
35
|
ae_awareness_date = models.DateField(
|
|
36
36
|
verbose_name="AE Awareness date",
|
|
37
|
-
default=
|
|
37
|
+
default=django.utils.timezone.now,
|
|
38
38
|
validators=[date_not_future],
|
|
39
39
|
)
|
|
40
40
|
|
|
41
41
|
ae_start_date = models.DateField(
|
|
42
42
|
verbose_name="Actual Start Date of AE",
|
|
43
|
-
default=
|
|
43
|
+
default=django.utils.timezone.now,
|
|
44
44
|
validators=[date_not_future],
|
|
45
45
|
)
|
|
46
46
|
|
|
47
47
|
ae_grade = models.CharField(verbose_name="Severity of AE", max_length=25, choices=AE_GRADE)
|
|
48
48
|
|
|
49
|
-
study_drug_relation = models.CharField(
|
|
49
|
+
study_drug_relation = models.CharField( # noqa: DJ001
|
|
50
50
|
verbose_name="Relation to study drug:",
|
|
51
51
|
max_length=25,
|
|
52
52
|
choices=STUDY_DRUG_RELATIONSHIP,
|
|
53
|
+
null=True,
|
|
53
54
|
)
|
|
54
55
|
|
|
55
56
|
class Meta:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from django.db import models
|
|
2
|
+
from django.utils import timezone
|
|
2
3
|
|
|
3
4
|
from edc_model.validators import datetime_not_future
|
|
4
|
-
from edc_utils import get_utcnow
|
|
5
5
|
|
|
6
6
|
from ...utils import get_adverse_event_app_label
|
|
7
7
|
|
|
@@ -14,7 +14,7 @@ class AesiFieldsModelMixin(models.Model):
|
|
|
14
14
|
report_datetime = models.DateTimeField(
|
|
15
15
|
verbose_name="Report date and time",
|
|
16
16
|
validators=[datetime_not_future],
|
|
17
|
-
default=
|
|
17
|
+
default=timezone.now,
|
|
18
18
|
)
|
|
19
19
|
|
|
20
20
|
submitted_datetime = models.DateTimeField(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from django.db import models
|
|
2
|
+
from django.utils import timezone
|
|
2
3
|
|
|
3
4
|
from edc_model.validators import datetime_not_future
|
|
4
|
-
from edc_utils import get_utcnow
|
|
5
5
|
|
|
6
6
|
from ...utils import get_adverse_event_app_label
|
|
7
7
|
|
|
@@ -14,7 +14,7 @@ class AeSusarFieldsModelMixin(models.Model):
|
|
|
14
14
|
report_datetime = models.DateTimeField(
|
|
15
15
|
verbose_name="Report date and time",
|
|
16
16
|
validators=[datetime_not_future],
|
|
17
|
-
default=
|
|
17
|
+
default=timezone.now,
|
|
18
18
|
)
|
|
19
19
|
|
|
20
20
|
submitted_datetime = models.DateTimeField(
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
from django.db import models
|
|
2
|
+
from django.utils import timezone
|
|
2
3
|
|
|
3
4
|
from edc_constants.choices import YES_NO, YES_NO_NA
|
|
4
5
|
from edc_constants.constants import NOT_APPLICABLE
|
|
5
6
|
from edc_model.validators import datetime_not_future
|
|
6
7
|
from edc_model_fields.fields import OtherCharField
|
|
7
|
-
from edc_utils import get_utcnow
|
|
8
8
|
|
|
9
9
|
from ...models import AeClassification
|
|
10
10
|
from ...utils import get_adverse_event_app_label
|
|
@@ -24,7 +24,7 @@ class AeTmgFieldsModelMixin(models.Model):
|
|
|
24
24
|
report_datetime = models.DateTimeField(
|
|
25
25
|
verbose_name="Report date and time",
|
|
26
26
|
validators=[datetime_not_future],
|
|
27
|
-
default=
|
|
27
|
+
default=timezone.now,
|
|
28
28
|
)
|
|
29
29
|
|
|
30
30
|
ae_received_datetime = models.DateTimeField(
|
|
@@ -41,25 +41,31 @@ class AeTmgFieldsModelMixin(models.Model):
|
|
|
41
41
|
verbose_name="Date and time of clinical review: ",
|
|
42
42
|
)
|
|
43
43
|
|
|
44
|
-
ae_description = models.TextField(
|
|
44
|
+
ae_description = models.TextField(
|
|
45
|
+
verbose_name="Description of AE:",
|
|
46
|
+
default="",
|
|
47
|
+
blank=True,
|
|
48
|
+
)
|
|
45
49
|
|
|
46
50
|
investigator_comments = models.TextField(
|
|
47
|
-
|
|
51
|
+
verbose_name="This investigator's comments:",
|
|
52
|
+
default="",
|
|
53
|
+
blank=True,
|
|
48
54
|
)
|
|
49
55
|
|
|
50
|
-
ae_classification = models.CharField(max_length=150, blank=True)
|
|
56
|
+
ae_classification = models.CharField(max_length=150, blank=True, default="")
|
|
51
57
|
|
|
52
|
-
ae_classification_other = OtherCharField(max_length=250, blank=True,
|
|
58
|
+
ae_classification_other = OtherCharField(max_length=250, blank=True, default="")
|
|
53
59
|
|
|
54
60
|
original_report_agreed = models.CharField(
|
|
55
61
|
verbose_name="Does this investigator agree with the original AE report?",
|
|
56
62
|
max_length=15,
|
|
57
63
|
choices=YES_NO,
|
|
58
|
-
|
|
64
|
+
default="",
|
|
59
65
|
help_text="If No, explain in the narrative below",
|
|
60
66
|
)
|
|
61
67
|
|
|
62
|
-
investigator_narrative = models.TextField(verbose_name="Narrative", blank=True)
|
|
68
|
+
investigator_narrative = models.TextField(verbose_name="Narrative", blank=True, default="")
|
|
63
69
|
|
|
64
70
|
investigator_ae_classification_agreed = models.CharField(
|
|
65
71
|
verbose_name=(
|
|
@@ -68,7 +74,6 @@ class AeTmgFieldsModelMixin(models.Model):
|
|
|
68
74
|
),
|
|
69
75
|
max_length=15,
|
|
70
76
|
choices=YES_NO_NA,
|
|
71
|
-
blank=False,
|
|
72
77
|
default=NOT_APPLICABLE,
|
|
73
78
|
help_text="If No, select a classification below",
|
|
74
79
|
)
|
|
@@ -78,14 +83,13 @@ class AeTmgFieldsModelMixin(models.Model):
|
|
|
78
83
|
on_delete=models.PROTECT,
|
|
79
84
|
verbose_name="Adverse Event (AE) Classification",
|
|
80
85
|
null=True,
|
|
81
|
-
blank=False,
|
|
82
86
|
help_text=(
|
|
83
87
|
"Only applicable if this investigator does not agree with the original AE report"
|
|
84
88
|
),
|
|
85
89
|
)
|
|
86
90
|
|
|
87
91
|
investigator_ae_classification_other = OtherCharField(
|
|
88
|
-
max_length=250, blank=True,
|
|
92
|
+
max_length=250, blank=True, default=""
|
|
89
93
|
)
|
|
90
94
|
|
|
91
95
|
officials_notified = models.DateTimeField(
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from django.core.validators import MinValueValidator
|
|
2
2
|
from django.db import models
|
|
3
3
|
from django.db.models.deletion import PROTECT
|
|
4
|
+
from django.utils import timezone
|
|
4
5
|
|
|
5
6
|
from edc_action_item.managers import (
|
|
6
7
|
ActionIdentifierModelManager,
|
|
@@ -18,7 +19,6 @@ from edc_protocol.validators import (
|
|
|
18
19
|
datetime_not_before_study_start,
|
|
19
20
|
)
|
|
20
21
|
from edc_sites.model_mixins import SiteModelMixin
|
|
21
|
-
from edc_utils import get_utcnow
|
|
22
22
|
|
|
23
23
|
from ...constants import DEATH_REPORT_ACTION
|
|
24
24
|
from ...models import CauseOfDeath
|
|
@@ -41,7 +41,7 @@ class DeathReportModelMixin(
|
|
|
41
41
|
report_datetime = models.DateTimeField(
|
|
42
42
|
verbose_name="Report Date",
|
|
43
43
|
validators=[datetime_not_before_study_start, datetime_not_future],
|
|
44
|
-
default=
|
|
44
|
+
default=timezone.now,
|
|
45
45
|
)
|
|
46
46
|
|
|
47
47
|
death_datetime = models.DateTimeField(
|
|
@@ -70,6 +70,7 @@ class DeathReportModelMixin(
|
|
|
70
70
|
max_length=5,
|
|
71
71
|
verbose_name="Death as inpatient",
|
|
72
72
|
blank=False,
|
|
73
|
+
default="",
|
|
73
74
|
)
|
|
74
75
|
|
|
75
76
|
cause_of_death = models.ForeignKey(
|
|
@@ -83,9 +84,9 @@ class DeathReportModelMixin(
|
|
|
83
84
|
blank=False,
|
|
84
85
|
)
|
|
85
86
|
|
|
86
|
-
cause_of_death_other = OtherCharField(max_length=100, blank=True,
|
|
87
|
+
cause_of_death_other = OtherCharField(max_length=100, blank=True, default="")
|
|
87
88
|
|
|
88
|
-
narrative = models.TextField(verbose_name="Narrative",
|
|
89
|
+
narrative = models.TextField(verbose_name="Narrative", default="")
|
|
89
90
|
|
|
90
91
|
objects = ActionIdentifierModelManager()
|
|
91
92
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from django.db import models
|
|
2
2
|
from django.db.models.deletion import PROTECT
|
|
3
|
+
from django.utils import timezone
|
|
3
4
|
|
|
4
5
|
from edc_action_item.managers import (
|
|
5
6
|
ActionIdentifierModelManager,
|
|
@@ -12,7 +13,6 @@ from edc_model.models import ReportStatusModelMixin
|
|
|
12
13
|
from edc_model.validators import datetime_not_future
|
|
13
14
|
from edc_protocol.validators import datetime_not_before_study_start
|
|
14
15
|
from edc_sites.model_mixins import SiteModelMixin
|
|
15
|
-
from edc_utils import get_utcnow
|
|
16
16
|
|
|
17
17
|
from ...constants import DEATH_REPORT_TMG_ACTION, DEATH_REPORT_TMG_SECOND_ACTION
|
|
18
18
|
from ...models import CauseOfDeath
|
|
@@ -51,7 +51,7 @@ class DeathReportTmgFieldsModelMixin(models.Model):
|
|
|
51
51
|
report_datetime = models.DateTimeField(
|
|
52
52
|
verbose_name="Report Date",
|
|
53
53
|
validators=[datetime_not_before_study_start, datetime_not_future],
|
|
54
|
-
default=
|
|
54
|
+
default=timezone.now,
|
|
55
55
|
)
|
|
56
56
|
|
|
57
57
|
cause_of_death = models.ForeignKey(
|
|
@@ -62,22 +62,25 @@ class DeathReportTmgFieldsModelMixin(models.Model):
|
|
|
62
62
|
"Main cause of death in the opinion of the local study doctor and local PI"
|
|
63
63
|
),
|
|
64
64
|
null=True,
|
|
65
|
+
default="",
|
|
65
66
|
)
|
|
66
67
|
|
|
67
68
|
cause_of_death_other = models.CharField(
|
|
68
69
|
verbose_name='If "Other" above, please specify',
|
|
69
70
|
max_length=100,
|
|
70
71
|
blank=True,
|
|
72
|
+
default="",
|
|
71
73
|
)
|
|
72
74
|
|
|
73
75
|
cause_of_death_agreed = models.CharField(
|
|
74
76
|
verbose_name="Is the cause of death agreed between study doctor and TMG member?",
|
|
75
77
|
max_length=15,
|
|
76
78
|
choices=YES_NO,
|
|
79
|
+
default="",
|
|
77
80
|
help_text="If No, explain in the narrative below",
|
|
78
81
|
)
|
|
79
82
|
|
|
80
|
-
narrative = models.TextField(verbose_name="Narrative", blank=True)
|
|
83
|
+
narrative = models.TextField(verbose_name="Narrative", blank=True, default="")
|
|
81
84
|
|
|
82
85
|
class Meta:
|
|
83
86
|
abstract = True
|