Mercurial > hg > orthanc
diff OrthancServer/DatabaseWrapperBase.cpp @ 1727:1ae29c5e52fb db-changes
fix
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 20 Oct 2015 14:50:10 +0200 |
parents | a7c05bbfaf6a |
children | 4941494b5dd8 |
line wrap: on
line diff
--- a/OrthancServer/DatabaseWrapperBase.cpp Tue Oct 20 11:21:36 2015 +0200 +++ b/OrthancServer/DatabaseWrapperBase.cpp Tue Oct 20 14:50:10 2015 +0200 @@ -666,21 +666,24 @@ void DatabaseWrapperBase::LookupIdentifier(std::list<int64_t>& target, + ResourceType level, const DicomTag& tag, const std::string& value) { - assert(tag == DICOM_TAG_PATIENT_ID || - tag == DICOM_TAG_STUDY_INSTANCE_UID || - tag == DICOM_TAG_SERIES_INSTANCE_UID || - tag == DICOM_TAG_SOP_INSTANCE_UID || - tag == DICOM_TAG_ACCESSION_NUMBER); + assert((level == ResourceType_Patient && tag == DICOM_TAG_PATIENT_ID) || + (level == ResourceType_Study && tag == DICOM_TAG_STUDY_INSTANCE_UID) || + (level == ResourceType_Study && tag == DICOM_TAG_ACCESSION_NUMBER) || + (level == ResourceType_Series && tag == DICOM_TAG_SERIES_INSTANCE_UID) || + (level == ResourceType_Instance && tag == DICOM_TAG_SOP_INSTANCE_UID)); SQLite::Statement s(db_, SQLITE_FROM_HERE, - "SELECT id FROM DicomIdentifiers WHERE tagGroup=? AND tagElement=? and value=?"); + "SELECT d.id FROM DicomIdentifiers as d, Resources as r WHERE " + "d.id = r.internalId AND r.resourceType=? AND d.tagGroup=? AND d.tagElement=? and d.value=?"); - s.BindInt(0, tag.GetGroup()); - s.BindInt(1, tag.GetElement()); - s.BindString(2, value); + s.BindInt(0, level); + s.BindInt(1, tag.GetGroup()); + s.BindInt(2, tag.GetElement()); + s.BindString(3, value); target.clear();