35 #include <QDomDocument>
39 #include <QTextStream>
40 #include <QApplication>
50 #include <vtkPolyData.h>
51 #include <vtkPointData.h>
66 mDataManager(dataManager),
81 return mSession->getRootFolder();
86 return mSession->isValid();
89 void PatientData::onCleared()
91 mDataManager->clear();
94 void PatientData::onSessionLoad(QDomElement &node)
96 XMLNodeParser root(node);
97 QDomElement dataManagerNode = root.descend(
"managers/datamanager").node().toElement();
99 if (!dataManagerNode.isNull())
100 mDataManager->parseXml(dataManagerNode, mSession->getRootFolder());
103 void PatientData::onSessionSave(QDomElement &node)
105 XMLNodeAdder root(node);
106 QDomElement managerNode = root.descend(
"managers").node().toElement();
108 mDataManager->addXml(managerNode);
113 for (DataManager::ImagesMap::iterator iter = images.begin(); iter != images.end(); ++iter)
116 mSession->getRootFolder() +
"/" + iter->second->getFilename());
117 customReader->setTransform(iter->second->get_rMd());
124 if (
settings()->value(
"Automation/autoSave").toBool())
130 QString targetFolder = mSession->getRootFolder() +
"/Export/"
134 for (DataManager::ImagesMap::iterator iter = images.begin(); iter != images.end(); ++iter)
136 iter->second->save(targetFolder);
140 for (DataManager::MeshMap::iterator iter = meshes.begin(); iter != meshes.end(); ++iter)
150 mesh = mDataManager->getDataFactory()->createSpecific<
Mesh>(mesh->getUid(), mesh->getName());
152 mesh->setFilename(
"Images");
153 mesh->save(targetFolder);
156 report(
"Exported patient data to " + targetFolder +
".");
161 if (fileName.isEmpty())
163 QString text =
"Import canceled";
165 infoText =
"<font color=red>" + text +
"</font>";
169 QFileInfo fileInfo(fileName);
173 if (mDataManager->getData(uid))
175 QString text =
"Data with uid " + uid +
" already exists. Import canceled.";
177 infoText =
"<font color=red>" + text +
"</font>";
182 DataPtr data = mDataManager->loadData(uid, fileName);
185 QString text =
"Error with data file: " + fileName +
" Import canceled.";
187 infoText =
"<font color=red>" + text +
"</font>";
190 data->setAcquisitionTime(QDateTime::currentDateTime());
192 data->save(mSession->getRootFolder());
195 infoText = infoText.split(
"<br>", QString::SkipEmptyParts).join(
"<br>");
QString getActivePatientFolder() const
void isLoading(QDomElement &root)
emitted while loading a session. Xml storage is available, getRootFolder() is set to loaded value...
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
cxResource_EXPORT Transform3D createTransformFromReferenceToExternal(PATIENT_COORDINATE_SYSTEM external)
void exportPatient(PATIENT_COORDINATE_SYSTEM externalSpace)
std::map< QString, MeshPtr > MeshMap
QString timestampSecondsFormat()
DataPtr importData(QString fileName, QString &infoText)
Import data into CustusX.
boost::shared_ptr< class DataManager > DataServicePtr
void sessionChanged()
emitted after change to a new session (new or loaded or cleared)
boost::shared_ptr< class Data > DataPtr
boost::shared_ptr< class CustomMetaImage > CustomMetaImagePtr
vtkSmartPointer< class vtkPolyData > vtkPolyDataPtr
void reportWarning(QString msg)
void setVtkPolyData(const vtkPolyDataPtr &polyData)
std::map< QString, ImagePtr > ImagesMap
Settings * settings()
Shortcut for accessing the settings instance.
void cleared()
emitted when session is cleared, before isLoading is called
QString changeExtension(QString name, QString ext)
void removeData(QString uid)
PatientData(DataServicePtr dataManager, SessionStorageServicePtr session)
bool isPatientValid() const
boost::shared_ptr< class Mesh > MeshPtr
void isSaving(QDomElement &root)
xml storage is available
boost::shared_ptr< class SessionStorageService > SessionStorageServicePtr