Mercurial > hg > orthanc
comparison OrthancServer/ServerIndex.cpp @ 82:9eb40cad7935
fixes
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 24 Sep 2012 14:05:19 +0200 |
parents | 6212bf978584 |
children | a84291457608 |
comparison
equal
deleted
inserted
replaced
81:0ec5e2e327b1 | 82:9eb40cad7935 |
---|---|
229 const std::string& jsonUuid, | 229 const std::string& jsonUuid, |
230 const std::string& distantAet) | 230 const std::string& distantAet) |
231 { | 231 { |
232 std::string instanceUuid = Toolbox::GenerateUuid(); | 232 std::string instanceUuid = Toolbox::GenerateUuid(); |
233 | 233 |
234 SQLite::Statement s2(db_, SQLITE_FROM_HERE, "INSERT INTO Resources VALUES(?, ?)"); | |
235 s2.BindString(0, instanceUuid); | |
236 s2.BindInt(1, ResourceType_Instance); | |
237 s2.Run(); | |
238 | |
234 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO Instances VALUES(?, ?, ?, ?, ?, ?, ?, ?)"); | 239 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO Instances VALUES(?, ?, ?, ?, ?, ?, ?, ?)"); |
235 s.BindString(0, instanceUuid); | 240 s.BindString(0, instanceUuid); |
236 s.BindString(1, parentSeriesUuid); | 241 s.BindString(1, parentSeriesUuid); |
237 s.BindString(2, dicomInstance); | 242 s.BindString(2, dicomInstance); |
238 s.BindString(3, fileUuid); | 243 s.BindString(3, fileUuid); |
289 const std::string& dicomSeries, | 294 const std::string& dicomSeries, |
290 const DicomMap& dicomSummary) | 295 const DicomMap& dicomSummary) |
291 { | 296 { |
292 std::string seriesUuid = Toolbox::GenerateUuid(); | 297 std::string seriesUuid = Toolbox::GenerateUuid(); |
293 | 298 |
299 SQLite::Statement s2(db_, SQLITE_FROM_HERE, "INSERT INTO Resources VALUES(?, ?)"); | |
300 s2.BindString(0, seriesUuid); | |
301 s2.BindInt(1, ResourceType_Series); | |
302 s2.Run(); | |
303 | |
294 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO Series VALUES(?, ?, ?, ?)"); | 304 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO Series VALUES(?, ?, ?, ?)"); |
295 s.BindString(0, seriesUuid); | 305 s.BindString(0, seriesUuid); |
296 s.BindString(1, parentStudyUuid); | 306 s.BindString(1, parentStudyUuid); |
297 s.BindString(2, dicomSeries); | 307 s.BindString(2, dicomSeries); |
298 | 308 |
299 const DicomValue* expectedNumberOfInstances; | 309 const DicomValue* expectedNumberOfInstances; |
300 if ((expectedNumberOfInstances = dicomSummary.TestAndGetValue(DICOM_TAG_NUMBER_OF_FRAMES)) != NULL || | 310 if ((expectedNumberOfInstances = dicomSummary.TestAndGetValue(DICOM_TAG_NUMBER_OF_FRAMES)) != NULL || |
301 (expectedNumberOfInstances = dicomSummary.TestAndGetValue(DICOM_TAG_NUMBER_OF_SLICES)) != NULL || | 311 (expectedNumberOfInstances = dicomSummary.TestAndGetValue(DICOM_TAG_NUMBER_OF_SLICES)) != NULL || |
302 (expectedNumberOfInstances = dicomSummary.TestAndGetValue(DICOM_TAG_CARDIAC_NUMBER_OF_IMAGES)) != NULL || | 312 //(expectedNumberOfInstances = dicomSummary.TestAndGetValue(DICOM_TAG_CARDIAC_NUMBER_OF_IMAGES)) != NULL || |
303 (expectedNumberOfInstances = dicomSummary.TestAndGetValue(DICOM_TAG_IMAGES_IN_ACQUISITION)) != NULL) | 313 (expectedNumberOfInstances = dicomSummary.TestAndGetValue(DICOM_TAG_IMAGES_IN_ACQUISITION)) != NULL) |
304 { | 314 { |
305 s.BindInt(3, boost::lexical_cast<unsigned int>(expectedNumberOfInstances->AsString())); | 315 s.BindInt(3, boost::lexical_cast<unsigned int>(expectedNumberOfInstances->AsString())); |
306 } | 316 } |
307 else | 317 else |
339 std::string ServerIndex::CreateStudy(const std::string& parentPatientUuid, | 349 std::string ServerIndex::CreateStudy(const std::string& parentPatientUuid, |
340 const std::string& dicomStudy, | 350 const std::string& dicomStudy, |
341 const DicomMap& dicomSummary) | 351 const DicomMap& dicomSummary) |
342 { | 352 { |
343 std::string studyUuid = Toolbox::GenerateUuid(); | 353 std::string studyUuid = Toolbox::GenerateUuid(); |
354 | |
355 SQLite::Statement s2(db_, SQLITE_FROM_HERE, "INSERT INTO Resources VALUES(?, ?)"); | |
356 s2.BindString(0, studyUuid); | |
357 s2.BindInt(1, ResourceType_Study); | |
358 s2.Run(); | |
344 | 359 |
345 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO Studies VALUES(?, ?, ?)"); | 360 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO Studies VALUES(?, ?, ?)"); |
346 s.BindString(0, studyUuid); | 361 s.BindString(0, studyUuid); |
347 s.BindString(1, parentPatientUuid); | 362 s.BindString(1, parentPatientUuid); |
348 s.BindString(2, dicomStudy); | 363 s.BindString(2, dicomStudy); |
378 std::string ServerIndex::CreatePatient(const std::string& patientId, | 393 std::string ServerIndex::CreatePatient(const std::string& patientId, |
379 const DicomMap& dicomSummary) | 394 const DicomMap& dicomSummary) |
380 { | 395 { |
381 std::string patientUuid = Toolbox::GenerateUuid(); | 396 std::string patientUuid = Toolbox::GenerateUuid(); |
382 std::string dicomPatientId = dicomSummary.GetValue(DICOM_TAG_PATIENT_ID).AsString(); | 397 std::string dicomPatientId = dicomSummary.GetValue(DICOM_TAG_PATIENT_ID).AsString(); |
398 | |
399 SQLite::Statement s2(db_, SQLITE_FROM_HERE, "INSERT INTO Resources VALUES(?, ?)"); | |
400 s2.BindString(0, patientUuid); | |
401 s2.BindInt(1, ResourceType_Patient); | |
402 s2.Run(); | |
383 | 403 |
384 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO Patients VALUES(?, ?)"); | 404 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO Patients VALUES(?, ?)"); |
385 s.BindString(0, patientUuid); | 405 s.BindString(0, patientUuid); |
386 s.BindString(1, dicomPatientId); | 406 s.BindString(1, dicomPatientId); |
387 s.Run(); | 407 s.Run(); |
609 | 629 |
610 SeriesStatus ServerIndex::GetSeriesStatus(const std::string& seriesUuid) | 630 SeriesStatus ServerIndex::GetSeriesStatus(const std::string& seriesUuid) |
611 { | 631 { |
612 SQLite::Statement s1(db_, SQLITE_FROM_HERE, "SELECT expectedNumberOfInstances FROM Series WHERE uuid=?"); | 632 SQLite::Statement s1(db_, SQLITE_FROM_HERE, "SELECT expectedNumberOfInstances FROM Series WHERE uuid=?"); |
613 s1.BindString(0, seriesUuid); | 633 s1.BindString(0, seriesUuid); |
614 if (!s1.Step()) | 634 if (!s1.Step() || s1.ColumnIsNull(0)) |
615 { | 635 { |
616 return SeriesStatus_Unknown; | 636 return SeriesStatus_Unknown; |
617 } | 637 } |
618 | 638 |
619 int numberOfInstances = s1.ColumnInt(0); | 639 int numberOfInstances = s1.ColumnInt(0); |
676 result["FileUuid"] = s.ColumnString(3); | 696 result["FileUuid"] = s.ColumnString(3); |
677 MainDicomTagsToJson(result, instanceUuid); | 697 MainDicomTagsToJson(result, instanceUuid); |
678 | 698 |
679 if (s.ColumnIsNull(4)) | 699 if (s.ColumnIsNull(4)) |
680 { | 700 { |
681 result["IndexInSeries"] = -1; | 701 result["IndexInSeries"] = Json::nullValue; |
682 } | 702 } |
683 else | 703 else |
684 { | 704 { |
685 result["IndexInSeries"] = s.ColumnInt(4); | 705 result["IndexInSeries"] = s.ColumnInt(4); |
686 } | 706 } |
717 | 737 |
718 result["Instances"] = instances; | 738 result["Instances"] = instances; |
719 | 739 |
720 if (s1.ColumnIsNull(2)) | 740 if (s1.ColumnIsNull(2)) |
721 { | 741 { |
722 result["ExpectedNumberOfInstances"] = -1; | 742 result["ExpectedNumberOfInstances"] = Json::nullValue; |
723 } | 743 } |
724 else | 744 else |
725 { | 745 { |
726 result["ExpectedNumberOfInstances"] = s1.ColumnInt(2); | 746 result["ExpectedNumberOfInstances"] = s1.ColumnInt(2); |
727 } | 747 } |
924 target["Results"] = results; | 944 target["Results"] = results; |
925 target["LastSeq"] = static_cast<int>(lastSeq); // TODO JsonCpp in 64bit | 945 target["LastSeq"] = static_cast<int>(lastSeq); // TODO JsonCpp in 64bit |
926 | 946 |
927 return true; | 947 return true; |
928 } | 948 } |
949 | |
929 } | 950 } |