meta-edc 0.2.24__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 +40 -29
- meta_ae/admin/__init__.py +12 -2
- meta_ae/admin/ae_followup_admin.py +2 -2
- meta_ae/admin/ae_initial_admin.py +7 -4
- meta_ae/admin/ae_local_review_admin.py +2 -2
- meta_ae/admin/ae_sponsor_review_admin.py +2 -2
- meta_ae/admin/ae_susar_admin.py +3 -3
- meta_ae/admin/ae_tmg_admin.py +2 -2
- meta_ae/admin/death_report_admin.py +3 -3
- meta_ae/admin/death_report_tmg_admin.py +4 -2
- meta_ae/admin/death_report_tmg_second_admin.py +4 -2
- meta_ae/admin/hospitalization_admin.py +15 -0
- meta_ae/admin/modeladmin_mixins.py +14 -16
- meta_ae/baker_recipes.py +5 -6
- meta_ae/choices.py +1 -1
- meta_ae/forms/__init__.py +14 -0
- meta_ae/forms/death_report_form.py +1 -2
- meta_ae/forms/hospitalization_form.py +11 -0
- meta_ae/forms/modelform_mixins.py +2 -2
- meta_ae/list_data.py +2 -1
- meta_ae/migrations/0001_initial.py +27 -28
- meta_ae/migrations/0002_auto_20191024_1000.py +0 -1
- meta_ae/migrations/0003_auto_20191102_0033.py +0 -1
- meta_ae/migrations/0004_auto_20191114_0821.py +0 -1
- meta_ae/migrations/0005_auto_20210624_0225.py +0 -1
- meta_ae/migrations/0006_aelocalreview_aesponsorreview.py +5 -6
- meta_ae/migrations/0007_auto_20210911_2036.py +0 -1
- meta_ae/migrations/0008_auto_20211011_1657.py +0 -1
- meta_ae/migrations/0009_auto_20220307_1929.py +0 -1
- meta_ae/migrations/0010_auto_20220704_1841.py +0 -1
- meta_ae/migrations/0011_alter_aefollowup_action_identifier_and_more.py +0 -1
- meta_ae/migrations/0012_auto_20220826_0258.py +0 -1
- meta_ae/migrations/0013_auto_20220826_0322.py +0 -1
- meta_ae/migrations/0014_auto_20220826_0406.py +0 -1
- meta_ae/migrations/0015_auto_20220907_0157.py +0 -1
- meta_ae/migrations/0016_rename_narrative_aetmg_investigator_narrative_and_more.py +128 -0
- meta_ae/migrations/0017_auto_20221130_2257.py +29 -0
- meta_ae/migrations/0018_alter_deathreporttmg_cause_of_death_agreed_and_more.py +45 -0
- meta_ae/migrations/0019_alter_aefollowup_managers_alter_aeinitial_managers_and_more.py +529 -0
- meta_ae/migrations/0020_alter_aesusar_options_alter_aetmg_options_and_more.py +532 -0
- meta_ae/migrations/0021_alter_aefollowup_site_alter_aeinitial_site_and_more.py +158 -0
- meta_ae/migrations/0022_historicalhospitalization_hospitalization.py +590 -0
- 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 +8 -8
- meta_ae/model_mixins/death_report_model_mixin.py +3 -4
- meta_ae/models/__init__.py +14 -0
- meta_ae/models/ae_initial.py +4 -0
- meta_ae/models/death_report.py +0 -1
- meta_ae/models/death_report_tmg_second.py +0 -1
- meta_ae/models/hospitalization.py +21 -0
- meta_ae/models/managers.py +1 -4
- meta_ae/pdf_reports/__init__.py +4 -2
- meta_ae/pdf_reports/ae_pdf_report.py +7 -0
- meta_ae/pdf_reports/death_pdf_report.py +7 -0
- meta_ae/pdf_reports/meta_pdf_report_mixin.py +4 -2
- meta_ae/templatetags/meta_ae_extras.py +5 -6
- meta_analytics/.DS_Store +0 -0
- meta_analytics/README.rst +16 -0
- meta_analytics/dataframes/__init__.py +46 -0
- meta_analytics/dataframes/constants.py +36 -0
- meta_analytics/dataframes/get_eos_df.py +38 -0
- 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 +103 -0
- meta_analytics/dataframes/glucose_endpoints/__init__.py +4 -0
- meta_analytics/dataframes/glucose_endpoints/endpoint_by_date.py +184 -0
- meta_analytics/dataframes/glucose_endpoints/glucose_endpoints_by_date.py +407 -0
- meta_analytics/dataframes/screening/__init__.py +4 -0
- meta_analytics/dataframes/screening/get_glucose_tested_only_df.py +19 -0
- meta_analytics/dataframes/screening/get_screening_df.py +156 -0
- meta_analytics/dataframes/utils.py +74 -0
- meta_analytics/get_tables.py +80 -0
- meta_analytics/tables/__init__.py +4 -0
- meta_analytics/tables/eligible.py +106 -0
- meta_analytics/tables/enrolled/glucose.py +27 -0
- meta_analytics/tables/has_dm.py +61 -0
- meta_analytics/utils.py +81 -0
- meta_auth/auth_objects.py +34 -5
- meta_auth/auths.py +21 -6
- meta_consent/action_items.py +22 -3
- meta_consent/admin/__init__.py +8 -1
- 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 +148 -0
- meta_consent/admin/subject_consent_admin.py +6 -134
- meta_consent/admin/subject_consent_v1_admin.py +19 -0
- meta_consent/admin/subject_consent_v1_ext_admin.py +93 -0
- meta_consent/baker_recipes.py +11 -11
- meta_consent/consents.py +27 -8
- meta_consent/constants.py +1 -0
- meta_consent/form_validators/__init__.py +3 -0
- meta_consent/form_validators/subject_consent_form_validator.py +30 -0
- meta_consent/forms/__init__.py +10 -1
- meta_consent/forms/subject_consent_form.py +26 -46
- meta_consent/forms/subject_consent_v1_ext_form.py +47 -0
- meta_consent/forms/subject_consent_v1_form.py +26 -0
- meta_consent/forms/subject_reconsent_form.py +4 -4
- meta_consent/locale/lg/LC_MESSAGES/django.po +69 -0
- meta_consent/locale/sw/LC_MESSAGES/django.po +70 -0
- meta_consent/management/commands/create_missing_prescriptions.py +5 -3
- meta_consent/migrations/0001_initial.py +9 -10
- meta_consent/migrations/0002_auto_20191024_1000.py +0 -1
- meta_consent/migrations/0003_auto_20200325_0901.py +0 -1
- meta_consent/migrations/0004_auto_20210624_0225.py +0 -1
- meta_consent/migrations/0005_alter_subjectconsent_options.py +0 -1
- meta_consent/migrations/0006_auto_20210911_2036.py +0 -1
- meta_consent/migrations/0007_auto_20220128_1719.py +0 -1
- meta_consent/migrations/0008_auto_20220412_2151.py +0 -1
- meta_consent/migrations/0009_auto_20220704_1841.py +0 -1
- meta_consent/migrations/0010_alter_historicalsubjectreconsent_action_identifier_and_more.py +0 -1
- meta_consent/migrations/0011_auto_20220826_0258.py +0 -1
- meta_consent/migrations/0012_auto_20220826_0322.py +0 -1
- meta_consent/migrations/0013_auto_20220826_0406.py +0 -1
- meta_consent/migrations/0014_alter_subjectconsent_managers.py +1 -2
- meta_consent/migrations/0015_auto_20220914_0542.py +0 -1
- meta_consent/migrations/0016_auto_20220914_0547.py +0 -2
- meta_consent/migrations/0017_auto_20220929_1742.py +3 -3
- meta_consent/migrations/0018_alter_subjectconsent_options_and_more.py +170 -0
- meta_consent/migrations/0019_alter_subjectconsent_options_and_more.py +191 -0
- meta_consent/migrations/0020_historicalsubjectconsent_model_name_and_more.py +34 -0
- meta_consent/migrations/0021_auto_20240111_0442.py +17 -0
- meta_consent/migrations/0022_alter_historicalsubjectconsent_site_and_more.py +36 -0
- meta_consent/migrations/0023_subjectconsentv1_and_more.py +86 -0
- meta_consent/migrations/0024_historicalsubjectconsentv1.py +595 -0
- meta_consent/migrations/0025_alter_historicalsubjectconsent_first_name_and_more.py +151 -0
- 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 +11 -0
- meta_consent/models/model_mixins.py +1 -2
- meta_consent/models/signals.py +68 -52
- meta_consent/models/subject_consent.py +9 -20
- meta_consent/models/subject_consent_v1.py +15 -0
- meta_consent/models/subject_consent_v1_ext.py +34 -0
- meta_consent/models/subject_reconsent.py +6 -7
- meta_dashboard/apps.py +0 -40
- meta_dashboard/locale/lg/LC_MESSAGES/django.po +30 -0
- meta_dashboard/locale/sw/LC_MESSAGES/django.po +31 -0
- meta_dashboard/navbars.py +12 -14
- meta_dashboard/patterns.py +1 -1
- meta_dashboard/templates/meta_dashboard/{bootstrap3/buttons → buttons}/dashboard_button.html +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/{bootstrap3/screening → screening}/listboard.html +18 -17
- 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/templates/meta_dashboard/{bootstrap3/subject → subject}/listboard.html +14 -6
- meta_dashboard/templatetags/meta_dashboard_extras.py +77 -78
- meta_dashboard/urls.py +10 -10
- meta_dashboard/view_utils/__init__.py +13 -0
- meta_dashboard/view_utils/subject_screening_button.py +114 -0
- meta_dashboard/views/__init__.py +8 -0
- meta_dashboard/views/ae/__init__.py +2 -0
- meta_dashboard/views/ae/ae_listboard_view.py +3 -4
- meta_dashboard/views/ae/death_report_listboard_view.py +4 -4
- meta_dashboard/views/screening/__init__.py +2 -0
- meta_dashboard/views/screening/listboard_view.py +5 -16
- 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 +41 -3
- meta_dashboard/views/subject/listboard/__init__.py +2 -0
- meta_dashboard/views/subject/listboard/listboard_view.py +8 -12
- meta_data_manager/handlers.py +0 -1
- meta_edc/__init__.py +10 -0
- meta_edc/admin.py +3 -4
- meta_edc/celery.py +6 -14
- meta_edc/celery_live.py +19 -0
- meta_edc/celery_uat.py +25 -0
- meta_edc/management/commands/update_forms_reference.py +16 -17
- meta_edc/meta_version.py +2 -2
- meta_edc/navbars.py +17 -12
- meta_edc/settings/debug.py +30 -9
- meta_edc/settings/defaults.py +145 -94
- meta_edc/settings/live.py +5 -10
- meta_edc/settings/logging.py +10 -3
- meta_edc/settings/minimal.py +5 -5
- meta_edc/settings/uat.py +4 -13
- meta_edc/templates/meta_edc/{bootstrap3/base.html → base.html} +1 -1
- meta_edc/templates/meta_edc/{bootstrap3/home.html → home.html} +14 -8
- meta_edc/urls.py +10 -4
- meta_edc/utils.py +3 -1
- meta_edc/views/__init__.py +2 -0
- meta_edc/views/home_view.py +6 -7
- meta_edc/wsgi.py +1 -1
- meta_edc/wsgi_live.py +1 -1
- meta_edc/wsgi_uat.py +1 -1
- meta_edc-1.4.0.dist-info/METADATA +174 -0
- meta_edc-1.4.0.dist-info/RECORD +1164 -0
- 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/admin.py +30 -0
- meta_lists/list_data.py +60 -5
- meta_lists/migrations/0001_initial.py +0 -1
- meta_lists/migrations/0002_auto_20191026_2231.py +0 -1
- meta_lists/migrations/0003_auto_20191102_0033.py +0 -1
- meta_lists/migrations/0004_auto_20191102_1859.py +0 -1
- meta_lists/migrations/0005_auto_20191104_0930.py +0 -1
- meta_lists/migrations/0006_auto_20200514_1959.py +0 -1
- meta_lists/migrations/0007_auto_20200516_2356.py +0 -1
- meta_lists/migrations/0008_auto_20200528_1517.py +3 -4
- meta_lists/migrations/0009_auto_20200613_2041.py +0 -1
- meta_lists/migrations/0010_auto_20200617_1738.py +0 -1
- meta_lists/migrations/0011_auto_20210624_0225.py +0 -1
- meta_lists/migrations/0012_auto_20210728_1809.py +0 -1
- meta_lists/migrations/0013_transferreasons_and_more.py +0 -1
- meta_lists/migrations/0014_auto_20220913_2139.py +0 -1
- meta_lists/migrations/0015_abnormalfootappearanceobservations_extra_value_and_more.py +67 -0
- meta_lists/migrations/0016_alter_abnormalfootappearanceobservations_options_and_more.py +617 -0
- meta_lists/migrations/0017_complications_dmmedications_dmtreatments_and_more.py +365 -0
- meta_lists/migrations/0018_missedreferralreasons.py +73 -0
- meta_lists/migrations/0019_auto_20250128_0143.py +48 -0
- meta_lists/migrations/0020_alter_abnormalfootappearanceobservations_extra_value_and_more.py +404 -0
- meta_lists/models.py +36 -0
- meta_pharmacy/admin/__init__.py +7 -0
- meta_pharmacy/admin/rx_admin.py +76 -0
- meta_pharmacy/admin/substitutions_admin.py +67 -0
- meta_pharmacy/admin_site.py +9 -0
- meta_pharmacy/apps.py +5 -0
- meta_pharmacy/constants.py +10 -0
- meta_pharmacy/forms/__init__.py +4 -0
- meta_pharmacy/forms/rx_form.py +15 -0
- meta_pharmacy/forms/substitutions_form.py +56 -0
- meta_pharmacy/label_configs.py +30 -0
- meta_pharmacy/labels/__init__.py +7 -0
- meta_pharmacy/labels/draw_label_for_subject_with_barcode.py +61 -0
- meta_pharmacy/labels/draw_label_for_subject_with_code128.py +14 -0
- meta_pharmacy/labels/draw_label_with_test_data.py +26 -0
- meta_pharmacy/labels/label_data.py +13 -0
- meta_pharmacy/labels/print_sheets.py +95 -0
- meta_pharmacy/list_data.py +8 -0
- meta_pharmacy/management/commands/update_initial_pharmacy_data.py +11 -0
- meta_pharmacy/migrations/0001_initial.py +32 -0
- meta_pharmacy/migrations/0002_initial.py +682 -0
- meta_pharmacy/migrations/0003_auto_20240909_2335.py +65 -0
- meta_pharmacy/migrations/0004_alter_historicalsubstitutions_report_datetime_and_more.py +23 -0
- meta_pharmacy/migrations/0005_auto_20240911_0352.py +17 -0
- meta_pharmacy/migrations/0006_lotnumber_label.py +280 -0
- meta_pharmacy/migrations/0007_lotnumber_medication.py +24 -0
- meta_pharmacy/migrations/0008_remove_lotnumber_medication_and_more.py +389 -0
- meta_pharmacy/migrations/0009_remove_historicalrx_slug.py +17 -0
- meta_pharmacy/migrations/0010_alter_historicallabeldata_device_created_and_more.py +382 -0
- meta_pharmacy/models/__init__.py +10 -0
- meta_pharmacy/models/label_data.py +37 -0
- meta_pharmacy/models/rx.py +18 -0
- meta_pharmacy/models/rx_label.py +38 -0
- meta_pharmacy/models/substitutions.py +88 -0
- meta_pharmacy/prepare_meta_pharmacy.py +1 -1
- meta_pharmacy/urls.py +8 -0
- meta_pharmacy/utils/__init__.py +3 -0
- meta_pharmacy/utils/update_initial_pharmacy_data.py +146 -0
- meta_prn/action_items.py +76 -27
- meta_prn/admin/__init__.py +20 -1
- meta_prn/admin/dm_referral_admin.py +50 -0
- meta_prn/admin/end_of_study_admin.py +28 -18
- meta_prn/admin/loss_to_followup_admin.py +5 -5
- meta_prn/admin/off_study_medication_admin.py +7 -9
- meta_prn/admin/offschedule_admin.py +14 -14
- meta_prn/admin/offschedule_dm_referral_admin.py +48 -0
- meta_prn/admin/offschedule_postnatal_admin.py +17 -10
- meta_prn/admin/offschedule_pregnancy_admin.py +20 -12
- meta_prn/admin/onschedule_admin.py +9 -11
- meta_prn/admin/onschedule_dm_referral_admin.py +38 -0
- meta_prn/admin/pregnancy_notification_admin.py +13 -11
- meta_prn/admin/protocol_incident_admin.py +6 -104
- meta_prn/admin/subject_transfer_admin.py +3 -2
- meta_prn/baker_recipes.py +15 -8
- meta_prn/choices.py +15 -10
- meta_prn/constants.py +5 -2
- meta_prn/form_validators/__init__.py +5 -0
- meta_prn/form_validators/end_of_study.py +65 -21
- meta_prn/form_validators/protocol_incident.py +1 -2
- meta_prn/forms/__init__.py +15 -0
- meta_prn/forms/dm_referral_form.py +34 -0
- meta_prn/forms/end_of_study_form.py +1 -2
- meta_prn/forms/loss_to_followup_form.py +1 -2
- meta_prn/forms/off_study_medication_form.py +2 -3
- meta_prn/forms/offschedule_dm_referral_form.py +35 -0
- meta_prn/forms/offschedule_form.py +31 -1
- meta_prn/forms/offschedule_pregnancy_form.py +0 -1
- meta_prn/forms/pregnancy_notification_form.py +16 -19
- meta_prn/forms/subject_transfer_form.py +0 -1
- meta_prn/list_data.py +3 -3
- meta_prn/migrations/0001_initial.py +25 -26
- meta_prn/migrations/0002_auto_20191024_1000.py +0 -1
- meta_prn/migrations/0003_auto_20200120_2020.py +0 -1
- meta_prn/migrations/0004_auto_20200403_0332.py +0 -1
- meta_prn/migrations/0005_auto_20200524_1944.py +0 -1
- meta_prn/migrations/0006_auto_20210624_0225.py +0 -1
- meta_prn/migrations/0007_auto_20210721_0335.py +0 -1
- meta_prn/migrations/0008_auto_20210910_0238.py +0 -1
- meta_prn/migrations/0009_auto_20210910_0239.py +0 -1
- meta_prn/migrations/0010_auto_20210910_1906.py +0 -1
- meta_prn/migrations/0011_auto_20210910_1911.py +1 -2
- meta_prn/migrations/0012_auto_20210911_0004.py +1 -2
- meta_prn/migrations/0013_auto_20210911_2036.py +0 -1
- meta_prn/migrations/0014_auto_20211003_1709.py +0 -1
- meta_prn/migrations/0015_auto_20211104_1447.py +0 -1
- meta_prn/migrations/0016_auto_20220128_1719.py +0 -1
- meta_prn/migrations/0017_auto_20220307_1929.py +5 -6
- meta_prn/migrations/0018_auto_20220309_2106.py +9 -10
- meta_prn/migrations/0019_auto_20220309_2230.py +0 -1
- meta_prn/migrations/0020_auto_20220310_0439.py +0 -1
- meta_prn/migrations/0021_auto_20220316_2147.py +13 -14
- meta_prn/migrations/0022_auto_20220318_0133.py +9 -10
- meta_prn/migrations/0023_auto_20220415_1747.py +0 -1
- meta_prn/migrations/0024_alter_protocoldeviationviolation_violation.py +0 -1
- meta_prn/migrations/0025_alter_historicalprotocoldeviationviolation_options_and_more.py +0 -1
- meta_prn/migrations/0026_remove_historicalprotocoldeviationviolation_violation_type_and_more.py +0 -1
- meta_prn/migrations/0027_rename_historicalprotocoldeviationviolation_historicalprotocolincident_and_more.py +0 -1
- meta_prn/migrations/0028_historicalpregnancynotification_bhcg_date_and_more.py +0 -1
- meta_prn/migrations/0029_alter_historicalpregnancynotification_edd_and_more.py +0 -1
- meta_prn/migrations/0030_auto_20220627_1119.py +0 -1
- meta_prn/migrations/0031_alter_historicaloffschedule_options_and_more.py +0 -1
- meta_prn/migrations/0032_historicalegfrnotification_egfrnotification.py +5 -14
- meta_prn/migrations/0033_remove_historicalegfrnotification_action_item_and_more.py +0 -1
- meta_prn/migrations/0034_auto_20220630_1110.py +4 -5
- meta_prn/migrations/0035_auto_20220630_1140.py +61 -60
- meta_prn/migrations/0036_remove_endofstudy_meta_prn_en_id_a50384_idx_and_more.py +0 -1
- meta_prn/migrations/0037_endofstudy_delivery_date_endofstudy_pregnancy_date_and_more.py +0 -1
- meta_prn/migrations/0038_alter_endofstudy_delivery_date_and_more.py +5 -14
- meta_prn/migrations/0039_historicaloffstudymedication_reason_other_and_more.py +0 -1
- meta_prn/migrations/0040_remove_historicaloffstudymedication_expected_restart_date_and_more.py +0 -1
- meta_prn/migrations/0041_endofstudy_transfer_date_and_more.py +5 -14
- meta_prn/migrations/0042_remove_endofstudy_investigator_decision_and_more.py +0 -1
- meta_prn/migrations/0043_auto_20220704_1841.py +0 -1
- meta_prn/migrations/0044_alter_endofstudy_action_identifier_and_more.py +0 -1
- meta_prn/migrations/0045_auto_20220826_0258.py +0 -1
- meta_prn/migrations/0046_auto_20220826_0322.py +0 -1
- meta_prn/migrations/0047_auto_20220826_0406.py +0 -1
- meta_prn/migrations/0048_auto_20220922_2236.py +0 -1
- meta_prn/migrations/0049_auto_20220929_1742.py +0 -1
- meta_prn/migrations/0050_auto_20221004_0629.py +0 -1
- meta_prn/migrations/0051_historicalprotocolincident_reasons_withdrawn_and_more.py +54 -0
- meta_prn/migrations/0052_alter_historicalprotocolincident_reasons_withdrawn_and_more.py +22 -0
- meta_prn/migrations/0053_alter_losstofollowup_options_and_more.py +975 -0
- meta_prn/migrations/0054_alter_losstofollowup_options_and_more.py +834 -0
- meta_prn/migrations/0055_alter_endofstudy_site_and_more.py +278 -0
- meta_prn/migrations/0056_alter_endofstudy_clinical_withdrawal_reason_and_more.py +97 -0
- meta_prn/migrations/0057_historicalonscheduledmreferral_and_more.py +1131 -0
- meta_prn/migrations/0058_dmreferral_referral_note_and_more.py +29 -0
- meta_prn/migrations/0059_alter_historicaloffstudymedication_reason_and_more.py +53 -0
- 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 +33 -2
- meta_prn/models/dm_referral.py +39 -0
- meta_prn/models/end_of_study.py +29 -25
- meta_prn/models/loss_to_followup.py +10 -13
- meta_prn/models/off_study_medication.py +8 -6
- meta_prn/models/offschedule.py +16 -8
- meta_prn/models/onschedule.py +10 -5
- meta_prn/models/pregnancy_notification.py +4 -7
- meta_prn/models/protocol_incident.py +6 -4
- meta_prn/models/signals.py +56 -16
- meta_prn/models/subject_transfer.py +7 -0
- meta_prn/pregnancy_action_item_mixin.py +2 -1
- 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 -6
- meta_rando/migrations/0002_auto_20220704_1841.py +0 -1
- meta_rando/migrations/0003_auto_20220826_1640.py +0 -1
- meta_rando/migrations/0004_alter_randomizationlist_options_and_more.py +95 -0
- meta_rando/migrations/0005_alter_randomizationlist_options_and_more.py +98 -0
- 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 -4
- meta_rando/randomizers.py +2 -3
- meta_reports/__init__.py +3 -0
- meta_reports/admin/__init__.py +31 -0
- meta_reports/admin/dbviews/__init__.py +27 -0
- meta_reports/admin/dbviews/glucose_summary_admin.py +116 -0
- meta_reports/admin/dbviews/imp_substitutions_admin.py +102 -0
- meta_reports/admin/dbviews/missing_screening_ogtt_admin/__init__.py +7 -0
- meta_reports/admin/dbviews/missing_screening_ogtt_admin/note_model_admin.py +77 -0
- meta_reports/admin/dbviews/missing_screening_ogtt_admin/unmanaged_model_admin.py +84 -0
- meta_reports/admin/dbviews/on_study_missing_lab_values_admin/__init__.py +3 -0
- meta_reports/admin/dbviews/on_study_missing_lab_values_admin/unmanaged_model_admin.py +10 -0
- meta_reports/admin/dbviews/on_study_missing_values_admin/__init__.py +3 -0
- meta_reports/admin/dbviews/on_study_missing_values_admin/unmanaged_model_admin.py +12 -0
- meta_reports/admin/dbviews/patient_history_missing_baseline_cd4_admin.py +58 -0
- meta_reports/admin/dbviews/unattended_three_in_row2_admin.py +47 -0
- meta_reports/admin/dbviews/unattended_three_in_row_admin.py +35 -0
- meta_reports/admin/dbviews/unattended_two_in_row_admin.py +34 -0
- meta_reports/admin/endpoints_admin.py +14 -0
- meta_reports/admin/endpoints_all_admin.py +12 -0
- meta_reports/admin/last_imp_refill_admin.py +178 -0
- meta_reports/admin/list_filters.py +30 -0
- meta_reports/admin/modeladmin_mixins.py +105 -0
- meta_reports/admin_site.py +5 -0
- meta_reports/ae_report.py +2 -3
- meta_reports/apps.py +1 -17
- meta_reports/death_report.py +3 -5
- meta_reports/forms/__init__.py +3 -0
- meta_reports/forms/missing_ogtt_note_form.py +32 -0
- meta_reports/management/commands/generate_endpoints.py +14 -0
- meta_reports/migrations/0001_initial.py +87 -0
- meta_reports/migrations/0002_patienthistorymissingbaselinecd4_and_more.py +64 -0
- meta_reports/migrations/0003_auto_20240618_0505.py +12 -0
- meta_reports/migrations/0004_alter_patienthistorymissingbaselinecd4_table.py +17 -0
- meta_reports/migrations/0005_endpoints.py +47 -0
- meta_reports/migrations/0006_endpoints_baseline_datetime.py +18 -0
- meta_reports/migrations/0007_alter_endpoints_endpoint_label_and_more.py +43 -0
- meta_reports/migrations/0008_alter_endpoints_endpoint_label.py +18 -0
- meta_reports/migrations/0009_alter_endpoints_options.py +21 -0
- meta_reports/migrations/0010_alter_patienthistorymissingbaselinecd4_options_and_more.py +49 -0
- meta_reports/migrations/0011_auto_20240813_0156.py +54 -0
- meta_reports/migrations/0012_auto_20240813_1516.py +48 -0
- meta_reports/migrations/0013_auto_20240813_1516.py +48 -0
- meta_reports/migrations/0014_auto_20240813_1517.py +48 -0
- meta_reports/migrations/0015_alter_endpoints_site.py +22 -0
- meta_reports/migrations/0016_missingscreeningogtt.py +47 -0
- meta_reports/migrations/0017_auto_20240819_1711.py +166 -0
- meta_reports/migrations/0018_auto_20240819_1713.py +54 -0
- meta_reports/migrations/0019_auto_20240819_1721.py +54 -0
- meta_reports/migrations/0020_auto_20240819_1811.py +54 -0
- meta_reports/migrations/0021_auto_20240819_1817.py +54 -0
- meta_reports/migrations/0022_auto_20240819_1832.py +54 -0
- meta_reports/migrations/0023_endpoints_meta_report_subject_a56b22_idx.py +20 -0
- meta_reports/migrations/0024_glucosesummary.py +38 -0
- meta_reports/migrations/0025_auto_20240822_0115.py +87 -0
- meta_reports/migrations/0026_auto_20240822_0120.py +54 -0
- meta_reports/migrations/0027_auto_20240822_0140.py +54 -0
- meta_reports/migrations/0028_alter_glucosesummary_options.py +22 -0
- meta_reports/migrations/0029_auto_20240822_0149.py +54 -0
- meta_reports/migrations/0030_auto_20240822_1637.py +54 -0
- meta_reports/migrations/0031_endpointsproxy.py +25 -0
- meta_reports/migrations/0032_alter_endpointsproxy_options.py +21 -0
- meta_reports/migrations/0033_auto_20240823_0012.py +54 -0
- meta_reports/migrations/0034_auto_20240823_1642.py +54 -0
- meta_reports/migrations/0035_historicalmissingogttnote_missingogttnote.py +448 -0
- meta_reports/migrations/0036_historicalmissingogttnote_fasting_and_more.py +86 -0
- meta_reports/migrations/0037_historicalmissingogttnote_result_status_and_more.py +51 -0
- meta_reports/migrations/0038_alter_historicalmissingogttnote_fasting_and_more.py +33 -0
- meta_reports/migrations/0039_onstudymissingvalues.py +44 -0
- meta_reports/migrations/0040_auto_20240824_0412.py +282 -0
- meta_reports/migrations/0041_auto_20240828_2229.py +14 -0
- meta_reports/migrations/0042_onstudymissinglabvalues.py +43 -0
- meta_reports/migrations/0043_auto_20240828_2309.py +88 -0
- meta_reports/migrations/0044_auto_20240828_2323.py +93 -0
- meta_reports/migrations/0045_auto_20240829_0248.py +54 -0
- meta_reports/migrations/0046_auto_20240829_0250.py +54 -0
- meta_reports/migrations/0047_impsubstitutions.py +56 -0
- meta_reports/migrations/0048_auto_20240909_2338.py +48 -0
- meta_reports/migrations/0049_auto_20240911_0327.py +54 -0
- meta_reports/migrations/0050_alter_endpoints_created.py +19 -0
- meta_reports/migrations/0051_remove_endpoints_baseline_datetime_and_more.py +40 -0
- meta_reports/migrations/0052_lastimpvisit.py +57 -0
- meta_reports/migrations/0053_rename_lastimpvisit_lastimprefill_and_more.py +31 -0
- 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 +33 -0
- meta_reports/models/dbviews/README +14 -0
- meta_reports/models/dbviews/__init__.py +23 -0
- meta_reports/models/dbviews/glucose_summary/__init__.py +4 -0
- meta_reports/models/dbviews/glucose_summary/unmanaged_model.py +47 -0
- meta_reports/models/dbviews/glucose_summary/view_definition.py +31 -0
- meta_reports/models/dbviews/imp_substitutions/__init__.py +3 -0
- meta_reports/models/dbviews/imp_substitutions/unmanaged_model.py +40 -0
- meta_reports/models/dbviews/imp_substitutions/view_definition.py +21 -0
- meta_reports/models/dbviews/missing_screening_ogtt/__init__.py +4 -0
- meta_reports/models/dbviews/missing_screening_ogtt/note_model.py +57 -0
- meta_reports/models/dbviews/missing_screening_ogtt/unmanaged_model.py +42 -0
- meta_reports/models/dbviews/missing_screening_ogtt/view_definition.py +20 -0
- meta_reports/models/dbviews/on_study_missing_lab_values/__init__.py +3 -0
- meta_reports/models/dbviews/on_study_missing_lab_values/qa_cases.py +55 -0
- meta_reports/models/dbviews/on_study_missing_lab_values/unmanged_model.py +19 -0
- meta_reports/models/dbviews/on_study_missing_lab_values/view_definition.py +17 -0
- meta_reports/models/dbviews/on_study_missing_values/__init__.py +3 -0
- meta_reports/models/dbviews/on_study_missing_values/qa_cases.py +72 -0
- meta_reports/models/dbviews/on_study_missing_values/unmanged_model.py +19 -0
- meta_reports/models/dbviews/on_study_missing_values/view_definition.py +17 -0
- meta_reports/models/dbviews/patient_history_missing_baseline_cd4/__init__.py +3 -0
- meta_reports/models/dbviews/patient_history_missing_baseline_cd4/unmanaged_model.py +30 -0
- meta_reports/models/dbviews/patient_history_missing_baseline_cd4/view_definition.py +21 -0
- meta_reports/models/dbviews/unattended_three_in_row/__init__.py +3 -0
- meta_reports/models/dbviews/unattended_three_in_row/unmanaged_model.py +28 -0
- meta_reports/models/dbviews/unattended_three_in_row/view_definition.py +31 -0
- meta_reports/models/dbviews/unattended_three_in_row2/__init__.py +3 -0
- meta_reports/models/dbviews/unattended_three_in_row2/unmanaged_model.py +28 -0
- meta_reports/models/dbviews/unattended_three_in_row2/view_definition.py +50 -0
- meta_reports/models/dbviews/unattended_two_in_row/__init__.py +3 -0
- meta_reports/models/dbviews/unattended_two_in_row/unmanaged_model.py +26 -0
- meta_reports/models/dbviews/unattended_two_in_row/view_definition.py +30 -0
- meta_reports/models/endpoints.py +35 -0
- meta_reports/models/endpoints_proxy.py +11 -0
- meta_reports/models/last_imp_refill.py +33 -0
- meta_reports/pdf_report.py +2 -4
- meta_reports/tasks.py +13 -0
- meta_reports/templates/meta_reports/columns/subject_identifier_column.html +1 -0
- meta_reports/templates/meta_reports/endpoints_all_change_list_note.html +12 -0
- meta_reports/templates/meta_reports/endpoints_change_list_note.html +12 -0
- meta_reports/templates/meta_reports/last_imp_refill/changelist_note.html +13 -0
- meta_reports/urls.py +8 -0
- meta_screening/admin/__init__.py +8 -0
- meta_screening/admin/fieldsets.py +13 -16
- meta_screening/admin/list_filters.py +7 -15
- meta_screening/admin/screening_part_one_admin.py +3 -5
- meta_screening/admin/screening_part_three_admin.py +4 -5
- meta_screening/admin/screening_part_two_admin.py +9 -10
- meta_screening/admin/subject_refusal_admin.py +9 -5
- meta_screening/admin/subject_screening_admin.py +28 -11
- 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 +3 -3
- meta_screening/eligibility/eligibility_part_three/__init__.py +2 -0
- meta_screening/eligibility/eligibility_part_three/base_eligibility_part_three.py +72 -50
- meta_screening/eligibility/eligibility_part_three/eligibility_part_three_phase_three.py +15 -16
- meta_screening/eligibility/eligibility_part_two.py +3 -3
- meta_screening/form_validators/__init__.py +8 -0
- meta_screening/form_validators/screening_part_one.py +2 -8
- meta_screening/form_validators/screening_part_three.py +6 -7
- meta_screening/form_validators/screening_part_two.py +3 -5
- meta_screening/form_validators/subject_refusal.py +1 -1
- meta_screening/forms/__init__.py +20 -0
- meta_screening/forms/field_lists.py +17 -18
- meta_screening/forms/screening_part_one_form.py +11 -2
- meta_screening/forms/screening_part_three_form.py +5 -4
- meta_screening/forms/screening_part_two_form.py +1 -6
- meta_screening/forms/subject_refusal_form.py +0 -5
- meta_screening/forms/subject_screening_form.py +4 -6
- meta_screening/migrations/0001_initial.py +15 -16
- meta_screening/migrations/0002_auto_20191020_0612.py +0 -1
- meta_screening/migrations/0003_auto_20191020_0627.py +0 -1
- meta_screening/migrations/0004_auto_20191020_0738.py +0 -1
- meta_screening/migrations/0005_auto_20191021_0353.py +0 -1
- meta_screening/migrations/0006_auto_20191022_0134.py +0 -1
- meta_screening/migrations/0007_auto_20191024_1000.py +0 -1
- meta_screening/migrations/0008_auto_20191031_0745.py +0 -1
- meta_screening/migrations/0009_auto_20191105_0122.py +0 -1
- meta_screening/migrations/0010_auto_20191106_0828.py +5 -6
- meta_screening/migrations/0011_auto_20191107_0342.py +2 -3
- meta_screening/migrations/0012_auto_20191107_0427.py +3 -4
- meta_screening/migrations/0013_auto_20191107_0442.py +0 -1
- meta_screening/migrations/0014_auto_20191107_0528.py +0 -1
- meta_screening/migrations/0015_auto_20191107_2249.py +0 -1
- meta_screening/migrations/0016_auto_20191119_2331.py +0 -1
- meta_screening/migrations/0017_auto_20191213_0314.py +0 -1
- meta_screening/migrations/0018_auto_20200118_1854.py +0 -1
- meta_screening/migrations/0019_auto_20200120_2256.py +0 -1
- meta_screening/migrations/0020_auto_20200524_1944.py +0 -1
- meta_screening/migrations/0021_auto_20210628_2105.py +0 -1
- meta_screening/migrations/0022_auto_20210702_0426.py +0 -1
- meta_screening/migrations/0023_auto_20210702_0533.py +0 -1
- meta_screening/migrations/0024_auto_20210710_1929.py +0 -1
- meta_screening/migrations/0025_auto_20210710_2247.py +0 -1
- meta_screening/migrations/0026_auto_20210712_0433.py +0 -1
- meta_screening/migrations/0027_auto_20210804_0438.py +0 -1
- meta_screening/migrations/0028_auto_20210823_2353.py +0 -1
- meta_screening/migrations/0029_auto_20211123_1645.py +0 -1
- meta_screening/migrations/0030_auto_20220128_1719.py +0 -1
- meta_screening/migrations/0031_auto_20220304_0448.py +0 -1
- meta_screening/migrations/0032_auto_20220304_0501.py +0 -1
- meta_screening/migrations/0033_auto_20220304_0504.py +0 -1
- meta_screening/migrations/0034_auto_20220304_0508.py +0 -1
- meta_screening/migrations/0035_auto_20220304_2233.py +0 -1
- meta_screening/migrations/0036_auto_20220304_2307.py +0 -1
- meta_screening/migrations/0037_auto_20220312_0339.py +0 -1
- meta_screening/migrations/0038_auto_20220312_1929.py +0 -1
- meta_screening/migrations/0039_auto_20220312_1938.py +0 -1
- meta_screening/migrations/0040_auto_20220316_2147.py +0 -1
- meta_screening/migrations/0041_auto_20220403_1227.py +0 -1
- meta_screening/migrations/0042_auto_20220403_1402.py +0 -1
- meta_screening/migrations/0043_auto_20220407_1713.py +0 -1
- meta_screening/migrations/0044_alter_historicalscreeningpartone_severe_htn_and_more.py +0 -1
- meta_screening/migrations/0045_historicalscreeningpartone_contact_number_and_more.py +0 -1
- meta_screening/migrations/0046_historicalscreeningpartone_hba1c_datetime_and_more.py +0 -1
- meta_screening/migrations/0047_historicalscreeningpartone_appt_datetime_repeat_and_more.py +0 -1
- meta_screening/migrations/0048_rename_appt_datetime_repeat_historicalscreeningpartone_repeat_appt_datetime_and_more.py +0 -1
- meta_screening/migrations/0049_historicalscreeningpartone_p3_ltfu_and_more.py +0 -1
- meta_screening/migrations/0050_historicalscreeningpartone_agree_to_p3_and_more.py +0 -1
- meta_screening/migrations/0051_alter_historicalscreeningpartone_advised_to_fast_and_more.py +0 -1
- meta_screening/migrations/0052_alter_historicalscreeningpartone_p3_ltfu_and_more.py +0 -1
- meta_screening/migrations/0053_auto_20220704_1841.py +0 -1
- meta_screening/migrations/0054_auto_20220722_2130.py +0 -1
- meta_screening/migrations/0055_alter_historicalscreeningpartone_creatinine_value_and_more.py +0 -1
- meta_screening/migrations/0056_alter_historicalscreeningpartone_agree_to_p3_and_more.py +0 -1
- meta_screening/migrations/0057_alter_historicalscreeningpartone_calculated_egfr_value_and_more.py +397 -0
- meta_screening/migrations/0058_alter_historicalscreeningpartone_eligibility_datetime_and_more.py +210 -0
- meta_screening/migrations/0059_alter_icpreferral_managers_and_more.py +323 -0
- meta_screening/migrations/0060_historicalicpreferral_locale_created_and_more.py +210 -0
- meta_screening/migrations/0061_alter_historicalicpreferral_site_and_more.py +128 -0
- meta_screening/migrations/0062_remove_icpreferral_site_and_more.py +27 -0
- meta_screening/migrations/0063_alter_historicalscreeningpartone_fasting_duration_str_and_more.py +184 -0
- meta_screening/migrations/0064_remove_historicalscreeningpartone_fasting_duration_minutes_and_more.py +126 -0
- meta_screening/migrations/0065_auto_20240516_0352.py +31 -0
- meta_screening/migrations/0066_alter_historicalscreeningpartone_fasting_duration_delta_and_more.py +103 -0
- meta_screening/migrations/0067_alter_historicalscreeningpartone_report_datetime_and_more.py +84 -0
- 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 +8 -9
- meta_screening/model_mixins/creatinine_fields_model_mixin.py +2 -4
- meta_screening/model_mixins/eligibility_model_mixin.py +6 -5
- meta_screening/model_mixins/part_one_fields_model_mixin.py +17 -21
- meta_screening/model_mixins/part_three_fields_model_mixin.py +19 -33
- meta_screening/model_mixins/part_two_fields_model_mixin.py +19 -18
- meta_screening/models/__init__.py +10 -1
- meta_screening/models/icp_referral.py +9 -8
- meta_screening/models/proxy_models.py +9 -1
- meta_screening/models/signals.py +10 -11
- meta_screening/models/subject_refusal.py +5 -5
- meta_screening/models/subject_screening.py +19 -3
- meta_sites/__init__.py +0 -1
- meta_sites/apps.py +0 -23
- meta_sites/sites.py +61 -53
- meta_subject/action_items.py +58 -27
- meta_subject/admin/__init__.py +46 -2
- meta_subject/admin/birth_outcome_admin.py +13 -15
- meta_subject/admin/blood_results/__init__.py +10 -2
- meta_subject/admin/blood_results/blood_results_fbc_admin.py +6 -3
- meta_subject/admin/blood_results/blood_results_hba1c_admin.py +6 -3
- meta_subject/admin/blood_results/blood_results_ins_admin.py +6 -3
- meta_subject/admin/blood_results/blood_results_lft_admin.py +6 -3
- meta_subject/admin/blood_results/blood_results_lipids_admin.py +24 -0
- meta_subject/admin/blood_results/blood_results_rft_admin.py +8 -8
- meta_subject/admin/complications_admin.py +3 -4
- meta_subject/admin/complications_glycemia_admin.py +4 -4
- meta_subject/admin/concomitant_medication_admin.py +3 -3
- meta_subject/admin/delivery_admin.py +8 -13
- meta_subject/admin/diabetes/__init__.py +4 -0
- meta_subject/admin/diabetes/dm_endpoint_admin.py +35 -0
- meta_subject/admin/diabetes/dm_followup_admin.py +97 -0
- meta_subject/admin/egfr_drop_notification_admin.py +1 -4
- meta_subject/admin/eq5d3l_admin.py +4 -4
- meta_subject/admin/fields.py +5 -5
- meta_subject/admin/fieldsets.py +5 -5
- meta_subject/admin/followup_examination_admin.py +12 -11
- meta_subject/admin/followup_vitals_admin.py +31 -7
- meta_subject/admin/glucose_admin.py +37 -5
- meta_subject/admin/glucose_fbg_admin.py +89 -0
- meta_subject/admin/health_economics/__init__.py +4 -0
- meta_subject/admin/{health_economics_simple_admin.py → health_economics/health_economics_simple_admin.py} +7 -7
- meta_subject/admin/health_economics/health_economics_update_admin.py +101 -0
- meta_subject/admin/hepatitis_test_admin.py +4 -4
- meta_subject/admin/hiv_exit_review_admin.py +55 -0
- meta_subject/admin/list_filters.py +76 -0
- meta_subject/admin/malaria_test_admin.py +4 -29
- meta_subject/admin/medication_adherence_admin.py +5 -10
- meta_subject/admin/mnsi_admin.py +9 -8
- meta_subject/admin/modeladmin.py +9 -8
- meta_subject/admin/next_appointment_admin.py +19 -0
- meta_subject/admin/other_arv_regimens_admin.py +10 -14
- meta_subject/admin/patient_history_admin.py +7 -7
- meta_subject/admin/physical_exam_admin.py +4 -4
- meta_subject/admin/pregnancy_update_admin.py +4 -4
- meta_subject/admin/sf12_admin.py +3 -3
- meta_subject/admin/study_medication_admin.py +56 -11
- meta_subject/admin/subject_requisition_admin.py +5 -5
- meta_subject/admin/subject_visit_admin.py +5 -3
- meta_subject/admin/subject_visit_missed_admin.py +5 -4
- meta_subject/admin/urine_dipstick_test_admin.py +4 -4
- meta_subject/admin/urine_pregnancy_admin.py +4 -4
- meta_subject/apps.py +1 -1
- meta_subject/baker_recipes.py +20 -14
- meta_subject/choices.py +125 -123
- meta_subject/constants.py +4 -0
- meta_subject/form_validators/__init__.py +23 -0
- meta_subject/form_validators/birth_outcomes_form_validator.py +13 -0
- meta_subject/form_validators/delivery_form_validator.py +83 -0
- meta_subject/form_validators/dm_endpoint_form_validator.py +37 -0
- meta_subject/form_validators/dm_followup_form_validator.py +236 -0
- meta_subject/form_validators/egfr_drop_notification_form_validator.py +12 -0
- meta_subject/form_validators/followup_examination_form_validator.py +105 -0
- meta_subject/form_validators/glucose_fbg_form_validator.py +76 -0
- meta_subject/form_validators/glucose_form_validator.py +26 -0
- meta_subject/form_validators/health_economics_form_validator.py +7 -0
- 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 +48 -3
- meta_subject/forms/birth_outcomes_form.py +1 -13
- meta_subject/forms/blood_results/__init__.py +10 -2
- meta_subject/forms/blood_results/blood_results_fbc_form.py +0 -1
- meta_subject/forms/blood_results/blood_results_hba1c_form.py +1 -2
- meta_subject/forms/blood_results/blood_results_ins_form.py +0 -1
- meta_subject/forms/blood_results/blood_results_lft_form.py +0 -1
- meta_subject/forms/blood_results/{blood_results_lipid_form.py → blood_results_lipids_form.py} +5 -6
- meta_subject/forms/blood_results/blood_results_rft_form.py +60 -5
- meta_subject/forms/complications_glycemia_form.py +1 -7
- meta_subject/forms/concomitant_medication_form.py +1 -7
- meta_subject/forms/delivery_form.py +2 -82
- meta_subject/forms/diabetes/__init__.py +4 -0
- meta_subject/forms/diabetes/dm_endpoint_form.py +13 -0
- meta_subject/forms/diabetes/dm_followup_form.py +25 -0
- meta_subject/forms/egfr_drop_notification_form.py +1 -13
- meta_subject/forms/eq53d3l_form.py +1 -5
- meta_subject/forms/followup_examination_form.py +1 -103
- meta_subject/forms/followup_vitals_form.py +23 -2
- meta_subject/forms/glucose_fbg_form.py +13 -0
- meta_subject/forms/glucose_form.py +1 -7
- meta_subject/forms/health_economics/__init__.py +4 -0
- meta_subject/forms/health_economics/health_economics_simple_form.py +13 -0
- meta_subject/forms/health_economics/health_economics_update_form.py +12 -0
- meta_subject/forms/hepatitis_test_form.py +1 -3
- meta_subject/forms/hiv_exit_review_form.py +13 -0
- meta_subject/forms/malaria_test_form.py +1 -13
- meta_subject/forms/medication_adherence_form.py +0 -1
- meta_subject/forms/mixins.py +1 -1
- meta_subject/forms/mnsi_form.py +0 -1
- meta_subject/forms/next_appointment_form.py +36 -0
- meta_subject/forms/other_arv_regimens_detail_form.py +3 -1
- meta_subject/forms/other_arv_regimens_form.py +1 -2
- meta_subject/forms/patient_history_form.py +1 -3
- meta_subject/forms/physical_exam_form.py +1 -3
- meta_subject/forms/pregnancy_update_form.py +1 -2
- meta_subject/forms/slider_widget.py +1 -2
- meta_subject/forms/study_medication_form.py +47 -8
- meta_subject/forms/subject_requisition_form.py +1 -2
- meta_subject/forms/subject_visit_form.py +18 -3
- meta_subject/forms/subject_visit_missed_form.py +1 -3
- meta_subject/forms/urine_dipstick_test_form.py +1 -3
- meta_subject/forms/urine_pregnancy_form.py +1 -3
- meta_subject/locale/lg/LC_MESSAGES/django.po +470 -0
- meta_subject/locale/sw/LC_MESSAGES/django.po +471 -0
- 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 +251 -0
- meta_subject/metadata_rules/__init__.py +2 -0
- meta_subject/metadata_rules/metadata_rules.py +49 -8
- meta_subject/metadata_rules/predicates.py +122 -27
- meta_subject/migrations/0001_initial.py +61 -62
- meta_subject/migrations/0002_auto_20191021_0353.py +5 -6
- meta_subject/migrations/0003_auto_20191021_0534.py +0 -1
- meta_subject/migrations/0004_auto_20191022_0134.py +0 -1
- meta_subject/migrations/0005_auto_20191024_1000.py +0 -1
- meta_subject/migrations/0006_auto_20191104_0756.py +0 -1
- meta_subject/migrations/0007_auto_20191107_2249.py +0 -1
- meta_subject/migrations/0008_auto_20191115_0132.py +0 -1
- meta_subject/migrations/0009_auto_20191119_2331.py +0 -1
- meta_subject/migrations/0010_auto_20191213_0314.py +0 -1
- meta_subject/migrations/0011_auto_20200118_1854.py +0 -1
- meta_subject/migrations/0012_auto_20200118_2334.py +5 -6
- meta_subject/migrations/0013_auto_20200119_0013.py +0 -1
- meta_subject/migrations/0014_auto_20200120_1622.py +5 -6
- meta_subject/migrations/0015_auto_20200120_1943.py +0 -1
- meta_subject/migrations/0016_auto_20200123_1508.py +0 -1
- meta_subject/migrations/0017_auto_20200325_0901.py +0 -1
- meta_subject/migrations/0018_coronakap_historicalcoronakap.py +5 -6
- meta_subject/migrations/0019_auto_20200417_0315.py +0 -1
- meta_subject/migrations/0020_auto_20200417_0329.py +0 -1
- meta_subject/migrations/0021_auto_20200417_0332.py +0 -1
- meta_subject/migrations/0022_auto_20200419_2223.py +0 -1
- meta_subject/migrations/0023_auto_20200419_2305.py +0 -1
- meta_subject/migrations/0024_auto_20200419_2331.py +0 -1
- meta_subject/migrations/0025_auto_20200420_1455.py +0 -1
- meta_subject/migrations/0026_auto_20200420_1524.py +0 -1
- meta_subject/migrations/0027_auto_20200420_1645.py +0 -1
- meta_subject/migrations/0028_auto_20200420_1732.py +0 -1
- meta_subject/migrations/0029_auto_20200420_1751.py +0 -1
- meta_subject/migrations/0030_auto_20200420_1816.py +0 -1
- meta_subject/migrations/0031_auto_20200422_2039.py +0 -1
- meta_subject/migrations/0032_auto_20200515_0307.py +0 -1
- meta_subject/migrations/0033_auto_20200516_2356.py +5 -6
- meta_subject/migrations/0034_auto_20200517_0125.py +0 -1
- meta_subject/migrations/0035_auto_20200517_0128.py +0 -1
- meta_subject/migrations/0036_auto_20200517_0150.py +0 -1
- meta_subject/migrations/0037_auto_20200517_0207.py +0 -1
- meta_subject/migrations/0038_auto_20200520_0020.py +5 -6
- meta_subject/migrations/0039_auto_20200524_1944.py +0 -1
- meta_subject/migrations/0040_auto_20200527_2155.py +1 -2
- meta_subject/migrations/0041_auto_20200528_0242.py +0 -1
- meta_subject/migrations/0042_auto_20200528_0252.py +0 -1
- meta_subject/migrations/0043_auto_20200528_1555.py +0 -1
- meta_subject/migrations/0044_auto_20200528_1853.py +0 -1
- meta_subject/migrations/0045_auto_20200530_1801.py +1 -2
- meta_subject/migrations/0046_auto_20200530_1804.py +0 -1
- meta_subject/migrations/0047_auto_20200530_1819.py +0 -1
- meta_subject/migrations/0048_auto_20200530_1819.py +0 -1
- meta_subject/migrations/0049_auto_20200613_2041.py +0 -1
- meta_subject/migrations/0050_auto_20200614_1934.py +0 -1
- meta_subject/migrations/0051_auto_20200617_2117.py +5 -6
- meta_subject/migrations/0052_auto_20210624_0225.py +0 -1
- meta_subject/migrations/0053_auto_20210628_2105.py +0 -1
- meta_subject/migrations/0054_auto_20210628_2314.py +0 -1
- meta_subject/migrations/0055_auto_20210628_2331.py +0 -1
- meta_subject/migrations/0056_auto_20210702_0426.py +0 -1
- meta_subject/migrations/0057_auto_20210702_0458.py +0 -1
- meta_subject/migrations/0058_auto_20210702_0533.py +0 -1
- meta_subject/migrations/0059_auto_20210709_2056.py +0 -1
- meta_subject/migrations/0060_auto_20210709_2241.py +0 -1
- meta_subject/migrations/0061_auto_20210710_1929.py +0 -1
- meta_subject/migrations/0062_auto_20210713_0616.py +0 -1
- meta_subject/migrations/0063_auto_20210715_0337.py +5 -6
- meta_subject/migrations/0064_auto_20210715_2336.py +0 -1
- meta_subject/migrations/0065_auto_20210716_0813.py +0 -1
- meta_subject/migrations/0066_auto_20210721_0335.py +9 -10
- meta_subject/migrations/0067_auto_20210726_0340.py +5 -6
- meta_subject/migrations/0068_auto_20210728_1809.py +5 -6
- meta_subject/migrations/0069_auto_20210801_2021.py +0 -1
- meta_subject/migrations/0070_auto_20210804_0438.py +0 -1
- meta_subject/migrations/0071_auto_20210804_0715.py +0 -1
- meta_subject/migrations/0072_auto_20210805_1545.py +7 -8
- meta_subject/migrations/0073_auto_20210809_0055.py +5 -6
- meta_subject/migrations/0075_auto_20210809_1744.py +0 -1
- meta_subject/migrations/0076_auto_20210809_1854.py +0 -1
- meta_subject/migrations/0077_auto_20210809_2323.py +3 -4
- meta_subject/migrations/0078_auto_20210810_0857.py +0 -1
- meta_subject/migrations/0079_auto_20210812_0335.py +0 -1
- meta_subject/migrations/0080_auto_20210812_0400.py +0 -1
- meta_subject/migrations/0081_auto_20210817_2306.py +0 -1
- meta_subject/migrations/0082_auto_20210823_1612.py +3 -4
- meta_subject/migrations/0083_auto_20210823_1620.py +3 -4
- meta_subject/migrations/0084_auto_20210910_0234.py +0 -1
- meta_subject/migrations/0085_auto_20210911_2036.py +0 -1
- meta_subject/migrations/0086_auto_20210920_0229.py +0 -1
- meta_subject/migrations/0087_auto_20210922_2058.py +0 -1
- meta_subject/migrations/0088_auto_20210924_0027.py +5 -6
- meta_subject/migrations/0089_auto_20210924_0121.py +0 -1
- meta_subject/migrations/0090_auto_20210924_0424.py +5 -6
- meta_subject/migrations/0091_auto_20210929_2324.py +0 -1
- meta_subject/migrations/0092_auto_20211013_0447.py +0 -1
- meta_subject/migrations/0093_auto_20211117_0352.py +5 -6
- meta_subject/migrations/0094_auto_20211123_1645.py +0 -1
- meta_subject/migrations/0095_auto_20220128_1719.py +5 -6
- meta_subject/migrations/0096_auto_20220304_0501.py +0 -1
- meta_subject/migrations/0097_auto_20220304_2233.py +0 -1
- meta_subject/migrations/0098_auto_20220309_2106.py +5 -6
- meta_subject/migrations/0099_auto_20220309_2218.py +0 -1
- meta_subject/migrations/0100_auto_20220309_2238.py +0 -1
- meta_subject/migrations/0101_auto_20220316_2147.py +13 -14
- meta_subject/migrations/0102_auto_20220324_0304.py +0 -1
- meta_subject/migrations/0103_auto_20220324_0326.py +0 -1
- meta_subject/migrations/0104_auto_20220412_2151.py +0 -1
- meta_subject/migrations/0105_auto_20220412_2310.py +0 -1
- meta_subject/migrations/0106_auto_20220414_1741.py +0 -1
- meta_subject/migrations/0107_auto_20220415_0043.py +28 -23
- meta_subject/migrations/0108_auto_20220415_1747.py +0 -1
- meta_subject/migrations/0109_auto_20220415_1758.py +0 -1
- meta_subject/migrations/0110_auto_20220512_1811.py +0 -1
- meta_subject/migrations/0111_alter_followupvitals_severe_htn_and_more.py +0 -1
- meta_subject/migrations/0112_historicalsubjectvisit_document_status_comments_and_more.py +0 -1
- meta_subject/migrations/0113_bloodresultsrft_egfr_percent_change_and_more.py +0 -1
- meta_subject/migrations/0114_alter_bloodresultsrft_egfr_percent_change_and_more.py +0 -1
- meta_subject/migrations/0115_historicalegfrnotification_egfrnotification.py +5 -14
- meta_subject/migrations/0116_egfrnotification_report_status_and_more.py +0 -1
- meta_subject/migrations/0117_alter_egfrnotification_managers_and_more.py +0 -1
- meta_subject/migrations/0118_delivery_crf_status_delivery_crf_status_comments_and_more.py +0 -1
- meta_subject/migrations/0119_historicalstudymedication_roundup_divisible_by_and_more.py +0 -1
- meta_subject/migrations/0120_alter_birthoutcomes_managers_and_more.py +0 -1
- meta_subject/migrations/0121_auto_20220704_1841.py +0 -1
- meta_subject/migrations/0122_auto_20220708_2144.py +0 -1
- meta_subject/migrations/0123_auto_20220714_2136.py +0 -1
- meta_subject/migrations/0124_auto_20220714_2303.py +0 -1
- meta_subject/migrations/0125_auto_20220719_2134.py +0 -1
- meta_subject/migrations/0126_auto_20220719_2142.py +4 -5
- meta_subject/migrations/0127_auto_20220720_0053.py +0 -1
- meta_subject/migrations/0128_auto_20220720_0055.py +1 -2
- meta_subject/migrations/0129_auto_20220720_0108.py +0 -1
- meta_subject/migrations/0130_auto_20220720_0216.py +0 -1
- meta_subject/migrations/0131_auto_20220722_0411.py +29 -25
- meta_subject/migrations/0132_auto_20220722_1825.py +10 -7
- meta_subject/migrations/0133_auto_20220722_2140.py +0 -1
- meta_subject/migrations/0134_auto_20220722_2211.py +0 -1
- meta_subject/migrations/0135_auto_20220722_2212.py +41 -37
- meta_subject/migrations/0136_egfrdropnotification_creatinine_quantifier_and_more.py +0 -1
- meta_subject/migrations/0137_alter_egfrdropnotification_egfr_percent_change_and_more.py +0 -1
- meta_subject/migrations/0138_alter_glucose_fbg_datetime_and_more.py +0 -1
- meta_subject/migrations/0139_alter_bloodresultsins_ins_units_and_more.py +0 -1
- meta_subject/migrations/0140_alter_bloodresultsfbc_action_identifier_and_more.py +0 -1
- meta_subject/migrations/0141_auto_20220826_0258.py +0 -1
- meta_subject/migrations/0142_auto_20220826_0322.py +0 -1
- meta_subject/migrations/0143_auto_20220826_0406.py +0 -1
- meta_subject/migrations/0144_auto_20220907_0157.py +0 -1
- meta_subject/migrations/0145_auto_20220907_0202.py +0 -1
- meta_subject/migrations/0146_auto_20220907_0207.py +0 -1
- meta_subject/migrations/0147_auto_20220907_1505.py +0 -1
- meta_subject/migrations/0148_auto_20220908_1826.py +0 -1
- meta_subject/migrations/0149_auto_20220913_2139.py +0 -1
- meta_subject/migrations/0150_auto_20220914_0039.py +15 -13
- meta_subject/migrations/0151_auto_20220918_0508.py +0 -1
- meta_subject/migrations/0152_auto_20220925_0509.py +0 -1
- meta_subject/migrations/0153_auto_20220928_0250.py +0 -1
- meta_subject/migrations/0154_auto_20220928_0419.py +0 -1
- meta_subject/migrations/0155_auto_20220929_1742.py +0 -1
- meta_subject/migrations/0156_alter_bloodresultsfbc_assay_datetime_and_more.py +153 -0
- meta_subject/migrations/0157_remove_bloodresultsfbc_crf_status_and_more.py +512 -0
- meta_subject/migrations/0158_alter_followupexamination_attended_clinic_and_more.py +52 -0
- meta_subject/migrations/0159_alter_bloodresultsfbc_results_abnormal_and_more.py +152 -0
- meta_subject/migrations/0160_alter_healtheconomicssimple_education_certificate_and_more.py +44 -0
- meta_subject/migrations/0161_alter_birthoutcomes_options_and_more.py +3307 -0
- meta_subject/migrations/0162_alter_followupexamination_abdominal_tenderness_and_more.py +66 -0
- meta_subject/migrations/0163_alter_birthoutcomes_options_and_more.py +3470 -0
- meta_subject/migrations/0164_dmreferralfollowup_historicaldmreferralfollowup.py +709 -0
- meta_subject/migrations/0165_alter_dmreferralfollowup_healthcare_workers.py +22 -0
- meta_subject/migrations/0166_rename_dm_medications_other_dmreferralfollowup_other_dm_medications_and_more.py +184 -0
- meta_subject/migrations/0167_rename_healthcare_workers_other_dmreferralfollowup_other_healthcare_workers_and_more.py +25 -0
- meta_subject/migrations/0168_alter_dmreferralfollowup_last_missed_pill_and_more.py +53 -0
- meta_subject/migrations/0169_alter_dmreferralfollowup_options_and_more.py +94 -0
- meta_subject/migrations/0170_remove_glucose_repeat_fbg_and_more.py +52 -0
- meta_subject/migrations/0171_alter_glucose_endpoint_today_and_more.py +80 -0
- meta_subject/migrations/0172_remove_historicalbloodresultsglu_action_item_and_more.py +67 -0
- meta_subject/migrations/0173_alter_glucosefbg_options_and_more.py +117 -0
- meta_subject/migrations/0174_remove_glucosefbg_glucose_abnormal_and_more.py +105 -0
- meta_subject/migrations/0175_auto_20240214_2239.py +23 -0
- meta_subject/migrations/0176_alter_glucosefbg_glucose_value_and_more.py +44 -0
- meta_subject/migrations/0177_alter_bloodresultslft_alp_value_and_more.py +91 -0
- meta_subject/migrations/0178_historicalhealtheconomicsupdate_and_more.py +719 -0
- meta_subject/migrations/0179_alter_birthoutcomes_consent_model_and_more.py +835 -0
- meta_subject/migrations/0180_dmreferralfollowup_missed_referral_reasons_and_more.py +62 -0
- meta_subject/migrations/0181_dmreferralfollowup_action_identifier_and_more.py +143 -0
- meta_subject/migrations/0182_rename_dmreferralfollowup_dmfollowup_and_more.py +54 -0
- meta_subject/migrations/0183_alter_dmfollowup_on_dm_medications_and_more.py +31 -0
- meta_subject/migrations/0184_alter_glucose_options_and_more.py +31 -0
- meta_subject/migrations/0185_alter_bloodresultsins_fasting_duration_str_and_more.py +82 -0
- meta_subject/migrations/0186_healtheconomicsupdate_singleton_field_and_more.py +54 -0
- meta_subject/migrations/0187_dmdiagnosis_historicaldmdiagnosis_dmdxresult_and_more.py +442 -0
- meta_subject/migrations/0188_historicaldmdxresult_dmdxresult.py +394 -0
- meta_subject/migrations/0189_alter_dmdxresult_options_and_more.py +116 -0
- meta_subject/migrations/0190_dmdiagnosis_dx_no_tmg_reason_and_more.py +65 -0
- meta_subject/migrations/0191_alter_dmdiagnosis_dx_no_tmg_reason_and_more.py +70 -0
- meta_subject/migrations/0192_rename_glucose_quantifier_glucosefbg_fbg_quantifier_and_more.py +44 -0
- meta_subject/migrations/0193_alter_glucosefbg_fbg_value_and_more.py +44 -0
- meta_subject/migrations/0194_remove_glucosefbg_assay_datetime_and_more.py +166 -0
- meta_subject/migrations/0195_alter_glucosefbg_fbg_datetime_and_more.py +27 -0
- meta_subject/migrations/0196_glucosefbg_fbg_not_performed_reason_and_more.py +49 -0
- meta_subject/migrations/0197_glucosefbg_fasting_duration_estimated_and_more.py +33 -0
- meta_subject/migrations/0198_alter_glucosefbg_fasting_duration_estimated_and_more.py +33 -0
- meta_subject/migrations/0199_auto_20240516_0247.py +18 -0
- meta_subject/migrations/0200_rename_fasting_duration_minutes_bloodresultsins_fasting_duration_delta_and_more.py +43 -0
- meta_subject/migrations/0201_alter_bloodresultsins_fasting_duration_delta_and_more.py +58 -0
- meta_subject/migrations/0202_auto_20240516_0315.py +32 -0
- meta_subject/migrations/0203_alter_bloodresultsins_fasting_duration_delta_and_more.py +67 -0
- meta_subject/migrations/0204_glucosefbg_repeat_fbg_date_and_more.py +27 -0
- meta_subject/migrations/0205_historicalsubjectrequisition_crf_status_and_more.py +80 -0
- meta_subject/migrations/0206_bloodresultsfbc_crf_status_and_more.py +62 -0
- meta_subject/migrations/0207_alter_historicalphysicalexam_waist_circumference_and_more.py +46 -0
- meta_subject/migrations/0208_birthoutcomes_crf_status_and_more.py +62 -0
- meta_subject/migrations/0209_remove_historicaldmdxresult_dm_diagnosis_and_more.py +36 -0
- meta_subject/migrations/0210_remove_dmdxresult_dm_diagnosis_and_more.py +123 -0
- meta_subject/migrations/0211_dmendpoint_endpoint_reached_and_more.py +45 -0
- meta_subject/migrations/0212_auto_20240827_2222.py +23 -0
- meta_subject/migrations/0213_rename_bloodresultslipid_bloodresultslipids_and_more.py +35 -0
- meta_subject/migrations/0214_historicalstudymedication_stock_codes_and_more.py +44 -0
- meta_subject/migrations/0215_alter_historicalstudymedication_stock_codes_and_more.py +46 -0
- 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 +5 -46
- 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 -1
- meta_subject/models/__init__.py +61 -4
- meta_subject/models/birth_outcomes.py +17 -8
- meta_subject/models/blood_results/__init__.py +12 -2
- meta_subject/models/blood_results/blood_results_fbc.py +9 -4
- meta_subject/models/blood_results/blood_results_glu.py +9 -4
- meta_subject/models/blood_results/blood_results_hba1c.py +8 -2
- meta_subject/models/blood_results/blood_results_ins.py +8 -2
- meta_subject/models/blood_results/blood_results_lft.py +8 -2
- meta_subject/models/blood_results/{blood_results_lipid.py → blood_results_lipids.py} +11 -4
- meta_subject/models/blood_results/blood_results_rft.py +7 -1
- meta_subject/models/complications.py +1 -3
- meta_subject/models/complications_glycemia.py +3 -4
- meta_subject/models/concomitant_medication.py +0 -1
- meta_subject/models/delivery.py +4 -6
- meta_subject/models/diabetes/__init__.py +4 -0
- meta_subject/models/diabetes/dm_endpoint.py +61 -0
- meta_subject/models/diabetes/dm_followup.py +215 -0
- meta_subject/models/diet_and_lifestyle.py +5 -5
- meta_subject/models/egfr_drop_notification.py +0 -1
- meta_subject/models/followup_examination.py +28 -32
- meta_subject/models/followup_vitals.py +3 -4
- meta_subject/models/glucose.py +50 -15
- meta_subject/models/glucose_fbg.py +74 -0
- meta_subject/models/glucose_review.py +15 -0
- meta_subject/models/health_economics/__init__.py +5 -0
- meta_subject/models/{health_economics.py → health_economics/health_economics.py} +13 -14
- meta_subject/models/{health_economics_simple.py → health_economics/health_economics_simple.py} +3 -4
- meta_subject/models/health_economics/health_economics_update.py +97 -0
- meta_subject/models/hepatitis_test.py +2 -3
- meta_subject/models/hiv_exit_review.py +44 -0
- meta_subject/models/malaria_test.py +3 -31
- meta_subject/models/next_appointment.py +15 -0
- meta_subject/models/off_study_drug.py +0 -1
- meta_subject/models/other_arv_regimens_detail.py +3 -5
- meta_subject/models/patient_history.py +6 -8
- meta_subject/models/physical_exam.py +6 -6
- meta_subject/models/pregnancy_update.py +1 -2
- meta_subject/models/sf12.py +0 -3
- meta_subject/models/signals.py +32 -11
- meta_subject/models/study_medication.py +0 -1
- meta_subject/models/subject_requisition.py +3 -5
- meta_subject/models/subject_visit.py +5 -8
- meta_subject/models/subject_visit_missed.py +0 -1
- meta_subject/models/todo.txt +1 -1
- meta_subject/models/urine_dipstick_test.py +2 -3
- meta_subject/models/urine_pregnancy.py +1 -2
- meta_subject/static/meta_subject/slider.css +1 -1
- meta_subject/templates/meta_subject/endpoint_review_instructions.html +6 -0
- meta_subject/templates/meta_subject/widgets/slider.html +0 -1
- meta_visit_schedule/constants.py +7 -1
- meta_visit_schedule/visit_schedules/__init__.py +3 -1
- meta_visit_schedule/visit_schedules/phase_three/__init__.py +2 -0
- meta_visit_schedule/visit_schedules/phase_three/crfs.py +212 -95
- meta_visit_schedule/visit_schedules/phase_three/crfs_pregnancy.py +2 -2
- meta_visit_schedule/visit_schedules/phase_three/requisitions.py +30 -51
- meta_visit_schedule/visit_schedules/phase_three/schedule.py +72 -7
- meta_visit_schedule/visit_schedules/phase_three/schedule_dm_referral.py +59 -0
- meta_visit_schedule/visit_schedules/phase_three/schedule_pregnancy.py +7 -5
- meta_visit_schedule/visit_schedules/phase_three/visit_schedule.py +3 -1
- meta_ae/pdf_reports/ae_report.py +0 -8
- meta_ae/pdf_reports/death_report.py +0 -8
- meta_ae/tests/holidays.csv +0 -15
- meta_ae/tests/tests/test_actions.py +0 -127
- meta_ae/tests/urls.py +0 -10
- meta_consent/admin/subject_reconsent_admin.py +0 -77
- meta_consent/tests/holidays.csv +0 -15
- meta_consent/tests/tests/test_form_validators.py +0 -85
- meta_consent/tests/tests/test_subject_consent.py +0 -10
- meta_consent/tests/urls.py +0 -18
- meta_dashboard/model_wrappers/__init__.py +0 -8
- meta_dashboard/model_wrappers/ae_initial_model_wrapper.py +0 -6
- meta_dashboard/model_wrappers/death_report_model_wrapper.py +0 -15
- meta_dashboard/model_wrappers/subject_refusal_model_wrapper.py +0 -16
- meta_dashboard/model_wrappers/subject_screening_model_wrapper.py +0 -85
- meta_dashboard/templates/meta_dashboard/bootstrap3/subject/dashboard.html +0 -11
- meta_dashboard/tests/admin.py +0 -22
- meta_dashboard/tests/holidays.csv +0 -15
- meta_dashboard/tests/tests/test_model_wrappers.py +0 -71
- meta_dashboard/tests/urls.py +0 -59
- meta_edc/tests/etc/randomization_list_phase_three.csv +0 -241
- meta_edc/tests/etc/user-aes-local.key +0 -1
- meta_edc/tests/etc/user-aes-restricted.key +0 -0
- meta_edc/tests/etc/user-rsa-local-private.pem +0 -27
- meta_edc/tests/etc/user-rsa-local-public.pem +0 -9
- meta_edc/tests/etc/user-rsa-restricted-private.pem +0 -27
- meta_edc/tests/etc/user-rsa-restricted-public.pem +0 -9
- meta_edc/tests/etc/user-salt-local.key +0 -0
- meta_edc/tests/etc/user-salt-restricted.key +0 -0
- meta_edc/tests/tests/test_endpoints.py +0 -525
- meta_edc-0.2.24.dist-info/METADATA +0 -180
- meta_edc-0.2.24.dist-info/RECORD +0 -849
- meta_edc-0.2.24.dist-info/WHEEL +0 -5
- meta_edc-0.2.24.dist-info/top_level.txt +0 -19
- 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/test_lists.py +0 -8
- meta_pharmacy/models.py +0 -0
- 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_manager_order.py +0 -15
- meta_prn/tests/tests/test_pregnancy_notification.py +0 -94
- 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 -58
- meta_reference/__init__.py +0 -0
- meta_reference/apps.py +0 -6
- meta_reference/migrations/__init__.py +0 -0
- meta_reference/reference_model_configs.py +0 -5
- meta_reports/models.py +0 -0
- meta_reports/tests/__init__.py +0 -0
- meta_reports/tests/holidays.csv +0 -15
- meta_reports/tests/test_reports.py +0 -36
- 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 -214
- meta_screening/tests/options.py +0 -124
- 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 -437
- meta_screening/tests/tests/test_screening_part_two.py +0 -86
- meta_sites/tests/__init__.py +0 -0
- meta_sites/tests/test_sites.py +0 -16
- meta_sites/tests/urls.py +0 -4
- meta_subject/admin/blood_results/blood_results_glu_admin.py +0 -30
- meta_subject/admin/blood_results/blood_results_lipid_admin.py +0 -21
- meta_subject/forms/blood_results/blood_results_glu_form.py +0 -26
- meta_subject/forms/health_economics_simple_form.py +0 -19
- 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 -222
- meta_subject/tests/tests/test_followup.py +0 -50
- meta_subject/tests/tests/test_manager_order.py +0 -31
- meta_subject/tests/tests/test_medication_adherence.py +0 -72
- meta_subject/tests/tests/test_metadata_rules.py +0 -105
- meta_subject/tests/tests/test_mnsi.py +0 -246
- meta_subject/tests/tests/test_patient_history_form.py +0 -71
- meta_subject/tests/tests/test_physical_exam.py +0 -81
- meta_subject/tests/tests/test_sf12.py +0 -164
- meta_subject/tests/tests/test_study_medication.py +0 -230
- meta_subject/tests/urls.py +0 -25
- 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 -177
- meta_visit_schedule/tests/urls.py +0 -4
- tests/__init__.py +0 -0
- tests/etc/randomization_list.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
- /meta_ae/templates/meta_ae/{bootstrap3/ae_initial_description.html → aeinitial_description.html} +0 -0
- {meta_ae/tests → meta_analytics}/__init__.py +0 -0
- /meta_ae/tests/tests/__init__.py → /meta_analytics/constants.py +0 -0
- {meta_consent/tests → meta_analytics/tables/enrolled}/__init__.py +0 -0
- /meta_dashboard/templates/meta_dashboard/{bootstrap3/buttons → buttons}/add_consent_button.html +0 -0
- /meta_dashboard/templates/meta_dashboard/{bootstrap3/buttons → buttons}/refusal_button.html +0 -0
- {meta_consent/tests/tests → meta_edc/migrations}/__init__.py +0 -0
- {meta_edc-0.2.24.dist-info → meta_edc-1.4.0.dist-info/licenses}/LICENSE +0 -0
- {meta_dashboard/tests → meta_pharmacy/management}/__init__.py +0 -0
- {meta_dashboard/tests/tests → meta_pharmacy/management/commands}/__init__.py +0 -0
- {meta_edc/tests → meta_reports/management}/__init__.py +0 -0
- {meta_edc/tests/tests → meta_reports/management/commands}/__init__.py +0 -0
- /meta_edc-0.2.24.dist-info/AUTHORS → /meta_reports/utils.py +0 -0
- /meta_labs/tests/__init__.py → /meta_subject/management/__init__py.py +0 -0
- /meta_lists/tests/__init__.py → /meta_subject/management/commands/__init__py.py +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Generated by Django 5.0.8 on 2024-08-28 23:50
|
|
2
|
+
|
|
3
|
+
import django_db_views.migration_functions
|
|
4
|
+
import django_db_views.operations
|
|
5
|
+
from django.db import migrations
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Migration(migrations.Migration):
|
|
9
|
+
|
|
10
|
+
dependencies = [
|
|
11
|
+
("meta_reports", "0045_auto_20240829_0248"),
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
operations = [
|
|
15
|
+
django_db_views.operations.ViewRunPython(
|
|
16
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
17
|
+
"select *, uuid() as id, now() as `created`, 'onstudy_missing_values_view' as `report_model` from (SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No HIV Diagnosis date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.hiv_diagnosis_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No VL value or VL date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.viral_load IS NULL OR crf.viral_load_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No CD4 value or CD4 date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.cd4 IS NULL OR crf.cd4_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No current ARV start date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.current_arv_regimen_start_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No current ARV start date but previous ARV is YES' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.has_previous_arv_regimen = 'Yes' AND crf.current_arv_regimen_start_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'Other current ARV regimen missing' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id LEFT JOIN meta_lists_arvregimens AS arvregimen ON crf.current_arv_regimen_id = arvregimen.id WHERE crf.other_current_arv_regimen IS NULL AND arvregimen.name = 'OTHER' GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.glucose' AS label_lower, 'FBG/OGTT: missing OGTT' AS label, COUNT(*) AS records FROM meta_subject_glucose AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE (NOT crf.fbg_value IS NULL AND crf.ogtt_value IS NULL) AND ogtt_performed = 'Yes' GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified) as A ORDER BY subject_identifier, site_id",
|
|
18
|
+
"onstudy_missing_values_view",
|
|
19
|
+
engine="django.db.backends.mysql",
|
|
20
|
+
),
|
|
21
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
22
|
+
"select *, uuid() as id, now() as `created`, 'onstudy_missing_values_view' as `report_model` from (SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No HIV Diagnosis date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.hiv_diagnosis_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No VL value' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.viral_load IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No VL date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.viral_load_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No CD4 value' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.cd4 IS NULL OR crf.cd4_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No current ARV start date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.current_arv_regimen_start_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No current ARV start date but previous ARV is YES' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.has_previous_arv_regimen = 'Yes' AND crf.current_arv_regimen_start_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'Other current ARV regimen missing' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id LEFT JOIN meta_lists_arvregimens AS arvregimen ON crf.current_arv_regimen_id = arvregimen.id WHERE crf.other_current_arv_regimen IS NULL AND arvregimen.name = 'OTHER' GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.glucose' AS label_lower, 'FBG/OGTT: missing OGTT' AS label, COUNT(*) AS records FROM meta_subject_glucose AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE (NOT crf.fbg_value IS NULL AND crf.ogtt_value IS NULL) AND ogtt_performed = 'Yes' GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified) as A ORDER BY subject_identifier, site_id",
|
|
23
|
+
"onstudy_missing_values_view",
|
|
24
|
+
engine="django.db.backends.mysql",
|
|
25
|
+
),
|
|
26
|
+
atomic=False,
|
|
27
|
+
),
|
|
28
|
+
django_db_views.operations.ViewRunPython(
|
|
29
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
30
|
+
"select *, get_random_uuid() as id, now() as created, 'onstudy_missing_values_view' as report_model from (SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No HIV Diagnosis date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.hiv_diagnosis_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No VL value or VL date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.viral_load IS NULL OR crf.viral_load_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No CD4 value or CD4 date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.cd4 IS NULL OR crf.cd4_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No current ARV start date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.current_arv_regimen_start_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No current ARV start date but previous ARV is YES' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.has_previous_arv_regimen = 'Yes' AND crf.current_arv_regimen_start_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'Other current ARV regimen missing' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id LEFT JOIN meta_lists_arvregimens AS arvregimen ON crf.current_arv_regimen_id = arvregimen.id WHERE crf.other_current_arv_regimen IS NULL AND arvregimen.name = 'OTHER' GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.glucose' AS label_lower, 'FBG/OGTT: missing OGTT' AS label, COUNT(*) AS records FROM meta_subject_glucose AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE (NOT crf.fbg_value IS NULL AND crf.ogtt_value IS NULL) AND ogtt_performed = 'Yes' GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified) as A ORDER BY subject_identifier, site_id",
|
|
31
|
+
"onstudy_missing_values_view",
|
|
32
|
+
engine="django.db.backends.postgresql",
|
|
33
|
+
),
|
|
34
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
35
|
+
"select *, get_random_uuid() as id, now() as created, 'onstudy_missing_values_view' as report_model from (SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No HIV Diagnosis date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.hiv_diagnosis_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No VL value' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.viral_load IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No VL date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.viral_load_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No CD4 value' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.cd4 IS NULL OR crf.cd4_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No current ARV start date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.current_arv_regimen_start_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No current ARV start date but previous ARV is YES' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.has_previous_arv_regimen = 'Yes' AND crf.current_arv_regimen_start_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'Other current ARV regimen missing' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id LEFT JOIN meta_lists_arvregimens AS arvregimen ON crf.current_arv_regimen_id = arvregimen.id WHERE crf.other_current_arv_regimen IS NULL AND arvregimen.name = 'OTHER' GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.glucose' AS label_lower, 'FBG/OGTT: missing OGTT' AS label, COUNT(*) AS records FROM meta_subject_glucose AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE (NOT crf.fbg_value IS NULL AND crf.ogtt_value IS NULL) AND ogtt_performed = 'Yes' GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified) as A ORDER BY subject_identifier, site_id",
|
|
36
|
+
"onstudy_missing_values_view",
|
|
37
|
+
engine="django.db.backends.postgresql",
|
|
38
|
+
),
|
|
39
|
+
atomic=False,
|
|
40
|
+
),
|
|
41
|
+
django_db_views.operations.ViewRunPython(
|
|
42
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
43
|
+
"select *, uuid() as id, datetime() as created, 'onstudy_missing_values_view' as report_model from (SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No HIV Diagnosis date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.hiv_diagnosis_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No VL value or VL date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.viral_load IS NULL OR crf.viral_load_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No CD4 value or CD4 date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.cd4 IS NULL OR crf.cd4_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No current ARV start date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.current_arv_regimen_start_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No current ARV start date but previous ARV is YES' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.has_previous_arv_regimen = 'Yes' AND crf.current_arv_regimen_start_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'Other current ARV regimen missing' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id LEFT JOIN meta_lists_arvregimens AS arvregimen ON crf.current_arv_regimen_id = arvregimen.id WHERE crf.other_current_arv_regimen IS NULL AND arvregimen.name = 'OTHER' GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.glucose' AS label_lower, 'FBG/OGTT: missing OGTT' AS label, COUNT(*) AS records FROM meta_subject_glucose AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE (NOT crf.fbg_value IS NULL AND crf.ogtt_value IS NULL) AND ogtt_performed = 'Yes' GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified) as A ORDER BY subject_identifier, site_id",
|
|
44
|
+
"onstudy_missing_values_view",
|
|
45
|
+
engine="django.db.backends.sqlite3",
|
|
46
|
+
),
|
|
47
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
48
|
+
"select *, uuid() as id, datetime() as created, 'onstudy_missing_values_view' as report_model from (SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No HIV Diagnosis date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.hiv_diagnosis_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No VL value' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.viral_load IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No VL date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.viral_load_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No CD4 value' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.cd4 IS NULL OR crf.cd4_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No current ARV start date' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.current_arv_regimen_start_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'No current ARV start date but previous ARV is YES' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE crf.has_previous_arv_regimen = 'Yes' AND crf.current_arv_regimen_start_date IS NULL GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.patienthistory' AS label_lower, 'Other current ARV regimen missing' AS label, COUNT(*) AS records FROM meta_subject_patienthistory AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id LEFT JOIN meta_lists_arvregimens AS arvregimen ON crf.current_arv_regimen_id = arvregimen.id WHERE crf.other_current_arv_regimen IS NULL AND arvregimen.name = 'OTHER' GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified UNION SELECT v.subject_identifier, crf.id AS original_id, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified, 'meta_subject.glucose' AS label_lower, 'FBG/OGTT: missing OGTT' AS label, COUNT(*) AS records FROM meta_subject_glucose AS crf LEFT JOIN meta_subject_subjectvisit AS v ON v.id = crf.subject_visit_id WHERE (NOT crf.fbg_value IS NULL AND crf.ogtt_value IS NULL) AND ogtt_performed = 'Yes' GROUP BY v.subject_identifier, crf.subject_visit_id, crf.report_datetime, crf.site_id, v.visit_code, v.visit_code_sequence, v.schedule_name, crf.modified) as A ORDER BY subject_identifier, site_id",
|
|
49
|
+
"onstudy_missing_values_view",
|
|
50
|
+
engine="django.db.backends.sqlite3",
|
|
51
|
+
),
|
|
52
|
+
atomic=False,
|
|
53
|
+
),
|
|
54
|
+
]
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Generated by Django 5.1 on 2024-09-09 20:37
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
("meta_reports", "0046_auto_20240829_0250"),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.CreateModel(
|
|
14
|
+
name="ImpSubstitutions",
|
|
15
|
+
fields=[
|
|
16
|
+
(
|
|
17
|
+
"id",
|
|
18
|
+
models.BigAutoField(
|
|
19
|
+
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
20
|
+
),
|
|
21
|
+
),
|
|
22
|
+
("report_model", models.CharField(max_length=50)),
|
|
23
|
+
("subject_identifier", models.CharField(max_length=25)),
|
|
24
|
+
("created", models.DateTimeField()),
|
|
25
|
+
("original_id", models.UUIDField(null=True)),
|
|
26
|
+
("sid", models.IntegerField(null=True, verbose_name="Original SID")),
|
|
27
|
+
(
|
|
28
|
+
"dispensed_sid",
|
|
29
|
+
models.IntegerField(null=True, verbose_name="Dispensed SID"),
|
|
30
|
+
),
|
|
31
|
+
(
|
|
32
|
+
"arm_match",
|
|
33
|
+
models.CharField(
|
|
34
|
+
choices=[
|
|
35
|
+
("Yes", "Yes"),
|
|
36
|
+
("No", "No"),
|
|
37
|
+
("not_evaluated", "Not evaluated"),
|
|
38
|
+
],
|
|
39
|
+
default="not_evaluated",
|
|
40
|
+
max_length=15,
|
|
41
|
+
),
|
|
42
|
+
),
|
|
43
|
+
("allocated_datetime", models.DateTimeField(null=True)),
|
|
44
|
+
("user_created", models.CharField(max_length=25)),
|
|
45
|
+
("user_modified", models.CharField(max_length=25)),
|
|
46
|
+
("modified", models.DateTimeField(null=True)),
|
|
47
|
+
],
|
|
48
|
+
options={
|
|
49
|
+
"verbose_name": "IMP Substitutions",
|
|
50
|
+
"verbose_name_plural": "IMP Substitutions",
|
|
51
|
+
"db_table": "imp_subjectitutions_view",
|
|
52
|
+
"managed": False,
|
|
53
|
+
"default_permissions": ("view", "export", "viewallsites"),
|
|
54
|
+
},
|
|
55
|
+
),
|
|
56
|
+
]
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Generated by Django 5.1 on 2024-09-09 20:38
|
|
2
|
+
|
|
3
|
+
import django_db_views.migration_functions
|
|
4
|
+
import django_db_views.operations
|
|
5
|
+
from django.db import migrations
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Migration(migrations.Migration):
|
|
9
|
+
|
|
10
|
+
dependencies = [
|
|
11
|
+
("meta_reports", "0047_impsubstitutions"),
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
operations = [
|
|
15
|
+
django_db_views.operations.ViewRunPython(
|
|
16
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
17
|
+
"select *, uuid() as id, now() as `created`, 'meta_reports.imp_subjectitutions_view' as `report_model` from (SELECT s.subject_identifier, s.sid, s.dispensed_sid, arm_match, r.allocated_datetime, s.site_id, s.user_created, s.user_modified, s.modified, s.id AS original_id FROM meta_pharmacy_substitutions AS s LEFT JOIN meta_rando_randomizationlist AS r ON r.subject_identifier = s.subject_identifier ORDER BY s.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
18
|
+
"imp_subjectitutions_view",
|
|
19
|
+
engine="django.db.backends.mysql",
|
|
20
|
+
),
|
|
21
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
22
|
+
"", "imp_subjectitutions_view", engine="django.db.backends.mysql"
|
|
23
|
+
),
|
|
24
|
+
atomic=False,
|
|
25
|
+
),
|
|
26
|
+
django_db_views.operations.ViewRunPython(
|
|
27
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
28
|
+
"select *, get_random_uuid() as id, now() as created, 'meta_reports.imp_subjectitutions_view' as report_model from (SELECT s.subject_identifier, s.sid, s.dispensed_sid, arm_match, r.allocated_datetime, s.site_id, s.user_created, s.user_modified, s.modified, s.id AS original_id FROM meta_pharmacy_substitutions AS s LEFT JOIN meta_rando_randomizationlist AS r ON r.subject_identifier = s.subject_identifier ORDER BY s.subject_identifier NULLS FIRST) as A ORDER BY subject_identifier, site_id",
|
|
29
|
+
"imp_subjectitutions_view",
|
|
30
|
+
engine="django.db.backends.postgresql",
|
|
31
|
+
),
|
|
32
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
33
|
+
"", "imp_subjectitutions_view", engine="django.db.backends.postgresql"
|
|
34
|
+
),
|
|
35
|
+
atomic=False,
|
|
36
|
+
),
|
|
37
|
+
django_db_views.operations.ViewRunPython(
|
|
38
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
39
|
+
"select *, uuid() as id, datetime() as created, 'meta_reports.imp_subjectitutions_view' as report_model from (SELECT s.subject_identifier, s.sid, s.dispensed_sid, arm_match, r.allocated_datetime, s.site_id, s.user_created, s.user_modified, s.modified, s.id AS original_id FROM meta_pharmacy_substitutions AS s LEFT JOIN meta_rando_randomizationlist AS r ON r.subject_identifier = s.subject_identifier ORDER BY s.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
40
|
+
"imp_subjectitutions_view",
|
|
41
|
+
engine="django.db.backends.sqlite3",
|
|
42
|
+
),
|
|
43
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
44
|
+
"", "imp_subjectitutions_view", engine="django.db.backends.sqlite3"
|
|
45
|
+
),
|
|
46
|
+
atomic=False,
|
|
47
|
+
),
|
|
48
|
+
]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Generated by Django 5.1 on 2024-09-11 00:27
|
|
2
|
+
|
|
3
|
+
import django_db_views.migration_functions
|
|
4
|
+
import django_db_views.operations
|
|
5
|
+
from django.db import migrations
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Migration(migrations.Migration):
|
|
9
|
+
|
|
10
|
+
dependencies = [
|
|
11
|
+
("meta_reports", "0048_auto_20240909_2338"),
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
operations = [
|
|
15
|
+
django_db_views.operations.ViewRunPython(
|
|
16
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
17
|
+
"select *, uuid() as id, now() as `created`, 'meta_reports.imp_subjectitutions_view' as `report_model` from (SELECT s.subject_identifier, s.sid, s.dispensed_sid, arm_match, s.report_datetime, r.allocated_datetime, s.site_id, s.user_created, s.user_modified, s.modified, s.id AS original_id FROM meta_pharmacy_substitutions AS s LEFT JOIN meta_rando_randomizationlist AS r ON r.subject_identifier = s.subject_identifier ORDER BY s.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
18
|
+
"imp_subjectitutions_view",
|
|
19
|
+
engine="django.db.backends.mysql",
|
|
20
|
+
),
|
|
21
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
22
|
+
"select *, uuid() as id, now() as `created`, 'meta_reports.imp_subjectitutions_view' as `report_model` from (SELECT s.subject_identifier, s.sid, s.dispensed_sid, arm_match, r.allocated_datetime, s.site_id, s.user_created, s.user_modified, s.modified, s.id AS original_id FROM meta_pharmacy_substitutions AS s LEFT JOIN meta_rando_randomizationlist AS r ON r.subject_identifier = s.subject_identifier ORDER BY s.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
23
|
+
"imp_subjectitutions_view",
|
|
24
|
+
engine="django.db.backends.mysql",
|
|
25
|
+
),
|
|
26
|
+
atomic=False,
|
|
27
|
+
),
|
|
28
|
+
django_db_views.operations.ViewRunPython(
|
|
29
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
30
|
+
"select *, get_random_uuid() as id, now() as created, 'meta_reports.imp_subjectitutions_view' as report_model from (SELECT s.subject_identifier, s.sid, s.dispensed_sid, arm_match, s.report_datetime, r.allocated_datetime, s.site_id, s.user_created, s.user_modified, s.modified, s.id AS original_id FROM meta_pharmacy_substitutions AS s LEFT JOIN meta_rando_randomizationlist AS r ON r.subject_identifier = s.subject_identifier ORDER BY s.subject_identifier NULLS FIRST) as A ORDER BY subject_identifier, site_id",
|
|
31
|
+
"imp_subjectitutions_view",
|
|
32
|
+
engine="django.db.backends.postgresql",
|
|
33
|
+
),
|
|
34
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
35
|
+
"select *, get_random_uuid() as id, now() as created, 'meta_reports.imp_subjectitutions_view' as report_model from (SELECT s.subject_identifier, s.sid, s.dispensed_sid, arm_match, r.allocated_datetime, s.site_id, s.user_created, s.user_modified, s.modified, s.id AS original_id FROM meta_pharmacy_substitutions AS s LEFT JOIN meta_rando_randomizationlist AS r ON r.subject_identifier = s.subject_identifier ORDER BY s.subject_identifier NULLS FIRST) as A ORDER BY subject_identifier, site_id",
|
|
36
|
+
"imp_subjectitutions_view",
|
|
37
|
+
engine="django.db.backends.postgresql",
|
|
38
|
+
),
|
|
39
|
+
atomic=False,
|
|
40
|
+
),
|
|
41
|
+
django_db_views.operations.ViewRunPython(
|
|
42
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
43
|
+
"select *, uuid() as id, datetime() as created, 'meta_reports.imp_subjectitutions_view' as report_model from (SELECT s.subject_identifier, s.sid, s.dispensed_sid, arm_match, s.report_datetime, r.allocated_datetime, s.site_id, s.user_created, s.user_modified, s.modified, s.id AS original_id FROM meta_pharmacy_substitutions AS s LEFT JOIN meta_rando_randomizationlist AS r ON r.subject_identifier = s.subject_identifier ORDER BY s.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
44
|
+
"imp_subjectitutions_view",
|
|
45
|
+
engine="django.db.backends.sqlite3",
|
|
46
|
+
),
|
|
47
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
48
|
+
"select *, uuid() as id, datetime() as created, 'meta_reports.imp_subjectitutions_view' as report_model from (SELECT s.subject_identifier, s.sid, s.dispensed_sid, arm_match, r.allocated_datetime, s.site_id, s.user_created, s.user_modified, s.modified, s.id AS original_id FROM meta_pharmacy_substitutions AS s LEFT JOIN meta_rando_randomizationlist AS r ON r.subject_identifier = s.subject_identifier ORDER BY s.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
49
|
+
"imp_subjectitutions_view",
|
|
50
|
+
engine="django.db.backends.sqlite3",
|
|
51
|
+
),
|
|
52
|
+
atomic=False,
|
|
53
|
+
),
|
|
54
|
+
]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Generated by Django 5.1 on 2024-10-07 22:02
|
|
2
|
+
|
|
3
|
+
import edc_utils.date
|
|
4
|
+
from django.db import migrations, models
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Migration(migrations.Migration):
|
|
8
|
+
|
|
9
|
+
dependencies = [
|
|
10
|
+
("meta_reports", "0049_auto_20240911_0327"),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.AlterField(
|
|
15
|
+
model_name="endpoints",
|
|
16
|
+
name="created",
|
|
17
|
+
field=models.DateTimeField(default=edc_utils.date.get_utcnow),
|
|
18
|
+
),
|
|
19
|
+
]
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Generated by Django 5.1 on 2024-10-09 16:04
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
("meta_reports", "0050_alter_endpoints_created"),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.RemoveField(
|
|
14
|
+
model_name="endpoints",
|
|
15
|
+
name="baseline_datetime",
|
|
16
|
+
),
|
|
17
|
+
migrations.RemoveField(
|
|
18
|
+
model_name="endpoints",
|
|
19
|
+
name="fbg_datetime",
|
|
20
|
+
),
|
|
21
|
+
migrations.RemoveField(
|
|
22
|
+
model_name="endpoints",
|
|
23
|
+
name="offstudy_datetime",
|
|
24
|
+
),
|
|
25
|
+
migrations.AddField(
|
|
26
|
+
model_name="endpoints",
|
|
27
|
+
name="baseline_date",
|
|
28
|
+
field=models.DateField(null=True),
|
|
29
|
+
),
|
|
30
|
+
migrations.AddField(
|
|
31
|
+
model_name="endpoints",
|
|
32
|
+
name="fbg_date",
|
|
33
|
+
field=models.DateField(null=True),
|
|
34
|
+
),
|
|
35
|
+
migrations.AddField(
|
|
36
|
+
model_name="endpoints",
|
|
37
|
+
name="offstudy_date",
|
|
38
|
+
field=models.DateField(null=True),
|
|
39
|
+
),
|
|
40
|
+
]
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Generated by Django 5.1.2 on 2024-10-16 00:53
|
|
2
|
+
|
|
3
|
+
import django.db.models.deletion
|
|
4
|
+
import edc_utils.date
|
|
5
|
+
from django.db import migrations, models
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Migration(migrations.Migration):
|
|
9
|
+
|
|
10
|
+
dependencies = [
|
|
11
|
+
("meta_reports", "0051_remove_endpoints_baseline_datetime_and_more"),
|
|
12
|
+
("sites", "0002_alter_domain_unique"),
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
operations = [
|
|
16
|
+
migrations.CreateModel(
|
|
17
|
+
name="LastImpVisit",
|
|
18
|
+
fields=[
|
|
19
|
+
(
|
|
20
|
+
"id",
|
|
21
|
+
models.BigAutoField(
|
|
22
|
+
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
|
23
|
+
),
|
|
24
|
+
),
|
|
25
|
+
("report_model", models.CharField(max_length=50)),
|
|
26
|
+
("subject_identifier", models.CharField(max_length=25)),
|
|
27
|
+
("created", models.DateTimeField(default=edc_utils.date.get_utcnow)),
|
|
28
|
+
("reference_date", models.DateField(null=True)),
|
|
29
|
+
("imp_visit_code", models.FloatField(null=True)),
|
|
30
|
+
("imp_visit_date", models.DateField(null=True)),
|
|
31
|
+
("next_visit_code", models.FloatField(null=True)),
|
|
32
|
+
("next_appt_date", models.DateField(null=True)),
|
|
33
|
+
("visit_code", models.CharField(max_length=15, null=True)),
|
|
34
|
+
("visit_code_sequence", models.IntegerField(null=True)),
|
|
35
|
+
("days_since", models.IntegerField(null=True)),
|
|
36
|
+
("days_until", models.IntegerField(null=True)),
|
|
37
|
+
(
|
|
38
|
+
"site",
|
|
39
|
+
models.ForeignKey(
|
|
40
|
+
on_delete=django.db.models.deletion.DO_NOTHING, to="sites.site"
|
|
41
|
+
),
|
|
42
|
+
),
|
|
43
|
+
],
|
|
44
|
+
options={
|
|
45
|
+
"verbose_name": "Last IMP Visit",
|
|
46
|
+
"verbose_name_plural": "Last IMP Visits",
|
|
47
|
+
"abstract": False,
|
|
48
|
+
"default_permissions": ("view", "export", "viewallsites"),
|
|
49
|
+
"indexes": [
|
|
50
|
+
models.Index(
|
|
51
|
+
fields=["subject_identifier", "site"],
|
|
52
|
+
name="meta_report_subject_4a9e15_idx",
|
|
53
|
+
)
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
),
|
|
57
|
+
]
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Generated by Django 5.1.2 on 2024-10-16 01:39
|
|
2
|
+
|
|
3
|
+
from django.db import migrations
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
("meta_reports", "0052_lastimpvisit"),
|
|
10
|
+
("sites", "0002_alter_domain_unique"),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.RenameModel(
|
|
15
|
+
old_name="LastImpVisit",
|
|
16
|
+
new_name="LastImpRefill",
|
|
17
|
+
),
|
|
18
|
+
migrations.AlterModelOptions(
|
|
19
|
+
name="lastimprefill",
|
|
20
|
+
options={
|
|
21
|
+
"default_permissions": ("view", "export", "viewallsites"),
|
|
22
|
+
"verbose_name": "Last IMP Refill",
|
|
23
|
+
"verbose_name_plural": "Last IMP Refills",
|
|
24
|
+
},
|
|
25
|
+
),
|
|
26
|
+
migrations.RenameIndex(
|
|
27
|
+
model_name="lastimprefill",
|
|
28
|
+
new_name="meta_report_subject_bc8268_idx",
|
|
29
|
+
old_name="meta_report_subject_4a9e15_idx",
|
|
30
|
+
),
|
|
31
|
+
]
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Generated by Django 6.0 on 2025-04-22 17:03
|
|
2
|
+
|
|
3
|
+
import django_db_views.migration_functions
|
|
4
|
+
import django_db_views.operations
|
|
5
|
+
from django.db import migrations
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Migration(migrations.Migration):
|
|
9
|
+
|
|
10
|
+
dependencies = [
|
|
11
|
+
("meta_reports", "0053_rename_lastimpvisit_lastimprefill_and_more"),
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
operations = [
|
|
15
|
+
django_db_views.operations.ViewRunPython(
|
|
16
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
17
|
+
"select *, uuid() as id, now() as `created`, 'meta_reports.glucosesummaryview' as `report_model` from (SELECT v.subject_identifier, fbg_value, fbg_datetime, NULL AS `ogtt_value`, NULL AS `ogtt_datetime`, CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS `fasted`, fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta FROM meta_subject_glucosefbg AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier UNION SELECT v.subject_identifier, fbg_value, fbg_datetime, ogtt_value, ogtt_datetime, CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS `fasted`, fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta FROM meta_subject_glucose AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
18
|
+
"meta_reports_glucosesummaryview",
|
|
19
|
+
engine="django.db.backends.mysql",
|
|
20
|
+
),
|
|
21
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
22
|
+
"", "meta_reports_glucosesummaryview", engine="django.db.backends.mysql"
|
|
23
|
+
),
|
|
24
|
+
atomic=False,
|
|
25
|
+
),
|
|
26
|
+
django_db_views.operations.ViewRunPython(
|
|
27
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
28
|
+
"select *, get_random_uuid() as id, now() as created, 'meta_reports.glucosesummaryview' as report_model from (SELECT v.subject_identifier, fbg_value, fbg_datetime, NULL AS \"ogtt_value\", NULL AS \"ogtt_datetime\", CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS \"fasted\", fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta FROM meta_subject_glucosefbg AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier UNION SELECT v.subject_identifier, fbg_value, fbg_datetime, ogtt_value, ogtt_datetime, CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS \"fasted\", fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta FROM meta_subject_glucose AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
29
|
+
"meta_reports_glucosesummaryview",
|
|
30
|
+
engine="django.db.backends.postgresql",
|
|
31
|
+
),
|
|
32
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
33
|
+
"", "meta_reports_glucosesummaryview", engine="django.db.backends.postgresql"
|
|
34
|
+
),
|
|
35
|
+
atomic=False,
|
|
36
|
+
),
|
|
37
|
+
django_db_views.operations.ViewRunPython(
|
|
38
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
39
|
+
"select *, uuid() as id, datetime() as created, 'meta_reports.glucosesummaryview' as report_model from (SELECT v.subject_identifier, fbg_value, fbg_datetime, NULL AS \"ogtt_value\", NULL AS \"ogtt_datetime\", CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS \"fasted\", fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta FROM meta_subject_glucosefbg AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier UNION SELECT v.subject_identifier, fbg_value, fbg_datetime, ogtt_value, ogtt_datetime, CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS \"fasted\", fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta FROM meta_subject_glucose AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
40
|
+
"meta_reports_glucosesummaryview",
|
|
41
|
+
engine="django.db.backends.sqlite3",
|
|
42
|
+
),
|
|
43
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
44
|
+
"", "meta_reports_glucosesummaryview", engine="django.db.backends.sqlite3"
|
|
45
|
+
),
|
|
46
|
+
atomic=False,
|
|
47
|
+
),
|
|
48
|
+
django_db_views.operations.ViewDropRunPython(
|
|
49
|
+
code=django_db_views.migration_functions.DropView(
|
|
50
|
+
"glucose_summary_view", engine="django.db.backends.mysql"
|
|
51
|
+
),
|
|
52
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
53
|
+
"select *, uuid() as id, now() as `created`, 'meta_reports.glucose_summary_view' as `report_model` from (SELECT v.subject_identifier, fbg_value, fbg_datetime, NULL AS `ogtt_value`, NULL AS `ogtt_datetime`, CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS `fasted`, fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime FROM meta_subject_glucosefbg AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier UNION SELECT v.subject_identifier, fbg_value, fbg_datetime, ogtt_value, ogtt_datetime, CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS `fasted`, fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime FROM meta_subject_glucose AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
54
|
+
"glucose_summary_view",
|
|
55
|
+
engine="django.db.backends.mysql",
|
|
56
|
+
),
|
|
57
|
+
atomic=False,
|
|
58
|
+
),
|
|
59
|
+
django_db_views.operations.ViewDropRunPython(
|
|
60
|
+
code=django_db_views.migration_functions.DropView(
|
|
61
|
+
"glucose_summary_view", engine="django.db.backends.postgresql"
|
|
62
|
+
),
|
|
63
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
64
|
+
"select *, get_random_uuid() as id, now() as created, 'meta_reports.glucose_summary_view' as report_model from (SELECT v.subject_identifier, fbg_value, fbg_datetime, NULL AS \"ogtt_value\", NULL AS \"ogtt_datetime\", CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS \"fasted\", fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime FROM meta_subject_glucosefbg AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier UNION SELECT v.subject_identifier, fbg_value, fbg_datetime, ogtt_value, ogtt_datetime, CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS \"fasted\", fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime FROM meta_subject_glucose AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
65
|
+
"glucose_summary_view",
|
|
66
|
+
engine="django.db.backends.postgresql",
|
|
67
|
+
),
|
|
68
|
+
atomic=False,
|
|
69
|
+
),
|
|
70
|
+
django_db_views.operations.ViewDropRunPython(
|
|
71
|
+
code=django_db_views.migration_functions.DropView(
|
|
72
|
+
"glucose_summary_view", engine="django.db.backends.sqlite3"
|
|
73
|
+
),
|
|
74
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
75
|
+
"select *, uuid() as id, datetime() as created, 'meta_reports.glucose_summary_view' as report_model from (SELECT v.subject_identifier, fbg_value, fbg_datetime, NULL AS \"ogtt_value\", NULL AS \"ogtt_datetime\", CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS \"fasted\", fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime FROM meta_subject_glucosefbg AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier UNION SELECT v.subject_identifier, fbg_value, fbg_datetime, ogtt_value, ogtt_datetime, CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS \"fasted\", fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime FROM meta_subject_glucose AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
76
|
+
"glucose_summary_view",
|
|
77
|
+
engine="django.db.backends.sqlite3",
|
|
78
|
+
),
|
|
79
|
+
atomic=False,
|
|
80
|
+
),
|
|
81
|
+
]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Generated by Django 6.0 on 2025-04-22 19:14
|
|
2
|
+
|
|
3
|
+
from django.db import migrations
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
("meta_reports", "0054_auto_20250422_2003"),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AlterModelTable(
|
|
14
|
+
name="glucosesummary",
|
|
15
|
+
table="meta_reports_glucosesummaryview",
|
|
16
|
+
),
|
|
17
|
+
]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Generated by Django 6.0 on 2025-04-22 19:14
|
|
2
|
+
|
|
3
|
+
import django_db_views.migration_functions
|
|
4
|
+
import django_db_views.operations
|
|
5
|
+
from django.db import migrations
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Migration(migrations.Migration):
|
|
9
|
+
|
|
10
|
+
dependencies = [
|
|
11
|
+
("meta_reports", "0055_alter_glucosesummary_table"),
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
operations = [
|
|
15
|
+
django_db_views.operations.ViewRunPython(
|
|
16
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
17
|
+
"select *, uuid() as id, now() as `created`, 'meta_reports.glucosesummaryview' as `report_model` from (SELECT v.subject_identifier, fbg_value, fbg_datetime, NULL AS `ogtt_value`, NULL AS `ogtt_datetime`, CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS `fasted`, fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta, 'meta_subject.glucosefbg' AS source FROM meta_subject_glucosefbg AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier UNION SELECT v.subject_identifier, fbg_value, fbg_datetime, ogtt_value, ogtt_datetime, CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS `fasted`, fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta, 'meta_subject.glucose' AS source FROM meta_subject_glucose AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
18
|
+
"meta_reports_glucosesummaryview",
|
|
19
|
+
engine="django.db.backends.mysql",
|
|
20
|
+
),
|
|
21
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
22
|
+
"select *, uuid() as id, now() as `created`, 'meta_reports.glucosesummaryview' as `report_model` from (SELECT v.subject_identifier, fbg_value, fbg_datetime, NULL AS `ogtt_value`, NULL AS `ogtt_datetime`, CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS `fasted`, fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta FROM meta_subject_glucosefbg AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier UNION SELECT v.subject_identifier, fbg_value, fbg_datetime, ogtt_value, ogtt_datetime, CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS `fasted`, fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta FROM meta_subject_glucose AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
23
|
+
"meta_reports_glucosesummaryview",
|
|
24
|
+
engine="django.db.backends.mysql",
|
|
25
|
+
),
|
|
26
|
+
atomic=False,
|
|
27
|
+
),
|
|
28
|
+
django_db_views.operations.ViewRunPython(
|
|
29
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
30
|
+
"select *, get_random_uuid() as id, now() as created, 'meta_reports.glucosesummaryview' as report_model from (SELECT v.subject_identifier, fbg_value, fbg_datetime, NULL AS \"ogtt_value\", NULL AS \"ogtt_datetime\", CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS \"fasted\", fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta, 'meta_subject.glucosefbg' AS source FROM meta_subject_glucosefbg AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier UNION SELECT v.subject_identifier, fbg_value, fbg_datetime, ogtt_value, ogtt_datetime, CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS \"fasted\", fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta, 'meta_subject.glucose' AS source FROM meta_subject_glucose AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
31
|
+
"meta_reports_glucosesummaryview",
|
|
32
|
+
engine="django.db.backends.postgresql",
|
|
33
|
+
),
|
|
34
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
35
|
+
"select *, get_random_uuid() as id, now() as created, 'meta_reports.glucosesummaryview' as report_model from (SELECT v.subject_identifier, fbg_value, fbg_datetime, NULL AS \"ogtt_value\", NULL AS \"ogtt_datetime\", CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS \"fasted\", fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta FROM meta_subject_glucosefbg AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier UNION SELECT v.subject_identifier, fbg_value, fbg_datetime, ogtt_value, ogtt_datetime, CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS \"fasted\", fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta FROM meta_subject_glucose AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
36
|
+
"meta_reports_glucosesummaryview",
|
|
37
|
+
engine="django.db.backends.postgresql",
|
|
38
|
+
),
|
|
39
|
+
atomic=False,
|
|
40
|
+
),
|
|
41
|
+
django_db_views.operations.ViewRunPython(
|
|
42
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
43
|
+
"select *, uuid() as id, datetime() as created, 'meta_reports.glucosesummaryview' as report_model from (SELECT v.subject_identifier, fbg_value, fbg_datetime, NULL AS \"ogtt_value\", NULL AS \"ogtt_datetime\", CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS \"fasted\", fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta, 'meta_subject.glucosefbg' AS source FROM meta_subject_glucosefbg AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier UNION SELECT v.subject_identifier, fbg_value, fbg_datetime, ogtt_value, ogtt_datetime, CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS \"fasted\", fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta, 'meta_subject.glucose' AS source FROM meta_subject_glucose AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
44
|
+
"meta_reports_glucosesummaryview",
|
|
45
|
+
engine="django.db.backends.sqlite3",
|
|
46
|
+
),
|
|
47
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
48
|
+
"select *, uuid() as id, datetime() as created, 'meta_reports.glucosesummaryview' as report_model from (SELECT v.subject_identifier, fbg_value, fbg_datetime, NULL AS \"ogtt_value\", NULL AS \"ogtt_datetime\", CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS \"fasted\", fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta FROM meta_subject_glucosefbg AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier UNION SELECT v.subject_identifier, fbg_value, fbg_datetime, ogtt_value, ogtt_datetime, CASE WHEN fasting = 'fasting' THEN 'Yes' WHEN fasting = 'non_fasting' THEN 'No' ELSE fasting END AS \"fasted\", fbg.site_id, v.visit_code, v.visit_code_sequence, v.appointment_id, eos.offstudy_datetime, fasting_duration_delta FROM meta_subject_glucose AS fbg LEFT JOIN meta_subject_subjectvisit AS v ON v.id = fbg.subject_visit_id LEFT JOIN meta_prn_endofstudy AS eos ON v.subject_identifier = eos.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
|
49
|
+
"meta_reports_glucosesummaryview",
|
|
50
|
+
engine="django.db.backends.sqlite3",
|
|
51
|
+
),
|
|
52
|
+
atomic=False,
|
|
53
|
+
),
|
|
54
|
+
]
|