Skip to content

Conversation

@sainak
Copy link
Member

@sainak sainak commented Dec 10, 2025

  • Squash all migrations
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.

@sainak sainak requested a review from a team as a code owner December 10, 2025 14:44
@sainak sainak added the Hold label Dec 10, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 10, 2025

📝 Walkthrough

Walkthrough

This 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

Cohort / File(s) Summary
EMR Migration Dependencies
care/emr/migrations/0001_initial.py, care/emr/migrations/0013_facilitylocation_facilitylocationorganization.py, care/emr/migrations/0018_consent_device_deviceencounterhistory_and_more.py, care/emr/migrations/0030_encounter_tags_medicationrequest_dispense_status_and_more.py, care/emr/migrations/0034_token_system.py, care/emr/migrations/0036_deliveryorder_supplydelivery_order_dispenseorder_and_more.py, care/emr/migrations/0040_template_reportupload.py
Updated facility app dependencies from late-stage migrations (0475_merge, 0476_facility_default_*, 0478_facility_discount_*) to new initial migrations (0001_new_initial, 0002_new_initial)
Facility App: New Initial Migrations
care/facility/migrations/0001_new_initial.py
Introduces initial migration creating Facility, FacilityFlag, and PatientMobileOTP models with comprehensive field definitions, validators, and metadata
Facility App: Replaces Consolidation
care/facility/migrations/0002_new_initial.py
Initial migration marked to replace migrations 0378–0478, adds created_by, default_internal_organization, geo_organization FK fields and facilityflag facility FK with unique constraint
Facility App: Extensive Migration Cleanup
care/facility/migrations/0002_auto_20230613_1657.py through care/facility/migrations/0024_remove_user_district_remove_localbody_district_and_more.py
Deleted 470+ individual migrations spanning data transformations (e.g., 0363_auto_20230621_1857, 0429_double_pain_scale), schema alterations (field type changes, renames, additions), model creations (EventType, PatientConsultationEvent, EncounterSymptom, ConsultationDiagnosis), model deletions, and constraint management
Users App: New Initial Migrations
care/users/migrations/0001_new_initial.py
Introduces initial migration creating PlugConfig, User, and UserFlag models with authentication, profile, contact, and MFA fields
Users App: New Follow-up Migration
care/users/migrations/0002_new_initial.py
Initial migration marked to replace prior migrations, adds geo_organization FK to User model
Users App: Legacy Migration Cleanup
care/users/migrations/0001_initial_squashed.py and care/users/migrations/0002_auto_20230613_1622.py through care/users/migrations/0024_remove_user_district_remove_localbody_district_and_more.py
Deleted 24 migrations including squashed initial, data migrations (skill renames, age-to-dateofbirth conversion), model creations, and field/constraint removals
Users Models
care/users/models.py
Removed Skill and UserSkill model classes and skills M2M field from User model; simplified imports

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Areas requiring extra attention:

  • Migration dependency chain integrity: Verify that all EMR migrations now correctly resolve dependencies through the new facility initial migrations (0001_new_initial, 0002_new_initial); confirm no orphaned or circular dependencies exist across the three apps
  • Data preservation across consolidation: Confirm the new facility 0002_new_initial.py migration with its replaces list correctly supersedes migrations 0378–0478 without data loss; validate that the UniqueConstraint on facilityflag and foreign key relationships are properly established
  • Model removal impact in Users: Validate removal of Skill and UserSkill models—verify no active code paths reference these models or the removed skills M2M relationship; check for dangling imports or serializers that depend on these entities
  • Schema changes in Facility: The new initial migration consolidates significant schema state; review the Facility model's extensive field set (features ArrayField, discount_codes/monetary_components JSONField, phone_number validator) to ensure it reflects the intended final schema
  • Reverse migration feasibility: Although these are initial migrations, confirm the replaces directives and operations are reversible if needed for development/testing environments

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description check ⚠️ Warning The pull request description is completely empty, missing all required sections: Proposed Changes, Associated Issue, and Merge Checklist are absent. Add a comprehensive description following the template: explain what migrations were squashed, why this change was necessary, link any related issues, and complete the merge checklist.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Squash facility and user migrations' clearly describes the main change—consolidating/squashing migrations for two app modules.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch sainak/major-migration-squash

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov
Copy link

