3
* $Id: icontroladorimportacionpacs.h 3665 2011-04-11 06:52:30Z tovar $
6
* Copyright 2008-10 MetaEmotion S.L. All rights reserved.
7
* http://ginkgo-cadx.com
9
* This file is licensed under LGPL v3 license.
10
* See License.txt for details
21
#include "icontroladormodulo.h"
24
#include "iproxynotificadorprogreso.h"
32
class PACSException : public std::exception {
34
PACSException(const std::string& msg, const std::string& componente="GIL/PACS", bool fatal = true) throw()
37
this->component = componente;
40
~PACSException() throw()
44
const std::string& GetComponent() const
49
const std::string& GetCause() const {
53
std::string GetFullCause() const {
57
bool IsFatal() const {
61
operator std::string () const {
62
return std::string("Excepcion en componente ") + GetComponent() + std::string(": ") + GetCause();
65
friend std::ostream& operator<<(std::ostream& out, const PACSException& ex)
67
out << (const std::string&) ex;
71
friend std::ostream& operator<<(std::ostream& out, const PACSException* ex)
84
std::string component;
88
typedef struct ContextoResultado {
90
std::string UIDPaciente;
91
std::string UIDEstudio;
92
std::list<std::string> RutaDICOM;
93
std::string ServidorPACSID;
97
inline ContextoResultado()
104
inline ~ContextoResultado()
109
class IInspectCallBack {
112
virtual void ObtenerJerarquiaInserccion(TipoJerarquia& /*lista*/)
116
virtual void Inspect(std::string& clave, std::string& desc, std::string& valor) = 0;
117
virtual void Done() = 0;
120
typedef enum TipoTransferSyntaxEnvio {
121
SendExplicitLittleEndian,
122
SendImplicitLittleEndian,
123
SendJPEG2000Lossless,
132
} TipoTransferSyntaxEnvio;
134
class EXTAPI IControladorImportacionPACS {
137
~IControladorImportacionPACS()
141
virtual IModeloDicom* BuscarPaciente(
143
const std::string& serverId,
144
const std::string& idPaciente,
145
const std::string& nombrePaciente,
146
const std::string& fechaNacimiento,
147
IModeloDicom* pModelo,
148
GNC::IProxyNotificadorProgreso* pNotificador
151
virtual IModeloDicom* BuscarEstudio(
153
const std::string& serverId,
154
const std::string& idPaciente,
155
const std::string& nombrePaciente,
156
const std::string& idEstudio,
157
const std::string& AccNumber,
158
const std::string& modalidad,
159
const std::string& fechaDesde,
160
const std::string& fechaHasta,
161
const std::string& timeFrom,
162
const std::string& timeTo,
163
const std::string& descripcionEstudio,
164
const std::string& nombreEstacion,
165
IModeloDicom* pModelo,
166
GNC::IProxyNotificadorProgreso* pNotificador
169
virtual IModeloDicom* BuscarSeries(
171
const std::string& serverId,
172
const std::string& idEstudio,
173
const std::string& idSerie,
174
IModeloDicom* pModelo,
175
GNC::IProxyNotificadorProgreso* pNotificador
178
virtual IModeloDicom* BuscarImagenes(
180
const std::string& serverId,
181
const std::string& idSerie,
182
const std::string& idImagen,
183
IModeloDicom* pModelo,
184
GNC::IProxyNotificadorProgreso* pNotificador
189
virtual bool ObtenerEstudio(
191
const std::string& serverId,
192
const std::string& uidEstudio,
193
const std::string& AccNumber,
194
IModeloDicom* pModelo,
195
GNC::IProxyNotificadorProgreso* pNotificador
198
virtual bool ObtenerSerie(
200
const std::string& serverId,
201
const std::string& uidSerie,
202
IModeloDicom* pModelo,
203
GNC::IProxyNotificadorProgreso* pNotificador
206
virtual bool ObtenerImagen(
208
const std::string& serverId,
209
const std::string& uidImagen,
210
IModeloDicom* pModelo,
211
GNC::IProxyNotificadorProgreso* pNotificador
214
virtual bool QueryRetrieve(
216
const std::string& serverId,
217
IModeloDicom* pModelo,
218
const GIL::DICOM::TipoJerarquia& base,
219
GNC::IProxyNotificadorProgreso* pNotificador
227
virtual void SubirArchivos(void* connectionKey, const std::string& serverId, const std::vector<std::string>& pathsSubida, GNC::IProxyNotificadorProgreso * pNotificador, TipoTransferSyntaxEnvio transferSyntax) =0;
229
virtual void GetConnection(void* connectionKey) = 0;
231
virtual void ReleaseConnection(void* connectionKey) = 0;
233
virtual bool LeerDicomDir(const std::string& pathDicomDir, IModeloDicom* pModelo) = 0;
235
virtual bool findAndGetTagFromFile(const std::string& ruta, unsigned short group, unsigned short element, std::string& value) = 0;
237
virtual bool EsDICOM(const std::string& path, bool accept_dicomdir, bool accept_dicomfile) = 0;
239
/* Devuelve la ruta en disco (asignada a la variable ruta pasada por referencia) en base a los IDs unicos de estudio y serie de una serie de imagenes obtenida*/
240
virtual bool GetRutaImagen(const std::string& uidPaciente, const std::string& uidEstudio, const std::string& uidSerie, const std::string& uidImagen, std::string& ruta, bool crearDirectorios = true) = 0;
242
void DumpFileElements(const std::string& rutaFichero, IInspectCallBack* callback);
244
//region "Metodos de Dicomizacion"
246
virtual IDICOMImg2DCM* CrearInstanciaDeImportacion() = 0;
248
virtual void LiberarInstanciaDeImportacion(IDICOMImg2DCM* instancia) = 0;
252
//region "Metodos de carga/almacenamiento de DICOMS"
254
virtual IDICOMManager* CrearInstanciaDeDICOMManager() = 0;
256
virtual void LiberarInstanciaDeDICOMManager(IDICOMManager* instancia) = 0;
262
IControladorImportacionPACS()