Skip to content

Commit

Permalink
fix(anonymizer): [FIX & TESTS] cleanTags : check if param is undefine…
Browse files Browse the repository at this point in the history
…d. Add 3 test (#308)

Co-authored-by: CASTELNEAU Julien <[email protected]>
  • Loading branch information
juliencastelneau and juliencastelneau committed Sep 14, 2022
1 parent e960085 commit 44d23d6
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 2 deletions.
8 changes: 7 additions & 1 deletion packages/adapters/src/anonymizer.js
Original file line number Diff line number Diff line change
Expand Up @@ -241,9 +241,15 @@ export function getTagsNameToEmpty() {

export function cleanTags(
dict,
tagNamesToReplace,
tagNamesToReplace = undefined,
customTagNamesToEmpty = undefined
) {
if (tagNamesToReplace == undefined) {
tagNamesToReplace = {
"00100010": "ANON^PATIENT",
"00100020": "ANON^ID"
};
}
var tags =
customTagNamesToEmpty != undefined
? customTagNamesToEmpty
Expand Down
81 changes: 80 additions & 1 deletion packages/adapters/test/anonymizer.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import dcmjs from "../src/index.js";
import fs from "fs";

const { DicomMessage } = dcmjs.data;
const { cleanTags } = dcmjs.anonymizer;
const { cleanTags, getTagsNameToEmpty } = dcmjs.anonymizer;

it("test_export", () => {
expect(typeof cleanTags).toEqual("function");
Expand All @@ -28,3 +28,82 @@ it("test_anonymization", () => {
// then
expect(patientIDTag.Value).toEqual(["ANON^PATIENT"]);
});

it("test_anonymization_tagtoreplace_param", () => {
// given
const arrayBuffer = fs.readFileSync("test/sample-dicom.dcm").buffer;
const dicomDict = DicomMessage.readFile(arrayBuffer);

const tagInfo = dcmjs.data.DicomMetaDictionary.nameMap["PatientName"];
const tagNumber = tagInfo.tag,
tagString = dcmjs.data.Tag.fromPString(tagNumber).toCleanString();

const patientNameTag = dicomDict.dict[tagString];
const patientNameValue = patientNameTag.Value;

expect(patientNameValue).toEqual(["Fall 3"]);

var tagsToReplace = {
"00100010": "REPLACE^PATIENT"
}
// when
cleanTags(dicomDict.dict, tagsToReplace);

// then
expect(patientNameTag.Value).toEqual(["REPLACE^PATIENT"]);
});

it("test_anonymization_keep_tag", () => {
// given
const arrayBuffer = fs.readFileSync("test/sample-dicom.dcm").buffer;
const dicomDict = DicomMessage.readFile(arrayBuffer);

const tagInfo = dcmjs.data.DicomMetaDictionary.nameMap["SeriesDescription"];
const tagNumber = tagInfo.tag,
tagString = dcmjs.data.Tag.fromPString(tagNumber).toCleanString();

const seriesDescriptionTag = dicomDict.dict[tagString];
const seriesDescriptionValue = seriesDescriptionTag.Value;

expect(seriesDescriptionValue).toEqual(["Oberbauch *sSSH/FB/4mm"]);

var tagsToReplace = {};
var tagsToKeep = getTagsNameToEmpty();
var seriesDescription = "SeriesDescription";
if (tagsToKeep.indexOf(seriesDescription) != -1) {
tagsToKeep.splice(tagsToKeep.indexOf(seriesDescription), 1);
}

// when
cleanTags(dicomDict.dict, tagsToReplace, tagsToKeep);

// then
expect(seriesDescriptionTag.Value).toEqual(["Oberbauch *sSSH/FB/4mm"]);
});

it("test_anonymization_anonymize_tag", () => {
// given
const arrayBuffer = fs.readFileSync("test/sample-dicom.dcm").buffer;
const dicomDict = DicomMessage.readFile(arrayBuffer);

const tagInfo = dcmjs.data.DicomMetaDictionary.nameMap["SeriesInstanceUID"];
const tagNumber = tagInfo.tag,
tagString = dcmjs.data.Tag.fromPString(tagNumber).toCleanString();

const SeriesInstanceUIDTag = dicomDict.dict[tagString];
const SeriesInstanceUIDValue = SeriesInstanceUIDTag.Value;

expect(SeriesInstanceUIDValue).toEqual(["1.2.276.0.50.192168001092.11156604.14547392.303"]);

var tagsToReplace = {};
var tagsToAnon = getTagsNameToEmpty();
if (!tagsToAnon.includes("SeriesInstanceUID")) {
tagsToAnon.push("SeriesInstanceUID");
}

// when
cleanTags(dicomDict.dict, tagsToReplace, tagsToAnon);

// then
expect(SeriesInstanceUIDTag.Value).toEqual([]);
});

0 comments on commit 44d23d6

Please sign in to comment.