Skip to content

Commit d75371c

Browse files
committed
Reduce number of sample images
The sample images will be packaged in every deploy, we can reduce the archive size by including an example for each view position and flip them to represent both lateralities.
1 parent 806dc83 commit d75371c

4 files changed

Lines changed: 19 additions & 10 deletions

File tree

sample_images/RCC.jpg

-513 KB
Binary file not shown.

sample_images/RMLO.jpg

-569 KB
Binary file not shown.

src/modality_emulator.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,19 @@
2727
logger = logging.getLogger(__name__)
2828

2929

30-
MWL_DB_PATH = os.getenv("MWL_DB_PATH", "/var/lib/pacs/worklist.db")
31-
PACS_DB_PATH = os.getenv("PACS_DB_PATH", "/var/lib/pacs/pacs.db")
30+
DICOM_LATERALITIES = ["L", "R"]
31+
DICOM_VIEWS = ["CC", "MLO"]
32+
EMULATED_PROCEDURE_DURATION_SECONDS = int(os.getenv("EMULATED_PROCEDURE_DURATION_SECONDS", "5"))
33+
MODALITY = "MG"
3234
MWL_AET = os.getenv("MWL_AET", "SCREENING_MWL")
35+
MWL_DB_PATH = os.getenv("MWL_DB_PATH", "/var/lib/pacs/worklist.db")
3336
MWL_HOST = os.getenv("MWL_HOST", "localhost")
3437
MWL_PORT = int(os.getenv("MWL_PORT", "4243"))
3538
PACS_AET = os.getenv("PACS_AET", "SCREENING_PACS")
39+
PACS_DB_PATH = os.getenv("PACS_DB_PATH", "/var/lib/pacs/pacs.db")
3640
PACS_HOST = os.getenv("PACS_HOST", "localhost")
3741
PACS_PORT = int(os.getenv("PACS_PORT", "4244"))
38-
DICOM_LATERALITIES = ["L", "R"]
39-
DICOM_VIEWS = ["CC", "MLO"]
4042
SAMPLE_IMAGES_PATH = os.getenv("SAMPLE_IMAGES_PATH", "/app/sample_images")
41-
EMULATED_PROCEDURE_DURATION_SECONDS = int(os.getenv("EMULATED_PROCEDURE_DURATION_SECONDS", "5"))
4243

4344

4445
class DicomExample:
@@ -58,8 +59,10 @@ def generate_dicom(self) -> Dataset:
5859
logger.error("No dataset provided for DICOM generation")
5960
return ds
6061

61-
img_path = f"{SAMPLE_IMAGES_PATH}/{self.laterality}{self.view}.jpg"
62+
img_path = f"{SAMPLE_IMAGES_PATH}/L{self.view}.jpg"
6263
img = Image.open(img_path).convert("L")
64+
if self.laterality == "R":
65+
img = img.transpose(Image.Transpose.FLIP_LEFT_RIGHT)
6366
columns, rows = img.size
6467
pixel_array = np.array(img, dtype=np.uint8)
6568
pixel_bytes = pixel_array.tobytes()
@@ -98,7 +101,7 @@ def generate_dicom(self) -> Dataset:
98101
ds.StudyID = f"STUDY{self.study_instance_uid[-8:]}"
99102
ds.SeriesInstanceUID = generate_uid()
100103
ds.SeriesNumber = self.series_number
101-
ds.Modality = "MG"
104+
ds.Modality = MODALITY
102105
ds.InstanceNumber = 1
103106
ds.file_meta = file_meta
104107

@@ -170,9 +173,9 @@ def c_find_dataset(self) -> Dataset:
170173
date_today = datetime.date.today()
171174
ds = Dataset()
172175
sps_dataset = Dataset()
173-
sps_dataset.Modality = "MG"
176+
sps_dataset.Modality = MODALITY
174177
sps_dataset.ScheduledProcedureStepStartDate = date_today.strftime("%Y%m%d")
175-
sps_dataset.ScheduledProcedureStepStartTime = "080000-"
178+
sps_dataset.ScheduledProcedureStepStartTime = "000000-"
176179
ds.ScheduledProcedureStepSequence = [sps_dataset]
177180
return ds
178181

tests/test_modality_emulator.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,8 @@ def test_process_worklist_items_sends_all_dicoms(
104104
pending_status,
105105
success_status,
106106
):
107-
mock_generate_uid.return_value = "1.2.3.study" # gitleaks: ignore
107+
study_instance_uid = generate_uid()
108+
mock_generate_uid.return_value = study_instance_uid
108109

109110
mwl_storage = MagicMock()
110111

@@ -135,6 +136,11 @@ def test_process_worklist_items_sends_all_dicoms(
135136

136137
emulator.process_worklist_items(ae)
137138

139+
mock_dicom_example.assert_any_call(ds, "L", "CC", study_instance_uid, 1)
140+
mock_dicom_example.assert_any_call(ds, "L", "MLO", study_instance_uid, 2)
141+
mock_dicom_example.assert_any_call(ds, "R", "CC", study_instance_uid, 3)
142+
mock_dicom_example.assert_any_call(ds, "R", "MLO", study_instance_uid, 4)
143+
138144
expected_send_count = len(DICOM_LATERALITIES) * len(DICOM_VIEWS)
139145

140146
assert mwl_assoc.send_c_find.call_count == 1

0 commit comments

Comments
 (0)