DicomConformance FilesLST Changes
DicomConformance FilesLST Changes
DicomConformance FilesLST Changes
SECTION 1 INTRODUCTION..........................................................................6
A.0............................................................................................................................INTRODUCTION
................................................................................................................................................................9
A.1......................................................................................................IMPLEMENTATION MODEL
................................................................................................................................................................9
A.1.1.................................................................................................Application Data Flow Diagram
............................................................................................................................................................9
A.1.2.....................................................................................................Functional Definition of AE’s
..........................................................................................................................................................10
A.1.3........................................................................................Sequencing of Real - World Activities
..........................................................................................................................................................10
A.2...................................................................................................................AE SPECIFICATIONS
..............................................................................................................................................................15
A.2.1........................................................................................................................AE1 Specification
..........................................................................................................................................................15
A.2.1.1......................................................................................Association Establishment Policies
......................................................................................................................................................15
A.2.1.1.................................................................................................................................General
......................................................................................................................................................15
A.3..................................................................................................COMMUNICATION PROFILES
..............................................................................................................................................................20
A.3.1.............................................................................Supported Communication Stacks (parts 8,9)
..........................................................................................................................................................20
A.3.2.....................................................................................................................................OSI Stack
..........................................................................................................................................................20
A.3.3...............................................................................................................................TCP/IP Stack
..........................................................................................................................................................20
A.3.3.1.......................................................................................................................................API
......................................................................................................................................................20
A.3.3.2.......................................................................................................Physical Media Support
......................................................................................................................................................20
A.3.4....................................................................................................................Point-to-Point Stack
..........................................................................................................................................................20
A.5............................................................................................................WADO FUNCTIONALITY
..............................................................................................................................................................21
3.0..................................................................................................INTEROPERABILITY SCHEMA
..............................................................................................................................................................22
3.0.1.........................................PATIENT ROOT QUERY/RETRIEVE ENTITY RELATIONSHIP
..........................................................................................................................................................22
3.0.2............................................STUDY ROOT QUERY/RETRIEVE ENTITY RELATIONSHIP
..........................................................................................................................................................23
3.0.1..........................PATIENT/STUDY ONLY QUERY/RETRIEVE ENTITY RELATIONSHIP
..........................................................................................................................................................23
3.1...............................................................................................................ENTITY DESCRIPTIONS
..............................................................................................................................................................23
3.2...............PATIENT ROOT QUERY/RETRIEVE INFORMATION OBJECT DEFINATION
..............................................................................................................................................................24
3.2.1....................................Patient Level Keys for Patient Root Query/Retrieve Information Model
..........................................................................................................................................................24
3.2.2......................................Study Level Keys for Patient Root Query/Retrieve Information Model
..........................................................................................................................................................24
3.2.3.....................................Series Level Keys for Patient Root Query/Retrieve Information Model
..........................................................................................................................................................24
3.2.4.....................................Image Level Keys for Patient Root Query/Retrieve Information Model
..........................................................................................................................................................25
4.2 FILES............................................................................................................................................28
The MicroPACS is a Windows or Linux based PACS system that has, at it’s core, the
UCDMC DICOM Network Transport libraries. This system has been combined with
a complete user interface (Windows only), which also acts as installation program
(written in Borland Delphi) to form the Conquest DICOM server. The Information
Definition is designed to be field/run-time programmable. Below the DICOM
interface is a database connectivity class that uses a stable built-in SqLite or
DBASEIII driver, or talks to ODBC compatible data sources (Windows only), MySql,
or PostGres. This combination permits a PACS system with the following features:
Note: The built-in dBaseIII driver (Conquest addition) is not a full SQL
server and poses limitations on query keys: only queries like ‘key’ = exact
match; ‘key*’ = value starts with key; and ‘*key*’ = value contains key,
are supported, as well as date-range queries and multiple UID matching
queries. Only common hierarchical queries are supported with fields that
are listed in the single de-normalized table for the selected query level (see
file DICOM.SQL). Regular queries passing PatientID, StudyUID, and/or
SeriesUID will be (very) fast, even for huge archives. Other (image)
queries in large archives (>1000.000 images) may be very slow. Server
startup time for huge archives may be long due to in-memory index
creation (about 1 minute per 1000.000 images). During indexing the server
is read-only and only shows indexed images.
• (Conquest addition) Fast and safe (CRC checked) error free compression
(>2x) of image data on disk. Do not use this option if you want to read the
image files directly from disk yourselves using third party software.
• (Conquest addition) Easy installation of many servers on a single PC.
Servers may run as service(s).
• (Conquest addition) A database browser and slice viewer (Windows only)
integrated in the PACS system with options for: viewing the DICOM
information in a slice, creating BMP files (ideal for slides), sending
selected images, printing, and database fix tools such as changing patient
IDs, and deleting and anonymizing studies and series. Also tools to merge
or split series. Drag and drop to load DICOM or HL7 files, directories, or a
variety of zip files (you then need to place 7za.exe in the server directory).
• (Conquest addition) A simple query/move user interface (Windows only)
for diagnostic purposes, to improve your knowledge of DICOM, and to
grab missing data from another server.
• (Conquest addition) Fully integrated functionality in one user interface.
• (Conquest addition) Simple print server (Windows) - to default printer.
• (Conquest addition) Log files, which are daily zipped (Windows only). We
use the TZipMaster VCL by Chris Vleghert and Eric W. Engler.
• (Conquest addition) Correct display of JPEG(2000) and RLE compressed
images in browser.
• (Conquest addition) Flexible configuration of JPEG and NKI private
compression with optional (de)compression of incoming, dropped,
transmitted and archived files. Since version 1.4.16, JPEG and JPEG2000
engines are built-in using the International JPEG group and Jasper code
(Interfacing by Bruce Barton). JPEG (de)compression used to be done (and
this can still be configured) using executables from the OFFIS DICOM
toolkit (DCMTK version 3.5.3), developed by Kuratorium OFFIS e.V..
• (More conquest additions) Highly improved performance (e.g., using a
read-ahead thread), and image forwarding/action capability.
• The archive is well suited as DICOM server for the DICOMWORKS
viewer by Phillipe Puech.
• If the BDE is not installed, we use the MiTeC DBFTable component by
MichaL MutL. For other data sources ADO is used (Windows only).
Native drivers use the DLL's from the database system (MySQL or
Postgres).
• Version 1.4.12 up can use a native MySQL driver (based on Rangel
Gustavo Reale’s TMySQLDataset and Matthias Fichtner’s mysql.pas) and
includes a preliminary advanced series viewer based on EZDicom / K-Pacs
(many thanks to Chris Rorden and Andreas Knopke). Fixes: strip group 2
information of any files sent, retry logic, worklist query.
• Version 1.4.12 improves database performance, has some important bug
fixes (rare crashes, incomplete deletion and grabbing, and rare database
corruption on dbaseIII). Further it has the possibility to forward multiple
images on a single association, and improved documentation
• Version 1.4.12b and c add importconverters and bug fixes in dbaseIII
driver and web access and do not allow .dcm with nki compression
• Version 1.4.13 has a web viewer based on K-PACS, SqLite is now
included, and more import and export converter options were added such
as delayed forwarding and preretrieval. Then small fixed were made in
native mysql (also the driver is now included in the package), and several
other aspects of the server, such as handling of compression errors, out of
memory conditions, and others.
• Version 1.4.14 has a more web options (move, delete and viewers), more
exportconverters and ‘Number of Patient Related Studies’ etc. query items
• Version 1.4.15alpa fixes small bugs; and adds QueryConverters, color jpeg
decoding with built-in code, frame control, several command line options,
an anonymization script, postgres support, and jpeg web export graphics
• Version 1.4.15 fixes more small bugs and adds more scripting options
• Version 1.4.16beta adds internal JPEG and JPEG2000 codecs adapted by
Bruce, more scripting options, bug fixes and print to AE from GUI
• Version 1.4.16rc1 adds WADO, virtual query cache, zipping and cleanup
at night also for a service, animated gif support, more commands and fixes
• Version 1.4.16rc2 fixes some bugs
• Version 1.4.16rc4 adds lua as very fast and flexible scripting language for
converters (with access to configuration, connection, dicom objects, pixel
data, database, queries) and web page design
• Full release 1.4.16 fixes several bugs
• Full release 1.4.17alpha fixes bugs and really enhances scripting
• Version 1.4.17 offers connections to the ZeroBraneStudio Lua IDE and
further enhances scripting; some fixes for jpeg transfer syntax
• Version 1.4.17b, c and d offer bug fixes and more scripting options
• SECTION A(2). CONFORMANCE STATEMENT
A.0 INTRODUCTION
Remote
DICOM Query/Retriev
Private Dicom INTERFACE e SCU
interface over STANDARD
W eb and WADO
int erface
TCP/IP
HL7 Input
Remote
Verification
SCU
Conquest user Conquest
interface DICOM client
DLL
Remote
CONQUESTDICOM
SERVER.EXE CQDICOM.DLL Storage SCP
Default
Remote
W indows
DICOM Print
printer
SCU
A.1.2 Functional Definition of AE’s
NOTE: The Conquest Applications (not part of the server release) or other DICOM
network viewers (e.g., KPacs) will use separate AE’s which MUST be configured in
ACRNEMA.MAP (use the “Known DICOM providers” page) to allow access of
images from the DICOM server.
Image Store:
• The remote AE will initiate a DICOM association.
• Any association will trigger Lua scripts association and endassociation.
• The MicroPACSMain AE will select the appropriate Abstract and Transfer
Syntax’s from those proposed by the remote AE.
• The remote AE will initiate a C-Store to send the IOD.
• Any command will trigger Lua script command.
• The MicroPACSMain AE will respond with a C-Store-RSP upon receipt
of the IOD.
• If AllowEmptyPatientID is set to 0 (default), a missing PatientID is
replaced by “00000000”. If AllowEmptyPatientID=1 and the patient ID is
not set, it is looked up from the database for the corresponding study.
Conversely if AllowEmptyPatientID=1 and there is no patient ID in the
database but there is in the image, the database is updated.
• The following processing occurs using the WorkList database (can be
enabled/disabled using ‘WorkListMode’ in DICOM.INI):
• WorkListMode=0: no processing occurs.
• WorkListMode=1: The AccessionNumber is looked up in the local
WorkList database, if it is found, any element in the DICOM object
that is also present (and non-NULL) in the WorkList database, will be
replaced by the value from the WorkList database. These changes are
made both in the database and in the image that is stored on disk.
• WorkListMode=2: As mode 1, but the image will be refused if the
AccessionNumber is not found. Rejected images trigger event
RejectedImageWorkListConverter.
• Note: there is no DICOM method of filling the worklist database (see
the description of WorkListMode).
• The following processing (can be enabled/disabled by defining ‘FixPhilips
= 0/1’ in DICOM.INI) of the patient ID occurs to conform patient ID’s
generated by a Philips scanner with NKI policy:
• From a patient ID of 10 digits (i.e., only exactly 10 digits) and a
numeric value larger than 0001000000, starting with at least 2 zeros,
the first 2 or 3 leading zeros are stripped. I.e., ‘0123456789’ is not
changed, ‘0020101234’ is replaced by ‘20101234’, ‘0009901234’ is
replaced by ‘9901234’, and ‘0000012345’ is replaced by 0012345. The
result is that a 10 digit ID from Philips that consists of a valid NKI
patient ID with extra leading zeros is converted to a valid NKI patient
ID. These changes are made both in the database and in the image that
is stored on disk.
• The following processing (can be enabled/disabled by defining ‘FixKodak
= 0/1’ in DICOM.INI) of the patient ID occurs to conform patient ID’s
generated by a Kodak RIS worklist with NKI policy:
• From a patient ID of 8 digits (i.e., only exactly 8 digits) and a numeric
value larger than 01000000, starting with at least 1 zero, the leading
zero is stripped. I.e., ‘0123456789’ is not changed, ‘09901234’ is
replaced by ‘9901234’, and ‘00012345’ is replaced by 0012345. The
result is that a 8 digit ID from Kodak RIS that consists of a valid NKI
patient ID of before 2000 with a superfluous leading zero, is converted
to a valid NKI patient ID. These changes are made both in the database
and in the image that is stored on disk.
• Trailing space are discarded from the patient ID.
• Up to 99 importConverters are called as scripts or rules to modify, delete
or log images or VR’s in them. These scripts can also start external
programs and delete/retrieve/forward parts of the patient’s information. All
scripts can optionally be programmed in Lua with full access to server
configuration and DICOM objects.
• The pixel data is (re or un)compressed if this option is enabled.
• The image is stored and disk and image header data is (re-)entered in the
database at all four levels (patient, study, series, and image). The following
consistency checking is performed on the data entered in the database
(without changing the image information that is stored):
• Inconsistent link information (e.g., two images of the same series
belong to different patients), lead to a reject to store the new image
with reported failure to the sending client. The rejected images are
passed through (lua) script 'RejectedImageConverter0' to allow
extensive logging or repair actions.
• Filled items will not be overwritten by empty items.
• Known sex (M or F) in the patient database will not be overwritten
with any other value than M or F.
• A known date of birth in the database will not be overwritten with an
empty date or with a date on the 1st of January (which has a high
probability to be wrong). When the original date of birth is empty, any
value will be accepted.
• In case of any other inconsistency, the newer values will be written in
the database, and the change will be logged as a warning in
serverstatus.log. Inconsistencies in the birthdate are also logged in
PacsTrouble.log.
• The (series) Modality field is appended to the Study Modality field in
the database if it does not already contain this Modality.
• The PatientName, PatientBirthDate and PatientSex items are
duplicated in the study table (database rev8 and up), to allow detection
of patient ID mix-ups.
• Optionally the image is processed or forwarded (compressed or
uncompressed) if Modality and StationName match with values specified
in dicom.ini and the optional ExportFilter test is passed using scripts
ExportConverter0 .. ExportConverter19 (see appendix 7).
• Some logging of activity occurs.
Query/Retrieve:
• The remote AE will initiate a DICOM association.
• The MicroPACSMain AE will select the appropriate Abstract and Transfer
Syntax’s from those proposed by the remote AE.
• Queries and retrieves can be inspected, modified or rejected by (Lua)
scripts 'QueryConverter0' and 'RetrieveConverter0'. The script can also
trigger move or deletes of associated data.
• Queries can be forwarded to up to 10 VirtualServerFor entries. Queries
that are forwarded are processed by VirtualServerQueryConverter0. The
received data is processed by VirtualServerQueryresultConverter0 and will
be merged with the data from the server’s database and cleaned of
duplicates (see appendix 7). Query results may be cached to speed up
repetitive queries.
• Optionally the ‘Number of Patient Related Studies’-like items will be
computed (this executes another query for each result of the first query)
and is somewhat slow.
• The returned query results can be processed by a (Lua) script called
'QueryResultConverter0'.
• Upon receipt of a C-Move request, the MicroPACSMain AE will initiate
an SSC/SCU association morphing to the stored IOD SOP Class to the
specified and configured DICOM AE. Compressed pixel data will be
decompressed or recompressed prior to transmission. Optionally a (Lua)
script 'RetrieveResultConverter0' will process the retrieved image data. A
C-Move response message will be generated synchronously with the
associated C-Store.
• Retrieval of data stored on one or more of the VirtualServerFor entries and
not on the local server will initiate automatic transfer from the listed
servers in the VirtualServerFor table to the local server, followed by (or
overlapping) a transfer to the C-MOVE destination. After the retrieval data
can be optionally deleted again (see appendix 7).
• Some logging of activity occurs.
Worklist Query:
• The remote AE will initiate a DICOM association.
• The MicroPACSMain AE will select the appropriate Abstract and Transfer
Syntax’s from those proposed by the remote AE.
• Queries can be inspected, modified or rejected by a (Lua) script called
'WorkListQueryConverter0'.
• The MicroPACSMain AE will query the Worklist database and respond
with zero or more modality worklist items. The sequence structure of the
responses duplicates that of the query.
• The query results can be processed with a (Lua) script called
'ModalityWorkListQueryResultConverter0'.
• Some logging of activity occurs.
• Note: there is no DICOM method of filling the worklist database. It can be
filled through the web interface, by drag and dropping HL7 files or
programmatic (see the description of WorkListMode).
Verification:
• The remote AE will initiate a DICOM association.
• The remote AE will initiate a C-ECHO.
• The MicroPACSMain AE will respond with a C-ECHO-RSP.
• Many private command options can be added to the C-ECHO command.
• Some logging of activity occurs.
DICOM Print:
• The remote AE will initiate a DICOM association.
• The remote AE will create a basic film session using N-CREATE.
• The MicroPACSMain AE will ignore the information but will respond
with a N-CREATE-RSP.
• The remote AE will create a basic film box using N-CREATE.
• The MicroPACSMain AE extracts the Image Display Format (only
“STANDARD\#rows,#cols” is accepted), and the film orientation
(LANDSCAPE or PORTRAIT) and passes this information to the
CONQUEST user interface. All other information is ignored.
• The MicroPACSMain AE creates the correct amount of Basic Grayscale or
Color Image Box objects for the film page and transmits their UIDs to the
remote AE in the N-CREATE-RSP. The UIDs contain information about
the page number, number of rows and columns, and the image location on
the page that will be used by the CONQUEST user assemble the printed
page.
• The remote AE will use N-SET to fill each Image Box object.
• The MicroPACSMain AE will store each incoming Image Box onto disk
(in directory “printer_files” on device MAG0) and responds with N-SET-
RSP. The name (UID) of the files is passed to the CONQUEST user
interface.
• The CONQUEST user interface (Windows only) will queue incoming
images and will asynchronously convert each DICOM file into a BMP file,
load it in memory and assemble the pictures to be printed on a page.
Processed DICOM files and BMP files are deleted. Note: the basic print
support in the CONQUEST user interface will not handle multiple
simultaneous print requests correctly!
• The remote AE will request printing of each film or of the complete
session using an N-ACTION command for a basic film session or a basic
film box.
• The MicroPACSMain AE passes these requests onto the CONQUEST user
interface and responds with an N-ACTION-RSP.
• The CONQUEST user interface (Windows only) prints the pages on the
default Windows printer. The only way to configure this printer is to
change its default document settings in Windows. Printing progress is
shown using a simple progress bar on the server status page.
• The remote AE may query the printer status with a N-GET request on the
printer object.
• The MicroPACSMain AE will always respond with a N-GET-RSP with a
“NORMAL” status and the name of the printer, which is pre-set to
“Conquest dicom printer”.
• Other N-DELETE, N-SET, and N-EVENTREPORT requests are
acknowledged with an adequate RSP and ignored.
• Some logging of activity occurs.
Then for each slice that is required (the following line can also use WADO syntax):
A.2.1.1.1 General
The DICOM Application Context Name (ACN) that is always proposed is:
Note: Due to the morphing nature of the outgoing SSC-SCU engine, the
specific Abstract Syntax that is proposed depends upon the nature of the stored
image. The actual proposed Transfer Syntaxes depend on the configuration in
acrnema.map and are the same for each class of stored images.
This AE accepts associations for the Query/Retrieve (Q/R) SOP using the
Patient Root, Study Root, and Patient/Study Only Query Model.
This AE accepts associations for the Image Storage Class using any defined
IOD class.
This AE is indefinitely listening for Q/R, Storage Class, Verification and Print
Management associations
Note: Due to the morphing nature of the incoming SSC-SCP engine, the
specific Abstract Syntax accepted will depend upon the nature of the stored
image, and the dgatesop.lst configuration file (of which a default version is
automatically created when installing the Conquest DICOM server).
*The server can accept many transfer syntaxes as configurable by dgatesop.lst.
A.2.1.2.2.4 SOP Specific Conformance for Query/Retrieve FIND SOP Class SCP
The C-FIND response status values are supported as defined in DICOM v3.0
Part 4.
All Required (R) and Unique (U) Study, Series, and Image Level Keys for the
Patient Root, Study Root, and Patient/Study Only Query/Retrieve Information
Model are supported. Many optional (O) Keys are supported, as described later
in this document.
The specific Storage SCP classes accepted are programmable (by the user) at
runtime, and cannot be explicitly stated here.
The duration of the storage is temporary. Least recently added patients are
deleted when the disk space is less than the amount specified in the “Cleanup
disk space below (MB)” field in the Conquest DICOM server. This amount is
run-time configurable. When the DICOM server is connected to a, e.g.,
jukebox archival system, the duration of storage can be made permanent.
No criterion.
Note: The transfer syntaxes are listed in order of priority. I.e., if a host is
configured as j1 and it accepts JPEG lossless, the image will be lossless JPEG
compressed before transmission, even if it was not stored in that way.
A.3.3.1API
Developers can base client programs on TEST.EXE and DICOMP.EXE that
are included with source code in the DICOMLIB1417b.ZIP release file. The
actual DICOM server (with many options) is DGATE.EXE that is included
with source code in release file DGATE1417b.ZIP and
DICOMLIB1417b.ZIP. Source code of the Windows user interface, client
DLL (used for queries only) and web viewer OCX is not included. Developers
can also add scripts in Lua or a limited private scripting language for several
core server tasks to provide extensive processing of DICOM objects such as
images and queries.
This section describes the subset of the DICOM v3.0 Patient Root,
Study Root, and Patient/Study Only, Query/Retrieve Information
Model Definition used by this product.
Patient
Contains
Study
Contains
Series
Contains
Image
3.0.2 STUDY ROOT QUERY/RETRIEVE ENTITY RELATIONSHIP
Study
Contains
Series
Contains
Image
Patient
Contains
Study
conquestdicomserver.exe:
This executable is the user interface and installation program
and contains parts of the print server. See the installation
section of this document for its functions. The database browser
tries to use the Borland Database Engine. Without BDE, the
server will run fine, except one filter option in the browser.
Source code is not included. This file is optional, the server can
also run without a GUI.
cqdicom.dll: This is code for the Conquest DICOM client. It is used here to
convert DICOM images for printing, list the image file header
and provide query, move and echo actions from the GUI. The
source code of this DLL is not included but it is based on the
programs “TEST.EXE” and “DICOMP.EXE” that are included
with source code. This file is not needed if the GUI is not used.
Libmysql.dll: When present, provides native access to MySQL, both for GUI
and the server core. Redistributed because binary compatibility
is required between compiled applications and the interface
DLL: i.e. this file has to be of a specific version, even if it is
used to communicate with MySQL databases of other versions.
Comes from http://downloads.mysql.com/archives/mysql-5.0/mysql-
noinstall-5.0.22-win32.zip
7za.exe: 7-zip command line version: used by the server core to unzip
dropped zip files with dicom files, to zip log files, and to zip
dicom data sets for submission over ssh-2.
pcsp.exe: used by the submit script and server commands to submit data
over a ssh-2 connection.
dicom.ini* Configuration settings. File must be present but does not need
to conatin all settings.
acrnema.map* List of known DICOM providers. The file must be present but
may be empty of no C-MOVES are used.
dicom.sql* Database table configuration. This file must be present if the
database is used on if dicomquery is called from a lua script.
The multithreaded application is slightly faster than the multiprocess one; But
the multiprocess one is more secure, and should be more reliable. Because
each process runs in it’s own address space, an association from one
connection cannot corrupt or undermine (in any possible way) another
simultaneous association. For this reason, the default installation of the
MicroPACS was the multiprocess model.
However, extensive testing of the Conquest DICOM server showed that the
multiprocess version sometimes failed to work correctly on Windows (some
ODBC problem). For this reason, the multithreaded version is currently used
with the Conquest DICOM server. Several fixes have increased its speed and
made it very reliable.
Also, the built-in DBASEIII driver applies in-memory indexing and depends
on the server process staying in memory to achieve a high speed. In the Linux
version, the built-in DBASEIII driver, SqLite, PostGres and MySQL are the
database drivers available.
APPENDIX 1.
20000822 Created
20000823 Support cases where the input-file is empty or contains only
white-space.
20010716 Fix: Allow TOKENs that are substrings of other TOKENs.
20050103 Changed include file to lower case (for linux)
20050108 Removed window.h for linux compile
20050118 GNU C++ knows BOOL etc, do not redefine
20090620 Include file stuff
20100120 Fixed const issue detected with ms8
20100309 Changed int to unsigned int, add ui as unsigned int in for loop
(gcc4.2 Warnings)
20100619 Fix gcc4 warnings, improve speed and
UNUSED_ARGUMENT.
20100717 Merged
20050129 Adapted for use in the Conquest DICOM server (see //)
20050130 Made it ansi C
20050826 Made it reentrant to avoid gif file corruption in server
20051219 Fixed leak
20070902 Made cpp
20080905 Removed malloc.h for DARWIN
20090620 Include file stuff
20091231 Changed char* to const char* for gcc4.2 warnings
20100111 Merged
20100309 Commented out unused variables (gcc4.2 Warnings)
20100619 Added UNUSED_ARGUMENT.
20100717 Merged
20101004 Taken lsp's code of avs_animatedgif into use
20101116 Warnings fixed
20101120 Merged
20101128 Fixed double fclose
20040111 Fixes: defaults now work, allow DOS type files, case
insensitive
20070330 mvh Change by Mark Pearson: also allow tabs instead of
spaces around =
20090620 Include file stuff
20091231 Changed char* to const char* and added blank[]="" for gcc4.2
warnings
20100111 Merged
20100124 Fix: blank item (e.g., password = ) returned default not empty
20100124 Added cache for ini items: accelerates server with cached disk
data 7x!!!!
20100124 ini file is tested for newer version every second
20100309 Added double parentheses (gcc4.2 Warnings)
20100703 Merged
20100619 Added no-copy to the NamedPipe class.
20100717 Merged
20110320 Removal of trailing blanks in value also removed one character
after blank
20110331 Added FlushPrivateProfileStringCache
20110407 Extended FlushPrivateProfileStringCache to reset timestamp
Fixed that was reading beyond current section
19980330 Creation
19980331 Added exported DcmMkBinaryLib
19980414 Restricted the HeaderDump to max 4096 data, and the number
of bytes on one line to 256.
19980416 Added sequence support in HeaderDump
19980420 Fixed last written line in multiple line sequence dump. Added
functions DcmFind, DcmMove and DcmMoveHere
19980526 Added DcmCreateBitmap
19980610 Changed BGR to RGB in DcmCreateBitmap. Added
DcmMoveHeaderHere
19980629 Fix: DimX and DimY were reversed. Improved efficiency
when loading one slice.
19980630 Fix: last change caused crashes
19980707 Removed some checks to allow non-standard Philips images.
Added DcmSetProgressHook
19980708 Added DcmReplaceInHeader, which can be used for
anonymization of dicom images.
19980709 Added C-CANCEL command object when a ProgressHook
stops or aborts a DcmMove operation. Added support for
NkiPrivateCompressed images in DcmMoveHere.
19980826 Added #pragma pack(1) in Field.h
19981105 Added DcmReadHeader
19981127 Added DcmGetLastXfms
19990108 Updated the dictionary for DICOM-RT support
19990114 Slices are sorted on coord. When duplicate coords exist, the last
received slice eliminate previous ones. Included changed SOP-
list by MvH
19990318 Added three xxxRetrieveNKI PresentationContextSOPs in the
function DcmMoveHere
19990407 Swapped priority of VRs 0020-0050 and 0020-1041; now the
slicelocation is preferably deduced from 0020-1041.
19990511 Added DcmSetLocal(char* pszLocalAE, char* pszLocalPort)
19990628 Fix: DcmCreateBitmap did not like MultiFrame dicom files
19990826 Added DcmSetFreeHook and DcmMoveFilesHere
19990906 Added DcmSetExtraParams to support (amongst others in the
future) transmission of downsized Dicom images between NKI
stations.
19990913 Private VRs of unknown type, will possibly be shown in the
headerdump as character strings.
19990915 Fix in ParseLine of headerdump. Added support for unsigned
pixeldata in DcmCreateBitmap.
19991019 Allow multiple slices with the same or without a coordinate, if
this is the case for ALL slices (e.g. multiple scout-views in one
series)
19991022 Changed the root of NKI-made UIDs to the official one
supplied by Medical Connections(UK):
1.2.826.0.1.3680043.2.135.1066.xxxxxxxxxx
19991028 Converted unsigned short pixels to signed int pixels
19991122 Added DcmStoreFiles
20000126 Fix in WorldXfm (bug introduced on 19991019)
20000128 Fake slice-coords when a '3D volume' consists of e.g. multiple
scout-views (Siemens MR produces such series). Prevents
viewer-crash when loading a second volume into it.
20000321 Convert unsigned short to integer ONLY if all 16 bits of the
pixeldata are used. Better contrast-stretch in DcmCreateBitmap.
20000327 Added C-ECHO command
20000405 Calibrated CT-values to Hounsfield + 1024. Cut-off below 0.
20000707 Added DcmSetCacheAddress
20000829 Added an ErrorMessage
20001128 Replaced 'Oh shit!' errormessage by 'Cannot find related scan'.
20010123 Added static keywords.
Moved code to GetSliceCoord; this routine checks besides tags
(0x0020,0x1041) and (0x0020,0x0050) also (0x0020, 0x0032).
This last tag (ImagePositionPatient) had to be used for Philips
MR scanners.
20010302 Fix: improved temporary filename
20010410 Improved communication between MainThread and
ServerThread. Again improved temporary filename...
20010411 Kill ServerThread only if it is not responding
20010413 Fix: allways close the threadhandle
20010426 Again improved communication between MainThread and
ServerThread
20010508 Adjusted call of nki_private_decompress to a faster version
20010619 Fix in GetFloatsFromKey (crashed on PatID 1234567890
NuclearMedicin testpatterns)
20010717 Adjusted DcmMoveHere for RTDose post-processing
20010802 DcmReplaceInHeader now also supports replacements inside
sequences; Added export DcmVersion
20010808 Fix: SetStringVR appended a NULL byte to strings with
uneven characters. This is correct for UIDs, all other strings
should have a space appended.
20010824 Updated 'soplist.txt' resource to DICOM 1999 final text.
20010905 Fix: Headerdump was incomplete when a VR consists of more
than one short or int; Start implementation of ModalityLUT
20011121 Replaced 'SetStringVR' by 'SetAnyTypeVR' (Used by
DcmReplaceInHeader)
20011218 Added DcmWriteKretzFile: extracts a Kretz 3D file from a
dicomfile
20020225 Fix for Helax-TMS: when determining XFMs and (0x20,
0x1041) and (0x20, 0x50) are both absent, use (0x20, 0x32)
20020403 Fixed bug when UIDs are 64 bytes long. Some code butifying.
20020411 Added DcmWriteVRToFile
20020502 Added cacheing properties
20020522 Replaced ad hoc field allocation code by 'AVSdata_alloc'
20020523 Do not give warning for slice-order (DCM_E_SLICEORDER)
20020609 Pass MaxCompressionMode that is set to 4
20020620 Adjustment to CalcXfm for multi-frame images.
20020814 Added two Print error-messages
20020930 Added MAXSLICES to optional extraparams
20021028 Exported GetFloatsFromKey. Try te get XFM's of multiframe
objects right.
20021105 Get rid of scout-views when loading a volume (in
'SortSliceDDOs')
20021118 Fix in multiframe XFM containing 'GridFrameOffsetVector'
20030122 JPEG pixeldata support; Fixed memory leak
20030128 When SliceCoords are not provided, sort dicom-objects on
imagenumber
20030130 Support for 3D private Kretz ultrasound
20030424 Changed all calls to obsolete PDU.Write(&DDO) to
PDU.Write(&DDO, uid). Fix in handling of JPEG compressed
images. Version to 2.0
20030519 Fix XFMs when ImagePositionPatient contradicts
SliceLocation. Now the slicecoord in ImagePositionPatient is
preferred (Marconi-fix).
20030523 Fix: above change frustrated coronal and sagittal MRI
20030716 Workaround for sloppy Adac NM multiframe reconstructions
(@#$%^&*)
20041116 Start on time series recognition, now return unsorted
20041117 'proper' time series (with exact N copies of each slice with
given coordinate) are sorted on derived frame# (order of
image#) then coords; but still returned as 3D. MATPEL and
WRLDMATC know how to make 4D data out of such image
data (CONQUEST does not yet).
This option should read 4D CT (not tested) as well as 4D MRI/
DTI (tested) as long as all frames are sent as one series.
20041119 Adjustment in CalcXfm
20041119 Added support for 4D sliced object, now sent out as 4D field
20041124 Merged fix ljz 20041119
20041201 Improved detection of 4D data, now allow fringes, e.g., if slices
at certain locations occur NMMMMKL times, N slices at start
and K+L slices at end are removed. In this way, both Philips
and GE DTI and perfusion data (without fringes, e.g.,
MMMMMM) and Siemens RCCT data is supported. Note 1:
Siemens writes % of cycle in 0018,0022 as 'TP100PC5576',
where 100 is the %. Not used for now, 4D data is just ordered
based on slice number instead, with coordinates 0, 1, .. Note 2:
some localizer series are now returned as 4D as well.
20041221 Fix in 4D reader for out-of order images; first sort on image#,
later in index
20050301 Fix in dubious check on 'Proper4D'
20050308 One more check on 'Proper4D': at least half of the slices should
be Proper4D; Fix in last check
20050418 Fix in WriteBmp when all pixelvalues are equal
20050804 Fix in check on 'Proper4D'
20050905 Added SOP 31 for query: modality worklist query
20060531 Moved FreeOutputField to field.cpp and field.h
20060701 Added warning on order of 4D data - Messagebox needs to be
replaced
20060913 Replaced GetFloatsFromKey call by GetFloatsFromVR calls
20061020 Fixed bug in GetFloatsFromVR
20061030 SortSliceDDOs crashed on MR scans from Lucas hospital
20070112 Added exported function DcmReadJpeg
20070119 Using DcmSetExtraParams SORTMODE=1, slices will be
sorted on ascending coordinate, SORTMODE=2 means
descending. Fixed bug in SortSliceDDOs.
20070220 Fixed bug in SetAnyTypeVR; Added an errormessage
20070220 Attempt to fix frame reversal - debug code temp off
20070506 prealloc data pointer during recieve to allocate large block first:
allows loading larger scans
20070730 Dirty fix for CMS RTDOSE
20070902 DcmWriteVRToFile will now also write sequence item to file
as raw VR dump; takes Index as extra par
20071127 Support for multiframe-objects where ImagePositionPatient is
located in a DetectorInformationSequence
20080313 Fix: In SortSliceDDOs(), long ScanOptions could lead to
crashes or other undesired behaviour; Removed some warnings
20080318 In CreateLastPropertiesField(), a few properties that resided
deep in sequences for RTDOSE were added.
20080320 ...and put in a separate function
20080717 Support of Pinnacle DOSE in CalcXfm()
20080812 Support of Varian's Eclipse DOSE in CalcXfm()
20080908 Implemented &Philips to load embedded 4D ultrasound
20081007 Compute location of philips subvolumes by length/N
20081014 Also accept QueryIni-fields that contain Header/Key/Value
instead of Key/Value
20090605 Fixed crash in DcmMoveHere() when GetDDOarray() returns
OK, but no data were received
20090608 Fix: Due to different AcquisitionTime the warning 'Inconsistent
Slices' was given too often
20090610 Added "Upi is NOT unique: DANGER !!" error-message
20091029 Adapted for 64-bits version
20100427 Added workaround for illegal (incomplete) query response
from Kodak
20100811 Always return at least one record in DcmFind(), containing the
query tags; Recoded the Kodak workaround. Now only matches
to the query tags are returned, not any additional info that the
server might provide. In parameter pszNKIcommand1 of
DcmEcho() starts with '#', then the EchoResponse
sent by the server in (0x9999,0x0401) will be dumped to file.
20100827 Fixed memory leak in ProcessVRs(), updated documentation
20101130 In DicomMoverHedaerHere, translate 'Unknown' tags that ARE
present in the library back to (gggg,eeee)
20101208 Fix: Prealloc did not allocate enough in case SamplesPerPixel
is unequal to one
2011013 Fix: Prealloc did not allocate enough in case BitsAlocated is
eight or more bits higher than BitsStored
20110202 Fix: Prealloc was overdoing the alloc by a factor 8
20110418 Removed MessageBox "Respiratory cycle propably transmitted
wrong"
20110525 Fix: Prealloc might not allocate enough if a smaller scout-view
is transmitted as the last slice of a volume; administrate the pre-
allocated amount.
20110817 Added errormessages for DCM_E_CTREF_REDEFINED and
DCM_E_ISOC_REDEFINED
20110818 Call progress callback for QUERY and MOVE (in the main
thread)
20110912 Support float and double type in header dump
20120110 Fixed rare access violation in FillDDO()
20120329 Increased MAXFRAMECOUNT from 100 to 250 because
DCE-MR can have a lot of timeframes. (If in future a 4D scan
is mistaken for a 3D one, increasing it more might help...)
20120628 Some work on Spectroscopy
20120629 Removed MkTypedDicomObject(). Library is now always
attached in ServerChild(); Replaced 'ImageNumber' by
'InstanceNumber'
20120913 More work on Spectroscopy
20121030 In DcmReplaceInHeader() write chapter 10 explicit files
(except when the destination filename has a v2 extension)
20121102 In GetSliceCoord(), for US images, use
ImageTranslationVector
20130122 Corrected handling of veclen==strlen() in FillDDO() (see
20120110)
20130125 Added DcmFreeCache()
20130211 Added CheckPETScaling
20130212 DCM_E_INCONSISTANT_SLICES if PET scaling has been
adjusted
20130410 Simplified FindResource() in DllMain(): now also supports
x64\CqDicom.dll
20130503 Allow reentry of CqDicom.dll, removed unused gl_iImageNo,
resolved memory leaks, do not wait 100 seconds in case of
0xc004 server response, make sure that
gl_pLastProperties is not freed after caching and explicitly pass
gl_pLastProperties to CreateLastProperties() for readability,
replaced DcmMoveHere() by DcmMoveHereInternal() to allow
exported function to free up memory
20130522 Use GetSliceCoord to find sldir
20130619 More advanced error handling: use DCM_E_MAX+1 for
custom message trapped by HandleError being passed to
SetDicomErrorHandler();
20130620 Improved error handling for all exported functions
20130711 Merged
20130712 Added check output file check before calling
CheckRTDoseScaling() in DcmMoveHereInternal()
20130812 Added special case for B1 Map from Philips Scanners.
20131014 Corrected wrong slice direction and transformation calculation
for sagittal and coronal scan by checking which value of
coordinate index varies over slices.
20131015 Layout, typos in comments
19980330 Creation
19980331 Added exported DcmMkBinaryLib
19980414 Restricted the HeaderDump to max 4096 data, and the number
of bytes on one line to 256.
19980416 Added sequence support in HeaderDump
19980420 Fixed last written line in multiple line sequence dump
Added functions DcmFind, DcmMove and DcmMoveHere
19980526 Added DcmCreateBitmap
19980610 Changed BGR to RGB in DcmCreateBitmap.
Added DcmMoveHeaderHere
19980629 Fix: DimX and DimY were reversed.
Improved efficiency when loading one slice.
19980630 Fix: last change caused crashes
19980707 Removed some checks to allow non-standard Philips images
Added DcmSetProgressHook
19980708 Added DcmReplaceInHeader, which can be used for
anonymization of dicom images.
19980709 Added C-CANCEL command object when a ProgressHook
stops or aborts a DcmMove operation. Added support for
NkiPrivateCompressed images in DcmMoveHere.
19980826 Added #pragma pack(1) in Field.h
19981105 Added DcmReadHeader
19981127 Added DcmGetLastXfms
19990108 Updated the dictionary for DICOM-RT support
19990114 Slices are sorted on coord. When duplicate coords exist, the last
received slice eliminate previous ones.
Included changed SOP-list by MvH
19981127 Added DcmTree, DcmPatientList and DcmSetLocal
19990825 Added extended patientlist export: DcmPatientList2
19990826 Added DcmMoveFilesHere
20000824 Added DcmFileGetRtStructNames and DcmFileGetRtStruct
20020425 Added DcmVersion and DcmCreateRtStructFile
19990407 Created
20000619 Added prototype of GetStructInfo
20000707 Added more RtObjectXXX prototypes
20000824 Added szReferencedStruct to BEAM_TREE_INFO. To be used
in order to get the XFM of a beam IFF RTPlanGeometry equals
'PATIENT'. In the other case (when RTPlanGeometry equals
'TREATMENT_DEVICE'), the the XFM is defined by the 'IEC
fixed coordinate system'; this case is not handled in CqDicom.
20000829 Added prototype of GetRtBeamFromRtImage
20010717 Added szReferencedFrameOfReference in
STRUCT_TREE_INFO
To do: in 'CalcBeamXfms' the collimator angle is not treated
right when the patient is prone.
20050126 Moved DCM_PLAN and DCM_STRUCT typedefs to here;
added a few strings to DCM_PLAN; Added prototype of
GetPlanInfo; Added parameter to GetRtBeam
20130124 Added iColor to STRUCT_TREE_INFO
SQLITE3.C
20020301 Created
20030415 Better exception handling
20030417 Support for multi-frame images
20041221 Changed include files
20050215 Fixed for fragmented frames in a sequence
20050901 Renamed errorcodes.h to errcodes.h
20070112 Return Width, Height and BitDepth of the image
20071001 Output of JPEG error messages to OperatorConsole in server
20080819 Suppress large amounts of jpeg errors; added \n
20081116 Adapt for very large objects (use unsigned int lenght)
20000316 Created
20000326 Close handle on terminate
Dgate runs via new SlaveProcess mechanism of Uservice
19980405 Created
19980407 Added dgatesop.lst file creation; max AE to 16 chars
19980407 Sorted image list on SOPINSTANC to get correct order
19980412 Added DuplicateHandle code; but still deadlocks
19980413 Threaded mode avoids TCP/IP component (seems to fix
deadlock)
19980414 Restart after switching server mode does not always work;
Fix application to threaded mode for now.
Added compression configuration.
19980415 Some fixes for the first installation code
19980505 Made length of directory field in MAGDEVIC 250 chars
19980608 Replaced TQuirtViewer with TImage => no need to load
ntpars.dll
19980614 Merged code with use FPiette tcp components
19980616 All OK with new fpiette code; actually I had to fix my own bug
19980617 Save as bitmap and dump header in popup menu
19980618 Query and Move options for CQDICOM.DLL
19980619 Added header lister; default MagDeviceThreshHold to 10 MB
19980620 MagDeviceThreshHold is now configurable
19980621 Renamed table to MagDevice; use full table names
Nicely coded DBF/Access choice; but fixed to DBF
Delete patient and refresh database menu options
19980622 Double click query memo to make new query
Show on bitmap: patient is being deleted/file not found
19980623 Save bookmarks of tables; move to next record after delete
19980624 DICOM.SQL: StudyNumber (StudyID in DICOM) is now 64
long (Microsoft SQL server does not allow truncation)
Update bitmap after loading for fast display
Text strings in UDP input to 1024 (for long SQL errors)
Default password and user name to 'conquest'
PAGETIMEOUT to 600 for better database performance
Made DataSource name more or less configurable
Made all port numbers more or less configurable
Installing a second server on one PC while one server is
running works
19980702 Added KBUSED field in MAGDEVICE table
19980703 Some changes in static texts and hints
19980704 Found a handle leak in RunDgate; not fixed yet
19980708 Make anonymous; show progress for move
19980710 Added experimental archive option; fix stopcopying option
19980711 Fix double click query on empty form; use tray icon
19980713 Add Name of server in tooltip of tray icon; fix DiskFree
19980717 Fix crash if directory does not exist
19980721 Clicking tray icon restores window
19981219 Improved error handling display;
19981220 List header of undisplayable object in static
Read and save FileNameSyntax; default=3
19981221 Supress display of large files (>1 MB)
19981222 Use FieldByName, added combobox selectors
Disable study navigator if only 1 available
Moved modality from the study to the series level
19981229 Changed order of TableN.close to avoid side effects
19990104 Fixed MAGDEVICE creation under SQL server
(KBused optional)
19990109 Made ImageNumber 10 bytes wide (for GE AdvantageWin)
19990110 Combobox1 is now patient filter and or selector
Added access to cache and jukebox in browser but
with limited support: up to 10 devices (one character)
Added archiving page; fixed most handle leaks
19990112 Finished first archiving page; -hide command line option
Added clear database and regen single device buttons
Clear combobox for each page select
NOTES: Archive page is configured by editing
Restore original configuration or restart to load it
Archiving allows up to 10 Jukeboxes, but only the
selected one is used for writing. Only the drive
with MAG0 is checked for disk space for automatic
archiving. Only device CACHE0 is passed correctly
to the burn program. This means: stick to 1 MAG
device and 1 CACHE device for now.
19990113 Speeded archiving by selecting MAG0 if there is only 1
Renamed entry to BurnThresholdMB, made BurnProgramList
Note: to do - keep log file of archiving operations.
- add RT objects to default sop file.
19990114 Added date and time formats for burnprograms
19990115 label format burnprograms; no write empty ini
Sync magdevice0 with DataDir; %% and %p formats
19990315 Added EchoNumber in image table - used to separate PD,T2
Completed dgatesop.lst with Philips, GE, RT
Added NumberOfFrames in image table - to find multiframe
objects
19990413 truncate QUERY request depending of level
19990510 Allow AEs starting with a digit (Siemens MRI)
19990527 Revision 3 of database layout (birthday, sex, bolus)
19990902 Added load/store of mirror devices and export converters
19990905 Switched word wrap off for memo's
Added DcmMoveFilesHere on right click of copy; but seems to
crash; Problem: if we pass DcmMoveFilesHere servers
AE/PORT saving slices from own server will fail. Now pass
'test;1234'
20000127 Hide archiving tabsheet in new install; Add NKI sops to install;
20000128 Added extra GE sop; compressmode 2; disabled movefileshere
20000316 version 1.3.5: Integrates dgate as service operation
New install does not start dgate right away
20000317 Truncate patient list if too long
20000318 '$ RESTART' as console message kills and restarts server
'& DGATE xx' as console message runs dgate with args xx
20000323 Added query sop choices through level dropdown list
20000326 Service supported for more than one server:
servicename=AE; port passed as /process dgate.exe -!port
Removed need to enter password for SQL access
Save and restore user and password in dicom.ini
Added 'ping' option for remote check of archiving:
Deletes ConquestDICOMServer.Ping and makes
ConquestDICOMServer.response with archive status
Allow up to four servers at the same time, also as services
Note: only the first server will start correctly on boot!
(on boot, the /process parameter is not passed and the
default IP message port will be used -!1111); Presence of file
USESQLSERVER allows install on SQL server
Presence of file USEMSACCESS allows install using access db
20000328 Added tests of local server at key moments
added -noconfirmquit option; show VERSION in caption
20000402 Install service with startup at right socket
Read service socket from registry on startup
20000403 Improved socket handling; fixed space in path when not
service; space in path blocks service install.
Now recognizes installed but not running service
Number of servers on one PC is now unlimited.
20000417 Fixed MSACCESS ODBC creation
20000501 ExportModalityx should be UPPER-case
20000528 Added "force display of large image", "remove image from
database", "run external viewer" and demoviewer option
Removed '.' as workdir from runprogram etc (allow bat files ?)
Added democopy option: copy incoming to dir + CallingAE.v2
20000529 Merged two changes
20000529 Release to 1.3.6
20000616 Attemp to create NewInstallForm database selector
20000625 Added NewInstallForm database selector; default to
MSACCESS
Added Send ... To menu items in popupmenu
Removed '*' items from Dicom system selectors
Added Send Selected Images for more flexibility
Added animated display menu options
20000626 Added Send Selected Images selector window
20000701 Some adaptations of Send Selected Images;
MaxFileNameLength
TrimRight strings in query - trailing spaces depend on db
20000707 Added Edit Database by Hand menu option
20000808 Added ,0 code in timed archiving
20000915 Added ListenSocket.Addr (0,0,0,0) in multi-app mode
20001107 Added CheckBoxViewIncoming for demo display of
incoming images
20001108 Display originating server on incoming image;
Disable menus when the ViewIncoming option is selected
20001129 Added fix so that DICOM.INI may contain UNC path
Added menu choice to change ID of selected series
Version to 1.3.7
20010312 Trimmed remote IP so that hostnames can be resolved in
CqDicom.dll
20010318 Trim servername and ip;
alt-rightclick the service buttons installs service 4 times
e.g., at ports 5678, 5679, 5680 and 5681 (all with same data)
This may be used for efficiency and to limit the effect of
crashes; Version to 1.3.8
20010327 Always pass curdir to runprogramxxx and startprogram -
required because directoryview changes current directory!
20010328 Uppercase account for service; colors for archive status
Added verify mirror disk button; burn only once per time
Show date and time for archival steps; added KeepAlive
Added MirrorVerifyTime (verifies whole MAG0)
Added conquestdicomserver.log with major messages
20010405 Added comma-separated list option for patid in query page
20010406 Ctrl-dblclick adds patid to comma-separated list
20010406 All status memo's are now limited in length and save to
separate log files
Added (and disabled) simple zip code for log files per day
20010409 Do not log query page
20010409 Added Tape backup page; replace few GetCurrentDir by
CurDir
20010410 Added timeouts (10s and 5 hours) to tape backup
20010412 Separate tape backup button - some fixes
20010416 Improved anonymize and change patient ID using new dgate –f
options; Added drag and drop interface to add files to server
20010418 Changed description of forced backup set; refuse dropped
directories; Version to 1.3.9
20010418 Update maintenance memo during drag and drop
20010418 Fix: timer4 was enabled if no KeepAlive specified in dicom.ini
Hide tape backup page in new installation
Added default install button in firstinstall
20010419 Added anonymize and change patient ID for study
20010502 Added DeleteThisStudy/Series
20010830 revision 4 of database definition (extended)
Added ExportStationName in dicom.ini
Updated dgatesop.lst to conform to DICOM 1999 final text
Version to 1.3.10
20010903 Suggest .\username as account
20010904 Fix: Query was freed twice when a DicomMove failed
20011108 Added automatic zipping of log files
Make sure that tape backup and archive pages are not shown
Added save/restore of ExportFilter settings
20011109 Small fixes:
do not write empty configuration strings (empty<>default)
keep some settings with original case (see sorg)
use StrToIntDef to avoid exceptions on invalid settings
Added ZipTime as configurable
20011127 Added SeriesPat and ImagePat fields to DICOM.SQL
Surpress fail message box when using SQL server
Version to 1.3.11
20020402 Adapted controls.pas: exception handling in
finddragtarget and findvclwindow
20020409 DB rev 6: added frame of reference UID to series
20020416 Store/save UIDPrefix for in dicom.ini
When creating dicom.ini, create unique UIDPrefix:
'1.2.826.0.1.3680043.2.135.Date.Time
Added configurable TestReadTime: regular check of MAG0
20020417 Fix: QueryResult has not necessarily 64 char
Renamed some data structures
20020422 Do not save empty UIDPrefix; fix change patid for study
20020424 Added simple weekly checks page; mail ALL failures
20020426 Fix in mail sender list; use first e-mail as 'to' address
20020428 All recipients show in to: header
Only serious error messages have *** in string
Added MailCollectTime and MailWaitTime
Avoid starting check more than once
20020510 Added CheckDicomSubmits (send mail when users forgot to
send images to the PACS)
20020513 Checks: empty time runs all day; added log header/footer
Updated CONTROLS.PAS: more exception handling
Fixed reading of weeklychecks; display CD num in header
Fix warnings and patient ID checks in CheckDicomSubmits
20020515 Added ImageType to database (rev 7)
Added find missing patients button;
allow more than one weekly check time (; separated, not
adjacent)
20020515 Fix missing pats when query empty
Added grab options to weekly checks
20020517 Changed StudyModality to 64 chars (e.g., fits :
CT\MR\PT\XA\ST\MG\MS\RTIMAGE\RTDOSE\RTSTRUCT\RTPLAN\RTRECORD)
20020518 Fix in weeklychecks tag: too many with tag 0
20020519 Fix in rev 7 db definition: AcqDate is now SQL_C_DATE
Added FixPhilips in DICOM.INI
20020520 Use DGATE.EXE for grabbing
20020522 Fix reading of entries with an '=' in e.g., dicom.ini
20020524 Fix acrnema.map problem with new install
20020529 Fixed duplicate mailing of messages, added WriteMemo
Added archive.log; extra parameter for regen for DBASEII
Removed MessageBoxes
20020609 Read and write FileCompressMode, default remains 2
20020613 Added alt-drop code: enter with new patient ID
20020819 Basic printer support; view incoming shows printer data
20020819 Process messages as files are dropped
Print incoming imageboxes on default printer
20020821 Printer accepts landscape and portrait any pictures per page
Progressbar shows printer queue activity
Note: printer queue is single user (but may be fixed, using
film#)!
20020823 Added print options in browser - print to local dicom server
20020825 Headerlister is modeless - added CTRL-A, CTRL-C, CTRL-F,
CTRL-S, F1, F3 end ESC
Printer has progress hook - required to avoid socket data loss
Selection of print page format; edited info text
Added all 1.3.11 fields to edit database by hand
20021015 Start deleting patient started delete ''=ALL when no patient in
list!!!!!
Protect all pop-up functions for no selection
20021016 Better support for copying large #patients, even if one or more
missing
Added denormalized database option (for DBF without ODBC)
Removed obsolete magdevice button
20021017 Added "" around dropped filenames; use filter instead
of master-detail (requires index) for built-in dbf support
Version to 1.4.0; added dropping of directories
Added UID counter passed to dgate to avoid UID problems
20021018 Fixed browser fail and missing dbase dir after non-odbc install
Limit dbase list in browser (alternative to image) to 100 lines
20021020 Added Kill and Restart the Server weekly check (packs
built-in dbf); Fix reading of database name if not default
20021021 Small fix in maintenance memo for very long strings
20021028 Also denormalized series database; default de-normalize study
(rev 8); Show denormalized study entries in database editor
20021029 Fixed query keys transmittal (sent sop when not needed)
20021213 Added EnableReadAheadThread as configurable parameter
Disabled GECTStorage amd GEMRStorage in dgatesop.lst
20030113 Version to 1.4.1; Fixed keepalive option (was never enabled)
Added PatientQuerySortOrder and such
20030128 Fix update of headerlister when no image shown
Make DBF table links case insensitive
20030319 Fix: ImageDB entry 'ReceivingCoil' is 16 bytes (not 12)
20030324 Start on 1.4.2: db rev 10: made ReceivingCoil 16 wide
20030402 Merged above two changes
20030409 Handle DicomPrint error; several path fixes in tape-handling
20030613 Catch WM_QUERYENDSESSION: shutdown disables close
dialog
20030628 Fix that more than one dropped directory will be loaded
20030706 Prepare for release 1.4.2; new dicom.ini; kill server
Compression column in acrnema.map
20030707 Added manufacturer to denormalized db (rev 11)
Write registry key
HKEY_LOCAL_MACHINE\SOFTWARE\NKI AVL\Conquest\Dicomserver\SERVERNAME
with values: directory=path without trailing backslash and
laststarted=yyyymmdd. For use by Dicom-works only.
Note: servername changes are updated on GUI startup only.
20030708 Made JPEG compression configurable (affects dgatesop.lst)
20030709 Write version into registry
20030710 Install service as system account (no user required)
Fix attempt to mail when not wanted
------------------ release 1.4.2 ----------------------
20030717 Fix problems when registry access fails
20030809 Will automatically use ADO or MDBF when BDE not installed
Set version to 1.4.3
20030810 Log used DB engine; Added partial ID matching for MDBF
Default enable uncompressed button before install
Force user to push 'Save config button'
Added some text to install and maintenance pages
Do not display images when on jukebox (use force display)
20030819 Made max drop filename length longer (256->1024)
20030905 Date of zip file is one day before if zip before 8 in the morning
Hide external viewer menu directly after install
Optional configuration of SendUpperCaseAE added
Removed obsolete flush button
Do not allow install in directory with spaces in its name
Removed faulty extra text from install page
20030907 Fix ODBC generation for directory with spaces
Just warn against directory with spaces
20030909 Test write access to log files prior to startup
20030920 Mail messages that contain 'fail' instead of 'failed'
Added tape full warning (that will be mailed)
Added enables for timed archival (to allow retry/timer disable)
Changed order of burn CD message / tape backup
Added NextSlotToUse (slot n) next to NextCDToBurn
(JUKEBOX0.n); % in burn parameters %n = NextSlotToUse,
%c = NextCDToBurn; Manual archive buttons control
checkboxes as well
20030921 CTRL-Double click "automatic archival label" starts archival
CTRL-Double click "weekly checks time" starts check
Added NightlyCleanThreshhold parameter (clean # MB at
01:00)
20040401 Added ImageID to database; version to 1.4.4
Show ImageID in database editor and browser
20040402 Allow anonymize etc on MAG0..MAG9;
changed datasource name (now system DSN)
20040425 Added DoubleBackSlashToDB to dicom.ini
20040426 Version to 1.4.4a
20040528 Use built-in servertask commands for maintenance and browser
20040530 Browser for built-in DBASEIII driver uses extract server
command; Database editor to read only for built-in DBASEIII
driver; These changes allow efficient use of in-memory index
for dbaseIII; OK for 10^7 images when patientID, studyUID or
seriesUID passed in Queries; Added PackDBF and IndexDBF
to dicom.ini; Reworded some in popup menu; wait for patient
deletion to finish; Fix refresh for sql server
20040601 Added LongQueryDBF flag
20040605 Fix extract when no patients; kill server stops loop of server
tasks; start server on activate (after windows shows)
Pack the Database as Weekly Check Action
20040606 Fix in formactivate; display @ startup
20040610 use servertask to clear index and rebuild it in built-in dbase
mode
20040614 small fix in keep server alive; added nightlymove option
20040615 small fix in nightlymove option; also reindex after regen device
20040713 Added FixKodak; version to 1.4.6
20040722 Installation defaults for FixPhilips and FixKodak are now 0
20040804 Added *.lst to zipped log files; added bug report option
Version to 1.4.7
20041029 Added merge and split series options;
Process messages during long GUI actions if possible (no DB)
20041030 Modified GUI of merge and split, process messages
20041101 Check for MAG storage for split/merge
Delete from DB does not use image (for orphaned DB)
USEDBASEIIIWITHOUTODBC replaced by Pos('\',
Datasource)>0 while running
20041102 Added nj compression mode
20041108 Added warning when alt-dropping file(s) with $.. as Patid
(debug)
20041128 Fixed wording of delete messages: works on all mag devices
Fixed problem in DeleteThisSeries, Anonymize, and change
Patient ID: last series could not be modified/deleted
20041129 Made font size of server status window selectable; Made debug
log switchable; service will continue to log to file even if
user interface is closed (but with different date/time layout)
Now can save and use acrnema.map without server restart
Fix startup problem when disk 'c' not available
20041201 Backup fail 1..5 files temp logged as ALMOST OK ->
continues
20050106 Fixed install as four services, fixed nightlymove amount
Is now nightlymovethreshhold - free space: i.e.,
attempts to make nightlymovethreshhold MB free space
Fixed nightlymove: forgot to pass ',0' for MAG0
Also, try move even if select failed to avoid stall
after partial failed select
20050109 Made backup of and warn when dicom.sql is overwritten
Added TCPIPTimeOut, FailHoldOff, RetryDelay, QueueSize
Version to 1.4.8
20050114 On startup ask to delete ExportFailures*, CopyFailures*
20050422 Added BurnTime2 (2 dvds per day) and BurnWeekend (all
weekend through)
20050429 db rev 14: added worklist support
20050829 recurse directories when dropping files to ease load dicom CD
20050831 Added find modality worklist to dgatesop.lst
20050901 Added clear worklist button, version to 1.4.9, WorkListMode
20050905 Modality worklist query, auto append worklist to dicom.sql
20050907 Avoid dicom.sql message in new install, v* and s* in
acrnema.map
20050912 Small changes to dicom.ini, dicom.sql, dgatesop.lst; added
SQLHost. Small change to mdbf: extra refresh avoids browser
failures
20051024 Version to 1.4.9a: recompiled with patched controls.pas
20051230 Version to 1.4.10
Moved clear worklist button and add pack database button
Added warning when worklist is added to dicom.sql: clear
worklist required
Added settings: DebugLevel, CacheVirtualData,
LargeFileSizeKB, VirtualServerFor#
enable study controls prior to return if same (none) image
shown
20060102 Update of hints
20060103 1.4.10 Release
20060201 Added K-Pacs/EZDICOM based viewer
20060312 Keep case of VirtualServerFor; Message buffers from 1024 to
8192; Open k-pacs viewer on correct series; version to 1.4.11
20060314 Added experimental native Mysql access; installs when
libmysql.dll is found - uses mysql version 4.1.14
20060315 Keep case of FileNameSyntax
20060328 Updated hints and file version for release 1.4.11
20060618 Set default user for mySQL to root (thanks Chris Muller)
Seems to then also work with mySQL 5.0.22, version to 1.4.12
20060707 Bug reported by Paolo Marchesi: save config loses DBF
Now only set to default when previous does not exist
Use same zipmaster as in previous versions (zipmaster\org)
20061101 Added SeriesDescription to query page
20061129 Added control for debuglevel, and allow queries on UID
Double click queries labels to change mode
20061130 Added new dgate parameters; consolidated debuglevel control
and param; Made application forms resizable and set size
constraints; Small font control works on all status pages;
Double click image to force display it
20061220 Pass Tempfile to kpacs viewer form
20070123 Added processfilter to allow browsing of patients with ' in
patientid
20070126 Importconverters stuff and ForwardAssociationRelease in
dicom.ini; Version to 1.4.12b
20070201 Version to 1.4.12c
20070204 Fix in generation of UIDPrefix: was not automatically
generated on startup
20070206 ODBC buttons will also create database for SQL server
20070207 ODBC button creates database for native mysql
20070211 Native MYSQL did not create indices during install
Fixed selection of DBF (with odbc)
20070221 Started to SQLite (not yet fully functional)
20070305 Version to 1.4.13alpha
20070316 Use | in patid instead of , in drag and drop to allow dropping
files with a , in them while changing patientif (not backwards
compatible)
20070415 Back to , in patid in drag and drop: ljz fixed it in dgate.exe
Added Prefetcher flag in dicom.ini (default 0)
20070520 Fixed missing completed message in regen single device
20070705 Added BrowseThroughDBF: unified browser used for SqLite
Works for other datasources but not configured as such
Small fixes in completed message in several regen functions
Fixed view/edit database second time round (enable)
20070706 Auto create mysql registry settings for native mysql
Disallow anonymize and change to empty name
Message on end of odbc or db creation
Version to 1.4.13beta
20070708 Patched forms.pas for Chad Moser's crash problem.
Added BrowseThroughDBF setting in dicom.ini
Default 1 for SqLite, 0 for others
Use extract: also for dbaseIII: to avoid multi-user problems
when browsing and writing at same time
20070709 Small fix in dbf+bde browsing
Auto register webserver\ActiveFormProj1.ocx if found
Do not use extract: for dbaseIII: browser does not work
while indexing
20071030 Also delete DelayedFetchForwardFailures* on startup
20071103 Added LRUSort, AllowTruncate, ForwardCollectDelay,
MaximumExportRetries,
MaximumDelayedFetchForwardRetries
Version to 1.4.13
20071104 Added DecompressNon16BitsJpeg, UseBuiltInDecompressor
Made IncomingCompression editable (double click label)
Made FileNameSyntax editable (double click label) and
allow choice of V2 and DCM through radiobuttons
20071114 Save root password while installing for mysql with password
20071115 Disabled multi-process mode in RunInThreadedModeClick to
allow multiple saves of ini file during install (for above
password)
20071115 Save password and username for SQL server install as well
20071116 Longer default password for sql server 2005
20080124 Added mailer settings in dicom.ini
Disable LittleEndianExplicit on install
Added configuration for mode UJ
Database revision 16: Moved Stationname and
InstitutionalDepartmentName to series table
Added extra warning when revision 16 not detected
moved Stationname and InstitutionalDepartmentName in view/
edit database
Version to 1.4.13a
20080126 Automatic add backslash to read MAGDEVICEs etc and give a
warning message
20080322 Version to 1.4.14beta
20080322 Fix first install bug in test dicom.sql; fix send image crash
in UID mode; display selected UIDs in query/move page
added PadAEWithZeros and IgnoreOutOfMemoryErrors
20080818 Database revision 17: extended size of EchoNumber and
ReqProcDescription to 64; EchoNumber, StudyModality and
ImageType are DT_MSTR: multiple values; use Institution
(8,80) instead of InstitutionDepartmentname (8, 1040)
Added WorkListReturnsISO_IR_100
20080819 Version to 1.4.14
20080831 Default ForwardAssociationRelease to 1
20080902 mvh Added EnableComputedFields, default 0
20081104 Fixed install as four NT services: trim IP port before convert to
int; Fixed save of database name to dicom.ini for mysql install
version to 1.4.14a
20081121 Added Postgres support; attempt fix MySQL support
Automatically choose the 64 bit dgate if possible
20081123 Retry server test for 4 sec after db install
20090203 Trim data read from dicom.ini to remove trailing spaces
20090205 Added MailPort option
20090411 version to 1.4.15alpha; Added PrintSquareLandscape, max
converters to 19, VirtualPerSeries0..9,
RetrieveResultConverter0, QueryConverter0,
WorkListQueryConverter0, RetrieveConverter0
Let OCX registration fail without warning (for vista)
20090927 Added RetryForwardFailed
20090927 Optionally use 7za.exe instead of zipmaster (when zipdll.dll
deleted); Added RetryForwardFailed
20090928 Default sql password to conquest1415;
20090929 Added ImportExportDragAndDrop flag (default 0)
20090929 Version to 1.4.15
20100202 version to 1.4.16alpha; check other GUI running; jpeg2000
stuff; LossyQuality
20100206 use convert_to_bmp in browser to allow JPEG2000
20100207 export servertask; added spinedit for frames;
UseKpacsDecompression flag
20100207 version to 1.4.16alpha2; made it a const; removed warnings
write zips to folder logs if exists; create logs folder on install
20100227 version to 1.4.16alpha3; added DICOM print to selected AE
20100827 version to 1.4.16beta; Fixed display of jpeg2000 config in GUI
LargeFileSizeKB to 4096; note: jpeg2000 requires HAVE_J2K
in cqdicom.dll; Fixed viewincoming; fixed enable NJ mode
choice logic; fixed service detection to warn for existing but not
running service
20100828 Automatically start installed but not running service when GUI
comes up; Added QueryResultConverter and
ModalityWorkListQueryResultConverter
20100905 Added UseBuiltInJPEG and IgnoreMagdevicethreshold flags
20101003 Added browsepatient command; show record counts in browser
hints; Fixed frame number passed to BMP generator
Improved query page text selection when brackets in text
20101003 Version to 1.4.16beta4
20101110 Typo in reading UseBuiltInJPEG (save will always write 1)
20101111 Version to 1.4.16beta6; added tests to service control
Issue: uninstall often fails (and leaves dgate.exe running)
20101116 Fixed uninstall in dgateserv, changed messages
More checks in service code
20101122 Add option to log to file only with gui running
Added export to zip file options
20101123 Default EnableComputedFields to 1, added OverlapVirtualGet,
ArchiveConverter0, update acrnema.map header with ui, ul, ue
20101212 Right lock new checkbox; version to 1.4.16
20101212 Disabled BigEndianExplicit for new; default file type to DCM
20101212 Removed nop export script
20101213 Enable delete even if no file found;
stop zipping and cleanup (dgate will do it) if only log to file
enabled
20101213 Fixed update of grid hints for totals: note count = unfiltered
20101220 Block spinedit for 1 frame image
20101227 Reset CheckBoxOnlyLogToFile when restarting server etc
20110105 version to 1.4.16rc1; default BrowseThroughDBF=1 for
SQLSERVER
20110123 version to 1.4.16rc3; other support for other sections in
dicom.ini
20110326 version to 1.4.16rc6; Also show incoming 'Rewritten' images
20110329 Version to 1.4.16; added MAGDeviceFullThreshHold
20110331 Added NoDICOMCheck; release date
20120818 Padd text queries with spaces not nulls; fix setting JL
compression; Increases convert_to_bmp resolution for print
jobs and bmp creation; Display some info in the query window
on startup; delayed GUI test; Version to 1.4.17
20120826 Accept server messages without \n; backup Failure files when
deleting
20120912 Fixed tab order of all server tabsheets
20121016 Document J3NN .. JLNN in acrnema.map
20121212 1.4.17beta
20130517 Fixed anonymizer; 1.4.17
20130517 DoubleBackSlashToDB = 1 could happen when installing MS
SQL server
20130522 Added WorkListTableName to dicom.ini
20130523 More anonymizer work
20130813 Choose .dcm extension radiobutton for lua file name syntax
Added AllowEmptyPatientID to dicom.ini
Added missing converters to dicom.ini code
20130813 Version to 1.4.17b, release date
20131013 Version to 1.4.17c, release date
20131123 Fix uid based image query, broken due to 20120818 fix
20131219 Fix mailer when weekly checks config is absent
20140304 Added W* wildcard AE
20140309 Updated dgatesop.lst to revision 5
20140309 Version to 1.4.17d, release date
19980405 Created
19980618 Added reference to Fpiette; use form also as file lister
19980624 Removed line about backdoor
19980721 Removed line about Mark Oskin going away
19990527 Release to 1.3.3
20000128 Release to 1.3.4
20000316 Release to 1.3.5
20000529 Release to 1.3.6
20001129 Release to 1.3.7
20010318 Release to 1.3.8
20010318 Release to 1.3.9; fixed dbaseIII text
20010830 Release to 1.3.10;
20011127 Release to 1.3.11;
20020816 Release to 1.3.12;
20020825 Made Lambert's e-mail address more prominent
20021018 Version to 1.4.0; added release date
20021020 Update release date
20021028 Update release date
20021215 Update release date
20030113 Version to 1.4.1; release date
20030128 new release date
20030303 new release date
20030710 Version to 1.4.2; release date
20030809 Version to 1.4.3
20030810 Added reference to offis, zipmaster, and mitec
20030922 Release date
20040402 Version to 1.4.4
20040406 Release date
20040426 Version to 1.4.4a; Release date
20040615 Version to 1.4.5; Release date
20040722 Version to 1.4.6; Release date
20040805 Version to 1.4.7; Release date
20041129 Release date
20050106 Version to 1.4.7a; Release date
20050109 Version to 1.4.8; Release date
20050303 Release date
20050912 Version to 1.4.9; Release date; worklist info
20051024 Version to 1.4.9a; Release date
20060103 Version to 1.4.10; Release date
20060314 Version to 1.4.11; Release date; new acknowledgements
20060402 Changed fpiette's website; Release date
20060708 Version to 1.4.12alpha; Release date
20061222 Version to 1.4.12; release date
20070126 Version to 1.4.12b; release date
20070201 Version to 1.4.12c; release date
20070706 Version to 1.4.13beta; release date; sqlite reference
20071116 Version to 1.4.13; release date
20080322 Version to 1.4.14beta; release date
20080831 Version to 1.4.14; release date
20081121 Version to 1.4.14a; release date
20090411 Version to 1.4.15alpha
20090927 Version to 1.4.15
20100202 Version to 1.4.16alpha
20100207 Version comes from define in the serverdriver