We have been trying to add a new tag into DICOMDIR, but we have been failing to understand how to properly doing it.
So we tried to make a new tag and add them into each image and then later when we generate a new dicomdir somehow this tag could be used there, but we failed in this last part. Can you help us?
So far we did the following.
We follow a old tutorial that was something like this:
Code: Select all
#define PRIVATE_CREATOR_NAME "MY COMPANY"
#define PRIVATE_CREATOR_TAG 0x0029, 0x0010
#define PRIVATE_ELEMENT1_TAG 0x0029, 0x1000
#define PRIVATE_ELEMENT2_TAG 0x0029, 0x1010
#define PRIVATE_ELEMENT3_TAG 0x0029, 0x1020
#define PRV_PrivateCreator DcmTag(PRIVATE_CREATOR_TAG)
#define PRV_PrivateElement1 DcmTag(PRIVATE_ELEMENT1_TAG, PRIVATE_CREATOR_NAME)
#define PRV_PrivateElement2 DcmTag(PRIVATE_ELEMENT2_TAG, PRIVATE_CREATOR_NAME)
#define PRV_PrivateElement3 DcmTag(PRIVATE_ELEMENT3_TAG, PRIVATE_CREATOR_NAME)
Code: Select all
void registerPrivateTags()
{
DcmDataDictionary& dict = dcmDataDict.wrlock();
dict.addEntry(new DcmDictEntry(PRIVATE_ELEMENT1_TAG, EVR_LO, "PrivateText", 1, 1, "private", OFTrue, PRIVATE_CREATOR_NAME));
dict.addEntry(new DcmDictEntry(PRIVATE_ELEMENT2_TAG, EVR_US, "PrivateInteger", 1, 1, "private", OFTrue, PRIVATE_CREATOR_NAME));
dict.addEntry(new DcmDictEntry(PRIVATE_ELEMENT3_TAG, EVR_OB, "PrivateBlob", 1, 1, "private", OFTrue, PRIVATE_CREATOR_NAME));
dcmDataDict.wrunlock();
}
void addPrivateElements(DcmItem& item)
{
if (!item.tagExists(PRV_PrivateCreator))
{
item.putAndInsertString(PRV_PrivateCreator, PRIVATE_CREATOR_NAME);
item.putAndInsertString(PRV_PrivateElement1, "Some Text");
item.putAndInsertUint16(PRV_PrivateElement2, 12345);
item.putAndInsertUint8Array(PRV_PrivateElement3, NULL /*data*/, 0 /*length*/);
}
}
Code: Select all
registerPrivateTags();
addPrivateElements(*fileformat.getDataset());
Now when we try to read only the DICOMDIR we can't find "MY COMPANY" anywhere.
When we open each image we have "MY COMPANY" in a "(0029,0010) IllegalPrivateCreator" and the other 3 tags are "(0029,1000) Unknown Tag & Data"