comparison OrthancServer/ServerIndex.cpp @ 1717:3926e6317a43 db-changes

SetIdentifierTagInternal
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 19 Oct 2015 17:45:34 +0200
parents 2ca7888f8600
children 2b812969e136
comparison
equal deleted inserted replaced
1716:2ca7888f8600 1717:3926e6317a43
871 return SeriesStatus_Missing; 871 return SeriesStatus_Missing;
872 } 872 }
873 } 873 }
874 874
875 875
876 static std::string GetPatientIdOfStudy(IDatabaseWrapper& db,
877 int64_t resourceId)
878 {
879 int64_t patient;
880 if (!db.LookupParent(patient, resourceId))
881 {
882 throw OrthancException(ErrorCode_InternalError);
883 }
884
885 DicomMap tags;
886 db.GetMainDicomTags(tags, patient);
887
888 if (tags.HasTag(DICOM_TAG_PATIENT_ID))
889 {
890 return tags.GetValue(DICOM_TAG_PATIENT_ID).AsString();
891 }
892 else
893 {
894 return "";
895 }
896 }
897
898
899 void ServerIndex::MainDicomTagsToJson(Json::Value& target, 876 void ServerIndex::MainDicomTagsToJson(Json::Value& target,
900 int64_t resourceId, 877 int64_t resourceId,
901 ResourceType resourceType) 878 ResourceType resourceType)
902 { 879 {
903 DicomMap tags; 880 DicomMap tags;
912 target["MainDicomTags"] = Json::objectValue; 889 target["MainDicomTags"] = Json::objectValue;
913 FromDcmtkBridge::ToJson(target["MainDicomTags"], t1, true); 890 FromDcmtkBridge::ToJson(target["MainDicomTags"], t1, true);
914 891
915 target["PatientMainDicomTags"] = Json::objectValue; 892 target["PatientMainDicomTags"] = Json::objectValue;
916 FromDcmtkBridge::ToJson(target["PatientMainDicomTags"], t2, true); 893 FromDcmtkBridge::ToJson(target["PatientMainDicomTags"], t2, true);
917
918 target["PatientMainDicomTags"]["PatientID"] = GetPatientIdOfStudy(db_, resourceId);
919 } 894 }
920 else 895 else
921 { 896 {
922 target["MainDicomTags"] = Json::objectValue; 897 target["MainDicomTags"] = Json::objectValue;
923 FromDcmtkBridge::ToJson(target["MainDicomTags"], tags, true); 898 FromDcmtkBridge::ToJson(target["MainDicomTags"], tags, true);
2134 2109
2135 switch (levelOfInterest) 2110 switch (levelOfInterest)
2136 { 2111 {
2137 case ResourceType_Patient: 2112 case ResourceType_Patient:
2138 tmp.ExtractPatientInformation(result); 2113 tmp.ExtractPatientInformation(result);
2139 result.SetValue(DICOM_TAG_PATIENT_ID, GetPatientIdOfStudy(db_, id));
2140 return true; 2114 return true;
2141 2115
2142 case ResourceType_Study: 2116 case ResourceType_Study:
2143 tmp.ExtractStudyInformation(result); 2117 tmp.ExtractStudyInformation(result);
2144 return true; 2118 return true;