You are on page 1of 87

Conquest DICOM Server version

release 1.4.17
May 25, 2013
Contact, Conquest DICOM server and any Micro!"CS e#tensions
Lambert Zijp or Marcel van Herk; Radiotherapy department; The Netherlands Cancer Institute;
msterdam! the Netherlands; "a#$ %&'()*(++,''*' - .mail$ portal/nki0nl or 1ijp/nki0nl
Ori$inal Micro!"CS develo%er &not active anyore'
Mark 2skin; 3C 4avis Medical Center; 5C6 Research and 4evelopment Lab0
7,'+89&:(*&*; - "< 7,'+89&:(*&'+ - .mail$ mhoskin/ucdavis0edu
"dinistrative ( )icensin$ Contact, ori$inal Micro!"CS co%onents
Richard L0 =ennedy; 3C 4avis Medical Center
7,'+89&:(9)+9 - "< 7,'+89&:(*&'+ - .mail$ rlkennedy/ucdavis0edu
Copyri>ht 7c8 )*'& The Netherlands Cancer Institute0
4eveloped by Marcel van Herk and Lambert Zijp; the Netherlands Cancer Institute; RT 4epartment
6erver core based upon$
Copyri>ht 7c8 ',,? Re>ents o@ the 3niversity o@ Cali@ornia0 ll ri>hts reserved0
4eveloped by$ Mark 2skin! mhoskin/ucdavis0edu; 3niversity o@ Cali@ornia! 4avis Medical Center;
4epartment o@ Radiolo>y Aith a 6olaris port done and maintained by$ Terry Rosenbaum; Michi>an
6tate 3niversity; 4epartment o@ Radiolo>y0
Redistribution and use in source and binary @orms are permitted provided that the above copyri>ht
notice and this para>raph are duplicated in all such @orms and that any documentation! advertisin>
materials! and other materials related to such distribution and use acknoAled>e that the so@tAare Aas
developed by the 3niversity o@ Cali@ornia! 4avis and The Netherlands Cancer Institute! msterdam0
The name o@ the 3niversity may not be used to endorse or promote products derived @rom this so@tAare
Aithout speci@ic prior Aritten permission0 THI6 62"TBR. I6 5R2CI4.4 D6 I6E N4
BITH23T NF .<5R.66 2R IM5LI.4 BRRNTI.6! INCL34ING! BITH23T
LIMITTI2N! TH. IM5LI.4 BRRNTI.6 2" M.RCHNTIHILITF N4 "ITN.66 "2R
5RTIC3LR 53R526.0
Be Aould like to thank all individuals that help Aith testin>! maintainin> and documentin> the
ConIuest 4IC2M server0 5lease keep up the >ood AorkJ
This manual has been edited by radtraveller and Ralph Nudo! @or Ahich my thanks! also a neA BM5
section has been added by Hans 4ietmar Coi>t! a>ain my thanks0
THL. 2" C2NT.NT6
SECTION 1 INTRODUCTION..........................................................................3
SECTION 2 INSTALLATION GUIDE................................................................3
2.0 INTRODUCTION...............................................................................................3
2.1 FIRST TIME INSTALLATION........................................................................4
Database Selection...............................................................................................
Installin! as an NT Se"#ice.................................................................................$
DICOM Se"#e" Con%i!&"ation.........................................................................10
2.1.1 'ERIF( INSTALLATION...........................................................................12
'e"i%) TC*+I* Connecti#it).............................................................................12
'e"i%) Database.................................................................................................13
Test Se"#e".........................................................................................................14
,"o-se Database O.tions.................................................................................14
2.1.2 MULTI*LE SER'ERS ON ONE *C..........................................................1/
U.0atin! to Ne-e" 'e"sions............................................................................11
2.1.3 E2*ORTCON'ERTERS.............................................................................//
2.1.4 IM*ORTCON'ERTERS............................................................................./3
I4.o"t+E5.o"tCon#e"te"s S)nta5.................................................................../
A**ENDI2 16 Database set&. an0 benc74a"8s
A**ENDI2 26 9Obsolete: Usin! Con;&est -it7 M)S;l t7"o&!7 OD,C
A**ENDI2 36 Usin! Con;&est as DICOM "o&te" an0 !ate-a)
A**ENDI2 46 <o- to set &. a Re0&n0ant Con;&est Se"#e" in a =in0o-s Cl&ste" En#i"on4ent
A**ENDI2 /6 =eb se"#e" base0 access
A**ENDI2 16 D!ate Co44an0 Line
A**ENDI2 3. Con%i!&"ation Files an0 Disc&ssion
SECTION 1. INTRODUCTION
The Micro5C6 is a BindoAs! Linu# or 3ni# based 5C6 system that has! at itKs core! the 3C4MC
4IC2M NetAork Transport libraries0 This system has been combined Aith a complete user inter@ace
7BindoAs only8! Ahich also acts as installation pro>ram 7Aritten in Horland 4elphi8 to @orm the
ConIuest 4IC2M server0 Aeb inter@ace and e#tensive scriptin> options are also availble0 The
In@ormation 4e@inition is desi>ned to be @ield-run(time pro>rammable0 HeloA the 4IC2M inter@ace is
a database connectivity class that uses a stable built(in 6ILite driver or 4H6.III driver driver! talks
to 24HC compatible data sources 7BindoAs only8! to My6Il or 5ostGres0 This combination permits a
5C6 system Aith the @olloAin> @eatures$
Complete 4IC2M Inter@ace0 Includin> 6C5Ks @or run(time pro>rammable stora>e I24Ks!
and 6C5 @or 4IC2M Lueries and Retrieves0 The behavior can be modi@ied by scripts0
5ro>rammable 6LL 4atabase tables0 This user(pro>rammable @eature alloAs the
Micro5C6 to be custom tailored to a particular Clinical-Research area0 "or instance! in a
CR settin>! the 5C6 system can be pro>rammed to alloA users to Iuery on kvp and ma or
in a CT settin>! the 5C6 can be pro>rammed to alloA Iueries on slice(distance0
The communication to the database is done via a built(in 6ILite 7de@ault and advised @or
small archives o@ up to '!***!*** ima>es8! a built(in dbaseIII driver! 24HC 7BindoAs
only8! My6LL or 5ost>res0 This alloAs a de(couplin> o@ 5C6 and 6LL technolo>y0
24HC has been tested Aith 7BindoAs only8$
Microso@t ccess
6LL server 7most reliable and advised @or serious use8
6ome users have reported success@ul operation usin> Interbase and 2racle0 2racle
reIuires simple manual editin> o@ the 4IC2M06LL @ile! Ahere the names o@ @ields
MroAsK and McolumnsK are chan>ed to! e0>0! MIroAsK and MIcolumnsK0
See a%%endi# 1 *or tests o* t+e various data,ase o%tions.
Note6 The built(in dHaseIII driver 7ConIuest addition8 is not a @ull 6LL server and poses
limitations on Iuery keys$ only Iueries like MkeyK N e#act match; MkeyOK N value starts Aith
key; and MOkeyOK N value contains key! are supported! as Aell as date(ran>e Iueries and
multiple 3I4 matchin> Iueries 7since '0:0980 2nly common hierarchical Iueries are
supported Aith @ields that are listed in the sin>le de(normali1ed table @or the selected Iuery
level 7see @ile 4IC2M06LL80 Re>ular Iueries passin> 5atientI4! 6tudy3I4! and-or
6eries3I4 Aill be 7very8 @ast! even @or hu>e archives0 2ther 7ima>e8 Iueries in lar>e
archives 7P'***0*** ima>es8 may be very sloA0 6erver startup time @or hu>e archives may
be lon> due to in(memory inde# creation 7about ' minute per '***0*** ima>es80 4urin>
inde#in> the server is read(only and only shoAs inde#ed ima>es0 4ue to these limitations!
4H6.III is no lon>er advised @or production servers0 3se 6LLIT. @or QsmallQ installations0
7ConIuest addition8 "ast and sa@e 7CRC checked8 error @ree compression 7P)#8 o@ ima>e
data on disk0 4o not use this option i@ you Aant to read the ima>e @iles directly @rom disk
yourselves usin> third party so@tAare0
7ConIuest addition8 .asy installation o@ many servers on a sin>le 5C0 6ervers may run as
service7s80
7ConIuest addition8 database broAser and slice vieAer 7BindoAs only8 inte>rated in the
5C6 system Aith options @or$ vieAin> the 4IC2M in@ormation in a slice! creatin> HM5
@iles 7ideal @or slides8! sendin> selected ima>es! printin>! and database @i# tools such as
chan>in> patient I4s! and deletin> and anonymi1in> studies and series0 lso tools to mer>e
or split series0 4ra> and drop to load 4IC2M or HL9 @iles or directories0
7ConIuest addition8 simple Iuery-move user inter@ace 7BindoAs only8 @or dia>nostic
purposes! to improve your knoAled>e o@ 4IC2M! and to >rab missin> data @rom another
server0
7ConIuest addition8 "ully inte>rated @unctionality in one user inter@ace0
7ConIuest addition8 6imple print server 7BindoAs8 ( to de@ault printer0
7ConIuest addition8 Lo> @iles! Ahich are daily 1ipped 7BindoAs only80 Be use the
TZipMaster CCL by Chris Cle>hert and .ric B0 .n>ler and-or 91 791ip80
7ConIuest addition8 Correct display o@ R5.G and RL. compressed ima>es in broAser
7BindoAs only80
7ConIuest addition8 "le#ible con@i>uration o@ R5.G! R5.G)*** and N=I private
compression Aith optional 7de8compression o@ incomin>! dropped! transmitted and archived
@iles0 The actual R5.G 7de8compression is done usin> a Modi@ied version o@ the
International R5.G >roup code0 Rasper is used @or R5.G)***0
7More ConIuest additions8 Hi>hly improved per@ormance 7e0>0! usin> a read(ahead thread8!
and simple ima>e @orAardin>-action capability0
The archive is Aell suited as 4IC2M server @or the 4IC2MB2R=6 vieAer by 5hillipe
5uech0
I@ the H4. is not installed! Ae use the MiTeC 4H"Table component by MichaL MutL0 "or
some other data sources 42 is used 7BindoAs only80 MysIl is accessed directly0
The server core o@ version '0:0; up runs and compiles on Linu# and has a preliminary B.H
inter@ace0
Cersion '0:0, up has preliminary 4IC2M Borklist Iuery @unctionality Aith HL9 import
and translation to 4IC2M Aorklist0
Cersion '0:0'* up has preliminary virtual server @unctionality$ Iueries and retrieves can be
@orAarded to up to '* other servers0 7see appendi# 980
Cersion '0:0') can use a native My6LL driver 7based on Ran>el Gustavo RealeKs
TMy6LL4ataset and Matthias "ichtnerKs mysIl0pas8 and includes a preliminary advanced
series vieAer based on .Z4icom - =(5acs 7many thanks to Chris Rorden and ndreas
=nopke80
Cersion '0:0') improves database per@ormance! has some important bu> @i#es 7rare crashes!
incomplete deletion and >rabbin>! and rare database corruption on dbaseIII80 "urther it has
the possibility to @orAard multiple ima>es on a sin>le association! and improved
documentation 7appendi# ?(980
Cersion '0:0')b and c add importconverters and bu> @i#es in dbaseIII driver and Aeb access
and does not alloA 0dcm Aith nki compression
Cersion '0:0'& has a Aeb vieAer based on =(5C6! 6LLite is noA included! and more
import and e#port converter options Aere added such as delayed @orAardin> and
preretrieval0 More automatic setup o@ the databases has been added to simpli@y installation0
Cersion '0:0': e#tends and the Aeb inter@ace; adds computed @ields like QNumber o@ 5atient
Related InstancesQ e#tends the e#portconverters0
Cersion '0:0'?$ +: bit supported 7to support very lar>e dicom objects8! post>res supported!
improved virtual server per@ormance! jp> ima>es possible in Aeb inter@ace! multi@rame
support in serverside vieAer! seIuence access in scriptin>! anonymi1eSscript0cI! better
handlin> o@ corrupt 4IC2M @iles and a @eA more scriptin> options
Cersion'0:0'+$ Internal R5.G 7IRG8 and R5.G)*** 7Rasper8 support added by Hruce Harton!
more scriptin> options; B42 server and client! more converters; improved
serversidevieAer! cachin> o@ repetitive Iueries! enabled MG*Tincomin> @older! upload
@rom Aeb server! optional overlap o@ >et and send in virtualservers! animated GI" and
preliminary M5.G support0
Cersion '0:0'+rc) adds e#portin> 1ip @iles! lo> @ile 1ippin> and cleanup at ni>ht also @or a
service and linu#! more commands and @i#es
Cersion '0:0'+rc: adds lua as very @ast and @le#ible scriptin> lan>ua>e @or converters 7Aith
access to con@i>uration! connection! dicom objects! pi#el data! database! Iueries8 and Aeb
pa>e desi>n
Cersion '0:0'+ @i#es several bu>s
Cersion '0:0'9 e#tends the lua scriptin> system e#tensively @or tasks such as$ Aeb pa>e
>eneration! anonymi1ation 7includin> ima>e maskin>8! @orAardin>! preprocessin> and
modi@yin> Iueries! postprocessin> Iuery results and out>oin> ima>es! debu>>in>!
modi@ication and lo>>in> o@ incomin> ima>es! ima>e processin>! capturin> @ailed stores! or
to much to listJ 2@ course this version also @i#es all bu>s encountered in '0:0'+0 This version
may also be used as pure brid>e betAeen any 4IC2M 5C6 system and B420
connection to the ZeroHrane6tudio I4. alloAin> easy development! testin> and
debu>>in> Lua scipts has been added in '0:0'90 This makes ConIuest even more a >eneral
purpose 4IC2M Aorkhorse0
SECTION 2. =INDO=S INSTALLATION >UIDE
This section details hoA to setup the ConIuest 4IC2M server - Micro5C6 system! as Aell as
hoA the various components Aork to>ether0 More in@ormation and discussion may be @ound at
the @orum$ +tt%-((*oru.ia$e.systes.,i/(vie0to%ic.%+%1*233
2.0 INTRODUCTION
"or clarity-brevity! this section makes the @olloAin> assumptions$
The server is located in Uc$TdicomserverU
Four Ima>e 6tora>e drive is Uc$TdicomserverTdataU
Fou have only one ima>e drive
ll ConIuest 4IC2M server - Micro5C6 @iles are on U$TU!i0e0! a@ter un1ippin>
M0ico4se"#e"1413.?i.@.
Minimum 6ystem ReIuirements$
O BindoAs,?-,;-M.-NT-)***-<5-Cista-BindoAs9 7@or Linu# see appendi# &80
O &) or +: bit 26
O ,+ me>abytes o@ memory
O '*):#9+;#)?+ display0
O )* MH @ree hard disk space 7@or some ima>es80
O TC5-I5 @unctionin> on your machine VB62C=&)04LL compatibleW0
Recommended 6ystem Con@i>uration$
O BindoAs )*** or hi>her 7@or Linu# or 3ni# see appendi# &80
O +: bit 26 i@ very lar>e 4IC2M objects 7e0>0! ' GH8 occur0
O 5entium '** or @aster
O )?+ me>abytes o@ memory or more 7memory limitations a@@ect the lar>est 4IC2M
object that can be trans@erred80
O '*):#9+; true color display 7reIuires ) MH display card80
O s much disk space as you can >et0
O TC5-I5 @unctionin> on your machine VB62C=&)04LL compatibleW0
O H4. 7Horland 4atabase .n>ine8 installed on your machine0 I@ not! the system Aill
attempt to use 42 or use built(in 4H" or 6ILite support0
It is recommended that the user @amiliari1e themselves Aith the ppendices! 4iscussions and
e#amples be@ore startin> to use the neAly installed ConIuest 5C60
Note: changing database or configuration files may result in
extremely long regeneration times for large datasets.
2.1 Fi"st ti4e installation.
ny part o@ the installation can be repeated at any time Aithout loss o@ data! since the database
may be 7re(8 >enerated @rom the ima>es stored on disk0 <o-e#e"A 0atabase "e!ene"ation 4a)
ta8e a lon! ti4e an0 acti#e connections 4a) be te"4inate0 0&"in! so4e o% t7e installation
ste.s. lso! the modality Aorklist cannot be re>enerated; it there@ore has its oAn clear button0
O.tional B not %o" %i"st ti4e &se"s
"irst! you may install the H4.0 To install it! doAnload bdeinstall?01ip @rom the Aeb pa>e! un1ip
it and run setup0e#e0 Bithout the H4.! the database broAser Aill lack search on patient name0
3ote t+at ,dinstall5 0ill not install on 44.,it systes. Ne#t! optionally install a database system
o@ choice! such as 6LL server! My6LL or 5os>res and note the superuser-root user name and
passAord0
En0 o.tional B not %o" %i"st ti4e &se"s
Then! you must enter the @olloAin> commands @rom the command prompt 7or per@orm similar
@unctions usin> the e#plorer8$
40 c6C0ico4se"#e"
c0 C0ico4se"#e"
&n?i. DICOMSER'ER1413.DI* 7e"eA &sin! %ol0e" na4es
con;&est0ico4se"#e"
It is pre@erred to install the server in a directory Aithout spaces in its name 7a Aarnin> Aill be
>iven i@ you try otherAise80 I@ everythin> Aent correctly! the server should display a messa>e
that this is a @irst time installation 7this AindoA can be recalled at any time by deletin>
0ico4.ini and startin> the server8$
The database type @or automatic setup should be selected here0 Fou can choose$ Huilt(in 6ILite
driver 7the de@ault8! Huilt(in 4base III Aithout 24HC! Microso@t ccess 724HC8! Microso@t
6LL server 724HC8! Native My6LL driver or Native 5ostGres driver0
Huilt(in 6ILite is used as de@ault! since this driver does not reIuire pre(installed so@tAare or
24HC con@i>uration0 This de@ault is advised @or small archives o@ up to '!***!*** ima>es and
can also be used @or hu>e archives Aith some restrictions on Iuery speed0 It can be used @ine @or
small production systems such as 4IC2M cache systems0
The built(in 4baseIII driver is Iuite 2=! but startup is sloA @or lar>e archives! and uncommon
Iueries may not be supported or may be sloA0
Native My6LL support and 5ost>res support are available since '0:0': and '0:0'?0 3nder
AindoAs these options need client 4LLs! and not all &) and +: bits versions may be supplied in
the release packa>e0
To use 24HC access to 6LL servers or database drivers not listed here 7e0>0! Interbase or
2racle8! an 24HC data source ust be selected here0 Then! 24HC con@i>uration must be made
by hand instead o@ usin> the UMa8e OD,C 0ata so&"ceU button that Aill be e#plained later0
The 6LL server option reIuires a runnin> Microso@t 6LL server runnin> on this or another 5C0
The server Aill attempt to con@i>ure a database 7de@ault called UconIuestU! set throu>h 24HC8!
lo>in name 7UconIuestU! set in dicom0ini8 and passAord 7UconIuestU! set in dicom0ini80 To be
able to do this the user inter@ace Aill ask @or the 6 passAord as described later0 The QconIuestQ
lo>in should have @ull permissions @or the MconIuestK database0 6LL server is much more stable
than Microso@t ccess and is suitable @or lar>e(scale and multi(user archives! althou>h My6LL
and 5ostGres are maybe even better0
@ter pushin> U2=U! the server AindoA should open0 I@ this does not happen the @olloAin>
problems may e#ist$
24HC not installed 7not reIuired @or many databases80 24HC comes Aith Microso@t
2@@ice0
TC5-I5 not installed 7comes standard Aith BindoAs ,? up8
sk your system administrator @or help in installin>-updatin> these products0
5+e *ollo0in$ ste%s are not required 0+en c+oosin$ 6De*ault install6.
"ill all entries in the ECon%i!&"ation .a!eE o@ the ConIuest 4IC2M server0
These settin>s can be chan>ed later at any time i@ reIuired0 The @olloAin> entries may be
con@i>ured 7the de@aults are 2= as a @irst test8$
O Local uniIue name o@ this 4IC2M server 7de@ault UC2NL3.6T6RC'U8
7. name o@ this server! ma#imum '+ characters80 To use special characters in the
name! close the server! edit the name in dico.ini and restart the server8
O TC5-I5 port to use 7de@ault ?+9;8
7use another value i@ there are multiple 4IC2M .Qs on one machine80 5ort ?+9; may
be occupied in Cista or BindoAs90 I@ the server has trouble startin>! please try another
port number0
O Local disk directory to store data 7de@ault c$TdicomserverTdata8
7N2T.$ 0o&ble click a directory to select it0 5atient directories Aill be made under the
selected directory0 The selector does not Aork Ahen a 3NC path is set in dicom0ini! e0>0!
MTTserverTshareTpathK8
O .nable R5.G7)***8 support0
Bhen set! the server accepts incomin> R5.G7)***8 compressed ima>es over the
netAork! and Aill compress and decompress R5.G 7)***8 ima>es as reIuired by the
@olloAin> option0
O Ima>es on disk are stored$ 7de@ault uncompressed8
6torin> ima>es compressed may limit your ability to read the ima>es directly @rom disk
usin> third party so@tAare0 R5.G and especially R5.G)*** compression is sloA and
lossy compression a@@ects the @idelity o@ the ima>es0 The options presented in the user
inter@ace correspond Aith the parameters in dico.ini named Incomin>Compression and
4ropped"ileCompression set to MunK! Mn:K! QnjQ! Mj)K! Mj+K! QjkQ! QjlQ! and MujK! respectively0
4ouble click the label to edit the strin> directly0
O Ima>es on disk are named$ 7de@ault 4CM8
6torin> ima>es as C) may limit your ability to read the ima>es directly @rom disk usin>
third party so@tAare0 4CM precludes usin> @ast N=I compression0 The options presented
in the user inter@ace correspond Aith the parameter in dico.ini named "ileName6ynta#0
4ouble click the label to edit the strin> directly0
O Cleanup disk beloA X me>abyte 7de@ault *N do not delete even i@ disk @ull8 7Cleanin> the
disk involves deletin> least recently loaded patients! may be con@i>ured as the oldest latest
study80
O Cleanup ni>htly beloA X MH 7de@ault *N do not delete even i@ disk @ull 7This cleanin> o@ the
disk occurs each ni>ht at *'$**80
O HeloA X MH move to X 7de@ault *N do not move even i@ disk @ull8 7Moves X MH data @rom
MG* to e0>0! MG' at *)$**80 This option reIuires the G3I to be runnin> to @unction0
O =eep server alive$ i@ set! the server sel@ tests once per minute and is automatically restarted in
the rare event o@ a so@tAare crash0 This option reIuires the G3I to be runnin> to @unction and is
>enerally not needed0
5ush ESa#e Con%i!&"ationE0 Bhen R5.G support is chan>ed the user Aill be prompted about
overAritin> d$ateso%.lst! Ahich speci@ies the accepted trans@er synta#es0 Bhen the @ile
dico.sql e#isted! a backup Aill be made o@ it! and it is overAritten0 The user Aill be Aarned
that @ull db re>eneration is reIuired Ahen its layout has chan>ed0 2n a @irst install! the
installation pa>e is then automatically displayed 7you can >o back @or the ne#t item later80
2ptional 7NT: and up8$ 3se EInstall se"#e" as NT se"#iceE to run the actual 4IC2M server
7d>ate0e#e8 independent o@ this user inter@ace 7it Aill then also re(start automatically Ahen the
computer is booted80 This option Aill install the service such that it lo>ins Aith a system
account0 2nly system administrators should use this option 7run QConIuest4icom6erverQ as
administrator80
To Aork! the databases and ima>es should reside on the local system Aith su@@icient access
ri>hts0 2therAise an error messa>e is >enerated 7push M3ninstall server as NT serviceK to restore
the previous situation80 24HC is installed Aith a system datasource and should Aork Aithout
modi@yin> the service0 HoAever! i@ a netAork share is used! make sure the service has access to
the netAork resource0 4o not use drive mappin>! since services do not >et these0
M=ill and restart the serverK @rom the server status pa>e can be used at any time to restart the
service0 The name o@ the server is used as service name! and cannot be chan>ed Ahile usin> this
option0 3se EUninstall se"#e" as NT se"#iceE to restore that the 4IC2M server @unctions only
i@ conIuestdicomserver0e#e is runnin> and to alloA a chan>e o@ server name0
N2T.$ this version 7v'0:0'98 Aill not run as service i@ the directory path Ahere the server
e#ecutables reside includes space characters0
The @olloAin> hidden option e#ists$ Ahen the service buttons are alt(ri>ht clicked! the service is
installed @our times 7e0>0! Aith ports ?+9;X?+;'80 .ach server runs independently a>ainst the
same data7base80 3se @or testin> purposes0
Ne#t >o to the EInstallationE pa>e o@ the ConIuest 4IC2M server0
2.1.1 'e"i%) Installation
5ush button E'e"i%) TC*+I* installationE0 It should respond Aith the @olloAin> messa>es$
------------------- Start TCP/IP test --------------------
[CONQUESTSRV1] This output is generated ! the di"o# ser$er app%i"ation
[CONQUESTSRV1] I& !ou "an read this' the "onso%e "o##uni"ation is O(
[CONQUESTSRV1] This is s!ste#deug output) "an !ou read this *
[CONQUESTSRV1] This is a $er! %ong te+t output &or testing -- This is a $er! %ong te+t output
&or testing -- This is a $er! %ong te+t output &or testing -- This is a $er! %ong te+t output
&or testing -- This is a $er! %ong te+t output &or testing -- This is a $er! %ong te+t output
&or testing --
[CONQUESTSRV1] ---------- Su""es&u% end o& test -----------
I@ the response is di@@erent! TC5-I5 may not be installed 7correctly8 on your computer0 sk your
system administrator @or help0
Bhen not usin> 4base III Aithout 24HC or native My6LL! push button EMa8e OD,C 0ata
so&"ceE! unless you Aant to con@i>ure the 24HC data source by hand0 @ter a con@irm! it
should respond Aith the @olloAin> messa>es$
----------- Start O,-C data sour"e update or "reation -------------
[CONQUESTSRV1] Creating data sour"e
[CONQUESTSRV1] ,ri$er . /i"roso&t 0""ess ,ri$er 123#d4
[CONQUESTSRV1] Options . ,SN."on5uestpa"s6s),es"ription.Con5uest ,ICO/ ser$er7 [CONQUESTSRV1]
,atasour"e "on&iguration su""es&u%
[CONQUESTSRV1] ----------------------------------
[CONQUESTSRV1] Creating data sour"e
[CONQUESTSRV1] ,ri$er . /i"roso&t 0""ess ,ri$er 123#d4
[CONQUESTSRV1] Options . ,SN."on5uestpa"s6s),es"ription.Con5uest ,ICO/ ser$er7 [CONQUESTSRV1]
,atasour"e "on&iguration su""es&u%
[CONQUESTSRV1] ----------------------------------
I@ the response is di@@erent! 24HC may not be installed on your computer or the selected driver
has not been installed0 sk your system administrator @or help0 It is best to have a recent @ull
24HC installation! e0>0! @rom Microso@t 2@@ice ,9 or later0 "or Ms6LL server! the same button
Aill read$ UMa8e OD,C an0 0atabaseU0 In that case it Aill also as @or the 6 passAord0 I@ this
is correctly >iven! the application Aill attempt to create the conIuest database0 This Aill @ail
harmlessly Ahen the database already e#ists0 In this Aay it is possible to use @ree Ms6LL
products that do not come Aith a user inter@ace to create databases0 "or native mysIl and or
5ost>res! the button Aill read UMa8e 4)s;l+.ost!"es 0atabaseU! and Aill ask @or the database
name and the root passAord 7that de@aults is empty80 I@ this is correctly >iven! the application
Aill attempt to create the conIuest database0 This Aill @ail harmlessly Ahen the database already
e#ists0 In this Aay it is possible to con@i>ure mysIl-post>res very easily0
Note that it is per@ectly possible to create or edit an 24HC datasource by hand0 This is reIuired
to use another database driver as the tAo 24HC options >iven in the @irst time installation
AindoA0
5ush button E'e"i%) 0atabase installationE0 It should respond Aith the @olloAin> messa>es$
------------------- Start O,-C test --------------------
[CONQUESTSRV1] 0tte#pting to open dataase) test 81 o& 19
[CONQUESTSRV1] Creating test ta%e
[CONQUESTSRV1] 0dding a re"ord
[CONQUESTSRV1] ,ropping test ta%e
[CONQUESTSRV1] C%osing dataase
[CONQUESTSRV1] 0tte#pting to open dataase) test 8: o& 19
[CONQUESTSRV1] Creating test ta%e
[CONQUESTSRV1] 0dding a re"ord
[CONQUESTSRV1] ,ropping test ta%e
[CONQUESTSRV1] C%osing dataase
3
3
[CONQUESTSRV1] 0tte#pting to open dataase) test 819 o& 19
[CONQUESTSRV1] Creating test ta%e
[CONQUESTSRV1] 0dding a re"ord
[CONQUESTSRV1] ,ropping test ta%e
[CONQUESTSRV1] C%osing dataase
[CONQUESTSRV1] ---------- Su""es&u% end o& test -----------
Bhen usin> 24HC! i@ the response is di@@erent! the 24HC version may be bu>>y0 sk your
system administrator @or help0 Bhen usin> native My6Il or 5ostGres and the response is
di@@erent! database conIuest may not e#ist 7or passAord and username may be Aron>8 or
mysIl-post>res may not be runnin>0 ttempt to create the database a>ain usin> mysIladmin
7Aith MmysIladmin Yu root create conIuestK8 and make sure mysIl runs usin> mysIld(nt0
5ush button E9Re:Finitiali?e 0atabaseE0 @ter con@irmation! it respond Aith the @olloAin> or
similar messa>es$
------------------- Start dataase init and regeneration --------------------
[CONQUESTSRV1] Regen ,ataase
[CONQUESTSRV1] Step 1; Re-initia%i<e SQ= Ta%es
[CONQUESTSRV1] 222SQ=ITEE+e" error; no su"h ta%e; ,ICO/>or?=ist
[CONQUESTSRV1] 222SQ=ITEE+e" error; no su"h ta%e; ,ICO/>or?=ist
[CONQUESTSRV1] 222@ai%ed SQ=ITEE+e" ; ,ROP T0-=E ,ICO/>or?=ist
[CONQUESTSRV1] 222SQ=ITEE+e" error; no su"h ta%e; ,ICO/Patients
[CONQUESTSRV1] 222@ai%ed SQ=ITEE+e" ; ,ROP T0-=E ,ICO/Patients
[CONQUESTSRV1] 222SQ=ITEE+e" error; no su"h ta%e; ,ICO/Studies
[CONQUESTSRV1] 222@ai%ed SQ=ITEE+e" ; ,ROP T0-=E ,ICO/Studies
[CONQUESTSRV1] 222SQ=ITEE+e" error; no su"h ta%e; ,ICO/Series
[CONQUESTSRV1] 222@ai%ed SQ=ITEE+e" ; ,ROP T0-=E ,ICO/Series
[CONQUESTSRV1] 222SQ=ITEE+e" error; no su"h ta%e; ,ICO/I#ages
[CONQUESTSRV1] 222@ai%ed SQ=ITEE+e" ; ,ROP T0-=E ,ICO/I#ages
[CONQUESTSRV1] 222SQ=ITEE+e" error; no su"h ta%e; UI,/O,S
[CONQUESTSRV1] 222@ai%ed SQ=ITEE+e" ; ,ROP T0-=E UI,/O,S
[CONQUESTSRV1] Step :; =oad / 0dd ,ICO/ OAe"t &i%es
[CONQUESTSRV1] [Regen] @;Bdi"o#ser$erB,ataBCE0,6EDP6999EF9GHB9991699:9996HE:IIJII13$: -SUCCESS
[CONQUESTSRV1] [Regen] @;Bdi"o#ser$erB,ataBCE0,6EDP6999EF9GHB9991699G9996HE:IIJII:3$: -SUCCESS
[CONQUESTSRV1] Regeneration Co#p%ete
These or similar U@ailedU messa>es occur Ahen the server attempts to delete tables that are not
there0 The Vre>enW messa>es shoA that each ima>e @ile is entered into the database0 They Aill be
missin> i@ the ima>e @older is empty0 I@ the response is otherAise di@@erent! you may have not
per@ormed the @ull installation correctly0 Hest is to retry @rom the start or >et help0
The button UClea" -o"8listU Aill create and-or re(initiali1e the Aorklist table$ it Aill not be re(
created automatically i@ it already contained data0
Go to the EGno-n DICOM ."o#i0e"sE pa>e and enter in@ormation about the systems that you
Aant to communicate Aith0 similar step is reIuired at those systems to make the ConIuest
4IC2M server knoAn to them0 5ush the ESa#e t7is listE button0 The server Aill load the
chan>ed list at this point! Aithout a restart0 Note that only a sin>le server reloads the list0 I@
multiple servers run 7usin> the hidden @our(service option8! they have be to restarted in another
Aay to reload the list0
@ter installation is complete$ you can test the server in the @olloAin> Aays$
'8 Try buttons on the EMaintenanceE pa>e 7Aith the e#ception o@ E9Re:Finitiali?e 0atabaseE
since this action can take Iuite some time80
)8 HroAse throu>h the database and look at some pictures in the E,"o-se 0atabaseE pa>e0 I@
the broAser does not Aork 7happens Aith Ms6LL server on AindoAs server )**&8 try settin>
UHroAseThrou>h4H" N 'U in dicom0ini0 Bhen the M'ie- inco4in!K check bo# on the broAser
pa>e is set! each neAly stored slice is displayed! Aith a red overlay o@ the callin> .0 This
options also displays incomin> ima>es to be printed0 Bhile this option is 2N! the built(in
elementary 4IC2M printer is disabled0 Ri>ht(click the ima>e Aith the mouse @or several e#tra
options$
- ES7o- 7ea0e"E lists the 4IC2M header o@ the currently selected ima>e0 3se keys
CTRL( N select all! CTRL(C N copy to clipboard! CTRL(" N @ind te#t! CTRL(6 N
save as te#t @ile and "& N search a>ain0
- ESa#e as ,it4a.E saves the currently visible @ile as AindoAs HM5 @ile0
- EFo"ce 0is.la) o% 9la"!e: i4a!eE can be used to display ima>es that e#ceed : MH
7con@i>urable8 or that are stored on a jukebo# that are normally not shoAn by the
broAser0
- ER&n GF*acs #ie-e"E shoAs a more advanced vieAer 7does not support multi(
@rame objects Aell80
- ER&n e5te"nal #ie-e"E 7i@ con@i>ured in 0ico4.ini8 starts an e#ternal vieAer
pro>ram Aith the selected 4IC2M ima>e as ar>ument0
- The EAni4ate Dis.la)E options animate the current series in various Aays0
- The ESen0 H ToE options alloA sendin> the current ima>e! selected ima>es o@ the
current series! the current series! the current study! or the current patient to another
4IC2M station0
- The EE5.o"tE options alloA storin> the current ima>e! the current series! the current
study! or the current patient in a ZI5 @ile0
- The E*"int I4a!e on local DICOM ."inte"E option prints a @ull pa>e printout o@
the selected ima>e usin> the built(in 4IC2M print server on the de@ault BindoAs
printer0
- The E*"int Selecte0 I4a!es on local ...E option prints a selection o@ ima>es o@ the
current series usin> a selectable pa>e layout 7de@ault :#+ ima>es on a portrait pa>e8
on the de@ault BindoAs printer0
- The EDICOM ."int selecte0 i4a!es to ...E option prints a selection o@ ima>es o@
the current series usin> a selectable pa>e layout 7de@ault :#+ ima>es on a portrait
pa>e8 on a selected 4IC2M printer 7con@i>ures on knoAn 4IC2M providers pa>e80
- The ERe4o#e i4a!e %"o4 0atabaseE option e@@ectively hides an ima>e @rom
Iueries 7until the database is re(>enerated or the ima>e is re(entered! e0>0! by
droppin> it onto the server @rom an e#plorer AindoA80 lso alloAs removal o@
orphaned 4H entries 7Aithout an ima>e80
Data,ase ,ro0ser and its %o%u% enu.
5+e 7.!"CS vie0er 8 *irst in version 1.4.11, *li% le*t.ri$+t ,utton ne0 in 1.4.14
- The ERe%"es7 Database Dis.la)E option can be used to shoAs chan>es in data
Ahen editin> the 4IC2M database throu>h a third party product or Ahen neA data
has been sent to the server Ahile the broAser AindoA is open0
- The EAnon)4i?eE options remove patient in@ormation @rom the selected ima>es and
>enerate a neA study! series and 625 instance 3I4s @or consistency0 In version
'0:0'9! a script called anonymi1eSscript0cI 7@or synta# see ImportConverter*8 is used
to drive the anonymi1ation 7de@ault callin> lua-anonymi1eSscript0lua80
- The EC7an!e .atient IDE options chan>e a patient I4 @or the selected series-study
and >enerate a neA study! series and 625 instance 3I4s @or consistency0 Hecause o@
the chan>ed 3I4s! the chan>ed slices Aill belon> to neA studies and series even i@
the patient I4 is chan>ed back to its ori>inal value0 I0e0! ima>es Aith a neA patient
I4 are considered as completely neA ima>es0
- The UMe"!e selecte0 se"iesU option Aill >ive a list o@ all series in this study and Aill
ne#t mer>e selected series 7>eneratin> a neA series 3I4 and neA 625 3I4s @or
consistency80
- The US.lit se"iesU option Aill >ive a list o@ all ima>es in this series and Aill ne#t
split selected ima>es @rom this series 7>eneratin> a neA series 3I4 and neA 625
3I4s @or the selected ima>es @or consistency80
- The EDelete ..E options Aill delete the selected ima>es one by one or an entire
patient at once0 4elete patient Aill remove orphaned 4H entries 7Aithout an ima>e80
Note that in some cases! the database broAser may not correctly update chan>es made throu>h
the menu0 In those cases! select a di@@erent pa>e o@ the server and >o back to the broAser pa>e to
@ully re@resh the database broAser0
&8 Try to Iuery or copy some ima>es usin> the EI&e") + Mo#eE pa>e0 Fou may Iuery your
oAn database or copy *ro your database to your database as a @irst test0 Hint$ try di@@erent
EI&e") le#elsE and observe the results0
To Iuickly @ill in in@ormation such as the patient I4! double click on the result AindoA Ahere
the patient I4 is shoAn0 4ouble clickin> a patient I4 Aith the control button pressed Aill add
that I4 to a comma separated patient I4 list to copy several patients at once0 This @eature is only
available @or the patient I40 The UI&e") le#elU button also alloAs you to select three Iuery
methods0
The de@ault method is a 5atientRoot Iuery! but loAer in the list you Aill @ind Iuery levels Ahich
use the 6tudyRoot and 5atient6tudy2nly Iuery methods0 These Iuery levels are provided
because many 4IC2M servers do not support the de@ault 5atientRoot Iuery method0
"inally! it is possible to Iuery a odality 0or9list0 4e@ault the Iueries are on human(readable
entries0 6ince version '0:0')! by double(clickin> on the label ne#t to the 6eries number edit bo#!
the Iuery mechanism sAitches over to usin> 3I4s0 This is less readable but supported by more
servers0 To read the lon> responses! it is possible to resi1e the G3I0
The UFin0 Local Missin! *atientsU button @inds all patient data on the selected 4IC2M system
that is not present on the L2CL server @or copyin> to a 4.6TINTI2N server0 "or e#ample!
to >rab all neA data @rom a CT scanner! enter todayKs date into USt&0) 0ateU! select the CT
scanner as 4IC2M system! and select the local server as 4.6TINTI2N0 5ush UFin0 Local
Missin! *atientsU! Ahich may take a Ahile0 The missin> patients 7i@ any8 are listed0 Then push
UCo.) to 0estinationU to copy the missin> patients into the local server0
:8 .nterin> 4IC2M or HL9 @iles into the server is provided throu>h a dra> and drop inter@ace0
Rust dra> and drop @iles or directories @rom the e#plorer to add them0 The dropped @iles are
copied into the data directory o@ the server and the database is updated to include the neA @iles0
Ima>es o@ a sin>le patient may be entered Aith a chan>ed patient I4 by pressin> the LT key
Ahile droppin> the @iles or the directory0 This latter option Aill >enerate neA study! series and
625 instance 3I4s @or consistency0 HL9 @iles update the Aorklist database only and patient I4
chan>in> is not available0 6ince version '0:0'?! a variety o@ compressed archives can be
dropped as Aell! that Aill be decompressed by 91a0e#e0 Note that there is a limit o@ about :***
@iles that can be dropped at once0 I@ you have more! drop the @older instead0
?8 Look at the USe"#e" stat&sU pa>e to see connection activity and print server pro>ress0 To
read lon> lines! it is possible to resi1e the G3I0 This pa>e also contains the UGill an0 "esta"t
t7e se"#e"U button Ahich is needed Ahen the 4IC2M server has crashed 7please report any
crashes on the @orum80
The U<i0e t7is se"#e" 9as t"a) icon:U and other buttons do Ahat you e#pect o@ them0 The small
up-doAn arroAs set the amount o@ debu> in@ormation displayed Ahen 0eb&! lo! is sAitched on
7upNmore! doAnNless80 t hi>h debu> levels also internal communication @rom the server is
lo>>ed0
2.1.2 Installin! 4&lti.le se"#e"s on t7e sa4e *C.
Installin> tAo or more servers on one 5C is a nice Aay to test 4IC2M since it alloAs copyin>
and Iueryin> in a simple Aay0 Many servers can be runnin> simultaneously0 HoAever! it is
essentially +el%*ul to leave t+e *irst server&s' runnin$ Ahile attemptin> to install neA ones
7otherAise the same TC5-I5 ports Aill be used and the servers Aill @ail to operate
simultaneously80 The installation must be done in di@@erent directories0 6o replace
Uc$TdicomserverTU by! e0>0! Uc$Tdicomserver)TU and per@orm all installation steps a>ain0 The
servers must be made knoAn to each other usin> the EGno-n DICOM ."o#i0e"sE pa>e0 I@
6LL server is used as database! each 4IC2M server should have its oAn 6LL server database
and lo>in0
2.1.3 U.0atin! to ne-e" #e"sions.
Typically! a neA version can be installed by just replacin> the e5e and 0ll @iles Aith neAer
versions 7it is a >ood idea to keep backups o@ the older ones80
ncient$ "or @ull @unction! updatin> to versions above '0:0'' reIuire addition o@ the Aorklist database in 0ico4.s;l
7this is automatic8! initiali1in> 7clearin>8 it throu>h the installation pa>e! and updatin> 0!ateso..lst0
Naturally! the server must be stopped be@ore @iles can be replaced0 In case the server runs as a
service it must be stopped usin> the control panel or by un(installin> it as a service0 To enable
use o@ a neA database layout 7requires a *ull re$en:8 and-or neA modalities and R5.G
communication! the @iles 0ico4.s;l and-or 0!ateso..lst must be manually deleted prior to
installation0 NeA versions o@ these @iles are then recreated Ahen con;&est0ico4se"#e".e5e is
restarted0
To choose a neA database driver delete 0ico4.ini! Ahich also causes 0ico4.s;l to be
overAritten0 He care@ul! since installin> a modi@ied version o@ 0ico4.s;l requires re.
initiali/ation o* t+e ia$e and(or 0or9list data,ase usin> the buttons on the installation or
maintenance pa>e0 Typical re>eneration speed is '*(+* slices per second0 Re>eneration may
take a very lon> time 7several days8 @or lar>e databases0
ncient$ "or this reason! the database de@inition @rom version '0:0; 7still the same @or '0:0'&8 is very complete and
it should su@@ice @or most users0 In '0:0':! and '0:0'? some items have been moved and resi1ed to make the
database more 4IC2M compliant0 Make sure that you do not replace 0ico4.s;l i@ you do not Aant to re>enerate
the database0
I* you do not 0ant to re$enerate t+e data,ase, 9ee% a co%y o* your %revious dico.sql and
restore it &a9in$ sure it +as t+e 0or9list data,ase entries in it' a*ter u%$radin$.
To create entries @or neA options in 0ico4.ini use the USa#e con%i!&"ationU button0
ncient$ To enable the 4IC2M printer @unction o@ version '0&0') up or the Aorklist Iuery o@ '0:0, up! the older
version o@ @ile 0!ateso..lst must be manually deleted and the server restarted0
Note$ The Linu# version uses - in paths in the database instead o@ T0 There@ore! do not e#chan>e database @iles
betAeen BindoAs and Linu#0
A**ENDI2 1. Database set&. an0 benc74a"8s
The conIuest 4IC2M server can use any 24HC database and includes Iuite a @eA native drivers0
6ince there have been a number o@ issues Aith database per@ormance! I decided to stress test a @eA
database solutions a number o@ years a>o0 Note that the server can be installed both Aith or Aithout the
Horland 4atabase .n>ine H4.0 This choice only a@@ects the broAser G3I! the server core does not use
H4. at all0
The benchmark is a set o@ Iueries that Aill duplicate a snapshot o@ our hospitalKs ConIuest research
5C6 7Huilt(in 4baseIII driver8 @rom )**: Aith :0&9? million ima>es into a test server0 The records
are trans@erred throu>h command Ud>ate Yclonedb$conIuestsrv'U on conIuestsrv) @rom conIuestsrv'
to conIuestsrv)0 This is eIuivalent o@ a re>eneration o@ a bi> server 7':9** patients! &+*** studies!
',?*** series and :0&9? million ima>es8! but .<CL34ING the read time o@ the objects0 Hence Ae
purely test database Arite speed Y Ahich is the most demandin> database operation0 The operation that
is per@ormed is that! @or each patient! study! series and ima>e! it must be @ound out i@ it already e#ists on
the server0 I@ not! the item is added else it is updated0 The Iueries are special in the sense that the
primary keys are 4IC2M 3I4s! Ahich are Iuite lon> strin>s0 Ne#t! a Iuery test is per@ormed Ahere o@
)*** patients all ima>es are listed! on avera>e &** ima>es per patient0
The recent tests Aere run a M4 6empron machine 7&:**%8 @rom )**9 Aith )0? Gbyte o@ RM!
Aithout hyper(threadin>! runnin> BindoAs <5 home! and usin> 6T disks0 This is not a @ast
machine! but the Nvidia main(board provides adeIuate bus speed0 Hoth source and destination servers
run on the same machine! but in practice the source server is barely loaded0
MICROSOFT SIL SER'ER 9SILE2*RESS 2000+200:
This setup runs out o@ the bo#0 "irst install 6LL server 7usin> all de@aults! ,ut usin$ S;) server
aut+entication80 Then install a conIuest server usin> 6LL server @or database0 The server Aill @irst ask
@or the 6LL server name0 This is 7local8 @or the de@ault 6LL server instance0 I@ usin> 6LL server
e#press )**? Aith a named instance! select C2M53T.RNM.T6LL.<5R.66 or similar as 6LL
server0 The server then asks @or a database name! lo>in and passAord @or the database to be used Aith
the 4IC2M server0 The database and lo>in Aill automatically be created i@ they did not yet e#ists
7harmless error messa>es appear i@ they did e#ist80 "inally! the server asks the 6 passAord to be able
to per@orm the installation automatically0 Note$ installation o@ 6LL.<5R.66 )**; takes a very lon>
time0 I Aould pre@er 6LL server )*** over the neA one! but this server cannot be installed on Cista0
lternatively create database conIuest! Aith lo>in conIuest 7important$ use 6LL server authentication8
Aith passAord conIuest by hand0 Initiali1e the database0 I then ran the clonedb task to load :0& million
ima>es into the system0
<rite s%eed0 Bith conIuest '0:0'&! the clonedb operation took ? hours and &; minutes @or 6LL)*** on
a pentium IC0 Bith 6LL.<5R.66 )**;! and conIuest '0:0'?! the operation took +h))0 There is no
noticeable speed di@@erence @or lar>e or small studies or early and late in the process0 The database si1e
is &0& GH0
=ead s%eed0 4irectly a@ter re>eneration the database is very sloA$ the Iuery test took about ) hours0
The loA speed is because the de@ault install o@ 6LL e#press )**; claims all 7)0? GH8 server memory
durin> runnin>0 @ter restart the database broAser i@ @airly responsive0 Bith 6LL server )***! directly
a@ter a re>en Iueries in the ima>e list on patient I4 are veryyyyy sloA and overload the machine0 @ter
a Udatabase maintenance planU has run 7MReor>ani1e data and inde# pa>esK8 the server becomes very
responsive0 6o it is essential to run this task re>ularly 7e0>0! Aeekly8 and directly a@ter database
re>eneration0
6LL server cannot be used @rom Linu#0
M(SIL /.0
I used mysIl(essential(?0*0+9(Ain&)0msi! and installed Aith all de@aults! and >ave it a root passAord0
Then I installed the conIuest server usin> the Native My6LL driver option0 The server asks @or the root
passAord to be able to install the conIuest database! and it Aill then actually run as root database user
by de@ault$ i0e0! the database username is set to root0 My6LL Aorks e#tremely @ast0 Bithout manual
con@i>uration! My6LL Aorks @ine both in MFI6M or INN24H mode0 The neA test is Aith
MFI6M0
Note that the server Aill also set the @olloAin> re>istry entries to avoid that mysIl chokes durin>
e#tensive activity such as droppin> thousands o@ @iles into the server$
H=LMT6F6T.MTCurrentControl6etT6ervicesTTcpipT5arametersTMa#3ser5ort N +??&:
H=LMT6F6T.MTCurrentControl6etT6ervicesTTcpipT5arametersTTcpTimedBait4elay N &*
<rite s%eed0 Bith the MFI6M setup! and conIuest '0:0'?! this clonedb operation took & hours and ?*
minutes0 2n avera>e &'9 ima>es are loaded per second0 >ain there is no noticeable speed di@@erence
@or lar>e or small studies or early and late in the clonedb process0 The database si1e is '09 GH0 Bith
INN24H 7not the de@ault8 the speed is similar but the database is more than tAice as bi>0
=ead s%eed0 Is very impressive Aith INN24H and MyI6M0 @ter rebootin> the 5C! startin> the
MysIl deamon! and per@ormin> the @irst Iuery! 7lon>8 lists o@ ima>es @or a particular patient I4 appear
in about '! ma#imal ) seconds0 @ter a @eA Iueries it >oes even @aster0 The Iuery test took ''m'?
7more then & @ull patient ima>e lists per second8! Ahich is the @astest o@ all servers0
,UILTFIN D,ASE III D"i#e"
The built(in dHaseIII driver runs out o@ the bo#0 The parameter Inde#4H" in dicom0ini should!
hoAever! be initially set to about '* times the e#pected number o@ million ima>es to be loaded in one
session 7the de@ault alloAs loadin> '**0*** ima>es be@ore needin> a restart80 This allocates enou>h data
to store the inde# bu@@er0 6pare space is allocated Ahen the server is restarted0
In contrast to the UrealU sIl servers! the 4baseIII only includes inde#es on 5atient I40 This inde# is kept
in memory and >enerated each time the server is started0 6o! startin> a lar>e server takes several
minutes 7the source test server takes ; minutes to start80 This also means that any 7ima>e8 Iuery that
spans multiple patients Aill be veryyyyyy sloA Y this should! hoAever! not be a problem in routine use!
as these Iueries are never used0
<rite s%eed0 Bith this setup! and conIuest '0:0'?! the dbclone operation took + hours and )) minutes0
2n avera>e about ';? ima>es are loaded per second0 There is some speed di@@erence betAeen lar>e or
small studies Y small patient studies load at )?* ima>es per second! reducin> to about '** ima>es per
second @or a patient containin> &*** ima>es0 There some sloAdoAn late in the clonedb process0 The
database si1e is +0: GH! Ahich is almost completely taken up by the denormali1ed dicomima>es table0
=ead s%eed0 .ven Iueryin> lar>e patients 7Aith )*** ima>es8 takes about ' second @or a @ull ima>e
Iuery @rom the test database o@ :0&9: million ima>es0 Lueries that are not supported by the inde# 7e0>0!
search individual ima>es on patient name8 take very lon> 7minutes80 Hecause the inde# is kept into
memory! the server is very responsive once the inde# is done durin> server startin>0 The Iuery test took
'9m&*! Ahich is the @astest o@ all 6LL servers e#cept My6LL0
This driver is no lon>er advised @or production systems0 3se 6LLite @or small production systems0
Mic"oso%t access
The setup 7on BindoAs <5 home 65 '! Aith 2@@ice )***! usin> access driver :0**0+*',0**8! runs out
o@ the bo#0 Rust select the access driver and install the server0
<rite s%eed0 Bith this setup! and conIuest '0:0')! the dbclone operation did not conclude0 2n avera>e
a>ain about )** ima>es are loaded per second0 HoAever! the database si1e >reA very Iuickly (
reachin> ) GH at )?**** ima>es a@ter &* minutes Y and then neA ima>es could not be added any more0
=ead s%eed0 t this si1e! typical ima>e Iueries 7:** records8 take ' s or so0
,&iltFin S;Lite 0"i#e"
The setup runs out o@ the bo#0 Rust select the sIlite driver and install the server0 Run the clonedb task to
load :0& million ima>es into the system0
<rite s%eed0 Bith conIuest '0:0'? 76LLIT. &0:0*8! the clonedb operation took ? hours and * minutes0
2n avera>e ):* ima>es are loaded per second0 There is no noticeable speed di@@erence @or lar>e or
small studies! hoAever! Arite speed does >oes doAn @rom about );* ima>es per second early in the
process to about ',* ima>es per second late in the process Y Ahen the database >ets lar>e0 The database
si1e is )0, GH0
=ead s%eed0 The database broAser is a bit sloA! probably because it does not access the sIlite database
directly! but uses the d>ate0e#e to create dbaseIII clones per patient0 Lueries to the server are
reasonably responsive0 6ILite can also be used in Linu#0 The Iuery test took ):m*90
*ost!"eSIL
This database driver Aas ori>inally only available on Linu#! but support @or AindoAs has been added
Aith version '0:0'?0 Make sure to add the client 4LL @iles to the server @older0 Bith version '0:0'? on
AindoAs! the Arite speed is impressive$ ? hour )) minutes! or )'? ima>es per second0 The database
si1e is &GH0 The Iuery test took )*m)*0 Installation on AindoAs 7all de@aults8 takes about ? minutes0
NULL D"i#e"
"rom version'0:0'?! i@ no 6LL6erver name is entered in dicom0ini! a N3LL driver is used @or the
database0 This drivers accepts all Arites and updates! and responds Aith * records @or any Iuery0 This
driver is use@ul @or speed testin>! to run database(less ima>e receivers! and @or 4IC2M routers0 Bith
the N3LL driver! the server clone operation took ) hour and ?* minutes! processin> :)' ima>es per
second0 This is the overhead o@ the server0 .#cludin> this time @rom the tests! it shoAs that My6LL
takes about ' hour to process :0& million ima>e! versus ) hours or more @or other servers0
Table0 6ummary o@ database tests$ tested Aritin> :0&9? million ima>es and then per@ormin> Iueries
listin> all 7avera>e &**8 ima>es per patient0 Notes$ '8 Lueries into the ima>e that do not pass a patient
I4 are very sloA! and not all @ields can be Iueried at all levels0 )8 "or personal use0 &8 3se@ul @or multi(
headed archive$ multiple conIuest servers runnin> a>ainst the same database and data stora>e$ they all
shoA the same ima>es! and can use mirrorin> to alloA @ast access to ima>es @or e0>0! di@@erent hospital
departments0 O8 Not recently tested0
Conclusions
6ee the table above0
"or be>inner users the built(in 6Ilite drivers is per@ect$ it is built(in and there@ore easy to install and
also very @ast @or common Iueries0 4baseIII Aorks 2= but should be avoided @or heavily loaded
production systems0 Hest per@ormance is de@initively @ound Aith My6LL?0*! althou>h 5ost>res is
Fes
N-
N-
B-L
N-
N-
N-
N-
N-
:)'
No
N3LL
No 5robably 5robably 5robably FesO No No
Can servers
share databaseZ
&
Fes
)
Hi>h
C53
loadO
B-L
"ast
Fes
No
0.3$ >,
3.0
312
Fes
My6LL
MyI6M
Ma# *0)?
million
ima>es
Not tested "ineO
db mainten(
ance reI(
uired
6li>htly
reduced
speed
6loA
startup
"or very lar>e
databases
B B-L B-L B B B-L 26
Fes
"ast
Fes
No
*09 GH
'0?
)'?
Fes
5ost>res
"ast "ast "ast "ast 6loA 6tartup speed
Fes Fes
)
No Fes Fes "ree
24HC
reIuired
Fes 6loA
install
Fes Cery .asy to setup
)?*0***
ima>es
No No No No Limits
; GH *0;, GH *099 GH *09 GH '0? GH 6tora>e 7'*
+
ima>es8
Hi>hO Cery
hi>hO
*0)9 '0: '0,
'
Read speed
7pat - s8
'&;O )*;O ',* ):* ';? Brite speed
7ima>es per s8
Fes Fes Fes Fes No 6tandard sIl
7all Iueries
alloAed8
Ms ccess My6LL
INN24H
Ms6LL
)**;
Huilt(in
6ILite
Huilt(in
dbase
Type
Fes
N-
N-
B-L
N-
N-
N-
N-
N-
:)'
No
N3LL
No 5robably 5robably 5robably FesO No No
Can servers
share databaseZ
&
Fes
)
Hi>h
C53
loadO
B-L
"ast
Fes
No
0.3$ >,
3.0
312
Fes
My6LL
MyI6M
Ma# *0)?
million
ima>es
Not tested "ineO
db mainten(
ance reI(
uired
6li>htly
reduced
speed
6loA
startup
"or very lar>e
databases
B B-L B-L B B B-L 26
Fes
"ast
Fes
No
*09 GH
'0?
)'?
Fes
5ost>res
"ast "ast "ast "ast 6loA 6tartup speed
Fes Fes
)
No Fes Fes "ree
24HC
reIuired
Fes 6loA
install
Fes Cery .asy to setup
)?*0***
ima>es
No No No No Limits
; GH *0;, GH *099 GH *09 GH '0? GH 6tora>e 7'*
+
ima>es8
Hi>hO Cery
hi>hO
*0)9 '0: '0,
'
Read speed
7pat - s8
'&;O )*;O ',* ):* ';? Brite speed
7ima>es per s8
Fes Fes Fes Fes No 6tandard sIl
7all Iueries
alloAed8
Ms ccess My6LL
INN24H
Ms6LL
)**;
Huilt(in
6ILite
Huilt(in
dbase
Type
catchin> up0 More e#perienced users may bene@it @rom 6LL server althou>h per@ormance problems
occur under certain situations0 3sin> Microso@t ccess should be avoided0
6ince database speeds are similar! @amiliarity Aith a database may be the best reason to select oneJ
APPENDIX 2. Using Conquest 1.4.12 with Wampp Apache!
"#$%&! P'P( th)ough *D+C ,# Dipl.-Ing. 'ans Dietma) .oigt!
2//0/121.
3O5>- !arts o* t+is section do not a%%ly to native MyS;) driver in version 1.4.17, ot+er %arts a%%ly
to any OD?C ,ased data,ase.
I woul1 a12ice using o3 Wampp cause #ou can ,uil1 up a we, inte)3ace 3o) conquest with php.
*3 cou)se #ou can also install with m#sql 4./X onl#.
5ou nee1 the 3ollowing 3iles6
Wampp 1.7.7 http688www.wampse)2e).com8en8in1e9.php (
"#*D+C-:.41.12.e9e http6881e2.m#sql.com81ownloa1s8connecto)8o1,c8:.41.html ( msi 2e)sion
m#sqlcc-/.;.4-win:2.<ip http688pu,lic.planetmi))o).com8pu,8m#sql8Downloa1s8"#$%&CC (
=he installation o3 Wampp is )eall# eas#! >ust 3ollow the )ecommen1e1 steps6
p)ess ne9t an1 3ollow the steps

