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(
bool isInMemory READ isInMemory)
58 Q_PROPERTY(QString lastError READ lastError)
59 Q_PROPERTY(QString databaseFilename READ databaseFilename)
60 Q_PROPERTY(QString databaseDirectory READ databaseDirectory)
61 Q_PROPERTY(QStringList tagsToPrecache READ tagsToPrecache WRITE setTagsToPrecache)
68 const QSqlDatabase& database() const;
69 const QString lastError() const;
70 const QString databaseFilename() const;
76 const QString databaseDirectory() const;
88 bool isInMemory() const;
111 Q_INVOKABLE virtual
void openDatabase(const QString databaseFile,
112 const QString& connectionName = "");
116 Q_INVOKABLE
void closeDatabase();
119 Q_INVOKABLE
bool initializeDatabase(const
char* schemaFile = ":/dicom/dicom-schema.sql");
122 Q_INVOKABLE
bool updateSchema(const
char* schemaFile = ":/dicom/dicom-schema.sql");
126 Q_INVOKABLE
bool updateSchemaIfNeeded(const
char* schemaFile = ":/dicom/dicom-schema.sql");
129 Q_INVOKABLE QString schemaVersion();
133 Q_INVOKABLE QString schemaVersionLoaded();
137 Q_INVOKABLE QStringList patients ();
138 Q_INVOKABLE QStringList studiesForPatient (const QString patientUID);
139 Q_INVOKABLE QStringList seriesForStudy (const QString studyUID);
140 Q_INVOKABLE QStringList instancesForSeries(const QString seriesUID);
141 Q_INVOKABLE QString studyForSeries(QString seriesUID);
142 Q_INVOKABLE QString patientForStudy(QString studyUID);
143 Q_INVOKABLE QStringList filesForSeries (const QString seriesUID);
144 Q_INVOKABLE
QHash<QString,QString> descriptionsForFile(QString fileName);
145 Q_INVOKABLE QString descriptionForSeries(const QString seriesUID);
146 Q_INVOKABLE QString descriptionForStudy(const QString studyUID);
147 Q_INVOKABLE QString nameForPatient(const QString patientUID);
148 Q_INVOKABLE QString fileForInstance (const QString sopInstanceUID);
149 Q_INVOKABLE QString seriesForFile (QString fileName);
150 Q_INVOKABLE QString instanceForFile (const QString fileName);
151 Q_INVOKABLE QDateTime insertDateTimeForInstance (const QString fileName);
153 Q_INVOKABLE QStringList allFiles ();
160 Q_INVOKABLE
void loadInstanceHeader (const QString sopInstanceUID);
161 Q_INVOKABLE
void loadFileHeader (const QString fileName);
162 Q_INVOKABLE QStringList headerKeys ();
163 Q_INVOKABLE QString headerValue (const QString key);
175 void setTagsToPrecache(const QStringList tags);
176 const QStringList tagsToPrecache();
193 Q_INVOKABLE
void insert( const
ctkDICOMItem& ctkDataset,
194 bool storeFile,
bool generateThumbnail);
195 void insert ( DcmItem *item,
196 bool storeFile = true,
bool generateThumbnail = true);
197 Q_INVOKABLE
void insert ( const QString& filePath,
198 bool storeFile = true,
bool generateThumbnail = true,
199 bool createHierarchy = true,
200 const QString& destinationDirectoryName = QString() );
212 Q_INVOKABLE
void prepareInsert();
215 Q_INVOKABLE
bool fileExistsAndUpToDate(const QString& filePath);
219 Q_INVOKABLE
bool removeSeries(const QString& seriesInstanceUID);
220 Q_INVOKABLE
bool removeStudy(const QString& studyInstanceUID);
221 Q_INVOKABLE
bool removePatient(const QString& patientID);
222 Q_INVOKABLE
bool cleanup();
233 Q_INVOKABLE QString instanceValue (const QString sopInstanceUID, const QString tag);
234 Q_INVOKABLE QString instanceValue (const QString sopInstanceUID, const
unsigned short group, const
unsigned short element);
235 Q_INVOKABLE QString fileValue (const QString fileName, const QString tag);
236 Q_INVOKABLE QString fileValue (const QString fileName, const
unsigned short group, const
unsigned short element);
237 Q_INVOKABLE
bool tagToGroupElement (const QString tag,
unsigned short& group,
unsigned short& element);
238 Q_INVOKABLE QString groupElementToTag (const
unsigned short& group, const
unsigned short& element);
251 Q_INVOKABLE
bool tagCacheExists ();
253 Q_INVOKABLE
bool initializeTagCache ();
255 Q_INVOKABLE QString cachedTag (const QString sopInstanceUID, const QString tag);
257 Q_INVOKABLE
bool cacheTag (const QString sopInstanceUID, const QString tag, const QString value);
259 Q_INVOKABLE
bool cacheTags (const QStringList sopInstanceUIDs, const QStringList tags, const QStringList values);
269 void patientAdded(
int, QString, QString, QString);
272 void studyAdded(QString);
275 void seriesAdded(QString);
279 void instanceAdded(QString);
281 void databaseChanged();
283 void schemaUpdateStarted(
int);
285 void schemaUpdateProgress(
int);
286 void schemaUpdateProgress(QString);
288 void schemaUpdated();
291 QScopedPointer<ctkDICOMDatabasePrivate> d_ptr;