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