But when I try my code:
Code: Select all
res = doc->getTree().addContentItem(DSRTypes::RT_contains, DSRTypes::VT_PName, DSRTypes::AM_afterCurrent);
cond = doc->getTree().getCurrentContentItem().setConceptName(DSRCodedEntryValue("113870", "DCM", "Person Name"));
cond = doc->getTree().getCurrentContentItem().setStringValue(OFString("Person^Name"));
res = doc->getTree().addContentItem(DSRTypes::RT_hasProperties, DSRTypes::VT_Code, DSRTypes::AM_belowCurrent); //return false
cond = doc->getTree().getCurrentContentItem().setConceptName(DSRCodedEntryValue("113875", "DCM", "Person Role in Procedure"));
cond = doc->getTree().getCurrentContentItem().setCodeValue(DSRCodedEntryValue("113851", "DCM", "Irradiation Administering"));
res = doc->getTree().addContentItem(DSRTypes::RT_hasProperties, DSRTypes::VT_Text, DSRTypes::AM_afterCurrent);
cond = doc->getTree().getCurrentContentItem().setConceptName(DSRCodedEntryValue("113873", "DCM", "Organization Name"));
cond = doc->getTree().getCurrentContentItem().setStringValue(OFString("Tongren"));
res = doc->getTree().addContentItem(DSRTypes::RT_hasProperties, DSRTypes::VT_Code, DSRTypes::AM_afterCurrent);
cond = doc->getTree().getCurrentContentItem().setConceptName(DSRCodedEntryValue("113874", "DCM", "Person Role in Organization"));
cond = doc->getTree().getCurrentContentItem().setCodeValue(DSRCodedEntryValue("121083", "DCM", "Technologist"));
And I find in "dcmsr\libsrc\dsrxrdcc.cc":
Code: Select all
OFBool DSRXRayRadiationDoseSRConstraintChecker::checkContentRelationship(const E_ValueType sourceValueType,
const E_RelationshipType relationshipType,
const E_ValueType targetValueType,
const OFBool byReference) const
{
/* the following code implements the constraints of table A.35.8-2 in DICOM PS3.3 */
OFBool result = OFFalse;
/* by-reference relationships not allowed at all */
if (!byReference)
{
/* row 1 of the table */
if ((relationshipType == RT_contains) && (sourceValueType == VT_Container))
{
result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_Num) ||
(targetValueType == VT_DateTime) || (targetValueType == VT_UIDRef) || (targetValueType == VT_PName) ||
(targetValueType == VT_Image) || (targetValueType == VT_Composite) || (targetValueType == VT_Container);
}
/* row 2 of the table */
else if ((relationshipType == RT_hasObsContext) && (sourceValueType == VT_Container))
{
result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_DateTime) ||
(targetValueType == VT_UIDRef) || (targetValueType == VT_PName);
}
/* row 3 of the table */
else if ((relationshipType == RT_hasObsContext) && ((sourceValueType == VT_Text) || (sourceValueType == VT_Code) ||
(sourceValueType == VT_Num)))
{
result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_Num) ||
(targetValueType == VT_DateTime) || (targetValueType == VT_UIDRef) || (targetValueType == VT_PName) ||
(targetValueType == VT_Composite);
}
/* row 4 of the table */
else if ((relationshipType == RT_hasAcqContext) && ((sourceValueType == VT_Container) || (sourceValueType == VT_Image) ||
(sourceValueType == VT_Composite)))
{
result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_Num) ||
(targetValueType == VT_DateTime) || (targetValueType == VT_UIDRef) || (targetValueType == VT_PName) ||
(targetValueType == VT_Container);
}
/* row 5 of the table */
else if (relationshipType == RT_hasConceptMod)
{
result = (targetValueType == VT_Text) || (targetValueType == VT_Code);
}
/* row 6 of the table */
else if ((relationshipType == RT_hasProperties) && ((sourceValueType == VT_Text) || (sourceValueType == VT_Code) ||
(sourceValueType == VT_Num)))
{
result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_Num) ||
(targetValueType == VT_DateTime) || (targetValueType == VT_UIDRef) || (targetValueType == VT_PName) ||
(targetValueType == VT_Image) || (targetValueType == VT_Composite) || (targetValueType == VT_Container);
}
/* row 7 of the table */
else if ((relationshipType == RT_inferredFrom) && ((sourceValueType == VT_Text) || (sourceValueType == VT_Code) ||
(sourceValueType == VT_Num)))
{
result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_Num) ||
(targetValueType == VT_DateTime) || (targetValueType == VT_UIDRef) || (targetValueType == VT_Image) ||
(targetValueType == VT_Composite) || (targetValueType == VT_Container);
}
}
return result;
}
PS: I am using dcmtk 3.6.0.