Treatment notes section adjustment on injury create and edit forms

This commit is contained in:
Denis Durepos 2025-08-15 19:58:51 -04:00
parent fd43de7443
commit 2d052d630b
3 changed files with 39 additions and 91 deletions

View file

@ -126,7 +126,7 @@ class PatientInjuryPortal(CustomerPortal, AccessControlMixin):
'patient_id': patient.id,
'diagnosis': post.get('diagnosis', ''),
'external_notes': post.get('external_notes', ''),
'stage': 'active' if is_treatment_prof else 'unverified',
'stage': 'active',
}
# Handle injury date and injury_date_na checkbox
@ -194,66 +194,31 @@ class PatientInjuryPortal(CustomerPortal, AccessControlMixin):
# Always try to assign team therapists regardless of who created the injury
# Only when a single team context is determinable
if team_id:
# Use the resolved team_id (single team) for assignment
selected_team_id = int(team_id)
# Find therapists specifically for this team
# Find therapists (head and regular) specifically for this team
team_staff = request.env['sports.team.staff'].sudo().search([
('team_id', '=', selected_team_id), # Only from selected team
('team_id', '=', selected_team_id),
('role', 'in', ['head_therapist', 'therapist'])
])
# Log debug info
# Process team staff to find therapists
# Collect user IDs from team staff (prefer direct user_ids relation, fallback to partner mapping)
team_tp_user_ids = set()
for staff in team_staff:
if not staff.user_ids:
# Try to find a user directly associated with this partner
if staff.user_ids:
for u in staff.user_ids:
team_tp_user_ids.add(u.id)
else:
users = request.env['res.users'].sudo().search([('partner_id', '=', staff.partner_id.id)])
# Filter by role
head_therapists = team_staff.filtered(lambda s: s.role == 'head_therapist')
therapists = team_staff.filtered(lambda s: s.role == 'therapist')
# Separate head therapists from regular therapists
# First try to assign head therapist, then any therapist from the selected team
treatment_pros_assigned = False
# Try to assign head therapist first
if head_therapists:
# Find users associated directly with the head therapist partner
head_therapist = head_therapists[0]
users = request.env['res.users'].search([('partner_id', '=', head_therapist.partner_id.id)])
if users:
# Assign head therapist to injury
injury.write({
'treatment_professional_ids': [(4, users[0].id)]
})
treatment_pros_assigned = True
else:
# No user account found for head therapist
pass
# Try to assign regular therapist if no head therapist was assigned
if not treatment_pros_assigned and therapists:
# Find users associated directly with the therapist partner
therapist = therapists[0]
users = request.env['res.users'].sudo().search([('partner_id', '=', therapist.partner_id.id)])
if users:
# Assign therapist to injury
injury.write({
'treatment_professional_ids': [(4, users[0].id)]
})
treatment_pros_assigned = True
else:
# No user account found for therapist
pass
# If no therapist was assigned, log a warning
if not treatment_pros_assigned:
for u in users:
team_tp_user_ids.add(u.id)
if not team_tp_user_ids:
_logger.warning("No valid therapists found to assign to the injury for team %s", selected_team_id)
# Merge any team therapists with any already set/selected ones
merged_ids = set(treatment_prof_ids) | team_tp_user_ids if 'treatment_prof_ids' in locals() else team_tp_user_ids
if merged_ids:
injury.write({'treatment_professional_ids': [(6, 0, list(merged_ids))]})
else:
_logger.info(
"Skipping team-based therapist auto-assignment: patient %s has %s teams",

View file

@ -190,24 +190,6 @@
</div>
</div>
<!-- Add Treatment Note Section (only for treatment professionals) -->
<div t-if="is_treatment_prof" class="card mb-4">
<div class="card-header bg-info text-white">
<h4 class="mb-0">Add Treatment Note</h4>
</div>
<div class="card-body">
<div class="row">
<div class="col-lg-12">
<div class="form-group">
<label for="treatment_note">Treatment Note</label>
<textarea name="treatment_note" id="treatment_note" class="form-control" rows="4"
placeholder="Enter treatment note (will be saved with the current date)"></textarea>
</div>
</div>
</div>
</div>
</div>
<!-- External Notes Section -->
<div class="card mb-4">
<div class="card-header bg-secondary text-white">

View file

@ -76,6 +76,7 @@
</div>
</div>
</div>
<!-- Basic injury information -->
<div class="row">
<div class="col-lg-6">
@ -183,25 +184,6 @@
</div>
</div>
<!-- Add Treatment Note Section (only for treatment professionals) -->
<div t-if="is_treatment_prof" class="card mb-4">
<div class="card-header bg-info text-white">
<h4 class="mb-0">Add Treatment Note</h4>
</div>
<div class="card-body">
<div class="row">
<div class="col-lg-12">
<div class="form-group">
<label for="treatment_note">Treatment Note</label>
<textarea name="treatment_note" id="treatment_note" class="form-control" rows="4"
placeholder="Enter treatment note (will be saved with the current date)"></textarea>
<small class="text-muted">Optional: Add an initial treatment note if treatment was provided during injury assessment</small>
</div>
</div>
</div>
</div>
</div>
<!-- External Notes Section -->
<div class="card mb-4">
<div class="card-header bg-secondary text-white">
@ -221,6 +203,25 @@
</div>
</div>
<!-- Add Treatment Note Section (only for treatment professionals) -->
<div t-if="is_treatment_prof" class="card mb-4">
<div class="card-header bg-info text-white">
<h4 class="mb-0">Add Treatment Note</h4>
</div>
<div class="card-body">
<div class="row">
<div class="col-lg-12">
<div class="form-group">
<label for="treatment_note">Treatment Note</label>
<textarea name="treatment_note" id="treatment_note" class="form-control" rows="4"
placeholder="Enter treatment note (will be saved with the current date)"></textarea>
<small class="text-muted">Optional: Add an initial treatment note if treatment was provided during injury assessment</small>
</div>
</div>
</div>
</div>
</div>
<!-- Action buttons -->
<div class="row mt-4">
<div class="col-lg-12">