meta-edc 1.1.8__py3-none-any.whl → 1.1.12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of meta-edc might be problematic. Click here for more details.
- meta_ae/action_items.py +2 -1
- meta_ae/admin/__init__.py +11 -0
- meta_ae/admin/ae_susar_admin.py +1 -1
- meta_ae/admin/death_report_admin.py +1 -1
- meta_ae/admin/modeladmin_mixins.py +10 -12
- meta_ae/baker_recipes.py +3 -3
- meta_ae/forms/__init__.py +13 -0
- meta_ae/forms/modelform_mixins.py +2 -2
- meta_ae/migrations/0001_initial.py +27 -27
- meta_ae/migrations/0006_aelocalreview_aesponsorreview.py +5 -5
- 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_analytics/.DS_Store +0 -0
- meta_analytics/dataframes/__init__.py +24 -0
- meta_analytics/dataframes/get_eos_df.py +1 -2
- meta_analytics/dataframes/get_glucose_df.py +6 -7
- meta_analytics/dataframes/get_glucose_fbg_df.py +2 -3
- meta_analytics/dataframes/get_glucose_fbg_ogtt_df.py +1 -2
- meta_analytics/dataframes/get_last_imp_visits_df.py +5 -6
- meta_analytics/dataframes/glucose_endpoints/__init__.py +2 -0
- meta_analytics/dataframes/glucose_endpoints/endpoint_by_date.py +13 -20
- meta_analytics/dataframes/glucose_endpoints/glucose_endpoints_by_date.py +9 -10
- 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 +6 -10
- meta_analytics/dataframes/utils.py +3 -8
- meta_analytics/get_tables.py +1 -2
- meta_analytics/tables/__init__.py +2 -0
- meta_consent/action_items.py +2 -1
- meta_consent/admin/__init__.py +6 -0
- meta_consent/admin/actions/__init__.py +2 -0
- meta_consent/admin/actions/create_missing_prescriptions.py +1 -1
- meta_consent/admin/list_filters.py +2 -2
- meta_consent/admin/modeladmin_mixins.py +3 -4
- meta_consent/admin/subject_consent_v1_ext_admin.py +2 -2
- meta_consent/baker_recipes.py +7 -8
- meta_consent/form_validators/__init__.py +2 -0
- meta_consent/forms/__init__.py +7 -0
- meta_consent/forms/subject_consent_v1_ext_form.py +2 -3
- meta_consent/forms/subject_reconsent_form.py +4 -4
- meta_consent/management/commands/create_missing_prescriptions.py +4 -2
- meta_consent/migrations/0001_initial.py +9 -9
- meta_consent/migrations/0024_historicalsubjectconsentv1.py +3 -8
- meta_consent/migrations/0026_historicalsubjectconsentv1ext_subjectconsentv1ext.py +5 -14
- meta_consent/migrations/0032_alter_historicalsubjectconsent_device_created_and_more.py +678 -0
- meta_consent/models/__init__.py +9 -0
- meta_consent/models/model_mixins.py +1 -2
- meta_consent/models/signals.py +9 -10
- meta_consent/models/subject_consent.py +1 -1
- meta_consent/models/subject_reconsent.py +3 -3
- meta_dashboard/patterns.py +1 -1
- meta_dashboard/templatetags/meta_dashboard_extras.py +1 -1
- meta_dashboard/view_utils/__init__.py +7 -0
- meta_dashboard/view_utils/subject_screening_button.py +9 -16
- 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/subject/__init__.py +2 -0
- meta_dashboard/views/subject/dashboard/__init__.py +2 -0
- meta_dashboard/views/subject/dashboard/dashboard_view.py +1 -1
- meta_dashboard/views/subject/listboard/__init__.py +2 -0
- meta_edc/__init__.py +5 -9
- meta_edc/celery.py +1 -1
- meta_edc/celery_live.py +1 -1
- meta_edc/celery_uat.py +1 -1
- meta_edc/management/commands/update_forms_reference.py +10 -12
- meta_edc/settings/debug.py +5 -4
- meta_edc/settings/defaults.py +18 -3
- meta_edc/settings/live.py +3 -1
- meta_edc/settings/logging.py +9 -4
- meta_edc/settings/minimal.py +4 -5
- meta_edc/settings/uat.py +3 -1
- meta_edc/views/__init__.py +2 -0
- meta_edc-1.1.12.dist-info/METADATA +174 -0
- {meta_edc-1.1.8.dist-info → meta_edc-1.1.12.dist-info}/RECORD +413 -526
- meta_edc-1.1.12.dist-info/WHEEL +4 -0
- meta_lists/migrations/0020_alter_abnormalfootappearanceobservations_extra_value_and_more.py +404 -0
- meta_pharmacy/admin/__init__.py +5 -0
- meta_pharmacy/admin/substitutions_admin.py +2 -2
- meta_pharmacy/forms/__init__.py +2 -0
- meta_pharmacy/forms/substitutions_form.py +6 -4
- meta_pharmacy/labels/__init__.py +4 -2
- meta_pharmacy/labels/draw_label_for_subject_with_barcode.py +1 -2
- 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/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/substitutions.py +3 -3
- 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/admin/__init__.py +16 -0
- meta_prn/admin/dm_referral_admin.py +2 -1
- meta_prn/admin/end_of_study_admin.py +6 -7
- 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 +5 -6
- meta_prn/admin/offschedule_dm_referral_admin.py +6 -6
- meta_prn/admin/offschedule_postnatal_admin.py +7 -7
- meta_prn/admin/offschedule_pregnancy_admin.py +8 -7
- meta_prn/admin/onschedule_admin.py +7 -8
- meta_prn/admin/onschedule_dm_referral_admin.py +6 -7
- 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 +4 -4
- meta_prn/form_validators/__init__.py +5 -0
- meta_prn/form_validators/end_of_study.py +2 -2
- meta_prn/forms/__init__.py +13 -0
- 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/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/0067_alter_offschedule_managers_and_more.py +2557 -0
- meta_prn/models/__init__.py +20 -0
- meta_prn/models/offschedule.py +4 -4
- meta_prn/models/protocol_incident.py +1 -1
- meta_prn/models/subject_transfer.py +8 -0
- meta_rando/migrations/0001_initial.py +5 -5
- meta_rando/migrations/0006_alter_historicalrandomizationlist_allocated_user_and_more.py +130 -0
- 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 +6 -6
- meta_reports/admin/dbviews/imp_substitutions_admin.py +12 -11
- 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 +6 -6
- 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/patient_history_missing_baseline_cd4_admin.py +8 -8
- 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/last_imp_refill_admin.py +9 -9
- meta_reports/admin/list_filters.py +2 -2
- meta_reports/admin/modeladmin_mixins.py +9 -16
- meta_reports/death_report.py +1 -1
- meta_reports/forms/__init__.py +2 -0
- meta_reports/forms/missing_ogtt_note_form.py +2 -3
- meta_reports/management/commands/generate_endpoints.py +5 -4
- meta_reports/migrations/0035_historicalmissingogttnote_missingogttnote.py +5 -14
- meta_reports/migrations/0059_alter_endpoints_created_and_more.py +161 -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 +4 -5
- meta_reports/models/dbviews/imp_substitutions/__init__.py +2 -0
- 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 +1 -1
- 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_values/__init__.py +2 -0
- meta_reports/models/dbviews/on_study_missing_values/qa_cases.py +18 -0
- meta_reports/models/dbviews/patient_history_missing_baseline_cd4/__init__.py +2 -0
- meta_reports/models/dbviews/unattended_three_in_row/__init__.py +2 -0
- meta_reports/models/dbviews/unattended_three_in_row2/__init__.py +2 -0
- meta_reports/models/dbviews/unattended_two_in_row/__init__.py +2 -0
- meta_reports/models/endpoints.py +4 -4
- meta_reports/models/last_imp_refill.py +2 -3
- meta_reports/pdf_report.py +2 -2
- meta_reports/tasks.py +1 -1
- meta_screening/admin/__init__.py +8 -0
- meta_screening/admin/fieldsets.py +13 -14
- meta_screening/admin/list_filters.py +6 -4
- meta_screening/admin/screening_part_one_admin.py +1 -2
- 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 +4 -4
- meta_screening/baker_recipes.py +9 -9
- meta_screening/eligibility/__init__.py +9 -0
- meta_screening/eligibility/eligibility.py +7 -7
- meta_screening/eligibility/eligibility_part_three/__init__.py +2 -0
- meta_screening/eligibility/eligibility_part_three/base_eligibility_part_three.py +8 -8
- meta_screening/eligibility/eligibility_part_three/eligibility_part_three_phase_three.py +13 -14
- meta_screening/form_validators/__init__.py +8 -0
- meta_screening/forms/__init__.py +20 -0
- meta_screening/forms/field_lists.py +16 -17
- 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/0068_alter_historicalscreeningpartone_acute_condition_and_more.py +1579 -0
- meta_screening/model_mixins/__init__.py +8 -0
- meta_screening/model_mixins/eligibility_model_mixin.py +5 -3
- meta_screening/model_mixins/part_one_fields_model_mixin.py +5 -9
- meta_screening/model_mixins/part_three_fields_model_mixin.py +5 -6
- meta_screening/model_mixins/part_two_fields_model_mixin.py +18 -16
- meta_screening/models/__init__.py +9 -0
- meta_screening/models/icp_referral.py +5 -5
- meta_screening/models/signals.py +10 -11
- meta_screening/models/subject_refusal.py +1 -1
- meta_screening/models/subject_screening.py +1 -3
- meta_subject/action_items.py +13 -15
- meta_subject/admin/__init__.py +39 -0
- meta_subject/admin/birth_outcome_admin.py +4 -8
- 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 +7 -10
- 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/followup_examination_admin.py +10 -9
- meta_subject/admin/followup_vitals_admin.py +4 -5
- meta_subject/admin/glucose_admin.py +2 -4
- meta_subject/admin/glucose_fbg_admin.py +1 -3
- 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/list_filters.py +1 -1
- meta_subject/admin/mnsi_admin.py +7 -5
- 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 +1 -1
- 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/form_validators/__init__.py +11 -0
- meta_subject/form_validators/delivery_form_validator.py +2 -3
- meta_subject/form_validators/dm_endpoint_form_validator.py +1 -1
- meta_subject/form_validators/dm_followup_form_validator.py +7 -6
- meta_subject/form_validators/glucose_form_validator.py +3 -5
- meta_subject/forms/__init__.py +41 -0
- meta_subject/forms/blood_results/__init__.py +9 -0
- meta_subject/forms/blood_results/blood_results_rft_form.py +1 -2
- 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 +3 -8
- meta_subject/forms/health_economics/__init__.py +2 -0
- meta_subject/forms/next_appointment_form.py +2 -3
- meta_subject/forms/slider_widget.py +1 -1
- meta_subject/forms/study_medication_form.py +11 -8
- meta_subject/management/commands/create_missing_refills.py +3 -3
- meta_subject/management/commands/create_missing_rx.py +1 -1
- meta_subject/management/commands/missed.py +20 -23
- meta_subject/metadata_rules/__init__.py +2 -0
- meta_subject/metadata_rules/predicates.py +25 -32
- 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/0115_historicalegfrnotification_egfrnotification.py +5 -13
- 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/0209_remove_historicaldmdxresult_dm_diagnosis_and_more.py +1 -2
- meta_subject/migrations/0216_historicalnextappointment_nextappointment.py +5 -6
- meta_subject/migrations/0220_historicalbloodresultsgludummy_bloodresultsgludummy.py +5 -14
- meta_subject/migrations/0227_alter_followupvitals_waist_circumference_comment_and_more.py +97 -0
- meta_subject/migrations/0228_bloodresultshba1c_hba1c_datetime_and_more.py +9297 -0
- meta_subject/model_mixins/__init__.py +8 -0
- meta_subject/model_mixins/search_slug_model_mixin.py +1 -2
- meta_subject/model_mixins/vitals_fields_model_mixin.py +1 -1
- meta_subject/models/__init__.py +48 -0
- meta_subject/models/birth_outcomes.py +3 -3
- meta_subject/models/blood_results/__init__.py +11 -0
- meta_subject/models/delivery.py +3 -3
- meta_subject/models/diabetes/__init__.py +2 -0
- meta_subject/models/diabetes/dm_endpoint.py +4 -4
- meta_subject/models/diabetes/dm_followup.py +3 -4
- meta_subject/models/diet_and_lifestyle.py +2 -2
- meta_subject/models/followup_examination.py +11 -11
- meta_subject/models/glucose.py +4 -4
- meta_subject/models/glucose_fbg.py +2 -3
- meta_subject/models/health_economics/__init__.py +2 -0
- meta_subject/models/health_economics/health_economics.py +7 -7
- meta_subject/models/health_economics/health_economics_update.py +2 -1
- meta_subject/models/hepatitis_test.py +2 -2
- meta_subject/models/other_arv_regimens_detail.py +1 -1
- meta_subject/models/patient_history.py +5 -6
- meta_subject/models/physical_exam.py +2 -2
- meta_subject/models/pregnancy_update.py +1 -1
- meta_subject/models/signals.py +14 -12
- meta_subject/models/subject_visit.py +1 -1
- meta_subject/models/urine_dipstick_test.py +1 -1
- meta_subject/models/urine_pregnancy.py +1 -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/schedule.py +2 -2
- meta_visit_schedule/visit_schedules/phase_three/schedule_dm_referral.py +1 -2
- meta_visit_schedule/visit_schedules/phase_three/schedule_pregnancy.py +1 -2
- meta_ae/tests/holidays.csv +0 -15
- meta_ae/tests/tests/test_actions.py +0 -126
- meta_ae/tests/urls.py +0 -10
- meta_analytics/dataframes/glucose_endpoints/utils.py +0 -0
- meta_analytics/notebooks/anu.ipynb +0 -95
- meta_analytics/notebooks/appointment_planning.ipynb +0 -329
- meta_analytics/notebooks/arvs.ipynb +0 -103
- meta_analytics/notebooks/cleaning/__init__.py +0 -0
- meta_analytics/notebooks/cleaning/consent_v1_ext.ipynb +0 -227
- meta_analytics/notebooks/cleaning/offschedule_eos.ipynb +0 -353
- meta_analytics/notebooks/dsmc/renal_dysfunction.ipynb +0 -435
- meta_analytics/notebooks/endpoints/meta_endpoints_by_date.ipynb +0 -656
- meta_analytics/notebooks/followup_examination.ipynb +0 -141
- meta_analytics/notebooks/hba1c.ipynb +0 -136
- meta_analytics/notebooks/hiv_regimens.ipynb +0 -429
- meta_analytics/notebooks/incidence.ipynb +0 -232
- meta_analytics/notebooks/liver.ipynb +0 -389
- meta_analytics/notebooks/magreth.ipynb +0 -645
- meta_analytics/notebooks/monitoring_report.ipynb +0 -1834
- meta_analytics/notebooks/pharmacy.ipynb +0 -1061
- meta_analytics/notebooks/pharmacy_stock_202410.ipynb +0 -306
- meta_analytics/notebooks/qa.ipynb +0 -273
- meta_analytics/notebooks/steering.ipynb +0 -61
- meta_analytics/notebooks/undiagnosed/meta3_screening_consort_chart.ipynb +0 -1176
- meta_analytics/notebooks/undiagnosed/meta3_screening_undiagnosed.ipynb +0 -519
- meta_analytics/notebooks/undiagnosed/meta_screening_table2.ipynb +0 -964
- meta_analytics/notebooks/undiagnosed/screen_undiagnosed_or.ipynb +0 -296
- meta_analytics/notebooks/undiagnosed/screening.ipynb +0 -273
- meta_analytics/notebooks/undiagnosed/screening2.ipynb +0 -958
- meta_analytics/notebooks/undiagnosed/screening_undiagnosed_20241002.ipynb +0 -958
- meta_analytics/notebooks/ven.ipynb +0 -191
- meta_analytics/notebooks/vitals.ipynb +0 -263
- 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/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 -555
- meta_edc-1.1.8.dist-info/METADATA +0 -767
- meta_edc-1.1.8.dist-info/WHEEL +0 -5
- meta_edc-1.1.8.dist-info/licenses/AUTHORS.rst +0 -8
- meta_edc-1.1.8.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 -70
- meta_labs/tests/urls.py +0 -4
- meta_lists/tests/__init__.py +0 -0
- meta_lists/tests/test_lists.py +0 -8
- meta_pharmacy/notebooks/pharmacy.ipynb +0 -41
- 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 -203
- meta_prn/tests/tests/test_eos_events.py +0 -134
- 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 -234
- meta_screening/tests/options.py +0 -127
- meta_screening/tests/tests/__init__.py +0 -0
- meta_screening/tests/tests/test_forms.py +0 -404
- meta_screening/tests/tests/test_screening_part_one.py +0 -108
- meta_screening/tests/tests/test_screening_part_three.py +0 -433
- 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 -79
- meta_subject/tests/tests/test_metadata_rules.py +0 -135
- meta_subject/tests/tests/test_mnsi.py +0 -341
- meta_subject/tests/tests/test_next_appointment.py +0 -231
- 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 -161
- meta_subject/tests/tests/test_study_medication.py +0 -229
- 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 -185
- {meta_edc-1.1.8.dist-info → meta_edc-1.1.12.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
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
from typing import Tuple
|
|
2
|
-
|
|
3
1
|
from django.contrib import admin
|
|
4
2
|
from django_audit_fields.admin import audit_fieldset_tuple
|
|
5
|
-
from edc_action_item import
|
|
3
|
+
from edc_action_item.fieldsets import action_fieldset_tuple
|
|
4
|
+
from edc_action_item.modeladmin_mixins import ActionItemModelAdminMixin
|
|
6
5
|
from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
|
|
7
6
|
from edc_model_admin.history import SimpleHistoryAdmin
|
|
8
7
|
from edc_sites.admin import SiteModelAdminMixin
|
|
@@ -40,7 +39,7 @@ class OffStudyMedicationAdmin(
|
|
|
40
39
|
audit_fieldset_tuple,
|
|
41
40
|
)
|
|
42
41
|
|
|
43
|
-
radio_fields = {
|
|
42
|
+
radio_fields = { # noqa: RUF012
|
|
44
43
|
"reason": admin.VERTICAL,
|
|
45
44
|
}
|
|
46
45
|
|
|
@@ -48,7 +47,7 @@ class OffStudyMedicationAdmin(
|
|
|
48
47
|
|
|
49
48
|
search_fields = ("subject_identifier",)
|
|
50
49
|
|
|
51
|
-
def get_list_display(self, request) ->
|
|
50
|
+
def get_list_display(self, request) -> tuple[str, ...]:
|
|
52
51
|
list_display = super().get_list_display(request)
|
|
53
52
|
custom_fields = (
|
|
54
53
|
"subject_identifier",
|
|
@@ -58,7 +57,7 @@ class OffStudyMedicationAdmin(
|
|
|
58
57
|
)
|
|
59
58
|
return custom_fields + tuple(f for f in list_display if f not in custom_fields)
|
|
60
59
|
|
|
61
|
-
def get_list_filter(self, request) ->
|
|
60
|
+
def get_list_filter(self, request) -> tuple[str, ...]:
|
|
62
61
|
list_filter = super().get_list_filter(request)
|
|
63
62
|
custom_fields = (
|
|
64
63
|
"medications",
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
from typing import Tuple
|
|
2
|
-
|
|
3
1
|
from django.contrib import admin
|
|
4
2
|
from django.template.loader import render_to_string
|
|
5
3
|
from django.utils.safestring import mark_safe
|
|
6
4
|
from django_audit_fields import audit_fieldset_tuple
|
|
7
|
-
from edc_action_item import
|
|
5
|
+
from edc_action_item.fieldsets import action_fieldset_tuple
|
|
6
|
+
from edc_action_item.modeladmin_mixins import ActionItemModelAdminMixin
|
|
8
7
|
from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
|
|
9
8
|
from edc_model_admin.history import SimpleHistoryAdmin
|
|
10
9
|
from edc_sites.admin import SiteModelAdminMixin
|
|
@@ -23,7 +22,7 @@ class OffScheduleAdmin(
|
|
|
23
22
|
):
|
|
24
23
|
form = OffScheduleForm
|
|
25
24
|
|
|
26
|
-
additional_instructions = mark_safe(
|
|
25
|
+
additional_instructions = mark_safe( # noqa: S308
|
|
27
26
|
render_to_string(
|
|
28
27
|
"meta_prn/offschedule/additional_instructions.html",
|
|
29
28
|
context=dict(verbose_name=EndOfStudy._meta.verbose_name),
|
|
@@ -36,12 +35,12 @@ class OffScheduleAdmin(
|
|
|
36
35
|
audit_fieldset_tuple,
|
|
37
36
|
)
|
|
38
37
|
|
|
39
|
-
def get_list_display(self, request) ->
|
|
38
|
+
def get_list_display(self, request) -> tuple[str, ...]:
|
|
40
39
|
list_display = super().get_list_display(request)
|
|
41
40
|
custom_fields = ("subject_identifier", "dashboard", "offschedule_datetime")
|
|
42
41
|
return custom_fields + tuple(f for f in list_display if f not in custom_fields)
|
|
43
42
|
|
|
44
|
-
def get_list_filter(self, request) ->
|
|
43
|
+
def get_list_filter(self, request) -> tuple[str, ...]:
|
|
45
44
|
list_filter = super().get_list_filter(request)
|
|
46
45
|
custom_fields = ("offschedule_datetime",)
|
|
47
46
|
return custom_fields + tuple(f for f in list_filter if f not in custom_fields)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
from typing import Tuple
|
|
2
1
|
|
|
3
2
|
from django.contrib import admin
|
|
4
3
|
from django.template.loader import render_to_string
|
|
5
4
|
from django.utils.safestring import mark_safe
|
|
6
5
|
from django_audit_fields import audit_fieldset_tuple
|
|
7
|
-
from edc_action_item import
|
|
6
|
+
from edc_action_item.fieldsets import action_fieldset_tuple
|
|
7
|
+
from edc_action_item.modeladmin_mixins import ActionItemModelAdminMixin
|
|
8
8
|
from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
|
|
9
9
|
from edc_model_admin.history import SimpleHistoryAdmin
|
|
10
10
|
from edc_sites.admin import SiteModelAdminMixin
|
|
@@ -25,12 +25,12 @@ class OffScheduleDmReferralAdmin(
|
|
|
25
25
|
|
|
26
26
|
form = OffScheduleDmReferralForm
|
|
27
27
|
|
|
28
|
-
additional_instructions = mark_safe(
|
|
28
|
+
additional_instructions = mark_safe( # noqa: S308
|
|
29
29
|
render_to_string(
|
|
30
30
|
"meta_prn/offschedule/additional_instructions.html",
|
|
31
31
|
context=dict(verbose_name=EndOfStudy._meta.verbose_name),
|
|
32
32
|
)
|
|
33
|
-
)
|
|
33
|
+
)
|
|
34
34
|
|
|
35
35
|
fieldsets = (
|
|
36
36
|
(None, {"fields": ("subject_identifier", "offschedule_datetime")}),
|
|
@@ -38,12 +38,12 @@ class OffScheduleDmReferralAdmin(
|
|
|
38
38
|
audit_fieldset_tuple,
|
|
39
39
|
)
|
|
40
40
|
|
|
41
|
-
def get_list_display(self, request) ->
|
|
41
|
+
def get_list_display(self, request) -> tuple[str, ...]:
|
|
42
42
|
list_display = super().get_list_display(request)
|
|
43
43
|
custom_fields = ("subject_identifier", "dashboard", "offschedule_datetime")
|
|
44
44
|
return custom_fields + tuple(f for f in list_display if f not in custom_fields)
|
|
45
45
|
|
|
46
|
-
def get_list_filter(self, request) ->
|
|
46
|
+
def get_list_filter(self, request) -> tuple[str, ...]:
|
|
47
47
|
list_filter = super().get_list_filter(request)
|
|
48
48
|
custom_fields = ("offschedule_datetime",)
|
|
49
49
|
return custom_fields + tuple(f for f in list_filter if f not in custom_fields)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
from typing import Tuple
|
|
2
1
|
|
|
3
2
|
from django.contrib import admin
|
|
4
3
|
from django.template.loader import render_to_string
|
|
5
4
|
from django.utils.safestring import mark_safe
|
|
6
5
|
from django_audit_fields import audit_fieldset_tuple
|
|
7
|
-
from edc_action_item import
|
|
6
|
+
from edc_action_item.fieldsets import action_fieldset_tuple
|
|
7
|
+
from edc_action_item.modeladmin_mixins import ActionItemModelAdminMixin
|
|
8
8
|
from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
|
|
9
9
|
from edc_model_admin.history import SimpleHistoryAdmin
|
|
10
10
|
from edc_sites.admin import SiteModelAdminMixin
|
|
@@ -22,12 +22,12 @@ class OffSchedulePostnatalAdmin(
|
|
|
22
22
|
):
|
|
23
23
|
instructions = None
|
|
24
24
|
|
|
25
|
-
additional_instructions = mark_safe(
|
|
25
|
+
additional_instructions = mark_safe( # noqa: S308
|
|
26
26
|
render_to_string(
|
|
27
27
|
"meta_prn/offschedule/additional_instructions.html",
|
|
28
28
|
context=dict(verbose_name=EndOfStudy._meta.verbose_name),
|
|
29
29
|
)
|
|
30
|
-
)
|
|
30
|
+
)
|
|
31
31
|
|
|
32
32
|
fieldsets = (
|
|
33
33
|
(None, {"fields": ("subject_identifier", "offschedule_datetime")}),
|
|
@@ -35,16 +35,16 @@ class OffSchedulePostnatalAdmin(
|
|
|
35
35
|
audit_fieldset_tuple,
|
|
36
36
|
)
|
|
37
37
|
|
|
38
|
-
def get_list_display(self, request) ->
|
|
38
|
+
def get_list_display(self, request) -> tuple[str, ...]:
|
|
39
39
|
list_display = super().get_list_display(request)
|
|
40
40
|
custom_fields = ("subject_identifier", "dashboard", "offschedule_datetime")
|
|
41
41
|
return custom_fields + tuple(f for f in list_display if f not in custom_fields)
|
|
42
42
|
|
|
43
|
-
def get_list_filter(self, request) ->
|
|
43
|
+
def get_list_filter(self, request) -> tuple[str, ...]:
|
|
44
44
|
list_filter = super().get_list_filter(request)
|
|
45
45
|
custom_fields = ("offschedule_datetime",)
|
|
46
46
|
return custom_fields + tuple(f for f in list_filter if f not in custom_fields)
|
|
47
47
|
|
|
48
|
-
def get_readonly_fields(self, request, obj=None) ->
|
|
48
|
+
def get_readonly_fields(self, request, obj=None) -> tuple[str, ...]:
|
|
49
49
|
custom_fields = ("subject_identifier", "offschedule_datetime")
|
|
50
50
|
return tuple(set(super().get_readonly_fields(request, obj=obj) + custom_fields))
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
from typing import Tuple
|
|
2
1
|
|
|
3
2
|
from django.contrib import admin
|
|
4
3
|
from django.template.loader import render_to_string
|
|
5
4
|
from django.utils.safestring import mark_safe
|
|
6
5
|
from django_audit_fields import audit_fieldset_tuple
|
|
7
|
-
from edc_action_item import
|
|
6
|
+
from edc_action_item.fieldsets import action_fieldset_tuple
|
|
7
|
+
from edc_action_item.modeladmin_mixins import ActionItemModelAdminMixin
|
|
8
8
|
from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
|
|
9
9
|
from edc_model_admin.history import SimpleHistoryAdmin
|
|
10
10
|
from edc_sites.admin import SiteModelAdminMixin
|
|
@@ -23,12 +23,12 @@ class OffSchedulePregnancyAdmin(
|
|
|
23
23
|
):
|
|
24
24
|
instructions = None
|
|
25
25
|
|
|
26
|
-
additional_instructions = mark_safe(
|
|
26
|
+
additional_instructions = mark_safe( # noqa: S308
|
|
27
27
|
render_to_string(
|
|
28
28
|
"meta_prn/offschedule/additional_instructions.html",
|
|
29
29
|
context=dict(verbose_name=EndOfStudy._meta.verbose_name),
|
|
30
30
|
)
|
|
31
|
-
)
|
|
31
|
+
)
|
|
32
32
|
|
|
33
33
|
form = OffSchedulePregnancyForm
|
|
34
34
|
|
|
@@ -38,16 +38,17 @@ class OffSchedulePregnancyAdmin(
|
|
|
38
38
|
audit_fieldset_tuple,
|
|
39
39
|
)
|
|
40
40
|
|
|
41
|
-
def get_list_display(self, request) ->
|
|
41
|
+
def get_list_display(self, request) -> tuple[str, ...]:
|
|
42
42
|
list_display = super().get_list_display(request)
|
|
43
43
|
custom_fields = ("subject_identifier", "dashboard", "offschedule_datetime")
|
|
44
44
|
return custom_fields + tuple(f for f in list_display if f not in custom_fields)
|
|
45
45
|
|
|
46
|
-
def get_list_filter(self, request) ->
|
|
46
|
+
def get_list_filter(self, request) -> tuple[str, ...]:
|
|
47
47
|
list_filter = super().get_list_filter(request)
|
|
48
48
|
custom_fields = ("offschedule_datetime",)
|
|
49
49
|
return custom_fields + tuple(f for f in list_filter if f not in custom_fields)
|
|
50
50
|
|
|
51
51
|
# def get_readonly_fields(self, request, obj=None) -> Tuple[str, ...]:
|
|
52
52
|
# custom_fields = ("subject_identifier", "offschedule_datetime")
|
|
53
|
-
# return tuple(set(super().get_readonly_fields(request, obj=obj) +
|
|
53
|
+
# return tuple(set(super().get_readonly_fields(request, obj=obj) +
|
|
54
|
+
# custom_fields))
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Tuple
|
|
2
|
-
|
|
3
1
|
from django.contrib import admin
|
|
4
2
|
from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
|
|
5
3
|
from edc_model_admin.history import SimpleHistoryAdmin
|
|
@@ -17,23 +15,24 @@ class OnScheduleAdmin(
|
|
|
17
15
|
|
|
18
16
|
fields = ("subject_identifier", "onschedule_datetime")
|
|
19
17
|
|
|
20
|
-
def get_list_display(self, request) ->
|
|
18
|
+
def get_list_display(self, request) -> tuple[str, ...]:
|
|
21
19
|
list_display = super().get_list_display(request)
|
|
22
20
|
custom_fields = ("subject_identifier", "dashboard", "onschedule_datetime")
|
|
23
21
|
return custom_fields + tuple(
|
|
24
|
-
f for f in list_display if f not in custom_fields
|
|
22
|
+
f for f in list_display if f not in (*custom_fields, "__str__")
|
|
25
23
|
)
|
|
26
24
|
|
|
27
|
-
def get_list_filter(self, request) ->
|
|
25
|
+
def get_list_filter(self, request) -> tuple[str, ...]:
|
|
28
26
|
list_filter = super().get_list_filter(request)
|
|
29
27
|
custom_fields = ("onschedule_datetime",)
|
|
30
28
|
return custom_fields + tuple(f for f in list_filter if f not in custom_fields)
|
|
31
29
|
|
|
32
|
-
def get_readonly_fields(self, request, obj=None) ->
|
|
30
|
+
def get_readonly_fields(self, request, obj=None) -> tuple[str, ...]: # noqa: ARG002
|
|
33
31
|
return (
|
|
34
32
|
"subject_identifier",
|
|
35
33
|
"onschedule_datetime",
|
|
36
34
|
)
|
|
37
35
|
|
|
38
|
-
def get_search_fields(self, request) ->
|
|
39
|
-
|
|
36
|
+
def get_search_fields(self, request) -> tuple[str, ...]:
|
|
37
|
+
fields = super().get_search_fields(request)
|
|
38
|
+
return tuple({*fields, "subject_identifier"})
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Tuple
|
|
2
|
-
|
|
3
1
|
from django.contrib import admin
|
|
4
2
|
from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
|
|
5
3
|
from edc_model_admin.history import SimpleHistoryAdmin
|
|
@@ -17,14 +15,14 @@ class OnScheduleDmReferralAdmin(
|
|
|
17
15
|
|
|
18
16
|
fields = ("subject_identifier", "onschedule_datetime")
|
|
19
17
|
|
|
20
|
-
def get_list_display(self, request) ->
|
|
18
|
+
def get_list_display(self, request) -> tuple[str, ...]:
|
|
21
19
|
list_display = super().get_list_display(request)
|
|
22
20
|
custom_fields = ("subject_identifier", "dashboard", "onschedule_datetime")
|
|
23
21
|
return custom_fields + tuple(
|
|
24
|
-
f for f in list_display if f not in custom_fields
|
|
22
|
+
f for f in list_display if f not in (*custom_fields, "__str__")
|
|
25
23
|
)
|
|
26
24
|
|
|
27
|
-
def get_list_filter(self, request) ->
|
|
25
|
+
def get_list_filter(self, request) -> tuple[str, ...]:
|
|
28
26
|
list_filter = super().get_list_filter(request)
|
|
29
27
|
custom_fields = ("onschedule_datetime",)
|
|
30
28
|
return custom_fields + tuple(f for f in list_filter if f not in custom_fields)
|
|
@@ -35,5 +33,6 @@ class OnScheduleDmReferralAdmin(
|
|
|
35
33
|
# "onschedule_datetime",
|
|
36
34
|
# )
|
|
37
35
|
|
|
38
|
-
def get_search_fields(self, request) ->
|
|
39
|
-
|
|
36
|
+
def get_search_fields(self, request) -> tuple[str, ...]:
|
|
37
|
+
fields = super().get_search_fields(request)
|
|
38
|
+
return tuple({*fields, "subject_identifier"})
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
from typing import Tuple
|
|
2
|
-
|
|
3
1
|
from django.contrib import admin
|
|
4
2
|
from django_audit_fields.admin import audit_fieldset_tuple
|
|
5
|
-
from edc_action_item import
|
|
3
|
+
from edc_action_item.fieldsets import action_fieldset_tuple
|
|
4
|
+
from edc_action_item.modeladmin_mixins import ActionItemModelAdminMixin
|
|
6
5
|
from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
|
|
7
6
|
from edc_model_admin.history import SimpleHistoryAdmin
|
|
8
7
|
from edc_sites.admin import SiteModelAdminMixin
|
|
@@ -46,12 +45,12 @@ class PregnancyNotificationAdmin(
|
|
|
46
45
|
audit_fieldset_tuple,
|
|
47
46
|
)
|
|
48
47
|
|
|
49
|
-
radio_fields = {
|
|
48
|
+
radio_fields = { # noqa: RUF012
|
|
50
49
|
"bhcg_confirmed": admin.VERTICAL,
|
|
51
50
|
"may_contact": admin.VERTICAL,
|
|
52
51
|
}
|
|
53
52
|
|
|
54
|
-
def get_list_display(self, request) ->
|
|
53
|
+
def get_list_display(self, request) -> tuple[str, ...]:
|
|
55
54
|
list_display = super().get_list_display(request)
|
|
56
55
|
custom_fields = (
|
|
57
56
|
"subject_identifier",
|
|
@@ -61,7 +60,7 @@ class PregnancyNotificationAdmin(
|
|
|
61
60
|
)
|
|
62
61
|
return custom_fields + tuple(f for f in list_display if f not in custom_fields)
|
|
63
62
|
|
|
64
|
-
def get_list_filter(self, request) ->
|
|
63
|
+
def get_list_filter(self, request) -> tuple[str, ...]:
|
|
65
64
|
list_filter = super().get_list_filter(request)
|
|
66
65
|
custom_fields = ("edd", "may_contact")
|
|
67
66
|
return custom_fields + tuple(f for f in list_filter if f not in custom_fields)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from django.contrib import admin
|
|
2
|
-
from edc_action_item import ActionItemModelAdminMixin
|
|
2
|
+
from edc_action_item.modeladmin_mixins import ActionItemModelAdminMixin
|
|
3
3
|
from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
|
|
4
4
|
from edc_model_admin.history import SimpleHistoryAdmin
|
|
5
5
|
from edc_protocol_incident.modeladmin_mixins import ProtocolIncidentModelAdminMixin
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from django.contrib import admin
|
|
2
|
-
from edc_action_item import ActionItemModelAdminMixin
|
|
2
|
+
from edc_action_item.modeladmin_mixins import ActionItemModelAdminMixin
|
|
3
3
|
from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
|
|
4
4
|
from edc_model_admin.history import SimpleHistoryAdmin
|
|
5
5
|
from edc_sites.admin import SiteModelAdminMixin
|
meta_prn/baker_recipes.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from dateutil.relativedelta import relativedelta
|
|
2
|
+
from django.utils import timezone
|
|
2
3
|
from edc_constants.constants import YES
|
|
3
|
-
from edc_utils import get_utcnow
|
|
4
4
|
from faker import Faker
|
|
5
5
|
from model_bakery.recipe import Recipe
|
|
6
6
|
|
|
@@ -14,15 +14,15 @@ pregnancynotification = Recipe(
|
|
|
14
14
|
# site=None,
|
|
15
15
|
action_identifier=None,
|
|
16
16
|
subject_identifier=None,
|
|
17
|
-
report_datetime=
|
|
17
|
+
report_datetime=timezone.now(),
|
|
18
18
|
bhcg_confirmed=YES,
|
|
19
19
|
unconfirmed_details=None,
|
|
20
|
-
edd=
|
|
20
|
+
edd=timezone.now() + relativedelta(months=6),
|
|
21
21
|
)
|
|
22
22
|
|
|
23
23
|
dmreferral = Recipe(
|
|
24
24
|
DmReferral,
|
|
25
25
|
action_identifier=None,
|
|
26
26
|
subject_identifier=None,
|
|
27
|
-
report_datetime=
|
|
27
|
+
report_datetime=timezone.now(),
|
|
28
28
|
)
|
|
@@ -192,7 +192,7 @@ class EndOfStudyFormValidator(
|
|
|
192
192
|
if (obj.bhcg_date or obj.report_datetime.date()) != self.cleaned_data.get(
|
|
193
193
|
"pregnancy_date"
|
|
194
194
|
):
|
|
195
|
-
dt = formatted_date(
|
|
195
|
+
dt = formatted_date(obj.bhcg_date or obj.report_datetime.date())
|
|
196
196
|
self.raise_validation_error(
|
|
197
197
|
{
|
|
198
198
|
"pregnancy_date": (
|
|
@@ -229,7 +229,7 @@ class EndOfStudyFormValidator(
|
|
|
229
229
|
obj.delivery_datetime.date() or obj.report_datetime.date()
|
|
230
230
|
) != self.cleaned_data.get("delivery_date"):
|
|
231
231
|
dt = formatted_date(
|
|
232
|
-
|
|
232
|
+
obj.delivery_datetime.date() or obj.report_datetime.date()
|
|
233
233
|
)
|
|
234
234
|
self.raise_validation_error(
|
|
235
235
|
{
|
meta_prn/forms/__init__.py
CHANGED
|
@@ -8,3 +8,16 @@ from .offschedule_pregnancy_form import OffSchedulePregnancyForm
|
|
|
8
8
|
from .pregnancy_notification_form import PregnancyNotificationForm
|
|
9
9
|
from .protocol_incident_form import ProtocolIncidentForm
|
|
10
10
|
from .subject_transfer_form import SubjectTransferForm
|
|
11
|
+
|
|
12
|
+
__all__ = [
|
|
13
|
+
"DmReferralForm",
|
|
14
|
+
"EndOfStudyForm",
|
|
15
|
+
"LossToFollowupForm",
|
|
16
|
+
"OffScheduleDmReferralForm",
|
|
17
|
+
"OffScheduleForm",
|
|
18
|
+
"OffSchedulePregnancyForm",
|
|
19
|
+
"OffStudyMedicationForm",
|
|
20
|
+
"PregnancyNotificationForm",
|
|
21
|
+
"ProtocolIncidentForm",
|
|
22
|
+
"SubjectTransferForm",
|
|
23
|
+
]
|
|
@@ -9,7 +9,7 @@ import django.db.models.deletion
|
|
|
9
9
|
import django_audit_fields.fields.hostname_modification_field
|
|
10
10
|
import django_audit_fields.fields.userfield
|
|
11
11
|
import django_audit_fields.fields.uuid_auto_field
|
|
12
|
-
import
|
|
12
|
+
import django.utils.timezone
|
|
13
13
|
import django_revision.revision_field
|
|
14
14
|
import edc_action_item.managers
|
|
15
15
|
import edc_identifier.managers
|
|
@@ -80,14 +80,14 @@ class Migration(migrations.Migration):
|
|
|
80
80
|
"created",
|
|
81
81
|
models.DateTimeField(
|
|
82
82
|
blank=True,
|
|
83
|
-
default=
|
|
83
|
+
default=django.utils.timezone.now,
|
|
84
84
|
),
|
|
85
85
|
),
|
|
86
86
|
(
|
|
87
87
|
"modified",
|
|
88
88
|
models.DateTimeField(
|
|
89
89
|
blank=True,
|
|
90
|
-
default=
|
|
90
|
+
default=django.utils.timezone.now,
|
|
91
91
|
),
|
|
92
92
|
),
|
|
93
93
|
(
|
|
@@ -250,14 +250,14 @@ class Migration(migrations.Migration):
|
|
|
250
250
|
"created",
|
|
251
251
|
models.DateTimeField(
|
|
252
252
|
blank=True,
|
|
253
|
-
default=
|
|
253
|
+
default=django.utils.timezone.now,
|
|
254
254
|
),
|
|
255
255
|
),
|
|
256
256
|
(
|
|
257
257
|
"modified",
|
|
258
258
|
models.DateTimeField(
|
|
259
259
|
blank=True,
|
|
260
|
-
default=
|
|
260
|
+
default=django.utils.timezone.now,
|
|
261
261
|
),
|
|
262
262
|
),
|
|
263
263
|
(
|
|
@@ -439,14 +439,14 @@ class Migration(migrations.Migration):
|
|
|
439
439
|
"created",
|
|
440
440
|
models.DateTimeField(
|
|
441
441
|
blank=True,
|
|
442
|
-
default=
|
|
442
|
+
default=django.utils.timezone.now,
|
|
443
443
|
),
|
|
444
444
|
),
|
|
445
445
|
(
|
|
446
446
|
"modified",
|
|
447
447
|
models.DateTimeField(
|
|
448
448
|
blank=True,
|
|
449
|
-
default=
|
|
449
|
+
default=django.utils.timezone.now,
|
|
450
450
|
),
|
|
451
451
|
),
|
|
452
452
|
(
|
|
@@ -779,14 +779,14 @@ class Migration(migrations.Migration):
|
|
|
779
779
|
"created",
|
|
780
780
|
models.DateTimeField(
|
|
781
781
|
blank=True,
|
|
782
|
-
default=
|
|
782
|
+
default=django.utils.timezone.now,
|
|
783
783
|
),
|
|
784
784
|
),
|
|
785
785
|
(
|
|
786
786
|
"modified",
|
|
787
787
|
models.DateTimeField(
|
|
788
788
|
blank=True,
|
|
789
|
-
default=
|
|
789
|
+
default=django.utils.timezone.now,
|
|
790
790
|
),
|
|
791
791
|
),
|
|
792
792
|
(
|
|
@@ -885,14 +885,14 @@ class Migration(migrations.Migration):
|
|
|
885
885
|
"created",
|
|
886
886
|
models.DateTimeField(
|
|
887
887
|
blank=True,
|
|
888
|
-
default=
|
|
888
|
+
default=django.utils.timezone.now,
|
|
889
889
|
),
|
|
890
890
|
),
|
|
891
891
|
(
|
|
892
892
|
"modified",
|
|
893
893
|
models.DateTimeField(
|
|
894
894
|
blank=True,
|
|
895
|
-
default=
|
|
895
|
+
default=django.utils.timezone.now,
|
|
896
896
|
),
|
|
897
897
|
),
|
|
898
898
|
(
|
|
@@ -1063,14 +1063,14 @@ class Migration(migrations.Migration):
|
|
|
1063
1063
|
"created",
|
|
1064
1064
|
models.DateTimeField(
|
|
1065
1065
|
blank=True,
|
|
1066
|
-
default=
|
|
1066
|
+
default=django.utils.timezone.now,
|
|
1067
1067
|
),
|
|
1068
1068
|
),
|
|
1069
1069
|
(
|
|
1070
1070
|
"modified",
|
|
1071
1071
|
models.DateTimeField(
|
|
1072
1072
|
blank=True,
|
|
1073
|
-
default=
|
|
1073
|
+
default=django.utils.timezone.now,
|
|
1074
1074
|
),
|
|
1075
1075
|
),
|
|
1076
1076
|
(
|
|
@@ -1270,14 +1270,14 @@ class Migration(migrations.Migration):
|
|
|
1270
1270
|
"created",
|
|
1271
1271
|
models.DateTimeField(
|
|
1272
1272
|
blank=True,
|
|
1273
|
-
default=
|
|
1273
|
+
default=django.utils.timezone.now,
|
|
1274
1274
|
),
|
|
1275
1275
|
),
|
|
1276
1276
|
(
|
|
1277
1277
|
"modified",
|
|
1278
1278
|
models.DateTimeField(
|
|
1279
1279
|
blank=True,
|
|
1280
|
-
default=
|
|
1280
|
+
default=django.utils.timezone.now,
|
|
1281
1281
|
),
|
|
1282
1282
|
),
|
|
1283
1283
|
(
|
|
@@ -1496,14 +1496,14 @@ class Migration(migrations.Migration):
|
|
|
1496
1496
|
"created",
|
|
1497
1497
|
models.DateTimeField(
|
|
1498
1498
|
blank=True,
|
|
1499
|
-
default=
|
|
1499
|
+
default=django.utils.timezone.now,
|
|
1500
1500
|
),
|
|
1501
1501
|
),
|
|
1502
1502
|
(
|
|
1503
1503
|
"modified",
|
|
1504
1504
|
models.DateTimeField(
|
|
1505
1505
|
blank=True,
|
|
1506
|
-
default=
|
|
1506
|
+
default=django.utils.timezone.now,
|
|
1507
1507
|
),
|
|
1508
1508
|
),
|
|
1509
1509
|
(
|
|
@@ -1870,14 +1870,14 @@ class Migration(migrations.Migration):
|
|
|
1870
1870
|
"created",
|
|
1871
1871
|
models.DateTimeField(
|
|
1872
1872
|
blank=True,
|
|
1873
|
-
default=
|
|
1873
|
+
default=django.utils.timezone.now,
|
|
1874
1874
|
),
|
|
1875
1875
|
),
|
|
1876
1876
|
(
|
|
1877
1877
|
"modified",
|
|
1878
1878
|
models.DateTimeField(
|
|
1879
1879
|
blank=True,
|
|
1880
|
-
default=
|
|
1880
|
+
default=django.utils.timezone.now,
|
|
1881
1881
|
),
|
|
1882
1882
|
),
|
|
1883
1883
|
(
|
|
@@ -2003,14 +2003,14 @@ class Migration(migrations.Migration):
|
|
|
2003
2003
|
"created",
|
|
2004
2004
|
models.DateTimeField(
|
|
2005
2005
|
blank=True,
|
|
2006
|
-
default=
|
|
2006
|
+
default=django.utils.timezone.now,
|
|
2007
2007
|
),
|
|
2008
2008
|
),
|
|
2009
2009
|
(
|
|
2010
2010
|
"modified",
|
|
2011
2011
|
models.DateTimeField(
|
|
2012
2012
|
blank=True,
|
|
2013
|
-
default=
|
|
2013
|
+
default=django.utils.timezone.now,
|
|
2014
2014
|
),
|
|
2015
2015
|
),
|
|
2016
2016
|
(
|
|
@@ -2222,14 +2222,14 @@ class Migration(migrations.Migration):
|
|
|
2222
2222
|
"created",
|
|
2223
2223
|
models.DateTimeField(
|
|
2224
2224
|
blank=True,
|
|
2225
|
-
default=
|
|
2225
|
+
default=django.utils.timezone.now,
|
|
2226
2226
|
),
|
|
2227
2227
|
),
|
|
2228
2228
|
(
|
|
2229
2229
|
"modified",
|
|
2230
2230
|
models.DateTimeField(
|
|
2231
2231
|
blank=True,
|
|
2232
|
-
default=
|
|
2232
|
+
default=django.utils.timezone.now,
|
|
2233
2233
|
),
|
|
2234
2234
|
),
|
|
2235
2235
|
(
|
|
@@ -2448,14 +2448,14 @@ class Migration(migrations.Migration):
|
|
|
2448
2448
|
"created",
|
|
2449
2449
|
models.DateTimeField(
|
|
2450
2450
|
blank=True,
|
|
2451
|
-
default=
|
|
2451
|
+
default=django.utils.timezone.now,
|
|
2452
2452
|
),
|
|
2453
2453
|
),
|
|
2454
2454
|
(
|
|
2455
2455
|
"modified",
|
|
2456
2456
|
models.DateTimeField(
|
|
2457
2457
|
blank=True,
|
|
2458
|
-
default=
|
|
2458
|
+
default=django.utils.timezone.now,
|
|
2459
2459
|
),
|
|
2460
2460
|
),
|
|
2461
2461
|
(
|