CTK 0.1.0
The Common Toolkit is a community effort to provide support code for medical image analysis, surgical navigation, and related projects.
Loading...
Searching...
No Matches
ctkDICOMDatabase.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Library: CTK
4
5 Copyright (c) 2010
6
7 Licensed under the Apache License, Version 2.0 (the "License");
8 you may not use this file except in compliance with the License.
9 You may obtain a copy of the License at
10
11 http://www.apache.org/licenses/LICENSE-2.0.txt
12
13 Unless required by applicable law or agreed to in writing, software
14 distributed under the License is distributed on an "AS IS" BASIS,
15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 See the License for the specific language governing permissions and
17 limitations under the License.
18
19=========================================================================*/
20
21#ifndef __ctkDICOMDatabase_h
22#define __ctkDICOMDatabase_h
23
24// Qt includes
25#include <QObject>
26#include <QStringList>
27#include <QSqlDatabase>
28
29#include "ctkDICOMItem.h"
30#include "ctkDICOMCoreExport.h"
31
32class QDateTime;
33class ctkDICOMDatabasePrivate;
34class DcmDataset;
36
52class CTK_DICOM_CORE_EXPORT ctkDICOMDatabase : public QObject
53{
54
55 Q_OBJECT
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)
62
63public:
64 explicit ctkDICOMDatabase(QObject *parent = 0);
65 explicit ctkDICOMDatabase(QString databaseFile);
66 virtual ~ctkDICOMDatabase();
67
68 const QSqlDatabase& database() const;
69 const QString lastError() const;
70 const QString databaseFilename() const;
71
76 const QString databaseDirectory() const;
77
81 bool isOpen() const;
82
88 bool isInMemory() const;
89
92 Q_INVOKABLE void setThumbnailGenerator(ctkDICOMAbstractThumbnailGenerator* generator);
95 Q_INVOKABLE ctkDICOMAbstractThumbnailGenerator* thumbnailGenerator();
96
111 Q_INVOKABLE virtual void openDatabase(const QString databaseFile,
112 const QString& connectionName = "");
113
116 Q_INVOKABLE void closeDatabase();
119 Q_INVOKABLE bool initializeDatabase(const char* schemaFile = ":/dicom/dicom-schema.sql");
120
122 Q_INVOKABLE bool updateSchema(const char* schemaFile = ":/dicom/dicom-schema.sql");
123
126 Q_INVOKABLE bool updateSchemaIfNeeded(const char* schemaFile = ":/dicom/dicom-schema.sql");
127
129 Q_INVOKABLE QString schemaVersion();
130
133 Q_INVOKABLE QString schemaVersionLoaded();
134
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);
152
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);
164
175 void setTagsToPrecache(const QStringList tags);
176 const QStringList tagsToPrecache();
177
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() );
201
212 Q_INVOKABLE void prepareInsert();
213
215 Q_INVOKABLE bool fileExistsAndUpToDate(const QString& filePath);
216
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();
223
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);
239
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);
260
261
262Q_SIGNALS:
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();
289
290protected:
291 QScopedPointer<ctkDICOMDatabasePrivate> d_ptr;
292
293
294
295private:
296 Q_DECLARE_PRIVATE(ctkDICOMDatabase);
297 Q_DISABLE_COPY(ctkDICOMDatabase);
298};
299
300#endif
301