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;
106 Q_INVOKABLE virtual
void openDatabase(const QString databaseFile,
107 const QString& connectionName = "DICOM-DB");
111 Q_INVOKABLE
void closeDatabase();
114 Q_INVOKABLE
bool initializeDatabase(const
char* schemaFile = ":/dicom/dicom-schema.sql");
117 Q_INVOKABLE
bool updateSchema(const
char* schemaFile = ":/dicom/dicom-schema.sql");
121 Q_INVOKABLE
bool updateSchemaIfNeeded(const
char* schemaFile = ":/dicom/dicom-schema.sql");
124 Q_INVOKABLE QString schemaVersion();
128 Q_INVOKABLE QString schemaVersionLoaded();
132 Q_INVOKABLE QStringList patients ();
133 Q_INVOKABLE QStringList studiesForPatient (const QString patientUID);
134 Q_INVOKABLE QStringList seriesForStudy (const QString studyUID);
135 Q_INVOKABLE QString studyForSeries(QString seriesUID);
136 Q_INVOKABLE QString patientForStudy(QString studyUID);
137 Q_INVOKABLE QStringList filesForSeries (const QString seriesUID);
138 Q_INVOKABLE
QHash<QString,QString> descriptionsForFile(QString fileName);
139 Q_INVOKABLE QString descriptionForSeries(const QString seriesUID);
140 Q_INVOKABLE QString descriptionForStudy(const QString studyUID);
141 Q_INVOKABLE QString nameForPatient(const QString patientUID);
142 Q_INVOKABLE QString fileForInstance (const QString sopInstanceUID);
143 Q_INVOKABLE QString seriesForFile (QString fileName);
144 Q_INVOKABLE QString instanceForFile (const QString fileName);
145 Q_INVOKABLE QDateTime insertDateTimeForInstance (const QString fileName);
147 Q_INVOKABLE QStringList allFiles ();
154 Q_INVOKABLE
void loadInstanceHeader (const QString sopInstanceUID);
155 Q_INVOKABLE
void loadFileHeader (const QString fileName);
156 Q_INVOKABLE QStringList headerKeys ();
157 Q_INVOKABLE QString headerValue (const QString key);
169 void setTagsToPrecache(const QStringList tags);
170 const QStringList tagsToPrecache();
187 Q_INVOKABLE
void insert( const
ctkDICOMItem& ctkDataset,
188 bool storeFile,
bool generateThumbnail);
189 void insert ( DcmItem *item,
190 bool storeFile = true,
bool generateThumbnail = true);
191 Q_INVOKABLE
void insert ( const QString& filePath,
192 bool storeFile = true,
bool generateThumbnail = true,
193 bool createHierarchy = true,
194 const QString& destinationDirectoryName = QString() );
197 bool fileExistsAndUpToDate(const QString& filePath);
201 Q_INVOKABLE
bool removeSeries(const QString& seriesInstanceUID);
202 Q_INVOKABLE
bool removeStudy(const QString& studyInstanceUID);
203 Q_INVOKABLE
bool removePatient(const QString& patientID);
215 Q_INVOKABLE QString instanceValue (const QString sopInstanceUID, const QString tag);
216 Q_INVOKABLE QString instanceValue (const QString sopInstanceUID, const
unsigned short group, const
unsigned short element);
217 Q_INVOKABLE QString fileValue (const QString fileName, const QString tag);
218 Q_INVOKABLE QString fileValue (const QString fileName, const
unsigned short group, const
unsigned short element);
219 Q_INVOKABLE
bool tagToGroupElement (const QString tag,
unsigned short& group,
unsigned short& element);
220 Q_INVOKABLE QString groupElementToTag (const
unsigned short& group, const
unsigned short& element);
233 Q_INVOKABLE
bool tagCacheExists ();
235 Q_INVOKABLE
bool initializeTagCache ();
237 Q_INVOKABLE QString cachedTag (const QString sopInstanceUID, const QString tag);
239 Q_INVOKABLE
bool cacheTag (const QString sopInstanceUID, const QString tag, const QString value);
241 Q_INVOKABLE
bool cacheTags (const QStringList sopInstanceUIDs, const QStringList tags, const QStringList values);
251 void patientAdded(
int, QString, QString, QString);
254 void studyAdded(QString);
257 void seriesAdded(QString);
261 void instanceAdded(QString);
263 void databaseChanged();
265 void schemaUpdateStarted(
int);
267 void schemaUpdateProgress(
int);
268 void schemaUpdateProgress(QString);
270 void schemaUpdated();
273 QScopedPointer<ctkDICOMDatabasePrivate> d_ptr;
278 Q_DECLARE_PRIVATE(ctkDICOMDatabase);
279 Q_DISABLE_COPY(ctkDICOMDatabase);
Abstract thumbnail generator class.