From a5796e8e8b1a1870d21c8a94dfe8b51d5fa596d2 Mon Sep 17 00:00:00 2001 From: Carlos Martinez Date: Thu, 19 Mar 2026 16:24:36 +0000 Subject: [PATCH] Set SpecificCharacterSet in C-FIND response --- src/services/dicom/__init__.py | 3 +++ src/services/mwl/c_find.py | 4 +++- tests/services/mwl/test_c_find.py | 3 ++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/services/dicom/__init__.py b/src/services/dicom/__init__.py index baa3bfce..98080670 100644 --- a/src/services/dicom/__init__.py +++ b/src/services/dicom/__init__.py @@ -1,5 +1,8 @@ """DICOM services for PACS functionality.""" +# DICOM character sets +CHARSET_UTF8 = "ISO_IR 192" + # DICOM status codes SUCCESS = 0x0000 FAILURE = 0xC000 diff --git a/src/services/mwl/c_find.py b/src/services/mwl/c_find.py index ef7ce0ed..20c19ed1 100644 --- a/src/services/mwl/c_find.py +++ b/src/services/mwl/c_find.py @@ -10,7 +10,7 @@ from pydicom import Dataset from pynetdicom import evt -from services.dicom import FAILURE, PENDING, SUCCESS +from services.dicom import CHARSET_UTF8, FAILURE, PENDING, SUCCESS from services.storage import MWLStorage, WorklistItem logger = logging.getLogger(__name__) @@ -82,6 +82,8 @@ def _build_worklist_response(self, item: WorklistItem) -> Dataset: ds = Dataset() sps_item = Dataset() + ds.SpecificCharacterSet = CHARSET_UTF8 + # Patient demographics ds.PatientID = item.patient_id ds.PatientName = item.patient_name diff --git a/tests/services/mwl/test_c_find.py b/tests/services/mwl/test_c_find.py index b6488753..309ee74f 100644 --- a/tests/services/mwl/test_c_find.py +++ b/tests/services/mwl/test_c_find.py @@ -5,7 +5,7 @@ import pytest from pydicom import Dataset -from services.dicom import FAILURE, PENDING, SUCCESS +from services.dicom import CHARSET_UTF8, FAILURE, PENDING, SUCCESS from services.mwl.c_find import CFind from services.storage import WorklistItem @@ -71,6 +71,7 @@ def test_call_with_single_result(self, handler, mock_storage, mock_event, sample status, ds = results[0] assert status == PENDING assert isinstance(ds, Dataset) + assert ds.SpecificCharacterSet == CHARSET_UTF8 assert ds.PatientID == "9876543210" assert ds.AccessionNumber == "ACC001" # Final result: success