meta-edc 0.3.39__py3-none-any.whl → 1.4.0__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.
- meta_ae/action_items.py +38 -27
- meta_ae/admin/__init__.py +11 -0
- meta_ae/admin/ae_initial_admin.py +5 -2
- meta_ae/admin/ae_susar_admin.py +1 -1
- meta_ae/admin/death_report_admin.py +1 -1
- meta_ae/admin/modeladmin_mixins.py +14 -15
- meta_ae/baker_recipes.py +4 -6
- meta_ae/choices.py +1 -1
- meta_ae/forms/__init__.py +13 -0
- meta_ae/forms/death_report_form.py +1 -1
- meta_ae/forms/modelform_mixins.py +2 -2
- meta_ae/list_data.py +1 -1
- meta_ae/migrations/0001_initial.py +27 -27
- meta_ae/migrations/0006_aelocalreview_aesponsorreview.py +5 -5
- meta_ae/migrations/0017_auto_20221130_2257.py +1 -1
- meta_ae/migrations/0022_historicalhospitalization_hospitalization.py +5 -13
- meta_ae/migrations/0023_alter_aefollowup_action_identifier_and_more.py +2017 -0
- meta_ae/model_mixins/__init__.py +2 -0
- meta_ae/model_mixins/ae_review_model_mixin.py +6 -6
- meta_ae/model_mixins/death_report_model_mixin.py +3 -3
- meta_ae/models/__init__.py +13 -0
- meta_ae/models/hospitalization.py +3 -3
- meta_ae/pdf_reports/__init__.py +2 -0
- meta_ae/templatetags/meta_ae_extras.py +4 -6
- meta_analytics/.DS_Store +0 -0
- meta_analytics/README.rst +1 -2
- meta_analytics/dataframes/__init__.py +27 -0
- meta_analytics/dataframes/constants.py +5 -2
- meta_analytics/dataframes/get_eos_df.py +16 -4
- meta_analytics/dataframes/get_glucose_df.py +166 -0
- meta_analytics/dataframes/get_glucose_fbg_df.py +26 -0
- meta_analytics/dataframes/get_glucose_fbg_ogtt_df.py +21 -0
- meta_analytics/dataframes/get_last_imp_visits_df.py +12 -10
- meta_analytics/dataframes/glucose_endpoints/__init__.py +2 -0
- meta_analytics/dataframes/glucose_endpoints/endpoint_by_date.py +125 -124
- meta_analytics/dataframes/glucose_endpoints/glucose_endpoints_by_date.py +111 -235
- meta_analytics/dataframes/screening/__init__.py +2 -0
- meta_analytics/dataframes/screening/get_glucose_tested_only_df.py +1 -2
- meta_analytics/dataframes/screening/get_screening_df.py +9 -15
- meta_analytics/dataframes/utils.py +21 -12
- meta_analytics/get_tables.py +1 -2
- meta_analytics/tables/__init__.py +2 -0
- meta_analytics/tables/enrolled/glucose.py +2 -1
- meta_analytics/utils.py +81 -0
- meta_auth/auths.py +1 -1
- meta_consent/action_items.py +22 -3
- meta_consent/admin/__init__.py +7 -0
- meta_consent/admin/actions/__init__.py +2 -0
- meta_consent/admin/actions/create_missing_prescriptions.py +2 -2
- meta_consent/admin/list_filters.py +22 -0
- meta_consent/admin/modeladmin_mixins.py +4 -5
- meta_consent/admin/subject_consent_v1_ext_admin.py +93 -0
- meta_consent/baker_recipes.py +7 -7
- meta_consent/consents.py +15 -2
- meta_consent/constants.py +1 -0
- meta_consent/form_validators/__init__.py +2 -0
- meta_consent/forms/__init__.py +8 -0
- meta_consent/forms/subject_consent_v1_ext_form.py +47 -0
- meta_consent/forms/subject_reconsent_form.py +4 -4
- meta_consent/management/commands/create_missing_prescriptions.py +5 -3
- meta_consent/migrations/0001_initial.py +9 -9
- meta_consent/migrations/0024_historicalsubjectconsentv1.py +3 -8
- meta_consent/migrations/0026_historicalsubjectconsentv1ext_subjectconsentv1ext.py +535 -0
- meta_consent/migrations/0027_auto_20250111_0344.py +30 -0
- meta_consent/migrations/0028_historicalsubjectconsentv1ext_assessment_score_and_more.py +162 -0
- meta_consent/migrations/0029_alter_historicalsubjectconsentv1ext_agrees_to_extension_and_more.py +33 -0
- meta_consent/migrations/0030_auto_20250120_2114.py +40 -0
- meta_consent/migrations/0031_alter_historicalsubjectconsent_guardian_name_and_more.py +124 -0
- meta_consent/migrations/0032_alter_historicalsubjectconsent_device_created_and_more.py +678 -0
- meta_consent/migrations/0033_historicalsubjectconsentspfq_subjectconsentspfq.py +615 -0
- meta_consent/migrations/0034_remove_subjectconsentspfq_site_and_more.py +23 -0
- meta_consent/migrations/0035_alter_historicalsubjectconsent_consent_definition_name_and_more.py +43 -0
- meta_consent/models/__init__.py +10 -0
- meta_consent/models/model_mixins.py +1 -2
- meta_consent/models/signals.py +25 -11
- meta_consent/models/subject_consent.py +2 -2
- meta_consent/models/subject_consent_v1.py +0 -1
- meta_consent/models/subject_consent_v1_ext.py +34 -0
- meta_consent/models/subject_reconsent.py +4 -4
- meta_dashboard/navbars.py +2 -6
- meta_dashboard/patterns.py +1 -1
- meta_dashboard/templates/meta_dashboard/{bootstrap3/buttons → buttons}/eligibility_button.html +1 -1
- meta_dashboard/templates/meta_dashboard/{bootstrap3/buttons → buttons}/screening_button.html +1 -1
- meta_dashboard/templates/meta_dashboard/subject/dashboard/sidebar.html +24 -0
- meta_dashboard/templates/meta_dashboard/{bootstrap3/subject → subject}/dashboard/top_bar.html +1 -1
- meta_dashboard/templates/meta_dashboard/subject/dashboard.html +14 -0
- meta_dashboard/templatetags/meta_dashboard_extras.py +9 -14
- meta_dashboard/urls.py +5 -5
- meta_dashboard/view_utils/__init__.py +13 -0
- meta_dashboard/view_utils/subject_screening_button.py +13 -20
- meta_dashboard/views/__init__.py +8 -0
- meta_dashboard/views/ae/__init__.py +2 -0
- meta_dashboard/views/ae/ae_listboard_view.py +1 -1
- meta_dashboard/views/ae/death_report_listboard_view.py +1 -1
- meta_dashboard/views/screening/__init__.py +2 -0
- meta_dashboard/views/screening/listboard_view.py +2 -3
- meta_dashboard/views/subject/__init__.py +2 -0
- meta_dashboard/views/subject/dashboard/__init__.py +2 -0
- meta_dashboard/views/subject/dashboard/dashboard_view.py +19 -8
- meta_dashboard/views/subject/listboard/__init__.py +2 -0
- meta_dashboard/views/subject/listboard/listboard_view.py +2 -3
- meta_edc/__init__.py +5 -9
- meta_edc/admin.py +3 -4
- meta_edc/celery.py +2 -2
- meta_edc/celery_live.py +19 -0
- meta_edc/celery_uat.py +25 -0
- meta_edc/management/commands/update_forms_reference.py +16 -14
- meta_edc/meta_version.py +2 -2
- meta_edc/navbars.py +7 -5
- meta_edc/settings/debug.py +13 -4
- meta_edc/settings/defaults.py +55 -18
- meta_edc/settings/live.py +4 -1
- meta_edc/settings/logging.py +9 -4
- meta_edc/settings/minimal.py +4 -5
- meta_edc/settings/uat.py +3 -1
- meta_edc/templates/meta_edc/{bootstrap3/base.html → base.html} +1 -1
- meta_edc/templates/meta_edc/{bootstrap3/home.html → home.html} +2 -2
- meta_edc/urls.py +3 -1
- meta_edc/utils.py +3 -1
- meta_edc/views/__init__.py +2 -0
- meta_edc/views/home_view.py +1 -2
- meta_edc-1.4.0.dist-info/METADATA +174 -0
- {meta_edc-0.3.39.dist-info → meta_edc-1.4.0.dist-info}/RECORD +578 -586
- meta_edc-1.4.0.dist-info/WHEEL +4 -0
- meta_labs/list_data.py +2 -2
- meta_labs/reportables.py +80 -11
- meta_lists/list_data.py +13 -4
- meta_lists/migrations/0008_auto_20200528_1517.py +2 -2
- meta_lists/migrations/0019_auto_20250128_0143.py +48 -0
- meta_lists/migrations/0020_alter_abnormalfootappearanceobservations_extra_value_and_more.py +404 -0
- meta_pharmacy/admin/__init__.py +5 -0
- meta_pharmacy/admin/rx_admin.py +1 -0
- meta_pharmacy/admin/substitutions_admin.py +3 -3
- meta_pharmacy/constants.py +1 -1
- meta_pharmacy/forms/__init__.py +2 -0
- meta_pharmacy/forms/rx_form.py +0 -1
- meta_pharmacy/forms/substitutions_form.py +6 -4
- meta_pharmacy/labels/__init__.py +5 -2
- meta_pharmacy/labels/draw_label_for_subject_with_barcode.py +4 -1
- meta_pharmacy/labels/draw_label_with_test_data.py +2 -2
- meta_pharmacy/labels/label_data.py +1 -2
- meta_pharmacy/labels/print_sheets.py +4 -6
- meta_pharmacy/management/commands/update_initial_pharmacy_data.py +4 -3
- meta_pharmacy/migrations/0002_initial.py +7 -20
- meta_pharmacy/migrations/0003_auto_20240909_2335.py +3 -2
- meta_pharmacy/migrations/0006_lotnumber_label.py +5 -14
- meta_pharmacy/migrations/0008_remove_lotnumber_medication_and_more.py +5 -6
- meta_pharmacy/migrations/0010_alter_historicallabeldata_device_created_and_more.py +382 -0
- meta_pharmacy/models/__init__.py +7 -0
- meta_pharmacy/models/label_data.py +4 -5
- meta_pharmacy/models/rx_label.py +0 -1
- meta_pharmacy/models/substitutions.py +4 -4
- meta_pharmacy/prepare_meta_pharmacy.py +1 -1
- meta_pharmacy/utils/__init__.py +2 -0
- meta_pharmacy/utils/update_initial_pharmacy_data.py +1 -1
- meta_prn/action_items.py +44 -45
- meta_prn/admin/__init__.py +16 -0
- meta_prn/admin/dm_referral_admin.py +2 -1
- meta_prn/admin/end_of_study_admin.py +26 -15
- meta_prn/admin/loss_to_followup_admin.py +3 -2
- meta_prn/admin/off_study_medication_admin.py +5 -6
- meta_prn/admin/offschedule_admin.py +12 -11
- meta_prn/admin/offschedule_dm_referral_admin.py +11 -10
- meta_prn/admin/offschedule_postnatal_admin.py +15 -7
- meta_prn/admin/offschedule_pregnancy_admin.py +18 -9
- meta_prn/admin/onschedule_admin.py +7 -8
- meta_prn/admin/onschedule_dm_referral_admin.py +11 -12
- meta_prn/admin/pregnancy_notification_admin.py +5 -6
- meta_prn/admin/protocol_incident_admin.py +1 -1
- meta_prn/admin/subject_transfer_admin.py +1 -1
- meta_prn/baker_recipes.py +10 -10
- meta_prn/choices.py +11 -7
- meta_prn/constants.py +1 -0
- meta_prn/form_validators/__init__.py +5 -0
- meta_prn/form_validators/end_of_study.py +65 -20
- meta_prn/form_validators/protocol_incident.py +1 -1
- meta_prn/forms/__init__.py +13 -0
- meta_prn/forms/dm_referral_form.py +2 -8
- meta_prn/forms/end_of_study_form.py +1 -1
- meta_prn/forms/loss_to_followup_form.py +1 -1
- meta_prn/forms/off_study_medication_form.py +2 -2
- meta_prn/forms/offschedule_form.py +25 -0
- meta_prn/forms/pregnancy_notification_form.py +15 -17
- meta_prn/list_data.py +3 -3
- meta_prn/migrations/0001_initial.py +25 -25
- meta_prn/migrations/0017_auto_20220307_1929.py +5 -5
- meta_prn/migrations/0018_auto_20220309_2106.py +9 -9
- meta_prn/migrations/0021_auto_20220316_2147.py +13 -13
- meta_prn/migrations/0022_auto_20220318_0133.py +9 -9
- meta_prn/migrations/0032_historicalegfrnotification_egfrnotification.py +5 -13
- meta_prn/migrations/0034_auto_20220630_1110.py +1 -1
- meta_prn/migrations/0035_auto_20220630_1140.py +1 -1
- meta_prn/migrations/0038_alter_endofstudy_delivery_date_and_more.py +5 -13
- meta_prn/migrations/0041_endofstudy_transfer_date_and_more.py +5 -13
- meta_prn/migrations/0057_historicalonscheduledmreferral_and_more.py +13 -38
- meta_prn/migrations/0060_alter_onschedule_managers_and_more.py +55 -0
- meta_prn/migrations/0061_auto_20250115_2025.py +56 -0
- meta_prn/migrations/0062_alter_endofstudy_offstudy_reason_and_more.py +72 -0
- meta_prn/migrations/0063_historicaloffstudymedication_singleton_field_and_more.py +37 -0
- meta_prn/migrations/0064_auto_20250602_2143.py +18 -0
- meta_prn/migrations/0065_alter_historicaloffstudymedication_subject_identifier_and_more.py +23 -0
- meta_prn/migrations/0066_alter_historicallosstofollowup_subject_identifier_and_more.py +23 -0
- meta_prn/migrations/0067_alter_offschedule_managers_and_more.py +2557 -0
- meta_prn/migrations/0068_alter_dmreferral_referral_note_and_more.py +235 -0
- meta_prn/migrations/0069_alter_historicaloffstudymedication_singleton_field_and_more.py +37 -0
- meta_prn/models/__init__.py +20 -0
- meta_prn/models/dm_referral.py +2 -2
- meta_prn/models/end_of_study.py +28 -23
- meta_prn/models/loss_to_followup.py +8 -10
- meta_prn/models/off_study_medication.py +7 -4
- meta_prn/models/offschedule.py +4 -4
- meta_prn/models/pregnancy_notification.py +3 -5
- meta_prn/models/protocol_incident.py +5 -2
- meta_prn/models/signals.py +16 -14
- meta_prn/models/subject_transfer.py +7 -0
- meta_prn/templates/meta_prn/eos/additional_instructions.html +3 -0
- meta_prn/templates/meta_prn/offschedule/additional_instructions.html +2 -0
- meta_rando/migrations/0001_initial.py +5 -5
- meta_rando/migrations/0006_alter_historicalrandomizationlist_allocated_user_and_more.py +130 -0
- meta_rando/migrations/0007_spfqlist.py +197 -0
- meta_rando/migrations/0008_delete_spfqlist.py +16 -0
- meta_rando/models/__init__.py +1 -0
- meta_rando/{models.py → models/randomization_list.py} +3 -3
- meta_rando/randomizers.py +2 -2
- meta_reports/__init__.py +2 -0
- meta_reports/admin/__init__.py +16 -0
- meta_reports/admin/dbviews/__init__.py +13 -0
- meta_reports/admin/dbviews/glucose_summary_admin.py +7 -7
- meta_reports/admin/dbviews/imp_substitutions_admin.py +14 -13
- meta_reports/admin/dbviews/missing_screening_ogtt_admin/__init__.py +5 -0
- meta_reports/admin/dbviews/missing_screening_ogtt_admin/note_model_admin.py +27 -3
- meta_reports/admin/dbviews/missing_screening_ogtt_admin/unmanaged_model_admin.py +7 -7
- meta_reports/admin/dbviews/on_study_missing_lab_values_admin/__init__.py +2 -0
- meta_reports/admin/dbviews/on_study_missing_lab_values_admin/unmanaged_model_admin.py +0 -3
- meta_reports/admin/dbviews/on_study_missing_values_admin/__init__.py +2 -0
- meta_reports/admin/dbviews/on_study_missing_values_admin/unmanaged_model_admin.py +0 -1
- meta_reports/admin/dbviews/patient_history_missing_baseline_cd4_admin.py +9 -9
- meta_reports/admin/dbviews/unattended_three_in_row2_admin.py +6 -6
- meta_reports/admin/dbviews/unattended_three_in_row_admin.py +5 -5
- meta_reports/admin/dbviews/unattended_two_in_row_admin.py +5 -5
- meta_reports/admin/endpoints_admin.py +1 -1
- meta_reports/admin/endpoints_all_admin.py +0 -1
- meta_reports/admin/last_imp_refill_admin.py +33 -36
- meta_reports/admin/list_filters.py +3 -3
- meta_reports/admin/modeladmin_mixins.py +10 -17
- meta_reports/death_report.py +2 -2
- meta_reports/forms/__init__.py +2 -0
- meta_reports/forms/missing_ogtt_note_form.py +3 -4
- meta_reports/management/commands/generate_endpoints.py +5 -4
- meta_reports/migrations/0035_historicalmissingogttnote_missingogttnote.py +5 -14
- meta_reports/migrations/0054_auto_20250422_2003.py +81 -0
- meta_reports/migrations/0055_alter_glucosesummary_table.py +17 -0
- meta_reports/migrations/0056_auto_20250422_2214.py +54 -0
- meta_reports/migrations/0057_auto_20250422_2224.py +54 -0
- meta_reports/migrations/0058_auto_20250422_2232.py +54 -0
- meta_reports/migrations/0059_alter_endpoints_created_and_more.py +161 -0
- meta_reports/migrations/0060_auto_20250926_0242.py +366 -0
- meta_reports/migrations/0061_auto_20251004_0043.py +21 -0
- meta_reports/migrations/0062_auto_20251004_0106.py +21 -0
- meta_reports/models/__init__.py +17 -0
- meta_reports/models/dbviews/__init__.py +14 -0
- meta_reports/models/dbviews/glucose_summary/__init__.py +2 -0
- meta_reports/models/dbviews/glucose_summary/unmanaged_model.py +15 -3
- meta_reports/models/dbviews/glucose_summary/view_definition.py +8 -5
- meta_reports/models/dbviews/imp_substitutions/__init__.py +2 -0
- meta_reports/models/dbviews/imp_substitutions/unmanaged_model.py +1 -2
- meta_reports/models/dbviews/imp_substitutions/view_definition.py +1 -1
- meta_reports/models/dbviews/missing_screening_ogtt/__init__.py +2 -0
- meta_reports/models/dbviews/missing_screening_ogtt/note_model.py +2 -2
- meta_reports/models/dbviews/missing_screening_ogtt/unmanaged_model.py +4 -3
- meta_reports/models/dbviews/on_study_missing_lab_values/__init__.py +2 -0
- meta_reports/models/dbviews/on_study_missing_lab_values/qa_cases.py +13 -11
- meta_reports/models/dbviews/on_study_missing_lab_values/unmanged_model.py +0 -1
- meta_reports/models/dbviews/on_study_missing_values/__init__.py +2 -0
- meta_reports/models/dbviews/on_study_missing_values/qa_cases.py +19 -1
- meta_reports/models/dbviews/on_study_missing_values/unmanged_model.py +0 -1
- meta_reports/models/dbviews/patient_history_missing_baseline_cd4/__init__.py +2 -0
- meta_reports/models/dbviews/patient_history_missing_baseline_cd4/unmanaged_model.py +0 -1
- meta_reports/models/dbviews/unattended_three_in_row/__init__.py +2 -0
- meta_reports/models/dbviews/unattended_three_in_row/unmanaged_model.py +0 -1
- meta_reports/models/dbviews/unattended_three_in_row2/__init__.py +2 -0
- meta_reports/models/dbviews/unattended_three_in_row2/unmanaged_model.py +0 -1
- meta_reports/models/dbviews/unattended_two_in_row/__init__.py +2 -0
- meta_reports/models/dbviews/unattended_two_in_row/unmanaged_model.py +0 -1
- meta_reports/models/endpoints.py +8 -4
- meta_reports/models/last_imp_refill.py +2 -3
- meta_reports/pdf_report.py +2 -2
- meta_reports/tasks.py +4 -3
- meta_reports/templates/meta_reports/columns/subject_identifier_column.html +1 -1
- meta_reports/templates/meta_reports/endpoints_all_change_list_note.html +1 -1
- meta_reports/templates/meta_reports/endpoints_change_list_note.html +1 -1
- meta_reports/templates/meta_reports/last_imp_refill/changelist_note.html +13 -0
- meta_screening/admin/__init__.py +8 -0
- meta_screening/admin/fieldsets.py +13 -15
- meta_screening/admin/list_filters.py +7 -5
- meta_screening/admin/screening_part_one_admin.py +1 -3
- meta_screening/admin/screening_part_three_admin.py +2 -3
- meta_screening/admin/screening_part_two_admin.py +7 -10
- meta_screening/admin/subject_refusal_admin.py +5 -3
- meta_screening/admin/subject_screening_admin.py +21 -10
- meta_screening/baker_recipes.py +18 -10
- meta_screening/calculators.py +1 -1
- meta_screening/choices.py +1 -1
- meta_screening/constants.py +1 -1
- meta_screening/eligibility/__init__.py +9 -0
- meta_screening/eligibility/eligibility.py +21 -14
- meta_screening/eligibility/eligibility_part_one.py +1 -1
- meta_screening/eligibility/eligibility_part_three/__init__.py +2 -0
- meta_screening/eligibility/eligibility_part_three/base_eligibility_part_three.py +68 -49
- meta_screening/eligibility/eligibility_part_three/eligibility_part_three_phase_three.py +14 -15
- meta_screening/eligibility/eligibility_part_two.py +1 -1
- meta_screening/form_validators/__init__.py +8 -0
- meta_screening/form_validators/screening_part_one.py +1 -1
- meta_screening/form_validators/screening_part_three.py +6 -2
- meta_screening/form_validators/screening_part_two.py +1 -1
- meta_screening/form_validators/subject_refusal.py +1 -1
- meta_screening/forms/__init__.py +20 -0
- meta_screening/forms/field_lists.py +16 -18
- meta_screening/forms/screening_part_one_form.py +2 -2
- meta_screening/forms/screening_part_three_form.py +5 -3
- meta_screening/forms/screening_part_two_form.py +1 -5
- meta_screening/forms/subject_refusal_form.py +0 -4
- meta_screening/forms/subject_screening_form.py +0 -4
- meta_screening/migrations/0001_initial.py +15 -15
- meta_screening/migrations/0010_auto_20191106_0828.py +5 -5
- meta_screening/migrations/0012_auto_20191107_0427.py +1 -1
- meta_screening/migrations/0068_alter_historicalscreeningpartone_acute_condition_and_more.py +1579 -0
- meta_screening/model_mixins/__init__.py +8 -0
- meta_screening/model_mixins/calculated_model_mixin.py +2 -2
- meta_screening/model_mixins/creatinine_fields_model_mixin.py +1 -1
- meta_screening/model_mixins/eligibility_model_mixin.py +6 -4
- meta_screening/model_mixins/part_one_fields_model_mixin.py +16 -19
- meta_screening/model_mixins/part_three_fields_model_mixin.py +6 -7
- meta_screening/model_mixins/part_two_fields_model_mixin.py +19 -17
- meta_screening/models/__init__.py +9 -0
- meta_screening/models/icp_referral.py +5 -5
- meta_screening/models/proxy_models.py +1 -1
- meta_screening/models/signals.py +10 -11
- meta_screening/models/subject_refusal.py +1 -1
- meta_screening/models/subject_screening.py +2 -4
- meta_subject/action_items.py +18 -14
- meta_subject/admin/__init__.py +42 -0
- meta_subject/admin/birth_outcome_admin.py +7 -9
- meta_subject/admin/blood_results/__init__.py +9 -0
- meta_subject/admin/blood_results/blood_results_fbc_admin.py +1 -1
- meta_subject/admin/blood_results/blood_results_hba1c_admin.py +1 -1
- meta_subject/admin/blood_results/blood_results_ins_admin.py +1 -1
- meta_subject/admin/blood_results/blood_results_lft_admin.py +1 -1
- meta_subject/admin/blood_results/blood_results_lipids_admin.py +1 -1
- meta_subject/admin/blood_results/blood_results_rft_admin.py +3 -5
- meta_subject/admin/complications_glycemia_admin.py +1 -1
- meta_subject/admin/delivery_admin.py +8 -11
- meta_subject/admin/diabetes/__init__.py +2 -0
- meta_subject/admin/diabetes/dm_endpoint_admin.py +2 -2
- meta_subject/admin/diabetes/dm_followup_admin.py +3 -2
- meta_subject/admin/egfr_drop_notification_admin.py +1 -1
- meta_subject/admin/fields.py +5 -5
- meta_subject/admin/fieldsets.py +5 -5
- meta_subject/admin/followup_examination_admin.py +11 -9
- meta_subject/admin/followup_vitals_admin.py +31 -6
- meta_subject/admin/glucose_admin.py +4 -8
- meta_subject/admin/glucose_fbg_admin.py +18 -11
- meta_subject/admin/health_economics/__init__.py +2 -0
- meta_subject/admin/health_economics/health_economics_simple_admin.py +1 -1
- meta_subject/admin/health_economics/health_economics_update_admin.py +1 -1
- meta_subject/admin/hepatitis_test_admin.py +1 -1
- meta_subject/admin/hiv_exit_review_admin.py +55 -0
- meta_subject/admin/list_filters.py +5 -5
- meta_subject/admin/mnsi_admin.py +7 -5
- meta_subject/admin/next_appointment_admin.py +19 -0
- meta_subject/admin/other_arv_regimens_admin.py +3 -3
- meta_subject/admin/patient_history_admin.py +4 -4
- meta_subject/admin/physical_exam_admin.py +1 -1
- meta_subject/admin/pregnancy_update_admin.py +1 -1
- meta_subject/admin/study_medication_admin.py +8 -15
- meta_subject/admin/subject_requisition_admin.py +2 -2
- meta_subject/admin/subject_visit_admin.py +1 -1
- meta_subject/admin/subject_visit_missed_admin.py +1 -1
- meta_subject/admin/urine_dipstick_test_admin.py +1 -1
- meta_subject/admin/urine_pregnancy_admin.py +1 -1
- meta_subject/baker_recipes.py +15 -15
- meta_subject/choices.py +4 -3
- meta_subject/form_validators/__init__.py +15 -0
- meta_subject/form_validators/delivery_form_validator.py +3 -3
- meta_subject/form_validators/dm_endpoint_form_validator.py +3 -1
- meta_subject/form_validators/dm_followup_form_validator.py +8 -7
- meta_subject/form_validators/egfr_drop_notification_form_validator.py +1 -1
- meta_subject/form_validators/followup_examination_form_validator.py +1 -1
- meta_subject/form_validators/glucose_fbg_form_validator.py +76 -0
- meta_subject/form_validators/glucose_form_validator.py +10 -67
- meta_subject/form_validators/hiv_exit_review_form_validator.py +18 -0
- meta_subject/form_validators/mixins.py +95 -0
- meta_subject/forms/__init__.py +44 -0
- meta_subject/forms/blood_results/__init__.py +9 -0
- meta_subject/forms/blood_results/blood_results_hba1c_form.py +1 -1
- meta_subject/forms/blood_results/blood_results_rft_form.py +60 -4
- meta_subject/forms/delivery_form.py +2 -0
- meta_subject/forms/diabetes/__init__.py +2 -0
- meta_subject/forms/diabetes/dm_followup_form.py +2 -2
- meta_subject/forms/followup_vitals_form.py +27 -1
- meta_subject/forms/glucose_fbg_form.py +1 -46
- meta_subject/forms/health_economics/__init__.py +2 -0
- meta_subject/forms/hepatitis_test_form.py +1 -1
- meta_subject/forms/hiv_exit_review_form.py +13 -0
- meta_subject/forms/mixins.py +1 -1
- meta_subject/forms/next_appointment_form.py +36 -0
- meta_subject/forms/other_arv_regimens_form.py +1 -1
- meta_subject/forms/patient_history_form.py +1 -1
- meta_subject/forms/physical_exam_form.py +1 -1
- meta_subject/forms/pregnancy_update_form.py +1 -1
- meta_subject/forms/slider_widget.py +1 -1
- meta_subject/forms/study_medication_form.py +18 -12
- meta_subject/forms/subject_requisition_form.py +1 -1
- meta_subject/forms/subject_visit_missed_form.py +1 -1
- meta_subject/forms/urine_dipstick_test_form.py +1 -1
- meta_subject/forms/urine_pregnancy_form.py +1 -1
- meta_subject/management/commands/create_missing_refills.py +3 -3
- meta_subject/management/commands/create_missing_rx.py +2 -2
- meta_subject/management/commands/missed.py +20 -23
- meta_subject/metadata_rules/__init__.py +2 -0
- meta_subject/metadata_rules/metadata_rules.py +14 -0
- meta_subject/metadata_rules/predicates.py +44 -25
- meta_subject/migrations/0001_initial.py +61 -61
- meta_subject/migrations/0002_auto_20191021_0353.py +5 -5
- meta_subject/migrations/0012_auto_20200118_2334.py +5 -5
- meta_subject/migrations/0014_auto_20200120_1622.py +5 -5
- meta_subject/migrations/0018_coronakap_historicalcoronakap.py +5 -5
- meta_subject/migrations/0033_auto_20200516_2356.py +5 -5
- meta_subject/migrations/0038_auto_20200520_0020.py +5 -5
- meta_subject/migrations/0040_auto_20200527_2155.py +1 -1
- meta_subject/migrations/0045_auto_20200530_1801.py +1 -1
- meta_subject/migrations/0051_auto_20200617_2117.py +5 -5
- meta_subject/migrations/0063_auto_20210715_0337.py +5 -5
- meta_subject/migrations/0066_auto_20210721_0335.py +9 -9
- meta_subject/migrations/0067_auto_20210726_0340.py +5 -5
- meta_subject/migrations/0068_auto_20210728_1809.py +5 -5
- meta_subject/migrations/0072_auto_20210805_1545.py +7 -7
- meta_subject/migrations/0073_auto_20210809_0055.py +5 -5
- meta_subject/migrations/0077_auto_20210809_2323.py +3 -3
- meta_subject/migrations/0082_auto_20210823_1612.py +3 -3
- meta_subject/migrations/0083_auto_20210823_1620.py +3 -3
- meta_subject/migrations/0088_auto_20210924_0027.py +5 -5
- meta_subject/migrations/0090_auto_20210924_0424.py +5 -5
- meta_subject/migrations/0093_auto_20211117_0352.py +5 -5
- meta_subject/migrations/0095_auto_20220128_1719.py +5 -5
- meta_subject/migrations/0098_auto_20220309_2106.py +5 -5
- meta_subject/migrations/0101_auto_20220316_2147.py +13 -13
- meta_subject/migrations/0107_auto_20220415_0043.py +1 -1
- meta_subject/migrations/0115_historicalegfrnotification_egfrnotification.py +5 -13
- meta_subject/migrations/0128_auto_20220720_0055.py +1 -1
- meta_subject/migrations/0131_auto_20220722_0411.py +1 -1
- meta_subject/migrations/0135_auto_20220722_2212.py +2 -1
- meta_subject/migrations/0164_dmreferralfollowup_historicaldmreferralfollowup.py +5 -5
- meta_subject/migrations/0172_remove_historicalbloodresultsglu_action_item_and_more.py +1 -2
- meta_subject/migrations/0177_alter_bloodresultslft_alp_value_and_more.py +1 -2
- meta_subject/migrations/0178_historicalhealtheconomicsupdate_and_more.py +5 -14
- meta_subject/migrations/0186_healtheconomicsupdate_singleton_field_and_more.py +1 -2
- meta_subject/migrations/0187_dmdiagnosis_historicaldmdiagnosis_dmdxresult_and_more.py +5 -14
- meta_subject/migrations/0188_historicaldmdxresult_dmdxresult.py +5 -14
- meta_subject/migrations/0199_auto_20240516_0247.py +1 -1
- meta_subject/migrations/0209_remove_historicaldmdxresult_dm_diagnosis_and_more.py +1 -2
- meta_subject/migrations/0212_auto_20240827_2222.py +1 -1
- meta_subject/migrations/0216_historicalnextappointment_nextappointment.py +553 -0
- meta_subject/migrations/0217_alter_historicalnextappointment_appt_datetime_and_more.py +42 -0
- meta_subject/migrations/0218_alter_historicalnextappointment_appt_date_and_more.py +53 -0
- meta_subject/migrations/0219_remove_historicalnextappointment_allow_create_interim_and_more.py +92 -0
- meta_subject/migrations/0220_historicalbloodresultsgludummy_bloodresultsgludummy.py +825 -0
- meta_subject/migrations/0221_auto_20250402_1913.py +42 -0
- meta_subject/migrations/0222_alter_historicalstudymedication_stock_codes_and_more.py +46 -0
- meta_subject/migrations/0223_bloodresultsfbc_errors_bloodresultsgludummy_errors_and_more.py +83 -0
- meta_subject/migrations/0224_bloodresultsfbc_abnormal_summary_and_more.py +153 -0
- meta_subject/migrations/0225_followupvitals_waist_circumference_and_more.py +46 -0
- meta_subject/migrations/0226_followupvitals_waist_circumference_comment_and_more.py +97 -0
- meta_subject/migrations/0227_alter_followupvitals_waist_circumference_comment_and_more.py +97 -0
- meta_subject/migrations/0228_bloodresultshba1c_hba1c_datetime_and_more.py +2518 -0
- meta_subject/migrations/0229_alter_glucosefbg_consent_model_and_more.py +1918 -0
- meta_subject/migrations/0230_alter_historicaldelivery_action_identifier_and_more.py +1733 -0
- meta_subject/migrations/0231_alter_historicalmedicationadherence_consent_model_and_more.py +2054 -0
- meta_subject/migrations/0232_alter_patienthistory_concomitant_conditions_and_more.py +1170 -0
- meta_subject/migrations/0233_historicalspfq_spfq.py +1066 -0
- meta_subject/migrations/0234_remove_spfq_site_remove_spfq_subject_visit_and_more.py +27 -0
- meta_subject/migrations/0235_glucosefbg_endpoint_today_and_more.py +606 -0
- meta_subject/migrations/0236_alter_historicalhivexitreview_other_current_arv_regimen_and_more.py +58 -0
- meta_subject/migrations/0237_historicalhivexitreview_singleton_field_and_more.py +68 -0
- meta_subject/migrations/0238_historicalhivexitreview_available_and_more.py +88 -0
- meta_subject/model_mixins/__init__.py +10 -0
- meta_subject/model_mixins/arv_history_model_mixin.py +3 -44
- meta_subject/model_mixins/arv_review_model_mixin.py +53 -0
- meta_subject/model_mixins/search_slug_model_mixin.py +1 -2
- meta_subject/model_mixins/vitals_fields_model_mixin.py +33 -0
- meta_subject/models/__init__.py +52 -0
- meta_subject/models/birth_outcomes.py +3 -3
- meta_subject/models/blood_results/__init__.py +11 -0
- meta_subject/models/blood_results/blood_results_glu.py +29 -0
- meta_subject/models/blood_results/blood_results_hba1c.py +0 -1
- meta_subject/models/blood_results/blood_results_ins.py +0 -1
- meta_subject/models/blood_results/blood_results_lft.py +0 -1
- meta_subject/models/delivery.py +4 -6
- meta_subject/models/diabetes/__init__.py +2 -0
- meta_subject/models/diabetes/dm_endpoint.py +5 -5
- meta_subject/models/diabetes/dm_followup.py +7 -8
- meta_subject/models/diet_and_lifestyle.py +2 -2
- meta_subject/models/followup_examination.py +12 -14
- meta_subject/models/glucose.py +5 -5
- meta_subject/models/glucose_fbg.py +17 -4
- meta_subject/models/health_economics/__init__.py +2 -0
- meta_subject/models/health_economics/health_economics.py +8 -8
- meta_subject/models/health_economics/health_economics_simple.py +2 -2
- meta_subject/models/health_economics/health_economics_update.py +3 -2
- meta_subject/models/hepatitis_test.py +2 -2
- meta_subject/models/hiv_exit_review.py +44 -0
- meta_subject/models/next_appointment.py +15 -0
- meta_subject/models/other_arv_regimens_detail.py +1 -1
- meta_subject/models/patient_history.py +6 -7
- meta_subject/models/physical_exam.py +2 -2
- meta_subject/models/pregnancy_update.py +1 -1
- meta_subject/models/signals.py +15 -13
- meta_subject/models/subject_visit.py +2 -2
- meta_subject/models/todo.txt +1 -1
- meta_subject/models/urine_dipstick_test.py +2 -2
- meta_subject/models/urine_pregnancy.py +1 -1
- meta_subject/static/meta_subject/slider.css +1 -1
- meta_subject/templates/meta_subject/endpoint_review_instructions.html +1 -1
- meta_subject/templates/meta_subject/widgets/slider.html +0 -1
- meta_visit_schedule/visit_schedules/__init__.py +2 -0
- meta_visit_schedule/visit_schedules/phase_three/__init__.py +2 -0
- meta_visit_schedule/visit_schedules/phase_three/crfs.py +34 -1
- meta_visit_schedule/visit_schedules/phase_three/schedule.py +4 -4
- meta_visit_schedule/visit_schedules/phase_three/schedule_dm_referral.py +1 -2
- meta_visit_schedule/visit_schedules/phase_three/schedule_pregnancy.py +2 -3
- meta_ae/tests/holidays.csv +0 -15
- meta_ae/tests/tests/test_actions.py +0 -127
- meta_ae/tests/urls.py +0 -10
- meta_analytics/dataframes/enrolled/__init__.py +0 -1
- meta_analytics/dataframes/enrolled/get_glucose_df.py +0 -122
- meta_analytics/tests/__init__.py +0 -0
- meta_analytics/tests/test_endpoints_by_date.py +0 -94
- meta_consent/tests/__init__.py +0 -0
- meta_consent/tests/holidays.csv +0 -15
- meta_consent/tests/tests/__init__.py +0 -0
- meta_consent/tests/tests/test_form_validators.py +0 -110
- meta_consent/tests/tests/test_subject_consent.py +0 -10
- meta_consent/tests/urls.py +0 -17
- meta_dashboard/templates/meta_dashboard/bootstrap3/subject/dashboard.html +0 -11
- meta_dashboard/tests/__init__.py +0 -0
- meta_dashboard/tests/admin.py +0 -22
- meta_dashboard/tests/holidays.csv +0 -15
- meta_dashboard/tests/tests/__init__.py +0 -0
- meta_dashboard/tests/urls.py +0 -55
- meta_edc/tests/__init__.py +0 -0
- meta_edc/tests/tests/__init__.py +0 -0
- meta_edc/tests/tests/test_endpoints.py +0 -554
- meta_edc-0.3.39.dist-info/AUTHORS +0 -0
- meta_edc-0.3.39.dist-info/METADATA +0 -766
- meta_edc-0.3.39.dist-info/WHEEL +0 -5
- meta_edc-0.3.39.dist-info/top_level.txt +0 -20
- meta_labs/tests/__init__.py +0 -0
- meta_labs/tests/test_labs.py +0 -27
- meta_labs/tests/test_reportables.py +0 -16
- meta_labs/tests/urls.py +0 -4
- meta_lists/tests/__init__.py +0 -0
- meta_lists/tests/test_lists.py +0 -8
- meta_pharmacy/admin/actions.py +0 -38
- meta_prn/tests/__init__.py +0 -0
- meta_prn/tests/tests/__init__.py +0 -0
- meta_prn/tests/tests/test_actions.py +0 -97
- meta_prn/tests/tests/test_dm_referral.py +0 -206
- meta_prn/tests/tests/test_manager_order.py +0 -14
- meta_prn/tests/tests/test_pregnancy_notification.py +0 -93
- meta_prn/tests/urls.py +0 -10
- meta_rando/tests/__init__.py +0 -0
- meta_rando/tests/tests/__init__.py +0 -0
- meta_rando/tests/tests/test_randomizers.py +0 -57
- meta_reports/tests/__init__.py +0 -0
- meta_reports/tests/test_reports.py +0 -35
- meta_reports/tests/test_sql_gen.py +0 -5
- meta_reports/tests/urls.py +0 -4
- meta_screening/offline_models.py +0 -3
- meta_screening/tests/__init__.py +0 -0
- meta_screening/tests/holidays.csv +0 -15
- meta_screening/tests/meta_test_case_mixin.py +0 -216
- meta_screening/tests/options.py +0 -127
- meta_screening/tests/tests/__init__.py +0 -0
- meta_screening/tests/tests/test_forms.py +0 -397
- meta_screening/tests/tests/test_screening_part_one.py +0 -108
- meta_screening/tests/tests/test_screening_part_three.py +0 -436
- meta_screening/tests/tests/test_screening_part_two.py +0 -84
- meta_sites/tests/__init__.py +0 -0
- meta_sites/tests/test_sites.py +0 -12
- meta_sites/tests/urls.py +0 -4
- meta_stats/__init__.py +0 -0
- meta_stats/incidence.py +0 -16
- meta_stats/models.py +0 -0
- meta_stats/tests/__init__.py +0 -0
- meta_stats/tests/tests/__init__.py +0 -0
- meta_stats/tests/tests/test_incidence.py +0 -10
- meta_subject/tests/__init__.py +0 -0
- meta_subject/tests/holidays.csv +0 -15
- meta_subject/tests/tests/__init__.py +0 -0
- meta_subject/tests/tests/test_egfr.py +0 -234
- meta_subject/tests/tests/test_fixes.py +0 -64
- meta_subject/tests/tests/test_followup.py +0 -52
- meta_subject/tests/tests/test_manager_order.py +0 -11
- meta_subject/tests/tests/test_medication_adherence.py +0 -75
- meta_subject/tests/tests/test_metadata_rules.py +0 -135
- meta_subject/tests/tests/test_mnsi.py +0 -317
- meta_subject/tests/tests/test_patient_history_form.py +0 -74
- meta_subject/tests/tests/test_physical_exam.py +0 -84
- meta_subject/tests/tests/test_sf12.py +0 -173
- meta_subject/tests/tests/test_study_medication.py +0 -230
- meta_subject/tests/urls.py +0 -24
- meta_visit_schedule/tests/__init__.py +0 -0
- meta_visit_schedule/tests/tests/__init__.py +0 -0
- meta_visit_schedule/tests/tests/test_schedule.py +0 -181
- meta_visit_schedule/tests/urls.py +0 -4
- tests/__init__.py +0 -0
- tests/etc/randomization_list.csv +0 -241
- tests/etc/randomization_list_phase_three.csv +0 -241
- tests/etc/user-aes-local.key +0 -0
- tests/etc/user-aes-restricted.key +0 -1
- tests/etc/user-rsa-local-private.pem +0 -27
- tests/etc/user-rsa-local-public.pem +0 -9
- tests/etc/user-rsa-restricted-private.pem +0 -27
- tests/etc/user-rsa-restricted-public.pem +0 -9
- tests/etc/user-salt-local.key +0 -0
- tests/etc/user-salt-restricted.key +0 -0
- tests/holidays.csv +0 -15
- tests/test_settings.py +0 -186
- /meta_ae/templates/meta_ae/{bootstrap3/ae_initial_description.html → aeinitial_description.html} +0 -0
- /meta_dashboard/templates/meta_dashboard/{bootstrap3/buttons → buttons}/add_consent_button.html +0 -0
- /meta_dashboard/templates/meta_dashboard/{bootstrap3/buttons → buttons}/dashboard_button.html +0 -0
- /meta_dashboard/templates/meta_dashboard/{bootstrap3/buttons → buttons}/refusal_button.html +0 -0
- /meta_dashboard/templates/meta_dashboard/{bootstrap3/screening → screening}/listboard.html +0 -0
- /meta_dashboard/templates/meta_dashboard/{bootstrap3/subject → subject}/listboard.html +0 -0
- {meta_edc-0.3.39.dist-info → meta_edc-1.4.0.dist-info/licenses}/LICENSE +0 -0
- /meta_ae/tests/__init__.py → /meta_subject/management/__init__py.py +0 -0
- /meta_ae/tests/tests/__init__.py → /meta_subject/management/commands/__init__py.py +0 -0
meta_ae/action_items.py
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
|
+
from clinicedc_constants import (
|
|
2
|
+
CLOSED,
|
|
3
|
+
DEAD,
|
|
4
|
+
GRADE3,
|
|
5
|
+
GRADE4,
|
|
6
|
+
GRADE5,
|
|
7
|
+
HIGH_PRIORITY,
|
|
8
|
+
LTFU,
|
|
9
|
+
NO,
|
|
10
|
+
YES,
|
|
11
|
+
)
|
|
1
12
|
from django.apps import apps as django_apps
|
|
2
13
|
from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
|
|
14
|
+
from django.utils.html import format_html
|
|
3
15
|
from django.utils.safestring import mark_safe
|
|
4
|
-
from
|
|
16
|
+
from django.utils.translation import gettext as _
|
|
17
|
+
from edc_action_item.action_with_notification import ActionWithNotification
|
|
18
|
+
from edc_action_item.site_action_items import site_action_items
|
|
5
19
|
from edc_adverse_event.constants import (
|
|
6
20
|
AE_FOLLOWUP_ACTION,
|
|
7
21
|
AE_INITIAL_ACTION,
|
|
@@ -10,7 +24,6 @@ from edc_adverse_event.constants import (
|
|
|
10
24
|
DEATH_REPORT_ACTION,
|
|
11
25
|
DEATH_REPORT_TMG_ACTION,
|
|
12
26
|
)
|
|
13
|
-
from edc_constants.constants import CLOSED, DEAD, HIGH_PRIORITY, NO, YES
|
|
14
27
|
from edc_lab_results.constants import (
|
|
15
28
|
BLOOD_RESULTS_FBC_ACTION,
|
|
16
29
|
BLOOD_RESULTS_GLU_ACTION,
|
|
@@ -18,9 +31,7 @@ from edc_lab_results.constants import (
|
|
|
18
31
|
BLOOD_RESULTS_LIPIDS_ACTION,
|
|
19
32
|
BLOOD_RESULTS_RFT_ACTION,
|
|
20
33
|
)
|
|
21
|
-
from edc_ltfu.constants import LOST_TO_FOLLOWUP
|
|
22
34
|
from edc_notification.utils import get_email_contacts
|
|
23
|
-
from edc_reportable import GRADE3, GRADE4, GRADE5
|
|
24
35
|
from edc_visit_schedule.utils import get_offschedule_models
|
|
25
36
|
|
|
26
37
|
from meta_prn.constants import OFFSTUDY_MEDICATION_ACTION
|
|
@@ -32,22 +43,25 @@ class AeFollowupAction(ActionWithNotification):
|
|
|
32
43
|
name = AE_FOLLOWUP_ACTION
|
|
33
44
|
display_name = "Submit AE Followup Report"
|
|
34
45
|
notification_display_name = "AE Followup Report"
|
|
35
|
-
parent_action_names =
|
|
46
|
+
parent_action_names = (AE_INITIAL_ACTION, AE_FOLLOWUP_ACTION)
|
|
36
47
|
reference_model = "meta_ae.aefollowup"
|
|
37
48
|
related_reference_model = "meta_ae.aeinitial"
|
|
38
49
|
related_reference_fk_attr = "ae_initial"
|
|
39
50
|
create_by_user = False
|
|
40
51
|
show_link_to_changelist = True
|
|
41
52
|
admin_site_name = "meta_ae_admin"
|
|
42
|
-
instructions =
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
53
|
+
instructions = format_html(
|
|
54
|
+
_(
|
|
55
|
+
"Upon submission the TMG group will be notified "
|
|
56
|
+
'by email at <a href="mailto:{email1}">{email2}</a>'
|
|
57
|
+
),
|
|
58
|
+
email1=get_email_contacts("tmg") or "#",
|
|
59
|
+
email2=get_email_contacts("tmg") or "unknown",
|
|
46
60
|
)
|
|
47
61
|
priority = HIGH_PRIORITY
|
|
48
62
|
|
|
49
63
|
def get_next_actions(self):
|
|
50
|
-
next_actions =
|
|
64
|
+
next_actions = ()
|
|
51
65
|
|
|
52
66
|
# add AE followup to next_actions if followup.
|
|
53
67
|
next_actions = self.append_to_next_if_required(
|
|
@@ -66,7 +80,7 @@ class AeFollowupAction(ActionWithNotification):
|
|
|
66
80
|
)
|
|
67
81
|
|
|
68
82
|
# add Study termination to next_actions if LTFU
|
|
69
|
-
if self.reference_obj.outcome ==
|
|
83
|
+
if self.reference_obj.outcome == LTFU:
|
|
70
84
|
for offschedule_model in get_offschedule_models(
|
|
71
85
|
subject_identifier=self.subject_identifier,
|
|
72
86
|
report_datetime=self.reference_obj.report_datetime,
|
|
@@ -84,14 +98,14 @@ class AeInitialAction(ActionWithNotification):
|
|
|
84
98
|
name = AE_INITIAL_ACTION
|
|
85
99
|
display_name = "Submit AE Initial Report"
|
|
86
100
|
notification_display_name = "AE Initial Report"
|
|
87
|
-
parent_action_names =
|
|
101
|
+
parent_action_names = (
|
|
88
102
|
BLOOD_RESULTS_LIPIDS_ACTION,
|
|
89
103
|
BLOOD_RESULTS_GLU_ACTION,
|
|
90
104
|
BLOOD_RESULTS_LFT_ACTION,
|
|
91
105
|
BLOOD_RESULTS_RFT_ACTION,
|
|
92
106
|
BLOOD_RESULTS_FBC_ACTION,
|
|
93
107
|
FOLLOWUP_EXAMINATION_ACTION,
|
|
94
|
-
|
|
108
|
+
)
|
|
95
109
|
reference_model = "meta_ae.aeinitial"
|
|
96
110
|
show_link_to_changelist = True
|
|
97
111
|
show_link_to_add = True
|
|
@@ -104,7 +118,7 @@ class AeInitialAction(ActionWithNotification):
|
|
|
104
118
|
|
|
105
119
|
1. Add death report action if death
|
|
106
120
|
"""
|
|
107
|
-
next_actions =
|
|
121
|
+
next_actions = ()
|
|
108
122
|
deceased = (
|
|
109
123
|
self.reference_obj.ae_grade == GRADE5 or self.reference_obj.sae_reason.name == DEAD
|
|
110
124
|
)
|
|
@@ -142,20 +156,18 @@ class AeInitialAction(ActionWithNotification):
|
|
|
142
156
|
required=self.reference_obj.ae_grade == GRADE4,
|
|
143
157
|
)
|
|
144
158
|
# add next AeTmgAction if G3 and is an SAE
|
|
145
|
-
|
|
159
|
+
return self.append_to_next_if_required(
|
|
146
160
|
next_actions=next_actions,
|
|
147
161
|
action_name=AE_TMG_ACTION,
|
|
148
162
|
required=(self.reference_obj.ae_grade == GRADE3 and self.reference_obj.sae == YES),
|
|
149
163
|
)
|
|
150
164
|
|
|
151
|
-
return next_actions
|
|
152
|
-
|
|
153
165
|
|
|
154
166
|
class AeSusarAction(ActionWithNotification):
|
|
155
167
|
name = AE_SUSAR_ACTION
|
|
156
168
|
display_name = "Submit AE SUSAR Report"
|
|
157
169
|
notification_display_name = "AE SUSAR Report"
|
|
158
|
-
parent_action_names =
|
|
170
|
+
parent_action_names = (AE_INITIAL_ACTION,)
|
|
159
171
|
reference_model = "meta_ae.aesusar"
|
|
160
172
|
related_reference_model = "meta_ae.aeinitial"
|
|
161
173
|
related_reference_fk_attr = "ae_initial"
|
|
@@ -170,7 +182,7 @@ class AeTmgAction(ActionWithNotification):
|
|
|
170
182
|
name = AE_TMG_ACTION
|
|
171
183
|
display_name = "TMG AE Report pending"
|
|
172
184
|
notification_display_name = "TMG AE Report"
|
|
173
|
-
parent_action_names =
|
|
185
|
+
parent_action_names = (AE_INITIAL_ACTION, AE_FOLLOWUP_ACTION, AE_TMG_ACTION)
|
|
174
186
|
reference_model = "meta_ae.aetmg"
|
|
175
187
|
related_reference_model = "meta_ae.aeinitial"
|
|
176
188
|
related_reference_fk_attr = "ae_initial"
|
|
@@ -190,13 +202,13 @@ class DeathReportAction(PregnancyActionItemMixin, ActionWithNotification):
|
|
|
190
202
|
display_name = "Submit Death Report"
|
|
191
203
|
notification_display_name = "Death Report"
|
|
192
204
|
reference_model = "meta_ae.deathreport"
|
|
193
|
-
parent_action_names =
|
|
205
|
+
parent_action_names = (AE_INITIAL_ACTION, AE_FOLLOWUP_ACTION)
|
|
194
206
|
show_link_to_changelist = True
|
|
195
207
|
show_link_to_add = True
|
|
196
208
|
admin_site_name = "meta_ae_admin"
|
|
197
209
|
priority = HIGH_PRIORITY
|
|
198
210
|
singleton = True
|
|
199
|
-
dirty_fields =
|
|
211
|
+
dirty_fields = ("cause_of_death",)
|
|
200
212
|
|
|
201
213
|
def get_next_actions(self):
|
|
202
214
|
"""Adds 1 DEATHReportTMG if not yet created and
|
|
@@ -228,7 +240,7 @@ class DeathReportTmgAction(ActionWithNotification):
|
|
|
228
240
|
name = DEATH_REPORT_TMG_ACTION
|
|
229
241
|
display_name = "TMG Death Report pending"
|
|
230
242
|
notification_display_name = "TMG Death Report"
|
|
231
|
-
parent_action_names =
|
|
243
|
+
parent_action_names = (DEATH_REPORT_ACTION, DEATH_REPORT_TMG_ACTION)
|
|
232
244
|
reference_model = "meta_ae.deathreporttmg"
|
|
233
245
|
related_reference_model = "meta_ae.deathreport"
|
|
234
246
|
related_reference_fk_attr = "death_report"
|
|
@@ -287,12 +299,11 @@ class DeathReportTmgAction(ActionWithNotification):
|
|
|
287
299
|
)
|
|
288
300
|
.count()
|
|
289
301
|
< 2
|
|
302
|
+
) and (
|
|
303
|
+
self.reference_obj.cause_of_death
|
|
304
|
+
!= self.related_action_item.reference_obj.cause_of_death
|
|
290
305
|
):
|
|
291
|
-
|
|
292
|
-
self.reference_obj.cause_of_death
|
|
293
|
-
!= self.related_action_item.reference_obj.cause_of_death
|
|
294
|
-
):
|
|
295
|
-
next_actions = ["self"]
|
|
306
|
+
next_actions = ["self"]
|
|
296
307
|
return next_actions
|
|
297
308
|
|
|
298
309
|
|
meta_ae/admin/__init__.py
CHANGED
|
@@ -6,3 +6,14 @@ from .death_report_admin import DeathReportAdmin
|
|
|
6
6
|
from .death_report_tmg_admin import DeathReportTmgAdmin
|
|
7
7
|
from .death_report_tmg_second_admin import DeathReportTmgSecondAdmin
|
|
8
8
|
from .hospitalization_admin import HospitalizationAdmin
|
|
9
|
+
|
|
10
|
+
__all__ = [
|
|
11
|
+
"AeFollowupAdmin",
|
|
12
|
+
"AeInitialAdmin",
|
|
13
|
+
"AeSusarAdmin",
|
|
14
|
+
"AeTmgAdmin",
|
|
15
|
+
"DeathReportAdmin",
|
|
16
|
+
"DeathReportTmgAdmin",
|
|
17
|
+
"DeathReportTmgSecondAdmin",
|
|
18
|
+
"HospitalizationAdmin",
|
|
19
|
+
]
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from django.contrib import admin
|
|
2
2
|
from django.utils.html import format_html
|
|
3
|
+
from django.utils.translation import gettext as _
|
|
3
4
|
from edc_adverse_event.modeladmin_mixins import AeInitialModelAdminMixin
|
|
4
5
|
from edc_model_admin.history import SimpleHistoryAdmin
|
|
5
6
|
from edc_notification.utils import get_email_contacts
|
|
@@ -15,8 +16,10 @@ class AeInitialAdmin(SiteModelAdminMixin, AeInitialModelAdminMixin, SimpleHistor
|
|
|
15
16
|
form = AeInitialForm
|
|
16
17
|
email_contact = get_email_contacts("ae_reports")
|
|
17
18
|
additional_instructions = format_html(
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
_(
|
|
20
|
+
"Complete the initial AE report and forward to the TMG. "
|
|
21
|
+
'Email to <a href="mailto:{}">{}</a>'
|
|
22
|
+
),
|
|
20
23
|
email_contact,
|
|
21
24
|
email_contact,
|
|
22
25
|
)
|
meta_ae/admin/ae_susar_admin.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from django.contrib import admin
|
|
2
|
-
from edc_adverse_event.modeladmin_mixins import AeSusarModelAdminMixin
|
|
2
|
+
from edc_adverse_event.modeladmin_mixins.ae_susar_admin_mixin import AeSusarModelAdminMixin
|
|
3
3
|
from edc_model_admin.history import SimpleHistoryAdmin
|
|
4
4
|
from edc_sites.admin import SiteModelAdminMixin
|
|
5
5
|
|
|
@@ -65,7 +65,7 @@ class DeathReportAdmin(SiteModelAdminMixin, DeathReportModelAdminMixin, SimpleHi
|
|
|
65
65
|
audit_fieldset_tuple,
|
|
66
66
|
)
|
|
67
67
|
|
|
68
|
-
radio_fields = {
|
|
68
|
+
radio_fields = { # noqa: RUF012
|
|
69
69
|
"cause_of_death": admin.VERTICAL,
|
|
70
70
|
"death_as_inpatient": admin.VERTICAL,
|
|
71
71
|
"death_location": admin.VERTICAL,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
from
|
|
2
|
-
|
|
1
|
+
from clinicedc_constants import NO, NOT_APPLICABLE, YES
|
|
3
2
|
from django.contrib import admin
|
|
4
3
|
from django.core.exceptions import ObjectDoesNotExist
|
|
5
4
|
from django.template.loader import render_to_string
|
|
6
5
|
from django.urls.base import reverse
|
|
7
6
|
from django.utils.html import format_html
|
|
8
7
|
from django.utils.safestring import mark_safe
|
|
8
|
+
from django.utils.translation import gettext as _
|
|
9
9
|
from django_audit_fields.admin import audit_fieldset_tuple
|
|
10
|
-
from edc_action_item import action_fieldset_tuple
|
|
10
|
+
from edc_action_item.fieldsets import action_fieldset_tuple
|
|
11
11
|
from edc_action_item.modeladmin_mixins import ActionItemModelAdminMixin
|
|
12
12
|
from edc_adverse_event.forms import AeFollowupForm
|
|
13
13
|
from edc_adverse_event.modeladmin_mixins import (
|
|
@@ -18,7 +18,6 @@ from edc_adverse_event.templatetags.edc_adverse_event_extras import (
|
|
|
18
18
|
format_ae_followup_description,
|
|
19
19
|
select_description_template,
|
|
20
20
|
)
|
|
21
|
-
from edc_constants.constants import NO, NOT_APPLICABLE, YES
|
|
22
21
|
from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
|
|
23
22
|
|
|
24
23
|
|
|
@@ -50,13 +49,13 @@ class AeReviewModelAdminMixin(
|
|
|
50
49
|
audit_fieldset_tuple,
|
|
51
50
|
)
|
|
52
51
|
|
|
53
|
-
radio_fields = {
|
|
52
|
+
radio_fields = { # noqa: RUF012
|
|
54
53
|
"outcome": admin.VERTICAL,
|
|
55
54
|
"followup": admin.VERTICAL,
|
|
56
55
|
"ae_grade": admin.VERTICAL,
|
|
57
56
|
}
|
|
58
57
|
|
|
59
|
-
list_display:
|
|
58
|
+
list_display: tuple[str, ...] = (
|
|
60
59
|
"identifier",
|
|
61
60
|
"dashboard",
|
|
62
61
|
"description",
|
|
@@ -65,11 +64,10 @@ class AeReviewModelAdminMixin(
|
|
|
65
64
|
"user",
|
|
66
65
|
)
|
|
67
66
|
|
|
68
|
-
list_filter:
|
|
67
|
+
list_filter: tuple[str, ...] = ("ae_grade", "followup", "outcome_date", "report_datetime")
|
|
69
68
|
|
|
70
|
-
search_fields:
|
|
69
|
+
search_fields: tuple[str, ...] = (
|
|
71
70
|
"action_identifier",
|
|
72
|
-
"ae_initial__tracking_identifier",
|
|
73
71
|
"ae_initial__subject_identifier",
|
|
74
72
|
"ae_initial__action_identifier",
|
|
75
73
|
)
|
|
@@ -96,8 +94,8 @@ class AeReviewModelAdminMixin(
|
|
|
96
94
|
if follow_up_reports:
|
|
97
95
|
return format_html(
|
|
98
96
|
"{}. See {}",
|
|
99
|
-
mark_safe(obj.get_outcome_display()), #
|
|
100
|
-
mark_safe(follow_up_reports), #
|
|
97
|
+
mark_safe(_(obj.get_outcome_display())), # noqa: S308
|
|
98
|
+
mark_safe(_(follow_up_reports)), # noqa: S308
|
|
101
99
|
)
|
|
102
100
|
return obj.get_outcome_display()
|
|
103
101
|
|
|
@@ -111,12 +109,13 @@ class AeReviewModelAdminMixin(
|
|
|
111
109
|
namespace = self.admin_site.name
|
|
112
110
|
url = reverse(f"{namespace}:{url_name}_changelist")
|
|
113
111
|
return format_html(
|
|
114
|
-
'<a data-toggle="tooltip" title="
|
|
112
|
+
'<a data-toggle="tooltip" title="{title}" '
|
|
115
113
|
'href="{url}?q={action_identifier}">{identifier}</a>',
|
|
116
|
-
|
|
117
|
-
|
|
114
|
+
title=_("go to ae initial report"),
|
|
115
|
+
url=mark_safe(url), # noqa: S308
|
|
116
|
+
action_identifier=mark_safe( # noqa: S308
|
|
118
117
|
obj.ae_initial.action_identifier
|
|
119
118
|
),
|
|
120
|
-
identifier=mark_safe(obj.ae_initial.identifier), #
|
|
119
|
+
identifier=mark_safe(obj.ae_initial.identifier), # noqa: S308
|
|
121
120
|
)
|
|
122
121
|
return None
|
meta_ae/baker_recipes.py
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
from
|
|
2
|
-
from
|
|
3
|
-
from edc_reportable.constants import GRADE4
|
|
4
|
-
from edc_utils.date import get_utcnow
|
|
1
|
+
from clinicedc_constants import GRADE4, NO, NOT_APPLICABLE, NOT_RELATED, YES
|
|
2
|
+
from django.utils import timezone
|
|
5
3
|
from model_bakery.recipe import Recipe
|
|
6
4
|
|
|
7
5
|
from meta_ae.models.ae_followup import AeFollowup
|
|
@@ -16,8 +14,8 @@ aeinitial = Recipe(
|
|
|
16
14
|
ae_description="A description of this event",
|
|
17
15
|
ae_grade=GRADE4,
|
|
18
16
|
ae_study_relation_possibility=YES,
|
|
19
|
-
ae_start_date=
|
|
20
|
-
ae_awareness_date=
|
|
17
|
+
ae_start_date=timezone.now().date(),
|
|
18
|
+
ae_awareness_date=timezone.now().date(),
|
|
21
19
|
study_drug_relation=NOT_RELATED,
|
|
22
20
|
ae_treatment="Some special treatment",
|
|
23
21
|
sae=NO,
|
meta_ae/choices.py
CHANGED
meta_ae/forms/__init__.py
CHANGED
|
@@ -8,3 +8,16 @@ from .death_report_form import DeathReportForm
|
|
|
8
8
|
from .death_report_tmg_form import DeathReportTmgForm
|
|
9
9
|
from .death_report_tmg_second_form import DeathReportTmgSecondForm
|
|
10
10
|
from .hospitalization_form import HospitalizationForm
|
|
11
|
+
|
|
12
|
+
__all__ = [
|
|
13
|
+
"AeFollowupForm",
|
|
14
|
+
"AeInitialForm",
|
|
15
|
+
"AeLocalReviewForm",
|
|
16
|
+
"AeSponsorReviewForm",
|
|
17
|
+
"AeSusarForm",
|
|
18
|
+
"AeTmgForm",
|
|
19
|
+
"DeathReportForm",
|
|
20
|
+
"DeathReportTmgForm",
|
|
21
|
+
"DeathReportTmgSecondForm",
|
|
22
|
+
"HospitalizationForm",
|
|
23
|
+
]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
from clinicedc_constants import OTHER
|
|
1
2
|
from django import forms
|
|
2
3
|
from edc_adverse_event.form_validator_mixins import DeathReportFormValidatorMixin
|
|
3
4
|
from edc_adverse_event.modelform_mixins import DeathReportModelFormMixin
|
|
4
|
-
from edc_constants.constants import OTHER
|
|
5
5
|
from edc_form_validators import FormValidator
|
|
6
6
|
|
|
7
7
|
from ..constants import HOSPITAL_CLINIC
|
|
@@ -21,8 +21,8 @@ class AeReviewModelFormMixin(
|
|
|
21
21
|
return cleaned_data
|
|
22
22
|
|
|
23
23
|
class Meta:
|
|
24
|
-
help_text = {"subject_identifier": "(read-only)", "action_identifier": "(read-only)"}
|
|
25
|
-
widgets = {
|
|
24
|
+
help_text = {"subject_identifier": "(read-only)", "action_identifier": "(read-only)"} # noqa: RUF012
|
|
25
|
+
widgets = { # noqa: RUF012
|
|
26
26
|
"subject_identifier": forms.TextInput(attrs={"readonly": "readonly"}),
|
|
27
27
|
"action_identifier": forms.TextInput(attrs={"readonly": "readonly"}),
|
|
28
28
|
}
|
meta_ae/list_data.py
CHANGED
|
@@ -8,7 +8,7 @@ import django.db.models.deletion
|
|
|
8
8
|
import django_audit_fields.fields.hostname_modification_field
|
|
9
9
|
import django_audit_fields.fields.userfield
|
|
10
10
|
import django_audit_fields.fields.uuid_auto_field
|
|
11
|
-
import
|
|
11
|
+
import django.utils.timezone
|
|
12
12
|
import django_crypto_fields.fields.encrypted_text_field
|
|
13
13
|
import django_revision.revision_field
|
|
14
14
|
import edc_action_item.managers
|
|
@@ -51,14 +51,14 @@ class Migration(migrations.Migration):
|
|
|
51
51
|
"created",
|
|
52
52
|
models.DateTimeField(
|
|
53
53
|
blank=True,
|
|
54
|
-
default=
|
|
54
|
+
default=django.utils.timezone.now,
|
|
55
55
|
),
|
|
56
56
|
),
|
|
57
57
|
(
|
|
58
58
|
"modified",
|
|
59
59
|
models.DateTimeField(
|
|
60
60
|
blank=True,
|
|
61
|
-
default=
|
|
61
|
+
default=django.utils.timezone.now,
|
|
62
62
|
),
|
|
63
63
|
),
|
|
64
64
|
(
|
|
@@ -347,14 +347,14 @@ class Migration(migrations.Migration):
|
|
|
347
347
|
"created",
|
|
348
348
|
models.DateTimeField(
|
|
349
349
|
blank=True,
|
|
350
|
-
default=
|
|
350
|
+
default=django.utils.timezone.now,
|
|
351
351
|
),
|
|
352
352
|
),
|
|
353
353
|
(
|
|
354
354
|
"modified",
|
|
355
355
|
models.DateTimeField(
|
|
356
356
|
blank=True,
|
|
357
|
-
default=
|
|
357
|
+
default=django.utils.timezone.now,
|
|
358
358
|
),
|
|
359
359
|
),
|
|
360
360
|
(
|
|
@@ -617,14 +617,14 @@ class Migration(migrations.Migration):
|
|
|
617
617
|
"created",
|
|
618
618
|
models.DateTimeField(
|
|
619
619
|
blank=True,
|
|
620
|
-
default=
|
|
620
|
+
default=django.utils.timezone.now,
|
|
621
621
|
),
|
|
622
622
|
),
|
|
623
623
|
(
|
|
624
624
|
"modified",
|
|
625
625
|
models.DateTimeField(
|
|
626
626
|
blank=True,
|
|
627
|
-
default=
|
|
627
|
+
default=django.utils.timezone.now,
|
|
628
628
|
),
|
|
629
629
|
),
|
|
630
630
|
(
|
|
@@ -870,14 +870,14 @@ class Migration(migrations.Migration):
|
|
|
870
870
|
"created",
|
|
871
871
|
models.DateTimeField(
|
|
872
872
|
blank=True,
|
|
873
|
-
default=
|
|
873
|
+
default=django.utils.timezone.now,
|
|
874
874
|
),
|
|
875
875
|
),
|
|
876
876
|
(
|
|
877
877
|
"modified",
|
|
878
878
|
models.DateTimeField(
|
|
879
879
|
blank=True,
|
|
880
|
-
default=
|
|
880
|
+
default=django.utils.timezone.now,
|
|
881
881
|
),
|
|
882
882
|
),
|
|
883
883
|
(
|
|
@@ -1123,14 +1123,14 @@ class Migration(migrations.Migration):
|
|
|
1123
1123
|
"created",
|
|
1124
1124
|
models.DateTimeField(
|
|
1125
1125
|
blank=True,
|
|
1126
|
-
default=
|
|
1126
|
+
default=django.utils.timezone.now,
|
|
1127
1127
|
),
|
|
1128
1128
|
),
|
|
1129
1129
|
(
|
|
1130
1130
|
"modified",
|
|
1131
1131
|
models.DateTimeField(
|
|
1132
1132
|
blank=True,
|
|
1133
|
-
default=
|
|
1133
|
+
default=django.utils.timezone.now,
|
|
1134
1134
|
),
|
|
1135
1135
|
),
|
|
1136
1136
|
(
|
|
@@ -1436,14 +1436,14 @@ class Migration(migrations.Migration):
|
|
|
1436
1436
|
"created",
|
|
1437
1437
|
models.DateTimeField(
|
|
1438
1438
|
blank=True,
|
|
1439
|
-
default=
|
|
1439
|
+
default=django.utils.timezone.now,
|
|
1440
1440
|
),
|
|
1441
1441
|
),
|
|
1442
1442
|
(
|
|
1443
1443
|
"modified",
|
|
1444
1444
|
models.DateTimeField(
|
|
1445
1445
|
blank=True,
|
|
1446
|
-
default=
|
|
1446
|
+
default=django.utils.timezone.now,
|
|
1447
1447
|
),
|
|
1448
1448
|
),
|
|
1449
1449
|
(
|
|
@@ -1726,14 +1726,14 @@ class Migration(migrations.Migration):
|
|
|
1726
1726
|
"created",
|
|
1727
1727
|
models.DateTimeField(
|
|
1728
1728
|
blank=True,
|
|
1729
|
-
default=
|
|
1729
|
+
default=django.utils.timezone.now,
|
|
1730
1730
|
),
|
|
1731
1731
|
),
|
|
1732
1732
|
(
|
|
1733
1733
|
"modified",
|
|
1734
1734
|
models.DateTimeField(
|
|
1735
1735
|
blank=True,
|
|
1736
|
-
default=
|
|
1736
|
+
default=django.utils.timezone.now,
|
|
1737
1737
|
),
|
|
1738
1738
|
),
|
|
1739
1739
|
(
|
|
@@ -1948,14 +1948,14 @@ class Migration(migrations.Migration):
|
|
|
1948
1948
|
"created",
|
|
1949
1949
|
models.DateTimeField(
|
|
1950
1950
|
blank=True,
|
|
1951
|
-
default=
|
|
1951
|
+
default=django.utils.timezone.now,
|
|
1952
1952
|
),
|
|
1953
1953
|
),
|
|
1954
1954
|
(
|
|
1955
1955
|
"modified",
|
|
1956
1956
|
models.DateTimeField(
|
|
1957
1957
|
blank=True,
|
|
1958
|
-
default=
|
|
1958
|
+
default=django.utils.timezone.now,
|
|
1959
1959
|
),
|
|
1960
1960
|
),
|
|
1961
1961
|
(
|
|
@@ -2288,14 +2288,14 @@ class Migration(migrations.Migration):
|
|
|
2288
2288
|
"created",
|
|
2289
2289
|
models.DateTimeField(
|
|
2290
2290
|
blank=True,
|
|
2291
|
-
default=
|
|
2291
|
+
default=django.utils.timezone.now,
|
|
2292
2292
|
),
|
|
2293
2293
|
),
|
|
2294
2294
|
(
|
|
2295
2295
|
"modified",
|
|
2296
2296
|
models.DateTimeField(
|
|
2297
2297
|
blank=True,
|
|
2298
|
-
default=
|
|
2298
|
+
default=django.utils.timezone.now,
|
|
2299
2299
|
),
|
|
2300
2300
|
),
|
|
2301
2301
|
(
|
|
@@ -2531,14 +2531,14 @@ class Migration(migrations.Migration):
|
|
|
2531
2531
|
"created",
|
|
2532
2532
|
models.DateTimeField(
|
|
2533
2533
|
blank=True,
|
|
2534
|
-
default=
|
|
2534
|
+
default=django.utils.timezone.now,
|
|
2535
2535
|
),
|
|
2536
2536
|
),
|
|
2537
2537
|
(
|
|
2538
2538
|
"modified",
|
|
2539
2539
|
models.DateTimeField(
|
|
2540
2540
|
blank=True,
|
|
2541
|
-
default=
|
|
2541
|
+
default=django.utils.timezone.now,
|
|
2542
2542
|
),
|
|
2543
2543
|
),
|
|
2544
2544
|
(
|
|
@@ -2750,14 +2750,14 @@ class Migration(migrations.Migration):
|
|
|
2750
2750
|
"created",
|
|
2751
2751
|
models.DateTimeField(
|
|
2752
2752
|
blank=True,
|
|
2753
|
-
default=
|
|
2753
|
+
default=django.utils.timezone.now,
|
|
2754
2754
|
),
|
|
2755
2755
|
),
|
|
2756
2756
|
(
|
|
2757
2757
|
"modified",
|
|
2758
2758
|
models.DateTimeField(
|
|
2759
2759
|
blank=True,
|
|
2760
|
-
default=
|
|
2760
|
+
default=django.utils.timezone.now,
|
|
2761
2761
|
),
|
|
2762
2762
|
),
|
|
2763
2763
|
(
|
|
@@ -2999,14 +2999,14 @@ class Migration(migrations.Migration):
|
|
|
2999
2999
|
"created",
|
|
3000
3000
|
models.DateTimeField(
|
|
3001
3001
|
blank=True,
|
|
3002
|
-
default=
|
|
3002
|
+
default=django.utils.timezone.now,
|
|
3003
3003
|
),
|
|
3004
3004
|
),
|
|
3005
3005
|
(
|
|
3006
3006
|
"modified",
|
|
3007
3007
|
models.DateTimeField(
|
|
3008
3008
|
blank=True,
|
|
3009
|
-
default=
|
|
3009
|
+
default=django.utils.timezone.now,
|
|
3010
3010
|
),
|
|
3011
3011
|
),
|
|
3012
3012
|
(
|
|
@@ -3180,14 +3180,14 @@ class Migration(migrations.Migration):
|
|
|
3180
3180
|
"created",
|
|
3181
3181
|
models.DateTimeField(
|
|
3182
3182
|
blank=True,
|
|
3183
|
-
default=
|
|
3183
|
+
default=django.utils.timezone.now,
|
|
3184
3184
|
),
|
|
3185
3185
|
),
|
|
3186
3186
|
(
|
|
3187
3187
|
"modified",
|
|
3188
3188
|
models.DateTimeField(
|
|
3189
3189
|
blank=True,
|
|
3190
|
-
default=
|
|
3190
|
+
default=django.utils.timezone.now,
|
|
3191
3191
|
),
|
|
3192
3192
|
),
|
|
3193
3193
|
(
|
|
@@ -5,7 +5,7 @@ import django.db.models.deletion
|
|
|
5
5
|
import django_audit_fields.fields.hostname_modification_field
|
|
6
6
|
import django_audit_fields.fields.userfield
|
|
7
7
|
import django_audit_fields.fields.uuid_auto_field
|
|
8
|
-
import
|
|
8
|
+
import django.utils.timezone
|
|
9
9
|
import django_revision.revision_field
|
|
10
10
|
import edc_model.models.fields.other_charfield
|
|
11
11
|
import edc_model.validators.date
|
|
@@ -38,14 +38,14 @@ class Migration(migrations.Migration):
|
|
|
38
38
|
"created",
|
|
39
39
|
models.DateTimeField(
|
|
40
40
|
blank=True,
|
|
41
|
-
default=
|
|
41
|
+
default=django.utils.timezone.now,
|
|
42
42
|
),
|
|
43
43
|
),
|
|
44
44
|
(
|
|
45
45
|
"modified",
|
|
46
46
|
models.DateTimeField(
|
|
47
47
|
blank=True,
|
|
48
|
-
default=
|
|
48
|
+
default=django.utils.timezone.now,
|
|
49
49
|
),
|
|
50
50
|
),
|
|
51
51
|
(
|
|
@@ -237,14 +237,14 @@ class Migration(migrations.Migration):
|
|
|
237
237
|
"created",
|
|
238
238
|
models.DateTimeField(
|
|
239
239
|
blank=True,
|
|
240
|
-
default=
|
|
240
|
+
default=django.utils.timezone.now,
|
|
241
241
|
),
|
|
242
242
|
),
|
|
243
243
|
(
|
|
244
244
|
"modified",
|
|
245
245
|
models.DateTimeField(
|
|
246
246
|
blank=True,
|
|
247
|
-
default=
|
|
247
|
+
default=django.utils.timezone.now,
|
|
248
248
|
),
|
|
249
249
|
),
|
|
250
250
|
(
|