comparison Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp @ 2090:c2dfc253bd04 dicom-sr

cont
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 07 Nov 2023 19:35:48 +0100
parents 63d77859edee
children 35de56fb6f89
comparison
equal deleted inserted replaced
2089:63d77859edee 2090:c2dfc253bd04
420 } 420 }
421 } 421 }
422 422
423 void Handle(const OrthancStone::SeriesMetadataLoader::SuccessMessage& message) 423 void Handle(const OrthancStone::SeriesMetadataLoader::SuccessMessage& message)
424 { 424 {
425 for (size_t i = 0; i < message.GetInstancesCount(); i++)
426 {
427 std::string sopInstanceUid, sopClassUid;
428 if (message.GetInstance(i).LookupStringValue(sopInstanceUid, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false) &&
429 message.GetInstance(i).LookupStringValue(sopClassUid, Orthanc::DICOM_TAG_SOP_CLASS_UID, false) &&
430 OrthancStone::StringToSopClassUid(sopClassUid) == OrthancStone::SopClassUid_ComprehensiveSR)
431 {
432 std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(context_.Lock());
433 lock->Schedule(
434 GetSharedObserver(), PRIORITY_NORMAL, OrthancStone::ParseDicomFromWadoCommand::Create(
435 source_, message.GetStudyInstanceUid(), message.GetSeriesInstanceUid(), sopInstanceUid,
436 false /* no transcoding */, Orthanc::DicomTransferSyntax_LittleEndianExplicit /* dummy value */,
437 new InstanceInfo(message.GetStudyInstanceUid(), message.GetSeriesInstanceUid(), OrthancStone::SopClassUid_ComprehensiveSR)));
438 return;
439 }
440 }
441
425 if (observer_.get() != NULL) 442 if (observer_.get() != NULL)
426 { 443 {
427 for (size_t i = 0; i < message.GetInstancesCount(); i++)
428 {
429 std::string sopInstanceUid, sopClassUid;
430 if (message.GetInstance(i).LookupStringValue(sopInstanceUid, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false) &&
431 message.GetInstance(i).LookupStringValue(sopClassUid, Orthanc::DICOM_TAG_SOP_CLASS_UID, false) &&
432 OrthancStone::StringToSopClassUid(sopClassUid) == OrthancStone::SopClassUid_ComprehensiveSR)
433 {
434 std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(context_.Lock());
435 lock->Schedule(
436 GetSharedObserver(), PRIORITY_NORMAL, OrthancStone::ParseDicomFromWadoCommand::Create(
437 source_, message.GetStudyInstanceUid(), message.GetSeriesInstanceUid(), sopInstanceUid,
438 false /* no transcoding */, Orthanc::DicomTransferSyntax_LittleEndianExplicit /* dummy value */,
439 new InstanceInfo(message.GetStudyInstanceUid(), message.GetSeriesInstanceUid(), OrthancStone::SopClassUid_ComprehensiveSR)));
440 return;
441 }
442 }
443
444 observer_->SignalSeriesMetadataLoaded( 444 observer_->SignalSeriesMetadataLoaded(
445 message.GetStudyInstanceUid(), message.GetSeriesInstanceUid()); 445 message.GetStudyInstanceUid(), message.GetSeriesInstanceUid());
446 } 446 }
447 } 447 }
448 448
554 554
555 for (std::list<OrthancStone::DicomStructuredReport::Frame>::const_iterator 555 for (std::list<OrthancStone::DicomStructuredReport::Frame>::const_iterator
556 it = frames.begin(); it != frames.end(); ++it) 556 it = frames.begin(); it != frames.end(); ++it)
557 { 557 {
558 LOG(ERROR) << "YOU " << it->GetSopInstanceUid() << " " << it->GetFrameNumber(); 558 LOG(ERROR) << "YOU " << it->GetSopInstanceUid() << " " << it->GetFrameNumber();
559 }
560
561 if (observer_.get() != NULL)
562 {
563 observer_->SignalSeriesMetadataLoaded(
564 info.GetStudyInstanceUid(), info.GetSeriesInstanceUid());
559 } 565 }
560 } 566 }
561 catch (Orthanc::OrthancException& e) 567 catch (Orthanc::OrthancException& e)
562 { 568 {
563 LOG(ERROR) << "Cannot decode DICOM-SR: " << e.What(); 569 LOG(ERROR) << "Cannot decode DICOM-SR: " << e.What();