Update PACS DICOM navigation and summaries

This commit is contained in:
Codex
2026-05-30 13:29:31 +08:00
parent c1fbdd8bac
commit 40e18ed45d
10 changed files with 307 additions and 57 deletions

View File

@@ -351,16 +351,18 @@ def relation_cte() -> str:
WHEN 'delayed' THEN '延迟期'
ELSE '无法判别'
END
WHEN 'lower_abdomen' THEN '腹部'
WHEN 'pelvis' THEN '盆腔'
WHEN 'abdomen_pelvis' THEN ''
WHEN 'lower_abdomen' THEN '腹盆部'
WHEN 'pelvis' THEN '腹盆部'
ELSE NULL
END AS label,
CASE part.value
WHEN 'head_neck' THEN 1
WHEN 'chest' THEN 2
WHEN 'upper_abdomen' THEN 3
WHEN 'abdomen_pelvis' THEN 4
WHEN 'lower_abdomen' THEN 4
WHEN 'pelvis' THEN 5
WHEN 'pelvis' THEN 4
ELSE 99
END AS sort_key
FROM public.{PACS_ANNOTATION_TABLE_SQL} a
@@ -587,8 +589,7 @@ def relation_cte() -> str:
CASE WHEN ps.body_parts ? 'head_neck' THEN '头颈部' END,
CASE WHEN ps.body_parts ? 'chest' THEN '胸部' END,
CASE WHEN ps.body_parts ? 'upper_abdomen' THEN '上腹部' END,
CASE WHEN ps.body_parts ? 'lower_abdomen' THEN '腹部' END,
CASE WHEN ps.body_parts ? 'pelvis' THEN '盆腔' END
CASE WHEN ps.body_parts ? 'abdomen_pelvis' OR ps.body_parts ? 'lower_abdomen' OR ps.body_parts ? 'pelvis' THEN '' END
], NULL)) AS dicom_body_parts,
u.patient_name AS upp_patient_name,
COALESCE(u.patient_names, '[]'::jsonb) AS upp_patient_names,
@@ -683,10 +684,13 @@ def relation_where(q: str, status: str, algorithm_model: str, dicom_part: str) -
if algorithm_model:
clauses.append(f"algorithm_model = {sql_literal(algorithm_model)}")
if dicom_part:
valid_parts = {"head_neck", "chest", "upper_abdomen", "lower_abdomen", "pelvis"}
valid_parts = {"head_neck", "chest", "upper_abdomen", "abdomen_pelvis"}
if dicom_part not in valid_parts:
raise HTTPException(status_code=400, detail="invalid DICOM part filter")
clauses.append(f"body_parts ? {sql_literal(dicom_part)}")
if dicom_part == "abdomen_pelvis":
clauses.append("(body_parts ? 'abdomen_pelvis' OR body_parts ? 'lower_abdomen' OR body_parts ? 'pelvis')")
else:
clauses.append(f"body_parts ? {sql_literal(dicom_part)}")
return "WHERE " + " AND ".join(clauses) if clauses else ""