HH/PHYSICIAN_REFERENCE_FIXES.md
Marwan Alwali 867f60fed7 update
2026-01-08 20:56:18 +03:00

4.0 KiB

Physician Reference Fixes

Summary

Fixed all references to use the correct model (organizations.Staff) instead of incorrect Physician model references.

Root Cause

The system uses organizations.Staff model for physicians, not a separate Physician model. Several templates and code were incorrectly trying to access a physician attribute on PhysicianMonthlyRating and PatientJourneyStageInstance objects, when the actual field is staff.

Files Fixed

1. Journeys Module

File: apps/journeys/ui_views.py

  • Changed prefetch_related() parameter from 'stage_instances__physician' to 'stage_instances__staff' in two places
  • Line 40 (journey_instance_list view) and Line 149 (journey_instance_detail view)
  • This was the source of the original AttributeError: "Cannot find 'physician' on PatientJourneyStageInstance object"

File: apps/journeys/serializers.py

  • Changed PatientJourneyStageInstanceSerializer field from physician to staff
  • Changed physician_name method to staff_name
  • Updated fields list to use staff and staff_name instead of physician and physician_name
  • The PatientJourneyStageInstance model has a staff field, not physician

2. Appreciation Module

File: apps/appreciation/views.py

  • Changed all Physician.objects references to Staff.objects
  • Updated queryset filters and filters context to use Staff model

File: apps/appreciation/serializers.py

  • Changed model reference from Physician to Staff
  • Updated all field references from physician to staff

3. Dashboard Module

File: templates/dashboard/command_center.html

  • Changed rating.physician.* references to rating.staff.*
  • The PhysicianMonthlyRating model has a staff field, not physician

4. Physicians Templates

File: templates/physicians/ratings_list.html

  • Changed all rating.physician.* references to rating.staff.*

File: templates/physicians/specialization_overview.html

  • Changed all rating.physician.* references to rating.staff.*

File: templates/physicians/department_overview.html

  • Changed all rating.physician.* references to rating.staff.*

5. Physicians App (Verified - No Changes Needed)

The physicians app is already correctly implemented:

  • apps/physicians/models.py - PhysicianMonthlyRating.staff field correctly points to organizations.Staff
  • apps/physicians/views.py - All code correctly uses staff field when querying PhysicianMonthlyRating
  • apps/physicians/serializers.py - All serializers correctly reference staff field
  • apps/physicians/ui_views.py - All views correctly use staff field
  • templates/physicians/*.html - All templates correctly access physician attributes through physician.* where physician is a Staff object

The variable name physician is used correctly in templates as it represents a Staff object passed from views, not a separate Physician model.

Model Structure

organizations.Staff

  • This is the actual physician model
  • Contains fields like: first_name, last_name, license_number, specialization, department, hospital

physicians.PhysicianMonthlyRating

  • Contains monthly aggregated ratings for physicians
  • Has a staff field (ForeignKey to organizations.Staff), NOT physician
  • This was the source of most template errors

journeys.PatientJourneyStageInstance

  • Contains stage instances in patient journeys
  • Has a staff field (ForeignKey to organizations.Staff), NOT physician
  • This was the source of the serializer error

Verification

All imports were verified to be correct:

  • PhysicianMonthlyRating imports are all correct
  • No old Physician model imports exist
  • Only one physician_profile reference found, which is a commented line

Testing

The application should now work correctly without the following errors:

  1. AttributeError: Cannot find 'physician' on PatientJourneyStageInstance object
  2. Template rendering errors due to rating.physician not existing
  3. All physician-related views should display correctly