-
Notifications
You must be signed in to change notification settings - Fork 533
Squash facility and user migrations #3410
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
📝 WalkthroughWalkthroughThis diff consolidates Django migrations across multiple apps (EMR, Facility, and Users) by introducing new initial migrations that replace numerous legacy migrations. Existing migrations in EMR are updated to reference new facility initial migrations, while Facility and Users apps undergo significant migration cleanup with old migrations deleted and new initial migrations created to establish current schema state. Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Areas requiring extra attention:
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #3410 +/- ##
===========================================
- Coverage 74.85% 74.84% -0.01%
===========================================
Files 449 449
Lines 20412 20412
Branches 2114 2114
===========================================
- Hits 15279 15277 -2
- Misses 4677 4679 +2
Partials 456 456 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (3)
care/users/migrations/0001_new_initial.py (1)
76-80: Consider the necessity of explicitly settingabstract=False.The
Usermodel explicitly sets'abstract': Falsein its Meta options. SinceFalseis the default value forabstract, this line is technically redundant unless you're documenting a deliberate choice to keep the model concrete. Just making sure this was intentional and not accidentally left over from refactoring.care/facility/migrations/0002_new_initial.py (1)
26-40: Consider addingrelated_nameto foreign keys.While the field definitions are correct, the
created_byandgeo_organizationforeign keys don't specify arelated_name. This means Django will auto-generate reverse relations (e.g.,user.facility_set), which could potentially clash with other models. Thedefault_internal_organizationfield does include one, which is good practice. Just wanted to make sure the implicit reverse relations won't cause any surprises.care/facility/migrations/0001_new_initial.py (1)
37-37: Redundantdefault=Nonewithnull=True.Line 37 has both
default=Noneandnull=Trueon thepincodefield. Sincenull=Truealready allows NULL values in the database, thedefault=Noneis somewhat redundant (though harmless). This might be intentional for clarity, but just thought I'd point it out in case you want to simplify.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (201)
care/emr/migrations/0001_initial.py(1 hunks)care/emr/migrations/0013_facilitylocation_facilitylocationorganization.py(1 hunks)care/emr/migrations/0018_consent_device_deviceencounterhistory_and_more.py(1 hunks)care/emr/migrations/0030_encounter_tags_medicationrequest_dispense_status_and_more.py(1 hunks)care/emr/migrations/0034_token_system.py(1 hunks)care/emr/migrations/0036_deliveryorder_supplydelivery_order_dispenseorder_and_more.py(1 hunks)care/emr/migrations/0040_template_reportupload.py(1 hunks)care/facility/migrations/0001_new_initial.py(1 hunks)care/facility/migrations/0002_auto_20230613_1657.py(0 hunks)care/facility/migrations/0002_new_initial.py(1 hunks)care/facility/migrations/0003_auto_20230614_1048.py(0 hunks)care/facility/migrations/0004_alter_historicalfacilitycapacity_options_and_more.py(0 hunks)care/facility/migrations/0360_auto_20230608_1045.py(0 hunks)care/facility/migrations/0361_merge_20230610_2126.py(0 hunks)care/facility/migrations/0362_merge_20230617_1253.py(0 hunks)care/facility/migrations/0363_auto_20230621_1857.py(0 hunks)care/facility/migrations/0364_alter_historicalpatientregistration_emergency_phone_number_and_more.py(0 hunks)care/facility/migrations/0364_rename_orgin_facility_resourcerequest_origin_facility_and_more.py(0 hunks)care/facility/migrations/0365_merge_20230626_1834.py(0 hunks)care/facility/migrations/0366_auto_20230627_1806.py(0 hunks)care/facility/migrations/0366_medibasemedicine_and_more.py(0 hunks)care/facility/migrations/0367_auto_20230704_1646.py(0 hunks)care/facility/migrations/0367_prescription_medicine_and_more.py(0 hunks)care/facility/migrations/0368_populate_medibase.py(0 hunks)care/facility/migrations/0369_merge_0366_auto_20230627_1806_0368_populate_medibase.py(0 hunks)care/facility/migrations/0370_merge_20230705_1500.py(0 hunks)care/facility/migrations/0371_metaicd11diagnosis_chapter_and_more.py(0 hunks)care/facility/migrations/0372_assetavailabilityrecord.py(0 hunks)care/facility/migrations/0373_remove_patientconsultation_hba1c.py(0 hunks)care/facility/migrations/0374_historicalpatientregistration_abha_number_and_more.py(0 hunks)care/facility/migrations/0375_alter_dailyround_resp.py(0 hunks)care/facility/migrations/0376_alter_ambulance_owner_phone_number_and_more.py(0 hunks)care/facility/migrations/0376_auto_20230807_2148.py(0 hunks)care/facility/migrations/0377_merge_20230809_0009.py(0 hunks)care/facility/migrations/0378_consultationbedasset_consultationbed_assets.py(0 hunks)care/facility/migrations/0379_rename_prescribed_medication_patientconsultation_treatment_plan.py(0 hunks)care/facility/migrations/0380_patientnotes_user_type.py(0 hunks)care/facility/migrations/0381_merge_ip_op_no.py(0 hunks)care/facility/migrations/0382_assetservice_remove_asset_last_serviced_on_and_more.py(0 hunks)care/facility/migrations/0383_patientconsultation_icd11_principal_diagnosis.py(0 hunks)care/facility/migrations/0384_metaicd11diagnosis_chapter_short_and_more.py(0 hunks)care/facility/migrations/0384_patientconsultation_verified_by.py(0 hunks)care/facility/migrations/0385_alter_patientconsultation_verified_by.py(0 hunks)care/facility/migrations/0385_patientconsultation_is_readmission.py(0 hunks)care/facility/migrations/0386_auto_20230911_1726.py(0 hunks)care/facility/migrations/0387_merge_20230911_2303.py(0 hunks)care/facility/migrations/0388_alter_historicalpatientregistration_action_and_more.py(0 hunks)care/facility/migrations/0388_goal_goalentry_goalproperty_goalpropertyentry.py(0 hunks)care/facility/migrations/0388_icd11diagnosis.py(0 hunks)care/facility/migrations/0389_assetlocation_middleware_address.py(0 hunks)care/facility/migrations/0389_medicineadministration_archived_by_and_more.py(0 hunks)care/facility/migrations/0389_merge_20231002_1802.py(0 hunks)care/facility/migrations/0389_merge_20231005_2247.py(0 hunks)care/facility/migrations/0390_patientconsultation_medico_legal_case.py(0 hunks)care/facility/migrations/0391_merge_20231016_1845.py(0 hunks)care/facility/migrations/0392_alter_dailyround_consciousness_level.py(0 hunks)care/facility/migrations/0393_alter_hospitaldoctors_count.py(0 hunks)care/facility/migrations/0393_alter_notification_event.py(0 hunks)care/facility/migrations/0393_rename_diagnosis_patientconsultation_deprecated_diagnosis_and_more.py(0 hunks)care/facility/migrations/0394_alter_assetlocation_location_type.py(0 hunks)care/facility/migrations/0394_auto_20231114_2219.py(0 hunks)care/facility/migrations/0394_rename_consultation_status_patientconsultation_route_to_facility_and_more.py(0 hunks)care/facility/migrations/0395_alter_patientconsultation_route_to_facility.py(0 hunks)care/facility/migrations/0396_merge_20231122_0240.py(0 hunks)care/facility/migrations/0397_truncate_discharge_time.py(0 hunks)care/facility/migrations/0398_alter_prescription_dosage_and_more.py(0 hunks)care/facility/migrations/0398_patientnotes_consultation.py(0 hunks)care/facility/migrations/0399_populate_patientnotes_consultation.py(0 hunks)care/facility/migrations/0400_merge_20231208_0016.py(0 hunks)care/facility/migrations/0401_merge_20231208_0054.py(0 hunks)care/facility/migrations/0402_delete_prescriptionsupplier.py(0 hunks)care/facility/migrations/0402_patientconsultation_new_discharge_reason.py(0 hunks)care/facility/migrations/0403_alter_dailyround_rounds_type.py(0 hunks)care/facility/migrations/0403_rename_admission_date_to_encounter_date_and_more.py(0 hunks)care/facility/migrations/0404_merge_20231220_2227.py(0 hunks)care/facility/migrations/0405_alter_prescription_route.py(0 hunks)care/facility/migrations/0405_auto_20231211_1930.py(0 hunks)care/facility/migrations/0405_bed_name_constraint.py(0 hunks)care/facility/migrations/0406_bed_unique_bed_name_per_location.py(0 hunks)care/facility/migrations/0406_merge_20240116_2346.py(0 hunks)care/facility/migrations/0407_alter_dailyround_additional_symptoms_and_more.py(0 hunks)care/facility/migrations/0408_alter_dailyround_resp.py(0 hunks)care/facility/migrations/0408_delete_metaicd11diagnosis.py(0 hunks)care/facility/migrations/0408_historicalpatientregistration_date_of_delivery_and_more.py(0 hunks)care/facility/migrations/0408_patientnotesedit.py(0 hunks)care/facility/migrations/0409_merge_20240210_1510.py(0 hunks)care/facility/migrations/0410_availabilityrecord_delete_assetavailabilityrecord_and_more.py(0 hunks)care/facility/migrations/0411_merge_20240212_1429.py(0 hunks)care/facility/migrations/0412_availabilityrecord_unique_constraint.py(0 hunks)care/facility/migrations/0413_eventtype_patientconsultationevent_and_more.py(0 hunks)care/facility/migrations/0414_remove_bed_old_name.py(0 hunks)care/facility/migrations/0415_alter_dailyround_consciousness_level_and_more.py(0 hunks)care/facility/migrations/0415_alter_patientmetainfo_head_of_household_and_more.py(0 hunks)care/facility/migrations/0415_auto_20240227_0130.py(0 hunks)care/facility/migrations/0415_consultationclinician_and_more.py(0 hunks)care/facility/migrations/0415_patientconsultation_previous_consultation.py(0 hunks)care/facility/migrations/0415_rename_dosage_prescription_base_dosage_and_more.py(0 hunks)care/facility/migrations/0416_patientconsultation_unique_patient_no_within_facility.py(0 hunks)care/facility/migrations/0416_update_facility_types.py(0 hunks)care/facility/migrations/0417_merge_20240305_1805.py(0 hunks)care/facility/migrations/0418_alter_facility_facility_type_and_more.py(0 hunks)care/facility/migrations/0419_alter_patientconsultation_patient_no.py(0 hunks)care/facility/migrations/0420_migrate_shifting_facility_type.py(0 hunks)care/facility/migrations/0421_merge_20240318_1434.py(0 hunks)care/facility/migrations/0422_alter_facilityinventorylog_quantity_and_more.py(0 hunks)care/facility/migrations/0422_merge_20240325_1411.py(0 hunks)care/facility/migrations/0423_patientconsultation_consent_records_and_more.py(0 hunks)care/facility/migrations/0424_remove_patientregistration_age_and_add_patientregistration_death_datetime.py(0 hunks)care/facility/migrations/0425_merge_20240403_2055.py(0 hunks)care/facility/migrations/0426_alter_fileupload_file_type.py(0 hunks)care/facility/migrations/0427_dailyround_is_parsed_by_ocr.py(0 hunks)care/facility/migrations/0428_alter_patientmetainfo_occupation.py(0 hunks)care/facility/migrations/0429_double_pain_scale.py(0 hunks)care/facility/migrations/0430_alter_asset_support_phone.py(0 hunks)care/facility/migrations/0431_patientnotes_thread.py(0 hunks)care/facility/migrations/0432_alter_fileupload_file_type.py(0 hunks)care/facility/migrations/0433_alter_hospitaldoctors_area.py(0 hunks)care/facility/migrations/0433_remove_dailyround_current_health.py(0 hunks)care/facility/migrations/0434_unique_investigations.py(0 hunks)care/facility/migrations/0435_merge_20240515_1301.py(0 hunks)care/facility/migrations/0436_remove_dailyround_temperature_measured_at.py(0 hunks)care/facility/migrations/0437_alter_dailyround_rounds_type.py(0 hunks)care/facility/migrations/0438_alter_dailyround_patient_category_and_more.py(0 hunks)care/facility/migrations/0439_encounter_symptoms.py(0 hunks)care/facility/migrations/0439_historicalpatientregistration_ration_card_category_and_more.py(0 hunks)care/facility/migrations/0440_merge_20240528_1613.py(0 hunks)care/facility/migrations/0441_delete_patientteleconsultation.py(0 hunks)care/facility/migrations/0442_remove_patientconsultation_unique_patient_no_within_facility.py(0 hunks)care/facility/migrations/0443_remove_patientconsultation_consent_records_and_more.py(0 hunks)care/facility/migrations/0444_alter_medicineadministration_dosage_and_more.py(0 hunks)care/facility/migrations/0444_patientconsultation_has_consents_and_more.py(0 hunks)care/facility/migrations/0445_merge_20240715_0301.py(0 hunks)care/facility/migrations/0446_alter_hospitaldoctors_area.py(0 hunks)care/facility/migrations/0446_alter_notification_event.py(0 hunks)care/facility/migrations/0447_alter_dailyround_patient_category_and_more.py(0 hunks)care/facility/migrations/0447_patientconsultationevent_taken_at.py(0 hunks)care/facility/migrations/0448_rename_features_facility_old_features.py(0 hunks)care/facility/migrations/0448_rename_ventilator_fi02_dailyround_ventilator_fio2.py(0 hunks)care/facility/migrations/0449_merge_20240822_1343.py(0 hunks)care/facility/migrations/0450_corrections_for_io_balance_fields.py(0 hunks)care/facility/migrations/0450_merge_20240823_1617.py(0 hunks)care/facility/migrations/0451_merge_20240823_1642.py(0 hunks)care/facility/migrations/0452_remove_patientconsultation_deprecated_diagnosis_and_more.py(0 hunks)care/facility/migrations/0453_merge_20240824_2040.py(0 hunks)care/facility/migrations/0454_remove_historicalpatientregistration_abha_number_and_more.py(0 hunks)care/facility/migrations/0455_remove_facility_old_features.py(0 hunks)care/facility/migrations/0456_dailyround_appetite_dailyround_bladder_drainage_and_more.py(0 hunks)care/facility/migrations/0457_patientmetainfo_domestic_healthcare_support_and_more.py(0 hunks)care/facility/migrations/0458_facilityflag_facilityflag_unique_facility_flag.py(0 hunks)care/facility/migrations/0459_remove_bed_unique_bed_name_per_location_and_more.py(0 hunks)care/facility/migrations/0460_alter_dailyround_bp_alter_dailyround_feeds_and_more.py(0 hunks)care/facility/migrations/0461_remove_patientconsultation_prescriptions_and_more.py(0 hunks)care/facility/migrations/0462_facilityhubspoke.py(0 hunks)care/facility/migrations/0463_patientnotes_reply_to.py(0 hunks)care/facility/migrations/0464_alter_facilitycapacity_room_type_and_more.py(0 hunks)care/facility/migrations/0464_rename_spo2_dailyround_archived_spo2.py(0 hunks)care/facility/migrations/0465_merge_20240923_1045.py(0 hunks)care/facility/migrations/0466_camera_presets.py(0 hunks)care/facility/migrations/0467_alter_hospitaldoctors_area.py(0 hunks)care/facility/migrations/0468_alter_facilitypatientstatshistory_unique_together_and_more.py(0 hunks)care/facility/migrations/0468_remove_resourcerequest_assigned_quantity_and_more.py(0 hunks)care/facility/migrations/0469_alter_resourcerequest_category.py(0 hunks)care/facility/migrations/0470_alter_historicalpatientregistration_is_antenatal_and_more.py(0 hunks)care/facility/migrations/0471_facility_description.py(0 hunks)care/facility/migrations/0472_historicalpatientregistration_mobility_status_and_more.py(0 hunks)care/facility/migrations/0473_alter_facility_facility_type_and_more.py(0 hunks)care/facility/migrations/0474_alter_patientconsultation_category.py(0 hunks)care/facility/migrations/0475_merge_20241223_2352.py(0 hunks)care/facility/migrations/0476_facility_default_internal_organization_and_more.py(0 hunks)care/facility/migrations/0477_alter_facility_facility_type_and_more.py(0 hunks)care/facility/migrations/0478_facility_discount_codes_and_more.py(0 hunks)care/facility/migrations/0479_remove_historicalpatientregistration_assigned_to_and_more.py(0 hunks)care/facility/migrations/0480_remove_ambulance_created_by_and_more.py(0 hunks)care/facility/migrations/0481_delete_asset_delete_assetbed_delete_bed_and_more.py(0 hunks)care/users/migrations/0001_initial_squashed.py(0 hunks)care/users/migrations/0001_new_initial.py(1 hunks)care/users/migrations/0002_auto_20230613_1622.py(0 hunks)care/users/migrations/0002_new_initial.py(1 hunks)care/users/migrations/0003_auto_20230613_1657.py(0 hunks)care/users/migrations/0004_alter_district_id_alter_localbody_id_alter_skill_id_and_more.py(0 hunks)care/users/migrations/0005_alter_user_alt_phone_number_alter_user_phone_number.py(0 hunks)care/users/migrations/0006_user_weekly_working_hours.py(0 hunks)care/users/migrations/0007_alter_user_alt_phone_number_alter_user_phone_number.py(0 hunks)care/users/migrations/0008_rename_skill_and_add_new_20230817_1937.py(0 hunks)care/users/migrations/0009_userfacilityallocation.py(0 hunks)care/users/migrations/0010_rename_skills.py(0 hunks)care/users/migrations/0011_user_video_connect_link.py(0 hunks)care/users/migrations/0012_alter_user_user_type.py(0 hunks)care/users/migrations/0013_staff_to_nurse.py(0 hunks)care/users/migrations/0014_alter_user_username.py(0 hunks)care/users/migrations/0015_age_to_dateofbirth.py(0 hunks)care/users/migrations/0016_upgrade_user_skills.py(0 hunks)care/users/migrations/0017_userflag.py(0 hunks)care/users/migrations/0018_user_profile_picture_url.py(0 hunks)care/users/migrations/0019_rename_doctor_qualification_user_qualification.py(0 hunks)care/users/migrations/0020_plugconfig.py(0 hunks)care/users/migrations/0021_rename_gender_user_old_gender_user_geo_organization_and_more.py(0 hunks)care/users/migrations/0022_user_mfa_settings_user_totp_secret.py(0 hunks)care/users/migrations/0023_user_prefix_user_suffix.py(0 hunks)care/users/migrations/0024_remove_user_district_remove_localbody_district_and_more.py(0 hunks)care/users/models.py(1 hunks)
💤 Files with no reviewable changes (189)
- care/facility/migrations/0449_merge_20240822_1343.py
- care/facility/migrations/0361_merge_20230610_2126.py
- care/facility/migrations/0437_alter_dailyround_rounds_type.py
- care/facility/migrations/0459_remove_bed_unique_bed_name_per_location_and_more.py
- care/facility/migrations/0416_patientconsultation_unique_patient_no_within_facility.py
- care/facility/migrations/0367_prescription_medicine_and_more.py
- care/facility/migrations/0461_remove_patientconsultation_prescriptions_and_more.py
- care/users/migrations/0018_user_profile_picture_url.py
- care/facility/migrations/0383_patientconsultation_icd11_principal_diagnosis.py
- care/facility/migrations/0473_alter_facility_facility_type_and_more.py
- care/users/migrations/0023_user_prefix_user_suffix.py
- care/facility/migrations/0460_alter_dailyround_bp_alter_dailyround_feeds_and_more.py
- care/users/migrations/0014_alter_user_username.py
- care/facility/migrations/0421_merge_20240318_1434.py
- care/facility/migrations/0373_remove_patientconsultation_hba1c.py
- care/facility/migrations/0396_merge_20231122_0240.py
- care/facility/migrations/0395_alter_patientconsultation_route_to_facility.py
- care/facility/migrations/0392_alter_dailyround_consciousness_level.py
- care/facility/migrations/0433_remove_dailyround_current_health.py
- care/facility/migrations/0476_facility_default_internal_organization_and_more.py
- care/facility/migrations/0388_icd11diagnosis.py
- care/facility/migrations/0467_alter_hospitaldoctors_area.py
- care/facility/migrations/0463_patientnotes_reply_to.py
- care/facility/migrations/0431_patientnotes_thread.py
- care/facility/migrations/0464_alter_facilitycapacity_room_type_and_more.py
- care/facility/migrations/0404_merge_20231220_2227.py
- care/users/migrations/0015_age_to_dateofbirth.py
- care/facility/migrations/0414_remove_bed_old_name.py
- care/facility/migrations/0388_alter_historicalpatientregistration_action_and_more.py
- care/users/migrations/0010_rename_skills.py
- care/facility/migrations/0364_rename_orgin_facility_resourcerequest_origin_facility_and_more.py
- care/facility/migrations/0418_alter_facility_facility_type_and_more.py
- care/facility/migrations/0408_patientnotesedit.py
- care/facility/migrations/0397_truncate_discharge_time.py
- care/facility/migrations/0450_corrections_for_io_balance_fields.py
- care/facility/migrations/0448_rename_features_facility_old_features.py
- care/users/migrations/0020_plugconfig.py
- care/facility/migrations/0457_patientmetainfo_domestic_healthcare_support_and_more.py
- care/users/migrations/0016_upgrade_user_skills.py
- care/facility/migrations/0393_alter_hospitaldoctors_count.py
- care/facility/migrations/0468_remove_resourcerequest_assigned_quantity_and_more.py
- care/facility/migrations/0384_metaicd11diagnosis_chapter_short_and_more.py
- care/facility/migrations/0389_assetlocation_middleware_address.py
- care/facility/migrations/0448_rename_ventilator_fi02_dailyround_ventilator_fio2.py
- care/facility/migrations/0408_delete_metaicd11diagnosis.py
- care/users/migrations/0005_alter_user_alt_phone_number_alter_user_phone_number.py
- care/facility/migrations/0409_merge_20240210_1510.py
- care/facility/migrations/0454_remove_historicalpatientregistration_abha_number_and_more.py
- care/facility/migrations/0415_rename_dosage_prescription_base_dosage_and_more.py
- care/facility/migrations/0481_delete_asset_delete_assetbed_delete_bed_and_more.py
- care/facility/migrations/0451_merge_20240823_1642.py
- care/facility/migrations/0425_merge_20240403_2055.py
- care/facility/migrations/0440_merge_20240528_1613.py
- care/facility/migrations/0438_alter_dailyround_patient_category_and_more.py
- care/facility/migrations/0465_merge_20240923_1045.py
- care/facility/migrations/0433_alter_hospitaldoctors_area.py
- care/facility/migrations/0439_historicalpatientregistration_ration_card_category_and_more.py
- care/facility/migrations/0470_alter_historicalpatientregistration_is_antenatal_and_more.py
- care/facility/migrations/0405_auto_20231211_1930.py
- care/facility/migrations/0405_bed_name_constraint.py
- care/facility/migrations/0428_alter_patientmetainfo_occupation.py
- care/users/migrations/0011_user_video_connect_link.py
- care/facility/migrations/0386_auto_20230911_1726.py
- care/facility/migrations/0382_assetservice_remove_asset_last_serviced_on_and_more.py
- care/facility/migrations/0422_alter_facilityinventorylog_quantity_and_more.py
- care/facility/migrations/0446_alter_hospitaldoctors_area.py
- care/facility/migrations/0426_alter_fileupload_file_type.py
- care/users/migrations/0002_auto_20230613_1622.py
- care/facility/migrations/0399_populate_patientnotes_consultation.py
- care/facility/migrations/0372_assetavailabilityrecord.py
- care/facility/migrations/0377_merge_20230809_0009.py
- care/facility/migrations/0430_alter_asset_support_phone.py
- care/facility/migrations/0432_alter_fileupload_file_type.py
- care/facility/migrations/0462_facilityhubspoke.py
- care/facility/migrations/0429_double_pain_scale.py
- care/users/migrations/0006_user_weekly_working_hours.py
- care/facility/migrations/0402_delete_prescriptionsupplier.py
- care/facility/migrations/0458_facilityflag_facilityflag_unique_facility_flag.py
- care/facility/migrations/0394_rename_consultation_status_patientconsultation_route_to_facility_and_more.py
- care/facility/migrations/0472_historicalpatientregistration_mobility_status_and_more.py
- care/facility/migrations/0378_consultationbedasset_consultationbed_assets.py
- care/facility/migrations/0415_patientconsultation_previous_consultation.py
- care/facility/migrations/0410_availabilityrecord_delete_assetavailabilityrecord_and_more.py
- care/facility/migrations/0376_auto_20230807_2148.py
- care/facility/migrations/0412_availabilityrecord_unique_constraint.py
- care/facility/migrations/0376_alter_ambulance_owner_phone_number_and_more.py
- care/facility/migrations/0423_patientconsultation_consent_records_and_more.py
- care/facility/migrations/0453_merge_20240824_2040.py
- care/facility/migrations/0366_medibasemedicine_and_more.py
- care/facility/migrations/0471_facility_description.py
- care/facility/migrations/0466_camera_presets.py
- care/facility/migrations/0389_merge_20231005_2247.py
- care/facility/migrations/0381_merge_ip_op_no.py
- care/facility/migrations/0415_alter_patientmetainfo_head_of_household_and_more.py
- care/facility/migrations/0394_alter_assetlocation_location_type.py
- care/facility/migrations/0445_merge_20240715_0301.py
- care/facility/migrations/0464_rename_spo2_dailyround_archived_spo2.py
- care/facility/migrations/0407_alter_dailyround_additional_symptoms_and_more.py
- care/facility/migrations/0402_patientconsultation_new_discharge_reason.py
- care/facility/migrations/0452_remove_patientconsultation_deprecated_diagnosis_and_more.py
- care/facility/migrations/0434_unique_investigations.py
- care/facility/migrations/0398_alter_prescription_dosage_and_more.py
- care/facility/migrations/0384_patientconsultation_verified_by.py
- care/facility/migrations/0435_merge_20240515_1301.py
- care/facility/migrations/0401_merge_20231208_0054.py
- care/facility/migrations/0363_auto_20230621_1857.py
- care/facility/migrations/0447_patientconsultationevent_taken_at.py
- care/facility/migrations/0405_alter_prescription_route.py
- care/facility/migrations/0379_rename_prescribed_medication_patientconsultation_treatment_plan.py
- care/facility/migrations/0415_auto_20240227_0130.py
- care/facility/migrations/0442_remove_patientconsultation_unique_patient_no_within_facility.py
- care/facility/migrations/0387_merge_20230911_2303.py
- care/facility/migrations/0455_remove_facility_old_features.py
- care/users/migrations/0019_rename_doctor_qualification_user_qualification.py
- care/facility/migrations/0479_remove_historicalpatientregistration_assigned_to_and_more.py
- care/facility/migrations/0398_patientnotes_consultation.py
- care/facility/migrations/0450_merge_20240823_1617.py
- care/users/migrations/0012_alter_user_user_type.py
- care/facility/migrations/0408_historicalpatientregistration_date_of_delivery_and_more.py
- care/facility/migrations/0408_alter_dailyround_resp.py
- care/facility/migrations/0369_merge_0366_auto_20230627_1806_0368_populate_medibase.py
- care/facility/migrations/0391_merge_20231016_1845.py
- care/facility/migrations/0002_auto_20230613_1657.py
- care/facility/migrations/0004_alter_historicalfacilitycapacity_options_and_more.py
- care/facility/migrations/0436_remove_dailyround_temperature_measured_at.py
- care/facility/migrations/0416_update_facility_types.py
- care/facility/migrations/0419_alter_patientconsultation_patient_no.py
- care/facility/migrations/0403_rename_admission_date_to_encounter_date_and_more.py
- care/facility/migrations/0370_merge_20230705_1500.py
- care/facility/migrations/0389_medicineadministration_archived_by_and_more.py
- care/facility/migrations/0393_alter_notification_event.py
- care/facility/migrations/0478_facility_discount_codes_and_more.py
- care/facility/migrations/0364_alter_historicalpatientregistration_emergency_phone_number_and_more.py
- care/facility/migrations/0420_migrate_shifting_facility_type.py
- care/facility/migrations/0411_merge_20240212_1429.py
- care/facility/migrations/0371_metaicd11diagnosis_chapter_and_more.py
- care/users/migrations/0008_rename_skill_and_add_new_20230817_1937.py
- care/facility/migrations/0415_consultationclinician_and_more.py
- care/facility/migrations/0422_merge_20240325_1411.py
- care/facility/migrations/0441_delete_patientteleconsultation.py
- care/facility/migrations/0469_alter_resourcerequest_category.py
- care/facility/migrations/0393_rename_diagnosis_patientconsultation_deprecated_diagnosis_and_more.py
- care/facility/migrations/0380_patientnotes_user_type.py
- care/users/migrations/0009_userfacilityallocation.py
- care/facility/migrations/0446_alter_notification_event.py
- care/facility/migrations/0447_alter_dailyround_patient_category_and_more.py
- care/facility/migrations/0368_populate_medibase.py
- care/facility/migrations/0443_remove_patientconsultation_consent_records_and_more.py
- care/users/migrations/0004_alter_district_id_alter_localbody_id_alter_skill_id_and_more.py
- care/facility/migrations/0403_alter_dailyround_rounds_type.py
- care/facility/migrations/0394_auto_20231114_2219.py
- care/facility/migrations/0003_auto_20230614_1048.py
- care/users/migrations/0013_staff_to_nurse.py
- care/facility/migrations/0444_patientconsultation_has_consents_and_more.py
- care/users/migrations/0022_user_mfa_settings_user_totp_secret.py
- care/facility/migrations/0390_patientconsultation_medico_legal_case.py
- care/facility/migrations/0468_alter_facilitypatientstatshistory_unique_together_and_more.py
- care/users/migrations/0017_userflag.py
- care/facility/migrations/0475_merge_20241223_2352.py
- care/facility/migrations/0385_alter_patientconsultation_verified_by.py
- care/facility/migrations/0367_auto_20230704_1646.py
- care/facility/migrations/0474_alter_patientconsultation_category.py
- care/facility/migrations/0424_remove_patientregistration_age_and_add_patientregistration_death_datetime.py
- care/facility/migrations/0413_eventtype_patientconsultationevent_and_more.py
- care/facility/migrations/0427_dailyround_is_parsed_by_ocr.py
- care/facility/migrations/0406_bed_unique_bed_name_per_location.py
- care/facility/migrations/0400_merge_20231208_0016.py
- care/facility/migrations/0360_auto_20230608_1045.py
- care/facility/migrations/0389_merge_20231002_1802.py
- care/facility/migrations/0385_patientconsultation_is_readmission.py
- care/facility/migrations/0388_goal_goalentry_goalproperty_goalpropertyentry.py
- care/facility/migrations/0480_remove_ambulance_created_by_and_more.py
- care/facility/migrations/0375_alter_dailyround_resp.py
- care/facility/migrations/0415_alter_dailyround_consciousness_level_and_more.py
- care/facility/migrations/0417_merge_20240305_1805.py
- care/users/migrations/0024_remove_user_district_remove_localbody_district_and_more.py
- care/users/migrations/0003_auto_20230613_1657.py
- care/facility/migrations/0365_merge_20230626_1834.py
- care/facility/migrations/0444_alter_medicineadministration_dosage_and_more.py
- care/facility/migrations/0362_merge_20230617_1253.py
- care/facility/migrations/0477_alter_facility_facility_type_and_more.py
- care/users/migrations/0021_rename_gender_user_old_gender_user_geo_organization_and_more.py
- care/facility/migrations/0406_merge_20240116_2346.py
- care/users/migrations/0007_alter_user_alt_phone_number_alter_user_phone_number.py
- care/facility/migrations/0366_auto_20230627_1806.py
- care/users/migrations/0001_initial_squashed.py
- care/facility/migrations/0374_historicalpatientregistration_abha_number_and_more.py
- care/facility/migrations/0456_dailyround_appetite_dailyround_bladder_drainage_and_more.py
- care/facility/migrations/0439_encounter_symptoms.py
🧰 Additional context used
📓 Path-based instructions (8)
**/*.py
📄 CodeRabbit inference engine (.cursorrules)
**/*.py: Prioritize readability and maintainability; follow Django's coding style guide (PEP 8 compliance).
Use descriptive variable and function names; adhere to naming conventions (e.g., lowercase with underscores for functions and variables).
Files:
care/emr/migrations/0034_token_system.pycare/emr/migrations/0040_template_reportupload.pycare/emr/migrations/0001_initial.pycare/emr/migrations/0036_deliveryorder_supplydelivery_order_dispenseorder_and_more.pycare/emr/migrations/0030_encounter_tags_medicationrequest_dispense_status_and_more.pycare/users/migrations/0001_new_initial.pycare/facility/migrations/0002_new_initial.pycare/users/models.pycare/emr/migrations/0018_consent_device_deviceencounterhistory_and_more.pycare/facility/migrations/0001_new_initial.pycare/emr/migrations/0013_facilitylocation_facilitylocationorganization.pycare/users/migrations/0002_new_initial.py
**/{models,views,forms}.py
📄 CodeRabbit inference engine (.cursorrules)
Use Django’s built-in user model and authentication framework for user management.
Files:
care/users/models.py
**/{forms,models}.py
📄 CodeRabbit inference engine (.cursorrules)
Use Django's validation framework to validate form and model data.
Files:
care/users/models.py
**/{views,models,tasks}.py
📄 CodeRabbit inference engine (.cursorrules)
Prefer try-except blocks for handling exceptions in business logic and views.
Files:
care/users/models.py
**/{models,forms,views}.py
📄 CodeRabbit inference engine (.cursorrules)
Keep business logic in models and forms; keep views light and focused on request handling.
Files:
care/users/models.py
**/{views,models}*.py
📄 CodeRabbit inference engine (.cursorrules)
**/{views,models}*.py: Leverage Django’s caching framework to optimize performance for frequently accessed data.
Use Django’s cache framework with backend support (e.g., Redis or Memcached) to reduce database load.
Files:
care/users/models.py
**/{views,models}.py
📄 CodeRabbit inference engine (.cursorrules)
Optimize query performance using Django ORM's select_related and prefetch_related for related object fetching.
Files:
care/users/models.py
**/models.py
📄 CodeRabbit inference engine (.cursorrules)
Implement database indexing and query optimization techniques for better performance.
Files:
care/users/models.py
🧠 Learnings (1)
📚 Learning: 2024-11-28T06:16:31.373Z
Learnt from: DraKen0009
Repo: ohcnetwork/care PR: 2620
File: care/facility/models/facility.py:306-311
Timestamp: 2024-11-28T06:16:31.373Z
Learning: In the 'care' project, moving imports of models like `Asset`, `AssetLocation`, `FacilityDefaultAssetLocation`, and `PatientSample` to the module level in `care/facility/models/facility.py` causes circular imports. Therefore, it's acceptable to keep these imports inside the `delete` method of the `Facility` class.
Applied to files:
care/users/models.pycare/facility/migrations/0001_new_initial.py
🧬 Code graph analysis (1)
care/users/models.py (1)
care/utils/models/base.py (1)
BaseFlag(38-92)
🪛 Ruff (0.14.8)
care/users/migrations/0001_new_initial.py
17-19: Mutable class attributes should be annotated with typing.ClassVar
(RUF012)
21-24: Mutable class attributes should be annotated with typing.ClassVar
(RUF012)
26-101: Mutable class attributes should be annotated with typing.ClassVar
(RUF012)
care/facility/migrations/0002_new_initial.py
12-17: Mutable class attributes should be annotated with typing.ClassVar
(RUF012)
19-23: Mutable class attributes should be annotated with typing.ClassVar
(RUF012)
25-50: Mutable class attributes should be annotated with typing.ClassVar
(RUF012)
care/facility/migrations/0001_new_initial.py
13-15: Mutable class attributes should be annotated with typing.ClassVar
(RUF012)
17-18: Mutable class attributes should be annotated with typing.ClassVar
(RUF012)
20-92: Mutable class attributes should be annotated with typing.ClassVar
(RUF012)
care/users/migrations/0002_new_initial.py
11-13: Mutable class attributes should be annotated with typing.ClassVar
(RUF012)
15-18: Mutable class attributes should be annotated with typing.ClassVar
(RUF012)
20-26: Mutable class attributes should be annotated with typing.ClassVar
(RUF012)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Test / Test
🔇 Additional comments (19)
care/users/models.py (1)
12-227: Skill/UserSkill removal and BaseFlag‑only importThe cleanup to only import
BaseFlagand dropSkill/UserSkill(andUser.skills) looks fine in isolation. Given those were public models and a ManyToMany onUser, please sanity‑check:
- The squashed
users/facility/emrmigrations either never create or explicitly drop the oldskill/userskilltables and theuser.skillsM2M.- There are no remaining references to
Skill,UserSkill, oruser.skillsin views/serializers/admin/permissions, which would now error at runtime.- Any historical data that relied on these relations is either intentionally discarded or migrated elsewhere.
A quick
rg 'Skill\b' care/andrg 'skills\b' care/pass is probably worth the 10 seconds before this hits staging.care/emr/migrations/0018_consent_device_deviceencounterhistory_and_more.py (1)
12-16: Updated facility dependency to0002_new_initialRepointing this migration to
('facility', '0002_new_initial')matches the squash story. The operations here only needfacility.Facility, but to avoid migration‑graph surprises:
- Confirm
facility.0002_new_initial(and itsreplaceschain) yields the same or superset schema that this migration previously assumed from0476_....- Check that no other
emrmigration in the series still depends on the old0476_...node, which could create a split graph.It’s worth running a dry run on both a blank DB and a DB at the current
develophead to be sure Django doesn’t complain about unmet or duplicate facility migrations.care/emr/migrations/0034_token_system.py (1)
23-27: Token system migration now anchored tofacility.0002_new_initialThis dependency change is consistent with the new facility baseline. Since this migration wires many models (
TokenCategory,TokenQueue,ResourceCategory, etc.) tofacility.Facility, please verify:
facility.0002_new_initialindeed represents the final facility schema version that was previously available at0478_....- There is no remaining
emrmigration that still depends onfacility.0478_..., which could cause Django to infer two separate facility histories.If you haven’t already, a
python -m django showmigrations facility emrin your local env (not the CI sandbox) will make any skew very obvious.care/emr/migrations/0040_template_reportupload.py (1)
11-15: Template/ReportUpload now depend onfacility.0002_new_initialThe dependency bump is mechanically fine; this migration only needs
facility.Facilityfor the FK. Just make sure this file and its neighbors (0039/0041, etc.) are all consistently pointing at the same squashed facility baseline so you don’t end up with subtly different dependency chains between adjacent EMR migrations.care/emr/migrations/0001_initial.py (1)
17-21: EMR initial now tied tofacility.0001_new_initialChanging the EMR initial dependency to
facility.0001_new_initialis a reasonable part of the squash, but this is the one place where migration history tends to bite back:
- Ensure
facility.0001_new_initialcorrectlyreplacesthe old facility chain that EMR’s 0001 used to depend on, so existing environments don’t suddenly see an “unapplied initial” they can’t reasonably run.- Verify both flows: fresh DB from scratch and an already‑migrated DB from current
develop, without hacking thedjango_migrationstable.If either of those paths fails, untangling it after deploy will be… unpleasant.
care/emr/migrations/0036_deliveryorder_supplydelivery_order_dispenseorder_and_more.py (1)
12-16: Delivery/Dispense order migration re‑based tofacility.0002_new_initialNo issues with the code itself; the only concern is graph consistency:
- Confirm all EMR migrations that reference
facility.Facilityaround this point also depend onfacility.0002_new_initial, not a mix of old 047x nodes.- Double‑check that
0002_new_initialdefinesFacilityand any constraints this migration assumes; otherwise a from‑scratch migrate could fail mid‑stream.Once you’ve run through a full migrate on a blank DB, this one should be uneventful.
care/emr/migrations/0013_facilitylocation_facilitylocationorganization.py (1)
12-16: FacilityLocation migration now depends onfacility.0002_new_initialGiven this migration introduces core location hierarchy models tied to
facility.Facility, it’s important that:
facility.0002_new_initialalready includes any facility fields/constraints that downstream code expects when working withFacilityLocation(e.g., default org relationships).- There are no remaining EMR migrations before/after 0013 that still reference the old
0476_...dependency, which could lead to ordering quirks.Worth re‑generating a schema from scratch and confirming the resulting EMR+facility tables match what your current production schema looks like.
care/emr/migrations/0030_encounter_tags_medicationrequest_dispense_status_and_more.py (1)
12-16: Large billing/ordering migration re‑anchored tofacility.0002_new_initialFor such a heavy migration (billing, identifiers, inventory, services, etc.), the dependency switch is the main risk surface:
- Ensure
facility.0002_new_initialrepresents the same facility schema version this migration was originally written for (previously0478_...), especially around any facility‑level uniqueness or org structure that billing relies on.- Check that every EMR migration between 0029 and the later 003x series consistently depends on
facility.0002_new_initialso Django doesn’t end up with competing facility baselines.If your end‑to‑end migrate (old head → this branch) and a fresh migrate both succeed, this change is probably as safe as a migration squash ever gets.
care/users/migrations/0002_new_initial.py (2)
20-26: LGTM!The
geo_organizationfield is properly defined with appropriate nullable constraints andSET_NULLbehavior for the foreign key relationship.
7-18: This migration structure is intentional and consistent with the project's migration squashing strategy. Multiple apps in the codebase (users, facility) follow the same pattern: marking squashed migrations asinitial=Truewithreplacesdirectives while chaining them via dependencies. Django handles this correctly during fresh database installations by following the dependency chain.care/users/migrations/0001_new_initial.py (3)
13-24: LGTM!The migration metadata is correctly structured. Dependencies on
authandfacility.0001_new_initialare appropriate for a user model that references facilities.
27-34: LGTM!The
PlugConfigmodel is well-defined with appropriate field types and constraints.
85-100: LGTM!The
UserFlagmodel is properly defined with appropriate fields and a well-structured unique constraint that respects soft deletion.care/facility/migrations/0002_new_initial.py (2)
8-23: LGTM!The migration dependencies are correctly structured for the squashed migration pattern. The reference to
facility.0001_new_initialproperly chains these initial migrations.
46-50: LGTM!The unique constraint is properly defined to enforce uniqueness on
(facility, flag)only for non-deleted records, which correctly respects the soft deletion pattern.care/facility/migrations/0001_new_initial.py (4)
9-18: LGTM!The migration metadata is correctly structured as a base initial migration with no dependencies.
21-34: LGTM!The
Facilitymodel's core fields are properly defined with appropriate types and constraints. The extensive facility type choices cover various healthcare facility categories comprehensively.
41-61: LGTM!The facility capacity and metadata fields are appropriately defined. The use of JSON fields for discount codes and components provides good flexibility for complex data structures.
62-92: LGTM!The
FacilityFlagandPatientMobileOTPmodels are properly defined with appropriate fields. The phone number validation ensures data consistency.
Migration changes
./manage.py showmigrations
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
[X] 0003_logentry_add_action_flag_choices
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
[X] 0009_alter_user_last_name_max_length
[X] 0010_alter_group_name_max_length
[X] 0011_update_proxy_permissions
[X] 0012_alter_user_first_name_max_length
authtoken
[X] 0001_initial
[X] 0002_auto_20160226_1747
[X] 0003_tokenproxy
[X] 0004_alter_tokenproxy_options
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
emr
[X] 0001_initial
[X] 0002_questionnaire_tags_questionnairetag
[X] 0003_questionnairetag_slug
[X] 0002_alter_patient_gender
[X] 0004_merge_20250108_1244
[X] 0005_alter_availability_slot_size_in_minutes_and_more
[X] 0006_alter_patient_blood_group
[X] 0007_remove_medicationrequest_authored_on_and_more
[X] 0008_medicationrequest_medication
[X] 0009_medicationrequest_authored_on
[X] 0010_condition_abatement
[X] 0011_medicationrequest_requester
[X] 0012_alter_condition_encounter
[X] 0013_facilitylocation_facilitylocationorganization
[X] 0014_encounter_current_location_facilitylocationencounter
[X] 0015_facilitylocation_availability_status_and_more
[X] 0016_allergyintolerance_copied_from
[X] 0017_remove_facilitylocation_availability_status_and_more
[X] 0018_consent_device_deviceencounterhistory_and_more
[X] 0019_consent_note
[X] 0020_observation_component
[X] 0021_metaartifact
[X] 0022_facilitylocation_sort_index
[X] 0023_uservaluesetpreference
[X] 0023_allergyintolerance_allergy_intolerance_type
[X] 0024_merge_20250320_2002
[X] 0025_alter_tokenbooking_token_slot
[X] 0026_encounter_treating_doctors
[X] 0027_rename_treating_doctors_encounter_care_team
[X] 0028_alter_encounter_care_team
[X] 0029_encounter_discharge_summary_advice
[X] 0030_encounter_tags_medicationrequest_dispense_status_and_more
[X] 0031_rename_reason_for_visit_tokenbooking_note
[X] 0032_tokenbooking_associated_encounter
[X] 0033_healthcareservice_managing_organization
[X] 0034_token_system
[X] 0035_remove_tagconfig_slug
[X] 0036_deliveryorder_supplydelivery_order_dispenseorder_and_more
[X] 0037_deliveryorder_destination_deliveryorder_origin_and_more
[X] 0038_paymentreconciliation_location
[X] 0039_formsubmission_questionnaireresponse_form_submission
[X] 0040_template_reportupload
[X] 0041_template_options
[X] 0040_alter_observation_interpretation
[X] 0042_merge_20251209_2240
facility
[-] 0001_new_initial (1 squashed migrations) Run 'manage.py migrate' to finish recording.
[-] 0002_new_initial (4 squashed migrations) Run 'manage.py migrate' to finish recording.
security
[X] 0001_initial
[X] 0002_remove_rolemodel_unique_order_and_more
[X] 0003_migrate_default_role_change
[X] 0004_alter_rolemodel_name_and_more
[X] 0005_rolemodel_is_archived
sessions
[X] 0001_initial
sites
[X] 0001_initial
[X] 0002_alter_domain_unique
[X] 0003_set_site_domain_and_name
[X] 0004_alter_site_options
users
[-] 0001_new_initial (1 squashed migrations) Run 'manage.py migrate' to finish recording.
[-] 0002_new_initial (1 squashed migrations) Run 'manage.py migrate' to finish recording.
./manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, authtoken, contenttypes, emr, facility, security, sessions, sites, users
Running migrations:
No migrations to apply.