Skip to content

Commit

Permalink
Adds test to check modalities not specified in project config are dro…
Browse files Browse the repository at this point in the history
…pped (#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
  • Loading branch information
tomaroberts authored Jan 23, 2025
1 parent 4afca8a commit 4af6ed0
Showing 1 changed file with 24 additions and 1 deletion.
25 changes: 24 additions & 1 deletion pixl_dcmd/tests/test_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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):
"""
Expand Down

0 comments on commit 4af6ed0

Please sign in to comment.