Mercurial > hg > orthanc
diff OrthancServer/ServerIndex.cpp @ 1676:f079f3efe33b db-changes
patient tags reported in studies
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 02 Oct 2015 17:09:18 +0200 |
parents | de1413733c97 |
children | a903d57d9f0c |
line wrap: on
line diff
--- a/OrthancServer/ServerIndex.cpp Fri Oct 02 13:57:54 2015 +0200 +++ b/OrthancServer/ServerIndex.cpp Fri Oct 02 17:09:18 2015 +0200 @@ -881,8 +881,38 @@ { DicomMap tags; db_.GetMainDicomTags(tags, resourceId); - target["MainDicomTags"] = Json::objectValue; - FromDcmtkBridge::ToJson(target["MainDicomTags"], tags, true); + + if (resourceType == ResourceType_Study) + { + DicomMap t1, t2; + tags.ExtractStudyInformation(t1); + tags.ExtractPatientInformation(t2); + + target["MainDicomTags"] = Json::objectValue; + FromDcmtkBridge::ToJson(target["MainDicomTags"], t1, true); + + target["PatientMainDicomTags"] = Json::objectValue; + FromDcmtkBridge::ToJson(target["PatientMainDicomTags"], t2, true); + + int64_t patient; + if (!db_.LookupParent(patient, resourceId)) + { + throw OrthancException(ErrorCode_InternalError); + } + + tags.Clear(); + db_.GetMainDicomTags(tags, patient); + + if (tags.HasTag(DICOM_TAG_PATIENT_ID)) + { + target["PatientMainDicomTags"]["PatientID"] = tags.GetValue(DICOM_TAG_PATIENT_ID).AsString(); + } + } + else + { + target["MainDicomTags"] = Json::objectValue; + FromDcmtkBridge::ToJson(target["MainDicomTags"], tags, true); + } } bool ServerIndex::LookupResource(Json::Value& result,