he)e #ou shoul1 p)ess o?! www is the 3ol1e) 3o) #ou) php p)ogs

'e)e #ou shoul1 loo? 3o) the 3ol1e) whe)e the e9ecuta,le 3ile o3 the Inte)net E9plo)e) is sto)e1! ma#,e the
"ic)oso3t e9plo)e) o) @i)e3o9.

now the pac?age shoul1 ,e installe1 success3ull#. Now #ou shoul1 )esta)t all se)2ices. A small icon shoul1
appea) in the tas? line. 5ou shoul1 )ea1 the message A all se)2ices )unning A.
Creating the Database Conquest ith the !"S#L $ontro% $enter
T&IS IS NOT RE#UIRED 'IT& T&E NATI(E !)S#L DRI(ER IN (ERSION 1.*.1+,
Now we install the "#$%& cont)ol cente) m#sqlcc.e9e ( =he)e is not much to tal? a,out! #ou onl# shoul1 3ollow
the steps. C)eating the se)2e) an1 the 1ata,ase conquest. We open the the "#$%l Cont)ol Cente)! the)e the
Console "anage) an1 3ollow the steps ,elow

the)e we name the se)2e)! li?e BpacsC in this e9ample! the use) is )oot! ,ut #ou can name anothe) use) as well.
We c)eate now the DconquestD 1ata,ase
@o) this #ou nee1 to open the line Ne Database an1 a11 conquest
choose #ou) use) )oot in ou) e9ample ( an1 set the ma)?ings as suggeste1 an1 p)ess Appl#. 5ou can choose
an# othe) use)! ,ut then #ou ha2e to c)eate one ,e3o)e. I pe)sonall# woul1 p)e3e) the supe)use) )oot.
Setting u- the OD.C Dri/er
T&IS IS NOT RE#UIRED 'IT& T&E NATI(E !)S#L DRI(ER IN (ERSION 1.*.1+,
Now we con3igu)e the *D+C 1)i2e) to point to the new DconquestD 1ata,ase #ou ha2e >ust c)eate16 @o) this #ou
ha2e to open the a1minist)ation an1 the)e the o1,c icon he)e in Ee)man6 (
Now #ou ha2e to a11 the 1)i2e). 5ou shoul1 at it to the $#stem D$N an1 the Use) D$N! the steps a)e equal.
I
@ill the lines li?e suggeste1 a,o2e. I3 e2e)#thing is co))ectl# con3igu)e1! #ou can t)# the se)2e) ,# p)essing the
,utton Dtest 1ata sou)ce.D
Con0iguring Conquest1 using OD.C a$$ess to an" ser/er 2not 0or nati/e !"S#L3
Un<ip all the conquest-3iles to 1 3ol1e) apa)t 3)om the DA=A 3ol1e) an1 the ,1einstall (! name1 li?e Conquest o)
Pacsse)2e) o) what e2e) #ou li?e. =hen sta)t the conquest 1icom se)2e) with a 1ou,le clic?! then the)e shoul1
appea) the 3ollowing pop-up6
5ou shoul1 the sql 1)i2e) e2en when using "#$%& an1 p)ess o?a# then. I3 #ou choose the nati2e "#$%& 1)i2e)!
the installation is simpli3ie1.
'e)e #ou name #ou) se)2e) an1 ma?e #ou) ent)ies. =hen push F$a2e con3igu)ationG. =o ma?e the C*N%UE$=
se)2e) )unning! close it! ma?e the 3ollowing changes in the 3ile 1icom.ini insi1e the Conquest 1i)ecto)# ='I$ I$
N*= NECE$$AH5 WI=' ='E NA=I.E DHI.EH(! an1 then )esta)t the se)2e)6
8 Cost1ignored4' na#e' userna#e and passKord &or O,-C data sour"e
SQ=Cost . %o"a%host
SQ=Ser$er . pa"s
Userna#e . root
PassKord .
,ou%e-a"?S%ashTo,- . 1
=hen #ou shoul1 )esta)t the se)2e) an1 2e)i3# the 1ata,ase installation. A3te) this #ou shoul1 )einitiali<e the
1ata,ase at least with a 1icom test-3ile. I use a patient stu1# 3o) this. @u)the)mo)e I woul1 c)eate a sho)tcut 3)om
the ConquestDIC*"$e)2e).e9e an1 put it in the autosta)t 3ol1e)! then the conquest se)2e) is alwa#s )unning
when #ou ha2e sta)te1 #ou) s#stem! othe)wise install se)2e) as N= $e)2ice.
=hats all! #ou) s#stem shoul1 )un now. =he installation with "s$%&2/// is simila)! an1 ma# ,e easie). @o) the
)est #ou shoul1 loo? at the manual.
.iele E)IJe un1 2iel E)3olg
Dipl-Ing. 'ans Dietma) .oigt
APPENDIX :. Using Conquest as a DIC*" )oute) an1 gatewa#.
The ConIuest 4IC2M server has @unctionality to route incomin> 4IC2M ima>es to other servers
74IC2M router8 and to @orAard incomin> Iuery-move reIuests to other servers 74IC2M >ateAay or
virtual server80 The @irst option is o@ten used to distribute ima>es over multiple servers based on @ilters0
The second option makes ConIuest a per@ect ima>e cache and-or central point o@ access @or your
hospitalKs 5C60
Con@i>uration o@ both options is throu>h 4IC2M0INI0 It is advised to only chan>e 4IC2M0INI Ahen
the server is closed! as Usave settin>sU in the G3I Aill overArite your @resh chan>es0 HoAever! @or
makin> thin>s Aork$ most items can be chan>ed Ahile the server is runnin> e#cept >#%ortConverters0
DIC*" Houting
The @olloAin> shoAs some e#amples o@ 4IC2M routin>0 There are + e#port converters installed 7out o@
ma#imal )*$ .#portConverter*00',8! Aith di@@erent @ilter options$
"orAardssociationLevel N 6.RI.6
"orAardssociationClose4elay N ?
"orAardssociationRe@resh4elay N &+**
.#portConverters N +
.#portModality* N CT
.#port6tationName* N CTS6CNN.R
.#portCalled.* N C2NL3.6T6RC'
.#portCallin>.* N C2NL3.6T6RC)
.#port"ilter* N RoAs N ?') and Columns N ?')
.#portConverter* N @orAard to 6.RC.R'
.#portModality' N MR
.#portConverter' N @orAard compressed as j) to 6.RC.R)
.#portModality) N RTO
.#portConverter) N @orAard to RT6.RC.R; @orAard to RT6.RC.R) or> MF6.RC.R
.#portConverter& N @orAard patient to CI.B.R.
.#portConverter: N @orAard study to 6.RC.R&
.#portconverter? N i@eIual U[uU!U6.RC.R)U; stop; betAeen U,U! U'9U; de@er; @orAard to 6.RC.R)
Note t7at one o" 4o"e s.aces a"o&n0 t7e E J E a"e obli!ato")J The item >#%ortConverters
determines the number o@ converters in use0 n e#port converter is an e#ternal or internal pro>ram that
is run @or each incomin> ima>e slice o@ prescribed Modality! 6tationName! Called. and Callin>. 7O
matches anythin>! this is the de@ault value80 Note that an empty strin> is not the same as MOK! empty
strin> Aill only match! e0>0! empty Modality0
"iles that match all items above are tested a>ainst an optional 6LL statement in .#port"ilterN! e0>0!
Ia$e3u,er )I7> @1A@ matches all ima>es Aith an ima>e number startin> on '0 ll @ields in the
database can be used in the 6LL statement Aith the e#ception o@ 5atientI4 7Ima>e5at may be used
instead8! 6tudyInstance3I4 and 6eriesInstance3I40 6ince the 6LL @ilterin> is relatively sloA it is
advised to also-only use the hard coded @ilter options0
Note$ Bhen the built(in dHaseIII driver is used! @ilter Iueries are limited to @ields in the de(normali1ed
ima>e table! and only Iueries like$ Ia$e3u,er )I7> @1A@ and Modality 2 BM=C are supported0
6upported @ields are listed in the 4IC2MIma>es de@inition in dicom0sIl! and only the and keyAord is
supported0 6paces should be used e#actly as in the e#ample0
The M@orAard compressed as 00 toK option may use any style o@ N=I or R5.G compression usin> the
same values as de@ined @or 4ropped"ileCompression0 In the e#ample! MR is @orAarded usin> loss(less
R5.G compression to 6.RC.R)0 The Qor>Q option @or D@orAard toQ and Q@orAard compressed as ## toQ
alloAs settin> the name o@ the ori>inatin> server0 This may be used to alloA a 4IC2M router mimic the
ori>inal sender0
Bhen an e#port @ails! e#ports on that converter are blocked @or +* s 7NDailEoldO**8; Ahile '** s
7N=etryDelay8 a@ter the last @ailure they Aill be automatically retried based on data stored in @iles like
M.#port"ailures?+9;S*K 7Ahere ?+9;Nport number! *Nconverter number80 These @iles may sometimes
need to be deleted 7the G3I asks so at startup8 to stop endless retries or limit the number o@ retries by
settin> Ma#iu>#%ort=etries other than *0
The @la> Dor0ard"ssociation)evel may have values VGL2HL! 625CL66! 5TI.NT! 6T34F!
6.RI.6! IMG.W0 "orAarders keep the association open as lon> as the 3I4 at
Dor0ard"ssociation)evel does not chan>e0 The de@ault is 6.RI.6! creatin> a neA association @or each
series0 Hy chan>in> to more >lobal settin>s more ima>es are sent per association! improvin>
per@ormance0
HoAever! associations are alAays closed Ahen a neA ima>e type V625CL66W is sent that Aas not
sent be@ore by this converter0 @ter Dor0ard"ssociationCloseDelay seconds o@ inactivity 7de@ault ?8!
the association is closed0 @ter Dor0ard"ssociation=e*res+Delay seconds o@ inactivity 7de@ault &+**8
the list o@ knoAn sop classes is deleted0 This latter option avoids havin> to restart conIuest Ahen other
servers chan>e their capability0
The M@orAard patient to K option is a '* minutes 7con@i>urable thou>h Dor0ardCollectDelay8 delayed
@orAard o@ the entire patient study 7entire study or series can be handled in the same Aay8 to another
server0 I0e0! even i@ a sin>le ima>e is received! the entire patient is @orAarded0 This is use@ul to ensure
that all data at a >iven patient level is available Ahen @orAardin> i0e0! a neA ima>e to a vieAer like k(
pacs 7needed @or the typical situation Ahere a physician Aould like to compare a neA scan Aith older
scans! >ivin> @ast access80 It is also use@ul to ensure that all data is transmitted on a sin>le association0
2ther neA delayed e#port and import options are Upre@etchU 7read data @rom disk to put it in cache!
use@ul Ahen data is stored on hierarchical stora>e8 and Upreretrieve 6.RC.RU 7collect all data on
incomin> patient @rom server! use@ul Ahen conIuest is used as cache @or a bi> 5C680 They are all
e#ecuted on a sin>le thread one at a time in order o@ reception0 4ata that is collected by a UpreretrieveU
statement is not processed by import( or e#port(converters0 The ma#imum number o@ retries @or these
delayed options is set throu>h Ma#iuDelayedDetc+Dor0ard=etries.
.#port converters lines are e#ecuted asynchronously 7they are Iueued in memory in a Iueue o@
;ueueSi/e len>th8 but Aill someAhat sloA doAn operation o@ the server0 I@ one line contains multiple
commands 7separated by ;8 these are e#ecuted one by one in seIuence0 In( and e#portconverters noA
have a small scriptin> lan>ua>e and-or lua; alloAin> even more @le#ibility in routin>! see ?0)0'! pa>e
&'0
.#portconverter? is a real(li@e e#ample o@ this scriptin> lan>ua>e0 This script uses the commands
Qi@eIual U[uU!U6.RC.R)U; stop;Q to i>nore all data Aith callin> . o@ Q6.RC.R)Q0 This Aill avoid any
data @rom 6.RC.R) to be sent back to 6.RC.R) causin> a potential loop0 The commands QbetAeen
U,U and U'9U; de@erQ cause the converter to Aait until a@ter '9$** be@ore subseIuent commands are
processed usin> the retryin> mechanism0 The last command @orAards the data to 6.RC.R)0 Havin> a
similar line in 6.RC.R) @orAardin> to 6.RC.R' Aill cause both servers to synchroni1e a@ter '9$**
Aithout a loop0
DIC*" Houting without 1ata,ase
The @olloAin> demonstrates database(less 4IC2M routin> usin> ImportConverters$
6LLHost N
6LL6erver N
3sername N
5assAord N
"orAardssociationLevel N 6.RI.6
ImportConverter* N i@eIual D[mE! DCTE; \ @orAard to .'; destroy; ]
ImportConverter' N i@eIual D[mE! DMRIE; \ @orAard to .); destroy; ]
The empty database entries makes that the system uses a N3LL database driver0 The DdestroyE
command in the ImportConverters stops the data @rom bein> stored on disk0 6ettin> the
"orAardssociationLevel limits the number o@ associations used to connect to .' and .)0 Note$
.#portConverters or delayed @orAard statements 7such as D@orAard study to .E8 cannot be used in this
setup since the ima>es are not stored and there@ore cannot be transmitted later0
DIC*" Eatewa# o) 2i)tual se)2e)
4IC2M >ateAay operation is simpler0 Rust add lines like these to your 4IC2M0INI$
Cirtual6erver"or* N 6.RC.R'
Cirtual6erver"or' N 6.RC.R)!CCH.6T34I.6
Cirtual6erver"or) N 6.RC.R&!CCH.6T34I.6!N2NCIRT3L
Lueries and move reIuests sent to the local server are @orAarded to the >iven . titles in
Cirtual6erver"or*00,0 The . titles must be knoAn in "C=3>M".M"!0 The client Aill e@@ectively see
all data o@ the listed servers and this one er$ed Y at the cost o@ Iuery speed0 The mer>in> occurs
durin> eac+ Iuery in memory0 Bhen moves are per@ormed! ima>es retrieved @rom the listed servers are
stored locally 7i0e0! the server @unctions as a 4IC2M cache80 This option makes ConIuest a per@ect
ima>e cache and-or central point o@ access @or your hospitalKs 5C60
Bith version'0:0'?! a @la> Cirtual5er6eries*00, has been added0 It de@aults to *! meanin> that a virtual
server collects ima>es on an ima>e per ima>e basis0 In some cases this may not Aork! settin> this value
to N means that i@ there are more than N ima>es to be collected this Aill be done on a series per series
basis0 "or =odak! N should be set to '***0
6ince '0:0'+! server names may also be appended Aith Q!CCH.6.RI.6Q or Q!CCH.6T34I.6Q0 In
this case! repetitive Iueries in the IMG. table are cached locally at 6.RI. or 6T34F level! under
the @olloAin> @ilenames$ MG*TprinterS@ilesTIuerycacheTFFFFTMM44T########0Iuery and
MG*TprinterS@ilesTIuerycacheTFFFFTMM44T########0result0 This option typically makes access
to sloA 4IC2M servers much Iuicker0 lso option O#e"la.'i"t&al>et has been added! i@ set other
than *! data comin> in @or other 7virtual8 servers is transmitted directly throu>h to clients0 The value
determines hoA many objects are kept in memory0 dd @la> Q!N2NCIRT3LQ to instruct the virtual
server 7must be recent version8 to not @orAard reIuests to its oAn virtual servers 7to avoid loops and
double entries80
55.N4I< :0 HoA to set up a Redundant ConIuest 4IC2M 6erver in a
TAo(Node BindoAs Cluster .nvironment
lternate Titles I couldnQt decide $8
ConIuest Redundancy in .i>ht .asy 6teps
ConIuest "reedom in .i>ht .asy 6teps
ConIuest Cluster in .i>ht .asy 6teps
To set up ConIuest in a @ailover! redundant environment that Aill be virtually seamless to end(users
Aho need a hi>hly reliable system! Ae installed ConIuest in a BindoAs Clustered environment0 This
environment is ctive-5assive meanin> that only one node has control at any time o@ the shared drive
Ahere all the ima>es are received0 The second node sits passively Aaitin> to be manually or
automatically @ailed(over0
This hoA(to Aill not e#plain hoA to install and con@i>ure BindoAs Clustered 6ervices0 There are many
documents online detailin> hoA to set up a )% node BindoAs Cluster! and BindoAs Cluster
@undamentals0 6etup Aill reIuire the e#pertise o@ a BindoAs server administrator0
In our case! the cluster environment already e#isted and Ae installed ConIuest as a 4IC2M
server-listener on these e#istin> servers0 I@ the cluster is in place! you can set up and test all o@ the
@olloAin> in a couple hours especially i@ you are already @amiliar Aith ConIuest
6.T(35
26$ BindoAs )**& 6erver! Clustered .nvironment
"ile6ystem$ Ceritas Colume MGR installed to mana>e 6N shares ( you can
use Ahatever you Aant as lon> as there is a shared drive available0
Nodes$ 6erver 7',)0'+;0'0+8! 6erver H 7',)0'+;0'098
Cirtual I5 ddress created @or cluster$ ',)0'+;0'0?
Local drive letter$ C$T
Clustered drive letter$ G$T drive @or e#ample represents a 6N share that is available to the active
node in the cluster
4IC2M 6C3 4evice$ any CT scanner! 4IC2M Aorkstation! or other hospital
5C6! in our environment Ae use TeraMedica .vercore since Ae reIuire
stora>e o@ 4IC2M(RT and 4IC2M(RT(I2N0
IN6TR3CTI2N6
7'8 6et(up tAo BindoAs )**& servers i@ not already in place0 Con@i>ure clustered services and a shared
drive i@ not already in place0
7)8 2nce the cluster is con@i>ured! you should have a drive letter typically mounted @rom a 6N that is
shared to only one server node at a time0 In this case! Ae call it G$T drive0
7&8 2nce the cluster is con@i>ured and tested @or @ail(over! you Aill have a Cirtual I5 address 7e0>0!
',)0'+;0'0?8 and tAo physical servers$ 6erver 7',)0'+;0'0+8 and 6erver H 7',)0'+;0'0980 Bhen you
pin> the Cirtual I5! you are actually pin>in> Ahatever is the active node in the cluster0 2nce you
complete all steps! Ahen ever you send 4IC2M data to the Cirtual I5! you are actually sendin> it to
Ahichever node is active as the primary node0
7:8 Install ConIuest on the active node local hard drive C$T
7?8 The active node is connected to the shared! clustered drive! G$T drive in our case0 Con@i>ure
ConIuest to use some G$T path instead o@ C$T path @or all 4IC2M @iles0 Con@i>ure ConIuest to use the
same e#act . Title and port number on both nodes0 Fou can use the de@ault .T-port^ provided by
ConIuest
7+8 Install ConIuest as an NT 6erver 6ervice so that it Aill run ):-9 listenin> @or incomin> data0 "olloA
the rest o@ the ConIuest instructions @or customi1ation! setup! etc00
798 "ailover or ask your BindoAs 6erver dmin to @ailover to second node! 6erver H0 NoA that 6erver
H is the active node0 repeat steps ^:! ^?! ^+ on 6erver H0
7;8 IM52RTNT$ noA con@i>ure your CT scanners! 5C6! other 4IC2M 6C3 device to send 2NLF
to the UCIRT3L I5U address @or the BindoAs Cluster 7e0>0! ',)0'+;0'0?80 This means that no matter
Ahich node is currently active! all the @iles Aill >o to the G$T drive0 Hoth nodes have the same port^ and
.T! but it AonQt matter since only one node is actually receivin> data at a time! because only one node
receives data throu>h the virtual I50
ConIuest is technically listenin> actively on both nodes but it doesnQt matter0 ll 4IC2M data is bein>
sent to the virtual I5 address so only the active node that is actively connected to the G$T drive Aill
actually receive the data0 s soon as cluster is @ailed(over to second! passive node! then that server
becomes active and starts receivin> the 4IC2M @iles0
Be tested this many times causin> the nodes to @ail(over Ahile actively sendin> @iles be@ore and durin>
a @ail(over0 It Aorks pretty Aell and usually our 4IC2M 6C3Qs just attempted to resend i@ it @ailed
Ahile the nodes Aere in the middle o@ a @ail(over0 Four milea>e may vary! but it makes your system a
lot more redundant and you donQt have to Aorry about any sin>le server point o@ @ailure0 lthou>h this
Aas done in a BindoAs Cluster! IQm sure you could create the same situation in a Linu# Cluster0
Happy ConLuestin>J
=im L0 4an>
55.N4I< ?0 3sin> C2NL3.6T B.H server
6ince version '0:0;! a small B.H inter@ace has been built in into the ConIuest 4IC2M server0 To
enable it! you need to put 0!ate.e5eA a special 0ico4.iniA 9o.tional: 0ico4.s;l as Aell as 7optional8
scripts into the c>i(bin directory o@ your B.H server! and 7optional8 Acti#eFo"4*"oK1.oc5 and
con;&est.K.! in the root directories o@ your Aeb server0 This has been tested Aith pache servers
runnin> and BindoAs! BM5?! and Microso@t II6 under NT:-BIN)=-<50 "or Linu# or 3ni#! the @ile
0!ate.e5e is replaced by the @ile 0!ate0 6ince '0:0'+! the Aeb inter@ace also accepts B42 reIuests0 In
'0:0'9! the Aeb server may be used as a B42 brid>e @or any 4IC2M 5C60 Beb pa>es can be
scripted by the user in the Lua pro>rammin> lan>ua>e0

The d>ate e#ecutable acts as a CGI inter@ace 7see routine 4>ateC>i in d>ate0cpp8 to a dicom server
7another d>ate e#ecutable8 that runs elseAhere 7most likely on the same computer! but may be on
another computer80 It uses 4IC2M0INI to set various thin>s like the I5 port on Ahich it communicates!
and it uses 4IC2M06LL to auto@ormat database pa>es 7e0>0! @or the Aorklist80 The communication >oes
throu>h a private 4IC2M inter@ace0 This setup has the advanta>e that the in(memory inde# o@ the
database can be reused by the B.H inter@ace0 lso! the status o@ the actual server can be seen @rom the
B.H inter@ace0 4IC2M06LL must alAays be the same as the one in the server that is used! there@ore it
is best to set the correct path0 The 4IC2M0INI used @or the Aeb server is a di@@erent one as the one in
the server0 It has a number o@ entries that are e#plained beloA$
8 This &i%e "ontains "on&iguration in&or#ation &or the "on5uest "gi Ke ser$er)
8 it #ust e in the sa#e dire"tor! as the dgate3e+e in the Ke ser$er s"ript dire"tor!3
8 @or Ka#p; dgate3e+e runs i& it is put in C;BKa#pB0pa"he:B"gi-in
8 The ser$er ho#e page is then Lhttp;//1:F393931/"gi-in/dgate3e+e*#ode.topL
8 The "gi inter&a"e has een tested Kith Ka#pJ' dgateM31:d' and ieIsp1
8
8 #odi&ied :99F9:1G; de&au%t to nM' note aout o"+ on%! re5uired on "%ient
8 #odi&ied :99H9E9:; Kereadon%! ON) graphi"s and $ieKer "on&igs) sa#p%e s"ripted Ke pages
8 #odi&ied :91911:1; 0dded Kadoser$ers se"tion
8 #odi&ied :91:9:1G; 0dded SQ=Ser$er' S5=ite 1ena%es %ua d5uer! and s5%' see sa#p%eG4
8 #odi&ied :91:9:1G; 0dded 0CRNe#a/ap' ,i"tiona! 1ena%es %ua di"o#5uer!' see sa#p%eG4
8 #odi&ied :91:9:1E; Organi<ed the genera% sa#p%es' e"r&' soap' OpenC%ini"a and Ason
8 #odi&ied :91G9J:J; 0dded a%% "urrent%! a$ai%a%e $ieKers
[ss"s"p]
/i"roP0CS . ss"s"p
Te#pdir . ";Bte#p
8 dataase %a!out 1"op! di"o#3s5% to the Ke ser$er s"ript dire"tor! or point to the one in !our di"o#
ser$er dire"tor!4
?@a"tor@i%e . ";Bdi"o#ser$erBdi"o#3s5%
Trun"ate@ie%dNa#es . 19
8 gi$es optiona% =ua s"ripting a""ess to the SQ= ser$er o& the ,ICO/ ser$er
8 use o& independent dataase is a%so a%%oKed 1depends on s"ripts used4
SQ=Cost . %o"a%host
SQ=Ser$er . "on5uest
Userna#e . "on5uest
PassKord . "on5uest
/!S5% . 1
,ou%e-a"?S%ashTo,- . 1
UseEs"apeStringConstants . 9
8 gi$es optiona% =ua s"ripting a""ess to a%% ,ICO/ ser$ers ?noKn in a"rne#a3#ap
0CRNe#a/ap . C;Bdi"o#ser$erBa"rne#a3#ap
,i"tionar! . C;Bdi"o#ser$erBdgate3di"
8 de&au%t IP address and port o& ,ICO/ ser$er 1#a! e non-%o"a%' Ke pages e#pt! i& Krong4
>eSer$er@or . %o"a%host
TCPPort . JIFH
8 0E tit%e; on%! used i& Ke "%ient originates 5ueries or #o$es
/!0CRNe#a . CONQUESTSRV1
8 path to s"ript engine; o"+ Ki%% not doKn%oad i#ages i& Krong - shoKs as %a"? s5uare Kith "ontro%s
8 &or Ka#p; dgate3e+e runs i& it is put in C;BKa#pB0pa"he:B"gi-in
>eS"ript0ddress . http;//%o"a%host/"gi-in/dgate3e+e
8 Ke or %o"a% %o"ation o& 0"ti$e@or#ProA13o"+ &or doKn%oad 1in"%ude trai%ing / or B4
8 the a"ti$eD "ontro% Ki%% not doKn%oad i& Krong or se"urit! too high -shoKs as Khite s5uare Kith red +
8 note; it on%! needs to e registered ! the "%ient' not the ser$erN
8 &or Ka#p; the o"+ "anNOT e in C;BKa#pB0pa"he:B"gi-in' I put it in ";BKa#pBKKK 1ao$e "gi-in4
8 - the de&au%t $a%ue is deri$ed &ro# >eS"ript0ddress
8>eCode-ase . http;//%o"a%host/
8 i& set to 1 1de&au%t4' the Ke user "annot edit dataases and 1in &uture4 other things
>eReadon%! . 1
>ePush . 9
8 this is an optiona% $irtua% dire"tor! used to http; a%% i#ages &ro# #ag9
8 this entr! is e+peri#enta% and unused e+"ept &or $ieKer.series$ieKer:
8 in this #ode 1on%!4 o"+ Ki%% not doKn%oad i#ages i& Krong - shoKs as %a"? s5uare Kith
8 "ontro%s - the de&au%t $a%ue is deri$ed &ro# >eS"ript0ddress
8>e/0O90ddress . http;//1:F393931/#ag9
8 e+"erpt &ro# C;BKa#pB0pa"he:B"on&Bhttpd3"on& re5uired &or >e/0O90ddress 1un-8 there4
8 or use the Ka#p tra!ar #enu to "reate the a%ias
80%ias /#ag9/ L";/di"o#ser$er/data/L
8
8P,ire"tor! L";/di"o#ser$er/dataLQ
8 Options Inde+es /u%tiVieKs
8 0%%oKO$erride None
8 Order a%%oK'den!
8 0%%oK &ro# a%%
8P/,ire"tor!Q
8 these settings "ontro% si<e o& s%i"e and series $ieKers' #a+ si<e o& trans#itted di"o# i#ages
8 19.origina%4' "o#pression &or i#ages sent to the a"ti$e+ 1un'n133M'A:'?133?M4' the si<e o&
8 the i"ons in the i#age %ist' the i#age t!pe used &or i"ons and s%i"e disp%a!' and the dgate
8 #ode "ontaining the $ieKer 1#a! e series$ieKer' series$ieKer:' no$ieKer' ser$erside$ieKer'
8 or ai$ieKer - Aa$a "ode o& the %atter not in"%uded Kith 13M31M43
8 note; a%% ite#s re5uire at %east one spa"e %e&t and right o& the R.R N
[Kede&au%ts]
si<e . JI9
dsi<e . 9
"o#press . un
i"onsi<e . MH
graphi" . gi&
$ieKer . ser$erside$ieKer
stud!$ieKer .
8 enter address 1up to not in"%uding the *4 o& the >0,O ser$er &or ea"h ,ICO/ 0E %isted
8 the sa#p%e 1&or 0E TEST>0,OSRV4 "o#es &ro# the ,ICO/ standard and is not $a%id
8 the de&au%t is the %o"a% "on5uest ser$er 1Khi"h "ou%d use $irtua%ser$ers as >0,O ridge4
8 i& a ridge is "on&igured' an! >0,O re5uest is &orKarded to that ,ICO/ ser$er
[Kadoser$ers]
TEST>0,OSRV . http;//KKK3hospita%-st#ar"o/radio%og!/Kado3php
ridge . 0EO@,ICO/SERVER
8 These entries de&ine a%% $ieKers &or Khi"h sa#p%e s"ripts are pro$ided
[i#ageAa$ieKer]
sour"e . $ieKersBi#ageAa$ieKer3"5
[dK$]
sour"e . $ieKersBdK$3%ua
[Keasis$ieKer]
sour"e . $ieKersB%aun"h>easis3"5
header . Content-T!pe; app%i"ation/+-Aa$a-An%p-&i%eB
[Keasisstud!$ieKer]
sour"e . $ieKersB%aun"h>easisStud!3"5
header . Content-T!pe; app%i"ation/+-Aa$a-An%p-&i%eB
[Keasisseries+#%]
sour"e . $ieKersBKeasisseries+#%3%ua
[Kadoseries$ieKer]
sour"e . $ieKersBKadoseries$ieKer3%ua
8this is the on%! pro$ided stud! $ieKer
[Keasisstud!$ieKer]
sour"e . $ieKersB%aun"h>easisStud!3"5
header . Content-T!pe; app%i"ation/+-Aa$a-An%p-&i%eB
[Keasisstud!+#%]
sour"e . $ieKersBKeasisstud!+#%3%ua
8 this "reates Ke page http;//+++++/"gi-in/dgate3e+e*#ode.sa#p%e
[sa#p%e]
$aria%e . sa#p%e 1
sour"e . sa#p%esBsa#p%e3"5
8 this "reates Ke page http;//+++++/"gi-in/dgate3e+e*#ode.sa#p%e:
8 This sa#p%e posts a &i%e
8 Note; in the header para#eter neK%ine is Kritten as B
[sa#p%e:]
$aria%e . sa#p%e :
header. Content-t!pe; te+t/ht#%BCa"he-Contro%; no-"a"heB
%ine9 . PCE0,QPTIT=EQCon5uest ,ICO/ ser$er - S$aria%eSP/TIT=EQP/CE0,Q
%ine1 . P-O,T -OCO=OR.RC@,@C@RQ
%ine: . PC:QCon5uest ,ICO/ ser$er - S5uer!6stringSP/C:Q
%ineG . P@OR/ 0CTION.Ldgate3e+eL /ETCO,.POST ENCTTPE.L#u%tipart/&or#-dataLQ
%ineM . PINPUT N0/E.#ode TTPE.CI,,EN V0=UE.soapre5uestQ
%ineJ . PINPUT N0/E.port TTPE.CI,,EN V0=UE.JIFHQ
%ineI . PINPUT N0/E.address TTPE.CI,,EN V0=UE.1:F393931Q
%ineF . Up%oad &i%e to enter into ser$er 1d"#/$:/C=F/<ip/F</g</tar4; PINPUT N0/E.&i%etoup%oad SIUE.M9
TTPE.&i%e V0=UE.Q
%ineH . PINPUT TTPE.SU-/IT V0=UE.OoQ
%ineE . P/@OR/Q
%ine19 . P/-O,TQ
8 this "reates a Ke page s"ripted in %ua http;//+++++/"gi-in/dgate3e+e*#ode.sa#p%eG
8[sa#p%eG]
8sour"e . sa#p%esBsa#p%eG3%ua
8 these entries "reate an e+peri#enta% a SO0P inter&a"e s"ripted in %ua
[Ksd%]
sour"e . soapBKsd%3+#%
header . Content-t!pe; te+t/+#%B
[soapre5uest]
sour"e . soapBsoapre5uest3%ua
8 these entries "reate an e+peri#enta% VSON inter&a"e s"ripted in %ua
[sa#p%eM]
sour"e . AsonBAson6sa#p%e3ht#%
header . Content-t!pe; te+t/ht#%BCa"he-Contro%; no-"a"heB
[Asonre5uest]
sour"e . AsonBAsonre5uest3%ua
8 these entries "reate a si#p%e eCR@ inter&a"e
8 33*#ode.stud!&inderWdest.CONQUESTSRV1W?e!.a&"9J91;ase%ineW5uer!..:9M9DDDD
8 "reates SQ= dataase and enters in&or#ation
[#ar?stud!]
sour"e . e"r&B#ar?stud!series3%ua
"aption. Se%e"t &or su#ission
[#ar?series]
sour"e . e"r&B#ar?stud!series3%ua
"aption. Se%e"t &or su#ission
8 shoK SQ= dataase and se%e"ts pro"essing
)[shopping"art]
)sour"e . e"r&Bshopping"art3%ua
)"aption. Pro"ess se%e"ted data
8 pro"ess in&or#ation
[e"r&pro"ess]
sour"e . e"r&Be"r&pro"ess3%ua
8 de&au%t
[,e&au%tPage]
sour"e . 23%ua
8 "on&iguration o& the OpenC%ini"a P0CS %in? =ua s"ripts
[OpenC%ini"a]
Sour"e.1%o"a%4
TargetSer$er.userXser$er3do#ain;
passKord.a#sterda#
8 0n!Page Y i& set redire"ts an! Ke page re5uest to this s"ript) e&&e"ti$e%! disa%es Ke ser$er
8 [0n!Page]
8 sour"e . Keroot3%ua
Here are some snapshots0 This is the home pa>e 7Aith neA upload option8$
6erver con@i>uration 7incomplete and read only @or noA8$
List studies 7links to list series8$
5ush a series to another 4IC2M station$
List series 7the thumbs link >oes to an ima>e list Aith icons! the patient I4 to one Aithout icons! the
vieA hyperte#t links to the =(5C6 ctive< vieAer8! the push link alloAs movin> data to another
server! the delete link to remove the current series 7not enabled by de@ault8$
List ima>es Aithout icons$
List ima>es Aith icons$
CieA ima>es Aith =(5C6 vieAer Y @or internet e#plorer only ( 7set vieAerNseriesvieAer in
dicom0ini8! and the minimal server side vieAer 7vieAerNserversidevieAer in dicom0ini8! Ahich has
better @rame control$
I@ vieAer N novieAer$
6hoA ima>e as GI"! HM5 or R5G ima>e and shoA header$
List Aorklist$
.dit or add to Aorklist$
The @ind button on the main pa>e alloAs Iueryin> other servers$
"ind 5atient Aill search a substrin> o@ name or patient I4! "ind 6tudy-6eries Aill search a substrin> o@
name or patient I4 or a study-series date 7yyyy! yyyymm! yyyymmdd! or date ran>e80 5ush Aill initiate
copyin> o@ data @rom the selected server to any other server knoAn in ac"ne4a.4a.. The Iuery can >o
doAn to ima>e level and a minimal B42 vieA option is o@@ered0
This option Aill try to access the ima>e throu>h B42! Ahich by de@ault Aill try to @ind the ima>e
locally or throu>h a virtualserver entry! makin> C2NL3.6T a 4IC2M to B42 brid>e0
Note '8$ some broAsers Aill not correctly re@resh dynamic pa>es such as the Aorklist table0 In this case!
use "? to re@resh the pa>e manually0
Note )8$ Help Aith @urther development o@ B.H pa>es Aould be appreciated0 small script en>ine is
noA built in 7see sa4.le.c;8! that alloAs addin> Aeb pa>es Aithout recompilin> d>ate0e#e0 It Aorks by
substitutin> items like [variable[! and runnin> d>ate 7see appendi# +8 to collect data @rom the server
@or the Aeb pa>e0 6ee the description o@ 0ico4.ini at the start o@ this section0
Here is sample0cI$
PCE0,QPTIT=EQCon5uest ,ICO/ ser$er - S$aria%eSP/TIT=EQP/CE0,Q
P-O,T -OCO=OR.RC@,@C@RQ
PC:QCon5uest ,ICO/ ser$er - S$aria%eSP/C:Q
P-RQ
8this is e5ui$a%ent to; dgate L--disp%a!6status;L
8Khere the output is sent to the Ke page 1un5uoted4
P%istingQ
--disp%a!6status;
P/%istingQ
PhrQ
8the &or#at para#eter o& the dgate -- "o##and is used to "reate CT/= tags
--get6a#aps;PrQSs PstrongQSs SsP/strongQ
PhrQ
8e+a#p%e o& dataase 5uer!
--5uer!:;,ICO/PatientsZPatientI,ZZPrQSs
P/-O,TQ
and its output$
In the Aeb pa>e templates! lua code can be embedded since version '0:0'90 Beb support @or lua is noA
Iuite complete0 In the Aeb con@i>uration dicom0ini you can base pa>es entirely on lua scripts$
V@le#vieAer)W
source N @le#vieAer)0lua
In the passed lua script you can call$
HTML7strin>! ar>'! 00008 (( to output HTML code
print7CGI7QnameQ8! CGI7QnameQ! Qde@aultQ88 (( to read CGI parameters
In the Aeb templates you can use this construct to embed lua code 7ZP must be on separate line8$
_Zlua
00000
ZP
nd this construct to output lua strin>s as HTML 7must all be on one line8$
Code$ 6elect all
_[N 0000 [P
These constructs are intended to be similar to Lua CGI0
55.N4I< +
The @olloAin> listin> shoAs the output o@ d>ate (Z 7alAays in pro>ress8 $
DGATE: UCDMC/NKI DICOM server thread and PACS utility appliati!n "#$#"%&
Usa'e:
(") DGATE *+,-.+v.+u-.+/-0 1ep!rt as in di!2#ini.std!ut.UDP.3ile(-4p!rt)
5+p-.+6IP.+78 Set p!rt.Set tar'et IP.run de7u' "+thread 2!de
5+9DI18 Set the 9!r&in' diret!ry :!r d'ate(ini;di;###)
5+i.+r.+arDE<ICE8 Init.Init/re'enerate D=.1e'en sin'le devie
5+d.+2.+&8 >ist (+d) devies (+2) AE 2ap (+&) DICOM#S?>
5+t.+!8 Test !ns!le.Test data7ase
5+sOpt.+esap d u p8 Create OD=C s!ure (@INAB); data7ase 9ith SAp9
5+nd.+n-.+Cd.+C-8 NKI de+/!2press-.DPEG de+/!2press- 3I>E
5+CE--.+C+--3I>E8 1e!2press 3I>E t! --
5+as-;N.+a231OM;TO8 Selet-K= t! arhive !: MAGN.2!ve devie data
5+au.+ae31OM;TO8 Und! selet :!r arhivin'.rena2e devie
5+av.+atDE<ICE8 <eri:y 2irr!r dis&.Test read :iles :!r DE<ICE
5+a7DUKE=OF"#B;N8 Ma&e aheset t! 7urn DUKE=OF";CDB :r!2 MAGN
5+aDUKE=OF"#B8 <eri:y DUKE=OF";CDB a'ainst aheset
5+adDUKE=OF"#B8 <eri:y and delete aheset :!r DUKE=OF"; CDB
5+:*p.t.s.i0ID8 Delete D= :!r Patient; sTudy; Series; I2a'e
5+:*e.d.G0:ile8 Enter/Delete D= !: :ile; Hap server :ile
5+:a3I>E*;ID08 Add :ile t! server*!pti!nally han'e PATID0
5+GID8 Delete (Gap) patient
5+:rDE<ICE;DI18 1e'en sin'le diret!ry DI1 !n DE<ICE
5+:*.&0PATID;:ile8 Chan'e/K!py PATID !: :ile (irreversi7le/!ne)
5+:I:ile.+:u.+-8 'et UID !: :ile.Ma&e ne9 UID.UID helper(J##KK)
5+::-8 Delete !ld patients until -M= :ree
5+'SE1<E1;DATE8 'ra7 i2a'es :r!2 SE1<E1 !: date n!t !n here
Other9ise: run as threaded server; p!rt4""""
(B) DGATE 3ileMappin' 1un server hildL shared 2e2!ry has s!&et-
(A) DGATE *+pPO1T0 *+6IP0 ++!22and:ar'u2ents
Send !22and t! (this !r !ther) runnin' server
(9!r&s diretly + use 9ith are)
Delete !pti!ns:
++deletei2a'e:ile::ile Delete 'iven i2a'e :ile :r!2 server
++deletepatient:patid Delete 'iven patient :r!2 server
++deletestudy:patid:studyuid Delete 'iven study :r!2 server
++deletestudies:date(ran'e) Delete studies :r!2 server !n date
++deleteseries:patid:seriesuid Delete 'iven series :r!2 server
++deletei2a'e:r!2d7::ile Delete 'iven :ile :r!2 d7 !nly
++deletes!p:r!2d7:pat;study;series;s!p Delete spei:ied i2a'e :r!2 d7 !nly
DICOM 2!ve !pti!ns:
++2!vepatient:s!ure;dest;patid M!ve patient; s!ure e#'# (l!al)
++2!vestudy:s!ure;dest;patid:studyuid M!ve study; patid: !pti!nal
++2!vestudies:s!ure;dest;date(ran'e) M!ve studies !n date
++2!veseries:sr;dst;patid:seruid;stuid M!ve series patid: !pti!nal
M!di:iati!n !: di!2 !7Cets:
++2!di:ypatid:patid;:ile Chan'e patid !: 'iven :ile
++an!ny2iGe:patid;:ile An!ny2iGe 'iven :ile
++2!di:ystudy:p;s;sript Chan'e ite2s in patient !r study
++2!di:yseries:p;s;sript Chan'e ite2s in series
++2!di:yi2a'e::ile;sript Chan'e ite2s in :ile
++2er'estudy:uid;uid;## Start 2er'in' studies 9ith 'iven studyuids
++2er'estudy:ile::ile Use t! pr!ess all :iles t! 2er'e
++2er'eseries:uid;uid;## Start 2er'in' series 9ith 'iven seriesuids
++2er'eseries:ile::ile Use t! pr!ess all :iles t! 2er'e
++attahanyt!patient:any;sa2ple M!di:y uids t! attah any !7Cet t!
++attahanyt!study:any;sa2ple patient.study.series in sa2ple :ile
++attahanyt!series:any;sa2ple D! n!t attah sa2e at di::erent levels
++attahrtplant!rtstrut:plan;stru Attah rtplan t! rtstrut
Maintenane !pti!ns:
++initialiGeta7les: Clear and reate data7ase
++initialiGeta7les:" Clear and reate data7ase 9ith!ut indies
++initialiGeta7les:B Clear and reate 9!r&list data7ase
++re'en: 1e+'enerate entire data7ase
++re'endevie:devie 1e+'enerate data7ase :!r sin'le devie
++re'endir:devie;dir 1e+'enerate data7ase :!r sin'le diret!ry
++re'en:ile::ile 1e+enter 'iven :ile in data7ase
++2a&espae:- Delete !ld patients t! 2a&e -M= spae
++6uit: St!p the server
++sa:e6uit: St!p the server 9hen n!t ative
>!''in' !pti!ns:
++de7u'l!'M!n::ile/p!rt Start de7u' l!''in'
++l!'M!n::ile/p!rt/pipe Start n!r2al l!''in'
++de7u'level:- Set de7u' l!''in' level
++displayMstatus::ile Display server status
++statusMstrin'::ile Display status strin' !: su72it !perati!n
++he&lar'est2all!: Esti2ates DICOM !7Cet siGe li2it
++'etM:reest!re:dev;:2t 1ep!rt :ree -M7 !n devie
++test2!de:- Append - t! di!2 :ilena2es
++eh!:AE;:ile Eh! serverL sh!9 resp!nse
C!n:i'urati!n !pti!ns:
++'etMpara2:na2e;:2t 1ead any para2eter :r!2 DICOM#INI
++'etMiniMpara2:na2e;:2t 1ead any para2eter :r!2 DICOM#INI
++'etMiniMnu2:indeN;:2t >ist any entry :r!2 DICOM#INI
++'etMini::2t >ist all entries :r!2 DICOM#INI
++putMpara2:na2e;value @rite any para2eter t! DICOM#INI
++deleteMpara2:na2e Delete any para2eter :r!2 DICOM#INI
++readMini: 1e+read all para2eters :r!2 DICOM#INI
++'etMa2ap:indeN;:2t >ist any entry :r!2 AC1NEMA#MAP
++'etMa2aps::2t >ist all entries :r!2 AC1NEMA#MAP
++putMa2ap:i;AE;ip;p-;2p @rite entry in 2e2!ry :!r AC1NEMA#MAP
++deleteMa2ap:indeN Delete entry in 2e2!ry :!r AC1NEMA#MAP
++9riteMa2ap: @rite AC1NEMA#MAP :r!2 2e2!ry t! dis&
++readMa2ap: 1e+read AC1NEMA#MAP :r!2 dis& t! 2e2!ry
++'etMs!p:indeN;:2t >ist any aepted servie lass UID
++putMs!p:indeN;UID;na2e @rite/add aepted servie lass UID
++deleteMs!p:indeN Delete aepted servie lass UID
++'etMtrans:er:indeN;:2t >ist any aepted trans:er syntaN
++putMtrans:er:in;UID;na2 @rite/add aepted trans:er syntaN
++deleteMtrans:er:indeN Delete aepted trans:er syntaN
++'etMappliati!n:idN;:2t >ist any aepted appliati!n UID
++putMappliati!n:i;U;n @rite/add aepted appliati!n UID
++deleteMappliati!n:inde Delete aepted appliati!n UID
++'etMl!alae:indeN;:2t >ist any aepted l!al AE title
++putMl!alae:in;AE;na2e @rite/add aepted l!al AE title
++deleteMl!alae:indeN Delete aepted l!al AE title
++'etMre2!teae:indeN;:2t >ist any aepted re2!te AE title
++putMre2!teae:in;AE;na2e @rite/add aepted re2!te AE title
++deleteMre2!teae:indeN Delete aepted re2!te AE title
++'etMdi:indeN;:2t >ist any di!2 diti!nary ite2
++'etMs6lde::level;in;:2t >ist any data7ase :ield de:initi!n
C!22uniati!n !pti!ns:
++addi2a'e:ile::ile;patid C!py :ile int! server; !pti!nally ne9 patid
++addl!al:ile::ile;patid C!py l!al :ile int! server; !pt# ne9 patid
++l!adanddeletedir:dir;patid >!ad :!lder and delete its !ntents
++l!adhlO::ile >!ad P>O data int! 9!r&list
++du2pMheader::ilein;:ile!ut Create header du2p !: :ile
++:!r9ard::ile;2!de;server Send :ile 9ith !2pr# 2!de t! server
++'ra7i2a'es:r!2server:AE;date Update this server :r!2 !ther
++pre:eth:patientid Pre:eth all i2a'es :!r i2pr!ved speed
++7r!9sepatient:searhstrin' Selet patient in 9ind!9s GUI
++su72it:p;s;s;s;tar'et;p9;sr I22ediate s:tp su72it !: data
++su72itB:p;s;s;s;tar'et;;sr I22ediate su72it 9ith !22and line
++eNp!rt:p;st;ser;s!p;:ile;sr I22ediate pr!ess and Gip/OG data
++sheduletrans:er:!pti!ns =a&'r!und s:tp trans:er as a7!ve
Test !pti!ns:
++'enuid: Generate an UID
++han'euid:UID Give ne9 UID as 'enerated n!9 !r 7e:!re
++han'euid7a&:UID Give !ld UID :r!2 !ne 'enerated a7!ve
++he&su2:strin' Give he&su2 !: strin'
++test!2press::ile Enter :ile in server 9ith 2any !2pressi!ns
++l!ned7:AE Cl!ne d7 :r!2 server :!r testin'
C!nversi!n !pti!ns:
++!nvertMt!M'i:::ile;siGe;!ut;l/9/: D!9nsiGe and !nvert t! 2!n! GI3
++!nvertMt!M72p::ile;siGe;!ut;l/9/: D!9nsiGe and !nvert t! !l!r =MP
++!nvertMt!MCp'::ile;siGe;!ut;l/9/: D!9nsiGe and !nvert t! !l!r DPG
++!nvertMt!Mdi!2::ile;siGe;!2p;: D!9nsiGe/!2press/:ra2e DICOM
++eNtratM:ra2es::ile;!ut;:irst;last Selet :ra2es !: DICOM :ile
++!untM:ra2es::ile rep!rt - :ra2es in DICOM :ile
++un!2press::ile;!ut Un!2press DICOM
++9ad!re6uest:para2eters Internal @ADO server
Data7ase !pti!ns:
++6uery:ta7le.:ields.9here.:2t.:ile Ar7itrary 6uery !utput t! :ile
++6ueryB:ta7.:ld.9he.:2t.2aN.:ile Sa2e 7ut li2it !utput r!9s t! 2aN
++patient:inder:srv.str.:2t.:ile >ist patients !n server
++study:inder:srv.str.:2t.:ile >ist studies !n server
++series:inder:srv.str.:2t.:ile >ist series !n server
++i2a'e:inder:srv.str.:2t.:ile >ist i2a'es !n server
++serieslister:srv.pat.stu.:2t.:ile >ist series in a study
++i2a'elister:srv.pat.ser.:2t.:ile >ist (l!al) :iles in a series
++eNtrat:PatientID 4 QidQ ENtrat all d7ase ta7les t! F##
++eNtrat: ENtrat patient d7ase ta7le t! FA##
++addre!rd:ta7le.:lds.values Append re!rd; values 2ust 7e in QQ
++deletere!rd:ta7le;9here Delete re!rd :r!2 ta7le
3!r D7aseIII 9ith!ut OD=C:
++pa&d7:: Pa& data7ase; rereate 2e2!ry indeN
++indeNd7:: 1e+reate 2e2!ry indeN
Arhival !pti!ns:
++rena2edevie::r!2;t! 1ena2e devie in data7ase
++veri:y2irr!rdis&:devie <eri:y 2irr!r dis& :!r seleted devie
++testi2a'es:devie Test read all i2a'es !n devie
++2!vedatat!devie:t!;:r!2 M!ve patients :r!2 !ne devie t! an!ther
++2!veseriest!devie:t!;:r!2 M!ve series :r!2 !ne devie t! an!ther
++seletlru:!rarhival:&7;devie Step " :!r arhival: t! devie#Arhival
++seletseriest!2!ve:devie;a'e;&7 Step " :!r arhival: t! devie#Arhival
++prepare7unh:!r7urnin':t!;:r!2 Step B :!r arhival: 2!ves t! ahe
++delete7unha:ter7urnin':deviet! Step A :!r arhival: deletes :r!2 ahe
++!2pare7unha:ter7urnin':deviet! Part step A + !2pare Cu&e7!N t! ahe
++rest!re2a':la's: Und! arhival s!:ar
Sriptin' !pti!ns:
++lua:hun& 1un lua hun& in server; 9ait t! :inishRnS )L
++luastart:hun& 1un lua hun& in server; retn i22ediateRnS )L
++d!lua:hun& 1un lua hun& in this d'ate instaneRnS )L
55.N4I< 90 Con@i>uration "iles and 4iscussion
3.1 AE Title+*"esentation A00"ess Ma..in!
The Local . Title is con@i>urable by the user by editin> the dicom0ini @ile via the
ECon%i!&"ationE pa>e o@ the ConIuest 4IC2M server0
The @olloAin> @ields are con@i>urable @or this . 7local8$
Local . Title
Listenin> TC5-I5 5ort 7port ?+9; is de@ault8
Luery ` Retrieve In@ormation Model0
6LL 4ata source and databases0
The @olloAin> @ields are con@i>urable @or every remote 4IC2M .$
Remote .
Remote TC5-I5 5ort
Remote I5 ddress
Compression mode
3.2 0ico4.ini
This @ile is placed in the same directory as the e#ecutable 7e0>0! c$Tdicomserver80 It speci@ies the
con@i>uration o@ the Micro5C6Main 4IC2M .0 It is Aritten automatically by the ConIuest
4IC2M server upon installation and Ahen chan>in> the con@i>uration 7use the ESa#e
con%i!&"ationE button on the ECon%i!&"ationE pa>e80 .ditin> it by hand is >enerally not
necessary or advised0 3ote t+at s%aces around t+e B 2 B in eac+ entry are REQUIRED:-
^ This @ile contains con@i>uration in@ormation @or the 4IC2M server
^ 4o not edit unless you knoA Ahat you are doin>
VsscscpW
Micro5C6 N sscscp
.dition N 5ersonal
^ NetAork con@i>uration$ server name and TC5-I5 port^
MyCRNema N C2NL3.6T6RC'
TC55ort N ?+9;
^ Re@erence to other @iles$ knoAn dicom servers; database layout; sops 7do not chan>e8
CRNemaMap N acrnema0map
k"actor"ile N dicom0sIl
625ClassList N d>atesop0lst
^ Host! name! username and passAord @or 6LL server 7host i>nored @or 24HC8
6LLHost N localhost
6LL6erver N .$T4icomserverT4ataTdbaseTconIuest0db&
3sername N conIuest
5assAord N conIuest
5ost>res N *
My6LL N *
6LLite N '
HroAseThrou>h4H" N '
4oubleHack6lashTo4H N *
3se.scape6trin>Constants N *
^ Con@i>ure database
Truncate"ieldNames N '*
Ma#"ieldLen>th N )?:
Ma#"ileNameLen>th N )??
"i#5hilips N *
"i#=odak N *
=eeplive N *
Lar>e"ile6i1e=H N '*):
5rint6IuareLandscape N *
ZipTime N *?$
3I45re@i# N '0)0;)+0*0'0&+;**:&0)0'&?09&*,?+0:&;99;')
.nableReadheadThread N '
6tora>e"ailed.rrorCode N )9)
6end3pperCase. N
5atientLuery6ort2rder N
6tudyLuery6ort2rder N
6eriesLuery6ort2rder N
Ima>eLuery6ort2rder N
.nableComputed"ields N '
Inde#4H" N '
5ack4H" N *
Lon>Luery4H" N '***
TC5I5Time2ut N &**
"ailHold2@@ N +*
Retry4elay N '**
Retry"orAard"ailed N *
Import.#port4ra>nd4rop N *
Lueue6i1e N ');
BorkListMode N *
BorkListReturnsI62SIR N '**
4ebu>Level N *
5re@etcher N *
LR36ort N
lloATruncate N
4ecompressNon'+HitsRpe> N '
3seHuiltInR5.G N '
3se2penR5G N *
LossyLuality N ,?
I>nore2ut2@Memory.rrors N *
No4IC2MCheck N *
5ad.BithZeros N *
"ileName6ynta# N &
Te4.Di" N
^ Con@i>uration o@ compression @or incomin> ima>es and archival
4ropped"ileCompression N un
Incomin>Compression N un
rchiveCompression N as
^ Names o@ the database tables
5atientTableName N 4IC2M5atients
6tudyTableName N 4IC2M6tudies
6eriesTableName N 4IC2M6eries
Ima>eTableName N 4IC2MIma>es
BorkListTableName N 4IC2MBorkList
4markTableName N 4IC2Mccess3pdates
Re>isteredM254eviceTable N Re>isteredM25I4s
3I4ToM25I4Table N 3I4ToM25I4
3I4ToC4RI4Table N 3I4ToC4RI4
^ Hanner and host @or debu> in@ormation
5C6Name N C2NL3.6T6RC'
2peratorConsole N localhost
^ Con@i>ure email o@ error messa>es
MailHost N
Mail5ort N
Mail6i>non N
Mail"romName N
MailRcptName' N
MailCollectTime N '
MailBaitTime N '*
^ Con@i>uration o@ disk7s8 to store ima>es
MG4eviceThreshhold N *
MG4evice"ullThreshHold N &*
MG4evices N )
MG4evice* N c$TdicomserverTdataT
MG4evice' N d$TdicomserverSbackupT
I>noreMG4eviceThreshHold N *
Ni>htlyCleanThreshhold N *
Ni>htlyMoveThreshhold N '***
Ni>htlyMoveTar>et N MG'
^ Con@i>uration o@ mirror disk7s8 to store ima>es
MIRR2R4evices N '
MIRR2R4evice* N H$TmirrorSdataT
^ Con@i>uration o@ disk7s8 to hold ima>es prior to archival
CCH.4evices N '
CCH.4evice* N @$TcacheTcd[*)dS[*:dT
^ Con@i>uration o@ disk jukebo#7es8 @or archival
R3=.H2<4evices N '
R3=.H2<4evice* N #$Tjukebo#Tcd**S[*:dT
^ Con@i>uration o@ the virtual server
CacheCirtual4ata N '
Cirtual6erver"or* N T.6T.
Cirtual5er6eries* N *
2verlapCirtualGet N ?
^ Con@i>uration o@ e#ternal 7broAse pa>e8 and demo 7on receive8 vieAer
.#ternalCieAer N e$TIuirtTruntimeTplannin>TimvieA0e#e
4emoCieAer N
4emoCopy N
^ Con@i>uration o@ @orAardin> and-or converter pro>rams to e#port 4IC2M slices
"orAardssociationLevel N 6.RI.6
"orAardssociationClose4elay N ?
"orAardssociationRe@resh4elay N &+**
"orAardssociationRelease N '
.#portConverters N '
.#portModality* N CT
.#port6tationName* N O
.#portCalled.* N O
.#portCallin>.* N O
.#port"ilter* N
.#portConverter* N nop .#portConverter lo>s @ilename$ [@
^ Con@i>uration o@ rules to modi@y! lo> or reject incomin> 4IC2M slices
ImportConverters N '
ImportModality* N CT
Import6tationName* N O
ImportCalled.* N O
ImportCallin>.* N O
ImportConverter* N nop ImportConverter lo>s @ilename$ [@
"orAardCollect4elay N +**
Ma#imum.#portRetries N *
Ma#imum4elayed"etch"orAardRetries N *
^ Con@i>uration o@ rules to modi@y! lo> or reject Iueries and moves
LueryConverter* N nop Luery command lo>s in@o$ [u [c [i
LueryResultConverter* N nop Luery result lo>s in@o$ [u [c [s [i
RetrieveConverter* N nop Retrieve command lo>s in@o$ [u [c [s [i
RetrieveResultConverter* N nop Retrieve result lo>s in@o$ [u [c [s [i
BorkListLueryConverter* N nop BorkList Iuery command lo>s in@o$ [u [c [i
ModalityBorkListLueryResultConverter* N nop BorkList Iuery result lo>s in@o$ [u [c [s [i
Mer>e6tudiesConverter* N nop mer>e study Iuery result lo>s in@o$ [u [c [s [i
Mer>e6eriesConverter* N nop mer>e series Iuery result lo>s in@o$ [u [c [s [i
rchiveConverter* N nop archive result lo>s in@o$ [u [c [s [i
Move4eviceConverter* N nop move device result lo>s in@o$ [u [c [s [i
RejectedIma>eConverter* N nop rejected ima>e result lo>s in@o$ [u [c [s [i; testscript
^ Con@i>uration o@ rules that run as compression @la>s s*00s,
CompressionConverter* N nop Compressin> Aith option s*
^ scripts
VscriptsW
testscript N nop [u
^ lua code
VluaW
>lobal N print 7Qhello AorldQ8;
association N print 7Qhello Q 00 ssociation0Callin>8;
command N print 7Qhello Q 00 ssociation0Callin> 00 Q is in a hurry$ Q 00 Command05riority8;
ni>htly N print7Qthis runs at *&$** in the ni>ht i@ the G3I is disabledQ8;
back>round N print7Qthis runs every second i@ the G3I is disabledQ8;
Vanonymi1ationW
Maintain>e N @alse
Maintain6e# N @alse
reversible N true
lo>root N C$T4icomnonymi1edTLo>T
6ome e#planation o@ the most important items$
SIL<ost. Name o@ host computer Aith 6LL server0 2nly used in 5ost>res and My6LL mode0
SILSe"#e". Name o@ 24HC data source! path to directory Aith 4H" database @iles in case the
built(in 4baseIII driver is used! @ilename and path o@ the database @ile @or 6ILite! or name o@
database in My6LL mode0 .mpty @or N3LL driver0
*ost!"es0 BindoAs and Linu# code is included to use a 5ost>res6LL database0 3nder Linu#!
recompilin> the server Aith Y4526TGR.6 and settin> this @la> to ' Aill enable the 5ost>res
driver0 2n AindoAs! 5ost>ress client 4LLQs 7libpI0dll! msvcr9'0dll! lib#slt0dll! lib#ml)0dll!
libintl&0dll! libiconv)0dll! libeay&)0dll! krb?S&)0dll! and k?sprt&)0dll8 must be accessible @or
5ost>res to Aork0 N2T.; a +: bits 5ost>res access 4LL is included Aith the release0 The &)
bits 5ost>res 4LLQs are not redistributed Aith the AindoAs server release0 4e@ault it is *0
M)SIL0 BindoAs code is included @or native access to a My6LL database0 6ettin> this @la> to
' Aill enable the My6LL driver0 Correct versions o@ the mysIl 4LLQs 7BindoAs only8 are
redistributed Aith the AindoAs server release0 "or +: bits! the 4LL should be named
libmysIl+:0dll0 4e@ault it is *0
S;Lite0 BindoAs-Linu# code is built(in to create and access a 6ILite database0 6ettin> this
@la> to ' Aill enable the 6LLite driver0 4e@ault it is '0
,"o-seT7"o&!7D,F0 This @la> controls the ima>e broAser in the user inter@ace only0
Normally it is set to *! Ahile Ahen 6ILite or 5ost>res is used! it is set to '0 "or all other
database systems this option is de@ault * but may be set to '0 Bhen set! the broAser does not
access the native database @ormat directly! but uses code in the server core to create 4H" @iles
o@ the selected patient0 It is use@ul Ahen the normal broAser does not Aork$ this is a knoAn
issue Aith Ms6LL)**? on AindoAs server )**&0
Do&ble,ac8Slas7ToD,. I@ this value is '! strin>s sent in Iueries and updates Aill have a T
replaced by TT0 This option must be set to ' @or My6LL and 5ostGres and to * @or other 6LL
servers0 The built in dbase driver accepts both settin>s0
UseEsca.eSt"in!Constants. I@ this value is '! strin>s sent in Iueries and updates Aill have an
. prepended Ahen escape characters are used0 This option must be set to ' @or recent versions
o@ 5ostGres and to * @or other 6LL servers0 The built in dbase driver accepts both settin>s0
M)ACRNe4a. pplication .ntity 7.8 title0 .dit it here i@ the G3I does not accept the
character you Aould like to use! such as an underscore0
TC**o"t. I5 port on Ahich the server listens0 The de@ault is ?+9;0 I@ this port is occupied the
server does not start0 It may be set to an arbitrary value! as lon> as other servers knoA it0

T"&ncateFiel0Na4es. 4H6. @iles do not alloA @ield name len>ths in e#cess o@ '* characters0
This option truncates the names0 Leave this option at '*! since the 4elphi user inter@ace! the
B.H inter@ace! and some o@ the archival options e#pect truncated names0 ConIuest addition0
Ma5Fiel0Len!t7. 4H6. @iles do not accept @ield len>ths in e#cess o@ )?: characters0 This
options overrules the settin> in 4IC2M06LL0 May be chan>ed or removed @or 6LL server but
this is not necessary0 ConIuest addition0
FileNa4eS)nta5. 4etermines name o@ stored @iles! de@ault &0 May be chan>ed at any time
dependin> on the reIuirements o@ an application that Aants to read the @iles directly0 2nly
a@@ects neAly stored ima>es0 Modes hi>her than & accept I24s Aithout ima>e or series number
and are there@ore suited @or 4IC2M(RT0 2ptions & and : @orce use o@ the cleaned 5atientI4 as
patient directory name! makin> sure that only a sin>le directory is made @or each uniIue patient
I40 2ption ? uses the patient name as directory name0 2ptions + to , provide several @reIuently
used 4IC2M directory structures0 "rom version '0&0''! time is printed unsi>ned and the
counter portion o@ the @ilename is e#tended @rom ) to : di>its0 Modes :! ; and , store ima>es in
7the sloAer to read8 standard chapter('* 4IC2M @ormat0 4IC2M(Borks users mi>ht like mode
; or , best0 6ee also note beloA0 ConIuest addition0
0 9o"i!inal:6
@ilename N I4V;WSNameV;WT6eries^SIma>e^STime0v)
1 9sa%e" #e"sion o% o"i!inal:6
@ilename N I4V;WSNameV;WT6eries^SIma>e^STimeCounter0v)
2 9incl&0e se"ies UID in %ilena4e to ens&"e na4es so"t b) se"ies:6
@ilename N I4V;WSNameV;WT6eriesuidS6eries^SIma>e^STimeCounter0v)
3 9Uses .atient ID as 0i"ecto") na4e an0 sets DICOMFRT "e;&i"e0 %la!s:6
@ilename N I4V'+WT6eriesuidS6eries^SIma>e^STimeCounter0v)
4 9sa4e as 3A b&t 0ata is sto"e0 in c7a.te" 10 %o"4at:6
@ilename N I4V'+WT6eriesuidS6eries^SIma>e^STimeCounter0dcm
/ 9sets DICOMFRT "e;&i"e0 %la!sA &ses &nt"&ncate0 .atient na4e as 0i"ecto"):6
@ilename N NameT6eriesuidS6eries^SIma>e^STimeCounter0v)
1 9stan0a"0 DICOM 0i"ecto") st"&ct&"e sta"tin! at .atient "oot:6
@ilename N I4V&)WT6tudyuidT6eriesuidTIma>euid0v)
3 9stan0a"0 DICOM 0i"ecto") st"&ct&"e sta"tin! at st&0) "oot:6
@ilename N 6tudyuidT6eriesuidTIma>euid0v)
9stan0a"0 .atient "oot DICOM 0i"ecto") st"&ct&"e in c7a.te" 10 %o"4at:6
@ilename N I4V&)WT6tudyuidT6eriesuidTIma>euid0dcm
$ 9stan0a"0 st&0) "oot DICOM 0i"ecto") st"&ct&"e in c7a.te" 10 %o"4at:6
@ilename N 6tudyuidT6eriesuidTIma>euid0dcm
109all %iles in one 0i"ecto"):
@ilename N Ima>esTIma>euid0dcm
119.atient na4e as 0i"ecto")A UIDS as s&b0i"ecto"ies:
@ilename N NameT6tudy3I4T6eries3I4TIma>euid0dcm
129.atient na4eLi0 as 0i"ecto")A 4o0alit)Lst&0)i0Cse"iesCso..0c4:
@ilename N NameSI4TModalityS6tudyI4T 6eriesI4TIma>euid0dcm
Here$ T is a directory separator! IDF3G is the cleaned patient I4 truncated to N characters! 3aeF3G is the cleaned
patient name truncated to N characters! SeriesH is the series number! Ia$eH is the ima>e number! Studyuid is the
study 3I4! Seriesuid is the series 3I4! Ia$euid is the Ima>e 3I4! 5ie is the number o@ elapsed seconds since
',9* at the time the @ile is @irst Aritten! and Counter is a : di>it counter that in incremented @or each stored @ile0
Note6 since 1.4.11A FileNa4eS)nta5 4a) also be st"in! containin! M t7at is t"eate0 as %le5ible
%ilena4es)nta5. e0>0! AidIAstudyidIAseriesidIAso%uid.dc.
This strin> may contain$ [nameN7**'*!**'*8! [idN7**'*!**)*8! [modalityN7***;!**+*8!
[studyidN7**)*!**'*8! [studyuidN7**)*!***48! [seriesidN7**)*!**''8! [seriesN7**)*!**''8 Aith :
di>its! [seriesuidN7**)*!***.8! [sopuidN7***;!**';8! [ima>enumN7**)*!**'&8!
[ima>eN7**)*!**'&8 as + di>it inte>er! [ima>eidN7**?:!*:**8! [studydescN7***;!'*&*8! [time!
[counter N 7: di>it he#8! [calledae! [callin>ae! [studydate! [date 7current date in yyyymmdd80 ny
o@ these items can be @olloAed by e0>0! V*!&W Ahich is a substrin> operator! e0>0! [studydateV*!&W >ives
the year! [studydateV:!?W >ives the month0 lso you can use parameter [v>>>>>!eeee to read any
dicom element to be used in >eneratin> the @ilename0 "or the synta# o@ the [v option 7e0>0! to read items
in a seIuence8! see the description o@ ImportConverters0 ny other te#t is treaded literally Y be care@ul to
use only characters alloAed in @ilenames plus the correct path separator$ T @or BindoAs! and - @or Linu#0
Since 1.4.13! "ilename6ynta# may be a lua e#pression 7call an e#ternal @ile @or @ull control8$
"ilename6ynta#Nlua$4ata06opInstance3I400Q0dcmQ (( or$
"ilename6ynta#Nlua$do@ile7Qmake@ilename0luaQ8
Ma5FileNa4eLen!t7. I@ set! the @ilenames @or the 4IC2M slices Aill be truncated 7removin>
the startin> characters o@! typically! the series instance 3I48 to the speci@ied len>th0 3se@ul
Ahen @iles are to be recorded on compact disc 7Ahich o@ten have a @ilename limit o@ +:
characters80 Must be le@t at its de@ault o@ )?? @or "ileName6ynta# valuesP+0 ConIuest addition0
Fi5*7ili.s. I@ set 7de@ault it is NOT set since version '0:0+8! a '* di>it 5atientI4 7as a 5hilips
.#pander CT scanner produces8 is stripped o@ leadin> 1eros in some cases0 6ee 0'0&0 ConIuest
addition0
Fi5Go0a8. I@ set 7de@ault it is NOT set8! a ; di>it 5atientI4 7as a =odak RI6 produces8 is
stripped o@ a leadin> 1ero in some cases0 6ee 0'0&0 ConIuest addition0
=E,Rea0Onl)0 I@ set to '! Aeb users cannot Arite anythin>0 4e@ault *0
Gee.Ali#e0 I@ this value is not *! server is tested every =eeplive seconds and restarted i@ it
doesnKt respond 7BindoAs only80 3sually not necessary0 Borks a>ain @rom version '0:0?0
ConIuest addition0
La"!eFileSi?eG,0 In the BindoAs G3I! lar>e 4IC2M @iles are not automatically displayed in
the broAser0 This parameter set the threshold 7de@ault '*):80 ConIuest addition0
Di.Ti4e0 Time in hh$mm$ss 7or part thereo@8 at Ahich lo> @iles are 1ipped to reduce disk space
7BindoAs only80 Lo> @iles are 1ipped daily Ahen the G3I is runnin>0 6et to e0>0! MinvalidK to
disable 1ippin>0 4e@ault value$ K*?$K0 ConIuest addition0
UID*"e%i50 5re@i# @or uniIue identi@iers >enerated by the server0 These are used @or
anonymi1in> or chan>in> 5atient I4 o@ ima>es and @or the print server0 Bhen the server is @irst
installed! a uniIue pre@i# is >enerated automatically 7'0)0;)+0*0'0&+;**:&0)0'&?04ate0Time80
ConIuest addition0
EnableRea0A7ea0T7"ea00 Bhen set 7de@ault8! up to ? slices are read(ahead durin> any C(
Move reIuest0 I@ set to a hi>her value! the number o@ pre(read slices may be increased0 This
option typically doubles the ima>e retrieval speed! but increases processor load0 There@ore it is
may be disabled here0
*"e%etc7e"0 I@ set! Iueries Aill start pre@etchin> all ima>es o@ the patient into disk cache0
subseIuent move o@ ) or more ima>es Aill stop the pre@etchin>0 Causes hi>h processor load but
may speed up server operation on dedicated hardAare0 4e@ault *0
LRUSo"t0 Normally! patients entered into the serverQs database @irst Aill be deleted or archived
@irst0 Hy settin> this option to 6tudy4ate! patients Aith the oldest last studydate Aill be selected
@or deletion or archival @irst0 Can also be set to 5atientHir! or ccessTime0 4e@ault UU0
Allo-T"&ncate0 Comma separated list o@ database @ields 7Aithout spaces8 that may be entered
truncated into the database >ivin> a Aarnin> not an error0 4e@ault UU0
I!no"eO&tO%Me4o")E""o"s0 I@ set to '! emulates '0:0') behavior$ out o@ memory allocations
are lo>>ed but i>nored causin> possible data loss0 I@ set to * 7de@ault8! an out o@ memory
condition Aill lead to a shutdoAn o@ the server0
NoDICOMC7ec80 I@ set to '! emulates '0:0') behavior$ parsin> 4IC2M errors are i>nored
causin> possible server crashes on invalid or non(dicom @iles0 I@ set to * 7de@ault8! parsin> errors
Aill lead to rejection o@ the incomin> @ile or messa>e0
*a0AE=it7De"os0 I@ set to '! 1ero pad .Qs in communication else pad Aith spaces 7as
be@ore80 4e@ault *0
Sto"a!eFaile0E""o"Co0e0 This is the error code sent to all 4IC2M systems Ahen stora>e
@ails0 4e@ault )9) N *#''* N processin> @ailed0
*atientI&e")So"tO"0e"A St&0)I&e")So"tO"0e"A Se"iesI&e")So"tO"0e"A
I4a!eI&e")So"tO"0e". 4etermines order in Ahich ima>es and Iuery order results are sent0
Must contain one or more comma separated e#act 7truncated8 table0@ield names like$
Mdicompatients0patientidK or Mdicomstudies0studydate! dicomseries0seriesnumbK0 4oes not
@unction @or 4H" Aithout 24HC0
EnableCo4.&te0Fiel0s0 I@ this @la> is set to '! Iueries on items like QNumber o@ 6tudy Related
InstancesQ Aill return data$ @or each Iuery result it Aill the Iuery the database a>ain to count the
number o@ items beloA that one0 4e@ault to ' since '0:0'+0
*ac8D,F. I@ set! the internal 4baseIII driver Aill pack the database at startup0 Is very sloA @or
lar>e archives! de@ault 2"" @rom version '0:0?0 ConIuest addition0
In0e5D,F. I@ set! the internal 4baseIII driver Aill create an internal memory inde# on
patientI4 at startup0 The value determines the amount o@ MH allocated @or neA database records
7i0e0! added later80 4e@ault is U'*U N 2N Aith '* MH spare inde# space0 Inde# >eneration takes
about ' minute per million ima>es 7durin> inde# >eneration the server cannot @ind not yet
inde#ed records and the server runs in read only mode80 HoAever! this option speeds up simple
Iueries 7includin> 5atientId! 6eriesInstance3I4 and0or 6tudyInstance3I48 enormously @or
lar>e archives0 NeA since version '0:0?0 ConIuest addition0
Lon!I&e")D,F0 Lueries Aith the internal 4baseIII driver takin> lon>er than this value in ms
Aill be reported to the user inter@ace @or troubleshootin> purposes0 4e@ault '*** ms0 NeA since
version '0:0?0 ConIuest addition0
FileCo4."essMo0e. 2bsolete0 3se 4ropped"ileCompression and Incomin>Compression
instead0 ConIuest addition0
TC*I*Ti4eO&t0 TC5-I5 timeout in seconds! de@ault &**s0 May be made lon>er Ahen usin>
very sloA netAork links0 ConIuest addition0
Fail<ol0O%%0 @ter an e#port or mirror copy @ailure 7e0>0! because the receivin> host is doAn8!
neA reIuests are de@erred immediately @or this amount o@ seconds! de@ault +*0 ConIuest
addition0
Ret")Dela)0 Hy this amount o@ seconds a@ter an e#port or mirror copy @ailure! the de@erred
operations are retried! de@ault '**0 Cersion '0:0'' @i#es a problem Ahere unaccepted ima>es
Aere retried @orever0 ConIuest addition0
Ret")Fo"-a"0Faile00 I@ this @la> is set! any @ailed @orAard Aill be retried0 4e@ault it is is N2T
set! to avoid endless retries0 HoAever! settin> it to ' avoids losin> one ima>e in case a server
dies in the middle o@ a C(6T2R.0 ConIuest addition0
I4.o"tE5.o"tD"a!An0D"o.0 I@ this @la> is set! @iles dropped on the G3I to load into the
server 7that are processed Aith d>ate Y addima>e@ile$8! pass throu>h import and e#port
converters0 4e@ault it is set to *0 ConIuest addition0
I&e&eSi?e0 This is the si1e 7in entries8 o@ the in(memory Iueues @or mirror copies!
e#portconverters! and delayed @orAard operations0 4e@ault ');0 .ach entry takes '0?k 7per
e#port converter8 or )k 7@or the mirror copy Iueue80 Increase itQs si1e i@ a backlo> o@
e#portconverters sloAs doAn your incomin> data porcessin>0 ConIuest addition0
Ma5i4&4E5.o"tRet"ies0 I@ other than *! e#portconverters >ive up a@ter this number o@ retries!
de@ault *0 ConIuest addition0
Ma5i4&4Dela)e0Fetc7Fo"-a"0Ret"ies0 I@ other than *! converters @orAard patient to!
@orAard study to! @orAard series to and preretrieve >ive up a@ter this number o@ retries! de@ault *0
ConIuest addition0
Fo"-a"0CollectDela)0 Converters @orAard patient to! @orAard study to! @orAard series to and
preretrieve Aait @or a time to alloA incomin> data 7e0>0! a study8 to be @ully collected be@ore it is
retransmitted0 This value speci@ies the len>th o@ the Aait in seconds! de@ault +**0 ConIuest
addition0
=o"8ListMo0e0 BorkListModeN*$ 7de@ault8 4isabled0 BorkListModeN'$ The
ccessionNumber is looked up in the local BorkList database! i@ it is @ound! any element in the
4IC2M object that is also present 7and non(N3LL8 in the BorkList database! Aill be replaced
by the value @rom the BorkList database0 These chan>es are made both in the database and in
the ima>e that is stored on disk0 BorkListModeN)$ s mode '! but the ima>e Aill be re@used i@
the ccessionNumber is not @ound0 Note that there is no 4IC2M method o@ @illin> the Aorklist
database0 3se dra> and drop to enter HL9 @iles into the server0 ConIuest addition since version
'0:0,0
=o"8ListRet&"nsISOLIR. I@ this items is set to NNN 7de@ault it is '**8 Aorklist Iueries Aill
report character set ISOLIR NNN. Replaces BorkListReturnsI62SIRS'** Ahich is a binary
@la>0
Deb&!Le#el0 2nly active Ahen debu> lo>>in> is enabled0 *$ Hasic debu> lo> 7de@ault80 '$
4ump incomin> dicom command objects 7and shoA memory usa>e on Linu#80 lso dump
Aorklist Iuery results0 )$ lso dump incomin> Iuery data objects0 ConIuest addition0
D"o..e0FileCo4."ession0
Dor ore in*oration re$ardin$ co%ression(deco%ression and +o0 to use t+ese values, see
section 7.7 Co%ression Con*i$uration
"iles dropped into the server Aill optionally be compressed! decompressed and-or
recompressed0 6upported values are 7e#pected compression ratio stated betAeen brackets8$
as N store ima>es as is! e0>0 Aithout chan>in> the compression0
is N store ima>es as is! e0>0 Aithout chan>in> the compression0
un N uncompress N=I and-or R5.G compressed ima>es
n' N @ast N=I private loss(less compression mode ' 7?*[8
n) N as n' but Aith CRC check @or errors 7?*[8
n& N @ast N=I private loss(less compression mode & 7:*[8
n: N as n& but Aith CRC check @or errors 7:*[8
j' N R5.GLossless 7retired! use R) instead8 7&&[8
j) N R5.GLosslessNH': 7&&[8
j& N R5.G baseline ' 7; bit8 lossy 7;[8
j: N R5.G.#tended)and: lossy 7'?[8
j? N R5.G6pectralNH+and; lossy 7'?[8
j+ N R5.G"ulllNH'*and') lossy 7':[8
j&NN N R5.G baseline ' 7; bit8 Iuality as de@ined 7+*00,? su>>ested8
j:NN N R5.G.#tended)and: Iuality as de@ined 7+*00,? su>>ested8
j?NN N R5.G6pectralNH+and; Iuality as de@ined 7+*00,? su>>ested8
j+NN N R5.G"ulllNH'*and') Iuality as de@ined 7+*00,? su>>ested8
jk N Lossless R5.G)*** 7&*[8
jl N Lossy R5.G)*** 7)*[8
jlNN N Lossy R5.G)*** bitrate as de@ined 7'00)* su>>ested8 7
nj N Hi>hest N=I mode; but leaves R5.G as is 7variable8
uj N 3ncompressed; but leaves R5.G as is 7variable8
k' N 4oAnsi1e ima>eP'*): pi#els Aide-hi>h to '*): 7variable8
k) N 4oAnsi1e ima>eP?') pi#els Aide-hi>h to ?') 7variable8
k: N 4oAnsi1e ima>eP)?+ pi#els Aide-hi>h to )?+ 7variable8
k; N 4oAnsi1e ima>eP'); pi#els Aide-hi>h to '); 7variable8
ka N 4oAnsi1e ima>eP+: pi#els Aide-hi>h to +: 7variable8
kb N 4oAnsi1e ima>eP&) pi#els Aide-hi>h to &) 7variable8
kc N 4oAnsi1e ima>eP'+ pi#els Aide-hi>h to '+ 7variable8
s* N Run CompressionConverter* 7n-a8
00
s, N Run CompressionConverter, 7n-a8
R5.G compression uses0 R5.G decompression can either use built(in code or the 2""I6 tool
7see the 3seHuiltIn4ecompressor parameter80 Note that R5.G and especially R5.G)***
compression is much sloAer than N=I compression0 Compression is transparent @or 4IC2M
connections! i0e0! data is decompressed or compressed i@ reIuired be@ore transmission0 6ee also
LossyLuality Ahich can be overruled by appendin> NN to the lossy compression name0
4e@aultNKunK; ConIuest addition0
Inco4in!Co4."ession0 Ima>es stored throu>h 4IC2M communication into the server Aill
optionally be compressed! decompressed and-or recompressed0 6upported values are the same
as @or 4ropped"ileCompression Aith the addition o@ compression Mv<KNdo not store ima>es at
all 7only use@ul @or 4IC2M caches80 Note that compression is transparent @or 4IC2M
connections! i0e0! data is decompressed or compressed i@ reIuired @or transmission0 6ince
version '0:09! i@ the called . title looks like 6.RC.Ra## 7note! the total . len>th must
remain less than '+8! then ## Aill override Incomin>Compression0 4e@aultNKunK; ConIuest
addition0
A"c7i#eCo4."ession0 "iles prepared @or archival 7usin> the d>ate Yab option8 Aill optionally
be compressed! decompressed and-or recompressed0 6upported values are the same as @or
4ropped"ileCompression0 5rior to version '0:0: the amount o@ disk space to be archived Aas Y
incorrectly( computed be@ore 7re8compressin> the ima>es0 NoA 2=0 4e@aultNKasK; ConIuest
addition0
Use,&iltInN*E> 9."io" calle0 Use,&ilInDeco4."esso":0 I@ this value is set to ' 7de@ault8!
internal code Aill be used to compress-decompress R5.G ima>es0 2therAise it uses the
dcmc-djpe> e#ecutables o@ the 2""I6 tools0 The old name is still @unctional! but this @la> noA
controls both the R5.G compressor and de(compressor0 ConIuest addition0
Loss)I&alit)0 4e@ault compression Iuality-bitrate passed to R5.G and R5.G)*** compressors0
May be overruled by appendin> NN to je compression name 7e0>0! RL)*80 4e@ault ,?0 "or R5.G
try 9*(,? @or R5.G)*** try '00)*0 ConIuest addition since version '0:0'90
UseOpen!E". I* O%enJ!>K is lin9ed &currently it is not in any ,uild', t+is *la$ c+ooses it
over t+e IJK code. Conquest addition since version 1.4.14.
Deco4."essNon11,itsN.e!0 I@ set to ' 7de@ault8! jpe> ima>es that are not '+ bits are also
decompressed0
MA>De#iceT7"es77ol0. I@ the disk space is less than this amount o@ MH! one or more least
recently used patients are automatically deleted until the @ree disk space is about ? MH lar>er0 I@
set to *! no deletion occurs 7de@ault80
MA>De#iceF&llT7"es77ol0. I@ the disk space o@ the MG device is less than this amount o@
MH! conIuest stops storin> ima>es on this MG device0 NeA in '0:0'+0 4e@ault value is &*0
I!no"eMA>De#iceT7"es7<ol00 I@ set! disk space checkin> is not per@ormed be@ore Aritin>
4IC2M @iles into the database0 NeA in '0:0'+0 4e@ault *0
Ni!7tl)CleanT7"es77ol0. I@ at *'$** at ni>ht the disk space is less than this amount o@ MH!
one or more least recently used patients are automatically deleted until the @ree disk space is
about ? MH lar>er0 I@ set to *! no deletion occurs 7de@ault80 3ses d>ate option Y@@0 6ince '0:0'+
also Aorks @or service and linu#! i@ the lo>>in> is to a @ile0 ConIuest addition0
Ni!7tl)Mo#eT7"es77ol0. I@ at *)$** at ni>ht the disk space o@ MG* is less than this amount
o@ MH! one or more least recently chan>ed patients are automatically moved 7and optionally
compressed usin> rchiveCompression8 to the selected MG device 7BindoAs only80 The
amount to move is computed such that the @ree disk space becomes about the value o@ this
parameter in MH0 I@ set to *! no movin> occurs 7de@ault80 3ses d>ate options Yas and (am0 6ince
'0:0'9 also Aorks @or service and linu#! i@ the lo>>in> is to a @ile0 ConIuest addition0
Ni!7tl)Mo#eTa"!et. I@ at *)$** at ni>ht the disk space is less than Ni>htlyMoveThreshhold
MH! patients are moved @rom MG* to this location 7e0>0 MG'80 Note$ a mirror o@ the tar>et
Aill not be used0 3ses d>ate option Yam0 ConIuest addition0
MIRRORDe#icesA MIRRORDe#ice0A etc. .ach MG device optionally has a mirror device
Ahere a duplicate o@ the ima>e is stored @or sa@ety0 6ince version '0:0;! i@ the mirror copy @ails!
it Aill be automatically retried usin> data stored in @iles like MCopy"ailures?+9;K! Ahere ?+9; is
the server port ^0 This @ile needs to be manually deleted to stop endless retries0 Mirror copies
are per@ormed asynchronously and are Iueued in(memory in a Iueue Aith ;ueueSi/e entries0
ConIuest addition0
CAC<EDe#icesA CAC<EDe#ice0A etc. CCH. device is used to temporarily store data that
is made ready @or archival on one o@ N jukebo# devices0 cache device name must contain tAo
[d @ields$ @or e#ample$ a CCH.4evice U#$TcacheTcd[*)dS[*:dU Aill contain cache
directories Aith names like Ucd**S***'U0 This e#ample is @or jukebo# device *! and C4 number
'0 Ima>e data may be moved to CCH. stora>e usin> d>ate command line options Yas and Yab0
ConIuest addition0
NUGE,O2De#icesA NUGE,O2De#ice0A etc. R3=.H2< device is used to access data in a
C4(R2M jukebo#0 jukebo# device name must contain one [d @ields$ @or e#ample$ a
R3=.H2<4evice Uy$Tjukebo#Tcd**S[*:dU Aill be used to access C4Ks thou>h directories
Aith names like Ucd**S***'U0 This e#ample is @or jukebo# device *! and C4 number '0 Ima>e
data on R3=.H2< devices must be copied 7burned8 @rom CCH. devices Aith e#ternal
so@tAare0 3sin> d>ate command line options the data can be prepared 7(as8! copied to cache 7(
ab8! \then burn it]! veri@ied 7(ac8 and the source ima>es deleted 7(ad80 ConIuest addition0
E5.o"tCon#e"te"sA E5.o"tCon#e"te"0A E5.o"tMo0alit)0A E5.o"tStationNa4e0A
E5.o"tCalle0AE0A E5.o"tCallin!AE0A E5.o"tFilte"0A etc.
3se these options to turn a 4IC2M server into a @ully automatic ima>e @ormat converter or @or
ima>e @orAardin>0 The item >#%ortConverters determines the number o@ e#port converters
used$ a thread is started @or each0
- n e#port converter is an e#ternal or internal pro>ram that is run a@ter an incomin>
ima>e slice o@ prescribed Modality! 6tationName! Called. and Callin>. 7O
matches anythin>! this is the de@ault value8 is stored in the database0 Note that an
empty strin> as value is not the same as MOK! an empty strin> Aill only match! e0>0! an
empty Modality in the 4IC2M data0 6ince '0:0')! also e0>0 URTOU can be used @or
matchin>0
- "iles that match all items above are tested a>ainst an optional 6LL statement in
.#port"ilterN! e0>0! Ia$e3u,er )I7> @1A@ matches all ima>es Aith an ima>e
number startin> on '0 ll @ields in the database can be used in the 6LL statement
Aith the e#ception o@ 5atientI4 7Ima>e5at may be used instead8! 6tudyInstance3I4
and 6eriesInstance3I40 6ince the 6LL @ilterin> is relatively sloA it is advised to also
use the previous options0 Note$ Bhen the built(in dHaseIII driver is used! @ilter Iueries are
limited to @ields in the de(normali1ed ima>e table! and only Iueries like$ UIa$e3u,er )I7> @1A@
and Modality 2 BM=C6 are supported0 6upported @ields are listed in the 4IC2MIma>es de@inition in
dicom0sIl! Ahile only the Uand6 keyAord is supported0 Note t7at s.aces a"o&n0 t7e E J E a"e
obli!ato")J
- There are %o&" converter options0
'8 The @ile name o@ a matchin> slice can be passed as 7only8 ar>ument to an e#ternal
pro>ram speci@ied by .#portConverterN 7must be an e#e @ile80 "or e#ample! to pass
all 7?')#?') CT ima>es made on CTS6CNN.R send by C2NL3.6T6RC) to
C2NL3.6T6RC'8 to myconverter0e#e 7note that spaces around MNK are reIuired!
also in >#%ortDilter3:8$
.#portConverters N '
.#portModality* N CT
.#port6tationName* N CTS6CNN.R
.#portCalled.* N C2NL3.6T6RC'
.#portCallin>.* N C2NL3.6T6RC)
.#port6tationName* N CTS6CNN.R
.#port"ilter* N RoAs N ?') and Columns N ?')
.#portConverter* N myconverter0e#e
)8 The .#portConverterN strin> may be Aritten as M*or0ard to ">K! or B*or0ard
co%ressed as .. to ">C to use internal code @or @orAardin> an ima>e to another
server 7. must be knoAn to this server or may be Aritten as ip$port80 The M@orAard
compressed as 00 toK option may use any style o@ N=I or R5.G compression usin> the
same values as de@ined @or 4ropped"ileCompression0 "or e#ample! to @orAard all
CT ima>es to 6.RC.R' and @orAard all MR ima>es usin> loss(less R5.G
compression to 6.RC.R)$
.#portConverters N )
.#portModality* N CT
.#portConverter* N @orAard to 6.RC.R'
.#portModality' N MR
.#portConverter' N @orAard compressed as j) to 6.RC.R)
6ince version '0:0;! Ahen an e#port @ails! e#ports on that converter are blocked @or
+* s 7NDailEoldO**8; Ahile '** s 7N=etryDelay8 a@ter the last @ailure they Aill be
automatically retried based on data stored in @iles like M.#port"ailures?+9;S*K
7Ahere ?+9;Nport number! *Nconverter number80 These @iles may sometimes need to
be deleted 7the G3I asks so at startup8 to stop endless retries0 Cersion '0:0'' @i#es
endless retries @or unaccepted ima>es0
&8 .#portConverterN may run a pro>ram usin> the @olloAin> synta# 7@or e#ample8
Mnote%ad A*K! Ahere [@N@ilename! [mNmodality! [sNstationname! [bN@ile base
name! [pN@ile path! [oN625 instance 3I4! [uNCallin>.! [cNCalled.!
[nNneAline! [[N[! [C####!yyyyNdicom item @rom ima>e! [iNpatient I4!
[dNdate and time0 .ach [ variable can be appended Aith V@irst!lastW to take a
substrin>! i0e0! [iV*!'W N @irst ) characters o@ patientid! or [iV!)W N last tAo
characters o@ patientid0 "or e#ample! to use a hypothetical 4IC2M to bitmap
converter 7a very >ood bitmap converter can be @ound in the 2""I6 4IC2M toolkit
4CMT=8 @or each incomin> ima>e sent @rom a 4IC2M system Aith 6tationName N
6TTI2N'$
.#portConverters N '
.#port6tationName* N 6TTI2N'
.#portConverter* N dicomtobitmap [@ c$TbitmapsT[b0bmp
o"
.#portConverter* N save bmp as c$TbitmapsT[b0bmp
:8 "inally! the @olloAin> e#portconverters are hard(coded and do not start an
e#ternal pro>ram$ Mno%K$ do nothin>! Qco%y A* to destinationQ 7destination may be a
@ile or a directory! donKt @or>et the MtoC8! M0rite 6strin$6 to *ileK! Ma%%end 6strin$6 to
*ileK 7donKt @or>et the Iuotes around the strin>80 6ee @urther the description o@
I4.o"tCon#e"te"s0 3se [n in the strin> to Arite a neA(line @or the latter tAo
options0 "or e#ample! to copy all incomin> slices to another directory and append
their @ilenames to a te#t @ile$
.#portConverters N )
.#portConverter* N copy [@ to c$Tincomin>
.#portConverter' N append U[@[nU to c$Tincomin>0t#t
.#port converters are e#ecuted asynchronously 7they are Iueued in memory in a Iueue o@
;ueueSi/e len>th8 but Aill someAhat sloA doAn operation o@ the server0 6ince version '0:0')c!
multiple e#port converters may be speci@ied in one rule separated by M;K0 These are processed in
seIuence0 6ee @urther ImportConverters @or scriptin> lan>ua>e details and even more options0
He@ore version '0:0')! each ima>e Aas @orAarded on a neA association Y causin> problems on
some host systems0 Bith version '0:0')! neA options have been added to chan>e this behavior0
The @la> Dor0ard"ssociation)evel may have values VGL2HL! 625CL66! 5TI.NT!
6T34F! 6.RI.6! IMG.W0 "orAarders keep the association open as lon> as the 3I4 at
Dor0ard"ssociation)evel does not chan>e0 The de@ault is IMG.! creatin> a neA association
@or each ima>e as be@ore0 Hy chan>in> to more >lobal settin>s more ima>es are sent per
association0 HoAever! associations are alAays closed Ahen a neA ima>e type V625CL66W is
sent that Aas not sent be@ore by this converter0 @ter Dor0ard"ssociationCloseDelay seconds
o@ inactivity 7de@ault ?8! the association is closed0 @ter Dor0ard"ssociation=e*res+Delay
seconds o@ inactivity 7de@ault &+**8 the list o@ knoAn sop classes is deleted0 This latter option
avoids havin> to restart conIuest Ahen other servers chan>e their capability0
Dor0ard"ssociation=elease controls Ahether conIuest just han>s up to link 7N*8 or does a
controlled close 7N'! de@ault80 ConIuest addition0
I4.o"tCon#e"te"sA I4.o"tCon#e"te"0A I4.o"tMo0alit)0A I4.o"tStationNa4e0A
I4.o"tCalle0AE0A I4.o"tCallin!AE0A etc.
3se these options to let a 4IC2M server 7conditionally8 modi@y elements o@ each incomin>
ima>e! reject ima>es! >enerate speci@ic lo> @iles! provide delayed @orAardin> and much more0
The item I%ortConverters determines the ma#imum number o@ import converters that can be
used! it is hoAever! not necessary to speci@y it e#plicitly0
n Import converter is an internal pro>ram that is run @or each incomin> ima>e o@
prescribed Modality! 6tationName! Called. and Callin>. 7O matches anythin>!
this is the de@ault value8 and that typically Aill be used to chan>e elements in the
ima>e be@ore it is stored in the server and-or @orAarded0 They run a@ter
<or9)istMode and Di#7oda9 but be@ore >#%ortConverters0 Note that an empty
strin> as value is not the same as MOK! an empty strin> Aill only match! e0>0! an empty
Modality in the 4IC2M data0 ImportConverterN may @or e#ample set a CR in the
dicom ima>e usin> the @olloAin> synta#$ set 0010,1001 to 6AL0010,00206! Ahere$
DE N D!
[m N modality!
[@ N @ilename
[b N base @ile name
[p N @ile path
[s N stationname!
[o N 625 instance 3I4!
[i N patient I4!
[u N Callin>.!
[d N date and time!
[c N Called.!
[n N neAline!
[t N tab!
[[ N [!
[b N b!
[a N a!
[V N V!
[C####!yyyy N any dicom item @rom ima>e!
[C5atientName N any dicom item @rom ima>e called by name!
[CO>>>>!eeee N an item in any seIuence!
[C->>>>!eeee->>>>!eeee-etc N @irst item in a speci@ied seIuence!
[C->>>>!eeee0N->>>>!eeee-etc N item N in a speci@ied seIuence!
[C7->>>>!eeee->>>>!eeee8>>>>!eeee N an item in a dicom object! Ahose
6253id is speci@ied in the 7 8 part!
[. N like [C but data is anonymi1ed 7neA 3I4 assi>ned8!
[R N like [C but returned de(anonymi1ed 3I4 7reverse o@ [.8!
[ N like [C but CRC&) o@ data is returned!
[L5####!yyyy N item Iueried @rom patient db on patient I4 7import converters only8!
[L6####!yyyy N Iueried @rom study db on patient I4 and study 3I4 7idem8!
[L.####!yyyy N Iueried @rom series db on patient I4! study 3I4! and series 3I4 7idem8!
[LB####!yyyy N dicom item Iueried @rom Aorklist db on accession number 7idem8!
[L<####!yyyy N replace item @rom tab separated @ile alias@ileL<0t#t 7@ormat$ oldTtneATn8
[#! [y! [1 N >eneral purpose variables0
.ach [ variable can be appended Aith V@irst!lastW to take a substrin>! i0e0! [iV*!'W N
@irst ) characters o@ patientid! [iV!)W N last tAo characters o@ patient I40 QbQ may be
appended to convert the result to uppercase! and a a to convert it to loAercase0 "or
e#ample! to chan>e tAo CRs in each incomin> ima>e and reject any ima>es acIuired
in )**)$
ImportConverter* N set **'*!'**' to Umy strin> and date$ [dU
ImportConverter' N set **'*!'**) to U[C**'*!**'*bU
ImportConverter) N i@eIual U[C***;!**)*V*!&WU! U)**)U; destroy
The @olloAin> list illustrates all importconverter MIK! e#portconverter M.K! or both
MI.K commands available @or scriptin>0 The parser is not very @le#ible$ stay close to
the e#amples in terms o@ spacin> and semicolons0
I. \command; command ] command block
I. -"ite Umy strin>U to @ile0t#t Arite @ile
I. a..en0 Udate$ [dU to @ile0t#t append to e0>0 lo> @ile
I. no. do nothin>
I. no. any te#t [i do nothin> but lo> shoAs te#t
I. ."e%etc7 delayed preread 7cache8 o@ patient @rom disk
I. ."e"et"ie#e . delayed collect o@ entire patient @rom .
I. call @ile call @ile Aith ImportConverter strin>s! or script strin>
I @ile call @ile Aith ImportConverter strin>s! or script strin>
I @ile0lua call @ile Aith lua code
. e#ecutable call e#ecutable
I. l&a DchunkE e#ecute lua chunk
I. s)ste4 command line make a call to AindoAs or linu#
I. "et&"n return @rom @ile! or same as stop
I. sto. stop parsin> this converter
I. silentsto. stop parsin> this converter! no messa>e
I set ####!yyyy to U[C**'*!**'*U set CR 7creates empty seIuence i@ applicable8
I set ####!yyyy to nil delete CR
I set 5atientI4 to U[C5atientNameUset->et CR by name
I set ####!yyyy %o"4at D[[dE to 00 set CR @ormatted 7[[s! [[d! [[#! [[@! [[>8
I set ####!yyyy i% U[C**'*!**'*U set CR i@ data
I set ####!yyyy0N-####!yyyy to 00 set CR in seIuence 7ma# one deep! may use names8
I set ####!yyyy0O-####!yyyy to 00 dd CR to seIuence 7ma# one deep! may use names8
I set # to U[L5**'*!**'*U set variable
I set y i% U[#U set variable i@ data
I seti%e4.t) ####!yyyy to UhalloU set i@ CR empty 7obsolete! not in seIuences8
I seti%e4.t) ####!yyyy i% U[#U set i@ CR empty and [# not
I seti%e4.t) 1 to UhalloU set only i@ 1 empty
I seti%e4.t) 1 i% U[iU set only i@ 1 empty and [i not
I 0elete ####!yyyy delete CR
I ne-&i0s replace all 3I46
I ne-&i0s e5ce.t replace all 3I46 e#cept >>>>!eeeec>>>>!eeee or 3I4
I %i58o0a8 chan>e patient I4 @rom kodak to N=I @ormat
I &n%i58o0a8 chan>e patient I4 @rom N=I to kodak @ormat
I c"o. #'!#)!y'!y) crop ima>e
I to4ono convert ima>e to monochromo
I. sa#e to @ilename0dcm save dicom ima>e to @ile
I. sa#e bmp to @ilename0bmp save bitmap ima>e to @ile
I. sa#e >i@ to @ilename0>i@ save >i@ ima>e to @ile
I. sa#e jp> to @ilename0jp> save jpe> ima>e to @ile
I. sa#e Vbmp->i@-jp>W @ull synta# o@ above commands
le#el N
-in0o- N
%"a4e N
si?e N
Vto+asW @ilename
I. sa#e %"a4e N to @ilename save dicom @ile o@ sin>le @rame o@ multi@rame object
I. 480i" directoryname make a directory 7reIuires trailin> - or T8
I. "4 @ilename delete a @ile
I ."ocess -it7 command the received slice is processed by an e#ecutable
I 0est"o) ima>e not stored at all
I "eKect as destroy! but reports error
I sto"a!e MG' set pre@erred stora>e area
I co4."ession CC recompress object
I #i"t&alse"#e" N set pre@erred virtual servers 7only @or Iuery-moves8
I #i"t&alse"#e"4as8 N set all pre@erred virtual servers 7idem8
I. %o"-a"0 to . see above
I. %o"-a"0 @ull synta#
Oco4."esse0 as CCW optional! provide clauses in order
Vto .chost$portW reIuired! provide clauses in order
Vo"! .W callin> optional! provide clauses in order
V0est .W called optional! provide clauses in order
Vc7annel NW optional 7I only8 to keep connection open$ NN\*00',]
Vsc"i.t cmdW script to process data; must be last
I. %o"-a"0 .atient to . delayed @orAard o@ entire patient
I. %o"-a"0 st&0) to . delayed @orAard o@ entire study
I. %o"-a"0 se"ies to . delayed @orAard o@ entire series
I. %o"-a"0 Vpatientcstudycseriescima>eW @orAard command @ull synta#
Vco4."esse0 as ##W set compression
V0ate yyyymmdd(yyyymmddW @ilter absolute series date ran>e 7any study8
Vno- (ddd%dddW @ilter series date ran>e @rom noA 7any study8
Va!e (ddd%dddW @ilter series date ran>e @rom passed series 7any study8
V4o0alit) mmW @ilter modality 7any study8
Vi4a!et).e ####W @ilter ima>e type 7this study8
Vse"ies0esc ####W @ilter series description 7this study8
Vst&0) ###W @ilter study3I4 7any series8
Vse"ies ###W @ilter series3I4 7any study8
Vso. ####W @ilter sop 7any study8
Va%te" NNW collect delay in seconds
Vo"! .W callin> .
V0est .W called .
to . destination
Vsc"i.t D0000EW must be last$ script to run on sent objects 7D optional8
I. !et Vpatientcstudycseriescima>eW >et command @ull synta#
V0ate yyyymmdd(yyyymmddW 7see above8
Vno- (ddd%dddW
Va!e (ddd%dddW
V4o0alit) mmW
Vi4a!et).e ####W
Vse"ies0esc ####W
Vst&0) ###W
Vse"ies ###W
Vso. ####W
Va%te" NNW
%"o4 .
Vsc"i.t D0000EW
I. 0elete Vpatientcstudycseriescima>eW delete command @ull synta#
V0ate yyyymmdd(yyyymmddW 7see above8
Vno- (ddd%dddW
Va!e (ddd%dddW
V4o0alit) mmW
Vi4a!et).e ####W
Vse"ies0esc ####W
Vst&0) ####W
Vse"ies ####W
Vso. ####W
Va%te" NNW
I. s&b4it Vpatientcstudycseriescima>eW secure @tp submit command @ull synta#
Vta"!et ####W username/machine$@older
V.ass-o"0 ####W
Va%te" NNW
Vst&0) ###W @ilter study3I4 7de@ault current8
Vse"ies ###W @ilter series3I4 7de@ault current8
Vso. ####W @ilter sop 7de@ault current8
Vsc"i.t D0000EW must be last$ script to anonymi1e
Note$ calls submit0cI @or every ima>e i@ it e#ists0
I. s&b4it2 Vpatientcstudycseriescima>eW submit usin> any tool command @ull synta#
Vta"!et ####W substituted in command line beloA
Vco44an0 ####W command line strin> Aith [sN@ilename [sNtar>et
Va%te" NNW
Vst&0) ###W @ilter study3I4 7de@ault current8
Vse"ies ###W @ilter series3I4 7de@ault current8
Vso. ####W @ilter sop 7de@ault current8
Vsc"i.t D0000EW must be last$ script to anonymi1e
Note$ calls submit0cI @or every ima>e i@ it e#ists0
I. 4e"!e study series in a study are mer>ed
V4o0alit) mmW 7any study8
Vse"ies0esc ####W 7this study8
Va%te" NNW
Vsc"i.t D0000EW importconverter run on mer>ed objects
I. ."ocess Vpatientcstudycseriescima>eW Va%te" NNW Vb) command-@ile0luaW commandSline
the e#ecutable command or lua @ile 7passed
commandSline as variable8 is e#ecuted Ahen
reception o@ the patient etc is complete0
I. test4o0e 0' controls appendin> o@ internal 4IC2M @ilename
I. co.) @ile to @ile see above
I. 0e%e" de@er .#portConverter until another time
I. i%note4.t) U[iU; command i@ @illed then command
I. i%e4.t) U[C**'*!**'*U; nop i@ UU then 00
I. i%e;&al Ustrin>U! Ustrin>)U; nop test eIual
I. i%note;&al Ustrin>U! Ustrin>)U; nop test not eIual
I. i%4atc7 Ustrin>U! Usubstrin>U; nop test match 7alloAs substrin> N #O! O#! and O#O8
I. i%not4atc7 Ustrin>U! Usubstrin>U test not match 7alloAs substrin> N #O! O#! and O#O8
I. i%n&4e;&al Ustrin>U! Ustrin>)U test numeric
I. i%n&4note;&al Ustrin>U! Ustrin>)U test numeric
I. i%n&4!"eate" Ustrin>U! Ustrin>)U test numeric
I. i%n&4less Ustrin>U! Ustrin>)U test numeric
I. i%note4.t) U[iU; \nop; nop; ] \] block 7note M;K useJ8
I. i%e;&al U[C***;!**)*V*!&WU! U)**)U; substrin> to test year
I. bet-een U,U! U'9U; de@er; test time in hours
6cript strin>s are entered in dicom0ini as @olloAs$
VscriptsW
Test N nop test
Here is a real(li@e e#ample o@ a use@ul e#portconverter script in 6.RC.R'$
e#portconverters N '
e#portconverter* N i@eIual U[uU!U6.RC.R)U; stop; betAeen U,U! U'9U; de@er; @orAard to 6.RC.R)
This script uses the commands Qi@eIual U[uU!U6.RC.R)U; stop;Q to i>nore all data Aith callin>
. o@ Q6.RC.R)Q0 This Aill avoid any data @rom 6.RC.R) to be sent back to 6.RC.R)
causin> a potential loop0 The commands UbetAeen , and '9; de@erU cause the converter to Aait
until a@ter '9$** be@ore subseIuent commands are processed usin> the retryin> mechanism0 The
last command @orAards the data to 6.RC.R)0 Havin> a similar line in 6.RC.R) @orAardin>
to 6.RC.R' Aill cause both servers to synchroni1e a@ter '9$** Aithout a loop0
Here is a much more elaborate sample that Ahen it receives an RT5LN @or machine ) Aill
@orAard the associated RT6TR3CT and CT to machine )$
e#portconverters N '
e#portconverter* N i@noteIual U[mU! URT5LNU; stop;
i@noteIual U[CO&**a!**b)V*!'WU! U)U; stop;
@orAard to <CIS);
>et study modality CT @rom N=I5C6;
>et study modality RT6TR3CT sop [C-&**c!**+*0*-***;!''?? @rom N=I5C6;
@orAard study series [C7-&**c!**+*-***;!''??8-&**+!**'*-&**+!**')-&**+!**':-**)*!***e
to <CIS);
@orAard study modality RT6TR3CT sop [C-&**c!**+*0*-***;!''?? to <CIS)
I&e")Con#e"te"0A =o"8ListI&e")Con#e"te"0A Ret"ie#eCon#e"te"00 Import converters that
Aork on the data object o@ Iueries or retrieve commands0 Can also be used to tri>>er e#ternal
applications0 Can read called 7[c8! callin> 7[u8! and c(move destination @or retrieve 7in [s8! as
Aell as all data in data object0 lso alloAs pro>rammin> o@ pre@erred virtual servers usin> the
virtualserver or virtualservermask commands0 .#perimental0 ConIuest addition0
Ret"ie#eRes&ltCon#e"te"00 Import converters that Aork on the dicom objects 7ima>es8
returned @rom any retrieve0 .#perimental0 ConIuest addition0
I&e")Res&ltCon#e"te"00 Import converters that Aork on the data records that result @rom any
Iuery0 6ince '0:0'+0 ConIuest addition0
Mo0alit)=o"8listI&e")Res&ltCon#e"te"00 Import converters that Aork on the data records
returned @rom a modality Aorklist Iuery0 6ince '0:0'+0 ConIuest addition0
Me"!eSt&0iesCon#e"te"0 an0 Me"!eSe"iesCon#e"te"00 Import converters that Aork on data
bein> mer>ed0 6ince '0:0'+0 ConIuest addition0
A"c7i#eCon#e"te"0. Import converters that Aork on data bein> archived0 6ince '0:0'+0
ConIuest addition0
Mo#eDe#iceCon#e"te"0. Import converters that Aork on data bein> moved @rom one device to
another0 6ince '0:0'+0 ConIuest addition0
ReKecte0I4a!eCon#e"te"0. Import converters that Aork on ima>es rejected @or stora>e! e0>0!
due to a database 3I4 clash0 6ince '0:0'+0 ConIuest addition0
E5te"nal'ie-e"0 Name o@ e#ecutable that can be started @rom the broAser 7BindoAs only8 as
an e#ternal vieAer 7throu>h the ima>e pop(up menu80 The @ilename o@ the slice is passed as only
ar>ument0 ConIuest addition0
De4o'ie-e"0 Name o@ e#ecutable to be called @or each incomin> slice 7BindoAs only80 The
@ilename o@ the slice! callin> . and called . are passed as ar>uments0 ConIuest addition0
De4oCo.)0 Name o@ directory 7includin> trailin> T8 to store a copy o@ each incomin> slice
7BindoAs only80 The @ilename o@ the slice is chan>ed to the callin> .0 ConIuest addition0
Sen0U..e"CaseAE0 I@ set! the called . title is alAays sent 355.RC6.
'i"t&alSe"#e"Fo"00 Lueries and move reIuests sent to this server are @orAarded to the >iven
. titles in Cirtual6erver"or*00,0 The . titles must be knoAn in "C=3>M".M"!0 The client
Aill e@@ectively see all data o@ the listed servers and this one mer>ed Y at the cost o@ Iuery
speed0 The mer>in> occurs durin> eac+ Iuery in memory0 Bhen moves are per@ormed! ima>es
retrieved @rom the listed servers are stored locally 7i0e0! the server @unctions as a 4IC2M cache80
The ima>es are! hoAever! automatically deleted Ahen CacheCirtual4ata is *0 6ince version
'0:0')! server names may be appended by M!"I<=24=K to enabled @iltration o@ e#traneous *Ks
@rom out>oin> Iueries and their results 7see *i#9oda980 6ince '0:0'+! server names may also be
appended Aith Q!CCH.6.RI.6Q or Q!CCH.6T34I.6Q0 In this case! repetitive Iueries in the
IMG. table are cached locally at 6.RI. or 6T34F level! under the @olloAin> @ilenames$
MG*TprinterS@ilesTIuerycacheTFFFFTMM44T########0Iuery and
MG*TprinterS@ilesTIuerycacheTFFFFTMM44T########0result0 This option typically makes
Iuery access to sloA 4IC2M servers much Iuicker0 6ince '0:0'+! server names may also be
appended Aith Q!N2NCIRT3LQ to stop loops or double accesses by cascaded virtual servers
7the virtual server needs to be '0:0'+ up to respond to this command80 ConIuest addition0
'i"t&al*e"Se"ies00 I@ set to N! @etch entire series in Cirtual6erver* Ahen more than N ima>es
are reIuested0 2therAise 7de@ault8 @etch ima>e by ima>e! usin> multiple 3I4 matchin> i@
possible0 ConIuest addition 7e#perimental80
Cac7e'i"t&alData0 I@ set! data passed throu>h @or other servers is kept 7alloAin> the conIuest
server to act as a 4IC2M cache80 Bhen this option is cleared! multiple simultaneous access to
the same data can >ive problems! as one access may be in the process o@ deletin> ima>es Ahile
another one thinks they are there0 4e@ault is set0 ConIuest addition 7e#perimental80
O#e"la.'i"t&al>et0 I@ set other than *! data comin> in @or other 7virtual8 servers is transmitted
directly throu>h to clients Ahile it is bein> recieved0 The value determines hoA many objects
are kept in memory0 4e@ault is *0 To enable it set it to ? or the same value as
.nableReadheadThread0 ConIuest addition 7e#perimental80
*ossible 0ata access %"o4 LUA sc"i.ts6
((VV
^ConIuest 4IC2M server scriptin> overvieA
Hrie@ demo o@ SallS scriptin> options in OOConIuest 4icom 6erverOO0
I@ you run this script @rom OOZeroHrane 6tudioOO! you can put
breakpoints on any line! sin>le step! inspect data Aith the mouse!
and display arbitrary data and enter arbitrary commands to the
4IC2M 6erver in the dLocal consoled AindoA0
In version '0:0'9 @or BindoAs the @olloAin> modules are
embedded in the e#ecutable$
(( dreIuire7QsocketQ8d
(( dreIuire7QpackQ8d
WW
(( @or demo @ill the >lobal variable 4ata Ahich normally contains
(( the incomin> 4IC2M object0 Fou can read @rom disk or @rom the
(( server usin> a 5atientI4$625Instance3I4 @ormat0
(( readdicom7Qc$TTt0dcmQ8 (( @rom disk
(( readdicom7Q***,9*&;);$'0&0:+0+9*?;,0?0)0'*0)'?+,'&,:'0;,)++?&:*0:9?&'9Q8
(( Note that in this demo 4ata is unde@ined until a@ter this call
(( I0e0! 4ata$Read78 is not alloAed as @irst call
(( association in@o available @rom lua$
print7ssociation0Callin>! ssociation0Called! ssociation0Thread! ssociation0ConnectedI58
(( all counters available @rom lua$
print7Q(((((( ll counters ((((((((Q8
print7Global06tartTime8
print7Global0TotalTime8
print7Global0LoadTime8
print7Global05rocessTime8
print7Global06aveTime8
print7Global0Ima>es6ent8
print7Global0Ima>esReceived8
print7Global0Ima>es6aved8
print7Global0Ima>es"orAarded8
print7Global0Ima>es.#ported8
print7Global0Ima>esCopied8
print7Global0Incomin>ssociations8
print7Global0.choReIuest8
print7Global0CS"indS5atientRoot8
print7Global0CSMoveS5atientRootN=I8
print7Global0CSMoveS5atientRoot8
print7Global0CS"indS6tudyRoot8
print7Global0CSMoveS6tudyRootN=I8
print7Global0CSMoveS6tudyRoot8
print7Global0CS"indS5atient6tudy2nly8
print7Global0CS"indSModalityBorkList8
print7Global0CSMoveS5atient6tudy2nlyN=I8
print7Global0CSMoveS5atient6tudy2nly8
print7Global03nknoAnReIuest8
print7Global0CreateHasic"ilm6ession8
print7Global04eleteHasic"ilm6ession8
print7Global0ctionHasic"ilm6ession8
print7Global06etHasic"ilm6ession8
print7Global0CreateHasic"ilmHo#8
print7Global0ctionHasic"ilmHo#8
print7Global06etHasic"ilmHo#8
print7Global04eleteHasic"ilmHo#8
print7Global06etHasicGray6caleIma>eHo#8
print7Global06etHasicColorIma>eHo#8
print7Global0GuiReIuest8
print7Global0Ima>esToGi@"romGui8
print7Global0Ima>esTo4icom"romGui8
print7Global0.#tract"romGui8
print7Global0Luery"romGui8
print7Global04eleteIma>e"romGui8
print7Global04elete5atient"romGui8
print7Global04elete6tudy"romGui8
print7Global04elete6tudies"romGui8
print7Global04elete6eries"romGui8
print7Global0Move5atient"romGui8
print7Global0Move6tudy"romGui8
print7Global0Move6tudies"romGui8
print7Global0Move6eries"romGui8
print7Global0dded"ile"romGui8
print7Global04umpHeader"romGui8
print7Global0"orAard"romGui8
print7Global0Grab"romGui8
print7Global04atabase2pen8
print7Global04atabaseClose8
print7Global04atabaseLuery8
print7Global04atabaseddRecord8
print7Global04atabase4eleteRecord8
print7Global04atabaseNe#tRecord8
print7Global04atabaseCreateTable8
print7Global04atabase3pdateRecords8
print7Global0LueryTime8
print7Global06kippedCached3pdates8
print7Global03pdate4atabase8
print7Global0dded4atabase8
print7Global0N=I5rivateCompress8
print7Global0N=I5rivate4ecompress8
print7Global04oAn6i1eIma>e8
print7Global04ecompressRpe>8
print7Global0CompressRpe>8
print7Global04ecompressRpe>)***8
print7Global0CompressRpe>)***8
print7Global04ecompressedRL.8
print7Global04e5laned8
print7Global04e5aletted8
print7Global0RecompressTime8
print7Global0>pps8
print7Global0>ppstime8
(( all con@i>uration items are available @rom lua 7read-Arite8
print7Global0No4icomCheck8
print7Global04ebu>Level8
print7Global0ThreadCount8
print7Global02penThreadCount8
print7Global0.nableReadheadThread8
print7Global0BorkListMode8
print7Global06tora>e"ailed.rrorCode8
print7Global0"ailHold2@@8
print7Global0Retry4elay8
print7Global0Lueue6i1e8
print7Global0"orAardCollect4elay8
print7Global0CacheCirtual4ata8
print7Global0>Rpe>Luality8
print7Global0>3se2penRpe>8
print7Global0"i#=odak8
print7Global0NumInde#in>8
print7Global04oubleHack6lashTo4H8
print7Global03se.scape6trin>Constants8
print7Global0.nableComputed"ields8
print7Global0"ileCompressMode8
print7Global0RootCon@i>8
print7Global0Hase4ir8
print7Global0Con@i>"ile8
print7Global04icom4ict8
print7Global0utoRoute5ipe8
print7Global0utoRoute.#ec8
print7Global04ropped"ileCompression8
print7Global0Incomin>Compression8
print7Global0TransmitCompression8
print7Global04e@aultN=ITransmitCompression8
print7Global0rchiveCompression8
print7Global0TestMode8
print7Global06tatus6trin>8
print7Q(((((( 6et a con@i> item ((((((((Q8
Global04ebu>Level N :
print7Q((((( Read any dicom0ini item (((((Q8
section N QsscscpQ; item N QTC55ortQ; de@aultNQQ;
print7>pps7section! item! de@ault88
(( all command items are available @rom lua 7read only8
print7Q(((((( testin> debu> lo> 7typically not shoAn8 ((((((((Q! ')&:8
debu>lo>7QCommand priorityQ! Command05riority8
(( set 4ata stora>e
print7Q(((((( test settin> stora>e ((((((((Q8
4ata06tora>e N QMG)Q
print7QFou can only read-Arite stora>e in an import converterQ! 4ata06tora>e8;
(( read-Arite data! create seIuences! and Arite into seIuences 7i@ VW not passed! V*W is assumed8
print7Q(((((( test read-Arite 4ata ((((((((Q8
4ata05atientName N 4ata05atientI4
4ata0Re@erenced6tudy6eIuence N \]
print7QNumber o@ elements in seIuenceQ! ^4ata0Re@erenced6tudy6eIuence8;
print7QThis is a seIuence$ Q! 4ata0Re@erenced6tudy6eIuence8;
4ata0Re@erenced6tudy6eIuenceV*W06tudyInstance3I4 N 4ata06tudyInstance3I4
4ata0Re@erenced6tudy6eIuence06tudyInstance3I4 N 4ata06tudyInstance3I4
4ata0Re@erenced6tudy6eIuenceV'W06tudyInstance3I4 N 4ata06tudyInstance3I4
print7^4ata0Re@erenced6tudy6eIuence8;
print7QThis is a seIuence item$ Q! 4ata0Re@erenced6tudy6eIuenceV*W06tudyInstance3I48;
(( delete items
print7Q(((((( test delete item ((((((((Q8
4ata0Re@erenced6tudy6eIuence N nil
print7QThis Aas a seIuence$ Q! 4ata0Re@erenced6tudy6eIuence8;
(( inspect dictionary 7results in '+! &) vs 5atientI48
print7dictionary7Q5atientI4Q88
print7dictionary7'+! &)88
(( inspect sIl de@inition 7database! roA8 results in '+! &) 5atientI4 +: 6LLS6TR 4TS6TR8
print7>etSsIlde@7*! *88
(( send a script to conIuest
print7Q(((((( test conIuest script call ((((((((Q8
script7Qnop this is an ImportConverter scriptQ8 (( only Aorks Ahen 4ata de@ined
4ata$6cript7Qnop this is an ImportConverter script runnin> on a speci@ied 4IC2M objectQ8
(( send a servercommand to conIuest and read its result
print7Q(((((( test conIuest command call ((((((((Q8
print7servercommand7QdisplaySstatus$Q88
(( run e#ecutable in the back>round
system7Qd>ate0e#e (ZQ8
(( >et an item @rom CRN.M0M5
print7Q(((((( test readin> CRN.M0M5 ((((((((Q8
print7>etSamap7*88
(( results in QC2NL3.6T6RC' ')90*0*0' ?+9; unQ
(( remap 3I4s 7in '0:0'9beta8
print7chan>euid7Q')j>k@j>@k>ja#Q! QaapnootmiesQ88
print7chan>euidback7QaapnootmiesQ88
print7chan>euid7Q'0'Q88
print7chan>euidback7Q'0)0;)+0*0'0&+;**:&0)0'&?09&:;990:))&;+):090'&?,')?&*)0&'0*Q88
print7>enuid788
(( results in$
(( VC2NL3.6T6RC'W aapnootmies
(( VC2NL3.6T6RC'W ')j>k@j>@k>ja#
(( VC2NL3.6T6RC'W '0)0;)+0*0'0&+;**:&0)0'&?09&:;990:))&;+):090'&?,')?&*)0&'0*
(( VC2NL3.6T6RC'W '0'
(( VC2NL3.6T6RC'W 0000 a neA uid here 0000
(( To remap all uids use script7QneAuidsQ8 and reverse 7'0:0'9beta8 Aith script7QolduidsQ8
(( Iuery the local database 7also possible @rom CGI inter@ace! i@ the database is setup in the CGI dicom0ini8
print7Q(((((( test Iuerin> a database ((((((((Q8
print7dbIuery7Q4IC2M5atientsQ! Q5atientNamQ! Q5atientI4 LI=. TQ)[TQQ8V'WV'W8
(( set and >et pi#els in the current ima>e or any loaded ima>e
print7Q(((((( test readin> and Aritin> pi#els ((((((((Q8
#N*; yN*; @rameN*;
print7>etpi#el7#! y! @rame88;
setpi#el7#! y! @rame! >etpi#el7#! y! @rame8O)%'*8;
print7>etpi#el7#! y! @rame88;
print74ata$Get5i#el7#! y! @rame88
(( set and >et roAs and colums in the ima>e
print7Q(((((( test readin> and Aritin> roAs and columns ((((((((Q8
a N >etroA74ata0RoAs - )8
a N 4ata$GetRoA74ata0RoAs - )8
print7aV*W! aV'W! aV)W! aV&W! aV');W8;
setcolumn74ata0Columns - )! @rame! a8
4ata$6etColumn74ata0Columns - &! @rame! a8
(( >et - set ima>e as binary strin>! also alloA e@@icient binary ima>e conversion 7'0:0'9 beta8
a N >etima>e7@rame8; a N 4ata$GetIma>e7@rame8
setima>e7@rame! a8; 4ata$6etIma>e7@rame! a8
(( create-read-Arite-destroy a dicom object
print7Q(((((( test create-read-Arite dicom object ((((((((Q8
a N neAdicomobject78
a N 4icom2bject$neA78 (( pre@erred notation in '0:0'9beta
a05atientI4 N QtestQ
Aritedicom7a! Qc$TT@ile'0dcmQ8
b N neAdicomobject78
readdicom7b! Qc$TT@ile'0dcmQ8
Ariteheader7b! Qc$TT@ile'0t#tQ8
a$Brite7Qc$TT@ile)0dcmQ8
a$Read7Qc$TT@ile)0dcmQ8
a$4ump7Qc$TT@ile)0t#tQ8
a$Get5i#el7#! y! 18
a$6et5i#el7#! y! 1! value8
a$GetRoA7#! y! 18
a$6etRoA7#! y! 1! table8
a$GetColumn7#! y! 18
a$6etColumn7#! y! 1! table8
deletedicomobject7a8 (( not reIuired$ Aill be @reed automatically
(( a$@ree78 (( also alloAed in '0:0'9beta$
(( Iuery a dicomserver 7returns a dicomobjectarray8
print7Q(((((( test Iuery a dicom server ((((((((Q8
bNneAdicomobject78; b05atientName N QOQ; aNdicomIuery7QC2NL3.6T6RC'Q! Q5TI.NTQ! b8;
print 7Q"irst Iuery result has this patientname$Q! aV*W05atientName8;
(( deletedicomobject7a8 (( not reIuired$ Aill be @reed automatically
(( delete data @rom local dicomserver 7use Aith care8
print7Q(((((( delete @rom dicom server ((((((((Q8
bNneAdicomobject78; b05atientI4 N Qhopedoesnte#istQ; dicomdelete7b8;
(( create a dicomobjectarray
print7Q(((((( test creatin> dicom array ((((((((Q8
aNneAdicomarray78; aV*W05atientI4NQaQ; aV'W05atientI4NQbQ;
(( in '0:0'9beta also$ a N 4icom2bject$neAarray78
(( read the @ilename o@ a dropped @ile i@ any
print7Q(((((( test "ilename variable ((((((((Q8
print7QIs there a @ile droppedZQ! "ilename8
(( access to lon> and seIuence CRs
print7Q(((((( test readin> - Aritin> lon> CRs ((((((((Q8
y N 4ata$GetCR7*#9@e*! *#'*8;
print7QLen>th o@ yQ! ^y8;
y N >etvr7*#9@e*! *#'*8;
setvr7*#9@e*! *#'*! y8;
4ata$6etCR7*#9@e*! *#'*! y8;
(( Ahere y is either a table startin> at *! or a dicomobjectarray @or a seIuence
(( In '0:0'9beta these command can also return a more e@@icient binary strin>$
y N 4ata$GetCR7*#9@e*! *#'*! true8;
4ata$6etCR7*#9@e*! *#'*! y8;
(( memory allocation debu>>in>
print7Q(((((( memory alloc check N2T.$ CLL I6 N2T THR.4 6". ((((((((Q8
print7heapin@o788;
(( move
print7Q(((((( testin> a C(M2C. ((((((((Q8
. N QC2NL3.6T6RC'Q;
bNneAdicomobject78; b05atientName N QH.4 .<5)Q; b0LueryRetrieveLevel N Q6T34FQ;
dicommove7QC2NL3.6T6RC'Q! .! b8;
@unction callback78 print7Global06tatus6trin>8 end;
bNneAdicomobject78; b05atientName N QH.4 .<5)Q; b0LueryRetrieveLevel N Q6T34FQ;
dicommove7QC2NL3.6T6RC'Q! .! b! *! Qcallback78Q8;
(( sIl
print7Q(((((( testin> an 6LL statement ((((((((Q8
sIl7UIN6.RT INT2 3serTable 7CounterI4!Cal8 CL3.6 7QCTQ!'8 2N 435LICT. =.F 354T. CalNCal%'U8;
(( special script command QretryQ
print7Q(((((( testin> retry script command ((((((((Q8
script7QretryQ8 (( Ahen used in RejectedIma>eBorkListConverter* and RejectedIma>eConverter*; Aill re(attempt to
store the object a@ter the script is done
(( special script command Qde@erQ
print7Q(((((( testin> de@er script command ((((((((Q8
script7Qde@erQ8 (( Ahen used in an .#portConverter! the convert Aill re(attempt to process or @orAard the object later
3.3 0ico4.s;l
This @ile is placed in the same directory as the e#ecutable 7e0>0! c$Tdicomserver80 It speci@ies the
con@i>uration o@ the 6LL database used to store I24 module attributes @or Luery-Retrieve
operations0 The ConIuest 4IC2M server >enerates 7and overArites8 it automatically upon @irst
installation 7i0e0! Ahen dicom0ini does not e#ist80 .ditin> this @ile is not necessary! e#cept @or a
applyin> a @i# Ahen usin> 2RCL.! Ahere the name o@ the @ields MRoAsK and MColumsK in the
ima>e database must be chan>ed to 7e0>08 MLRoAsK and MLColumsU be@ore the database is
initiali1ed 7i0e0! a@ter ESa#e Con%i!&"ationE80 It is possible to check the synta# o@ this @ile @or
errors usin> the EList Database La)o&tE button on the EMaintenanceE pa>e o@ the ConIuest
4IC2M server0 Note that the database de@initions o@ version '0&0'' and up de@ine a copy o@ the
5atientI4 in both the series and the ima>e table0 This is done to alloA improved Iuery speed in
@uture versions0
"rom version '0:0* on! the contents o@ this @ile depend on the selected database driver upon
installation 7Ahen dicom0ini does not e#ist8! Ahere the built in dHaseIII driver uses a non(
normali1ed version o@ the database 7not listed here8! and the others use the @ile as listed here0
I%leentin$ c+an$ed versions o* t+is *ile requires a *ull re$eneration o* t+e data,ase.
<it+out *ull re$eneration, t+e server 0ill not *unction correctly: =eovin$ *ields *ro t+is
data,ase ay a**ect t+e DICOM server user inter*ace o%eration.
6ince version '0:0,! the Aorklist database has been added0 This database de@inition has an e#tra
column Aith HL9 ta>s used @or translatin> HL9 data to a dicom Aorklist0 These ta>s can be
chan>ed at any time Aithout re>eneratin> the database! restartin> the server su@@ices to use the
neA ta>s0
5o ena,le 0or9list su%%ort 0+en u%$radin$ to version 1.4.10, *iles dico.sql is u%dated
&autoatically' and d$ateso%.lst ust ,e u%dated anually. 5+en restart t+e server and %us+
6Clear 0or9list data,ase6 on t+e installation %a$e o* t+e KMI to create a *res+ 0or9list
data,ase.
-O
^ 4IC2M 4atabase layout
^ .#ample version @or all 6LL servers 7mostly normali1ed8
^
^ 7"ile 4IC2M06LL8
^ OO 42 N2T .4IT THI6 "IL. 3NL.66 F23 =N2B BHT F23 R. 42ING OO
^
^ Cersion Aith modality moved to the series level and .choNumber in ima>e table
^ Revision &$ 5atient birthday and se#! bolus a>ent! correct @ield len>ths
^ Revision :$ 6tudymodality! 6tation and 4epartment in study
^ Manu@acturer! Model! Hody5art and 5rotocol in series
^ cIdate-time! coil! acInumber! slicelocation and pi#el in@o in ima>es
^ Notes @or revision :$
^ 4epartmentName in study 7should o@@icially be in series! but e"ilm e#pects it in study8
^ 6tationName is in study 7should o@@icially be in series! but more use@ul in study8
^ Revision ?$ dded patientI4 in series and ima>es @or more e@@icient Iueryin>
^ Revision +$ dded @rame o@ re@erence 3I4 in series table
^ Revision 9$ dded Ima>eType in ima>e table! 6tudyModality to +: chars! cI4ate to 6LLSCS4T.
^ Revision ;$ 4enormali1ed study table 7add patient I4! name! birthdate8 to shoA consistency problems
^ Revision '*$ "i#ed Aidth o@ Receivin>Coil$ to '+ chars
^ Revision '&$ dded Ima>eI4 to ima>e database
^ Revision ':$ dded BorkList database Aith HL9 ta>s
^ Revision '+$ Moved 6tationname and Institutional4epartmentName to series table
^ Revision '9$ .choNumber! ReI5roc4escription to +: characters; 6tudyModality! .choNumber! Ima>eType to 4TSM6TR; use
^ Institution instead o@ Institutional4epartmentNameQ8;
^
^ ? databases need to be de@ined$
^
^ O5atientO
^ O6tudyO
^ O6eriesO
^ OIma>eO
^ OBorkListO
^
^
^ The last de@ined element o@ 6tudy is a link back to 5atient
^ The last de@ined element o@ 6eries is a link back to 6tudy
^ The last de@ined element o@ Ima>e is a link back to 6eries
^
^
^ "ormat$
^ \ Group! .lement! Column Name! Column Len>th! 6LL(Type! 4IC2M(Type ]
O-
O5atientO
\
\ *#**'*! *#**)*! U5atientI4U! +:! 6LLSCSCHR! 4TS6TR ]!
\ *#**'*! *#**'*! U5atientNameU! +:! 6LLSCSCHR! 4TS6TR ]!
\ *#**'*! *#**&*! U5atientHirth4ateU! ;! 6LLSCS4T.! 4TS4T. ]!
\ *#**'*! *#**:*! U5atient6e#U! '+! 6LLSCSCHR! 4TS6TR ]
]
O6tudyO
\
\ *#**)*! *#***d! U6tudyInstance3I4U! +:! 6LLSCSCHR! 4TS3I ]!
\ *#***;! *#**)*! U6tudy4ateU! ;! 6LLSCS4T.! 4TS4T. ]!
\ *#***;! *#**&*! U6tudyTimeU! '+! 6LLSCSCHR! 4TSTIM. ]!
\ *#**)*! *#**'*! U6tudyI4U! '+! 6LLSCSCHR! 4TS6TR ]!
\ *#***;! *#'*&*! U6tudy4escriptionU! +:! 6LLSCSCHR! 4TS6TR ]!
\ *#***;! *#**?*! UccessionNumberU! '+! 6LLSCSCHR! 4TS6TR ]!
\ *#***;! *#**,*! URe@er5hysicianU! +:! 6LLSCSCHR! 4TS6TR ]!
\ *#**'*! *#'*'*! U5atients>eU! '+! 6LLSCSCHR! 4TS6TR ]!
\ *#**'*! *#'*&*! U5atientsBei>htU! '+! 6LLSCSCHR! 4TS6TR ]!
\ *#***;! *#**+'! U6tudyModalityU! +:! 6LLSCSCHR! 4TSM6TR ]!
\ *#**'*! *#**'*! U5atientNameU! +:! 6LLSCSCHR! 4TS6TR ]!
\ *#**'*! *#**&*! U5atientHirth4ateU! ;! 6LLSCS4T.! 4TS4T. ]!
\ *#**'*! *#**:*! U5atient6e#U! '+! 6LLSCSCHR! 4TS6TR ]
\ *#**'*! *#**)*! U5atientI4U! +:! 6LLSCSCHR! 4TS6TR ]
]
O6eriesO
\
\ *#**)*! *#***e! U6eriesInstance3I4U! +:! 6LLSCSCHR! 4TS3I ]!
\ *#**)*! *#**''! U6eriesNumberU! ')! 6LLSCSCHR! 4TS6TR ]!
\ *#***;! *#**)'! U6eries4ateU! ;! 6LLSCS4T.! 4TS4T. ]!
\ *#***;! *#**&'! U6eriesTimeU! '+! 6LLSCSCHR! 4TSTIM. ]!
\ *#***;! *#'*&e! U6eries4escriptionU! +:! 6LLSCSCHR! 4TS6TR ]!
\ *#***;! *#**+*! UModalityU! '+! 6LLSCSCHR! 4TS6TR ]!
\ *#***;! *#'*'*! U6tationNameU! '+! 6LLSCSCHR! 4TS6TR ]!
\ *#***;! *#**;*! UInstitutionU! +:! 6LLSCSCHR! 4TS6TR ]!
\ *#**';! *#?'**! U5atient5ositionU! '+! 6LLSCSCHR! 4TS6TR ]!
\ *#**';! *#**'*! UContrastHolus>entU! +:! 6LLSCSCHR! 4TS6TR ]!
\ *#***;! *#**9*! UManu@acturerU! +:! 6LLSCSCHR! 4TS6TR ]!
\ *#***;! *#'*,*! UModelNameU! +:! 6LLSCSCHR! 4TS6TR ]!
\ *#**';! *#**'?! UHody5art.#aminedU! +:! 6LLSCSCHR! 4TS6TR ]!
\ *#**';! *#'*&*! U5rotocolNameU! +:! 6LLSCSCHR! 4TS6TR ]!
\ *#**)*! *#**?)! U"rame2@Re@erence3I4U! +:! 6LLSCSCHR! 4TS3I ]!
\ *#**'*! *#**)*! U6eries5atU! +:! 6LLSCSCHR! 4TS6TR ]!
\ *#**)*! *#***d! U6tudyInstance3I4U! +:! 6LLSCSCHR! 4TS3I ]
]
OIma>eO
\
\ *#***;! *#**';! U625Instance3I4U! +:! 6LLSCSCHR! 4TS3I ]!
\ *#***;! *#**'+! U625Class3I4U! +:! 6LLSCSCHR! 4TS3I ]!
\ *#**)*! *#**'&! UIma>eNumberU! ')! 6LLSCSCHR! 4TS6TR ]!
\ *#***;! *#**)&! UIma>e4ateU! ;! 6LLSCS4T.! 4TS4T. ]!
\ *#***;! *#**&&! UIma>eTimeU! '+! 6LLSCSCHR! 4TSTIM. ]!
\ *#**';! *#**;+! U.choNumberU! +:! 6LLSCSCHR! 4TSM6TR ]!
\ *#**);! *#***;! UNumber2@"ramesU! ')! 6LLSCSCHR! 4TS6TR ]!
\ *#***;! *#**))! UcI4ateU! ;! 6LLSCS4T.! 4TS4T. ]!
\ *#***;! *#**&)! UcITimeU! '+! 6LLSCSCHR! 4TSTIM. ]!
\ *#**';! *#')?*! UReceivin>CoilU! '+! 6LLSCSCHR! 4TS6TR ]!
\ *#**)*! *#**')! UcINumberU! ')! 6LLSCSCHR! 4TS6TR ]!
\ *#**)*! *#'*:'! U6liceLocationU! '+! 6LLSCSCHR! 4TS6TR ]!
\ *#**);! *#***)! U6amples5er5i#elU! ?! 6LLSCSCHR! 4TS3INT'+ ]!
\ *#**);! *#***:! U5hotoMetricInterpretationU! '+! 6LLSCSCHR! 4TS6TR ]!
\ *#**);! *#**'*! URoAsU! ?! 6LLSCSCHR! 4TS3INT'+ ]!
\ *#**);! *#**''! UColumsU! ?! 6LLSCSCHR! 4TS3INT'+ ]!
\ *#**);! *#*'*'! UHits6toredU! ?! 6LLSCSCHR! 4TS3INT'+ ]!
\ *#***;! *#***;! UIma>eTypeU! ');! 6LLSCSCHR! 4TSM6TR ]!
\ *#**?:! *#*:**! UIma>eI4U! '+! 6LLSCSCHR! 4TS6TR ]!
\ *#**'*! *#**)*! UIma>e5atU! +:! 6LLSCSCHR! 4TS6TR ]!
\ *#**)*! *#***e! U6eriesInstance3I4U! +:! 6LLSCSCHR! 4TS3I ]
]
OBorkListO
\
\ *#***;! *#**?*! UccessionNumberU! '+! 6LLSCSCHR! 4TS6TR! U2HR0&U ]!
\ *#**'*! *#**)*! U5atientI4U! +:! 6LLSCSCHR! 4TS6TR! U5I40:U ]!
\ *#**'*! *#**'*! U5atientNameU! +:! 6LLSCSCHR! 4TS6TR! U5I40?U ]!
\ *#**'*! *#**&*! U5atientHirth4ateU! ;! 6LLSCS4T.! 4TS4T.! U5I409U ]!
\ *#**'*! *#**:*! U5atient6e#U! '+! 6LLSCSCHR! 4TS6TR! U5I40;U ]!
\ *#**'*! *#)***! UMedicallertsU! +:! 6LLSCSCHR! 4TS6TR! U(((U ]!
\ *#**'*! *#)''*! UContrastller>iesU! +:! 6LLSCSCHR! 4TS6TR! U(((U ]!
\ *#**)*! *#***d! U6tudyInstance3I4U! +:! 6LLSCSCHR! 4TS3I! U(((U ]!
\ *#**&)! *#'*&)! UReI5hysicianU! +:! 6LLSCSCHR! 4TS6TR! U2HR0'+U ]!
\ *#**&)! *#'*+*! UReI5roc4escriptionU! '+! 6LLSCSCHR! 4TS6TR! U2HR0:0'U ]!
\ *#**:*! *#*'**! U((((((((U! *! 6LLSCSCHR! 4TS6TRT6.L3.NC.! U(((U ]!
\ *#***;! *#**+*! UModalityU! '+! 6LLSCSCHR! 4TS6TR! U2HR0)'U ]!
\ *#**&)! *#'*9*! UReIContrast>entU! +:! 6LLSCSCHR! 4TS6TR! U(((U ]!
\ *#**:*! *#***'! U6cheduled.U! '+! 6LLSCSCHR! 4TS6TR! U(((U ]!
\ *#**:*! *#***)! U6tart4ateU! ;! 6LLSCS4T.! 4TS4T.! U2HR0904T.U ]!
\ *#**:*! *#***&! U6tartTimeU! '+! 6LLSCSCHR! 4TSTIM.! U2HR090TIM.U ]!
\ *#**:*! *#***+! U5er@5hysicianU! +:! 6LLSCSCHR! 4TS6TR! U(((U ]!
\ *#**:*! *#***9! U6ched564escriptionU! +:! 6LLSCSCHR! 4TS6TR! U(((U ]!
\ *#**:*! *#***,! U6ched56I4U! '+! 6LLSCSCHR! 4TS6TR! U2HR0:U ]!
\ *#**:*! *#**'*! U6ched6tationNameU! '+! 6LLSCSCHR! 4TS6TR! U2HR0):U ]!
\ *#**:*! *#**''! U6ched56LocationU! '+! 6LLSCSCHR! 4TS6TR! U(((U ]!
\ *#**:*! *#**')! U5reMedicationU! +:! 6LLSCSCHR! 4TS6TR! U(((U ]!
\ *#**:*! *#*:**! U6ched56CommentsU! +:! 6LLSCSCHR! 4TS6TR! U(((U ]!
\ *#**:*! *#*'**! U(((((((((U! *! 6LLSCSCHR! 4TS.N46.L3.NC.! U(((U ]!
\ *#**:*! *#'**'! UReI5rocI4U! '+! 6LLSCSCHR! 4TS6TR! U2HR0:0*U ]!
\ *#**:*! *#'**&! UReI5roc5riorityU! +:! 6LLSCSCHR! 4TS6TR! U2HR0)9 ]
]
3.4 ac"ne4a.4a.
This @ile is placed in the same directory as the e#ecutable 7e0>0! c$Tdicomserver80 It speci@ies the
con@i>uration o@ the CR(N.M to I5 address and port map! used @or Luery-Retrieve
operations0 Most 4IC2M servers and applications Aill N2T communicate Aith the ConIuest
4IC2M server unless they have been correctly added to this list and this server has been made
knoAn to them0 This @ile also speci@ies the type o@ compression that Aill be proposed @or
out>oin> connections0 The accepted values are the same as @or 4ropped"ileCompression in
dico.ini! Aith the e#ception that transmission o@ dicom objects in UasU and UnjU modes is not
correctly implemented and should only be used Aith N=I clients or the ConIuest 4IC2M
server0
3pon installation! an empty version o@ this @ile is created automatically 7the installation pro>ram
Aill N2T overArite this @ile i@ it e#ists80 .dit the contents o@ this @ile throu>h the EGno-n
DICOM ."o#i0e"sE pa>e o@ the ConIuest 4IC2M server0 4o not chan>e the @ile header0
It is possible to check the synta# o@ this @ile @or errors usin> the EList DICOM ."o#i0e"sE
button on the EMaintenanceE pa>e o@ the ConIuest 4IC2M server0
It is possible to test communication Aith other 4IC2M servers 7that support the Luery-Move
@unctionality! i0e0! ima>e servers8 throu>h the EI&e") + Mo#eE pa>e o@ the ConIuest 4IC2M
server0 ConIuest addition$ this @ile supports a simple Aild(card mechanism0 The .! host name
and I5 port may all end on a O0 The O part o@ the . is copied into the host name and-or I5 port
Aithout chan>e0 In the @olloAin> e#ample any application Aith an . o@ UCU @olloAed by its I5
number or host name Aill be alloAed to communicate throu>h port ')&:0
The Aildcard option is hi>hly use@ul to let a >roup o@! e0>0! vieAer applications or servers
communicate Aithout havin> to con@i>ure each o@ them individually in the server0
/2 2222222222222222222222222222222222222222222222222222222222
2 2
2 ,ICO/ 0E 10pp%i"ation entit!4 -Q IP address / Port #ap 2
2 1This is &i%e 0CRNE/03/0P4 2
2 2
2 0%% ,ICO/ s!ste#s that Kant to retrie$e i#ages &ro# the 2
2 Con5uest ,ICO/ ser$er #ust e %isted here Kith "orre"t 2
2 0E na#e' 1IP adress or hostna#e4 and port nu#er3 2
2 The &irst entr! is the Con5uest s!ste# as e+a#p%e3 2
2 2
2 2
2 The s!nta+ &or ea"h entr! is ; 2
2 0E PIP adressZCost na#eQ port nu#er "o#pression 2
2 2
2 @or "o#pression see #anua%3 Va%ues are un.un"o#pressed) 2
2 u%.%itt%eendiane+p%i"it'u.igendiane+p%i"it'ue.oth 2
2 A:.%oss%ess Apeg)AG33AI.%oss! Apeg)n133nM.n?i pri$ate 2
2 A? .%oss%ess Apeg:999)A%.%oss! Apeg:999 2
2 Use VGNN33AINN or A%NN to o$erride 5ua%it! &a"tor to NNS 2
2 2
2222222222222222222222222222222222222222222222222222222222 2/
CONQUESTSRV1 1:F393931 JIFH un
V2 2 1:GM un
S2 2 JIFH un
3./ 0!ateso..lst
This @ile is placed in the same directory as the e#ecutable 7e0>0! c$Tdicomserver80 It speci@ies the
con@i>uration o@ the 66C(6C5 en>ine0 This @ile can also be used to selectively reject other 625
classes! as Aell as provide security @or incomin> .Ks0 The ConIuest 4IC2M server >enerates
it automatically upon installation0 copy o@ this @ile is present in the T.M5 directory0 This
latter copy is automatically removed Ahen closin> the server0 To enable printin> in version
'0&0') up! this @ile should be manually removed prior to installation0 "rom version '0:0*!
G.MR6tora>e and G.CT6tora>e are disabled 7usin> M^K8! thereby @orcin> G. scanners to
transmit standard 4IC2M ima>es that other vieAers can handle0 "rom version '0:0) up! R5.G
trans@er synta#es are enabled @or incomin> connections i@ R5.G support is con@i>ured as 2N0
To @ilter incomin> reIuests @rom unknoAn . addresses start addin> Remote. lines! not
@or>ettin> to add the server . itsel@ as Aell0
^
^ 4IC2M pplication - sop - trans@er 3I4 list0
^
^ This list is used by the Checked543S6ervice 7 U@ilenameU 8 service
^ class0 ll incomin> associations Aill be veri@ied a>ainst this
^ @ile0
^
^ Revision )$ disabled G.MR6tora>e and G.CT6tora>e
^ Revision &$ e#tended Aith neA sops and Aith R5.G trans@er synta#es
^ Revision :$ added Modality Borklist Iuery
^
^None none Remote.
^None none Local.
^4IC2M '0)0;:*0'***;0&0'0'0' application
Ceri@ication '0)0;:*0'***;0'0' sop
6tored5rint6tora>e '0)0;:*0'***;0?0'0'0)9 sop
HardcopyGrayscaleIma>e6tora>e '0)0;:*0'***;0?0'0'0), sop
HardcopyColorIma>e6tora>e '0)0;:*0'***;0?0'0'0&* sop
CR6tora>e '0)0;:*0'***;0?0'0:0'0'0' sop
4<6tora>e"or5resentation '0)0;:*0'***;0?0'0:0'0'0'0' sop
4<6tora>e"or5rocessin> '0)0;:*0'***;0?0'0:0'0'0'0'0' sop
4M6tora>e"or5resentation '0)0;:*0'***;0?0'0:0'0'0'0) sop
4M6tora>e"or5rocessin> '0)0;:*0'***;0?0'0:0'0'0'0)0' sop
42ral6tora>e"or5resentation '0)0;:*0'***;0?0'0:0'0'0'0& sop
42ral6tora>e"or5rocessin> '0)0;:*0'***;0?0'0:0'0'0'0&0' sop
CT6tora>e '0)0;:*0'***;0?0'0:0'0'0) sop
Retired36Multi@rame6tora>e '0)0;:*0'***;0?0'0:0'0'0& sop
36Multi@rame6tora>e '0)0;:*0'***;0?0'0:0'0'0&0' sop
MR6tora>e '0)0;:*0'***;0?0'0:0'0'0: sop
MRIma>e6tora>e.nhanced '0)0;:*0'***;0?0'0:0'0'0:0' sop
MR6tora>e6pectroscopy '0)0;:*0'***;0?0'0:0'0'0:0) sop
RetiredNM6tora>e '0)0;:*0'***;0?0'0:0'0'0? sop
Retired366tora>e '0)0;:*0'***;0?0'0:0'0'0+ sop
366tora>e '0)0;:*0'***;0?0'0:0'0'0+0' sop
6C6tora>e '0)0;:*0'***;0?0'0:0'0'09 sop
6C6tora>e6in>leHitM" '0)0;:*0'***;0?0'0:0'0'090' sop
6C6tora>eGrayscaleHyteM" '0)0;:*0'***;0?0'0:0'0'090) sop
6C6tora>eGrayscaleBordM" '0)0;:*0'***;0?0'0:0'0'090& sop
6C6tora>eTrueColorM" '0)0;:*0'***;0?0'0:0'0'090: sop
6tandalone2verlay6tora>e '0)0;:*0'***;0?0'0:0'0'0; sop
6tandaloneCurve6tora>e '0)0;:*0'***;0?0'0:0'0'0, sop
^B"6tora>eTAelveLead.CG '0)0;:*0'***;0?0'0:0'0'0,0'0' sop
^B"6tora>eGeneral.CG '0)0;:*0'***;0?0'0:0'0'0,0'0) sop
^B"6tora>embulatory.CG '0)0;:*0'***;0?0'0:0'0'0,0'0& sop
^B"6tora>eHemodynamic '0)0;:*0'***;0?0'0:0'0'0,0)0' sop
^B"6tora>eCardiac.lectrophysiolo>y '0)0;:*0'***;0?0'0:0'0'0,0&0' sop
^B"6tora>eHasicCoiceudio '0)0;:*0'***;0?0'0:0'0'0,0:0' sop
6tandaloneModalityL3T6tora>e '0)0;:*0'***;0?0'0:0'0'0'* sop
6tandaloneC2IL3T6tora>e '0)0;:*0'***;0?0'0:0'0'0'' sop
Grayscale6o@tcopy5resentation6tate6tora>e '0)0;:*0'***;0?0'0:0'0'0''0' sop
Retired<6in>le5lane6tora>e '0)0;:*0'***;0?0'0:0'0'0') sop
<6in>le5lane6tora>e '0)0;:*0'***;0?0'0:0'0'0')0' sop
R"6tora>e '0)0;:*0'***;0?0'0:0'0'0')0) sop
<Hi5lane6tora>e '0)0;:*0'***;0?0'0:0'0'0')0& sop
NM6tora>e '0)0;:*0'***;0?0'0:0'0'0)* sop
RaA4ata6tora>e '0)0;:*0'***;0?0'0:0'0'0++ sop
RetiredCLIma>e6tora>e '0)0;:*0'***;0?0'0:0'0'0990' sop
RetiredCLMulti"rameIma>e6tora>e '0)0;:*0'***;0?0'0:0'0'0990) sop
RetiredCLMicroscopic6lide6tora>e '0)0;:*0'***;0?0'0:0'0'0990& sop
RetiredCL5hoto>raphic6tora>e '0)0;:*0'***;0?0'0:0'0'0990: sop
CL.ndoscopicIma>e6tora>e '0)0;:*0'***;0?0'0:0'0'0990'0' sop
CLMicroscopicIma>e6tora>e '0)0;:*0'***;0?0'0:0'0'0990'0) sop
CL6lideCoordinatesMicroscopicIma>e6tora>e '0)0;:*0'***;0?0'0:0'0'0990'0& sop
CL5hoto>raphicIma>e6tora>e '0)0;:*0'***;0?0'0:0'0'0990'0: sop
HasicTe#t6R '0)0;:*0'***;0?0'0:0'0'0;;0'' sop
.nhanced6R '0)0;:*0'***;0?0'0:0'0'0;;0)) sop
Comprehensive6R '0)0;:*0'***;0?0'0:0'0'0;;0&& sop
Mammo>raphyC46R '0)0;:*0'***;0?0'0:0'0'0;;0?* sop
=ey2bject6election4ocument '0)0;:*0'***;0?0'0:0'0'0;;0?, sop
5.T6tora>e '0)0;:*0'***;0?0'0:0'0'0'); sop
6tandalone5.TCurve6tora>e '0)0;:*0'***;0?0'0:0'0'0'), sop
RTIma>e6tora>e '0)0;:*0'***;0?0'0:0'0'0:;'0' sop
RT4ose6tora>e '0)0;:*0'***;0?0'0:0'0'0:;'0) sop
RT6tructure6tora>e '0)0;:*0'***;0?0'0:0'0'0:;'0& sop
RTTreatmentRecord6tora>e '0)0;:*0'***;0?0'0:0'0'0:;'0: sop
RT5lan6tora>e '0)0;:*0'***;0?0'0:0'0'0:;'0? sop
RTHrachyTreatmentRecord6tora>e '0)0;:*0'***;0?0'0:0'0'0:;'0+ sop
RTTreatment6ummaryRecord6tora>e '0)0;:*0'***;0?0'0:0'0'0:;'09 sop
^G.MR6tora>e '0)0;:*0''&+',0:0) sop
^G.CT6tora>e '0)0;:*0''&+',0:0& sop
G.&4Model2bject6tora>e '0)0;:*0''&+',0:0)+ sop
G.RT5lan6tora>e '0)0;:*0''&+',0?0):, sop
G.RT5lan6tora>e) '0)0;:*0''&+',0:0?0):, sop
G.6aturnT462bject6tora>e '0)0;:*0''&+',0?0)?& sop
5hilips&4Colume6tora>e '0)0:+0+9*?;,0?0*0' sop
5hilips&42bject6tora>e '0)0:+0+9*?;,0?0*0) sop
5hilips6ur@ace6tora>e '0)0:+0+9*?;,0?0*0& sop
5hilipsComposite2bject6tora>e '0)0:+0+9*?;,0?0*0: sop
5hilipsMRCardio5ro@ile6tora>e '0)0:+0+9*?;,0?0*09 sop
5hilipsMRCardioIma>e6tora>e '0)0:+0+9*?;,0?0*0; sop
5atientRootLuery '0)0;:*0'***;0?0'0:0'0)0'0' sop
5atientRootRetrieve '0)0;:*0'***;0?0'0:0'0)0'0) sop
6tudyRootLuery '0)0;:*0'***;0?0'0:0'0)0)0' sop
6tudyRootRetrieve '0)0;:*0'***;0?0'0:0'0)0)0) sop
5atient6tudy2nlyLuery '0)0;:*0'***;0?0'0:0'0)0&0' sop
5atient6tudy2nlyRetrieve '0)0;:*0'***;0?0'0:0'0)0&0) sop
5atientRootRetrieveN=I '0)0;)+0*0'0&+;**:&0)0'&?0'*++0?0'0:0'0)0'0) sop
6tudyRootRetrieveN=I '0)0;)+0*0'0&+;**:&0)0'&?0'*++0?0'0:0'0)0)0) sop
5atient6tudy2nlyRetrieveN=I '0)0;)+0*0'0&+;**:&0)0'&?0'*++0?0'0:0'0)0&0) sop
HasicGrayscale5rintMana>ementMeta '0)0;:*0'***;0?0'0'0, sop
HasicColor5rintMana>ementMeta '0)0;:*0'***;0?0'0'0'; sop
Hasic"ilm6ession '0)0;:*0'***;0?0'0'0' sop
Hasic"ilmHo# '0)0;:*0'***;0?0'0'0) sop
HasicGrayscaleIma>eHo# '0)0;:*0'***;0?0'0'0: sop
HasicColorIma>eHo# '0)0;:*0'***;0?0'0'0:0' sop
Hasic5rinter '0)0;:*0'***;0?0'0'0'+ sop
"indModalityBorkList '0)0;:*0'***;0?0'0:0&' sop
Little.ndianImplicit '0)0;:*0'***;0'0) trans@er
Little.ndian.#plicit '0)0;:*0'***;0'0)0' trans@er
^Hi>.ndian.#plicit '0)0;:*0'***;0'0)0) trans@er
R5.GHaseLine' '0)0;:*0'***;0'0)0:0?* trans@er Little.ndian.#plicit
R5.G.#tended)and: '0)0;:*0'***;0'0)0:0?' trans@er Little.ndian.#plicit
^R5.G.#tended&and? '0)0;:*0'***;0'0)0:0?) trans@er Little.ndian.#plicit
R5.G6pectralNH+and; '0)0;:*0'***;0'0)0:0?& trans@er Little.ndian.#plicit
^R5.G6pectralNH9and, '0)0;:*0'***;0'0)0:0?: trans@er Little.ndian.#plicit
R5.G"ulllNH'*and') '0)0;:*0'***;0'0)0:0?? trans@er Little.ndian.#plicit
^R5.G"ulllNH''and'& '0)0;:*0'***;0'0)0:0?+ trans@er Little.ndian.#plicit
R5.GLosslessNH': '0)0;:*0'***;0'0)0:0?9 trans@er Little.ndian.#plicit
^R5.GLosslessNH'? '0)0;:*0'***;0'0)0:0?; trans@er Little.ndian.#plicit
^R5.G.#tended'+and'; '0)0;:*0'***;0'0)0:0?, trans@er Little.ndian.#plicit
^R5.G.#tended'9and', '0)0;:*0'***;0'0)0:0+* trans@er Little.ndian.#plicit
^R5.G6pectral)*and)) '0)0;:*0'***;0'0)0:0+' trans@er Little.ndian.#plicit
^R5.G6pectral)'and)& '0)0;:*0'***;0'0)0:0+) trans@er Little.ndian.#plicit
^R5.G"ull):and)+ '0)0;:*0'***;0'0)0:0+& trans@er Little.ndian.#plicit
^R5.G"ull)?and)9 '0)0;:*0'***;0'0)0:0+: trans@er Little.ndian.#plicit
^R5.GLossless); '0)0;:*0'***;0'0)0:0+? trans@er Little.ndian.#plicit
^R5.GLossless), '0)0;:*0'***;0'0)0:0++ trans@er Little.ndian.#plicit
R5.GLossless '0)0;:*0'***;0'0)0:09* trans@er Little.ndian.#plicit
^R5.GL6SLossless '0)0;:*0'***;0'0)0:0;* trans@er Little.ndian.#plicit
^R5.GL6SLossy '0)0;:*0'***;0'0)0:0;' trans@er Little.ndian.#plicit
^RL.Lossless '0)0;:*0'***;0'0)0? trans@er Little.ndian.#plicit
^Little.ndian.#plicit4e@lated '0)0;:*0'***;0'0)0'0,, trans@er Little.ndian.#plicit
R5.G)***Lossless2nly '0)0;:*0'***;0'0)0:0,* trans@er Little.ndian.#plicit
R5.G)*** '0)0;:*0'***;0'0)0:0,' trans@er Little.ndian.#plicit
3.1 DICOM ."int se"#e" con%i!&"ation
No printer con@i>uration options are provided$ the de@ault BindoAs printer is alAays used0 2ne
must use the de@ault document settin>s o@ the de@ault printer to chan>e! e0>0! the resolution o@
the printout or the paper si1e0
3.3 Co4."ession con%i!&"ation
The compression settin>s @or dropped ima>es! incomin> ima>es! and archival are con@i>ured in
dico.ini0 These de@ine the compression mode o@ ima>es stored on disk by the server0
4ropped ima>es 4ropped"ileCompression 4isk!
Remote host Incomin>Compression 4isk!
4isk rchiveCompression rchive disk0
The values @or these compression settin>s may be UunU @or uncompressed! UasU @or as(is 7no
chan>e in compression8! Un'U00Un:U @or N=I compression styles! Uj'U00Uj)U @or loss(less R5.G
compression! Uj&U00Uj+U @or lossy R5.G compression! UjkU @or R5.G)*** lossless! UjlU @or
R5.G)*** lossy! UnjU @or N=I or R5.G compression 7chooses hi>hest N=I! but leaves R5.G as
is8! and k'! k)! k: and0k; @or doAnsi1in> to '*):00'); pi#els0
The ori>inal compression type o@ incomin> ima>es 7used Aith UasU8 is de@ined by the remote
host! Ahich can choose one o@ the trans@er synta#es de@ined in d$ateso%.lst0
6ince version '0:09! i@ the called . title in a C(6T2R. looks like 6.RC.Ra##! then ## Aill
override Incomin>Compression 7e0>0! ima>es sent to a conIuest server addressed @rom the
remote host as MC2NL3.6T6RC'ak:K Aill be doAnsi1ed by the server to )?+ pi#els prior to
stora>e80 Note! hoAever! that the total . may not e#ceed '+ characters0 6o this option Aorks
correctly only i@ the base name o@ the server 7C2NL3.6T6RC' in the e#ample8 has '&
characters or less0
The compression o@ @orAarded ima>es can be set throu>h dico.ini as Aell0
4isk .#portConverterN Remote host0
The type o@ compression settin> is passed usin> a command U@orAard compressed as ## toU!
Ahere ## is one o@ the compression types de@ined @or 4ropped"ileCompression0 I@ the
command U@orAard toU is used instead! the compression type de@ined in acrnea.a% is used0 I@
the remote host does not accept the o@@ered compression! ima>es Aill automatically be sent Aith
simpler compression or uncompressed0 6uch ne>otiation is not implemented @or N=I
compression0
Ima>es may also be sent as result o@ a move reIuest to a remote host usin> di@@erent
compressions0 This option is con@i>ured per host in acrnea.a%0
4isk 6ettin> in acrnema0map Remote host0
The values @or these compression settin>s may be UunU @or uncompressed! Un'U00Un:U @or N=I
compression styles! Uj'U00Uj)U @or loss(less R5.G compression! Uj&U00Uj+U @or lossy R5.G
compression! UjkU @or R5.G)*** lossless! UjlU @or R5.G)*** lossy! and Uk'U00Uk;U @or
doAnsi1in> the ima>e! QulQ @or littleendiane#plicit! QubQ @or bi>endiane#plicit! and QueQ @or both0
2ptions UasU and UnjU and DujE are not correctly implemented @or out>oin> connections due to
the comple#ity o@ the trans@er synta# ne>otiation involved0 These options may there@ore only be
used @or N=I clients or the ConIuest 4IC2M server0
I@ the remote host does not accept the o@@ered R5.G compression! ima>es Aill automatically be
sent Aith a simpler compression or uncompressed0 6uch ne>otiation is not implemented @or N=I
compression and UkU doAnsi1e compression0
6ince version '0:09! i@ the called . title in the C(M2C. looks like 6.RC.Ra##! then ## Aill
override the compression settin> in acrnea.a%. 7.0>0! ima>es sent by a conIuest server
addressed @rom the remote host as MC2NL3.6T6RC'ak:K Aill be doAnsi1ed by the server to
)?+ pi#els prior to sendin>80
This alloAs any host-vieAer to receive doAnsi1ed ima>es on reIuest0 Note! hoAever! that the
total . len>th may not e#ceed '+ characters0 6o this option Aorks correctly only i@ the base
name o@ the server 7C2NL3.6T6RC' in the e#ample8 has '& characters or less0
3. =o"8list con%i!&"ation
Bhen droppin> a HL9 @ile onto the server! it initiates the command Md>ate Yloadhl9$@ileK0 This
Aill read the hl9 @ile and populate the modality Aorklist database0 sample HL9 @ile
7sample0hl98 is provided @or testin>0 "or translatin> the hl9 data into the 4IC2M Aorklist! an
e#tra column has been added to the Aorklist database de@inition0 Typically this column can
contain$
((( No import o@ values @rom hl9
ON Generate a uniIue '+ character accession number
O3I Generate a uniIue +: character 3I4
S>;0N Read HL9 seIuence seq @ield N
S>;0N0M Read HL9 seIuence seq @ield N! sub@ield M
S>;0N04T. Read HL9 seIuence seq @ield N! date part
S>;0N0TIM. Read HL9 seIuence seq @ield N! time part
Hospitals Aantin> to use HL9 import should edit this table such that the correct HL9 items are
@illed in into the Aorklist database0
Bhen chan>in> the translation part o@ the Aorklist database de@inition! the server must only be
restarted to use the adaptations 7enable debu> lo> to vieA the hl9 translation pro>ress80 Bhen
the database layout o@ the modality Aorklist is chan>ed! one should clear the database throu>h
the maintenance pa>e and its contents are lost0
Note that database @ields marked Aith M4TS6TRT6.L3.NC.K and M4TS.N46.L3.NC.K
are not used by the pro>ram and are descriptive only0 The modality Aorklist Iuery Aill mimic
the or>ani1ation o@ the Iuery in seIuences in its reply so the seIuence or>ani1ation needs not be
speci@ied0
6ince version '0:0'+! the accessionnumber is no lon>er the primary inde# o@ the Aorklist
database a@ter it is cleared! alloAin> more @le#ibility in @illin> and usin> this database0
3. Inte!"ation -it7 t7e De"o,"aneSt&0io IDE %o" L&a 0e#elo.4ent
Lua scriptin> provides a Aealth o@ possibilities to con@i>ure and e#tends the @unctionality o@ the
ConIuest 4IC2M server0 Fet pro>rammin> such scripts may be dauntin>0 Hy inte>ration o@ the
beauti@ul ZeroHrane6tudio I4.! e#perimentin> Aith scriptin> or Aritin> scripts @or maintenance
tasks becomes much easier0 To enable this @eature! @irst doAnload ZeroHrane6tudio @rom
7http$--studio01erobrane0com8 or >et the latest repository as ZI5 @ile @rom Github
7https$-->ithub0com-pkulchenko-ZeroHrane6tudio80 3n1ip the 1ip @ile! the e#ecutable
1bstudio0e#e is ready to >o0 6tart it0 Then to inte>rate ConIuest dicom server! open @rom the
c$Tdicomserver @older the @ile ZeroHrane6tudioTinstall0lua in ZeroHrane6tudio0
2pen ZeroHrane6tudio and look at the )ocal console tab
Load this install0lua @ile Aith Dile 8 O%en or dra> and drop
6elect all te#t usin> ri$+t.clic9 . Select "ll
Run it in the console usin> ri$+t.clic9 . >valuate in Console
@ter this ( ZeroHrane 6tudio Aill reopen ready to run demo scripts
and develop @or ConIuest 4icom 6erver0 s installed! Zerobrane 6tudio
communicates Aith a runnin> ConIuest 4icom 6erver and o@@ers code
completion and @ull debu>>in> @acilities0 Try @or instance to enter a small Iuery script$
a.,i"o#OAe"t;neK14
a3Quer!Retrie$e=e$e%.RSTU,TR
a3Stud!Instan"eUI,.RR
a3PatientI,.RR
a3Stud!,ate.R1EEH9191-1EEE9191R
.di"o#5uer!1RCONQUESTSRV1R' RSTU,TR' a4
&or i.9' 8-1 do
print1[i]3PatientI,' [i]3Stud!Instan"eUI,' RBnR4
end
Run it Aith "?("?0 "or a de@ault server! this Aill print in the Q2utputQ tab$
Progra# "o#p%eted in 931F se"onds 1pid; JEMH43
,eugging session started in RC;Bdi"o#ser$erBR3
L999EF9GH:HL L13G3MI3IF9JHE3J3:3193:1JIE1GEM13HE:IIJGHM3EEGGEFL LBnL
,eugging session "o#p%eted 1tra"ed 9 instru"tions43
Note that this script is run by the ConIuest 4IC2M server! Ahich has to be up @or this script to
Aork0 I@ you chan>e project ( Lua interpreter to ConIuest 4IC2M 3tility! a neA instance o@
d>ate0e#e Aill be run to run the script! and the output Aill be$
Progra# starting as RLC;Bdi"o#ser$erBdgate3e+eL --do%ua;L+p"a%%1&un"tion14
io3stdout;set$u&1RnoR4)
re5uire1R#odeugR43!ie%d.&un"tion14 i& iup then iup3=oopStep14 end end)
re5uire1R#odeugR43%oop1RC@-V19R'H1F:4 )
pa"?age3%oaded3#odeug3done14 )
pa"?age3%oaded3#odeug.ni% )
"o%%e"tgarage1R"o%%e"tR4 end' &un"tion1err4 print1deug3tra"ea"?1err44
end4LR3
Progra# Rdgate3e+eR started in RC;Bdi"o#ser$erR 1pid; J:1:43
,eugging session started in RC;Bdi"o#ser$erBR3
999EF9GH:H 13G3MI3IF9JHE3J3:3193:1JIE1GEM13HE:IIJGHM3EEGGEF
,eugging session "o#p%eted 1tra"ed 9 instru"tions43
Progra# "o#p%eted in :3ME se"onds 1pid; J:1:43
In the Lua script! all normal Lua @unctionality is present 7the e#amples delivered Aith
ZeroHrane6tudio are a >ood startin> point to learn Lua8! and the @olloAin> variables and classes
are de@ined$
@i%ena#e Na#e o& dropped &i%e 1i& an!4
Gl!7al Server status (!unters) and !n:i'urati!n
e3g3;
O%oa%3StartTi#e
O%oa%3No,i"o#Che"?
Ass!iati!n In:!r2ati!n !: urrent !nneti!n
0sso"iation3Ca%%ing
0sso"iation3Ca%%ed
0sso"iation3Thread
0sso"iation3Conne"tedIP
C!22and 1eeived !22and 7y server
Co##and30&&e"tedSOPC%assUI,
Co##and30&&e"tedSOPInstan"eUI,
Co##and3Co##and@ie%d
Co##and3/essageI,
Co##and3/essageI,-eingRespondedTo
Co##and3,ataSetT!pe
Co##and3/o$e,estination
Co##and3Trans&erS!nta+UI,
Co##and3/o$eOriginator0pp%i"ationEntit!Tit%e
Co##and3/o$eOriginator/essageI,
Co##and;>rite1&i%ena#e4 Krite di"o# oAe"t
Co##and;,u#p1&i%ena#e4 Krite di"o# oAe"t header as te+t &i%e
Data Data !7Cet !: urrent DICOM !22and
1,i"o#OAe"t4
Di!2O7Cet DICOM O7Cet (e#'#; i2a'e)
,i"o#OAe"t;neK14 returns e#pt! ,i"o#OAe"t
,i"o#OAe"t;neKarra!14 returns e#pt! ,i"o#0rra!
,i"o#OAe"t;&ree 14 &rees ,i"o#OAe"t or ,i"o#0rra!
,ata3Storagestring e3g3 /0O9 &or i#port"on$erters
,i"o#OAe"t;S"ript1"ode4 run "on5uest st!%e s"ript
,i"o#OAe"t;OetPi+e%1+' !' &r4 get pi+e% returns 133N $a%ues
,i"o#OAe"t;SetPi+e%1+' !' &r' $a%ues4 set pi+e%
,i"o#OAe"t;OetRoK1!' &ra#e4 get roK returning arra!
,i"o#OAe"t;SetRoK1!' &ra#e' ta%e4 set roK o& pi+e%s
,i"o#OAe"t;OetCo%u#n1+' &r4 get "o%u#n returns arra!
,i"o#OAe"t;SetCo%u#n1+' &r' ta%e4 set "o%u#n o& pi+e%s
,i"o#OAe"t;OetI#age1&ra#e4 get i#age as inar! string
,i"o#OAe"t;SetI#age1&ra#e' string4 set :, i#age in di"o# oAe"t
,i"o#OAe"t;Read1&i%ena#e; string4 read di"o# oAe"t
,i"o#OAe"t;>rite1&i%ena#e; string4 Krite di"o# oAe"t
,i"o#OAe"t;,u#p1&i%ena#e; string4 Krite header as te+t &i%e
,i"o#OAe"t;OetVR1grp' e%#nt' asstring4 get $r as !te se5uen"e returns
,i"o#0rra!/ta%e/string
,i"o#OAe"t;SetVR1grp' e%#nt' $a%ue4 set $r &ro# ,i"o#0rra!/ta%e o&
!tes/inar! string
,ata3PatientI, 0n! VR is a""essi%e
Di!2Array Di!2 se6uene 4 array !: DICOM !7Cets
&ree14
[9] a%% e%e#ents 1933 84 are ,i"o#OAe"t
Utility :unti!ns
neKdi"o#oAe"t14 returns ,i"o#OAe"t
de%etedi"o#oAe"t1,i"o#OAe"t4 &ree ,i"o#OAe"t
neKdi"o#arra!14 returns ,i"o#0rra!
print13334 print argu#ents to "onso%e
deug%og13334 print i& deug %ogging ena%ed
gpps1se"tion' ?e!' de&au%t4 Reads ,ICO/3INI
di"tionar!1group' e%e#ent4 return di"tionar! na#e
di"tionar!1na#e4 returns di"t group' e%e#ent
get6s5%de&1dataase' &ie%d; integer4 Reads ,ICO/3SQ= returns
1group' e%e#ent' @ie%dNa#e' =ength' SQ=T!pe' ,i"o#T!pe
s!ste#1progra#; string4 run progra# in the a"?ground
get6a#ap1entr!; int4 Reads ite# &ro# a"rne#a3#ap
returns 0E' IP' port' "o#pression
d5uer!1dataase' &ie%ds' 5uer!4 E+e"utes SQ= 5uer! on dataase
returns ta%e o& re"ords &ro# 1 Kith ta%e o& &ie%ds &ro# 1
di"o#5uer!10E' %e$e%' 5uer!; ,i"o#OAe"t4 returns se5uen"e "ounting &ro# 9
di"o##o$e10E' dest ' %e$e%' 5uer!; ,i"o#OAe"t' "a%%a"?; string4 #o$e data
&ro# ,ICO/ ser$er to ,ICO/ ser$er
di"o#de%ete1 5uer!; ,i"o#OAe"t4 de%ete data &ro# ,ICO/ ser$er
heapin&o14 returns string a%%o"ations
s5%1state#ent; string4 e+e"ute SQ= state#ent
"hangeuid1o%duid[' proposeduid] Consistent%! #odi&! UI,'
returns #apped UI,
"hangeuida"?1neKuid; string4 @or a #odi&ied UI,' returns
origina% i& e+ists' returns 1string or ni%4
CT/=1te+t; string' 74 Ke ser$er on%!; output CT/=
COI1?e!' de&au%t4 Ke ser$er on%!; read ur% entr!
These :unti!ns 9!r& !n varia7le Data
s"ript1s"ript6"ode; string4 Sends "on5uest st!%e s"ript to
ser$er' e3g3 R&orKard to 0ER3 Spe"ia% &un"tions are;
s"ript1Rretr!R4 &or ReAe"tedI#age>or?=istCon$erter9 and
ReAe"tedI#ageCon$erter9) Ki%% re-atte#pt to store the oAe"t
a&ter the s"ript is done' s"ript1Rde&erR4 &or
E+portCon$erter; Ki%% "ause %ater retr!' and
s"ript1Rdestro!R4 &or 5uer!/store or #o$e; Ki%% "an"e%
operation
ser$er"o##and1"o##and; string4 Sends "on5uest ser$er "o##and'
e3g3 Rdisp%a!6status;R or Rget6para#;/!0CRNe#aR 1string4
getpi+e%1+; int' !; int' &ra#e; int4 returns pi+e% $a%ues
setpi+e%1+; int' !; int' &ra#e; int' pi+e%; int' 74 set pi+e% $a%ues
getroK1!; int' &ra#e; int4 get roK o& pi+e%s as
arra!setroK1!; int' &ra#e; int' ta%e4 set roK o& pi+e%s
get"o%u#n1+; int' &ra#e; int4 get "o%u#n o& pi+e%s as arra!
set"o%u#n1+; int' &ra#e; int' a; ta%e4 set "o%u#n o& pi+e%s
geti#age1&ra#e; int4 get i#age as inar! string
seti#age1&ra#e; int' a; string4 set entire i#age
get$r1group' e%e#ent' asstring4 get VR as ,i"o#0rra!/!te
arra!/inar! string &ro# di"o# oAe"t returns
1,i"o#0rra!/ta%e/string o& VR $a%ues4
set$r1group' e%e#ent' a4 set VR se5uen"e or inar!
readdi"o#1&i%ena#e4 read di"o# oAe"t
Kritedi"o#1&i%ena#e4 Krite di"o# oAe"t
Kriteheader1&i%ena#e4 Krite header as te+t &i%e

You might also like