Mercurial > hg > orthanc
comparison OrthancFramework/Sources/DicomParsing/FromDcmtkBridge.cpp @ 4953:60cb4b379485
added FromDcmtkBridge::LookupStringValue()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 22 Mar 2022 12:37:24 +0100 |
parents | e100fd9db29b |
children | e1495a34cd39 |
comparison
equal
deleted
inserted
replaced
4952:15ce7af202f1 | 4953:60cb4b379485 |
---|---|
3224 | 3224 |
3225 Visitor visitor(target, sequenceIndex); | 3225 Visitor visitor(target, sequenceIndex); |
3226 IDicomPathVisitor::Apply(visitor, dataset, path); | 3226 IDicomPathVisitor::Apply(visitor, dataset, path); |
3227 return visitor.HasFound(); | 3227 return visitor.HasFound(); |
3228 } | 3228 } |
3229 | |
3230 | |
3231 bool FromDcmtkBridge::LookupStringValue(std::string& target, | |
3232 DcmDataset& dataset, | |
3233 const DicomTag& key) | |
3234 { | |
3235 DcmTagKey dcmkey(key.GetGroup(), key.GetElement()); | |
3236 | |
3237 const char* str = NULL; | |
3238 const Uint8* data = NULL; | |
3239 unsigned long size = 0; | |
3240 | |
3241 if (dataset.findAndGetString(dcmkey, str).good() && | |
3242 str != NULL) | |
3243 { | |
3244 target.assign(str); | |
3245 return true; | |
3246 } | |
3247 else if (dataset.findAndGetUint8Array(dcmkey, data, &size).good() && | |
3248 data != NULL && | |
3249 size > 0) | |
3250 { | |
3251 /** | |
3252 * This special case is necessary for borderline DICOM files | |
3253 * that have DICOM tags have the "UN" value representation. New | |
3254 * in Orthanc 1.10.1. | |
3255 * https://groups.google.com/g/orthanc-users/c/86fobx3ZyoM/m/KBG17un6AQAJ | |
3256 **/ | |
3257 unsigned long l = 0; | |
3258 while (l < size && | |
3259 data[l] != 0) | |
3260 { | |
3261 l++; | |
3262 } | |
3263 | |
3264 target.assign(reinterpret_cast<const char*>(data), l); | |
3265 return true; | |
3266 } | |
3267 else | |
3268 { | |
3269 return false; | |
3270 } | |
3271 } | |
3229 } | 3272 } |
3230 | 3273 |
3231 | 3274 |
3232 #include "./FromDcmtkBridge_TransferSyntaxes.impl.h" | 3275 #include "./FromDcmtkBridge_TransferSyntaxes.impl.h" |