122
bool QueryServer(DcmDataset* query, DicomServer* server, IModeloDicom* pModelo, const std::string& local_aet, CallbackType callbackType) {
122
bool QueryServer(DcmDataset* query, const GNC::GCS::Ptr<DicomServer>& server, IModeloDicom* pModelo, const std::string& local_aet, CallbackType callbackType) {
123
123
if (pModelo == NULL && callbackType != CT_None) {
126
if (server == NULL) {
126
if (!server.IsValid()) {
142
142
T::SetNotificadorProgreso(m_pNotificadorProgreso);
144
LOG_DEBUG(ambitolog, "Conectando: AET = " << server->AET << ", Host = " << server->HostName << ", Puerto = " << server->Port << ", Local AET = " << local_aet << ", PDU = " << server->PDU);
144
LOG_INFO(ambitolog, "Connecting: AET = " << server->AET << ", Host = " << server->HostName << ", Puerto = " << server->Port << ", Local AET = " << local_aet << ", PDU = " << server->PDU);
145
145
CONDITION r = T::Connect(Net, server->PDU);
147
147
CONDITION c = ECC_Normal;
149
149
if (r.good() == true) {
150
LOG_DEBUG(ambitolog, "Enviando Objeto:" << std::endl << DumpDataset(query));
150
LOG_DEBUG(ambitolog, "Requesting object:" << std::endl << DumpDataset(query));
151
151
c = T::SendObject(query);
154
LOG_ERROR(ambitolog, "Error al conectar:" << r.text());
154
LOG_DEBUG(ambitolog, "Error connecting:" << r.text());
157
LOG_INFO(ambitolog, "Disconnected");
157
158
throw GIL::DICOM::PACSException(r.text());
161
LOG_ERROR(ambitolog, "Error al enviar objeto: " << c.text());
162
LOG_DEBUG(ambitolog, "Error requesting object: " << c.text());
165
LOG_INFO(ambitolog, "Disconnected");
164
166
throw GIL::DICOM::PACSException(c.text());
167
LOG_DEBUG(ambitolog, "Cerrando asociación");
170
169
DcmStack* result = T::GetResultStack();
171
170
if (r.good() && c.good() && result != NULL && result->card() > 0) {
172
LOG_DEBUG(ambitolog, "Número de resultados: " << result->card());
171
LOG_DEBUG(ambitolog, "Num results: " << result->card());
174
173
for (unsigned long i = 0; i < result->card(); ++i) {
175
174
DcmDataset* dset = new DcmDataset( *(static_cast<DcmDataset*>(result->elem(i))) );
206
LOG_ERROR(ambitolog, "Error en la conexión: " << r.text());
205
LOG_ERROR(ambitolog, "Connection error: " << r.text());
209
LOG_ERROR(ambitolog, "Error en la obtención: " << c.text());
208
LOG_ERROR(ambitolog, "Error requesting object: " << c.text());
212
LOG_INFO(ambitolog, "Disconnected");
258
void OnBuscarPacientes(DcmDataset* query, DcmDataset* dset, DicomServer* server, IModeloDicom* pModelo)
258
void OnBuscarPacientes(DcmDataset* query, DcmDataset* dset, const GNC::GCS::Ptr<DicomServer>& server, IModeloDicom* pModelo)
260
260
wxCSConv wxConv = GetConv(dset, server->GetDefaultCharset());
300
300
pModelo->InsertarPaciente(PacienteUID, PacienteNombre, PacienteFechaNacimiento, PacienteSexo);
303
void OnBuscarSeries(DcmDataset* query, DcmDataset* dset, DicomServer* server, IModeloDicom *pModelo)
303
void OnBuscarSeries(DcmDataset* query, DcmDataset* dset, const GNC::GCS::Ptr<DicomServer>& server, IModeloDicom *pModelo)
305
305
wxCSConv wxConv = GetConv(dset, server->GetDefaultCharset());
371
371
pModelo->InsertarSerie(EstudioUID, SerieUID, SerieTipo, SerieFecha, SerieHora, SerieDescripcion, SerieNumero,SerieDoctor);
374
void OnBuscarImagenes(DcmDataset* query, DcmDataset *dset, DicomServer* server, IModeloDicom* pModelo)
374
void OnBuscarImagenes(DcmDataset* query, DcmDataset *dset, const GNC::GCS::Ptr<DicomServer>& server, IModeloDicom* pModelo)
376
376
wxCSConv wxConv = GetConv(dset, server->GetDefaultCharset());
378
378
OFString OFSerieUID;
379
379
OFString OFImagenUID;
380
if (dset->findAndGetOFString(DCM_SeriesInstanceUID, OFSerieUID).bad() || dset->findAndGetOFString(DCM_SOPInstanceUID, OFImagenUID).bad()) {
380
OFString OFInstanceNumber;
381
if (dset->findAndGetOFString(DCM_SeriesInstanceUID, OFSerieUID).bad() || dset->findAndGetOFString(DCM_SOPInstanceUID, OFImagenUID).bad()
382
|| dset->findAndGetOFString(DCM_InstanceNumber, OFInstanceNumber).bad()) {
381
383
if (!dset->isEmpty()) {
382
384
LOG_ERROR(ambitolog, "El PACS no devolvió el SeriesInstanceUID o el SOPInstanceUID de la imagen. Entrada ignorada.");
402
406
ImagenUID = wxString(OFStr.c_str(), wxConv).ToUTF8();
409
if (InstanceNumber.empty()) {
411
if (query->findAndGetOFString(DCM_InstanceNumber, OFStr).good()) {
412
InstanceNumber = wxString(OFStr.c_str(), wxConv).ToUTF8();
406
pModelo->InsertarImagen(SerieUID, ImagenUID);
416
pModelo->InsertarImagen(SerieUID, ImagenUID, InstanceNumber);
410
void OnBuscarEstudios(DcmDataset* query, DcmDataset *dset, DicomServer* server, IModeloDicom *pModelo) {
420
void OnBuscarEstudios(DcmDataset* query, DcmDataset *dset, const GNC::GCS::Ptr<DicomServer>& server, IModeloDicom *pModelo) {
411
421
OFString OFEstudioUID;
412
422
if (dset->findAndGetOFString(DCM_StudyInstanceUID, OFEstudioUID).bad()) {
413
423
if (!dset->isEmpty()) {
422
432
std::string PacienteUID;
423
433
if (dset->findAndGetOFString(DCM_PatientID, OFPacienteUID).good()) {
424
434
PacienteUID = wxString(OFPacienteUID.c_str(), wxConv).ToUTF8();
436
if (query->findAndGetOFString(DCM_PatientID, OFPacienteUID).good()) {
437
PacienteUID = wxString(OFPacienteUID.c_str(), wxConv).ToUTF8();
427
441
OFString OFPacienteNombre;
486
500
EstudioDoctor = wxString(OFDoctor.c_str(), wxConv).ToUTF8();
489
if (PacienteUID.empty()) {
491
if (query->findAndGetOFString(DCM_PatientID, OFStr).good()) {
492
PacienteUID = wxString(OFStr.c_str(), wxConv).ToUTF8();
495
503
if (EstudioUID.empty()) {
497
505
if (query->findAndGetOFString(DCM_StudyInstanceUID, OFStr).good()) {