comparison Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp @ 1702:bc40b6450261

"patient" GET argument
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 27 Nov 2020 13:57:28 +0100
parents b5a8bf32d969
children 76c590a62755
comparison
equal deleted inserted replaced
1701:b5a8bf32d969 1702:bc40b6450261
275 observer_->SignalSeriesMetadataLoaded( 275 observer_->SignalSeriesMetadataLoaded(
276 message.GetStudyInstanceUid(), message.GetSeriesInstanceUid()); 276 message.GetStudyInstanceUid(), message.GetSeriesInstanceUid());
277 } 277 }
278 } 278 }
279 279
280 void FetchInternal(const std::string& studyInstanceUid, 280 void FetchInternal(const std::string& patientId,
281 const std::string& studyInstanceUid,
281 const std::string& seriesInstanceUid) 282 const std::string& seriesInstanceUid)
282 { 283 {
283 // Firstly, load the study 284 // Firstly, load the study
284 Orthanc::DicomMap filter; 285 Orthanc::DicomMap filter;
285 filter.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, studyInstanceUid, false); 286
287 if (!patientId.empty())
288 {
289 filter.SetValue(Orthanc::DICOM_TAG_PATIENT_ID, patientId, false);
290 }
291
292 if (!studyInstanceUid.empty())
293 {
294 filter.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, studyInstanceUid, false);
295 }
286 296
287 std::set<Orthanc::DicomTag> tags; 297 std::set<Orthanc::DicomTag> tags;
288 tags.insert(Orthanc::DICOM_TAG_STUDY_DESCRIPTION); // Necessary for Orthanc DICOMweb plugin 298 tags.insert(Orthanc::DICOM_TAG_STUDY_DESCRIPTION); // Necessary for Orthanc DICOMweb plugin
289 299
290 resourcesLoader_->ScheduleQido( 300 resourcesLoader_->ScheduleQido(
303 series_, PRIORITY_HIGH, source_, Orthanc::ResourceType_Series, filter, tags, 313 series_, PRIORITY_HIGH, source_, Orthanc::ResourceType_Series, filter, tags,
304 new Orthanc::SingleValueObject<Orthanc::ResourceType>(Orthanc::ResourceType_Series)); 314 new Orthanc::SingleValueObject<Orthanc::ResourceType>(Orthanc::ResourceType_Series));
305 315
306 pending_ += 2; 316 pending_ += 2;
307 } 317 }
308 318
309 319
310 class PdfInfo : public Orthanc::IDynamicObject 320 class PdfInfo : public Orthanc::IDynamicObject
311 { 321 {
312 private: 322 private:
313 std::string studyInstanceUid_; 323 std::string studyInstanceUid_;
376 return loader; 386 return loader;
377 } 387 }
378 388
379 void FetchAllStudies() 389 void FetchAllStudies()
380 { 390 {
381 FetchInternal("", ""); 391 FetchInternal("", "", "");
392 }
393
394 void FetchPatient(const std::string& patientId)
395 {
396 if (!patientId.empty())
397 {
398 FetchInternal(patientId, "", "");
399 }
382 } 400 }
383 401
384 void FetchStudy(const std::string& studyInstanceUid) 402 void FetchStudy(const std::string& studyInstanceUid)
385 { 403 {
386 FetchInternal(studyInstanceUid, ""); 404 if (!studyInstanceUid.empty())
405 {
406 FetchInternal("", studyInstanceUid, "");
407 }
387 } 408 }
388 409
389 void FetchSeries(const std::string& studyInstanceUid, 410 void FetchSeries(const std::string& studyInstanceUid,
390 const std::string& seriesInstanceUid) 411 const std::string& seriesInstanceUid)
391 { 412 {
392 FetchInternal(studyInstanceUid, seriesInstanceUid); 413 if (!studyInstanceUid.empty() &&
414 !seriesInstanceUid.empty())
415 {
416 FetchInternal("", studyInstanceUid, seriesInstanceUid);
417 }
393 } 418 }
394 419
395 size_t GetStudiesCount() const 420 size_t GetStudiesCount() const
396 { 421 {
397 return studies_->GetSize(); 422 return studies_->GetSize();
2773 } 2798 }
2774 EXTERN_CATCH_EXCEPTIONS; 2799 EXTERN_CATCH_EXCEPTIONS;
2775 } 2800 }
2776 2801
2777 EMSCRIPTEN_KEEPALIVE 2802 EMSCRIPTEN_KEEPALIVE
2803 void FetchPatient(const char* patientId)
2804 {
2805 try
2806 {
2807 GetResourcesLoader().FetchPatient(patientId);
2808 }
2809 EXTERN_CATCH_EXCEPTIONS;
2810 }
2811
2812 EMSCRIPTEN_KEEPALIVE
2778 void FetchStudy(const char* studyInstanceUid) 2813 void FetchStudy(const char* studyInstanceUid)
2779 { 2814 {
2780 try 2815 try
2781 { 2816 {
2782 GetResourcesLoader().FetchStudy(studyInstanceUid); 2817 GetResourcesLoader().FetchStudy(studyInstanceUid);