use of org.dcm4che3.data.Tag in project karnak by OsiriX-Foundation.
the class Profile method applyAction.
public void applyAction(Attributes dcm, Attributes dcmCopy, HMAC hmac, ProfileItem profilePassedInSequence, ActionItem actionPassedInSequence, AttributeEditorContext context) {
for (int tag : dcm.tags()) {
VR vr = dcm.getVR(tag);
final ExprCondition exprCondition = new ExprCondition(dcmCopy);
ActionItem currentAction = null;
ProfileItem currentProfile = null;
for (ProfileItem profileEntity : profiles.stream().filter(p -> !(p instanceof CleanPixelData)).collect(Collectors.toList())) {
currentProfile = profileEntity;
if (profileEntity.getCondition() == null || profileEntity.getCodeName().equals(ProfileItemType.DEFACING.getClassAlias()) || profileEntity.getCodeName().equals(ProfileItemType.CLEAN_PIXEL_DATA.getClassAlias())) {
currentAction = profileEntity.getAction(dcm, dcmCopy, tag, hmac);
} else {
boolean conditionIsOk = (Boolean) ExpressionResult.get(profileEntity.getCondition(), exprCondition, Boolean.class);
if (conditionIsOk) {
currentAction = profileEntity.getAction(dcm, dcmCopy, tag, hmac);
}
}
if (currentAction != null) {
break;
}
if (profileEntity.equals(profilePassedInSequence)) {
currentAction = actionPassedInSequence;
break;
}
}
if (!(currentAction instanceof Remove) && !(currentAction instanceof ReplaceNull) && vr == VR.SQ) {
final ProfileItem finalCurrentProfile = currentProfile;
final ActionItem finalCurrentAction = currentAction;
Sequence seq = dcm.getSequence(tag);
if (seq != null) {
for (Attributes d : seq) {
applyAction(d, dcmCopy, hmac, finalCurrentProfile, finalCurrentAction, context);
}
}
} else {
if (currentAction != null) {
try {
currentAction.execute(dcm, tag, hmac);
} catch (final Exception e) {
LOGGER.error("Cannot execute the currentAction {} for tag: {}", currentAction, TagUtils.toString(tag), e);
}
}
}
}
}
use of org.dcm4che3.data.Tag in project karnak by OsiriX-Foundation.
the class MetadataDICOMObject method getValueRec.
private static String getValueRec(Attributes dcm, int tag) {
String tagValue = dcm.getString(tag);
Attributes dcmParent = dcm.getParent();
if (dcmParent != null && tagValue == null) {
return getValueRec(dcmParent, tag);
}
return tagValue;
}
use of org.dcm4che3.data.Tag in project karnak by OsiriX-Foundation.
the class AddTest method should_add_tag.
@Test
void should_add_tag() {
// Init data
Attributes attributes = new Attributes();
Add add = new Add("symbol", 524294, VR.AE, "dummyValue");
// Add tag
add.execute(attributes, 524291, null);
// Test result
assertEquals("dummyValue", attributes.getString(524294));
}
use of org.dcm4che3.data.Tag in project karnak by OsiriX-Foundation.
the class ReplaceTest method should_replace_tag_not_null.
@Test
void should_replace_tag_not_null() {
// Init data
Attributes attributes = new Attributes();
attributes.setString(524294, VR.AE, "initialValue");
Replace replace = new Replace("symbol", "dummyValue");
// Add tag
replace.execute(attributes, 524294, null);
// Test result
assertEquals("dummyValue", attributes.getString(524294));
}
use of org.dcm4che3.data.Tag in project karnak by OsiriX-Foundation.
the class ProfileTest method xandZProfile.
@Test
void xandZProfile() {
final Attributes dataset1 = new Attributes();
final Attributes dataset2 = new Attributes();
dataset1.setString(Tag.PatientName, VR.PN, "TEST-Expr-AddAction");
dataset1.setString(Tag.StudyInstanceUID, VR.UI, "12345");
dataset1.setString(Tag.PatientAge, VR.AS, "075Y");
dataset2.setNull(Tag.PatientName, VR.PN);
dataset2.setNull(Tag.StudyInstanceUID, VR.UI);
dataset2.setString(Tag.PatientAge, VR.AS, "075Y");
dataset2.remove(Tag.PatientAge);
final ProfileEntity profileEntity = new ProfileEntity("TEST", "0.9.1", "0.9.1", "DPA");
final ProfileElementEntity profileElementEntity = new ProfileElementEntity("Remove tag", "action.on.specific.tags", null, "X", null, 0, profileEntity);
profileElementEntity.addIncludedTag(new IncludedTagEntity("(0010,1010)", profileElementEntity));
profileEntity.addProfilePipe(profileElementEntity);
final ProfileElementEntity profileElementEntity2 = new ProfileElementEntity("Replace by null", "action.on.specific.tags", null, "Z", null, 1, profileEntity);
profileElementEntity2.addIncludedTag(new IncludedTagEntity("(xxxx,xxxx)", profileElementEntity2));
profileEntity.addProfilePipe(profileElementEntity2);
Profile profile = new Profile(profileEntity);
profile.applyAction(dataset1, dataset1, defaultHMAC, null, null, null);
assertTrue(DicomObjectTools.dicomObjectEquals(dataset2, dataset1));
}
Aggregations