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)
112 const QString& connectionName =
"");
122 Q_INVOKABLE
bool updateSchema(
const char* schemaFile =
":/dicom/dicom-schema.sql");
194 bool storeFile,
bool generateThumbnail);
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() );
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);
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);
291 QScopedPointer<ctkDICOMDatabasePrivate>
d_ptr;
Abstract thumbnail generator class.
Q_INVOKABLE QString headerValue(const QString key)
Q_INVOKABLE bool removeSeries(const QString &seriesInstanceUID)
Q_INVOKABLE QHash< QString, QString > descriptionsForFile(QString fileName)
Q_INVOKABLE QString fileValue(const QString fileName, const QString tag)
Q_INVOKABLE void insert(const ctkDICOMItem &ctkDataset, bool storeFile, bool generateThumbnail)
void patientAdded(int, QString, QString, QString)
void schemaUpdateProgress(QString)
Q_INVOKABLE QString descriptionForStudy(const QString studyUID)
const QString databaseFilename() const
void seriesAdded(QString)
Q_INVOKABLE QString groupElementToTag(const unsigned short &group, const unsigned short &element)
const QStringList tagsToPrecache()
Q_INVOKABLE QString instanceForFile(const QString fileName)
Q_INVOKABLE void closeDatabase()
close the database. It must not be used afterwards.
Q_INVOKABLE void loadFileHeader(const QString fileName)
Q_INVOKABLE QStringList allFiles()
Q_INVOKABLE QString schemaVersionLoaded()
Q_INVOKABLE bool fileExistsAndUpToDate(const QString &filePath)
Check if file is already in database and up-to-date.
Q_INVOKABLE bool cacheTag(const QString sopInstanceUID, const QString tag, const QString value)
Insert an instance tag's value into to the cache.
Q_INVOKABLE bool cleanup()
Q_INVOKABLE QStringList seriesForStudy(const QString studyUID)
Q_INVOKABLE QStringList filesForSeries(const QString seriesUID)
Q_INVOKABLE QString fileForInstance(const QString sopInstanceUID)
void databaseChanged()
Indicates that an in-memory database has been updated.
Q_INVOKABLE QString cachedTag(const QString sopInstanceUID, const QString tag)
Return the value of a cached tag.
const QSqlDatabase & database() const
ctkDICOMDatabase(QObject *parent=0)
Q_INVOKABLE void setThumbnailGenerator(ctkDICOMAbstractThumbnailGenerator *generator)
set thumbnail generator object
Q_INVOKABLE QString seriesForFile(QString fileName)
Q_INVOKABLE bool removePatient(const QString &patientID)
void insert(DcmItem *item, bool storeFile=true, bool generateThumbnail=true)
void instanceAdded(QString)
const QString lastError() const
void setTagsToPrecache(const QStringList tags)
application-defined tags of interest This list of tags is added to the internal tag cache during impo...
Q_INVOKABLE bool cacheTags(const QStringList sopInstanceUIDs, const QStringList tags, const QStringList values)
Insert lists of tags into the cache as a batch query operation.
Q_INVOKABLE bool updateSchemaIfNeeded(const char *schemaFile=":/dicom/dicom-schema.sql")
Q_INVOKABLE void loadInstanceHeader(const QString sopInstanceUID)
load the header from a file and allow access to elements
Q_INVOKABLE bool removeStudy(const QString &studyInstanceUID)
Q_INVOKABLE void insert(const QString &filePath, bool storeFile=true, bool generateThumbnail=true, bool createHierarchy=true, const QString &destinationDirectoryName=QString())
Q_INVOKABLE QString nameForPatient(const QString patientUID)
Q_INVOKABLE QString fileValue(const QString fileName, const unsigned short group, const unsigned short element)
Q_INVOKABLE QString descriptionForSeries(const QString seriesUID)
virtual ~ctkDICOMDatabase()
const QString databaseDirectory() const
Q_INVOKABLE void prepareInsert()
void schemaUpdated()
Indicates schema update finished.
void schemaUpdateStarted(int)
Indicates that the schema is about to be updated and how many files will be processed.
QScopedPointer< ctkDICOMDatabasePrivate > d_ptr
Q_INVOKABLE bool updateSchema(const char *schemaFile=":/dicom/dicom-schema.sql")
updates the database schema and reinserts all existing files
Q_INVOKABLE ctkDICOMAbstractThumbnailGenerator * thumbnailGenerator()
get thumbnail genrator object
void schemaUpdateProgress(int)
Indicates progress in updating schema (int is file number, string is file name)
Q_INVOKABLE QString instanceValue(const QString sopInstanceUID, const QString tag)
access element values for given instance
ctkDICOMDatabase(QString databaseFile)
Q_INVOKABLE QString schemaVersion()
returns the schema version needed by the current version of this code
Q_INVOKABLE QStringList patients()
database accessors
Q_INVOKABLE QStringList headerKeys()
Q_INVOKABLE QString patientForStudy(QString studyUID)
Q_INVOKABLE bool tagToGroupElement(const QString tag, unsigned short &group, unsigned short &element)
Q_INVOKABLE QString instanceValue(const QString sopInstanceUID, const unsigned short group, const unsigned short element)
virtual Q_INVOKABLE void openDatabase(const QString databaseFile, const QString &connectionName="")
Q_INVOKABLE bool tagCacheExists()
store values of previously requested instance elements These are meant to be internal methods used by...
Q_INVOKABLE QDateTime insertDateTimeForInstance(const QString fileName)
Q_INVOKABLE bool initializeDatabase(const char *schemaFile=":/dicom/dicom-schema.sql")
delete all data and (re-)initialize the database.
Q_INVOKABLE QStringList studiesForPatient(const QString patientUID)
Q_INVOKABLE QString studyForSeries(QString seriesUID)
Q_INVOKABLE QStringList instancesForSeries(const QString seriesUID)
Q_INVOKABLE bool initializeTagCache()
Create a tagCache in the current database. Delete the existing one if it exists.