From 4af6ed07efa739d066bcce690a68a0491230bf82 Mon Sep 17 00:00:00 2001 From: Tom Roberts Date: Thu, 23 Jan 2025 08:29:18 +0000 Subject: [PATCH] Adds test to check modalities not specified in project config are dropped (#594) * Creates test_drop_unspecified_modalities function * Assert matching modalities in project config * Test appropriate error raised when DICOM not in project config * Assert unspecified modality not in project config * Moves test to more logical place within file --- pixl_dcmd/tests/test_main.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/pixl_dcmd/tests/test_main.py b/pixl_dcmd/tests/test_main.py index e63034cf..39aa92bc 100644 --- a/pixl_dcmd/tests/test_main.py +++ b/pixl_dcmd/tests/test_main.py @@ -30,7 +30,7 @@ add_private_tag, create_private_tag, ) -from core.exceptions import PixlDiscardError +from core.exceptions import PixlDiscardError, PixlSkipInstanceError from core.project_config import load_project_config, load_tag_operations from core.project_config.pixl_config_model import load_config_and_validate from decouple import config @@ -244,6 +244,29 @@ def test_anonymisation_with_overrides( assert mri_diffusion_dicom_image[(0x2001, 0x1003)] == original_private_tag +@pytest.mark.usefixtures() +def test_drop_unspecified_modalities(test_project_config: PixlConfig) -> None: + """ + GIVEN a project configuration and DICOM files + WHEN the modality tag in the DICOM files does not match the specified modalities in the configuration + THEN drop those DICOM files + """ + ds_dx = generate_dicom_dataset(Modality="DX") + ds_cr = generate_dicom_dataset(Modality="CR") + ds_mr = generate_dicom_dataset(Modality="MR") # not in config + + anonymise_dicom(ds_dx, config=test_project_config) + anonymise_dicom(ds_cr, config=test_project_config) + + assert ds_dx.Modality in test_project_config.project.modalities + assert ds_cr.Modality in test_project_config.project.modalities + + with pytest.raises(PixlSkipInstanceError): + anonymise_dicom(ds_mr, config=test_project_config) + + assert ds_mr.Modality not in test_project_config.project.modalities + + @pytest.mark.usefixtures("rows_in_session") def test_image_already_exported_throws(test_project_config, exported_dicom_dataset): """