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 }