Mercurial > hg > orthanc
comparison OrthancServer/DatabaseWrapper.cpp @ 231:8098448bd827
export log
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 30 Nov 2012 12:18:44 +0100 |
parents | 0200cd330582 |
children | 5368bbe813cf |
comparison
equal
deleted
inserted
replaced
230:ae2367145b49 | 231:8098448bd827 |
---|---|
552 target["PendingChanges"] = (changes.size() == maxResults && s.Step()); | 552 target["PendingChanges"] = (changes.size() == maxResults && s.Step()); |
553 target["LastSeq"] = static_cast<int>(last); | 553 target["LastSeq"] = static_cast<int>(last); |
554 } | 554 } |
555 | 555 |
556 | 556 |
557 void DatabaseWrapper::LogExportedInstance(const std::string& remoteModality, | 557 void DatabaseWrapper::LogExportedResource(ResourceType resourceType, |
558 DicomInstanceHasher& hasher, | 558 const std::string& publicId, |
559 const std::string& remoteModality, | |
560 const std::string& patientId, | |
561 const std::string& studyInstanceUid, | |
562 const std::string& seriesInstanceUid, | |
563 const std::string& sopInstanceUid, | |
559 const boost::posix_time::ptime& date) | 564 const boost::posix_time::ptime& date) |
560 { | 565 { |
561 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO ExportedInstances VALUES(NULL, ?, ?, ?, ?, ?, ?)"); | 566 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
562 s.BindString(0, remoteModality); | 567 "INSERT INTO ExportedResources VALUES(NULL, ?, ?, ?, ?, ?, ?, ?, ?)"); |
563 s.BindString(1, hasher.HashInstance()); | 568 |
564 s.BindString(2, hasher.GetPatientId()); | 569 s.BindInt(0, resourceType); |
565 s.BindString(3, hasher.GetStudyUid()); | 570 s.BindString(1, publicId); |
566 s.BindString(4, hasher.GetSeriesUid()); | 571 s.BindString(2, remoteModality); |
567 s.BindString(5, hasher.GetInstanceUid()); | 572 s.BindString(3, patientId); |
568 s.BindString(6, boost::posix_time::to_iso_string(date)); | 573 s.BindString(4, studyInstanceUid); |
574 s.BindString(5, seriesInstanceUid); | |
575 s.BindString(6, sopInstanceUid); | |
576 s.BindString(7, boost::posix_time::to_iso_string(date)); | |
577 | |
569 s.Run(); | 578 s.Run(); |
570 } | 579 } |
580 | |
581 | |
582 void DatabaseWrapper::GetExportedResources(Json::Value& target, | |
583 int64_t since, | |
584 unsigned int maxResults) | |
585 { | |
586 SQLite::Statement s(db_, SQLITE_FROM_HERE, | |
587 "SELECT * FROM ExportedResources WHERE seq>? ORDER BY seq LIMIT ?"); | |
588 s.BindInt(0, since); | |
589 s.BindInt(1, maxResults + 1); | |
590 | |
591 Json::Value changes = Json::arrayValue; | |
592 int64_t last = 0; | |
593 | |
594 while (changes.size() < maxResults && s.Step()) | |
595 { | |
596 int64_t seq = s.ColumnInt(0); | |
597 ResourceType resourceType = static_cast<ResourceType>(s.ColumnInt(1)); | |
598 std::string publicId = s.ColumnString(2); | |
599 | |
600 Json::Value item = Json::objectValue; | |
601 item["Seq"] = static_cast<int>(seq); | |
602 item["ResourceType"] = ToString(resourceType); | |
603 item["ID"] = publicId; | |
604 item["Path"] = GetBasePath(resourceType, publicId); | |
605 item["RemoteModality"] = s.ColumnString(3); | |
606 item["Date"] = s.ColumnString(8); | |
607 | |
608 // WARNING: Do not add "break" below and do not reorder the case items! | |
609 switch (resourceType) | |
610 { | |
611 case ResourceType_Instance: | |
612 item["SopInstanceUid"] = s.ColumnString(7); | |
613 | |
614 case ResourceType_Series: | |
615 item["SeriesInstanceUid"] = s.ColumnString(6); | |
616 | |
617 case ResourceType_Study: | |
618 item["StudyInstanceUid"] = s.ColumnString(5); | |
619 | |
620 case ResourceType_Patient: | |
621 item["PatientId"] = s.ColumnString(4); | |
622 break; | |
623 | |
624 default: | |
625 throw OrthancException(ErrorCode_InternalError); | |
626 } | |
627 | |
628 last = seq; | |
629 | |
630 changes.append(item); | |
631 } | |
632 | |
633 target = Json::objectValue; | |
634 target["Changes"] = changes; | |
635 target["PendingChanges"] = (changes.size() == maxResults && s.Step()); | |
636 target["LastSeq"] = static_cast<int>(last); | |
637 } | |
638 | |
639 | |
571 | 640 |
572 | 641 |
573 int64_t DatabaseWrapper::GetTableRecordCount(const std::string& table) | 642 int64_t DatabaseWrapper::GetTableRecordCount(const std::string& table) |
574 { | 643 { |
575 char buf[128]; | 644 char buf[128]; |