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,48 @@
|
|
|
1
|
+
# Generated by Django 5.0.7 on 2024-08-13 12:17
|
|
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", "0013_auto_20240813_1516"),
|
|
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.unattendedtwoinrow' as report_model from (\n select subject_identifier, site_id, appt_datetime, `first_value`, `second_value`,\n datediff(`second_date`, `first_date`) as `interval_days`,\n datediff(now(), `first_date`) as `from_now_days`\n from (\n select subject_identifier ,site_id, appt_datetime,\n FIRST_VALUE(`visit_code`) OVER w as `first_value`,\n NTH_VALUE(`visit_code`, 2) OVER w as `second_value`,\n NTH_VALUE(`visit_code`, 3) OVER w as `third_value`,\n FIRST_VALUE(`appt_datetime`) OVER w as `first_date`,\n NTH_VALUE(`appt_datetime`, 2) OVER w as `second_date`\n from edc_appointment_appointment where visit_code_sequence=0 and appt_status='New'\n and appt_datetime <= now()\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime ROWS UNBOUNDED PRECEDING)\n ) as A1\n where `second_value` is not null and `third_value` is null\n ) as A2\n order by site_id, `from_now_days` desc",
|
|
18
|
+
"unattended_two_in_row_view",
|
|
19
|
+
engine="django.db.backends.mysql",
|
|
20
|
+
),
|
|
21
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
22
|
+
"", "unattended_two_in_row_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 *, gen_random_uuid() as id, now() as created, 'meta_reports.unattendedtwoinrow' as report_model \n from (\n select subject_identifier, site_id, appt_datetime, first_value, second_value,\n EXTRACT(DAY FROM second_date - first_date) as interval_days,\n EXTRACT(DAY FROM now() - first_date) as from_now_days\n from (\n select subject_identifier, site_id, appt_datetime,\n FIRST_VALUE(visit_code) OVER w as first_value,\n NTH_VALUE(visit_code, 2) OVER w as second_value,\n NTH_VALUE(visit_code, 3) OVER w as third_value,\n FIRST_VALUE(appt_datetime) OVER w as first_date,\n NTH_VALUE(appt_datetime, 2) OVER w as second_date\n from edc_appointment_appointment where visit_code_sequence=0 and appt_status='New'\n and appt_datetime <= now()\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime ROWS UNBOUNDED PRECEDING)\n ) as A1\n where second_value is not null and third_value is null\n ) as A2\n order by site_id, from_now_days desc",
|
|
29
|
+
"unattended_two_in_row_view",
|
|
30
|
+
engine="django.db.backends.postgresql",
|
|
31
|
+
),
|
|
32
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
33
|
+
"", "unattended_two_in_row_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 *, lower(\n hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' ||\n substr(hex( randomblob(2)), 2) || '-' ||\n substr('AB89', 1 + (abs(random()) % 4) , 1) ||\n substr(hex(randomblob(2)), 2) || '-' ||\n hex(randomblob(6))\n ) as id, datetime() as created, 'meta_reports.unattendedtwoinrow' as report_model from (\n select subject_identifier, site_id, appt_datetime, first_value, second_value,\n CAST(JulianDay(second_date) - JulianDay(first_date) AS Integer) as interval_days,\n CAST(JulianDay(datetime()) - JulianDay(first_date) AS Integer) as from_now_days\n from (\n select subject_identifier ,site_id, appt_datetime,\n FIRST_VALUE(visit_code) OVER w as first_value,\n NTH_VALUE(visit_code, 2) OVER w as second_value,\n NTH_VALUE(visit_code, 3) OVER w as third_value,\n FIRST_VALUE(appt_datetime) OVER w as first_date,\n NTH_VALUE(appt_datetime, 2) OVER w as second_date\n from edc_appointment_appointment where visit_code_sequence=0 and appt_status='New'\n and appt_datetime <= datetime()\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime ROWS UNBOUNDED PRECEDING)\n ) as A1\n where second_value is not null and third_value is null\n ) as A2\n order by site_id, from_now_days desc",
|
|
40
|
+
"unattended_two_in_row_view",
|
|
41
|
+
engine="django.db.backends.sqlite3",
|
|
42
|
+
),
|
|
43
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
44
|
+
"", "unattended_two_in_row_view", engine="django.db.backends.sqlite3"
|
|
45
|
+
),
|
|
46
|
+
atomic=False,
|
|
47
|
+
),
|
|
48
|
+
]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Generated by Django 5.1 on 2024-08-15 23:39
|
|
2
|
+
|
|
3
|
+
import django.db.models.deletion
|
|
4
|
+
from django.db import migrations, models
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Migration(migrations.Migration):
|
|
8
|
+
|
|
9
|
+
dependencies = [
|
|
10
|
+
("meta_reports", "0014_auto_20240813_1517"),
|
|
11
|
+
("sites", "0002_alter_domain_unique"),
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
operations = [
|
|
15
|
+
migrations.AlterField(
|
|
16
|
+
model_name="endpoints",
|
|
17
|
+
name="site",
|
|
18
|
+
field=models.ForeignKey(
|
|
19
|
+
on_delete=django.db.models.deletion.DO_NOTHING, to="sites.site"
|
|
20
|
+
),
|
|
21
|
+
),
|
|
22
|
+
]
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Generated by Django 5.1 on 2024-08-19 14:01
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
("meta_reports", "0015_alter_endpoints_site"),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.CreateModel(
|
|
14
|
+
name="MissingScreeningOgtt",
|
|
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
|
+
("screening_identifier", models.CharField(max_length=25)),
|
|
26
|
+
("screening_datetime", models.DateTimeField(null=True)),
|
|
27
|
+
("fbg_datetime", models.DateTimeField(null=True)),
|
|
28
|
+
("fbg_value", models.DecimalField(decimal_places=2, max_digits=8, null=True)),
|
|
29
|
+
("ogtt_value", models.DecimalField(decimal_places=2, max_digits=8, null=True)),
|
|
30
|
+
("fbg2_value", models.DecimalField(decimal_places=2, max_digits=8, null=True)),
|
|
31
|
+
(
|
|
32
|
+
"ogtt2_value",
|
|
33
|
+
models.DecimalField(decimal_places=2, max_digits=8, null=True),
|
|
34
|
+
),
|
|
35
|
+
("fbg2_datetime", models.DateTimeField(null=True)),
|
|
36
|
+
("ogtt2_datetime", models.DateTimeField(null=True)),
|
|
37
|
+
("consented", models.BooleanField(null=True)),
|
|
38
|
+
],
|
|
39
|
+
options={
|
|
40
|
+
"verbose_name": "Screening: Missing OGTT",
|
|
41
|
+
"verbose_name_plural": "Screening: Missing OGTT",
|
|
42
|
+
"db_table": "missing_screening_ogtt_view",
|
|
43
|
+
"managed": False,
|
|
44
|
+
"default_permissions": ("view", "export", "viewallsites"),
|
|
45
|
+
},
|
|
46
|
+
),
|
|
47
|
+
]
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Generated by Django 5.1 on 2024-08-19 14:11
|
|
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", "0016_missingscreeningogtt"),
|
|
12
|
+
("meta_screening", "0067_alter_historicalscreeningpartone_report_datetime_and_more"),
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
operations = [
|
|
16
|
+
django_db_views.operations.ViewRunPython(
|
|
17
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
18
|
+
"select *, uuid() as id, now() as created,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n fbg_value, ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented \n from meta_screening_subjectscreening \n where fbg_value is not null and ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
19
|
+
"missing_screening_ogtt_view",
|
|
20
|
+
engine="django.db.backends.mysql",
|
|
21
|
+
),
|
|
22
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
23
|
+
"", "missing_screening_ogtt_view", engine="django.db.backends.mysql"
|
|
24
|
+
),
|
|
25
|
+
atomic=False,
|
|
26
|
+
),
|
|
27
|
+
django_db_views.operations.ViewRunPython(
|
|
28
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
29
|
+
"select *, get_random_uuid() as id, now() as created,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n fbg_value, ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented \n from meta_screening_subjectscreening \n where fbg_value is not null and ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
30
|
+
"missing_screening_ogtt_view",
|
|
31
|
+
engine="django.db.backends.postgresql",
|
|
32
|
+
),
|
|
33
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
34
|
+
"", "missing_screening_ogtt_view", engine="django.db.backends.postgresql"
|
|
35
|
+
),
|
|
36
|
+
atomic=False,
|
|
37
|
+
),
|
|
38
|
+
django_db_views.operations.ViewRunPython(
|
|
39
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
40
|
+
"SELECT *, lower(\n hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' ||\n substr(hex( randomblob(2)), 2) || '-' ||\n substr('AB89', 1 + (abs(random()) % 4) , 1) ||\n substr(hex(randomblob(2)), 2) || '-' ||\n hex(randomblob(6))\n ) as id, datetime() as `created`,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n fbg_value, ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented \n from meta_screening_subjectscreening \n where fbg_value is not null and ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
41
|
+
"missing_screening_ogtt_view",
|
|
42
|
+
engine="django.db.backends.sqlite3",
|
|
43
|
+
),
|
|
44
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
45
|
+
"", "missing_screening_ogtt_view", engine="django.db.backends.sqlite3"
|
|
46
|
+
),
|
|
47
|
+
atomic=False,
|
|
48
|
+
),
|
|
49
|
+
django_db_views.operations.ViewRunPython(
|
|
50
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
51
|
+
"# noqa\n select *, uuid() as id, now() as created, 'meta_reports.unattendedthreeinrow' as `report_model` from (\n select subject_identifier, site_id, appt_datetime, `first_value`, `second_value`, `third_value`,\n datediff(third_date, first_date) as `interval_days`,\n datediff(now(), first_date) as `from_now_days`\n from (\n select subject_identifier, site_id, appt_datetime,\n FIRST_VALUE(visit_code) OVER w as `first_value`,\n NTH_VALUE(visit_code, 2) OVER w as `second_value`,\n NTH_VALUE(visit_code, 3) OVER w as `third_value`,\n FIRST_VALUE(appt_datetime) OVER w as `first_date`,\n NTH_VALUE(appt_datetime, 3) OVER w as `third_date`\n from edc_appointment_appointment where visit_code_sequence=0 and appt_status='New'\n and appt_datetime <= now()\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime ROWS UNBOUNDED PRECEDING)\n ) as A\n where `second_value` is not null and `third_value` is not null\n ) as B\n order by site_id, from_now_days desc",
|
|
52
|
+
"unattended_three_in_row_view",
|
|
53
|
+
engine="django.db.backends.mysql",
|
|
54
|
+
),
|
|
55
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
56
|
+
"select *, uuid() as id, now() as created, 'meta_reports.unattendedthreeinrow' as `report_model` from (\n select subject_identifier, site_id, appt_datetime, `first_value`, `second_value`, `third_value`,\n datediff(third_date, first_date) as `interval_days`,\n datediff(now(), first_date) as `from_now_days`\n from (\n select subject_identifier, site_id, appt_datetime,\n FIRST_VALUE(visit_code) OVER w as `first_value`,\n NTH_VALUE(visit_code, 2) OVER w as `second_value`,\n NTH_VALUE(visit_code, 3) OVER w as `third_value`,\n FIRST_VALUE(appt_datetime) OVER w as `first_date`,\n NTH_VALUE(appt_datetime, 3) OVER w as `third_date`\n from edc_appointment_appointment where visit_code_sequence=0 and appt_status='New'\n and appt_datetime <= now()\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime ROWS UNBOUNDED PRECEDING)\n ) as A\n where `second_value` is not null and `third_value` is not null\n ) as B\n order by site_id, from_now_days desc",
|
|
57
|
+
"unattended_three_in_row_view",
|
|
58
|
+
engine="django.db.backends.mysql",
|
|
59
|
+
),
|
|
60
|
+
atomic=False,
|
|
61
|
+
),
|
|
62
|
+
django_db_views.operations.ViewRunPython(
|
|
63
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
64
|
+
"# noqa\n select *, gen_random_uuid() as id, now() as created,\n 'meta_reports.unattendedthreeinrow' as report_model\n from (\n select subject_identifier, site_id, appt_datetime, first_value, second_value, third_value,\n EXTRACT(DAY FROM third_date - first_date) as interval_days,\n EXTRACT(DAY FROM now() - first_date) as from_now_days\n from (\n select subject_identifier,site_id,appt_datetime,\n FIRST_VALUE(visit_code) OVER w as first_value,\n NTH_VALUE(visit_code, 2) OVER w as second_value,\n NTH_VALUE(visit_code, 3) OVER w as third_value,\n FIRST_VALUE(appt_datetime) OVER w as first_date,\n NTH_VALUE(appt_datetime, 3) OVER w as third_date\n from edc_appointment_appointment where visit_code_sequence=0 and appt_status='New'\n and appt_datetime <= now()\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime ROWS UNBOUNDED PRECEDING)\n ) as A\n where second_value is not null and third_value is not null\n ) as B\n order by site_id, from_now_days desc",
|
|
65
|
+
"unattended_three_in_row_view",
|
|
66
|
+
engine="django.db.backends.postgresql",
|
|
67
|
+
),
|
|
68
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
69
|
+
"select *, gen_random_uuid() as id, now() as created, \n 'meta_reports.unattendedthreeinrow' as report_model \n from (\n select subject_identifier, site_id, appt_datetime, first_value, second_value, third_value,\n EXTRACT(DAY FROM third_date - first_date) as interval_days,\n EXTRACT(DAY FROM now() - first_date) as from_now_days \n from (\n select subject_identifier,site_id,appt_datetime,\n FIRST_VALUE(visit_code) OVER w as first_value,\n NTH_VALUE(visit_code, 2) OVER w as second_value,\n NTH_VALUE(visit_code, 3) OVER w as third_value,\n FIRST_VALUE(appt_datetime) OVER w as first_date,\n NTH_VALUE(appt_datetime, 3) OVER w as third_date\n from edc_appointment_appointment where visit_code_sequence=0 and appt_status='New'\n and appt_datetime <= now()\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime ROWS UNBOUNDED PRECEDING)\n ) as A\n where second_value is not null and third_value is not null\n ) as B\n order by site_id, from_now_days desc",
|
|
70
|
+
"unattended_three_in_row_view",
|
|
71
|
+
engine="django.db.backends.postgresql",
|
|
72
|
+
),
|
|
73
|
+
atomic=False,
|
|
74
|
+
),
|
|
75
|
+
django_db_views.operations.ViewRunPython(
|
|
76
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
77
|
+
"# noqa\nSELECT *, lower(\n hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' ||\n substr(hex( randomblob(2)), 2) || '-' ||\n substr('AB89', 1 + (abs(random()) % 4) , 1) ||\n substr(hex(randomblob(2)), 2) || '-' ||\n hex(randomblob(6))\n ) as id, datetime() as created,'meta_reports.unattendedthreeinrow' as report_model from (\n select subject_identifier, site_id, appt_datetime, first_value, second_value, third_value,\n CAST(JulianDay(third_date) - JulianDay(first_date) AS INTEGER) as interval_days,\n CAST(JulianDay(datetime()) - JulianDay(first_date) AS INTEGER) as from_now_days\n from (\n select subject_identifier, site_id, appt_datetime,\n FIRST_VALUE(visit_code) OVER w as first_value,\n NTH_VALUE(visit_code, 2) OVER w as second_value,\n NTH_VALUE(visit_code, 3) OVER w as third_value,\n FIRST_VALUE(appt_datetime) OVER w as first_date,\n NTH_VALUE(appt_datetime, 3) OVER w as third_date\n from edc_appointment_appointment where visit_code_sequence=0 and appt_status='New'\n and appt_datetime <= datetime()\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime ROWS UNBOUNDED PRECEDING)\n ) as A\n where second_value is not null and third_value is not null\n ) as B\n order by site_id, from_now_days desc",
|
|
78
|
+
"unattended_three_in_row_view",
|
|
79
|
+
engine="django.db.backends.sqlite3",
|
|
80
|
+
),
|
|
81
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
82
|
+
"SELECT *, lower(\n hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' ||\n substr(hex( randomblob(2)), 2) || '-' ||\n substr('AB89', 1 + (abs(random()) % 4) , 1) ||\n substr(hex(randomblob(2)), 2) || '-' ||\n hex(randomblob(6))\n ) as id, datetime() as created,'meta_reports.unattendedthreeinrow' as report_model from (\n select subject_identifier, site_id, appt_datetime, first_value, second_value, third_value,\n CAST(JulianDay(third_date) - JulianDay(first_date) AS Integer) as interval_days,\n CAST(JulianDay(datetime()) - JulianDay(first_date) AS Integer) as from_now_days\n from (\n select subject_identifier, site_id, appt_datetime,\n FIRST_VALUE(visit_code) OVER w as first_value,\n NTH_VALUE(visit_code, 2) OVER w as second_value,\n NTH_VALUE(visit_code, 3) OVER w as third_value,\n FIRST_VALUE(appt_datetime) OVER w as first_date,\n NTH_VALUE(appt_datetime, 3) OVER w as third_date\n from edc_appointment_appointment where visit_code_sequence=0 and appt_status='New'\n and appt_datetime <= datetime()\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime ROWS UNBOUNDED PRECEDING)\n ) as A\n where second_value is not null and third_value is not null\n ) as B\n order by site_id, from_now_days desc",
|
|
83
|
+
"unattended_three_in_row_view",
|
|
84
|
+
engine="django.db.backends.sqlite3",
|
|
85
|
+
),
|
|
86
|
+
atomic=False,
|
|
87
|
+
),
|
|
88
|
+
django_db_views.operations.ViewRunPython(
|
|
89
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
90
|
+
"# noqa\n with appointments as (\n select subject_identifier, site_id, visit_code, visit_code_sequence, appt_datetime,\n case when appt_timing='missed' then 'New' else appt_status end as `appt_status`,\n case when appt_timing='missed' then 1 else 0 end as `missed`\n from edc_appointment_appointment\n where visit_code_sequence=0 and appt_datetime<=now()\n order by subject_identifier, appt_datetime\n )\n select *, uuid() as `id`, now() as `created`, 'meta_reports.unattendedthreeinrow2' as `report_model` from (\n select distinct subject_identifier, site_id, `first_value`, `second_value`, `third_value`,\n datediff(third_date, first_date) as `interval_days`,\n datediff(now(), first_date) as `from_now_days`,\n `first_status`, `second_status`, `third_status`, sum(missed) as `missed_count`\n from (\n select subject_identifier,site_id,appt_datetime, missed,\n FIRST_VALUE(appt_status) OVER w as `third_status`,\n NTH_VALUE(appt_status, 2) OVER w as `second_status`,\n NTH_VALUE(appt_status, 3) OVER w as `first_status`,\n FIRST_VALUE(visit_code) OVER w as `third_value`,\n NTH_VALUE(visit_code, 2) OVER w as `second_value`,\n NTH_VALUE(visit_code, 3) OVER w as `first_value`,\n FIRST_VALUE(appt_datetime) OVER w as `third_date`,\n NTH_VALUE(appt_datetime, 2) OVER w as `second_date`,\n NTH_VALUE(appt_datetime, 3) OVER w as `first_date`\n from appointments\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime desc ROWS UNBOUNDED PRECEDING)\n ) as A\n where `second_value` is not null and `third_value` is not null\n and `first_status`='New'\n and `second_status`='New'\n and `third_status`='New'\n group by subject_identifier, site_id, `first_value`, `second_value`, `third_value`,\n datediff(`third_date`, `first_date`),\n datediff(now(), `first_date`),\n `first_status`, `second_status`, `third_status`\n order by subject_identifier, site_id\n ) as B",
|
|
91
|
+
"unattended_three_in_row2_view",
|
|
92
|
+
engine="django.db.backends.mysql",
|
|
93
|
+
),
|
|
94
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
95
|
+
"with appointments as (\n select subject_identifier, site_id, visit_code, visit_code_sequence, appt_datetime,\n case when appt_timing='missed' then 'New' else appt_status end as `appt_status`,\n case when appt_timing='missed' then 1 else 0 end as `missed`\n from edc_appointment_appointment\n where visit_code_sequence=0 and appt_datetime<=now()\n order by subject_identifier, appt_datetime\n )\n select *, uuid() as `id`, now() as `created`, 'meta_reports.unattendedthreeinrow2' as `report_model` from (\n select distinct subject_identifier, site_id, `first_value`, `second_value`, `third_value`,\n datediff(third_date, first_date) as `interval_days`,\n datediff(now(), first_date) as `from_now_days`,\n `first_status`, `second_status`, `third_status`, sum(missed) as `missed_count`\n from (\n select subject_identifier,site_id,appt_datetime, missed,\n FIRST_VALUE(appt_status) OVER w as `third_status`,\n NTH_VALUE(appt_status, 2) OVER w as `second_status`,\n NTH_VALUE(appt_status, 3) OVER w as `first_status`,\n FIRST_VALUE(visit_code) OVER w as `third_value`,\n NTH_VALUE(visit_code, 2) OVER w as `second_value`,\n NTH_VALUE(visit_code, 3) OVER w as `first_value`,\n FIRST_VALUE(appt_datetime) OVER w as `third_date`,\n NTH_VALUE(appt_datetime, 2) OVER w as `second_date`,\n NTH_VALUE(appt_datetime, 3) OVER w as `first_date`\n from appointments\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime desc ROWS UNBOUNDED PRECEDING)\n ) as A\n where `second_value` is not null and `third_value` is not null\n and `first_status`='New'\n and `second_status`='New'\n and `third_status`='New'\n group by subject_identifier, site_id, `first_value`, `second_value`, `third_value`,\n datediff(`third_date`, `first_date`),\n datediff(now(), `first_date`),\n `first_status`, `second_status`, `third_status`\n order by subject_identifier, site_id\n ) as B",
|
|
96
|
+
"unattended_three_in_row2_view",
|
|
97
|
+
engine="django.db.backends.mysql",
|
|
98
|
+
),
|
|
99
|
+
atomic=False,
|
|
100
|
+
),
|
|
101
|
+
django_db_views.operations.ViewRunPython(
|
|
102
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
103
|
+
"# noqa\n with appointments as (\n select subject_identifier, site_id, visit_code, visit_code_sequence, appt_datetime,\n case when appt_timing='missed' then 'New' else appt_status end as appt_status,\n case when appt_timing='missed' then 1 else 0 end as missed\n from edc_appointment_appointment\n where visit_code_sequence=0 and appt_datetime<=now()\n order by subject_identifier, appt_datetime\n )\n select *, gen_random_uuid() as id, now() as created, 'meta_reports.unattendedthreeinrow2' as report_model\n from (\n select distinct subject_identifier, site_id, first_value, second_value, third_value,\n EXTRACT(DAY FROM third_date - first_date) as interval_days,\n EXTRACT(DAY FROM now() - first_date) as from_now_days,\n first_status, second_status, third_status, sum(missed) as missed_count\n from (\n select subject_identifier,site_id,appt_datetime, missed,\n FIRST_VALUE(appt_status) OVER w as third_status,\n NTH_VALUE(appt_status, 2) OVER w as second_status,\n NTH_VALUE(appt_status, 3) OVER w as first_status,\n FIRST_VALUE(visit_code) OVER w as third_value,\n NTH_VALUE(visit_code, 2) OVER w as second_value,\n NTH_VALUE(visit_code, 3) OVER w as first_value,\n FIRST_VALUE(appt_datetime) OVER w as third_date,\n NTH_VALUE(appt_datetime, 2) OVER w as second_date,\n NTH_VALUE(appt_datetime, 3) OVER w as first_date\n from appointments\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime desc ROWS UNBOUNDED PRECEDING)\n ) as A\n where second_value is not null and third_value is not null\n and first_status='New'\n and second_status='New'\n and third_status='New'\n group by subject_identifier, site_id, first_value, second_value, third_value,\n EXTRACT(DAY FROM third_date - first_date),\n EXTRACT(DAY FROM now() - first_date),\n first_status, second_status, third_status\n order by subject_identifier, site_id\n ) as B",
|
|
104
|
+
"unattended_three_in_row2_view",
|
|
105
|
+
engine="django.db.backends.postgresql",
|
|
106
|
+
),
|
|
107
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
108
|
+
"with appointments as (\n select subject_identifier, site_id, visit_code, visit_code_sequence, appt_datetime,\n case when appt_timing='missed' then 'New' else appt_status end as appt_status,\n case when appt_timing='missed' then 1 else 0 end as missed\n from edc_appointment_appointment\n where visit_code_sequence=0 and appt_datetime<=now()\n order by subject_identifier, appt_datetime\n )\n select *, gen_random_uuid() as id, now() as created, 'meta_reports.unattendedthreeinrow2' as report_model \n from (\n select distinct subject_identifier, site_id, first_value, second_value, third_value,\n EXTRACT(DAY FROM third_date - first_date) as interval_days,\n EXTRACT(DAY FROM now() - first_date) as from_now_days,\n first_status, second_status, third_status, sum(missed) as missed_count\n from (\n select subject_identifier,site_id,appt_datetime, missed,\n FIRST_VALUE(appt_status) OVER w as third_status,\n NTH_VALUE(appt_status, 2) OVER w as second_status,\n NTH_VALUE(appt_status, 3) OVER w as first_status,\n FIRST_VALUE(visit_code) OVER w as third_value,\n NTH_VALUE(visit_code, 2) OVER w as second_value,\n NTH_VALUE(visit_code, 3) OVER w as first_value,\n FIRST_VALUE(appt_datetime) OVER w as third_date,\n NTH_VALUE(appt_datetime, 2) OVER w as second_date,\n NTH_VALUE(appt_datetime, 3) OVER w as first_date\n from appointments\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime desc ROWS UNBOUNDED PRECEDING)\n ) as A\n where second_value is not null and third_value is not null\n and first_status='New'\n and second_status='New'\n and third_status='New'\n group by subject_identifier, site_id, first_value, second_value, third_value,\n EXTRACT(DAY FROM third_date - first_date),\n EXTRACT(DAY FROM now() - first_date),\n first_status, second_status, third_status\n order by subject_identifier, site_id\n ) as B",
|
|
109
|
+
"unattended_three_in_row2_view",
|
|
110
|
+
engine="django.db.backends.postgresql",
|
|
111
|
+
),
|
|
112
|
+
atomic=False,
|
|
113
|
+
),
|
|
114
|
+
django_db_views.operations.ViewRunPython(
|
|
115
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
116
|
+
"# noqa\n with appointments as (\n select subject_identifier, site_id, visit_code, visit_code_sequence, appt_datetime,\n case when appt_timing='missed' then 'New' else appt_status end as `appt_status`,\n case when appt_timing='missed' then 1 else 0 end as `missed`\n from edc_appointment_appointment\n where visit_code_sequence=0 and appt_datetime<=now()\n order by subject_identifier, appt_datetime\n )\n SELECT *, lower(\n hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' ||\n substr(hex( randomblob(2)), 2) || '-' ||\n substr('AB89', 1 + (abs(random()) % 4) , 1) ||\n substr(hex(randomblob(2)), 2) || '-' ||\n hex(randomblob(6))\n ) as id, datetime() as created, 'meta_reports.unattendedthreeinrow2' as report_model from (\n select distinct subject_identifier, site_id, first_value, second_value, third_value,\n CAST(JulianDay(third_date) - JulianDay(first_date) AS Integer) as interval_days,\n CAST(JulianDay(datetime()) - JulianDay(first_date) AS Integer) as from_now_days,\n first_status, second_status, third_status, sum(missed) as missed_count\n from (\n select subject_identifier,site_id,appt_datetime, missed,\n FIRST_VALUE(appt_status) OVER w as third_status,\n NTH_VALUE(appt_status, 2) OVER w as second_status,\n NTH_VALUE(appt_status, 3) OVER w as first_status,\n FIRST_VALUE(visit_code) OVER w as third_value,\n NTH_VALUE(visit_code, 2) OVER w as second_value,\n NTH_VALUE(visit_code, 3) OVER w as first_value,\n FIRST_VALUE(appt_datetime) OVER w as third_date,\n NTH_VALUE(appt_datetime, 2) OVER w as second_date,\n NTH_VALUE(appt_datetime, 3) OVER w as first_date\n from appointments\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime desc ROWS UNBOUNDED PRECEDING)\n ) as A\n where second_value is not null and third_value is not null\n and first_status='New'\n and second_status='New'\n and third_status='New'\n group by subject_identifier, site_id, first_value, second_value, third_value,\n CAST(JulianDay(third_date) - JulianDay(first_date) AS Integer),\n CAST(JulianDay(datetime()) - JulianDay(first_date) AS Integer),\n first_status, second_status, third_status\n order by subject_identifier, site_id\n ) as B",
|
|
117
|
+
"unattended_three_in_row2_view",
|
|
118
|
+
engine="django.db.backends.sqlite3",
|
|
119
|
+
),
|
|
120
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
121
|
+
"with appointments as (\n select subject_identifier, site_id, visit_code, visit_code_sequence, appt_datetime,\n case when appt_timing='missed' then 'New' else appt_status end as `appt_status`,\n case when appt_timing='missed' then 1 else 0 end as `missed`\n from edc_appointment_appointment\n where visit_code_sequence=0 and appt_datetime<=now()\n order by subject_identifier, appt_datetime\n )\n SELECT *, lower(\n hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' ||\n substr(hex( randomblob(2)), 2) || '-' ||\n substr('AB89', 1 + (abs(random()) % 4) , 1) ||\n substr(hex(randomblob(2)), 2) || '-' ||\n hex(randomblob(6))\n ) as id, datetime() as created, 'meta_reports.unattendedthreeinrow2' as report_model from (\n select distinct subject_identifier, site_id, first_value, second_value, third_value,\n CAST(JulianDay(third_date) - JulianDay(first_date) AS Integer) as interval_days,\n CAST(JulianDay(datetime()) - JulianDay(first_date) AS Integer) as from_now_days,\n first_status, second_status, third_status, sum(missed) as missed_count\n from (\n select subject_identifier,site_id,appt_datetime, missed,\n FIRST_VALUE(appt_status) OVER w as third_status,\n NTH_VALUE(appt_status, 2) OVER w as second_status,\n NTH_VALUE(appt_status, 3) OVER w as first_status,\n FIRST_VALUE(visit_code) OVER w as third_value,\n NTH_VALUE(visit_code, 2) OVER w as second_value,\n NTH_VALUE(visit_code, 3) OVER w as first_value,\n FIRST_VALUE(appt_datetime) OVER w as third_date,\n NTH_VALUE(appt_datetime, 2) OVER w as second_date,\n NTH_VALUE(appt_datetime, 3) OVER w as first_date\n from appointments\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime desc ROWS UNBOUNDED PRECEDING)\n ) as A\n where second_value is not null and third_value is not null\n and first_status='New'\n and second_status='New'\n and third_status='New'\n group by subject_identifier, site_id, first_value, second_value, third_value,\n CAST(JulianDay(third_date) - JulianDay(first_date) AS Integer),\n CAST(JulianDay(datetime()) - JulianDay(first_date) AS Integer),\n first_status, second_status, third_status\n order by subject_identifier, site_id\n ) as B",
|
|
122
|
+
"unattended_three_in_row2_view",
|
|
123
|
+
engine="django.db.backends.sqlite3",
|
|
124
|
+
),
|
|
125
|
+
atomic=False,
|
|
126
|
+
),
|
|
127
|
+
django_db_views.operations.ViewRunPython(
|
|
128
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
129
|
+
"# noqa\n select *, uuid() as `id`, now() as `created`, 'meta_reports.unattendedtwoinrow' as report_model from (\n select subject_identifier, site_id, appt_datetime, `first_value`, `second_value`,\n datediff(`second_date`, `first_date`) as `interval_days`,\n datediff(now(), `first_date`) as `from_now_days`\n from (\n select subject_identifier ,site_id, appt_datetime,\n FIRST_VALUE(`visit_code`) OVER w as `first_value`,\n NTH_VALUE(`visit_code`, 2) OVER w as `second_value`,\n NTH_VALUE(`visit_code`, 3) OVER w as `third_value`,\n FIRST_VALUE(`appt_datetime`) OVER w as `first_date`,\n NTH_VALUE(`appt_datetime`, 2) OVER w as `second_date`\n from edc_appointment_appointment where visit_code_sequence=0 and appt_status='New'\n and appt_datetime <= now()\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime ROWS UNBOUNDED PRECEDING)\n ) as A1\n where `second_value` is not null and `third_value` is null\n ) as A2\n order by site_id, `from_now_days` desc",
|
|
130
|
+
"unattended_two_in_row_view",
|
|
131
|
+
engine="django.db.backends.mysql",
|
|
132
|
+
),
|
|
133
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
134
|
+
"select *, uuid() as `id`, now() as `created`, 'meta_reports.unattendedtwoinrow' as report_model from (\n select subject_identifier, site_id, appt_datetime, `first_value`, `second_value`,\n datediff(`second_date`, `first_date`) as `interval_days`,\n datediff(now(), `first_date`) as `from_now_days`\n from (\n select subject_identifier ,site_id, appt_datetime,\n FIRST_VALUE(`visit_code`) OVER w as `first_value`,\n NTH_VALUE(`visit_code`, 2) OVER w as `second_value`,\n NTH_VALUE(`visit_code`, 3) OVER w as `third_value`,\n FIRST_VALUE(`appt_datetime`) OVER w as `first_date`,\n NTH_VALUE(`appt_datetime`, 2) OVER w as `second_date`\n from edc_appointment_appointment where visit_code_sequence=0 and appt_status='New'\n and appt_datetime <= now()\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime ROWS UNBOUNDED PRECEDING)\n ) as A1\n where `second_value` is not null and `third_value` is null\n ) as A2\n order by site_id, `from_now_days` desc",
|
|
135
|
+
"unattended_two_in_row_view",
|
|
136
|
+
engine="django.db.backends.mysql",
|
|
137
|
+
),
|
|
138
|
+
atomic=False,
|
|
139
|
+
),
|
|
140
|
+
django_db_views.operations.ViewRunPython(
|
|
141
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
142
|
+
"# noqa\n select *, gen_random_uuid() as id, now() as created, 'meta_reports.unattendedtwoinrow' as report_model\n from (\n select subject_identifier, site_id, appt_datetime, first_value, second_value,\n EXTRACT(DAY FROM second_date - first_date) as interval_days,\n EXTRACT(DAY FROM now() - first_date) as from_now_days\n from (\n select subject_identifier, site_id, appt_datetime,\n FIRST_VALUE(visit_code) OVER w as first_value,\n NTH_VALUE(visit_code, 2) OVER w as second_value,\n NTH_VALUE(visit_code, 3) OVER w as third_value,\n FIRST_VALUE(appt_datetime) OVER w as first_date,\n NTH_VALUE(appt_datetime, 2) OVER w as second_date\n from edc_appointment_appointment where visit_code_sequence=0 and appt_status='New'\n and appt_datetime <= now()\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime ROWS UNBOUNDED PRECEDING)\n ) as A1\n where second_value is not null and third_value is null\n ) as A2\n order by site_id, from_now_days desc",
|
|
143
|
+
"unattended_two_in_row_view",
|
|
144
|
+
engine="django.db.backends.postgresql",
|
|
145
|
+
),
|
|
146
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
147
|
+
"select *, gen_random_uuid() as id, now() as created, 'meta_reports.unattendedtwoinrow' as report_model \n from (\n select subject_identifier, site_id, appt_datetime, first_value, second_value,\n EXTRACT(DAY FROM second_date - first_date) as interval_days,\n EXTRACT(DAY FROM now() - first_date) as from_now_days\n from (\n select subject_identifier, site_id, appt_datetime,\n FIRST_VALUE(visit_code) OVER w as first_value,\n NTH_VALUE(visit_code, 2) OVER w as second_value,\n NTH_VALUE(visit_code, 3) OVER w as third_value,\n FIRST_VALUE(appt_datetime) OVER w as first_date,\n NTH_VALUE(appt_datetime, 2) OVER w as second_date\n from edc_appointment_appointment where visit_code_sequence=0 and appt_status='New'\n and appt_datetime <= now()\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime ROWS UNBOUNDED PRECEDING)\n ) as A1\n where second_value is not null and third_value is null\n ) as A2\n order by site_id, from_now_days desc",
|
|
148
|
+
"unattended_two_in_row_view",
|
|
149
|
+
engine="django.db.backends.postgresql",
|
|
150
|
+
),
|
|
151
|
+
atomic=False,
|
|
152
|
+
),
|
|
153
|
+
django_db_views.operations.ViewRunPython(
|
|
154
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
|
155
|
+
"# noqa\nSELECT *, lower(\n hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' ||\n substr(hex( randomblob(2)), 2) || '-' ||\n substr('AB89', 1 + (abs(random()) % 4) , 1) ||\n substr(hex(randomblob(2)), 2) || '-' ||\n hex(randomblob(6))\n ) as id, datetime() as created, 'meta_reports.unattendedtwoinrow' as report_model from (\n select subject_identifier, site_id, appt_datetime, first_value, second_value,\n CAST(JulianDay(second_date) - JulianDay(first_date) AS Integer) as interval_days,\n CAST(JulianDay(datetime()) - JulianDay(first_date) AS Integer) as from_now_days\n from (\n select subject_identifier ,site_id, appt_datetime,\n FIRST_VALUE(visit_code) OVER w as first_value,\n NTH_VALUE(visit_code, 2) OVER w as second_value,\n NTH_VALUE(visit_code, 3) OVER w as third_value,\n FIRST_VALUE(appt_datetime) OVER w as first_date,\n NTH_VALUE(appt_datetime, 2) OVER w as second_date\n from edc_appointment_appointment where visit_code_sequence=0 and appt_status='New'\n and appt_datetime <= datetime()\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime ROWS UNBOUNDED PRECEDING)\n ) as A1\n where second_value is not null and third_value is null\n ) as A2\n order by site_id, from_now_days desc",
|
|
156
|
+
"unattended_two_in_row_view",
|
|
157
|
+
engine="django.db.backends.sqlite3",
|
|
158
|
+
),
|
|
159
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
160
|
+
"SELECT *, lower(\n hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' ||\n substr(hex( randomblob(2)), 2) || '-' ||\n substr('AB89', 1 + (abs(random()) % 4) , 1) ||\n substr(hex(randomblob(2)), 2) || '-' ||\n hex(randomblob(6))\n ) as id, datetime() as created, 'meta_reports.unattendedtwoinrow' as report_model from (\n select subject_identifier, site_id, appt_datetime, first_value, second_value,\n CAST(JulianDay(second_date) - JulianDay(first_date) AS Integer) as interval_days,\n CAST(JulianDay(datetime()) - JulianDay(first_date) AS Integer) as from_now_days\n from (\n select subject_identifier ,site_id, appt_datetime,\n FIRST_VALUE(visit_code) OVER w as first_value,\n NTH_VALUE(visit_code, 2) OVER w as second_value,\n NTH_VALUE(visit_code, 3) OVER w as third_value,\n FIRST_VALUE(appt_datetime) OVER w as first_date,\n NTH_VALUE(appt_datetime, 2) OVER w as second_date\n from edc_appointment_appointment where visit_code_sequence=0 and appt_status='New'\n and appt_datetime <= datetime()\n WINDOW w as (PARTITION BY subject_identifier order by appt_datetime ROWS UNBOUNDED PRECEDING)\n ) as A1\n where second_value is not null and third_value is null\n ) as A2\n order by site_id, from_now_days desc",
|
|
161
|
+
"unattended_two_in_row_view",
|
|
162
|
+
engine="django.db.backends.sqlite3",
|
|
163
|
+
),
|
|
164
|
+
atomic=False,
|
|
165
|
+
),
|
|
166
|
+
]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Generated by Django 5.1 on 2024-08-19 14:13
|
|
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", "0017_auto_20240819_1711"),
|
|
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,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n fbg_value, ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where fbg_value is not null and ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
18
|
+
"missing_screening_ogtt_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,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n fbg_value, ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented \n from meta_screening_subjectscreening \n where fbg_value is not null and ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
23
|
+
"missing_screening_ogtt_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,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n fbg_value, ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier\n from meta_screening_subjectscreening \n where fbg_value is not null and ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
31
|
+
"missing_screening_ogtt_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,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n fbg_value, ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented \n from meta_screening_subjectscreening \n where fbg_value is not null and ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
36
|
+
"missing_screening_ogtt_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 *, lower(\n hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' ||\n substr(hex( randomblob(2)), 2) || '-' ||\n substr('AB89', 1 + (abs(random()) % 4) , 1) ||\n substr(hex(randomblob(2)), 2) || '-' ||\n hex(randomblob(6))\n ) as id, datetime() as `created`,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n fbg_value, ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier\n from meta_screening_subjectscreening \n where fbg_value is not null and ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
44
|
+
"missing_screening_ogtt_view",
|
|
45
|
+
engine="django.db.backends.sqlite3",
|
|
46
|
+
),
|
|
47
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
48
|
+
"SELECT *, lower(\n hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' ||\n substr(hex( randomblob(2)), 2) || '-' ||\n substr('AB89', 1 + (abs(random()) % 4) , 1) ||\n substr(hex(randomblob(2)), 2) || '-' ||\n hex(randomblob(6))\n ) as id, datetime() as `created`,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n fbg_value, ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented \n from meta_screening_subjectscreening \n where fbg_value is not null and ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
49
|
+
"missing_screening_ogtt_view",
|
|
50
|
+
engine="django.db.backends.sqlite3",
|
|
51
|
+
),
|
|
52
|
+
atomic=False,
|
|
53
|
+
),
|
|
54
|
+
]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Generated by Django 5.1 on 2024-08-19 14:21
|
|
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", "0018_auto_20240819_1713"),
|
|
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,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n converted_fbg_value as fbg_value, converted_ogtt_value as ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where converted_fbg_value is not null and converted_ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
18
|
+
"missing_screening_ogtt_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,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n fbg_value, ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where fbg_value is not null and ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
23
|
+
"missing_screening_ogtt_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,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n converted_fbg_value as fbg_value, converted_ogtt_value as ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where converted_fbg_value is not null and converted_ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
31
|
+
"missing_screening_ogtt_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,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n fbg_value, ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier\n from meta_screening_subjectscreening \n where fbg_value is not null and ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
36
|
+
"missing_screening_ogtt_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 *, lower(\n hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' ||\n substr(hex( randomblob(2)), 2) || '-' ||\n substr('AB89', 1 + (abs(random()) % 4) , 1) ||\n substr(hex(randomblob(2)), 2) || '-' ||\n hex(randomblob(6))\n ) as id, datetime() as `created`,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n converted_fbg_value as fbg_value, converted_ogtt_value as ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where converted_fbg_value is not null and converted_ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
44
|
+
"missing_screening_ogtt_view",
|
|
45
|
+
engine="django.db.backends.sqlite3",
|
|
46
|
+
),
|
|
47
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
48
|
+
"SELECT *, lower(\n hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' ||\n substr(hex( randomblob(2)), 2) || '-' ||\n substr('AB89', 1 + (abs(random()) % 4) , 1) ||\n substr(hex(randomblob(2)), 2) || '-' ||\n hex(randomblob(6))\n ) as id, datetime() as `created`,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n fbg_value, ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier\n from meta_screening_subjectscreening \n where fbg_value is not null and ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
49
|
+
"missing_screening_ogtt_view",
|
|
50
|
+
engine="django.db.backends.sqlite3",
|
|
51
|
+
),
|
|
52
|
+
atomic=False,
|
|
53
|
+
),
|
|
54
|
+
]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Generated by Django 5.1 on 2024-08-19 15:11
|
|
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", "0019_auto_20240819_1721"),
|
|
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,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n converted_fbg_value as fbg_value, converted_ogtt_value as ogtt_value, repeat_glucose_performed as repeated,\n fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where converted_fbg_value is not null and converted_ogtt_value is null and unsuitable_agreed != \"Yes\"\n ) as A\n order by screening_identifier",
|
|
18
|
+
"missing_screening_ogtt_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,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n converted_fbg_value as fbg_value, converted_ogtt_value as ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where converted_fbg_value is not null and converted_ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
23
|
+
"missing_screening_ogtt_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,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n converted_fbg_value as fbg_value, converted_ogtt_value as ogtt_value, repeat_glucose_performed as repeated,\n fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where converted_fbg_value is not null and converted_ogtt_value is null and unsuitable_agreed != \"Yes\"\n ) as A\n order by screening_identifier",
|
|
31
|
+
"missing_screening_ogtt_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,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n converted_fbg_value as fbg_value, converted_ogtt_value as ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where converted_fbg_value is not null and converted_ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
36
|
+
"missing_screening_ogtt_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 *, lower(\n hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' ||\n substr(hex( randomblob(2)), 2) || '-' ||\n substr('AB89', 1 + (abs(random()) % 4) , 1) ||\n substr(hex(randomblob(2)), 2) || '-' ||\n hex(randomblob(6))\n ) as id, datetime() as `created`,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n converted_fbg_value as fbg_value, converted_ogtt_value as ogtt_value, fbg2_value, ogtt2_value, \n repeat_glucose_performed as repeated, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where converted_fbg_value is not null and converted_ogtt_value is null and unsuitable_agreed != \"Yes\"\n ) as A\n order by screening_identifier",
|
|
44
|
+
"missing_screening_ogtt_view",
|
|
45
|
+
engine="django.db.backends.sqlite3",
|
|
46
|
+
),
|
|
47
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
48
|
+
"SELECT *, lower(\n hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' ||\n substr(hex( randomblob(2)), 2) || '-' ||\n substr('AB89', 1 + (abs(random()) % 4) , 1) ||\n substr(hex(randomblob(2)), 2) || '-' ||\n hex(randomblob(6))\n ) as id, datetime() as `created`,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n converted_fbg_value as fbg_value, converted_ogtt_value as ogtt_value, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where converted_fbg_value is not null and converted_ogtt_value is null\n ) as A\n order by screening_identifier",
|
|
49
|
+
"missing_screening_ogtt_view",
|
|
50
|
+
engine="django.db.backends.sqlite3",
|
|
51
|
+
),
|
|
52
|
+
atomic=False,
|
|
53
|
+
),
|
|
54
|
+
]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Generated by Django 5.1 on 2024-08-19 15:17
|
|
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", "0020_auto_20240819_1811"),
|
|
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,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n converted_fbg_value as fbg_value, converted_ogtt_value as ogtt_value, repeat_glucose_performed as repeated,\n p3_ltfu, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where converted_fbg_value is not null and converted_ogtt_value is null and unsuitable_agreed != \"Yes\"\n ) as A\n order by screening_identifier",
|
|
18
|
+
"missing_screening_ogtt_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,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n converted_fbg_value as fbg_value, converted_ogtt_value as ogtt_value, repeat_glucose_performed as repeated,\n fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where converted_fbg_value is not null and converted_ogtt_value is null and unsuitable_agreed != \"Yes\"\n ) as A\n order by screening_identifier",
|
|
23
|
+
"missing_screening_ogtt_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,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n converted_fbg_value as fbg_value, converted_ogtt_value as ogtt_value, repeat_glucose_performed as repeated,\n p3_ltfu, fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where converted_fbg_value is not null and converted_ogtt_value is null and unsuitable_agreed != \"Yes\"\n ) as A\n order by screening_identifier",
|
|
31
|
+
"missing_screening_ogtt_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,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n converted_fbg_value as fbg_value, converted_ogtt_value as ogtt_value, repeat_glucose_performed as repeated,\n fbg2_value, ogtt2_value, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where converted_fbg_value is not null and converted_ogtt_value is null and unsuitable_agreed != \"Yes\"\n ) as A\n order by screening_identifier",
|
|
36
|
+
"missing_screening_ogtt_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 *, lower(\n hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' ||\n substr(hex( randomblob(2)), 2) || '-' ||\n substr('AB89', 1 + (abs(random()) % 4) , 1) ||\n substr(hex(randomblob(2)), 2) || '-' ||\n hex(randomblob(6))\n ) as id, datetime() as `created`,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n converted_fbg_value as fbg_value, converted_ogtt_value as ogtt_value, fbg2_value, ogtt2_value, \n repeat_glucose_performed as repeated, p3_ltfu, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where converted_fbg_value is not null and converted_ogtt_value is null and unsuitable_agreed != \"Yes\"\n ) as A\n order by screening_identifier",
|
|
44
|
+
"missing_screening_ogtt_view",
|
|
45
|
+
engine="django.db.backends.sqlite3",
|
|
46
|
+
),
|
|
47
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
|
48
|
+
"SELECT *, lower(\n hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' ||\n substr(hex( randomblob(2)), 2) || '-' ||\n substr('AB89', 1 + (abs(random()) % 4) , 1) ||\n substr(hex(randomblob(2)), 2) || '-' ||\n hex(randomblob(6))\n ) as id, datetime() as `created`,\n 'meta_reports.missing_screening_ogtt_view' as report_model\n from (\n select screening_identifier, site_id, report_datetime as 'screening_datetime', fbg_datetime,\n converted_fbg_value as fbg_value, converted_ogtt_value as ogtt_value, fbg2_value, ogtt2_value, \n repeat_glucose_performed as repeated, fbg2_datetime, ogtt2_datetime, consented, \"\" as subject_identifier \n from meta_screening_subjectscreening \n where converted_fbg_value is not null and converted_ogtt_value is null and unsuitable_agreed != \"Yes\"\n ) as A\n order by screening_identifier",
|
|
49
|
+
"missing_screening_ogtt_view",
|
|
50
|
+
engine="django.db.backends.sqlite3",
|
|
51
|
+
),
|
|
52
|
+
atomic=False,
|
|
53
|
+
),
|
|
54
|
+
]
|