Mercurial > hg > orthanc
diff OrthancServer/Sources/OrthancRestApi/OrthancRestResources.cpp @ 5607:a3732285f8b6 find-refactoring
added main DICOM tags to ResourceFinder
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 08 May 2024 12:58:16 +0200 |
parents | 6e2dad336446 |
children | 3d0aa94b44b3 |
line wrap: on
line diff
--- a/OrthancServer/Sources/OrthancRestApi/OrthancRestResources.cpp Wed May 08 10:46:11 2024 +0200 +++ b/OrthancServer/Sources/OrthancRestApi/OrthancRestResources.cpp Wed May 08 12:58:16 2024 +0200 @@ -355,13 +355,15 @@ target["Status"] = EnumerationToString(status); + static const char* EXPECTED_NUMBER_OF_INSTANCES = "ExpectedNumberOfInstances"; + if (status == SeriesStatus_Unknown) { - target["ExpectedNumberOfInstances"] = Json::nullValue; + target[EXPECTED_NUMBER_OF_INSTANCES] = Json::nullValue; } else { - target["ExpectedNumberOfInstances"] = expectedNumberOfInstances; + target[EXPECTED_NUMBER_OF_INSTANCES] = expectedNumberOfInstances; } break; @@ -380,16 +382,18 @@ throw OrthancException(ErrorCode_InternalError); } + static const char* INDEX_IN_SERIES = "IndexInSeries"; + std::string s; uint32_t index; if (resource.LookupMetadata(s, ResourceType_Instance, MetadataType_Instance_IndexInSeries) && SerializationToolbox::ParseUnsignedInteger32(index, s)) { - target["IndexInSeries"] = index; + target[INDEX_IN_SERIES] = index; } else { - target["IndexInSeries"] = Json::nullValue; + target[INDEX_IN_SERIES] = Json::nullValue; } break; @@ -423,7 +427,42 @@ } { + static const char* const MAIN_DICOM_TAGS = "MainDicomTags"; + static const char* const PATIENT_MAIN_DICOM_TAGS = "PatientMainDicomTags"; + // TODO-FIND : (expandFlags & ExpandResourceFlags_IncludeMainDicomTags) + DicomMap allMainDicomTags; + resource.GetMainDicomTags(allMainDicomTags, resource.GetLevel()); + + DicomMap levelMainDicomTags; + allMainDicomTags.ExtractResourceInformation(levelMainDicomTags, resource.GetLevel()); + + target[MAIN_DICOM_TAGS] = Json::objectValue; + FromDcmtkBridge::ToJson(target[MAIN_DICOM_TAGS], levelMainDicomTags, format_); + + if (resource.GetLevel() == ResourceType_Study) + { + DicomMap patientMainDicomTags; + allMainDicomTags.ExtractPatientInformation(patientMainDicomTags); + + target[PATIENT_MAIN_DICOM_TAGS] = Json::objectValue; + FromDcmtkBridge::ToJson(target[PATIENT_MAIN_DICOM_TAGS], patientMainDicomTags, format_); + } + + /* + TODO-FIND + + if (!requestedTags_.empty()) + { + static const char* const REQUESTED_TAGS = "RequestedTags"; + + DicomMap tags; + resource.GetMainDicomTags().ExtractTags(tags, requestedTags); + + target[REQUESTED_TAGS] = Json::objectValue; + FromDcmtkBridge::ToJson(target[REQUESTED_TAGS], tags, format); + } + */ } { @@ -524,15 +563,7 @@ { Json::Value item; Expand(item, response.GetResource(i), context.GetIndex()); - -#if 0 target.append(item); -#else - context.AppendFindResponse(target, request_, response.GetResource(i), format_, - requestedTags_, true /* allowStorageAccess */); - std::cout << "+++ Expected: " << target[target.size() - 1].toStyledString(); - std::cout << "--- Actual: " << item.toStyledString(); -#endif } } else