ソースを参照

Merge branch 'master' of git@github.com:pieper/CTK

Jean-Christophe Fillion-Robin 15 年 前
コミット
b676273536

ファイルの差分が大きいため隠しています
+ 2262 - 0
Libs/DICOM/Core/Resources/dicom-sample.sql


+ 50 - 0
Libs/DICOM/Core/Resources/dicom-schema.sql

@@ -0,0 +1,50 @@
+-- 
+-- A simple SQLITE3 database schema for modelling locally stored DICOM files
+-- 
+
+BEGIN TRANSACTION;
+DROP TABLE IF EXISTS 'Images' ;
+DROP TABLE IF EXISTS 'Patients' ;
+DROP TABLE IF EXISTS 'Series' ;
+DROP TABLE IF EXISTS 'Studies' ;
+
+CREATE TABLE 'Images' (
+  'Filename' VARCHAR(1024) NOT NULL ,
+  'SeriesInstanceUID' VARCHAR(255) NOT NULL ,
+  PRIMARY KEY ('Filename') );
+CREATE TABLE 'Patients' (
+  'UID' INTEGER PRIMARY KEY AUTOINCREMENT,
+  'PatientsName' VARCHAR(255) NULL ,
+  'PatientID' VARCHAR(255) NULL ,
+  'PatientsBirthDate' DATE NULL ,
+  'PatientsBirthTime' TIME NULL ,
+  'PatientsSex' varchar(1) NULL ,
+  'PatientsComments' VARCHAR(255) NULL );
+CREATE TABLE 'Series' (
+  'SeriesInstanceUID' VARCHAR(255) NOT NULL ,
+  'StudyInstanceUID' VARCHAR(45) NOT NULL ,
+  'SeriesNumber' INT NULL ,
+  'SeriesDate' DATE NULL ,
+  'SeriesTime' VARCHAR(20) NULL ,
+  'SeriesDescription' VARCHAR(255) NULL ,
+  'BodyPartExamined' VARCHAR(255) NULL ,
+  'FrameOfReferenceUID' VARCHAR(255) NULL ,
+  'AcquisitionNumber' INT NULL ,
+  'ContrastAgent' VARCHAR(255) NULL ,
+  'ScanningSequence' VARCHAR(45) NULL ,
+  'EchoNumber' INT NULL ,
+  'TemporalPosition' INT NULL ,
+  PRIMARY KEY ('SeriesInstanceUID') );
+CREATE TABLE 'Studies' (
+  'StudyInstanceUID' VARCHAR(255) NOT NULL ,
+  'PatientsUID' INT NOT NULL ,
+  'StudyID' VARCHAR(255) NULL ,
+  'StudyDate' DATE NULL ,
+  'StudyTime' VARCHAR(20) NULL ,
+  'AccessionNumber' VARCHAR(255) NULL ,
+  'ModalitiesInStudy' VARCHAR(255) NULL ,
+  'ReferringPhysician' VARCHAR(255) NULL ,
+  'StudyDescription' VARCHAR(255) NULL ,
+  PRIMARY KEY ('StudyInstanceUID') );
+COMMIT;
+

+ 5 - 0
Libs/DICOM/Core/Resources/dicom.qrc

@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/dicom">
+  <file>dicom-schema.sql</file>
+</qresource>
+</RCC>

+ 36 - 3
Libs/DICOM/Core/qCTKDCMTK.cxx

@@ -2,26 +2,59 @@
 // qCTKDCMTK includes
 #include "qCTKDCMTK.h"
 
+// Qt includes
+#include <QSqlDatabase>
+#include <QSqlError>
+#include <iostream>
+
 //----------------------------------------------------------------------------
 class qCTKDCMTKPrivate: public qCTKPrivate<qCTKDCMTK>
 {
 public:
-  qCTKDCMTKPrivate(){}
+  qCTKDCMTKPrivate(); 
+  QSqlDatabase  Database;
+  QString       DatabaseFileName;
+  QString       LastError;
 };
 
 //----------------------------------------------------------------------------
 // qCTKDCMTKPrivate methods
-
+qCTKDCMTKPrivate::qCTKDCMTKPrivate() 
+{
+}
 
 //----------------------------------------------------------------------------
 // qCTKDCMTKWidget methods
 
-qCTKDCMTK::qCTKDCMTK(QObject* _parent):Superclass(_parent)
+qCTKDCMTK::qCTKDCMTK(QObject* _parent): Superclass(_parent)
 {
   QCTK_INIT_PRIVATE(qCTKDCMTK);
 }
 
+//----------------------------------------------------------------------------
+qCTKDCMTK::
 qCTKDCMTK::~qCTKDCMTK()
 {
 }
 
+//----------------------------------------------------------------------------
+QCTK_SET_CXX(qCTKDCMTK, const QString&, setDatabaseFileName, DatabaseFileName);
+
+//----------------------------------------------------------------------------
+bool qCTKDCMTK::openDatabase(const QString& databaseFileName) 
+{
+  QCTK_D(qCTKDCMTK);
+  d->Database = QSqlDatabase::addDatabase("QSQLITE","DICOM-DB");
+  d->Database.setDatabaseName(databaseFileName);
+  if ( ! (d->Database.open()) )
+    {
+    d->LastError = d->Database.lastError().text();
+    return false;
+    }
+  return true;
+}
+const QString& qCTKDCMTK::GetLastError() const {
+  QCTK_D(const qCTKDCMTK);
+  return d->LastError; 
+}
+

+ 6 - 1
Libs/DICOM/Core/qCTKDCMTK.h

@@ -17,7 +17,12 @@ public:
   typedef QObject Superclass;
   explicit qCTKDCMTK(QObject* parent = 0);
   virtual ~qCTKDCMTK();
-
+  
+  /// 
+  ///
+  void setDatabaseFileName(const QString& file);
+  virtual bool openDatabase(const QString& file);
+  const QString& GetLastError() const; 
 private:
   QCTK_DECLARE_PRIVATE(qCTKDCMTK);
 };