Skip to content

Commit c83e74d

Browse files
committed
a bugfix, more test.
1 parent 3266e11 commit c83e74d

File tree

2 files changed

+52
-21
lines changed

2 files changed

+52
-21
lines changed

dicomanonymizer/simpledicomanonymizer.py

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,10 @@
55
from typing import Callable, List, Union
66
from dataclasses import dataclass
77

8-
from dicomanonymizer.dicomfields import (
9-
D_TAGS,
10-
Z_TAGS,
11-
X_TAGS,
12-
U_TAGS,
13-
Z_D_TAGS,
14-
X_Z_TAGS,
15-
X_D_TAGS,
16-
X_Z_D_TAGS,
17-
X_Z_U_STAR_TAGS,
18-
)
8+
from dicomanonymizer.dicomfields_selector import selector
199
from dicomanonymizer.format_tag import tag_to_hex_strings
2010

21-
11+
# keeps the mapping from old UID to new UID
2212
dictionary = {}
2313

2414

@@ -351,18 +341,20 @@ def initialize_actions(dicom_version: str = "2013") -> dict:
351341
:param dicom_version: DICOM version to use
352342
:return Dict object which map actions to tags
353343
"""
354-
anonymization_actions = {tag: replace for tag in D_TAGS}
355-
anonymization_actions.update({tag: empty for tag in Z_TAGS})
356-
anonymization_actions.update({tag: delete for tag in X_TAGS})
357-
anonymization_actions.update({tag: replace_UID for tag in U_TAGS})
358-
anonymization_actions.update({tag: empty_or_replace for tag in Z_D_TAGS})
359-
anonymization_actions.update({tag: delete_or_empty for tag in X_Z_TAGS})
360-
anonymization_actions.update({tag: delete_or_replace for tag in X_D_TAGS})
344+
tags = selector(dicom_version)
345+
346+
anonymization_actions = {tag: replace for tag in tags["D_TAGS"]}
347+
anonymization_actions.update({tag: empty for tag in tags["Z_TAGS"]})
348+
anonymization_actions.update({tag: delete for tag in tags["X_TAGS"]})
349+
anonymization_actions.update({tag: replace_UID for tag in tags["U_TAGS"]})
350+
anonymization_actions.update({tag: empty_or_replace for tag in tags["Z_D_TAGS"]})
351+
anonymization_actions.update({tag: delete_or_empty for tag in tags["X_Z_TAGS"]})
352+
anonymization_actions.update({tag: delete_or_replace for tag in tags["X_D_TAGS"]})
361353
anonymization_actions.update(
362-
{tag: delete_or_empty_or_replace for tag in X_Z_D_TAGS}
354+
{tag: delete_or_empty_or_replace for tag in tags["X_Z_D_TAGS"]}
363355
)
364356
anonymization_actions.update(
365-
{tag: delete_or_empty_or_replace_UID for tag in X_Z_U_STAR_TAGS}
357+
{tag: delete_or_empty_or_replace_UID for tag in tags["X_Z_U_STAR_TAGS"]}
366358
)
367359
return anonymization_actions
368360

tests/test_dicomfields_selector.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
from dicomanonymizer.dicomfields_selector import selector
2+
3+
from dicomanonymizer import dicomfields, dicomfields_2024b
4+
5+
6+
def test_selector():
7+
assert selector("2013") == {
8+
"D_TAGS": dicomfields.D_TAGS,
9+
"Z_TAGS": dicomfields.Z_TAGS,
10+
"X_TAGS": dicomfields.X_TAGS,
11+
"U_TAGS": dicomfields.U_TAGS,
12+
"Z_D_TAGS": dicomfields.Z_D_TAGS,
13+
"X_Z_TAGS": dicomfields.X_Z_TAGS,
14+
"X_D_TAGS": dicomfields.X_D_TAGS,
15+
"X_Z_D_TAGS": dicomfields.X_Z_D_TAGS,
16+
"X_Z_U_STAR_TAGS": dicomfields.X_Z_U_STAR_TAGS,
17+
"ALL_TAGS": dicomfields.ALL_TAGS,
18+
}
19+
assert selector("2024b") == {
20+
"D_TAGS": dicomfields_2024b.D_TAGS,
21+
"Z_TAGS": dicomfields_2024b.Z_TAGS,
22+
"X_TAGS": dicomfields_2024b.X_TAGS,
23+
"U_TAGS": dicomfields_2024b.U_TAGS,
24+
"Z_D_TAGS": dicomfields_2024b.Z_D_TAGS,
25+
"X_Z_TAGS": dicomfields_2024b.X_Z_TAGS,
26+
"X_D_TAGS": dicomfields_2024b.X_D_TAGS,
27+
"X_Z_D_TAGS": dicomfields_2024b.X_Z_D_TAGS,
28+
"X_Z_U_STAR_TAGS": dicomfields_2024b.X_Z_U_STAR_TAGS,
29+
"ALL_TAGS": dicomfields_2024b.ALL_TAGS,
30+
}
31+
32+
assert selector() == selector("2013")
33+
34+
try:
35+
selector("2019")
36+
except ValueError as e:
37+
assert str(e) == "Unknown DICOM version: 2019"
38+
else:
39+
assert False

0 commit comments

Comments
 (0)