Mercurial > hg > orthanc-stone
diff 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 |
line wrap: on
line diff
--- a/Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp Fri Nov 27 12:21:26 2020 +0100 +++ b/Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp Fri Nov 27 13:57:28 2020 +0100 @@ -277,12 +277,22 @@ } } - void FetchInternal(const std::string& studyInstanceUid, + void FetchInternal(const std::string& patientId, + const std::string& studyInstanceUid, const std::string& seriesInstanceUid) { // Firstly, load the study Orthanc::DicomMap filter; - filter.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, studyInstanceUid, false); + + if (!patientId.empty()) + { + filter.SetValue(Orthanc::DICOM_TAG_PATIENT_ID, patientId, false); + } + + if (!studyInstanceUid.empty()) + { + filter.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, studyInstanceUid, false); + } std::set<Orthanc::DicomTag> tags; tags.insert(Orthanc::DICOM_TAG_STUDY_DESCRIPTION); // Necessary for Orthanc DICOMweb plugin @@ -305,7 +315,7 @@ pending_ += 2; } - + class PdfInfo : public Orthanc::IDynamicObject { @@ -378,18 +388,33 @@ void FetchAllStudies() { - FetchInternal("", ""); + FetchInternal("", "", ""); + } + + void FetchPatient(const std::string& patientId) + { + if (!patientId.empty()) + { + FetchInternal(patientId, "", ""); + } } void FetchStudy(const std::string& studyInstanceUid) { - FetchInternal(studyInstanceUid, ""); + if (!studyInstanceUid.empty()) + { + FetchInternal("", studyInstanceUid, ""); + } } void FetchSeries(const std::string& studyInstanceUid, const std::string& seriesInstanceUid) { - FetchInternal(studyInstanceUid, seriesInstanceUid); + if (!studyInstanceUid.empty() && + !seriesInstanceUid.empty()) + { + FetchInternal("", studyInstanceUid, seriesInstanceUid); + } } size_t GetStudiesCount() const @@ -2775,6 +2800,16 @@ } EMSCRIPTEN_KEEPALIVE + void FetchPatient(const char* patientId) + { + try + { + GetResourcesLoader().FetchPatient(patientId); + } + EXTERN_CATCH_EXCEPTIONS; + } + + EMSCRIPTEN_KEEPALIVE void FetchStudy(const char* studyInstanceUid) { try