fix: preserve ancestor nodes in drug/directorate filters to prevent broken icicle hierarchy (Task 7.2)

Drug filter WHERE clause used `drug_sequence IS NULL` to keep ancestor nodes,
but levels 0-2 have empty string '' not NULL. Changed to level-based gating:
- Drug filter: `(level < 3 OR drug_sequence LIKE ...)`
- Directorate filter: `(level < 2 OR directory IN (...) OR directory IS NULL OR directory = '')`
- Trust filter was already correct (had `OR trust_name = ''`)
This commit is contained in:
Andrew Charlwood
2026-02-06 15:24:09 +00:00
parent d38c5515fe
commit 00627a7299
2 changed files with 8 additions and 8 deletions
+2 -2
View File
@@ -170,7 +170,7 @@ def load_pathway_nodes(
if selected_directorates:
placeholders = ",".join("?" * len(selected_directorates))
where_clauses.append(
f"(directory IN ({placeholders}) OR directory IS NULL)"
f"(level < 2 OR directory IN ({placeholders}) OR directory IS NULL OR directory = '')"
)
params.extend(selected_directorates)
@@ -180,7 +180,7 @@ def load_pathway_nodes(
drug_conditions.append("drug_sequence LIKE ?")
params.append(f"%{drug}%")
where_clauses.append(
f"({' OR '.join(drug_conditions)} OR drug_sequence IS NULL)"
f"(level < 3 OR {' OR '.join(drug_conditions)})"
)
if selected_trusts: