18
18
#include <wx/textfile.h>
19
19
#include <wx/dir.h>
20
20
#include <main/controllers/configurationcontroller.h>
21
#include <main/controllers/controladorpermisos.h>
21
22
#include <main/entorno.h>
22
23
#include <api/globals.h>
28
this->useAbortMessage = this->useCompletedMessage = this->useInProgressMessage = false;
29
this->useDICOMMPPS = true;
31
GNC::GCS::Permisos::EstadoPermiso perm = GNC::GCS::IControladorPermisos::Instance()->Get("gnkwl.messages", "inprogress");
33
this->inProgressTemplate = perm.GetRawValue();
35
perm = GNC::GCS::IControladorPermisos::Instance()->Get("gnkwl.messages", "completed");
37
this->completedTemplate = perm.GetRawValue();
39
perm = GNC::GCS::IControladorPermisos::Instance()->Get("gnkwl.messages", "abort");
41
this->abortTemplate = perm.GetRawValue();
45
WLConfig::WLConfig( const WLConfig& o)
50
WLConfig& WLConfig::operator=(const WLConfig& o)
52
this->abortTemplate = o.abortTemplate;
53
this->completedTemplate = o.completedTemplate;
54
this->inProgressTemplate = o.inProgressTemplate;
55
this->useAbortMessage = o.useAbortMessage;
56
this->useCompletedMessage = o.useCompletedMessage;
57
this->useInProgressMessage = o.useInProgressMessage;
58
this->useDICOMMPPS = o.useDICOMMPPS;
68
DicomServer::DicomServer(const std::string& ID, const std::string& AET, const std::string& HostName, int port, int Lossy, bool isDefault, int PDU, bool useTLS, const std::string& pacsUser, const std::string& pacsPass, TRetrieveMethod retrieveMethod, const std::string& wadoURI, bool retrSeries, bool reuseConnection, bool verify, const std::string& cert, const std::string& key, const std::string& defaultCharset) {
71
this->HostName = HostName;
74
this->isDefault = isDefault;
77
this->reuseConnection = reuseConnection;
78
this->retrieveSeries = retrSeries;
79
this->retrieveMethod = retrieveMethod;
80
this->wadoURI = wadoURI;
82
this->useTLS = useTLS;
83
this->pacsUser = pacsUser;
84
this->pacsPass = pacsPass;
85
this->verifyCredentials = verify;
86
this->certificate = cert;
87
this->privateKey = key;
88
this->defaultCharset = defaultCharset;
91
/**local server constructor*/
92
DicomServer::DicomServer(const std::string& ID, const std::string& AET, const std::string& HostName, int port, int PDU)
96
this->HostName = HostName;
103
DicomServer::DicomServer()
105
this->isDefault = false;
108
DicomServer::DicomServer( const DicomServer& o) {
112
DicomServer::~DicomServer()
115
DicomServer& DicomServer::operator=(const DicomServer& o)
119
this->HostName = o.HostName;
121
this->Lossy = o.Lossy;
122
this->isDefault = o.isDefault;
124
this->useTLS = o.useTLS;
125
this->pacsUser = o.pacsUser;
126
this->pacsPass = o.pacsPass;
127
this->retrieveMethod = o.retrieveMethod;
128
this->wadoURI = o.wadoURI;
129
this->reuseConnection = o.reuseConnection;
130
this->retrieveSeries = o.retrieveSeries;
131
this->verifyCredentials = o.verifyCredentials;
132
this->certificate = o.certificate;
133
this->privateKey = o.privateKey;
134
this->defaultCharset = o.defaultCharset;
135
this->wlConfig = o.wlConfig;
139
const std::string& DicomServer::GetID()
144
const std::string& DicomServer::GetAET()
149
const std::string& DicomServer::GetHostName()
154
int DicomServer::GetPort()
159
int DicomServer::GetLossy()
164
bool DicomServer::GetIsDefault()
169
int DicomServer::GetPDU()
174
bool DicomServer::GetUseTLS()
179
const std::string& DicomServer::GetPACSUser()
184
const std::string& DicomServer::GetPACSPass()
189
DicomServer::TRetrieveMethod DicomServer::GetRetrieveMethod()
191
return retrieveMethod;
194
bool DicomServer::GetRetrieveSeries()
196
return retrieveSeries;
199
bool DicomServer::GetReuseConnection()
201
return reuseConnection;
204
bool DicomServer::GetverifyCredentials()
206
return verifyCredentials;
209
const std::string& DicomServer::GetCertificate()
214
const std::string& DicomServer::GetPrivateKey()
219
const std::string& DicomServer::GetDefaultCharset()
221
return defaultCharset;
224
const std::string& DicomServer::GetWADOURI() {
228
WLConfig& DicomServer::GetWlConfig()
235
/////////////////////////////////////////////////////////////////////
24
239
DicomServerList* DicomServerList::m_pInstance = 0;
26
241
DicomServerList::DicomServerList()
30
lastInsertedHolder = NULL;
32
//std::cout << "DicomServerList construido" << std::endl;
35
246
DicomServerList::~DicomServerList()
37
//std::cout << "DicomServerList destruyendose" << std::endl;
38
DicomServerHolder* holder = NULL;
39
DicomServerHolder* tempHolder = NULL;
40
for (holder = serverHolders; holder != NULL;) {
41
tempHolder = holder->next;
46
if (localServer != NULL) {
51
lastInsertedHolder = NULL;
52
//std::cout << "DicomServerList destruido" << std::endl;
248
GNC::GCS::ILocker lock(this);
55
252
DicomServerList* DicomServerList::Instance()
72
269
void DicomServerList::AddServer(const DicomServer& newServer, bool isDefault)
271
GNC::GCS::ILocker lock(this);
75
for (DicomServerHolder* sl = GetList(); sl != NULL; sl = sl->next) {
76
sl->server.isDefault = false;
273
for (TServerMap::iterator it = ServerMap.begin(); it != ServerMap.end(); ++it) {
274
(*it).second->isDefault = false;
79
if (TieneServer(newServer.ID)) {
80
DicomServer* server = GetServer(newServer.ID);
82
server->isDefault = isDefault;
277
if (ServerMap.find(newServer.ID) != ServerMap.end()) {
278
*ServerMap[newServer.ID] = newServer;
279
ServerMap[newServer.ID]->isDefault = isDefault;
85
DicomServerHolder* newServerHolder = new DicomServerHolder(newServer.ID, newServer.AET, newServer.HostName, newServer.Port, newServer.Lossy, newServer.isDefault, newServer.PDU, newServer.useTLS, newServer.pacsUser, newServer.pacsPass, newServer.retrieveWithMove, newServer.retrieveSeries, newServer.reuseConnection, newServer.verifyCredentials, newServer.certificate, newServer.privateKey, newServer.defaultCharset);
86
newServerHolder->server.isDefault = isDefault;
87
if (serverHolders == NULL) {
88
lastInsertedHolder = serverHolders = newServerHolder;
90
lastInsertedHolder->next = newServerHolder;
91
lastInsertedHolder = lastInsertedHolder->next;
282
GNC::GCS::Ptr<DicomServer> pNewServer(new DicomServer(newServer));
283
pNewServer->isDefault = isDefault;
284
ServerMap[newServer.ID] = pNewServer;
97
288
bool DicomServerList::TieneServer(const std::string& ID)
99
DicomServerHolder* it;
103
for (it = serverHolders; it != NULL && !found; it = it->next) {
104
if (it->server.ID == ID) {
112
DicomServer* DicomServerList::GetServer(const std::string& ID)
114
DicomServer* server = NULL;
116
DicomServerHolder* it;
120
for (it = serverHolders; it != NULL && !found; it = it->next) {
121
if (it->server.ID == ID) {
123
server = &it->server;
127
if (server == NULL) {
128
throw GinkgoNoServerFoundException();
134
DicomServer* DicomServerList::GetLocalServer()
136
if (localServer == NULL) {
137
throw GinkgoNoServerFoundException();
142
DicomServerHolder* DicomServerList::GetList()
144
return serverHolders;
147
DicomServer* DicomServerList::GetDefaultServer()
149
if (serverHolders != NULL) {
150
for (DicomServerHolder* it = serverHolders; it != NULL; it = it->next) {
151
if (it->server.isDefault) {
156
if (serverHolders != NULL) {
157
return &serverHolders->server;
290
GNC::GCS::Ptr<DicomServer> server = GetServer(ID);
291
return server.IsValid();
294
const GNC::GCS::Ptr<DicomServer>& DicomServerList::GetServer(const std::string& ID)
296
GNC::GCS::ILocker lock(this);
297
if (ServerMap.find(ID) != ServerMap.end()) {
298
return ServerMap[ID];
300
GNC::GCS::Ptr<DicomServer> server;
301
throw GinkgoNoServerFoundException();
305
const GNC::GCS::Ptr<DicomServer>& DicomServerList::GetLocalServer()
307
if (!LocalServer.IsValid()) {
308
throw GinkgoNoServerFoundException();
313
bool DicomServerList::Empty()
315
return ServerMap.empty();
318
DicomServerList::TServerList DicomServerList::GetServerList()
320
GNC::GCS::ILocker lock(this);
321
TServerList listOfServers;
322
for (TServerMap::iterator it = ServerMap.begin(); it != ServerMap.end(); ++it) {
323
listOfServers.push_back((*it).second);
325
return listOfServers;
328
const GNC::GCS::Ptr<DicomServer>& DicomServerList::GetDefaultServer()
330
GNC::GCS::ILocker lock(this);
331
for (TServerMap::iterator it = ServerMap.begin(); it != ServerMap.end(); ++it) {
332
if ((*it).second->isDefault) {
336
if (!ServerMap.empty()) {
337
return (*ServerMap.begin()).second;
339
throw GinkgoNoServerFoundException();
163
343
void DicomServerList::SetDefaultServer(const std::string& ID)
165
if (serverHolders != NULL) {
166
for (DicomServerHolder* it = serverHolders; it != NULL; it = it->next) {
167
if (it->server.ID == ID) {
168
it->server.isDefault = true;
170
it->server.isDefault = false;
345
GNC::GCS::ILocker lock(this);
346
for (TServerMap::iterator it = ServerMap.begin(); it != ServerMap.end(); ++it) {
347
if ((*it).second->ID != ID) {
348
(*it).second->isDefault = false;
350
(*it).second->isDefault = true;
176
DicomServer* DicomServerList::GetFirst()
178
DicomServer* server = NULL;
179
if (serverHolders != NULL) {
180
server = &serverHolders->server;
185
DicomServer* DicomServerList::GetLast()
187
return &lastInsertedHolder->server;
190
355
void DicomServerList::Reload()
192
DicomServerHolder* holder = NULL;
193
DicomServerHolder* tempHolder = NULL;
194
for (holder = serverHolders; holder != NULL;) {
195
tempHolder = holder->next;
200
if (localServer != NULL) {
204
serverHolders = NULL;
205
lastInsertedHolder = NULL;
357
GNC::GCS::ILocker lock(this);
207
360
GNC::GCS::ConfigurationController::TListGroups servers;
208
361
GNC::GCS::ConfigurationController::Instance()->readGroupGeneral("/GinkgoCore/PACS/Servidores", servers);
218
371
values.readIntValue("Puerto", port);
219
372
values.readIntValue("PDU", pdu, DEFAULT_PDU_LENGTH);
221
DicomServer server(id, aet, host, port, 0, false, pdu, false, "", "", false, false, true, false, "", "", "");
222
values.readBoolValue("isDefault",server.isDefault,false);
223
values.readBoolValue("useTLS",server.useTLS,false);
224
values.readStringValue("pacsUser", server.pacsUser);
225
values.readStringValue("pacsPass", server.pacsPass);
226
values.readBoolValue("verifyCredentials",server.verifyCredentials,false);
227
values.readStringValue("certificate", server.certificate);
228
values.readStringValue("privateKey", server.privateKey);
229
values.readBoolValue("retrieveWithMove",server.retrieveWithMove,true);
230
values.readBoolValue("reuseConnection", server.reuseConnection, false);
231
values.readBoolValue("retrieveSeries",server.retrieveSeries,true);
232
values.readStringValue("defaultCharset", server.defaultCharset, "ISO_IR 100");
234
AddServer(server, server.isDefault);
235
existDefault = existDefault || server.isDefault;
239
if (serverHolders != NULL) {
240
serverHolders->server.isDefault = true;
374
GNC::GCS::Ptr<DicomServer> server(new DicomServer(id, aet, host, port, pdu));
375
values.readBoolValue("isDefault",server->isDefault,false);
376
values.readBoolValue("useTLS",server->useTLS,false);
377
values.readStringValue("pacsUser", server->pacsUser);
378
values.readStringValue("pacsPass", server->pacsPass);
379
values.readBoolValue("verifyCredentials",server->verifyCredentials,false);
380
values.readStringValue("certificate", server->certificate);
381
values.readStringValue("privateKey", server->privateKey);
383
if (values.readIntValue("retrieveMethod", tmpInt)) {
384
server->retrieveMethod = (DicomServer::TRetrieveMethod)tmpInt;
386
//retro compatibility
388
values.readBoolValue("retrieveWithMove",tmpBool,true);
390
server->retrieveMethod = DicomServer::MOVE;
392
server->retrieveMethod = DicomServer::GET;
396
values.readStringValue("wadoURI", server->wadoURI, "");
397
values.readBoolValue("reuseConnection", server->reuseConnection, false);
398
values.readBoolValue("retrieveSeries",server->retrieveSeries,true);
399
values.readStringValue("defaultCharset", server->defaultCharset, "ISO_IR 100");
402
values.readBoolValue("useDICOMMPPS",server->GetWlConfig().useDICOMMPPS, server->GetWlConfig().useDICOMMPPS);
403
values.readBoolValue("useAbortMessage",server->GetWlConfig().useAbortMessage, server->GetWlConfig().useAbortMessage);
404
values.readBoolValue("useCompletedMessage",server->GetWlConfig().useCompletedMessage, server->GetWlConfig().useCompletedMessage);
405
values.readBoolValue("useInProgressMessage",server->GetWlConfig().useInProgressMessage, server->GetWlConfig().useInProgressMessage);
406
values.readStringValue("abortTemplate",server->GetWlConfig().abortTemplate, server->GetWlConfig().abortTemplate);
407
values.readStringValue("completedTemplate",server->GetWlConfig().completedTemplate, server->GetWlConfig().completedTemplate);
408
values.readStringValue("inProgressTemplate",server->GetWlConfig().inProgressTemplate, server->GetWlConfig().inProgressTemplate);
411
ServerMap[server->ID] = server;
412
existDefault = existDefault || server->isDefault;
415
if (!existDefault && !ServerMap.empty()) {
416
ServerMap.begin()->second->isDefault = true;
247
422
GNC::GCS::ConfigurationController::Instance()->readIntGeneral("/GinkgoCore/PACS/Local", "Puerto", port, 11112);
248
423
std::string localAet = GNC::Entorno::Instance()->GetDicomLocalAET();
250
localServer = new DicomServer("ginkgo",localAet, "localhost", port, 0, false, 16384,false, "", "", false, true,false, false, "", "", "");
251
GNC::GCS::ConfigurationController::Instance()->readBoolGeneral("/GinkgoCore/PACS/Local", "useTLS", localServer->useTLS, false);
252
GNC::GCS::ConfigurationController::Instance()->readBoolGeneral("/GinkgoCore/PACS/Local", "verifyCredentials", localServer->verifyCredentials, false);
425
LocalServer = new DicomServer("ginkgo",localAet, "localhost", port, 16384);
426
GNC::GCS::ConfigurationController::Instance()->readBoolGeneral("/GinkgoCore/PACS/Local", "useTLS", LocalServer->useTLS, false);
427
GNC::GCS::ConfigurationController::Instance()->readBoolGeneral("/GinkgoCore/PACS/Local", "verifyCredentials", LocalServer->verifyCredentials, false);
253
428
#ifdef GINKGO_PRIVATE_KEY
254
localServer->privateKey = GINKGO_PRIVATE_KEY;
429
LocalServer->privateKey = GINKGO_PRIVATE_KEY;
256
GNC::GCS::ConfigurationController::Instance()->readStringGeneral("/GinkgoCore/PACS/Local", "privateKey", localServer->privateKey);
431
GNC::GCS::ConfigurationController::Instance()->readStringGeneral("/GinkgoCore/PACS/Local", "privateKey", LocalServer->privateKey);
258
433
#ifdef GINKGO_PUBLIC_KEY
259
localServer->certificate = GINKGO_PUBLIC_KEY;
434
LocalServer->certificate = GINKGO_PUBLIC_KEY;
261
GNC::GCS::ConfigurationController::Instance()->readStringGeneral("/GinkgoCore/PACS/Local", "certificate", localServer->certificate);
436
GNC::GCS::ConfigurationController::Instance()->readStringGeneral("/GinkgoCore/PACS/Local", "certificate", LocalServer->certificate);