Refactor NormalCase model to use age_days instead of age_years, update forms, filters, and templates accordingly for improved age handling

This commit is contained in:
Ross
2025-11-13 22:34:36 +00:00
parent 8da2dd27da
commit a2e9d5e681
9 changed files with 182 additions and 43 deletions
+28 -2
View File
@@ -561,7 +561,13 @@ def toggle_case_normal(request, pk):
# Create NormalCase
from .models import NormalCase
NormalCase.objects.create(case=case, age_years=age, added_by=request.user)
# Convert inferred integer years -> canonical days (approx)
if age is not None:
age_days = NormalCase.to_days(age, NormalCase.AGE_UNIT_YEARS)
else:
age_days = None
NormalCase.objects.create(case=case, age_days=age_days, added_by=request.user)
# Render the updated fragment
# Recompute flags for the fragment render
@@ -633,8 +639,28 @@ def case_normal_form(request, pk):
# Build form with initial values
from .forms import NormalCaseForm
# Map inferred age (years) into age_value/unit defaults. If we inferred
# a fractional year (from birthdate), prefer months for ages < 2 years.
from .models import NormalCase
inferred_age_value = None
inferred_age_unit = None
try:
if age is not None:
# age currently holds integer years; for small ages prefer months
if age < 2:
inferred_age_value = int(age * 12)
inferred_age_unit = NormalCase.AGE_UNIT_MONTHS
else:
inferred_age_value = int(age)
inferred_age_unit = NormalCase.AGE_UNIT_YEARS
except Exception:
inferred_age_value = None
inferred_age_unit = None
form = NormalCaseForm(initial={
"age_years": age,
"age_value": inferred_age_value,
"age_unit": inferred_age_unit,
"examination": inferred_examination,
"modality": inferred_modality,
})