21 #ifndef __ctkDICOMDatabase_h 22 #define __ctkDICOMDatabase_h 26 #include <QStringList> 27 #include <QSqlDatabase> 30 #include "ctkDICOMCoreExport.h" 33 class ctkDICOMDatabasePrivate;
56 Q_PROPERTY(
bool isOpen READ isOpen)
57 Q_PROPERTY(QString lastError READ lastError)
58 Q_PROPERTY(QString databaseFilename READ databaseFilename)
59 Q_PROPERTY(QStringList tagsToPrecache READ tagsToPrecache WRITE setTagsToPrecache)
66 const QSqlDatabase& database() const;
67 const QString lastError() const;
68 const QString databaseFilename() const;
74 const QString databaseDirectory() const;
86 bool isInMemory() const;
109 Q_INVOKABLE virtual
void openDatabase(const QString databaseFile,
110 const QString& connectionName = "");
114 Q_INVOKABLE
void closeDatabase();
117 Q_INVOKABLE
bool initializeDatabase(const
char* schemaFile = ":/dicom/dicom-schema.sql");
120 Q_INVOKABLE
bool updateSchema(const
char* schemaFile = ":/dicom/dicom-schema.sql");
124 Q_INVOKABLE
bool updateSchemaIfNeeded(const
char* schemaFile = ":/dicom/dicom-schema.sql");
127 Q_INVOKABLE QString schemaVersion();
131 Q_INVOKABLE QString schemaVersionLoaded();
135 Q_INVOKABLE QStringList patients ();
136 Q_INVOKABLE QStringList studiesForPatient (const QString patientUID);
137 Q_INVOKABLE QStringList seriesForStudy (const QString studyUID);
138 Q_INVOKABLE QStringList instancesForSeries(const QString seriesUID);
139 Q_INVOKABLE QString studyForSeries(QString seriesUID);
140 Q_INVOKABLE QString patientForStudy(QString studyUID);
141 Q_INVOKABLE QStringList filesForSeries (const QString seriesUID);
142 Q_INVOKABLE
QHash<QString,QString> descriptionsForFile(QString fileName);
143 Q_INVOKABLE QString descriptionForSeries(const QString seriesUID);
144 Q_INVOKABLE QString descriptionForStudy(const QString studyUID);
145 Q_INVOKABLE QString nameForPatient(const QString patientUID);
146 Q_INVOKABLE QString fileForInstance (const QString sopInstanceUID);
147 Q_INVOKABLE QString seriesForFile (QString fileName);
148 Q_INVOKABLE QString instanceForFile (const QString fileName);
149 Q_INVOKABLE QDateTime insertDateTimeForInstance (const QString fileName);
151 Q_INVOKABLE QStringList allFiles ();
158 Q_INVOKABLE
void loadInstanceHeader (const QString sopInstanceUID);
159 Q_INVOKABLE
void loadFileHeader (const QString fileName);
160 Q_INVOKABLE QStringList headerKeys ();
161 Q_INVOKABLE QString headerValue (const QString key);
173 void setTagsToPrecache(const QStringList tags);
174 const QStringList tagsToPrecache();
191 Q_INVOKABLE
void insert( const
ctkDICOMItem& ctkDataset,
192 bool storeFile,
bool generateThumbnail);
193 void insert ( DcmItem *item,
194 bool storeFile = true,
bool generateThumbnail = true);
195 Q_INVOKABLE
void insert ( const QString& filePath,
196 bool storeFile = true,
bool generateThumbnail = true,
197 bool createHierarchy = true,
198 const QString& destinationDirectoryName = QString() );
201 bool fileExistsAndUpToDate(const QString& filePath);
205 Q_INVOKABLE
bool removeSeries(const QString& seriesInstanceUID);
206 Q_INVOKABLE
bool removeStudy(const QString& studyInstanceUID);
207 Q_INVOKABLE
bool removePatient(const QString& patientID);
219 Q_INVOKABLE QString instanceValue (const QString sopInstanceUID, const QString tag);
220 Q_INVOKABLE QString instanceValue (const QString sopInstanceUID, const
unsigned short group, const
unsigned short element);
221 Q_INVOKABLE QString fileValue (const QString fileName, const QString tag);
222 Q_INVOKABLE QString fileValue (const QString fileName, const
unsigned short group, const
unsigned short element);
223 Q_INVOKABLE
bool tagToGroupElement (const QString tag,
unsigned short& group,
unsigned short& element);
224 Q_INVOKABLE QString groupElementToTag (const
unsigned short& group, const
unsigned short& element);
237 Q_INVOKABLE
bool tagCacheExists ();
239 Q_INVOKABLE
bool initializeTagCache ();
241 Q_INVOKABLE QString cachedTag (const QString sopInstanceUID, const QString tag);
243 Q_INVOKABLE
bool cacheTag (const QString sopInstanceUID, const QString tag, const QString value);
245 Q_INVOKABLE
bool cacheTags (const QStringList sopInstanceUIDs, const QStringList tags, const QStringList values);
255 void patientAdded(
int, QString, QString, QString);
258 void studyAdded(QString);
261 void seriesAdded(QString);
265 void instanceAdded(QString);
267 void databaseChanged();
269 void schemaUpdateStarted(
int);
271 void schemaUpdateProgress(
int);
272 void schemaUpdateProgress(QString);
274 void schemaUpdated();
277 QScopedPointer<ctkDICOMDatabasePrivate> d_ptr;
282 Q_DECLARE_PRIVATE(ctkDICOMDatabase);
283 Q_DISABLE_COPY(ctkDICOMDatabase);
Abstract thumbnail generator class.