codecov bot commented Dec 10, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 74.84%. Comparing base (f9e395b) to head (bb03e56).

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Contributor

@coderabbitai coderabbitai bot left a 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 setting abstract=False.

The User model explicitly sets 'abstract': False in its Meta options. Since False is the default value for abstract, 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 adding related_name to foreign keys.

While the field definitions are correct, the created_by and geo_organization foreign keys don't specify a related_name. This means Django will auto-generate reverse relations (e.g., user.facility_set), which could potentially clash with other models. The default_internal_organization field 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: Redundant default=None with null=True.

Line 37 has both default=None and null=True on the pincode field. Since null=True already allows NULL values in the database, the default=None is 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

📥 Commits

Reviewing files that changed from the base of the PR and between f9e395b and bb03e56.

📒 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.py
  • care/emr/migrations/0040_template_reportupload.py
  • care/emr/migrations/0001_initial.py
  • care/emr/migrations/0036_deliveryorder_supplydelivery_order_dispenseorder_and_more.py
  • care/emr/migrations/0030_encounter_tags_medicationrequest_dispense_status_and_more.py
  • care/users/migrations/0001_new_initial.py
  • care/facility/migrations/0002_new_initial.py
  • care/users/models.py
  • care/emr/migrations/0018_consent_device_deviceencounterhistory_and_more.py
  • care/facility/migrations/0001_new_initial.py
  • care/emr/migrations/0013_facilitylocation_facilitylocationorganization.py
  • care/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.py
  • care/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 import

The cleanup to only import BaseFlag and drop Skill / UserSkill (and User.skills) looks fine in isolation. Given those were public models and a ManyToMany on User, please sanity‑check:

  • The squashed users / facility / emr migrations either never create or explicitly drop the old skill/userskill tables and the user.skills M2M.
  • There are no remaining references to Skill, UserSkill, or user.skills in 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/ and rg '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 to 0002_new_initial

Repointing this migration to ('facility', '0002_new_initial') matches the squash story. The operations here only need facility.Facility, but to avoid migration‑graph surprises:

  • Confirm facility.0002_new_initial (and its replaces chain) yields the same or superset schema that this migration previously assumed from 0476_....
  • Check that no other emr migration in the series still depends on the old 0476_... 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 develop head 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 to facility.0002_new_initial

This dependency change is consistent with the new facility baseline. Since this migration wires many models (TokenCategory, TokenQueue, ResourceCategory, etc.) to facility.Facility, please verify:

  • facility.0002_new_initial indeed represents the final facility schema version that was previously available at 0478_....
  • There is no remaining emr migration that still depends on facility.0478_..., which could cause Django to infer two separate facility histories.

If you haven’t already, a python -m django showmigrations facility emr in 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 on facility.0002_new_initial

The dependency bump is mechanically fine; this migration only needs facility.Facility for 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 to facility.0001_new_initial

Changing the EMR initial dependency to facility.0001_new_initial is a reasonable part of the squash, but this is the one place where migration history tends to bite back:

  • Ensure facility.0001_new_initial correctly replaces the 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 the django_migrations table.

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 to facility.0002_new_initial

No issues with the code itself; the only concern is graph consistency:

  • Confirm all EMR migrations that reference facility.Facility around this point also depend on facility.0002_new_initial, not a mix of old 047x nodes.
  • Double‑check that 0002_new_initial defines Facility and 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 on facility.0002_new_initial

Given this migration introduces core location hierarchy models tied to facility.Facility, it’s important that:

  • facility.0002_new_initial already includes any facility fields/constraints that downstream code expects when working with FacilityLocation (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 to facility.0002_new_initial

For such a heavy migration (billing, identifiers, inventory, services, etc.), the dependency switch is the main risk surface:

  • Ensure facility.0002_new_initial represents the same facility schema version this migration was originally written for (previously 0478_...), 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_initial so 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_organization field is properly defined with appropriate nullable constraints and SET_NULL behavior 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 as initial=True with replaces directives 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 auth and facility.0001_new_initial are appropriate for a user model that references facilities.


27-34: LGTM!

The PlugConfig model is well-defined with appropriate field types and constraints.


85-100: LGTM!

The UserFlag model 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_initial properly 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 Facility model'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 FacilityFlag and PatientMobileOTP models are properly defined with appropriate fields. The phone number validation ensures data consistency.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants