Skip to content
This repository was archived by the owner on Sep 10, 2021. It is now read-only.

Commit 64961b7

Browse files
author
Jamie Snape
committed
Migrate dicomserver module settings to database
1 parent 40a1998 commit 64961b7

File tree

18 files changed

+577
-565
lines changed

18 files changed

+577
-565
lines changed

modules/dicomserver/configs/module.ini

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,4 @@ description = "Receive and upload DICOM files and provide DICOM query/retrieve s
66
category = "DICOM"
77
dependencies = api,dicomextractor
88
uuid = "f850b92d-3f22-4560-bca6-dfbade51a181"
9-
version = "1.0.1"
10-
11-
; uploader DCMTK command
12-
dcm2xml = "dcm2xml"
13-
storescp = "storescp"
14-
dcmqrscp = "dcmqrscp"
15-
dcmqridx = "dcmqridx"
16-
; uploader reception directory
17-
receptiondir = ""
18-
; storescp configuration
19-
storescp_port = "55555"
20-
; seconds
21-
storescp_study_timeout = "15"
22-
; pydas destnation folder
23-
pydas_dest_folder = "Public"
24-
; dcmqrscp configuration
25-
dcmqrscp_port = "9885"
26-
; server AE title
27-
server_ae_title = "MIDAS_PACS"
28-
; remote AEs
29-
peer_aes = ""
9+
version = "1.1.0"

modules/dicomserver/constant/module.php

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,37 @@
1818
limitations under the License.
1919
=========================================================================*/
2020

21+
define('MIDAS_DICOMSERVER_DCM2XML_COMMAND_KEY', 'dcm2xml_command');
22+
define('MIDAS_DICOMSERVER_DCM2XML_COMMAND_DEFAULT_VALUE', 'dcm2xml');
23+
define('MIDAS_DICOMSERVER_STORESCP_COMMAND_KEY', 'storescp_command');
24+
define('MIDAS_DICOMSERVER_STORESCP_COMMAND_DEFAULT_VALUE', 'storescp');
25+
define('MIDAS_DICOMSERVER_STORESCP_PORT_KEY', 'storescp_port');
26+
define('MIDAS_DICOMSERVER_STORESCP_PORT_DEFAULT_VALUE', 55555);
27+
define('MIDAS_DICOMSERVER_STORESCP_STUDY_TIMEOUT_KEY', 'storescp_study_timeout');
28+
define('MIDAS_DICOMSERVER_STORESCP_STUDY_TIMEOUT_DEFAULT_VALUE', 15);
29+
define('MIDAS_DICOMSERVER_RECEPTION_DIRECTORY_KEY', 'reception_directory');
30+
define('MIDAS_DICOMSERVER_RECEPTION_DIRECTORY_DEFAULT_VALUE', '');
31+
define('MIDAS_DICOMSERVER_DESTINATION_FOLDER_KEY', 'destination_folder');
32+
define('MIDAS_DICOMSERVER_DESTINATION_FOLDER_DEFAULT_VALUE', 'Public');
33+
define('MIDAS_DICOMSERVER_DCMQRSCP_COMMAND_KEY', 'dcmqrscp_command');
34+
define('MIDAS_DICOMSERVER_DCMQRSCP_COMMAND_DEFAULT_VALUE', 'dcmqrscp');
35+
define('MIDAS_DICOMSERVER_DCMQRSCP_PORT_KEY', 'dcmqrscp_port');
36+
define('MIDAS_DICOMSERVER_DCMQRSCP_PORT_DEFAULT_VALUE', 9885);
37+
define('MIDAS_DICOMSERVER_DCMQRIDX_COMMAND_KEY', 'dcmqridx_command');
38+
define('MIDAS_DICOMSERVER_DCMQRIDX_COMMAND_DEFAULT_VALUE', 'dcmqridx');
39+
define('MIDAS_DICOMSERVER_SERVER_AE_TITLE_KEY', 'server_ae_title');
40+
define('MIDAS_DICOMSERVER_SERVER_AE_TITLE_DEFAULT_VALUE', 'MIDAS_PACS');
41+
define('MIDAS_DICOMSERVER_PEER_AES_KEY', 'peer_aes');
42+
define('MIDAS_DICOMSERVER_PEER_AES_DEFAULT_VALUE', '');
43+
2144
// server status
22-
define('MIDAS_DICOM_STORESCP_IS_RUNNING', 1);
23-
define('MIDAS_DICOM_DCMQRSCP_IS_RUNNING', 2);
24-
define('MIDAS_DICOM_SERVER_NOT_RUNNING', 0);
25-
define('MIDAS_DICOM_SERVER_NOT_SUPPORTED', -1);
45+
define('MIDAS_DICOMSERVER_STORESCP_IS_RUNNING', 1);
46+
define('MIDAS_DICOMSERVER_DCMQRSCP_IS_RUNNING', 2);
47+
define('MIDAS_DICOMSERVER_SERVER_NOT_RUNNING', 0);
48+
define('MIDAS_DICOMSERVER_SERVER_NOT_SUPPORTED', -1);
2649

2750
// default subdirectories and files
28-
define('LOG_DIR', '/logs');
29-
define('PROCESSING_DIR', '/processing');
30-
define('PACS_DIR', '/pacs');
31-
define('DCMQRSCP_CFG_FILE', '/dcmqrscp_midas.cfg');
51+
define('MIDAS_DICOMSERVER_LOGS_DIRECTORY', '/logs');
52+
define('MIDAS_DICOMSERVER_PROCESSING_DIRECTORY', '/processing');
53+
define('MIDAS_DICOMSERVER_PACS_DIRECTORY', '/pacs');
54+
define('MIDAS_DICOMSERVER_DCMQRSCP_CFG_FILE', '/dcmqrscp_midas.cfg');
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
<?php
2+
/*=========================================================================
3+
MIDAS Server
4+
Copyright (c) Kitware SAS. 26 rue Louis Guérin. 69100 Villeurbanne, FRANCE
5+
All rights reserved.
6+
More information http://www.kitware.com
7+
8+
Licensed under the Apache License, Version 2.0 (the "License");
9+
you may not use this file except in compliance with the License.
10+
You may obtain a copy of the License at
11+
12+
http://www.apache.org/licenses/LICENSE-2.0.txt
13+
14+
Unless required by applicable law or agreed to in writing, software
15+
distributed under the License is distributed on an "AS IS" BASIS,
16+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17+
See the License for the specific language governing permissions and
18+
limitations under the License.
19+
=========================================================================*/
20+
21+
/** Admin controller for the dicomserver module. */
22+
class Dicomserver_AdminController extends Dicomserver_AppController
23+
{
24+
/** @var array */
25+
public $_models = array('Setting');
26+
27+
/** @var array */
28+
public $_moduleComponents = array('Server');
29+
30+
/** Index action */
31+
public function indexAction()
32+
{
33+
$this->requireAdminPrivileges();
34+
35+
$this->view->pageTitle = 'DICOM Server Module Configuration';
36+
$form = new Dicomserver_Form_Admin();
37+
38+
if ($this->getRequest()->isPost()) {
39+
$data = $this->getRequest()->getPost();
40+
41+
if ($form->isValid($data)) {
42+
$values = $form->getValues();
43+
44+
foreach ($values as $key => $value) {
45+
$this->Setting->setConfig($key, $value, $this->moduleName);
46+
}
47+
}
48+
49+
$form->populate($data);
50+
} else {
51+
$elements = $form->getElements();
52+
53+
foreach ($elements as $element) {
54+
$name = $element->getName();
55+
56+
if ($name != 'csrf' && $name !== 'submit') {
57+
$value = $this->Setting->getValueByName($name, $this->moduleName);
58+
59+
if (!is_null($value)) {
60+
$form->setDefault($name, $value);
61+
}
62+
}
63+
}
64+
}
65+
66+
$this->view->form = $form;
67+
68+
$dashboard = $this->ModuleComponent->Server->isDICOMServerWorking();
69+
unset($dashboard['Status']);
70+
$this->view->dashboard = $dashboard;
71+
session_start();
72+
}
73+
}

modules/dicomserver/controllers/ConfigController.php

Lines changed: 0 additions & 96 deletions
This file was deleted.

modules/dicomserver/controllers/components/ApiserverComponent.php

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public function start($args)
5858
$status_args['dcmqrscp_cmd'] = $args['dcmqrscp_cmd'];
5959
}
6060
$running_status = $this->status($status_args);
61-
if ($running_status['status'] > MIDAS_DICOM_SERVER_NOT_RUNNING && !array_key_exists('get_command', $args)
61+
if ($running_status['status'] > MIDAS_DICOMSERVER_SERVER_NOT_RUNNING && !array_key_exists('get_command', $args)
6262
) {
6363
throw new Exception(
6464
'At least one DICOM service is already running. Please stop all services first before start them again!',
@@ -105,19 +105,19 @@ public function start($args)
105105
$serverComponent = MidasLoader::loadComponent('Server', 'dicomserver');
106106
$incoming_dir = $serverComponent->getDefaultReceptionDir();
107107
}
108-
$processing_dir = $incoming_dir.PROCESSING_DIR;
108+
$processing_dir = $incoming_dir.MIDAS_DICOMSERVER_PROCESSING_DIRECTORY;
109109
if (!file_exists($processing_dir)) {
110110
KWUtils::mkDir($processing_dir, 0777);
111111
}
112-
$log_dir = $incoming_dir.LOG_DIR;
112+
$log_dir = $incoming_dir.MIDAS_DICOMSERVER_LOGS_DIRECTORY;
113113
if (!file_exists($log_dir)) {
114114
KWUtils::mkDir($log_dir, 0777);
115115
}
116116
$dcmqrscp_cmd = 'dcmqrscp';
117117
if (!empty($args['dcmqrscp_cmd'])) {
118118
$dcmqrscp_cmd = $args['dcmqrscp_cmd'];
119119
}
120-
$dcmqrscp_pacs_dir = $incoming_dir.PACS_DIR;
120+
$dcmqrscp_pacs_dir = $incoming_dir.MIDAS_DICOMSERVER_PACS_DIRECTORY;
121121
if (!file_exists($dcmqrscp_pacs_dir)) {
122122
KWUtils::mkDir($dcmqrscp_pacs_dir, 0777);
123123
}
@@ -140,7 +140,7 @@ public function start($args)
140140
$python_params[] = '-d '.$dest_folder;
141141
// used by dcmqrscp
142142
$python_params[] = '-q '.$dcmqrscp_cmd;
143-
$python_params[] = '-f '.$dcmqrscp_pacs_dir.DCMQRSCP_CFG_FILE;
143+
$python_params[] = '-f '.$dcmqrscp_pacs_dir.MIDAS_DICOMSERVER_DCMQRSCP_CFG_FILE;
144144
$start_server_command = KWUtils::prepareExeccommand($python_cmd, $python_params);
145145
if (array_key_exists('get_command', $args)) {
146146
$start_server_command_string = str_replace("'", "", $start_server_command);
@@ -197,11 +197,11 @@ public function status($args)
197197
$ret = array();
198198
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
199199
// currently not supported in windows
200-
$ret['status'] = MIDAS_DICOM_SERVER_NOT_SUPPORTED;
200+
$ret['status'] = MIDAS_DICOMSERVER_SERVER_NOT_SUPPORTED;
201201

202202
return $ret;
203203
} else {
204-
$ret['status'] = MIDAS_DICOM_SERVER_NOT_RUNNING;
204+
$ret['status'] = MIDAS_DICOMSERVER_SERVER_NOT_RUNNING;
205205
}
206206
$ps_cmd = 'ps';
207207
$cmd_params = array();
@@ -214,15 +214,15 @@ public function status($args)
214214
$fields = preg_split("/\s+/", trim($line));
215215
$process = $fields[4];
216216
if (!strcmp($process, $storescp_cmd)) {
217-
$ret['status'] = MIDAS_DICOM_STORESCP_IS_RUNNING;
217+
$ret['status'] = MIDAS_DICOMSERVER_STORESCP_IS_RUNNING;
218218
// need to be updated if python script is changed
219219
$ret['user_email'] = $fields[21];
220220
$runningSCPs += 1;
221221
if ($runningSCPs == $totalSCPs) {
222222
break;
223223
}
224224
} elseif (!strcmp($process, $dcmqrscp_cmd)) {
225-
$ret['status'] += MIDAS_DICOM_DCMQRSCP_IS_RUNNING;
225+
$ret['status'] += MIDAS_DICOMSERVER_DCMQRSCP_IS_RUNNING;
226226
$runningSCPs += 1;
227227
if ($runningSCPs == $totalSCPs) {
228228
break;
@@ -261,7 +261,7 @@ public function stop($args)
261261
}
262262

263263
$running_status = $this->status($status_args);
264-
if ($running_status['status'] == MIDAS_DICOM_SERVER_NOT_RUNNING && !array_key_exists('get_command', $args)
264+
if ($running_status['status'] == MIDAS_DICOMSERVER_SERVER_NOT_RUNNING && !array_key_exists('get_command', $args)
265265
) {
266266
$ret['message'] = 'DICOM server is not running now!';
267267

@@ -282,7 +282,7 @@ public function stop($args)
282282
$serverComponent = MidasLoader::loadComponent('Server', 'dicomserver');
283283
$incoming_dir = $serverComponent->getDefaultReceptionDir();
284284
}
285-
$log_dir = $incoming_dir.LOG_DIR;
285+
$log_dir = $incoming_dir.MIDAS_DICOMSERVER_LOGS_DIRECTORY;
286286
if (!file_exists($log_dir)) {
287287
KWUtils::mkDir($log_dir, 0777);
288288
}

0 commit comments

Comments
 (0)