Skip to content

Commit d0e97f4

Browse files
committed
Improve specialty mismatch handling in transfer predictor
- Separate services and subgroups into distinct keys in the transfer model's internal dict to prevent subgroup names leaking into error messages. - Return 0.0 with a warning for unknown services instead of - raising. - Shorten warn_specialty_mismatch to report counts only.
1 parent ecf6fc1 commit d0e97f4

4 files changed

Lines changed: 237 additions & 365 deletions

File tree

src/patientflow/predict/emergency_demand.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,15 +82,13 @@ def warn_specialty_mismatch(
8282
if new_in_request:
8383
warnings.warn(
8484
f"{len(new_in_request)} specialties found in the request but absent "
85-
f"from the trained {source_label} (models may need retraining): "
86-
f"{sorted(new_in_request)}",
85+
f"from the trained {source_label} (models may need retraining).",
8786
stacklevel=stacklevel,
8887
)
8988
if missing_from_request:
9089
warnings.warn(
9190
f"{len(missing_from_request)} specialties present in the trained "
92-
f"{source_label} but absent from the request: "
93-
f"{sorted(missing_from_request)}",
91+
f"{source_label} but absent from the request.",
9492
stacklevel=stacklevel,
9593
)
9694

src/patientflow/predict/service.py

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1357,7 +1357,9 @@ def compute_transfer_arrivals(
13571357
f"got {type(source_data)}"
13581358
)
13591359

1360-
# Get transfer probabilities from model
1360+
# Get transfer probabilities from model.
1361+
# get_transfer_prob returns 0.0 (with a warning) for unknown
1362+
# services, so we only need to handle cohort-not-found here.
13611363
try:
13621364
prob_transfer = transfer_model.get_transfer_prob(
13631365
source_service, admission_type
@@ -1366,18 +1368,9 @@ def compute_transfer_arrivals(
13661368
source_service, admission_type
13671369
)
13681370
except ValueError as e:
1369-
# Handle case where cohort doesn't exist in transfer model
13701371
if "not found in trained model" in str(e):
1371-
# Skip this admission type if not trained for it
13721372
continue
1373-
else:
1374-
raise ValueError(
1375-
f"Error getting transfer probabilities for '{source_service}' and admission type '{admission_type}': {e}"
1376-
)
1377-
except KeyError as e:
1378-
raise ValueError(
1379-
f"Error getting transfer probabilities for '{source_service}' and admission type '{admission_type}': {e}"
1380-
)
1373+
raise
13811374

13821375
# Skip if no transfers from this source
13831376
if prob_transfer == 0:

0 commit comments

Comments
 (0)