Documentation
PrologicSign PACS 1.0.0 for Windows: how to install it, run it, license it and connect it to your DICOM devices.
Install and first run
One Windows installer sets up the service, the admin app and, for products that include it, the viewer. A setup wizard then configures the database, this PACS, your destinations and the license. Everything below applies to version 1.0.0.
Requirements
- Windows: Windows 10 or 11, or Windows Server 2019 or later, 64-bit. There is no version for other operating systems.
- .NET: nothing to install. The installer carries its own runtime.
- Rights: an administrator account to install. The admin app also asks for administrator rights (a User Account Control prompt) each time it starts, because it talks to the service over a local named pipe that only Administrators and SYSTEM may use. On a computer with a PACS or Router service, the viewer asks in the same way.
- Disk: the storage folder holds every received image. Plan the capacity from your study volume. Incoming images are refused when free space drops below 2,048 MB (configurable).
- Network: one inbound TCP port for DICOM (default 11112). Outbound HTTPS to the license server for online activation; not needed with offline activation.
- Database: none needed. A built-in database is included, or you can use your own (see Database choice).
What the installer puts on the computer
The installer has a Product page. Choose the product your license is for. The default is the all-in-one.
| Choice on the Product page | Code | Installs |
|---|---|---|
| PACS + Router + Viewer (all-in-one) | pacs-router-viewer | Service, admin app, viewer |
| PACS + Router | pacs-router | Service, admin app |
| PACS + Viewer | pacs-viewer | Service, admin app, viewer |
| PACS (archive) | pacs | Service, admin app |
| Router (forward, then delete; no archive) | router | Service, admin app |
| Viewer only (no service on this computer) | viewer | Viewer only. No service, no admin app, no setup wizard. |
The license, not the installer, decides what runs: installing more than the license includes only shows "Not in your product". See Products for what each one does.
Download and check
Download PrologicSignPACS-1.0.0-x64.msi and SHA256SUMS.txt only from the Downloads page of https://pacs.plogic.dev, never from a link in an email or a file-sharing site. The first line of SHA256SUMS.txt is the checksum of the installer; the other lines are the program files it installs.
$expected = (Get-Content .\SHA256SUMS.txt -TotalCount 1).Split(' ')[0]
$actual = (Get-FileHash .\PrologicSignPACS-1.0.0-x64.msi -Algorithm SHA256).Hash
if ($actual -eq $expected) { 'MSI checksum OK' } else { 'MISMATCH - do not install' }
You can also right-click the file and open Properties › Details: Company and Product read PrologicSign Technology and PrologicSign PACS.
Install
- Run
PrologicSignPACS-1.0.0-x64.msias an administrator. If Windows shows a SmartScreen message, see below. - On the Product page choose your product.
- Keep the program folder, or choose another one.
- On the last page, leave "Open PrologicSign PACS Admin to finish setup" ticked. The admin app opens and starts the setup wizard.
| Program files | C:\Program Files\PrologicSign\PACS\ (you can change this in the installer) |
|---|---|
| Data | C:\ProgramData\PrologicSign\PACS\ (fixed) |
| Windows service | PrologicSign PACS (service name PrologicSignPacs), runs as LocalSystem, start type Automatic (Delayed Start), restarts after 1 minute on every failure |
| Shortcuts | Start menu and desktop: PrologicSign PACS Admin |
The installer limits who can read the data: settings.json and pacs.db are for SYSTEM and Administrators only, and normal users have no access to studies\ and spool\. Users can read logs\.
The service keeps running with nobody signed in. Until the setup wizard has finished, the service stays idle and its status says "Setup has not been completed".
Silent install
msiexec /i PrologicSignPACS-1.0.0-x64.msi /qn PRODUCT=pacs-router-viewer
Then run the setup wizard in the admin app. PRODUCT takes a code from the table above; without it the all-in-one is installed.
Windows SmartScreen: "Unknown publisher"
The 1.0.0 installer is not yet signed with a Windows code-signing certificate. When you run it, Windows SmartScreen may show "Windows protected your PC" and "Unknown publisher". This is expected for this version and does not mean the file is unsafe. Click More info, check that the file is PrologicSignPACS-1.0.0-x64.msi, then click Run anyway.
What protects you even without the Windows certificate:
- The program files carry the PrologicSign strong-name signature.
- Licenses are signed by the PrologicSign license server and checked by the PACS.
- Automatic updates are accepted only when the update answer is signed by PrologicSign and the downloaded package matches its published SHA-256 checksum. Anything else is refused.
Next release: the installer and program files will be signed with a "PrologicSign Technology" code-signing certificate, so Windows will show a verified publisher. Installed systems receive it through the normal automatic update; nothing needs to be reinstalled.
Allowing the unsigned installer (for hospital IT)
A Publisher rule cannot match this version. Allow it by checksum or by path instead. No certificate is needed: do not add any certificate to a Trusted Root or Trusted Publishers store for PrologicSign PACS. The installer never installs certificates.
Unblock the file, only after the checksum matches. Windows marks downloads as "from the internet", and that mark is what makes SmartScreen ask. Deployment tools (Intune, Configuration Manager, Group Policy) that run msiexec /i ... /qn do not show SmartScreen.
Unblock-File .\PrologicSignPACS-1.0.0-x64.msi
AppLocker: add a hash rule for the MSI (Windows Installer rules), and a hash or path rule for the program folder (Executable and DLL rules). Run this on a test machine after installing:
$info = @(Get-AppLockerFileInformation -Path .\PrologicSignPACS-1.0.0-x64.msi)
$info += Get-AppLockerFileInformation -Directory 'C:\Program Files\PrologicSign\PACS' -Recurse -FileType Exe, Dll
$info | New-AppLockerPolicy -RuleType Hash -User Everyone -Optimize -Xml | Out-File .\PrologicSignPACS-applocker.xml
# Review the XML, then merge it into your policy (Group Policy, or locally):
Set-AppLockerPolicy -XmlPolicy .\PrologicSignPACS-applocker.xml -Merge
Hash rules must be renewed for every new version. A path rule for %PROGRAMFILES%\PrologicSign\PACS\* does not need renewing, and is safe because only administrators can write there.
WDAC / App Control for Business: build a supplemental policy from the installed program folder, merge it with your base policy and deploy it the usual way.
New-CIPolicy -Level Hash -Fallback FilePath -ScanPath 'C:\Program Files\PrologicSign\PACS' -UserPEs -FilePath .\PrologicSignPACS-wdac.xml
# or a path rule: New-CIPolicyRule -FilePathRule 'C:\Program Files\PrologicSign\PACS\*'
If your organisation only allows signed software, contact support and we will help your IT team.
Setup wizard
The wizard opens when the admin app starts and setup has not been finished. A step list on the left lets you go back to any step you have already visited.
- Database: built-in, or an existing server. See Database choice.
- This PACS: AE title, port, listening IP and storage folder. The wizard checks that the port is free and can add the Windows Firewall rule. See AE title, IP and port.
- Remote PACS: other DICOM nodes, each with a Test (C-ECHO) button. This step is optional and you can add more later.
- License: choose Enter a license key, or Activate later to finish setup now and enter the key afterwards on the License page. The PACS does not receive images until a key is active. See License and evaluation.
- Summary: check and press Finish. The settings are saved and the running service reloads them.
Closing the wizard before Finish asks for confirmation, and nothing is saved. To change the database later, use Settings › Database, which opens the wizard again on its database step. Other settings are changed on the Settings page.
- Router without PACS: the storage folder is called the transit folder, and a "Forward destination" step needs at least one destination. Finish creates or updates a rule "Forward everything" to those destinations, without a local copy, and switches routing on.
- Viewer only: there is no wizard. See Viewer.
Database choice
The database holds the study, series and instance index, the activity log and the routing queue. Images are never stored in it; they are files in the storage folder.
| Choice | When to use it |
|---|---|
| Use the built-in database (default) | One server, no database administrator. SQLite, one file: C:\ProgramData\PrologicSign\PACS\pacs.db. Nothing to install. |
| I already have a database | Your organisation runs SQL Server, MySQL / MariaDB or PostgreSQL and wants the index there. |
With an existing database, choose the engine, type a connection string or fill in the server, database and user fields, and press Test connection. The test must succeed; it also creates or upgrades the tables. The service applies pending migrations each time it starts.
| Engine | Example (the password goes where … is) |
|---|---|
| SQL Server (SQL login) | Server=SQLHOST;Database=PrologicPacs;User Id=pacs;Password=…;TrustServerCertificate=True |
| SQL Server (Windows authentication) | Server=SQLHOST;Database=PrologicPacs;Integrated Security=True;TrustServerCertificate=True |
| MySQL / MariaDB | server=dbhost;port=3306;database=prologic_pacs;user=pacs;password=… |
| PostgreSQL | Host=dbhost;Port=5432;Database=prologic_pacs;Username=pacs;Password=… |
TrustServerCertificate=Trueaccepts the server's certificate without checking it. Use it only for a self-signed certificate. If your servers trust the certificate, useEncrypt=Truewithout it.- With Windows authentication the service connects as the computer account (
DOMAIN\PACSSERVER$), so create the SQL login for that account. - The connection string is stored encrypted with Windows DPAPI (machine scope) and can be read only on this server. If you move to a new server, enter it again there.
- The account needs rights to create and change tables and indexes during setup and upgrades, and read, insert, update and delete on the PACS tables in normal running. Create the database empty first, so that the account does not need server-wide rights.
More on database accounts and timeouts is in the Admin guide.
AE title, IP and port
| Setting | Default | Meaning |
|---|---|---|
| AE title | PROLOGIC_PACS | The name modalities and other PACS use to call this PACS. Up to 16 characters, case-sensitive. |
| Port | 11112 | TCP port for incoming DICOM associations. 104 is the classic port; many hospitals use 11112. |
| Listen address | 0.0.0.0 | All network interfaces. Enter one local IP address to listen on one network card only. |
| Require called AE match | on | Refuses senders that call a different AE title. Turn it off only if old devices send a wrong called AE. |
| Allowed calling AE titles | empty (any) | When filled, only these devices (by their own AE title) may connect. |
Every device that sends to this PACS must be configured with this PACS's AE title, IP address and port. Most devices must also be added on the PACS side: as a destination if they retrieve with C-MOVE, and in the allowed list if you use one.
Firewall
The wizard's firewall button adds the inbound rule "PrologicSign PACS - DICOM TCP port", for Domain and Private networks only, after asking you. To add a rule by hand, run this in an administrator PowerShell:
New-NetFirewallRule -DisplayName "PrologicSign PACS (DICOM)" -Direction Inbound -Protocol TCP -LocalPort 11112 -Action Allow -Profile Domain,Private
# Better: allow only your modality and PACS subnets by adding, for example:
# -RemoteAddress 10.20.0.0/16,10.30.5.0/24
Outbound connections are allowed by default on Windows. Check any network firewall between the servers in both directions. To see whether the port is listening:
Get-NetTCPConnection -LocalPort 11112 -State Listen
Your first study
This needs an active key: without one the PACS answers C-ECHO but receives nothing (see License and evaluation). Use test data, not patient studies.
- On the sending device or DICOM tool, enter this PACS's AE title, IP address and port.
- From that device, send a C-ECHO. It proves the network path and the AE titles are right.
- Send a study. The Images light on the admin app's Health page turns green.
- Open the Studies page. The study appears with its patient, date, modality and image counts. Select it to see series and thumbnails.
- With a product that includes the viewer, choose Open in viewer.
To send onward, add a node on the Destinations page and press Test. If something does not arrive, see Troubleshooting.
License and evaluation
A license key is needed from day one.
- To evaluate: get a free Developer key from dicomkit.plogic.dev. It has all the features of the product, on 1 computer, for 7 days. You can renew it once. It is not for production.
- For production: buy a Pro or Enterprise key.
- With no active key: the PACS answers C-ECHO only and receives nothing; images already stored stay on disk. The admin app opens the License page. On a viewer-only computer, the viewer opens local files, folders and CDs in basic mode, with an Activate... button.
To activate online or offline, see Licensing.
Upgrade
Run the newer installer over the installed version. It replaces the program files only: settings, database, studies and license are kept. Database changes are applied when the service starts. The installed product is kept; to change the product, uninstall and then install again.
The admin app can also offer a new version ("New version available") and install it for you. Your data is kept in the same way.
Uninstall
Uninstall keeps the data by default, so a later install finds your studies again. To delete the data as well, either tick "Also delete all PACS data" on the Remove page (Apps & Features › Change › Remove), or run:
msiexec /x PrologicSignPACS-1.0.0-x64.msi REMOVEDATA=1
This deletes only C:\ProgramData\PrologicSign\PACS. A storage folder elsewhere and an external database server are never touched. It cannot be undone, so back up first if you may need the data.
Retiring this computer? Free its seat in the customer portal before you activate the key on a new one.
Products and editions
PrologicSign PACS is sold as six products, each in three editions: Developer, Pro and Enterprise. The product decides which programs and modules you get. The edition decides which features of those modules are switched on. All six products run on Windows and come from one installer.
The six products
| Product | Code | Modules | What it is | What is installed |
|---|---|---|---|---|
| PrologicSign PACS | pacs | PACS | The archive: receive and store images, a study database, query/retrieve for workstations, and manual send to another PACS. | Service and admin app |
| PrologicSign Router | router | Router | Receive, route, morph and transcode, forward, then delete. A DICOM router without a long-term archive. | Service and admin app |
| PrologicSign Viewer | viewer | Viewer | A standalone viewer: local files, and any PACS over DICOM query/retrieve. | Viewer only |
| PrologicSign PACS + Viewer | pacs-viewer | PACS, Viewer | The archive with the viewer. | Service, admin app and viewer |
| PrologicSign PACS + Router | pacs-router | PACS, Router | The archive with the router: images are kept and also auto-routed. | Service and admin app |
| PrologicSign PACS + Router + Viewer | pacs-router-viewer | PACS, Router, Viewer | All in one, on one computer. | Service, admin app and viewer |
The installer has a Product page. A silent install passes PRODUCT=<code>. The license, not the installer, decides what runs: a page or program that is installed but not in your license shows "Not in your product".
The three editions
| Feature | Comes with module | Developer | Pro | Enterprise |
|---|---|---|---|---|
| Receive and store images (C-STORE, C-ECHO) | PACS or Router | Yes | Yes | Yes |
| Query/retrieve by other systems (C-FIND, C-MOVE, C-GET) | PACS | Yes | Yes | Yes |
| Manual send to another PACS | PACS or Router | Yes | Yes | Yes |
| Auto-routing rules, persistent queue, retry and replay | Router | Yes | Yes | Yes |
| Tag morphing (IDs, accession, institution) | Router | Yes | Yes | Yes |
| Transcoding when a destination cannot take the original syntax | PACS or Router | Yes | Yes | Yes |
| Basic viewer | Viewer | Full viewer instead | Yes | Full viewer instead |
| Full viewer | Viewer | Yes | No | Yes |
| Reporting: create reports, PDF, e-mail through your SMTP server | PACS | Yes | No | Yes |
| Cloud export: Amazon S3, Azure Blob, Google Drive | PACS or Router | Yes | No | Yes |
| Your own name and logo (white label) | Any | Preview only | Yes | Yes |
| Priority support | Any | No | No | Yes |
| Machines per plan (default) | Any | 1 | 1 | 1 |
| Term | Any | 7 days, renewable once (14 days in all) | One-year subscription with updates | One-year subscription with updates |
| Production use | Any | No: evaluation and testing only | Yes | Yes |
A feature only works if your product has the module it comes with. For example, Enterprise does not add a viewer to the PACS product: for that, choose a product with the Viewer module. A custom name and logo on a Pro or Enterprise license still shows "Powered by PrologicSign" on the About and license page, with the copyright notices and license terms.
The lists above are the seeded plans. Plans can be changed in the license server's admin, and each computer's license is what counts. Plans that are not published yet show "coming soon" on the Pricing page; contact us about those.
Feature by product
Each cell shows the lowest edition that includes the feature in that product. A Developer key has every feature of its product, for its term.
| Feature | PACS | Router | Viewer | PACS + Viewer | PACS + Router | PACS + Router + Viewer |
|---|---|---|---|---|---|---|
| Long-term archive, retention, import | Pro | No | No | Pro | Pro | Pro |
| Receive and store | Pro | Pro (in transit only) | No | Pro | Pro | Pro |
| Query/retrieve by other systems | Pro | No | No | Pro | Pro | Pro |
| Manual send | Pro | Pro | No | Pro | Pro | Pro |
| Auto-routing | No | Pro | No | No | Pro | Pro |
| Tag morphing | No | Pro | No | No | Pro | Pro |
| Transcoding | Pro | Pro | No | Pro | Pro | Pro |
| Basic viewer | No | No | Pro | Pro | No | Pro |
| Full viewer | No | No | Enterprise | Enterprise | No | Enterprise |
| Reporting | Enterprise | No | No | Enterprise | Enterprise | Enterprise |
| Cloud export | Enterprise | Enterprise | No | Enterprise | Enterprise | Enterprise |
Basic viewer and full viewer
| Basic viewer | Full viewer | |
|---|---|---|
| Largest layout | 1 x 2 | 5 x 5 |
| Cine | No | Yes |
| Measurement tools | Length | All tools, including length, angle, Cobb angle, pixel probe, rectangle, ellipse, freehand and text |
| Measurements kept between sessions | No: they last while the image is open | Yes |
| PDF report of the images on screen | No | Yes |
Router mode (Router without PACS)
The Router product has no archive. It runs in router mode, enforced by the service:
- Forward, then delete. Every routed image is deleted once all its forwards have succeeded, whatever the routing rule says.
- Safety buffer. In the
RouterModesection ofsettings.json:SentRetentionDays(default 0, delete at once),KeepFailedImages(default true: an image whose forward failed for good stays until it is replayed and sent, or deleted by hand),FailedRetentionDays(default 30, used only when failed images are not kept),SweepIntervalMinutes(default 15). - Images that match no rule are kept and appear in the transit list.
- No query/retrieve. Other systems cannot search or retrieve from a router. The Studies page is the transit queue.
- Setup. The storage folder is called the transit folder, and the wizard needs at least one forward destination. Finish creates the rule "Forward everything" to those destinations without a local copy, and switches routing on.
- When a paid license ends or cannot check in, the router keeps working for 7 more days (for a missed check-in, 7 days after the offline grace). After that it refuses new images and still forwards what is in its queue until the queue is empty. A license revoked by the server refuses new images at once. An ended Developer router key stops everything.
With PACS + Router, or the all-in-one, router mode does not apply: the archive keeps images as your routing rules and retention settings say. Routing rules, morph profiles and the router queue need the Router module; without it, routing rules are not applied and the admin app shows those pages as "Not in your product".
Viewer alone
The Viewer product installs the viewer only: no service, no admin app and no setup wizard. It activates in the viewer itself (Activate... in the toolbar), online with the key, or offline with a request file and the license file from the portal. Activating needs administrator rights once.
| State | What works |
|---|---|
| Not activated, or license ended | Basic viewer for local files, folders, DICOMDIR and CDs, with a banner and Activate... |
| Pro | Basic viewer, plus Other PACS |
| Enterprise, Developer | Full viewer, plus Other PACS |
- Other PACS is a list of connections (name, AE title, host, port, calling AE title, C-GET or C-MOVE) to search any vendor's PACS with C-FIND at study and series level.
- Retrieve uses C-GET (preferred, no inbound port) or C-MOVE. For C-MOVE the viewer opens its own small C-STORE receiver on a configurable port, default 11113, only while a move runs; the other PACS must know the viewer's AE title, address and port.
- Cache. Retrieved studies go into a bounded cache, default 4096 MB. The least recently opened studies are removed first, and Clear cache empties it.
- Not available without a service: the study list of a PrologicSign PACS, writing reports, and the cloud buttons. Reporting and cloud export are not part of the Viewer product, also not in Enterprise.
- Not done yet: DICOM TLS. The TLS switches are disabled in 1.0.0.
One license key per computer
- One key unlocks every module of its product. The service, the admin app and the viewer on a computer share that one activation, so you never need a second key for the viewer or the router.
- A move to another product or edition keeps the same key. The change arrives at the next check-in, or at once with Check in now on the License page. A license on an offline computer needs a new license file.
- If the new product needs a program that is not installed yet (for example the viewer), uninstall and install again with the new product. A plain uninstall keeps the license and the data.
- Each license covers the number of machines in its plan, one by default. Free a machine in the customer portal before moving to a new computer.
Evaluating: free Developer keys
A key is needed from day one. To evaluate a product, get a free Developer key from dicomkit.plogic.dev: all the features of that product, on 1 computer, for 7 days, renewable once, not for production. Then buy a Pro or Enterprise key.
With no active key the service answers C-ECHO only and receives nothing, images already stored stay on disk, and the admin app opens the License page. On a viewer-only computer the viewer opens local files in basic mode, with Activate...
Administrator guide
Day-to-day running of PrologicSign PACS 1.0.0 on a Windows server: connecting devices, storage, backup, watching the service, mail and branding. Installation and the setup wizard are on the install page.
Everything here is done in the PrologicSign PACS Admin app, which asks for administrator rights when it starts. Where a setting has no page in the app, this guide says so and shows the entry in C:\ProgramData\PrologicSign\PACS\settings.json. Stop the service before you edit that file by hand.
Network: AE title, port and firewall
These are on the Settings page, under This PACS on the network.
| Setting | Default | Meaning |
|---|---|---|
| AE title | PROLOGIC_PACS | The name modalities and other PACS use to call this PACS. Up to 16 characters, case-sensitive. |
| Port | 11112 | TCP port for incoming DICOM connections. 104 is the classic port; many hospitals use 11112. |
| Listen on | 0.0.0.0 | All network cards. Enter one local IP address to listen on one card only. |
| Called AE check | on | Refuses senders that call a different AE title. Turn it off only if an old device sends a wrong called AE title. |
| Allowed calling AE titles | empty (any) | When filled, only devices with these AE titles may connect. |
Every device that sends to this PACS needs this PACS's AE title, IP address and port. A device that retrieves with C-MOVE must also be added here as a destination.
The setup wizard can add the Windows Firewall rule, for Domain and Private networks only. To add it by hand, in an administrator PowerShell:
New-NetFirewallRule -DisplayName "PrologicSign PACS (DICOM)" -Direction Inbound -Protocol TCP -LocalPort 11112 `
-Action Allow -Profile Domain,Private
# Better: allow only your modality and PACS subnets
# -RemoteAddress 10.20.0.0/16,10.30.5.0/24
Windows allows outbound connections by default; check any network firewall between the servers in both directions. To see whether the port is listening: Get-NetTCPConnection -LocalPort 11112 -State Listen.
Saving a changed AE title, port, listen address, AE check or transfer syntax list restarts the DICOM listener, and the page asks you to confirm first. Devices retry during the restart. Destinations, the duplicate policy and a storage folder change take effect without restarting it.
Destinations and C-ECHO tests
A destination is another DICOM node this PACS sends to. The same list decides who may receive a C-MOVE: the PACS only sends to the address configured here, never to an address taken from the request.
| Field | Meaning |
|---|---|
| Name | Your label, for example "Main PACS". |
| Host | IP address or DNS name. |
| Port | The remote node's DICOM port (default 104). |
| Remote AE title | Exactly as configured on the remote node. Up to 16 characters, no backslash. |
| Calling AE title | Optional. The AE title this PACS presents to that node; empty uses this PACS's own. Set it when the remote side only accepts a particular name. |
| Security | Use TLS. Disabled in this release (see below). |
On the remote node, register this PACS (AE title, IP address and port) as a known node. Most PACS refuse unknown callers.
Test opens a connection and sends a C-ECHO:
| Result | Meaning and fix |
|---|---|
| C-ECHO succeeded | The destination is reachable and accepts our AE title. |
| Connection refused or timed out | Wrong host or port, the remote service is stopped, or a firewall blocks it. Test from the PACS server: Test-NetConnection host -Port 104. |
| Association rejected | The remote side does not know our calling AE title, or the called AE title is wrong. Check both on both sides. |
| C-ECHO returned status 0x.... | The connection worked but the remote side refused the echo. See its logs. |
DICOM TLS: not in this release
The app shows the controls, a Secure DICOM (TLS) section on the Settings page and a Use TLS switch on each destination, but they are disabled in 1.0.0 and cannot be turned on.
Do not turn TLS on by hand in settings.json either. Both ports start together or not at all, and TLS cannot start in this release, so the PACS would stop listening on the normal port as well.
Until TLS is available, keep DICOM on a trusted network, restrict the port with firewall rules, and use a VPN for any link that leaves your network.
The TLS code is written and tested against a DicomKit 1.0.1 preview, and is designed for a second port (default 2762) beside the plain one, TLS 1.2 and 1.3, a server certificate from the Windows store or a .pfx file, optional client certificates, and per-destination settings. None of it is active in 1.0.0.
Transfer syntaxes
The transfer syntax is how image data is encoded. It is agreed per connection. By default this PACS accepts:
| Transfer syntax | UID |
|---|---|
| Explicit VR Little Endian | 1.2.840.10008.1.2.1 |
| Implicit VR Little Endian | 1.2.840.10008.1.2 |
| JPEG Lossless (first-order prediction) | 1.2.840.10008.1.2.4.70 |
| JPEG Baseline (lossy 8-bit) | 1.2.840.10008.1.2.4.50 |
| JPEG 2000 Lossless | 1.2.840.10008.1.2.4.90 |
| JPEG 2000 | 1.2.840.10008.1.2.4.91 |
| JPEG-LS Lossless | 1.2.840.10008.1.2.4.80 |
| RLE Lossless | 1.2.840.10008.1.2.5 |
| HTJ2K Lossless | 1.2.840.10008.1.2.4.201 |
Any storage SOP class is accepted. Images are stored exactly as received, with no decompression or recompression. A device that offers only a syntax missing from the list has that part of its request refused; configure it to also offer Explicit VR Little Endian.
On the Settings page, under Accepted transfer syntaxes, you can tick every syntax DicomKit knows, which adds JPEG Extended, JPEG Lossless (process 14), JPEG-LS near-lossless and the other HTJ2K variants. Saving restarts the DICOM listener.
| Sending | What is sent |
|---|---|
| Manual send | Each image as stored if the destination accepts that syntax. Otherwise it is decompressed to Explicit VR Little Endian and sent. |
| C-MOVE to a destination | The same. The PACS first asks the destination which syntaxes it accepts (remembered for 5 minutes). |
| C-GET | As stored. The requester must accept the stored syntax. |
Decompression loses nothing from the stored data, but a lossy JPEG image stays lossy: it is decompressed to the pixels it holds. This release decompresses only; it does not recompress an image to another compressed syntax.
For a viewer that accepts compressed images but cannot display them, a destination can always be sent uncompressed. There is no switch for this on the Destinations page: set "SendUncompressed": true on that destination's entry in settings.json.
Storage layout
C:\ProgramData\PrologicSign\PACS\
settings.json all settings (passwords and connection strings encrypted)
pacs.db built-in database (with pacs.db-wal, pacs.db-shm)
logs\ service logs
health\ health.json, the latest health snapshot
support\ support bundles (newest 5)
branding\ your logo and icon (white label)
spool\ large incoming data sets while they are received
studies\ default storage folder
<StudyInstanceUID>\
<SeriesInstanceUID>\
<SOPInstanceUID>.dcm
.incoming\ files being written; renamed into place when complete
- Each file is a standard DICOM Part 10 file, exactly as received. Any DICOM tool can open it.
- A half-received image is never visible. Leftover
.partialfiles in.incoming\after a crash are safe to delete while the service is stopped. - Free space: incoming images are refused when free space drops below the Minimum free space on the Settings page (default 2,048 MB). Senders are told to retry.
- The same image received twice: by default the new copy replaces the stored file. The other choice keeps the stored file and discards the new copy. Both are reported to the sender as success and written to the activity log.
- A corrected resend (same SOP Instance UID with a different Study or Series UID) moves the image to its new study and series.
- Folders the service creates for patient data are limited to SYSTEM and Administrators. A storage folder that already exists keeps its permissions, so set them yourself.
- The database stores each file's path relative to the storage folder, so moving the folder needs no database change.
Moving the storage folder
For example, to a new data disk E:\PacsStudies. The service never moves images itself; you copy them. This method has no gap, because the service is stopped for the whole move:
- Stop the service:
Stop-Service PrologicSignPacs. Devices queue their images and retry. - Copy with permissions and time stamps:
robocopy C:\ProgramData\PrologicSign\PACS\studies E:\PacsStudies /E /COPY:DATS /DCOPY:DAT /R:1 /W:1 /XD .incoming /LOG:C:\Temp\pacs-move.log - Check the log shows 0 failed files, and compare the file count and size of both folders.
- Make sure SYSTEM and Administrators have full control on the new folder and ordinary users have no access. It holds patient images.
- In
settings.json, setStorage.Directoryto the new folder, with doubled backslashes:"Directory": "E:\\PacsStudies". - Start the service:
Start-Service PrologicSignPacs. Open a study or run a C-MOVE from a workstation to confirm images are found. - Delete the old folder only after a backup has run on the new location.
From the Settings page instead. With the service running, you can change Storage folder and save, and it applies at once. To protect you, the change is accepted only if the index is empty or a sample of the oldest and newest 50 index entries is found in the new folder. Otherwise the PACS keeps the current folder and tells you why. Images received after your copy still land in the old folder, so run the same robocopy command once more after saving.
Network shares work, but local disks or a SAN volume are preferred. The service runs as LocalSystem and reaches a share as the computer account (DOMAIN\PACSSERVER$), so grant that account access. The free-space check cannot read a share, so a full share shows up as write failures instead of a clean "storage full" refusal.
Backup and restore
Back up three things together: the database, the storage folder and settings.json, plus the branding\ folder if you use your own logo. The index and the files must match: an index entry whose file is missing makes C-MOVE fail for that image.
The PACS has no built-in backup. Use your own backup tools, as follows.
Order
Best, with a short maintenance window:
- Stop the service:
Stop-Service PrologicSignPacs. Devices queue their images and retry later. - Back up the database, then the storage folder and
settings.json. - Start the service:
Start-Service PrologicSignPacs.
Without stopping, back up the database first, then the storage folder. Images arriving in between are then in the file backup but not the index backup; the sender can resend them. The opposite order gives index entries without files, which is the harmful case.
Exclude studies\.incoming\, studies\.deleting\ and spool\ from the file backup.
Database backup per engine
| Engine | Backup |
|---|---|
| Built-in (SQLite) | With the service stopped, copy pacs.db. While it runs, never copy the file alone: use the sqlite3 command-line tool from sqlite.org (not installed with the PACS), sqlite3 pacs.db ".backup 'D:\Backup\pacs.db'". Never delete pacs.db-wal or pacs.db-shm while the service runs. |
| SQL Server | Your normal full and log backups. |
| MySQL / MariaDB | mysqldump --single-transaction prologic_pacs or your existing tooling. |
| PostgreSQL | pg_dump -Fc prologic_pacs or your existing tooling. |
Restore
- Stop the service.
- Restore the database, the storage folder and
settings.jsonfrom the same backup set. - On a different server, saved secrets cannot be read, because they are encrypted for the original machine. Enter them again: the database connection string (the built-in database needs none), the SMTP password and any cloud target credentials. Each license also covers one machine, so free its seat in the customer portal and activate it on the new server.
- Start the service, then check the Health page, the activity log and a C-FIND from a workstation. Retrieve a study with C-MOVE to confirm its files are there.
If a device still holds images that are missing after a restore, resend them from that device. The index check that finds such gaps has no page in the admin app in this release.
The Health page
Health answers two questions: is the PACS receiving images, and is anything wrong? It updates every 5 seconds. The headline reads like "Last image received 2 min ago from CT1". A status strip shows the same summary above every page of the app.
There are six lights, each with plain-language reasons. The overall state is the worst light.
| Light | Red | Amber |
|---|---|---|
| Service | The service runs but could not start fully | Setup not finished; memory above the watchdog limit |
| Listener | A configured port is not listening | 80% of the connection limit in use (default limit 128 per port); 10 or more rejected connections in 10 minutes |
| Database | Down. New images are refused and devices retry | Connecting; a simple query took over 1 second |
| Storage | Free space below the limit, so images are refused | Free space below the email-alert level or unknown; the limit will be reached within 48 hours at the current rate |
| Images arriving | 5 or more images refused in 10 minutes and at least half of all attempts; an image stuck for 60 seconds | Some images refused; an image stuck for 20 seconds; no images during an expected window (below) |
| Queue | Routed images failed permanently (replay them on Router queue) | Destinations failing, images being retried |
A Queue light reading "Routing not in use" is normal when you have no routing rules.
The page also shows 24-hour graphs of images per hour and memory, images per sending device, the DICOM listeners and recent warnings and errors. Copy status puts a text summary on the clipboard for a ticket.
For monitoring tools: C:\ProgramData\PrologicSign\PACS\health\health.json is the latest snapshot, rewritten every sample. A read-only named pipe, \\.\pipe\PrologicSign.PACS.Status.v1, gives any local user one line of JSON with the lights, headline, last image time and images in the last hour, and no patient data. It is not reachable over the network. Fatal errors also go to the Windows Application event log, source "PrologicSign PACS", event ID 1000.
Memory: if the service stays above its limit (a quarter of the RAM, at least 1 GB, at most 8 GB) for 5 minutes, it logs a warning, raises the memory alert and frees memory. If that is not enough, it restarts its DICOM listener at a moment with no images being received. It never cuts off an image in progress: if no quiet moment comes, the restart is postponed.
The "images not arriving" alert
The Images arriving light turns amber when a device goes quiet during hours you expect work. By default that is Monday to Friday, 07:00 to 20:00 server local time, at least one image every 30 minutes from any device. If email alerts are on you also get a mail such as "No images received from CT1 for 45 min", and a "Resolved" mail when images come back or the window ends.
Change the windows in settings.json; there is no page for them in this release. A clinic that closes on some days, or does not reach one image per 30 minutes, should change this or it will see false warnings.
"Health": {
"ImageArrival": {
"Enabled": true,
"SendAlert": true,
"Windows": [
{
"Name": "CT1 day shift",
"Days": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ],
"Start": "07:00",
"End": "20:00",
"MaxQuietMinutes": 45,
"CallingAeTitle": "CT1"
}
]
}
}
- You can list several windows, for example one per modality. Leave out
CallingAeTitleto count images from any device. - A window may cross midnight (
22:00to06:00); it belongs to the day it starts on. The same start and end time means the whole day. - Quiet time is counted from the last matching image, but never from before the window opened or the service started.
"Enabled": falseturns the warning off; the light then only shows the last image time.
Logs and the support bundle
| Log | Where | What |
|---|---|---|
| Activity log | Activity log page (database table AuditLog) | One line per operation: receive refusals and duplicates (successful stores are counted, not logged one by one), send, query, retrieve, settings, security. Filter it and export to CSV. Kept 365 days by default (AuditRetention.KeepDays in settings.json, 1 to 3,650). |
| Service log | Logs page, and logs\service-YYYYMMDD.log plus a .clef file with the same entries as JSON | The technical log: start-up, connections, database retries, errors. New files each day or at 50 MB; files older than 31 days are deleted. |
| Windows event log | Application log, source "PrologicSign PACS", event ID 1000 | Fatal errors only. Point your monitoring here. |
The Logs page filters by level, date, AE title, connection id and text, has a live tail that refreshes every 2 seconds, and exports what is shown. Follow this connection shows one connection's whole journey, from the device connecting to the images being indexed.
For more detail, set Logging.MinimumLevel or Logging.DicomTrace in settings.json. They are read when the service starts, and trace output is verbose, so turn it off afterwards.
Patient names are never written to the service log, but UIDs and AE titles are. The activity log holds AE titles and UIDs too, and the Studies page shows patient names. Treat all of these as patient data.
Support bundle
Create support bundle on the Health page makes a zip for PrologicSign support, kept in C:\ProgramData\PrologicSign\PACS\support (newest 5). It contains:
- the logs of the last 7 days, up to 300 MB;
- the health snapshot;
settings.jsonwith every password, protected value, token and key replaced by "(removed)";- versions and environment details (product, DicomKit, .NET, Windows, memory, disks, time zone).
It contains no images. It does contain the UIDs and AE titles in the logs, so handle it under your own data rules.
Email (SMTP) and alerts
You enter your mail server once, on the Email (SMTP) page. It is used for emailing studies, for reports (Enterprise) and for admin alerts. The PACS does not provide a mail service of its own.
| Field | Notes |
|---|---|
| SMTP server, Port | Host name or IP address. Usually 587, 465 or 25, depending on security. |
| Security | STARTTLS (recommended, the default); SSL/TLS from the start; STARTTLS when the server offers it; or None, only for a relay on a trusted hospital network. |
| User name, Password | Leave empty if the server needs no sign-in. The password is stored encrypted for this machine and never shown again; leave the box empty to keep it. |
| From address, From name | The from address is required when a mail server is set. |
| Largest attachments | Default 20 MB, at most 100. Most mail servers refuse more than 20 to 25 MB. |
| Send test email | Sends a short message using the settings on the page, saved or not. |
Email alerts
Alerts are off until you switch on Send email alerts on the Email alerts page and add recipients. A problem is checked every 60 seconds. While it lasts, the same alert repeats at most once an hour, and a "Resolved" mail follows when it clears. All alert mail is capped at 30 per hour. The subject carries your site name (default: the computer name).
| Alert | Default |
|---|---|
| Service stopped unexpectedly (found at the next start) | on |
| Service started or stopped normally | off |
| Disk space low | on: below 20 GB or below 5% free |
| Database unreachable | on: after 5 minutes |
| A routing destination failing | on: after 15 minutes |
| Routed images given up after every retry | on |
| One device refused repeatedly | on: 10 times in 10 minutes |
| A TLS certificate expiring | on: 30 days before. Has nothing to watch in this release, as TLS is not active. |
| Images not arriving | on (see above) |
| Memory above the watchdog limit | on |
| License conditions that change whether images are accepted | always on while alerts are enabled |
White label
On the Branding page you can show your own name, logo and colour in the admin app, the setup wizard, the viewer, PDF reports and alert emails. Every field is optional; an empty field keeps the PrologicSign default.
| Field | Used for | Limit |
|---|---|---|
| Product name | Window titles, sidebar, reports and emails | 60 characters |
| Company name | Under the logo, About, mail signatures | 60 characters |
| Logo | Sidebar, About, viewer, PDF reports | A picture up to 5 MB; converted to PNG and scaled to fit 512 pixels |
| Small icon | Window and taskbar icon | Stored as a PNG up to 256 pixels |
| Accent colour | Buttons, selected page, highlights | Hex, such as #1F5FD1 |
| Support contact, Support link | About and alert emails. The link is https:// or mailto: | 160 and 300 characters |
| Report footer | One line at the bottom of every PDF report page | 200 characters |
- Which plans: your branding is shown with an active Pro or Enterprise license. With a Developer key you can fill in the page and preview it, but the apps show PrologicSign branding. If the license stops being active, PrologicSign branding returns; your saved branding is kept.
- What stays: the About and license page keeps "Powered by PrologicSign", the copyright notices and the license terms.
- What does not change: the installer, the Windows service name, the program and data folder names, and the Start menu entries still say PrologicSign.
- Reset to PrologicSign removes all of your branding.
- Backups: the logo and icon are PNG files in the
branding\folder, so include it in your backups.
PrologicSign Viewer
The PrologicSign Viewer is a Windows desktop app for DICOM images. It opens studies from your PrologicSign PACS, from files, folders and CDs on the computer, and from other PACS systems over DICOM. The installer adds it to the Start menu and the desktop as PrologicSign Viewer on every product that includes the Viewer module.
Basic viewer and full viewer
Your license decides what the viewer can do. The edition is shown at the right of the second toolbar.
- Pro: the basic viewer.
- Enterprise and Developer: the full viewer.
- Not activated (no PACS or Router service, and no active license on this computer): the basic viewer for files, folders and CDs on this computer, with an Activate... button on the toolbar. Other PACS is not available until the computer is activated.
- A license without the Viewer module: the app shows "Your license doesn't include the viewer" and nothing else.
| Feature | Basic viewer (Pro) | Full viewer (Enterprise, Developer) |
|---|---|---|
| PACS study list, Open in viewer, files, folders, CD / DICOMDIR | Yes | Yes |
| Window/level, presets, zoom, pan, rotate, flip, invert, pixel-exact | Yes | Yes |
| Stepping through images and frames | Yes | Yes |
| Layouts | 1x1 and 1x2 | 1x1, 1x2, 2x2, 3x3 and custom up to 5x5 |
| Cine | No | Yes, 1 to 60 frames per second |
| Measurement tools | Length | Length, Angle, Cobb, Probe, Rect ROI, Ellipse ROI, Freehand ROI, Text |
| Select, move, reshape and delete measurements | Yes | Yes |
| Measurements kept | In memory only: gone when the viewer closes | Saved on this computer, shown again when the image is reopened |
| Save image (PNG, JPEG), export series as DICOM | Yes | Yes |
| Download and Email (studies in the PACS) | Yes | Yes |
| PDF report of the images on screen | No | Yes |
| Report (write the study report) | No | Yes, when the license includes reporting |
| Other PACS (search and retrieve) | Yes, with a license | Yes |
| Open from cloud, Send to cloud | No | Yes, with a PACS or Router service on this computer whose license includes cloud export |
Anything your license does not include stays visible with a lock and the tooltip "Available in Enterprise". Choosing it only shows that message in the status line.
On a computer with a PACS or Router service the viewer uses the service's license, so no extra key is needed. Until a key is active there, the viewer shows "Your license doesn't include the viewer": activate the key on the License page of the admin app. If the service cannot be reached, the viewer says so in a banner and falls back to the license file on the computer or to the basic viewer.
Activating a viewer-only computer
Press Activate... on the toolbar and enter your PrologicSign Viewer key (one key per computer). Without internet, save an activation request to a file, upload it in the customer portal, and import the license file you get back. Activating needs administrator rights once: if you are told so, right-click the viewer, choose Run as administrator and activate again. The viewer then reopens with your license.
The window
- First toolbar: open, PACS list, Other PACS, cloud, layout, left-drag tool, window presets, zoom and orientation, cine, shortcuts.
- Second toolbar: measurement tools, save and export, Download, Email, Report, and your edition.
- PACS studies panel (left): the study search. The toolbar's PACS studies button shows or hides it.
- Series strip: one thumbnail per series of what is open.
- Viewports: the images. The active viewport has a brighter border, and toolbar actions and keys apply to it.
- Status line (bottom): what the viewer is doing, and the window, zoom and pixel value of the active viewport.
Each viewport shows the DICOM details in its corners: patient (top left), study (top right), modality, series, image and frame number (bottom left), and pixel value under the mouse, window, zoom and orientation (bottom right).
Opening studies from the PACS
From the PACS studies panel
- Enter any of patient name (part of the name;
*and?are wildcards), patient ID, accession, modality and a date range. Today sets both dates to today and Clear empties the fields. - Press Search. With every field empty you get the newest studies. The list shows the first 100 matches; narrow the search to see others.
- Double-click a study, or select it and press Open.
Open in viewer, from the admin app
On the Studies page of the admin app:
- the Open in viewer button opens the focused study at the series and image shown in the details panel;
- double-click a study, or right-click it and choose Open in viewer, for the whole study;
- double-click a series, or right-click it and choose Open this series in the viewer;
- double-click an image thumbnail to go to that image.
If a viewer is already open for your Windows user, it comes to the front and shows the study, so you do not collect windows. If the requested series or image is not in the study, the first series is shown and the status line says why.
What the PACS list needs
- The same computer as the PACS. The viewer reads the images directly from the PACS storage folder. On any other computer, use Other PACS to retrieve studies over DICOM.
- Administrator rights. Only Administrators and SYSTEM may talk to the PACS service, and the storage folder is normally restricted the same way. On a computer with a PACS or Router service the viewer therefore asks for administrator rights when it starts (a Windows User Account Control prompt). Answer Yes, or the list cannot reach the service.
Local files, folders and CDs
- Open files (Ctrl+O): pick one or more DICOM files. The dialog lists
.dcmand.dicom; choose All files for files without an extension. - Open folder (Ctrl+Shift+O): every DICOM image in the folder and its subfolders.
- CD, DVD or USB from another system: use Open folder on the drive, or Open files with All files and pick the
DICOMDIRfile. - Drag and drop: drop files or folders from Windows Explorer onto a viewport.
- Command line:
Prologic.Pacs.Viewer.exe file1.dcm folder2.
Each open replaces what was on screen. The viewer sorts the images into series by their DICOM headers, so file names and folder layout do not matter. Within a series the order is by instance number, then file name.
- A DICOMDIR is used only to find the folder: the viewer reads every image in the folder that holds it and below, and does not read the index itself.
- At most 20,000 files are read per open; the status line tells you when that limit was reached.
- Files that are not DICOM images are skipped and counted in the status line. DICOM files without pixels, such as reports and presentation states, are left out.
Demo mode
"C:\Program Files\PrologicSign\PACS\Viewer\Prologic.Pacs.Viewer.exe" --demo starts the full viewer on synthetic images of made-up patients. It needs no service and no license.
Other PACS: search and retrieve from any PACS
The Other PACS button on the toolbar opens a window that searches any DICOM PACS and retrieves studies to this computer. It works with or without a PrologicSign PACS service here.
- Press Add and fill in a name, the PACS AE title, its host name or IP address, and its port. Our AE title can stay empty to use the viewer AE title. Press Save.
- Press Test to send a DICOM echo (C-ECHO).
- Enter patient name, ID, accession, modality or dates, and press Search (C-FIND). The first 500 matches are shown.
- Select a study to see its series. Press Retrieve and open study or, for one series, Retrieve and open series.
The other PACS must allow this computer to query and retrieve; add the viewer's AE title there if it keeps a list of allowed callers.
| Setting | Default | Meaning |
|---|---|---|
| Retrieve method | C-GET | C-GET brings the images back on the same connection and needs no inbound port. Tick Retrieve with C-MOVE for a PACS that only supports C-MOVE. |
| Viewer AE title | PROLOGIC_VIEWER | The AE title used unless a connection sets its own (1 to 16 characters, no backslash). |
| C-MOVE receive port | 11113 | The viewer listens on this port only while a C-MOVE runs. The other PACS must know the viewer's AE title, this computer's address and this port, and the port must be open in the firewall. |
| Cache limit | 4096 MB (minimum 100) | After each retrieve, the least recently opened studies are removed until the cache is under the limit. The study just retrieved is always kept. A changed limit takes effect the next time the viewer starts. |
- Retrieved studies stay in
%LocalAppData%\PrologicSign\Viewer\Cacheuntil the limit removes them. Clear cache deletes them all. They are not added to your PACS. - Connections are saved for each Windows user in
%LocalAppData%\PrologicSign\Viewer\pacs-connections.json. They hold no passwords. - DICOM over TLS is not available in this release. The switch is disabled in 1.0.0.
Layouts and series
- Press 1x1, 1x2, 2x2 or 3x3 on the toolbar (Ctrl+1 to Ctrl+4). The numbers are rows x columns.
- Full viewer: type rows and columns (1 to 5 each) in the two boxes and press the check mark.
- Existing viewports keep their series; new ones get the next series not yet shown.
- Drag a series thumbnail onto a viewport, or double-click a thumbnail to show it in the active viewport.
- Double-click a viewport to show it alone; double-click again to go back.
- Click a viewport, or press Ctrl+Tab, to make it active.
Moving through images
The mouse wheel or the arrow keys step one image at a time. A multi-frame image counts each frame as a step. Page Up and Page Down jump 10; Home and End go to the first and last.
The Left drag list on the toolbar sets what the left mouse button does: Pan (the default), Zoom, WindowLevel or Scroll. The right and middle buttons do not change.
Window/level
- Right-drag in a viewport: horizontal movement changes the width, vertical movement changes the level.
- Presets: choose one from the Window list or press a function key. They are CT values in Hounsfield units and are of most use on CT.
- 0 or the toolbar's image-window button goes back to the window stored in the image.
- I inverts the grey scale.
| Key | Preset | Width | Level |
|---|---|---|---|
| F2 | Lung | 1500 | -600 |
| F3 | Bone | 2000 | 300 |
| F4 | Brain | 80 | 40 |
| F5 | Soft tissue | 400 | 50 |
| F6 | Mediastinum | 350 | 50 |
| F7 | Liver | 150 | 30 |
| F8 | Angio | 600 | 300 |
| F9 | Spine | 250 | 50 |
Zoom, orientation and display quality
- Zoom with Ctrl+wheel (around the mouse), Ctrl+left-drag, or + and -, from 2% to 4000%. Pan with the middle button.
- F fits the image to the viewport. 1 shows one image pixel per screen pixel.
- R and Shift+R rotate by 90 degrees; H and V flip.
- Esc resets the viewport: window, invert, rotation, flips and zoom. It also stops cine.
- P switches every viewport between smooth display (the default) and pixel-exact, where each screen pixel shows one stored pixel.
Images with non-square pixels are shown in their true proportions.
Measurements and annotations
Pick a tool under Measure on the second toolbar, then draw with the left mouse button. The tool stays selected so you can draw another. Off gives the left button back to the navigation tool.
| Tool | How to draw | Shows |
|---|---|---|
| Length | Drag, or click the two ends | Distance in mm, or in pixels without pixel spacing |
| Angle | Three points: end, vertex, end | Angle in degrees |
| Cobb | Two lines, two points each | Cobb angle in degrees |
| Probe | One click | Value at the point (HU for CT) and the stored value |
| Rect ROI, Ellipse ROI | Drag, or click two opposite corners | Area, mean, SD, min, max and pixel count |
| Freehand ROI | Press, draw the outline, release | The same as the other ROIs |
| Text | One click, then type | Your text on the image |
- Select: click a measurement to select it, drag a handle to reshape it, drag its body to move it. Delete removes the selected one.
- Esc abandons a drawing and leaves measuring. Press it again to reset the viewport.
- Measurements belong to one frame of one image.
Where the numbers come from
- Pixel Spacing in the image gives millimetres.
- Imager Pixel Spacing only also gives millimetres, with a warning that the size is measured at the detector and not corrected for magnification.
- No spacing: lengths and areas are in pixels, with a warning.
- Values use the image's rescale slope and intercept, and the Rescale Type as the unit (HU for CT when the type is missing).
- On colour images Probe gives no value and ROIs give only the area, with the message "Pixel values are not available for this image."
Where measurements are saved
In the full viewer each change is saved automatically to %LocalAppData%\PrologicSign\Viewer\Annotations, one file per image, and comes back when that image is opened again by the same Windows user on the same computer. Measurements are not written into the DICOM files, not stored in the PACS, and not sent with an export, Download or Email.
Cine
Full viewer. Space or the toolbar's play button plays the active viewport's series in a loop and stops it. The speed starts at 10 frames per second and can be 1 to 60: use the box on the toolbar, the slider that appears on the viewport while playing, or [ and ]. If images take longer to draw than the speed allows, frames are skipped rather than delayed. A series with one frame does not play.
Save, export and share
| Button | What you get | Good to know |
|---|---|---|
| Save image | The active viewport as PNG (lossless) or JPEG, at the window, zoom and orientation shown | The picture only: measurements and the corner text are not included. |
| Export DICOM | The active series copied unchanged to <folder>\DICOM\IM000001, IM000002 and so on | One series at a time. This release does not write a DICOMDIR, although the button's tooltip mentions one: open the exported folder rather than a DICOMDIR. |
| PDF report (full viewer) | A PDF with the patient and study header and the image of every viewport, captioned with its series and image number | Images are lossless and shown as on screen, without measurements. |
| Download | A copy made by the PACS service: JPG pictures or the original DICOM files, for the study or only the active series, with options to write patient details on the pictures or to anonymise | Only for studies stored in the PACS. Studies opened from disk are refused. |
| Sent by the PACS service: JPG pictures, DICOM files or both, zipped, with an anonymise option | Only for studies stored in the PACS, and email must be set up in the admin app. Do not put patient names in the subject. | |
| Report (full viewer) | Opens the report for the study, offering the image on screen as a key image | Needs a license that includes reporting; the button is disabled otherwise. |
Cloud: Open from cloud and Send to cloud (Enterprise)
These two toolbar buttons appear only when the PACS or Router service on this computer is reachable and its license includes cloud export (Enterprise and Developer). They do not appear on a viewer-only computer. An administrator first adds the cloud targets (Amazon S3, Azure Blob or Google Drive) in the admin app under Cloud targets. The service keeps the cloud credentials and the viewer never holds them.
Open from cloud
- Choose a cloud target, enter patient name, ID, accession, modality or dates if you want, and press Search. The first 500 matches are shown.
- For DICOM files that other software put in the target, enter a folder (or leave it empty for the whole target) and press Scan folder. Only their headers are read, and they are listed as Scanned.
- Double-click a study or press Open study. The first image of each series appears as soon as it has arrived, and the rest follows. Stop cancels.
Downloaded studies go to a cache in your Windows profile that only your Windows user can read. It is encrypted with Windows EFS where that is available; on Windows Home, FAT/exFAT or network drives it is not encrypted, but it is still restricted to you. By default the cache is emptied when the viewer closes. It is also capped at 5 GB and 7 days.
Send to cloud
Uploads the study on screen to a cloud target. The PACS service uploads it from its own storage, so the study must have been opened from the PACS list.
Keyboard and mouse shortcuts
F1 or the keyboard button on the toolbar shows this list in the app. Keys do nothing while you are typing in a box.
| Key | Action |
|---|---|
| Down or Right | Next image or frame |
| Up or Left | Previous image or frame |
| Page Down / Page Up | Forward / back 10 images |
| Home / End | First / last image |
| + / - (main keys or number pad) | Zoom in / out |
| F | Fit to viewport |
| 1 | Actual size (one image pixel per screen pixel) |
| R / Shift+R | Rotate 90 degrees right / left |
| H / V | Flip horizontal / vertical |
| I | Invert grey scale |
| P | Smooth / pixel-exact display |
| 0 | Window from the image |
| F2 to F9 | Window presets (see Window/level) |
| Space | Play / stop cine (full viewer) |
| ] / [ | Cine faster / slower (full viewer) |
| Esc | Stop measuring; otherwise reset the viewport |
| Delete | Delete the selected measurement |
| Ctrl+1 to Ctrl+4 | Layout 1x1, 1x2, 2x2, 3x3 |
| Ctrl+Tab | Next viewport |
| Ctrl+O | Open DICOM files |
| Ctrl+Shift+O | Open a folder |
| F1 | Show the shortcuts |
| Mouse | Action |
|---|---|
| Wheel | Scroll through images |
| Ctrl+wheel | Zoom around the mouse |
| Right drag | Window/level |
| Middle drag | Pan |
| Left drag | The tool chosen under Left drag, or the measurement tool |
| Ctrl+left drag | Zoom (when no measurement tool is on) |
| Double-click a viewport | 1x1 and back |
| Drag a series onto a viewport | Show that series there |
Not in this release
- Windows only.
- No multi-planar reconstruction (MPR), 3D or image fusion.
- No hanging protocols, and no linked scrolling between viewports.
- DICOM presentation states are not applied, and measurements are not saved as DICOM objects.
- No DICOM over TLS for Other PACS.
- No DICOMDIR is written on export.
- The PACS studies panel works only on the computer that runs the PACS.
PrologicSign Router
The Router receives DICOM images, decides with your rules where each one goes, and forwards it from a queue that survives restarts and outages. It can change header tags on the way, decompress for destinations that need it, and upload to cloud storage.
Which products include routing
| Product | How routing behaves |
|---|---|
| PrologicSign Router | Router mode: no archive. Images are held only while in transit (see Router mode). |
| PrologicSign PACS + Router PrologicSign PACS + Router + Viewer | Images are archived and forwarded. Each rule chooses whether to keep the local copy. |
| PrologicSign PACS, Viewer, PACS + Viewer | No routing. The Routing rules, Morph profiles and Router queue pages show "Not in your product". Manual send is separate and needs no rules. |
Rules, the queue, tag morphing and transcoding are in the Pro and Enterprise editions. Cloud targets are Enterprise only. A Developer key includes everything on one machine, and is not for production.
How an image travels
- The image is received by C-STORE, stored and indexed.
- If routing is on (Routing rules page, switch Routing is on), every enabled rule is evaluated.
- Each forward a matching rule asks for becomes one queue entry per image and destination, saved in the database.
- The worker sends due entries in batches and records each image as sent, failed or given up.
Images that match no rule stay where they are and are not forwarded.
Rules and conditions
Rules are checked by priority, lowest number first; rules with the same priority keep their list order. On the Routing rules page you drag a rule to change its order and can switch a rule off without deleting it. A rule with no conditions matches every image.
| Condition on | Notes |
|---|---|
| Calling AE | The AE title of the device that sent the image. |
| Called AE | The AE title the sender called: this node, or an alias. |
| Modality | (0008,0060). |
| SOP Class UID | (0008,0016), or the SOP class of the C-STORE request when the data set has none. |
| Any top-level tag | A keyword such as StationName, or a number such as (0008,1010). Tags inside sequences are not read. |
| Time of day | Local time of receipt, start included and end excluded. A window can wrap past midnight (18:00 to 07:00). |
| Weekday | Local day of receipt. |
Text conditions use one of these operators: Equals, Contains, StartsWith, Wildcard (* and ?), Regex (.NET syntax, 100 ms limit per match; a match that runs out of time counts as no match and is reported as a warning) and Exists. Text is compared without regard to case unless Match case is on. Separate several values with \: the condition matches if any value of the tag matches any entry. A missing tag never matches.
The rule editor combines a rule's conditions with ALL (AND) or ANY (OR). The rule format in settings.json also supports NOT and nested groups, up to 8 levels deep.
What a matching rule does
- Destinations: one or more DICOM destinations and, on Enterprise, cloud targets.
- Keep local copy: on keeps the image here as well; off is forward only.
- Morphing profile: optional header changes applied to the forwarded copies.
- Delay: wait before forwarding, in seconds. 0 sends at once; the maximum is 7 days.
- Stop processing: when this rule matches, no later rule is checked.
When several rules match
- Every matching rule adds its forwards, until a matching rule with Stop processing ends the evaluation.
- The queue holds one waiting entry per image and destination. If two rules send the same image to the same destination, the higher-priority rule decides the profile and delay. Do not rely on two rules to deliver two differently morphed versions to one destination.
- An image received again while it is still waiting is not queued twice.
A rule with errors (an unknown destination or profile, a bad regular expression) is left out and reported, while the other rules keep working. Use Test rules on the same page to try the rules against a stored study or pasted header values: it shows which rules match, why, and where the image would go. Nothing is sent.
Keep local or forward only
| Setting | What happens to the local image |
|---|---|
| Keep local copy (default) | It stays in the archive like any other study. Retention rules apply as usual. |
| Forward only | It is removed once every forward of that image, DICOM and cloud, has been sent. |
- The image is removed only when every matching rule is forward only. One matching rule that keeps the image keeps it.
- Nothing is removed while any forward is waiting, retrying or has given up. A forward that gave up keeps the image here, and a later successful replay removes it.
- Every removal is written to the activity log.
Router mode
A license with the Router module and no PACS module runs in router mode. The storage folder is the transit folder, the Studies page shows images in transit, and the service answers no C-FIND, C-MOVE or C-GET.
- Every routed image is deleted after its forwards have all been sent, whatever the rule says. Keep local copy has no effect here.
- Images that match no rule are kept and show in the transit list, so check that your rules cover what you receive.
- The setup wizard needs at least one destination and creates the rule "Forward everything", without a local copy, and switches routing on.
A safety buffer in settings.json, section RouterMode, decides how long images stay:
| Setting | Default | Meaning |
|---|---|---|
SentRetentionDays | 0 | Days an image stays after every forward succeeded. 0 deletes it at once. Limited to one day less than RouterQueue.KeepSentDays, because the sent record is needed to know it was sent. |
KeepFailedImages | true | An image whose forward gave up stays until it is replayed and sent, or deleted by hand. Set false to delete such images after FailedRetentionDays. |
FailedRetentionDays | 30 | Days after the last attempt. Used only when KeepFailedImages is false. Those images are then gone without having been delivered. |
SweepIntervalMinutes | 15 | How often the service looks for images whose buffer has ended. |
The queue, retries and Replay
The queue is a table in the PACS database, with one entry per image and destination, so entries survive a restart or a power cut.
| State | Meaning |
|---|---|
| Pending | Waiting to be sent: new, replayed, or handed back after the service stopped. |
| InProgress | Being sent now. An entry left here by a crash goes back in the queue after 10 minutes, or gives up if it was on its last try. |
| Failed | The last try failed and another is scheduled. Shown as "Failed (will retry)". |
| Dead | Given up. Shown as "Gave up (needs replay)". Only a replay sends it again. |
| Sent | The destination accepted it (success or a warning status). Kept 7 days for the dashboard, then removed. |
Three tries per image
By default each image gets at most 3 tries per destination: the first try, a second try 30 seconds later, and a third 60 seconds after that. If the third fails, the image moves to the failed list as given up.
These images go straight to the failed list with no further tries:
- tag morphing failed or was refused (see Tag morphing);
- the image is no longer stored;
- the destination has been removed from the configuration (add it again and replay).
When the service stops normally, batches in progress are handed back and that try is not counted.
The failed list and Replay
The Router queue page has one card per destination, with its counts and last error, and a list of failed sends grouped by study.
- Replay selected, or the replay button on a row, sends those studies again now.
- Replay all failed on a destination card sends everything failed for that destination again.
- Replay works on both failed and given-up entries, and gives each one a fresh 3 tries.
- Delete removes entries from the list only. The stored images are not touched, and those entries will not be sent.
- Replays and deletions are written to the activity log. Replay needs the Router module.
Email alerts are available for a failing destination (on by default, after 15 minutes) and for images given up (on by default). Set them on the Email alerts page.
Queue settings
These are in settings.json, section RouterQueue. There is no page for them in the admin app.
| Setting | Default | Meaning |
|---|---|---|
MaxAttempts | 3 | Tries per image and destination before it is given up. |
RetryInitialDelaySeconds | 30 | Wait after the first failure. It doubles after each further failure. |
RetryMaxDelaySeconds | 3600 | Longest wait between two tries. With 3 tries the wait never gets this long. |
BatchSize | 50 | Images sent over one association before the next batch. |
MaxAssociationsPerDestination | 2 | Simultaneous associations to one destination. |
MaxAssociationsTotal | 16 | Simultaneous associations to all destinations together. |
PollIntervalSeconds | 5 | How often the queue is checked when nothing new arrives. |
ReclaimInProgressAfterMinutes | 10 | When an interrupted send is put back in the queue. |
KeepSentDays | 7 | Days sent entries stay for the dashboard. 0 keeps them forever. |
Tag morphing profiles
A profile is an ordered list of header changes, applied to the copies a rule forwards to DICOM destinations. Create profiles on the Morph profiles page. Check validates the steps, and Preview tries them on a stored study without sending anything.
| Step | What it does |
|---|---|
| Set | Sets a tag to a value, adding the tag if it is missing. |
| CopyFrom | Copies a text value from another tag. |
| Prefix, Suffix | Adds text before or after the existing value. |
| RegexReplace | Replaces matches of a .NET regular expression. $1 and similar are allowed. |
| Remove | Deletes a tag. |
| RemovePrivateTags | Deletes every private tag, including inside sequences. |
| Uppercase | Upper-cases the existing value. |
| Lookup | Replaces a value through a table of old and new values. On a miss: keep it, clear it, or use a fixed value. |
| ShiftDate | Moves dates by a number of days, up to 100 years. With no tag named, every date in the image is shifted, including inside sequences. |
| Conditional | Runs nested steps only when a tag equals a value, matches a pattern, exists or is missing. |
| RemapUids | Gives Study, Series, SOP Instance and Referenced SOP Instance UIDs new values, the same new value for the same old UID. This is the only step that can change those UIDs. |
- The image stored here is never changed, and pixel data is never changed.
- Steps that name a tag work on the top level of the data set.
- If a new value does not fit the image's character set, the image is converted to UTF-8.
- The new UIDs are remembered in memory for the most recent 100,000 or more UIDs per profile and are not saved. After a service restart, images of a study already partly sent get different new UIDs, so the destination may see them as a separate study.
- Each morphed image gets a line in the activity log with its changes. The values can hold patient data, so they go to the activity log only, never to the service log.
An image is never sent unmorphed by mistake
If the image could carry data the profile was meant to remove, it is not forwarded. It goes to the failed list with the reason, in these cases:
- a step fails, or a regular expression exceeds its time limit (250 ms per value by default);
- the profile named by the rule no longer exists: fix the rule and replay;
- tag morphing is not licensed;
- the rule that queued the image has been deleted.
The profile is read when the image is sent, so changing a profile also affects images already waiting. Replaying an image whose rule was deleted is refused again, so finish or replay what is waiting before you delete a rule. Manual send applies no morphing.
Transcoding
Transcoding in this release means decompression only. Images are never compressed or recompressed. For each DICOM destination the worker does this:
- It offers each compressed image in its stored transfer syntax. If the destination accepts that syntax, the image goes unchanged.
- Otherwise the image is decompressed to Explicit VR Little Endian and sent on a second association. The stored image is not changed.
- Decodable: RLE Lossless, JPEG Baseline and Extended, JPEG Lossless, JPEG-LS and JPEG 2000. An image in any other compressed syntax, or one that cannot be decoded, fails like any other send.
- After a lossy codec, Lossy Image Compression is set to "01" on the sent copy.
- Images over 64 MB are decompressed through the spool folder rather than in memory.
- For a destination that accepts compressed images but cannot show them, set
SendUncompressedtotrueon that destination insettings.json, and every image is decompressed before sending. There is no switch for this in the admin app. - Morphing runs first, then any decompression. Cloud targets get the stored file, with no decompression.
Cloud targets (Enterprise)
Add targets on the Cloud targets page. In the rule editor they appear among the destinations as "Cloud: name", and on the Studies page through Send to cloud.... The service does the uploads. Credentials are stored encrypted for this machine (Windows DPAPI).
| Provider | Sign-in | Options |
|---|---|---|
| Amazon S3 | Access key, or a named profile of the service account | Encryption: S3-managed (default), KMS or none. S3-compatible storage through a custom endpoint and path-style addressing. Multipart upload above 16 MB. |
| Azure Blob | Connection string, or account name with a SAS token | Access tier. A custom blob endpoint for private or sovereign clouds. |
| Google Drive | Service account JSON key, with the target folder shared with the service account's email | Shared drives. |
- What is uploaded: the stored DICOM file byte for byte, or a de-identified copy (names, IDs, dates and private tags removed or replaced, UIDs remapped per target). You can also add a JPEG of the first frame.
- Path: a template below the optional prefix. The default is
{PatientID}/{StudyDate}_{AccessionNumber}/{SeriesNumber}/{SOPInstanceUID}.dcm. Values are cleaned to letters, digits,.,-and_. - Routing to a cloud target uses the same queue, 3 tries, failed list and Replay as DICOM. It always uploads single files; ZIP per study is for manual sends only. Up to 4 files upload at once per target (
Cloud.MaxParallelUploads). - A morphing profile is not applied to cloud uploads. To remove identifying data, set the target's content to the de-identified copy. Review the result against your own requirements before relying on it.
- A target that is switched off keeps its entries waiting. So do all cloud entries while the license does not include cloud export. If a target is deleted, its waiting entries go to the failed list.
- A forward-only image is removed only after its cloud forwards have been sent too.
When a paid license ends
The grace is 7 days after the license end date. If the license could not check in, it is 7 days after the 7-day offline grace ends. These periods are built into the product and cannot be changed in the settings.
PrologicSign Router (no PACS module)
| When | Receives new images | Forwards and removes after sending |
|---|---|---|
| Up to 7 days after the end | Yes | Yes, with morphing, transcoding and cloud |
| After that | No. C-STORE answers 0x0124 "Refused: not authorized" | Yes, until the queue is empty |
| License refused by the server (revoked) | No, at once | Yes, until the queue is empty |
PACS + Router, and PACS + Router + Viewer
| When | Receive and query/retrieve | Forwarding |
|---|---|---|
| Up to 7 days after the end | Yes | Yes, for queued and newly received images |
| After that | Yes | Paused. New images are still queued, nothing in the queue is deleted, and it is sent once the license is renewed |
| License refused by the server (revoked) | Yes | Paused at once |
The service status says what has happened, and email alerts are sent when the grace starts and when it ends. A Developer key that has ended stops everything, with no grace.
Known limits in 1.0.0
- Forwarding decompresses only. It cannot convert to another compressed syntax.
- Images received in Explicit VR Big Endian or Deflated Explicit VR Little Endian can fail or be corrupted when forwarded to a destination that accepts the same syntax. The PACS does not accept those syntaxes by default; if you add them in Settings they are marked "cannot be forwarded".
- DICOM TLS for forwarding needs a DicomKit build with TLS, which the 1.0.0 build does not include.
- The 1.0.0 release test run did not exercise cloud targets against real storage. Use Save and test on each target, and send a test study before relying on it.
Licensing and activation
One license key per computer, a free Developer key to evaluate, and activation with or without internet. Everything you manage is in the customer portal.
One key per computer
- One key unlocks every module of its product. The service, the admin app and the viewer on a computer share one activation, so you never enter a second key for the viewer or the router.
- The key carries the product (PACS, Router, Viewer, PACS + Viewer, PACS + Router, or PACS + Router + Viewer) and the edition (Developer, Pro or Enterprise).
- A license covers one computer unless your plan has more seats. The license page in the portal shows the seats in use.
- The admin app and the viewer show what is licensed. In the admin app, open the License page. A page for a module your product does not include stays in the menu and says so.
Evaluating: the free Developer key
A key is needed from day one. To evaluate, get a free Developer key from dicomkit.plogic.dev, then buy a Pro or Enterprise key for production.
- A Developer key has all the features of the product, on 1 computer, for 7 days.
- You can renew it once, for another 7 days, on the license page in the portal.
- It is for evaluation and testing only, not for production.
With no active key
The computer is locked until a key is activated: nothing is received and only DICOM C-ECHO still answers. Images already stored stay on disk. The admin app opens the License page. A viewer-only computer opens local files, folders and CDs in basic mode, with Activate... in the toolbar. Managed updates need an activated license.
Activating online
Keys are in the customer portal. The computer must reach https://dicomkit.plogic.dev on port 443.
- Open the admin app and go to the License page. On a new installation you can also enter the key in the License step of the setup wizard.
- Paste the key and press Activate online.
On a viewer-only computer there is no admin app. Press Activate... in the viewer toolbar instead. This needs administrator rights once, because the license is kept for every user of the computer. A PACS installed later on that computer uses the same activation.
Activating offline
For a computer with no internet connection:
- On the License page press Save activation request... (viewer-only: Save request file...). The file starts with
PLGICREQ1. - On a computer with internet, sign in to the customer portal and open the license. Under Offline activation, upload the file or paste its text, then press Create activation file.
- Carry the
.licfile back and press Import license file...
An offline activation of a Pro or Enterprise license uses one seat and is valid until the license's end date, with no check-in. After a renewal or a change of product or edition, make a new file the same way. The license must be active and not expired to make a file.
Computer ID
A license is bound to one computer through its Computer ID, shown with a copy button on the License page. Support may ask for it. It is made from the computer name, the operating system and the Windows machine GUID, and it contains no user name, so every Windows user of the computer shares the license.
Renaming the computer or re-imaging Windows changes the ID. The license then no longer matches. Free the old entry in the portal and activate again.
Daily check-in and 7-day offline grace
Yearly subscriptions and Developer keys activated online confirm themselves with the license server. Offline files for Pro and Enterprise do not check in.
- The PACS service checks in once every 24 hours and retries an hour after a failure. Check in now on the License page does it at once.
- If the server cannot be reached, nothing changes for 7 days after the last confirmed check-in. After 48 hours without one, the License page says how long the license will keep working offline.
- After those 7 days the license counts as not checked in and the rules for an ended license apply. The next confirmed check-in switches everything back on.
- If the server refuses the license (revoked, suspended, expired, or its seat was freed), the same rules apply at once, with no grace.
Upgrading on the same key
You keep the same key when you move to another edition or product. To change, use the subscription page in the customer portal where your plan offers it, or contact us.
- Online: the new product and features arrive at the next check-in with nothing to enter. Check in now on the License page does it at once. On a downgrade, the modules or features no longer included switch off the same way.
- Offline: make a new license file in the portal and import it, as in offline activation.
Installing more than the license includes does no harm: those parts show as not in your product. To change which modules are installed, uninstall and install again with the other product.
What happens when a license ends
This table is for a Pro or Enterprise license that passed its end date, did not check in within the offline grace, or was refused by the server. The admin app shows a renewal warning from 14 days before the end date. Renewing or activating again switches everything back on. Images kept in a PACS archive are not deleted because a license ended.
| Product | First 7 days | After 7 days | Refused by the server |
|---|---|---|---|
| PACS PACS + Viewer |
Receiving images and query/retrieve keep working, from the end of the license with no time limit. Manual send, transcoding, reporting and cloud export stop. The viewer stops on PACS + Viewer. | Same as when the license ended. | |
| PACS + Router PACS + Router + Viewer |
Receiving and query/retrieve keep working. Forwarding (auto-routing, tag morphing, transcoding, cloud forward) keeps working, for queued and new images. Manual send, reporting and the viewer stop. | Receiving and query/retrieve keep working. Forwarding is paused: received images still join the queue, the queue is kept, and it is sent once the license is renewed. | Receiving and query/retrieve keep working. Forwarding is paused at once. |
| Router | Images are still received, forwarded and then removed. | New images are refused (C-STORE status 0x0124, "Refused: not authorized"). Images already received are still forwarded and then removed, until the queue is empty. |
New images are refused at once. Forwarding of what was already received continues. |
| Viewer | The basic viewer for local files, folders and CDs stays available. The full viewer and Other PACS stop, and Activate... is offered. | ||
- For a missed check-in, the 7 days in this table start when the 7-day offline grace ends.
- On a computer with a PACS or Router service, the viewer follows the service's license. While no key is active, or that license does not include the viewer, the viewer shows Your license doesn't include the viewer.
- On products with a router, and with email alerts set up, a mail is sent when the 7 days start and when forwarding pauses or the router starts refusing images.
- A Developer key that ended stops everything, on every product, because it is not for production. Only C-ECHO still answers, and a viewer-only computer keeps basic mode. This is the same lock as a computer with no key.
Moving to another computer
- Sign in to the customer portal and open the license.
- Under Machines, press Deactivate next to the old computer. Hover over its ID to compare it with the Computer ID on the License page.
- Activate the same key on the new computer, online or offline.
The old computer stops being licensed the next time it checks in, and the rules for a refused license apply to it. Activating a key that has no free seat is refused until you free one.
You can free up to 2 computers per seat in any 30 days, and the portal shows how many are left. If you need to move one sooner, contact support. Activating again on the same computer, for example after reinstalling the PACS on it, does not use another seat as long as its Computer ID is unchanged.
Managed updates
PrologicSign decides per license which version is offered and whether it is only announced or installed automatically. The PACS service asks the license server once a day, at a random minute between 02:00 and 04:00 local time. Check for updates... on the License page asks at once.
| Offer | What happens |
|---|---|
| Notify | The update is announced and, by default, downloaded in the background. An administrator chooses when to install it. |
| Auto | The update is installed silently when no DICOM association is open and the admin app is closed, inside the maintenance window if one is set. |
| Mandatory | Offered as notify or auto. If it is still not installed after 7 days, update health turns red and, with email alerts set up, a mail goes out. The PACS keeps running. |
| Security fix | Shown as a warning until installed. A license past its end date is offered only security fixes. |
- An install never starts while a DICOM association is open. Installing closes the admin app and restarts the service, and DICOM connections are refused for a few minutes. Your data is kept.
- An update is accepted only when the server's answer is signed by PrologicSign and the downloaded package matches its published SHA-256 checksum. Anything else is refused.
- The 1.0.0 installer is not yet signed with a Windows code-signing certificate. The next release will be, and installed systems receive it through the normal automatic update.
- No updates are offered to a revoked or suspended license, to a computer with no active key, or on a computer without internet access. Those computers, and viewer-only computers (managed updates run in the service), are updated by running a newer installer from the Downloads page.
Help
Report a problem in the issue tracker or contact support, and include the Computer ID if the question is about one computer.
DICOM conformance statement
This statement follows the structure of DICOM PS3.2. It is written from the source code of release 1.0.0 and does not replace testing with your own devices.
| Product | PrologicSign PACS: PACS, Router, Viewer, PACS + Viewer, PACS + Router, PACS + Router + Viewer |
|---|---|
| Manufacturer | PrologicSign Technology |
| Product version | 1.0.0 |
| DICOM toolkit | DicomKit 1.0.0 (PrologicSign Technology) |
| Platform | Windows only |
| Statement date | 9 November 2026 |
1. Overview
The PACS service receives DICOM instances from modalities and other systems, stores them on a Windows disk, indexes them in a database (built-in SQLite, SQL Server, MySQL or PostgreSQL) and lets workstations query and retrieve them. Staff can send studies to other DICOM nodes. Products with the Router module also forward received instances by rule.
The table shows the service with every module. Section 2 shows what each product includes.
| Service | SCU (service AE) | SCP (service AE) |
|---|---|---|
| Verification (C-ECHO) | Yes | Yes |
| Storage (C-STORE), all storage SOP classes | Yes: manual send, router forward, C-MOVE and C-GET sub-operations | Yes |
| Patient Root Q/R: FIND, MOVE, GET | No | Yes |
| Study Root Q/R: FIND, MOVE, GET | No (the viewer is an SCU, see section 2) | Yes |
| Modality Worklist | No | No (see section 8) |
| Modality Performed Procedure Step | No | No |
| Storage Commitment Push Model | No | No |
| Instance Availability Notification, Composite Instance Root Q/R, Composite Instance Retrieve Without Bulk Data | No | No |
DICOMweb is not part of this product.
2. Differences by product
| Function | PACS, PACS + Viewer | Router | PACS + Router, PACS + Router + Viewer | Viewer |
|---|---|---|---|---|
| C-ECHO SCP | Yes | Yes | Yes | No |
| C-STORE SCP | Yes | Yes | Yes | Only while a C-MOVE retrieve runs |
| C-FIND, C-MOVE, C-GET SCP | Yes | No: answered 0x0124 | Yes | No |
| Manual send (C-STORE SCU) | Yes | Yes | Yes | No |
| Router forward (C-STORE SCU) | No | Yes | Yes | No |
| Tag morphing of forwarded copies | No | Yes | Yes | No |
| C-FIND, C-GET, C-MOVE SCU to another PACS | In the viewer, with PACS + Viewer | No | In the viewer, with PACS + Router + Viewer | Yes |
| Local copy after forwarding | Not applicable | Deleted once every forward has succeeded | Kept or deleted by rule | Not applicable |
Router. The listener is the same, so a Q/R presentation context can still be accepted during negotiation. Every C-FIND (worklist included), C-MOVE and C-GET is then answered 0x0124 (Refused: Not authorized).
Viewer. The viewer's "Other PACS" function needs an activated license. It has no listener of its own apart from the temporary receiver below.
- Default calling AE title:
PROLOGIC_VIEWER, or a title set per connection. - C-ECHO; C-FIND with Study Root at STUDY and SERIES level.
- C-GET with Study Root (preferred, no inbound port), proposing a fixed list of common storage SOP classes with SCP role selection.
- C-MOVE with Study Root: a C-STORE receiver opens on port 11113 (configurable) only while the move runs, and requires the called AE to match. The other PACS must know the viewer's AE title, address and port.
- Transfer syntaxes accepted for retrieved images: Explicit and Implicit VR Little Endian, Deflated Explicit VR Little Endian, JPEG Baseline, Extended, Lossless (.57 and .70), JPEG-LS Lossless and Near-Lossless, JPEG 2000 (both) and RLE.
Editions. Pro, Enterprise and Developer do not differ in DICOM services, except that report PDFs (section 15) need Enterprise or Developer with the PACS module.
License state. The checks apply to every operation, not only at negotiation. C-ECHO always answers. Without a valid license C-STORE, C-FIND, C-MOVE and C-GET are answered 0x0124. See the Licensing guide for the expired and grace-period rules.
3. Implementation model
The service has one Application Entity, by default PROLOGIC_PACS. It runs inside the Windows service and listens on one TCP port (default 11112). The same AE, or a per-destination calling AE alias, acts as SCU.
- Store: a received instance is written to
<storage>\<Study UID>\<Series UID>\<SOP Instance UID>.dcmand added to the index. The response is sent only after both succeed, so an instance can be queried and retrieved as soon as its C-STORE response has been sent. - Query: C-FIND is answered from the index.
- Retrieve: C-MOVE and C-GET send the stored files. C-MOVE decompresses when needed (section 11).
- Send: an operator picks studies and a destination in the admin app.
- Forward: received instances that match a routing rule are queued and sent to the rule's destinations.
- Verify: the admin app's Test button sends a C-ECHO.
4. SOP classes
| SOP class | UID | SCU | SCP |
|---|---|---|---|
| Verification | 1.2.840.10008.1.1 | Yes | Yes |
| Patient Root Q/R FIND | 1.2.840.10008.5.1.4.1.2.1.1 | No | Yes |
| Patient Root Q/R MOVE | 1.2.840.10008.5.1.4.1.2.1.2 | No | Yes |
| Patient Root Q/R GET | 1.2.840.10008.5.1.4.1.2.1.3 | No | Yes |
| Study Root Q/R FIND | 1.2.840.10008.5.1.4.1.2.2.1 | Viewer only | Yes |
| Study Root Q/R MOVE | 1.2.840.10008.5.1.4.1.2.2.2 | Viewer only | Yes |
| Study Root Q/R GET | 1.2.840.10008.5.1.4.1.2.2.3 | Viewer only | Yes |
| Storage SOP classes | any, see below | Yes | Yes |
The SCP has no list of storage SOP classes. Every abstract syntax that is not Verification and not a Q/R or worklist SOP class is accepted as a storage SOP class. That includes all standard, retired and private storage classes. As SCU the service sends whatever SOP class is stored.
Side effect: a context for a non-storage SOP class (for example Modality Performed Procedure Step or Storage Commitment) is also accepted during negotiation. No N-service is implemented, so an N-CREATE, N-SET, N-ACTION or N-EVENT-REPORT is answered 0x0211 (Unrecognized Operation). Do not take the accepted context as support for the service.
5. Transfer syntaxes
Accepted by default for storage, in the service's order of preference. The requester's order is ignored: the first entry of this list that the requester proposed is chosen.
| Order | Transfer syntax | UID |
|---|---|---|
| 1 | Explicit VR Little Endian | 1.2.840.10008.1.2.1 |
| 2 | Implicit VR Little Endian | 1.2.840.10008.1.2 |
| 3 | JPEG Lossless, Non-Hierarchical, First-Order Prediction (Process 14 SV1) | 1.2.840.10008.1.2.4.70 |
| 4 | JPEG Baseline (Process 1) | 1.2.840.10008.1.2.4.50 |
| 5 | JPEG 2000 Lossless Only | 1.2.840.10008.1.2.4.90 |
| 6 | JPEG 2000 | 1.2.840.10008.1.2.4.91 |
| 7 | JPEG-LS Lossless | 1.2.840.10008.1.2.4.80 |
| 8 | RLE Lossless | 1.2.840.10008.1.2.5 |
| 9 | High-Throughput JPEG 2000 Lossless Only | 1.2.840.10008.1.2.4.201 |
1.2.840.10008.1.2.2) and Deflated Explicit VR Little Endian (1.2.840.10008.1.2.1.99) are not accepted by default. DicomKit 1.0.0 cannot forward them correctly. An administrator can add them in Settings, where they carry a warning. Accept them only if nothing is forwarded.- Also selectable in Settings, off by default: JPEG Extended (.4.51), JPEG Lossless Process 14 (.4.57), JPEG-LS Near-Lossless (.4.81), HTJ2K RPCL (.4.202) and HTJ2K (.4.203).
- Cannot be accepted: MPEG-2, MPEG-4 and HEVC video syntaxes, JPIP and private syntaxes.
- "Prefer compressed" setting (off by default): moves the compressed syntaxes ahead of the uncompressed ones, so an image offered both ways is stored as the sender compressed it.
6. Association policies
| Application context name | 1.2.840.10008.3.1.1.1 |
|---|---|
| Maximum PDU received (SCP and SCU) | 1,048,576 bytes (1 MiB) |
| Maximum PDU sent | The peer's advertised maximum (0 = unlimited) |
| Smallest peer maximum PDU | 14 bytes; a smaller non-zero value is rejected (result 1, source 1, reason 1) |
| Largest identifier | 1 MiB; a longer one aborts the association |
| Largest C-STORE data set | 4 GiB; a longer one aborts the association |
| Extended negotiation | Not supported (not answered) |
| SCP/SCU role selection | Supported, so a C-GET requester can receive |
| User identity negotiation | Not supported |
| Asynchronous operations | Not supported. One DIMSE operation at a time per association; up to 8 received requests are buffered before the SCP stops reading the socket |
| Implementation Class UID | 2.25.170142335781069851436153372094476213917 |
| Implementation Version Name | DICOMKIT_1 |
Number of associations
| Simultaneous associations accepted | 128 by default, 4 to 1024 (Health.Listener.MaxAssociations in settings.json). Beyond that: A-ASSOCIATE-RJ, result 2 (transient), source 3, reason 2 |
|---|---|
| DicomKit runtime license | Every activated PACS license brings one, with no further limit. If it is missing or no longer valid, at most 2 simultaneous associations are accepted (same rejection), and C-MOVE, C-GET and worklist contexts are refused (result 3) |
| Associations initiated | Manual send: one per transfer pass (section 7). Router: one per batch and pass; by default 50 images per batch, at most 2 associations per destination and 16 in total. C-MOVE: one per request, plus short probes |
Timers
| Timer | Value |
|---|---|
| SCP: A-ASSOCIATE-RQ must arrive after connect | 30 s |
| SCP: idle association (no PDU) | 120 s, then A-ABORT |
| SCP: one PDU, once started, must complete | 60 s |
| SCP: each send to the peer must be taken | 60 s |
| SCP: over-capacity connection, wait for its request before the reject | 2 s |
| C-MOVE: connect to the destination | 15 s |
| C-MOVE and C-GET: wait for each sub-operation response | 60 s |
| Send and forward: connect and association / each response | 15 s / 60 s |
| Send and forward: time allowed for one file | 2 minutes plus 1 second per MB |
| C-ECHO Test: connect and association / response | 10 s / 15 s |
After A-RELEASE-RP this version closes the connection at once.
7. Association initiation
Send (manual send and router forward)
Calling AE: the destination's calling AE alias when set, otherwise the PACS AE title. Called AE: the destination's AE title. The work is done in passes, each on its own association, and at most 127 SOP classes per association. Verification is always proposed, in Implicit VR Little Endian.
- As stored (default): per compressed syntax found in the batch, one association proposing only that syntax. Instances the destination accepts in it are sent unchanged.
- Uncompressed: one association proposing Explicit and Implicit VR Little Endian carries the uncompressed instances and every compressed instance not sent in step 1, decompressed to Explicit VR Little Endian.
A destination set to "send uncompressed" skips step 1, for systems that accept compressed images but cannot show them.
- Decompression available for: RLE, JPEG Baseline, Extended, Lossless (.57 and .70), JPEG-LS (both) and JPEG 2000 (both). JPEG-LS and JPEG 2000 need those features in the DicomKit runtime license.
- Not available for: HTJ2K, and pixel data with Bits Allocated 1. An instance that cannot be delivered as stored or decompressed fails, and the rest continue.
- Never compressed. The SOP Instance UID is kept. After a lossy codec, Lossy Image Compression is set to "01".
- Status: 0x0000 and any 0xBxxx warning count as sent. Any other status is recorded as failed and the next instance is sent.
- Lost association: a new one is opened and that file is sent once more.
- Manual send: up to 3 connection attempts; reports the totals and the first 200 failures.
- Router: a persistent queue retries failed instances with back-off and moves them to a dead-letter list after the configured attempts (default 3).
- Tag morphing (Router): changes only the forwarded copy, before any decompression. If morphing fails, the original is never sent instead.
Verify
C-ECHO with Verification in Implicit VR Little Endian. Success only on status 0x0000.
8. Association acceptance
AE title and other checks, in the order applied
| Check | Default | Rejection |
|---|---|---|
| Simultaneous associations | 128 | result 2, source 3, reason 2 |
| Called AE must equal the PACS AE title (case-sensitive; spaces padding the field are ignored) | On | result 1, source 1, reason 7 |
| Calling AE must be in the "Allowed calling AE titles" list (case-sensitive). An empty list allows every caller | Empty: any caller | result 1, source 1, reason 3 |
| Peer maximum PDU at least 14 bytes, or 0 | Always | result 1, source 1, reason 1 |
Presentation contexts
- An even presentation context ID is rejected (result 2). A duplicate ID aborts the association.
- Verification: the first syntax of the accepted list that the requester proposed.
- Q/R FIND, MOVE, GET: Explicit or Implicit VR Little Endian only. Any other syntax alone: result 4.
- Storage: the first syntax of the accepted list (section 5) that the requester proposed. None proposed: result 4.
- Modality Worklist FIND: the context may be accepted, but this product has no worklist and every worklist C-FIND returns 0x0000 with no matches. Do not configure modalities to use this AE as a worklist provider.
9. Verification and Storage SCP
C-ECHO is answered 0x0000.
Storage conformance level: 2 (Full). The data set is stored bit for bit as received, in the negotiated transfer syntax, with a PS3.10 file meta header added (Source AE Title = the calling AE). No attribute is changed, removed or added, no image is decompressed or recompressed on receipt, and private attributes are kept.
- Retention: files stay until an administrator removes them. An optional retention policy is off by default. A Router without the PACS module deletes an image once it has been forwarded (section 2).
- Index: long values are cut to the column size in the index only: Patient Name and Referring Physician 324 characters; Patient ID, Accession Number, Study and Series Description 64; Study Time, Modality, Body Part and Patient Sex 16. The file keeps the full value.
- Duplicates (same SOP Instance UID): by setting, the new copy replaces the stored one (default) or the stored copy is kept. Both answer 0x0000 and write an activity-log entry. A resend with a corrected Study or Series Instance UID moves the instance in the index and deletes the old file.
| C-STORE status | Meaning | When |
|---|---|---|
| 0x0000 | Success | Stored and indexed, or duplicate handled |
| 0xA700 | Refused: Out of Resources | Free space below the minimum (default 2048 MB), the index could not be updated (the sender should retry), or a disk error |
| 0xC000 | Error: Cannot understand | Data set unreadable or missing; Study or Series Instance UID missing |
| 0x0122 | Refused: SOP Class not supported | Affected SOP Class UID differs from the context's abstract syntax |
| 0x0124 | Refused: Not authorized | The license does not allow receiving |
The service never returns a warning status (0xB000, 0xB006, 0xB007) for C-STORE.
10. Query/Retrieve SCP: C-FIND
Not in the Router product. Models and levels: Patient Root (PATIENT, STUDY, SERIES, IMAGE) and Study Root (STUDY, SERIES, IMAGE). Relational queries are not negotiated, but the SCP does not require the unique keys of higher levels: a SERIES or IMAGE query without a Study Instance UID searches all studies.
| Matching type | Supported | Notes |
|---|---|---|
Universal (zero length, or only *) | Yes | Every key |
| Single value | Yes | Case-sensitive, except Person Name |
Wildcard * and ? | Yes | Every string key except UI and DA/TM. Person Name is case-insensitive; trailing empty components are ignored |
| List of UIDs | Yes | UI keys |
| List of values | Yes | Any key except LT, ST, UT, UR |
| Range | Yes | DA and TM keys |
| Combined date-time matching of a DA/TM pair | No | Study Date and Study Time are matched independently |
| Sequence matching | Not applicable | No sequence key is supported |
| Fuzzy person name matching, timezone adjustment | No | Not negotiated |
Any key not listed below is ignored for matching and returned zero-length. When such a key carried a matching value, pending responses use 0xFF01 instead of 0xFF00. Only the keys present in the request are returned, plus Specific Character Set and Query/Retrieve Level.
| Level | Keys matched and returned |
|---|---|
| Patient (Patient Root). One response per Patient ID | Patient's Name (0010,0010), Patient ID (0010,0020), Birth Date (0010,0030), Sex (0010,0040), Number of Patient Related Studies (0020,1200) |
| Study. Newest Study Date first | The patient keys above except the count, plus Study Date (0008,0020), Study Time (0008,0030), Accession Number (0008,0050), Modalities in Study (0008,0061), Referring Physician's Name (0008,0090), Study Description (0008,1030), Study Instance UID (0020,000D), Number of Study Related Series (0020,1206) and Instances (0020,1208) |
| Series. By Series Number | The study keys, plus Modality (0008,0060), Series Description (0008,103E), Body Part Examined (0018,0015), Series Instance UID (0020,000E), Series Number (0020,0011), Number of Series Related Instances (0020,1209) |
| Image. By Instance Number | The study keys, plus Series Instance UID, Modality, SOP Class UID (0008,0016), SOP Instance UID (0008,0018), Instance Number (0020,0013) |
Study ID (0020,0010), a required key at Study level, is not in the index: it cannot be matched and is returned zero-length.
| C-FIND status | Meaning |
|---|---|
| 0xFF00 | Pending: a match, all keys supported |
| 0xFF01 | Pending: a match; one or more optional keys were not supported |
| 0x0000 | Search complete |
| 0xFE00 | Cancelled |
| 0xA700 | More than 100,000 matches; the first 100,000 were sent |
| 0xA900 | Missing identifier, or invalid or missing Query/Retrieve Level |
| 0xC000 | Identifier could not be parsed, or a database error |
| 0x0122 | SOP class not supported on this presentation context |
| 0x0124 | Not authorized: the product or license has no query/retrieve |
11. Query/Retrieve SCP: C-MOVE and C-GET
Not in the Router product. The Query/Retrieve Level and the unique key of that level are required: Patient ID, Study Instance UID, Series Instance UID or SOP Instance UID. Each may be a list. A missing unique key is answered 0xA900. Instances are sent by Series Number, then Instance Number. At most 65,535 instances per request. C-CANCEL stops after the current instance.
C-MOVE destination. The Move Destination must exactly (case-sensitively) equal the AE title of a destination configured in the admin app. Host and port come from that configuration, never from the request. An unknown destination gets 0xA801.
- All sub-operations of one C-MOVE use one new association. Calling AE: the PACS AE title. Called AE: the destination AE title.
- Contexts: for each SOP class, one proposing Explicit and Implicit VR Little Endian, plus one per other stored syntax.
- Each C-STORE carries Move Originator AE Title and Message ID.
- Before the move, one short association per compressed syntax asks the destination what it accepts (10 s connect, 15 s response; the answer is kept 5 minutes). Instances it refuses as stored are decompressed to Explicit VR Little Endian (limits as in section 7). A destination set to "send uncompressed" gets all decompressible images decompressed.
C-GET. Instances are sent on the requester's association, always as stored. The requester must propose a context for each SOP class it wants to receive, with SCP role selection, and accept the stored syntax. C-GET does not decompress: instances without a usable context fail as sub-operations.
| Status | Meaning |
|---|---|
| 0xFF00 | Pending: sub-operations continuing, with counts after each instance |
| 0x0000 | All sub-operations completed |
| 0xB000 | Some sub-operations failed or had warnings; Failed SOP Instance UID List is returned |
| 0xA702 | None succeeded, the destination could not be reached, or more than 65,535 instances |
| 0xA801 | Move destination unknown |
| 0xA900 | Missing unique key or invalid level |
| 0xFE00 | Cancelled |
| 0xC000 | Unable to process |
| 0x0124 | Not authorized: the product or license has no query/retrieve |
12. Network interfaces and configuration
TCP/IP over any network adapter Windows supports, DICOM Upper Layer per PS3.8. IPv4; IPv6 when the listen address is an IPv6 address (:: listens on both).
Settings are made in the admin app and stored in %ProgramData%\PrologicSign\PACS\settings.json.
| Setting | Default |
|---|---|
| AE title | PROLOGIC_PACS |
| DICOM port | 11112 |
| Listen address | 0.0.0.0 (all IPv4 interfaces) |
| Require called AE to match | On |
| Allowed calling AE titles | Empty (any) |
| Accepted transfer syntaxes | The list in section 5 |
| Prefer compressed | Off |
| Destinations (name, AE title, host, port, optional calling AE, send uncompressed) | None. Used for send, forward, and as the only allowed C-MOVE destinations |
| Duplicate instance policy | Replace |
| Minimum free disk space before refusing C-STORE | 2048 MB |
| Simultaneous associations | 128 |
The other limits and timers in section 6 are DicomKit defaults and cannot be configured in this version.
13. Media and character sets
Media interchange. No PS3.10 media profile is claimed.
- Import (PACS module) reads a folder or the files a DICOMDIR lists.
- The viewer opens files, folders, DICOMDIR and CDs.
- Export writes PS3.10 files to a folder but no DICOMDIR: DicomKit 1.0.0 cannot write one.
Received instances. Any Specific Character Set value is accepted and stored unchanged. To index text, these are decoded: ISO_IR 6 (or absent), 100, 101, 109, 110, 126, 127, 138, 144, 148, 166, ISO_IR 13, ISO_IR 192 (UTF-8), GB18030, GBK, the ISO 2022 forms of the single-byte sets, ISO 2022 IR 87 and ISO 2022 IR 149. When (0008,0005) has several values, the last is used for the whole value, so text that switches character sets with escape sequences may be indexed incorrectly. An unknown value is decoded as Latin-1.
C-FIND. Request values are decoded with the request's character set. Responses are always UTF-8 (ISO_IR 192); a requester that cannot read UTF-8 will show non-ASCII characters wrongly.
C-MOVE, C-GET, send and forward keep the instance's character set.
14. Security
- Association level: the AE title checks of section 8. C-MOVE can only send to configured destinations.
- Admin app: talks to the service only over a local named pipe; it has no network listener.
- Stored secrets: database connection strings are encrypted for the machine (Windows DPAPI).
- File paths: UIDs and AE titles from the network are never used as file paths without sanitising, and files stay inside the storage folder.
Activity log. Written to the database and shown in the admin app, kept 365 days by default (1 to 3650). Categories: Service, Receive, Send, Query, Retrieve, Settings, Security and Report. Instances received successfully are not logged one by one; they appear in the study index with the sender's AE title and time. Every C-FIND, C-MOVE, C-GET, manual send and routing batch is logged.
Rejected associations go to the service log file, not to the activity log. The product does not send IHE ATNA or DICOM PS3.15 audit messages to a syslog repository.
15. Annexes and known limitations
Created instances. The service does not change received instances. With the Reporting feature (Enterprise or Developer, PACS module) a finalized report can be stored in its study as a new Encapsulated PDF Storage instance (1.2.840.10008.5.1.4.1.1.104.1) in a new series with Modality DOC. It can be queried and retrieved like any other instance.
Private attributes. None defined. Those of received instances are stored and sent unchanged. No specialized or private SOP classes or transfer syntaxes are defined.
Known limitations of this version
- No DICOM TLS (section 14).
- Explicit VR Big Endian and Deflated Explicit VR Little Endian are off by default. If you add them, images received in those syntaxes may be damaged or fail when sent on, because DicomKit 1.0.0 encodes Explicit VR Little Endian on the wire even when one of those syntaxes was agreed.
- Study ID (0020,0010) is not indexed: it cannot be matched and is returned zero-length.
- Modality Worklist and non-storage SOP classes may be accepted during negotiation without the service being provided.
- C-GET sends as stored and never decompresses. HTJ2K cannot be decompressed on any path. Nothing is ever compressed or recompressed.
- C-FIND responses are always UTF-8.
- No Storage Commitment, MPPS or worklist.
Security
This page is for the IT and security staff who review PrologicSign PACS before it goes on a hospital network. It covers what data stays on site, what leaves and when, how secrets and folders are protected, what is logged, what has been tested, and what is still missing in version 1.0.0.
What stays on your site
Images, reports and patient details are stored on your own server and database. They are never sent to PrologicSign. The product has no usage analytics or telemetry.
| Data | Where it is kept |
|---|---|
| Images (DICOM files) | The storage folder: C:\ProgramData\PrologicSign\PACS\studies by default, or the folder or network share you choose. |
| Study index with patient names and IDs, routing queue, activity log, reports | The built-in database (pacs.db) or your own SQL Server, MySQL / MariaDB or PostgreSQL server. |
| Images being received | C:\ProgramData\PrologicSign\PACS\spool, on the system drive. Removed when the image has been stored. |
| Settings, with secrets encrypted | C:\ProgramData\PrologicSign\PACS\settings.json |
| Service logs | C:\ProgramData\PrologicSign\PACS\logs |
| Support bundle | C:\ProgramData\PrologicSign\PACS\support. Made only when an administrator presses Create support bundle, and never sent automatically. It holds the logs of the last 7 days, the health snapshot, settings.json with every password, protected value, token and key removed, version details and system details. It holds no images. It does hold UIDs and AE titles, so review it before you send it to anyone. |
What leaves your site only if you set it up
These connections exist only after an administrator configures them. They go to systems you choose, not to PrologicSign.
| Feature | What is sent | To where |
|---|---|---|
| Destinations, manual send, routing, C-MOVE | Full DICOM images, including patient details, unless a tag-morphing rule changes them. Plain TCP in 1.0.0. | The DICOM nodes you list. A C-MOVE can only go to a configured destination. |
| Email of reports and studies | What the user attaches. | Through your SMTP server, to the recipients the user enters. |
| Email alerts | Server name, time and alert text, which can include AE titles and error text. | Through your SMTP server, to the alert recipients. |
| Cloud export (Enterprise) | By default the stored DICOM file unchanged, with patient details. Each target can instead send a de-identified copy (names, IDs, dates and private tags removed or replaced). | Your own Amazon S3, Azure Blob or Google Drive account. |
| Viewer query/retrieve | DICOM queries and retrieves. | The PACS systems you configure in the viewer. |
De-identification changes DICOM tags only. It cannot remove text drawn into the image. When studies are packaged anonymised for download or email, images flagged Burned In Annotation = YES are left out. Cloud export does not check that flag, so do not rely on a de-identified cloud copy for ultrasound or scanned documents.
What is sent to the license server
The only connections to PrologicSign are the license and update requests below. They use HTTPS to dicomkit.plogic.dev (port 443). The product refuses a license server address that is not HTTPS, except on the local machine.
| Request | When | Exactly what it carries |
|---|---|---|
ActivatePOST /v1/license/activate | Once, when a key is activated online. | License key, machine id, a random nonce, product name, product version. |
Check-inPOST /v1/license/verify | Subscription licenses, every 24 hours. It keeps working for 7 days without a connection. Fixed-term licenses do not check in. | License id, license token, machine id, a random nonce. |
Update checkPOST /v1/updates/check | Once a day, at a random minute between 02:00 and 04:00 local time by default. | Product name, license token, machine id, current version, release channel. |
Update resultPOST /v1/updates/report | After an update install attempt. | License token, machine id, version, installed or failed, and the result message of the install (at most 1,000 characters), which can name the local install log file. |
| Update download | When an update is offered and downloaded. | An HTTPS download of the package from the address in the signed answer. |
- Machine id: a SHA-256 hash (64 hex characters) of the machine name, the operating system and the Windows MachineGuid. It contains no user name, and the original values cannot be read from it.
- License token: a signed record of the license id, the licensee name, dates, mode, the machine id and the licensed features. It contains nothing about patients or studies.
- Never sent: images, DICOM tags, patient names or IDs, accession numbers, study counts, reports, AE titles, host names, or log files.
- IP address: as with any web request, the server sees the public IP address the request comes from. It uses this to limit the request rate.
Every token, check-in receipt and update answer must carry a PrologicSign signature, which the product verifies. A wrong or hostile server address cannot grant a license or push an update. An answer that is not signed is ignored.
Sites with no internet access can use offline activation: a person carries a request code to a computer with internet and brings back a license file. Ask for a fixed-term license, which needs no check-in. Automatic update checks are switched off with Updates.Enabled = false in settings.json.
Automatic updates: the license server decides per license whether a new version is only announced or installed automatically. An automatic install never starts while a DICOM association is open, and you can limit it to a maintenance window. The downloaded package must match the SHA-256 in the signed answer, or it is refused. If your change-control process does not allow unattended installs, set Updates.Enabled = false.
Encrypted secrets (DPAPI)
These values are encrypted with Windows DPAPI before they are written to disk:
- the database connection string;
- the SMTP password;
- the password of a TLS certificate file;
- cloud storage keys and service account files;
- the license key entered in the setup wizard.
The encryption uses DPAPI machine scope, so the service and an elevated admin app can both read the values. This has two consequences:
- A secret only works on the machine that encrypted it. After moving to a new server, enter the connection string and the other secrets again.
- Any process on that machine that can read
settings.jsoncan decrypt the values. The protection therefore rests on the folder permissions below, so do not loosen them. Use a database login with rights on the PACS database only, notsa.
Service account
The installer creates the Windows service PrologicSign PACS (service name PrologicSignPacs). It runs as LocalSystem, starts automatically (delayed start) and restarts after 1 minute on failure. The installer has no option for another account, and running under a different account has not been tested for this release. LocalSystem has full rights on the machine, so treat the server accordingly: dedicate it to the PACS where you can, and keep it patched and limited to the administrators who need it.
Folder permissions
The installer sets these permissions on C:\ProgramData\PrologicSign\PACS, with inheritance from the parent folder turned off:
| Folder | SYSTEM, Administrators | Users |
|---|---|---|
PACS\ (settings.json, pacs.db) | Full control | Can list this folder only; no access to the files in it |
PACS\logs\ | Full control | Read |
PACS\studies\, PACS\spool\ | Full control | No access |
- A folder the product creates later (for example a new storage folder) gets SYSTEM, Administrators and the service account only, with nothing inherited.
- A folder that already exists keeps its permissions. If you point storage at an existing folder such as
D:\PACS, check its permissions yourself: the root of a data drive normally lets Authenticated Users modify files, and the product does not warn about this. - On a network share, the share and NTFS permissions apply.
- Program files go to
C:\Program Files\PrologicSign\PACS, where only administrators can write. - On a viewer-only installation the data folder holds only the license file, and every user of the computer can read it.
- Uninstalling keeps the data unless you ask for it to be removed. A storage folder elsewhere and an external database are never touched.
Admin access: local named pipes
The admin app talks to the service over a named pipe on the same computer. The service has no web interface and no remote admin port.
- The pipe allows Administrators and SYSTEM only and denies network logons. Inheritance is off, so nothing else is added. The admin app therefore asks for administrator rights (a UAC prompt) when it starts.
- The service creates the pipe as the first instance. If another process already holds the name, the service refuses to share it.
- Requests are limited in size and time (60 seconds per request), and at most 8 admin windows can connect at once.
- A second pipe,
\\.\pipe\PrologicSign.PACS.Status.v1, is read-only for signed-in local users and denied to network logons. It is used by the tray icon and returns the health lights, a headline, the last image time, the sender's AE title and the images received in the last hour. It returns no patient data, paths or settings.
Audit (activity) log
The activity log is a table in the PACS database, shown in the admin app under Activity log, where it can be filtered and exported. It records:
- queries, retrieves and sends, with the calling AE title and the number of matches or images;
- receive refusals and duplicates (successful stores are counted, not listed one by one);
- license changes, settings reloads, routing rule changes, report actions and study deletions, with the Windows user who made them.
Entries are kept for 365 days by default. You can set 1 to 3,650 days, or keep them for ever. Check this against your own retention policy.
What it does not do yet:
- It does not record the search terms of a query, or which studies and patients a retrieve or send covered.
- It does not record studies viewed in the admin app.
- Rejected connections appear in the service log, not in the activity log.
- A settings change is recorded as "settings reloaded" with the user, without old and new values.
- It has no tamper evidence. Anyone with write access to the database can change it.
- Writing an entry never holds up DICOM traffic. If the database stays locked and more than 256 entries are waiting, new entries are dropped and the number dropped is written to the service log.
Service logs
- Daily files in
PACS\logs\(service-yyyyMMdd.log, and a.clefJSON copy for tools). A file that reaches 50 MB continues in a new one, and files older than 31 days are deleted. Both limits can be changed. - The PACS does not write patient names to the service log. An automated test stores an image with a marker patient name and confirms the name appears in none of the log files.
- Logs do contain UIDs and AE titles, which can be linked back to a study, and the local Users group can read this folder. If that does not suit your site, remove the Users entry from
PACS\logs\. - When an image cannot be parsed, the error text is stored in the activity log entry, and such text could quote a value from the file. Treat the activity log as patient data.
- Passwords and connection strings are not logged.
- Leave the
Logging.DicomTraceoption off unless support asks you to turn it on. It adds per-connection detail. - Fatal errors also go to the Windows Application log, source PrologicSign PACS.
Network protection you need to set up
The DICOM defaults favour getting connected. Tighten them before going live:
- Firewall. Allow the DICOM port only from your modality and workstation subnets. The firewall rule offered by the setup wizard is not limited by subnet, so add or replace it:
New-NetFirewallRule -DisplayName "PrologicSign PACS (DICOM)" -Direction Inbound -Protocol TCP -LocalPort 11112 ` -Action Allow -Profile Domain,Private -RemoteAddress 10.20.0.0/16,10.30.5.0/24 - Allowed calling AE titles. The list is empty by default, which means any AE title is accepted. Fill it in under Settings. An AE title is a name the sender picks for itself, so this is a filter and not authentication.
- Listen address. The default
0.0.0.0means every network card. Enter the address of the imaging network instead. - Keep DICOM traffic on a trusted network. It is not encrypted in 1.0.0. Across sites, use a VPN or an encrypted tunnel.
- Consider "Keep existing" for duplicates. The default, Replace, lets any allowed sender overwrite an image it knows the SOP Instance UID of.
- Outbound: allow HTTPS to
dicomkit.plogic.devfor online activation, check-in and updates, or use offline activation.
Allowing the unsigned installer
The 1.0.0 installer is not yet signed with a Windows code-signing certificate. Windows SmartScreen may show "Windows protected your PC" and "Unknown publisher". This is expected for this version. A Publisher rule cannot match the file, so allow it by hash or by path. You never need to add a certificate to a trusted store for this product, and the installer never installs one.
- Check the file. Download
PrologicSignPACS-1.0.0-x64.msiandSHA256SUMS.txtonly fromhttps://pacs.plogic.dev. The first line ofSHA256SUMS.txtis the checksum of the MSI, and the other lines are the program files it installs.$expected = (Get-Content .\SHA256SUMS.txt -TotalCount 1).Split(' ')[0] $actual = (Get-FileHash .\PrologicSignPACS-1.0.0-x64.msi -Algorithm SHA256).Hash if ($actual -eq $expected) { 'MSI checksum OK' } else { 'MISMATCH - do not install' } - Unblock the file, only after the checksum matches. This removes the "from the internet" mark that makes SmartScreen ask. Deployment tools that run
msiexec /i ... /qn(Intune, Configuration Manager, Group Policy) do not show SmartScreen.Unblock-File .\PrologicSignPACS-1.0.0-x64.msi - AppLocker. Add a hash rule for the MSI, and a hash or path rule for the program folder. Run this on a test machine after installing, and review the XML before you merge it:
Hash rules must be renewed for every new version, including automatic updates. A path rule for$info = @(Get-AppLockerFileInformation -Path .\PrologicSignPACS-1.0.0-x64.msi) $info += Get-AppLockerFileInformation -Directory 'C:\Program Files\PrologicSign\PACS' -Recurse -FileType Exe, Dll $info | New-AppLockerPolicy -RuleType Hash -User Everyone -Optimize -Xml | Out-File .\PrologicSignPACS-applocker.xml Set-AppLockerPolicy -XmlPolicy .\PrologicSignPACS-applocker.xml -Merge%PROGRAMFILES%\PrologicSign\PACS\*does not need renewing, and only administrators can write there. - WDAC / App Control for Business. Build a supplemental policy from the installed program folder, using hash rules or a file-path rule. Merge it with your base policy and deploy it the usual way:
New-CIPolicy -Level Hash -Fallback FilePath -ScanPath 'C:\Program Files\PrologicSign\PACS' -UserPEs ` -FilePath .\PrologicSignPACS-wdac.xml # or a path rule: New-CIPolicyRule -FilePathRule 'C:\Program Files\PrologicSign\PACS\*'
What protects you without the Windows certificate: the program files carry the PrologicSign strong-name signature, licenses are signed and checked by the PACS, and updates are accepted only when the update answer is signed by PrologicSign and the package matches its SHA-256. A strong name identifies the files but is not checked by Windows, so the checksum in step 1 is your check on the download.
The next release will be signed by PrologicSign Technology. A Publisher or signer rule can then replace the hash rules. If your organisation only allows signed software, contact support and we will help your IT team.
Reliability evidence
These are our own tests, run in October 2026 on a development PC (Windows 11, 32 logical CPUs, local NVMe) with synthetic data. Client and server ran on the same machine. They show how the service behaved under these conditions and do not predict results on your hardware.
Soak test, 150 minutes, real service host with the built-in SQLite database, while the PC was also running other builds:
- 64,368 images acknowledged (34.0 GiB), with 8,427 C-FIND, 423 C-GET and 282 C-MOVE operations alongside.
- 11 injected faults: database write-locked for 120 seconds, disk reaching its free-space limit, and a routing destination killed for 120 seconds. 99 transfers were also cut off mid-way.
- 0 acknowledged images lost, and no half-written files or files without an index row.
- 1,014 stores were refused and retried by the sender, nearly all of them during the disk-full faults. 4 C-FIND requests returned an error and 4 associations had to reconnect.
- Memory and handles showed no upward trend over the last hour (working set about 172 to 206 MB).
A later 10-minute run with 6 injected faults on the merged code also lost no images. The longest run on record is 150 minutes. We have no multi-day soak result.
Concurrency and bombardment tests, each followed by a full integrity check of files against the index:
| Scenario | Result |
|---|---|
| 64 associations, 20,480 small images (8 KiB each), built-in SQLite | 3,506 images per second, 0 errors, 0 lost. |
| The same 300 SOP instances sent from 8 associations at once | 2,400 of 2,400 succeeded, stored once each, for both duplicate policies. |
| SQL Server taken offline for 30 seconds during a flood | 10,858 acknowledged with Replace and 9,191 with Keep existing, all indexed. Senders got retryable refusals while it was down. The service was healthy again about 11 seconds after the database returned. |
| Listener, database and full service restarts, about 40 operations during traffic | 24,000 of 24,000 images indexed, for both duplicate policies. |
| Connection pool limited to 20, with 200 query associations and 32 storing | 1,000 queries and 6,400 stores, 0 failures. Every connection was returned. |
This testing found 8 bugs, all fixed, including one where images could be lost from the index after a database failure when the duplicate policy was Keep existing.
Not covered:
- MySQL / MariaDB and PostgreSQL were not stress-tested, because no server was available. SQL Server was tested on LocalDB.
- A power cut between writing a file and committing its index row can leave an unindexed file. With Keep existing, a resend of that image is then acknowledged without indexing it. The index check on the Storage page repairs this.
- The connection-limit test ran at 512 associations. The shipped default is 128.
Known limitations in 1.0.0
Our code review of the product left these open. Plan for them:
- No DICOM TLS. The code is written, but 1.0.0 runs the plain port only. TLS arrives with a later DICOM library release.
- Open by default. Any AE title, every network interface. The setup wizard does not ask for an allowed list. See above.
- Allowed senders are trusted fully. Any allowed AE can query every patient, overwrite a stored image when the duplicate policy is Replace, and ask for any study to be moved to any configured destination. One request can cover a whole patient, and requests are not rate-limited per caller.
- The SOP Instance UID in the command is not compared with the one inside the file.
- Disk use. Large incoming images are spooled to the system drive before the free-space check runs, and the check is on the storage volume. Watch free space on C:. Email alerts can watch the storage, data and spool folders. Storage on a network share has no free-space check.
- Patient-level queries run one database query per patient and can be slow on a very large archive.
- Audit log gaps and the DPAPI machine-scope limit, both described above.
- No check of folder permissions at start-up or when you choose a storage folder.
- The installer is unsigned in this release.
The security review so far has been done by us. No independent penetration test or third-party audit has been carried out. PrologicSign makes no claim of compliance with, or certification under, any regulation or standard. Assessing the product against your own obligations remains with your organisation, and we will answer your security questionnaire as far as we can: contact us.
Troubleshooting
What each message means and what to do about it. The messages are written here as PrologicSign PACS 1.0.0 shows them.
First checks for any problem
- Open PrologicSign PACS Admin and look at the Health page. It gives the current state and the reason for anything amber or red.
- Is the service running, and is the port listening? Run these on the PACS computer (11112 is the default port):
Get-Service PrologicSignPacs Get-NetTCPConnection -LocalPort 11112 -State Listen - Can the other device reach it? Run this on that device, or on a computer in the same network:
Test-NetConnection pacs-host -Port 11112 - Read the logs (below). DICOM status codes are hexadecimal: the sending device's log shows the code, and this PACS records the matching reason.
| Log | Where | What to look for |
|---|---|---|
| Activity log | Admin app › Activity log | One line per operation: refused images, sends, queries, retrieves, settings and security. Filter to failures. |
| Service log | C:\ProgramData\PrologicSign\PACS\logs\service-<yyyyMMdd>.log, or Admin app › Logs | Start-up, port problems, database retries, errors. Rejected associations are recorded here, not in the activity log. |
| Admin app errors | C:\ProgramData\PrologicSign\PACS\logs\admin-errors.log | Unexpected errors in the admin app itself. |
| Windows Event Log | Application log, source "PrologicSign PACS", event ID 1000 | Fatal errors only: the service could not run. |
The association is rejected (before any image is sent)
| Symptom | Cause | Fix |
|---|---|---|
| Rejected: called AE not recognized | The device calls a different AE title and "Require called AE match" is on. | Enter this PACS's exact AE title on the device. AE titles are case-sensitive. The default is PROLOGIC_PACS. |
| Rejected: calling AE not recognized | The allowed calling AE list is filled in and the device's AE title is not on it. | Add the device's AE title to the list, or empty the list. |
| Rejected, transient (local limit exceeded) | More associations are open than the limit allows: 128 per listener by default. Health warns at 80% of the limit. | It usually clears on its own and the device retries. If it continues, look for a device that opens connections and never closes them. The limit is Health.Listener.MaxAssociations in settings.json (4 to 1024). |
| Connection refused or timed out | The service is stopped, the IP address or port is wrong, a firewall blocks it, or the PACS listens on a different network card. | Follow the first checks. The firewall rule offered by the setup wizard covers Domain and Private networks only; check any network firewall between the devices too. |
| C-MOVE and C-GET contexts refused, while C-STORE and C-FIND work; or at most 2 simultaneous associations | The DicomKit runtime license on this computer has fallen back to its Community level. That license arrives with activation. | Press Check in now on the License page. If it stays this way, send a support bundle. |
To test from another computer, use any DICOM echo tool, for example DCMTK: echoscu -aet TESTSCU -aec PROLOGIC_PACS pacs-host 11112.
Test (C-ECHO) to a destination
| Result | Meaning and fix |
|---|---|
| C-ECHO succeeded | The destination is reachable and accepts our AE title. |
| Connection refused or timed out | Wrong host or port, the remote service is stopped, or a firewall blocks it. From the PACS computer: Test-NetConnection host -Port 104, with that destination's port. |
| Association rejected | The remote side does not know our calling AE title, or the called AE title is wrong. Check both titles on both sides. Most PACS refuse callers they do not know, so register this PACS there: AE title, IP address and port. |
| C-ECHO returned status 0x…. | The association worked but the remote side refused the echo. Read that system's log. |
C-STORE: receiving images
| Status | Meaning here | Fix |
|---|---|---|
| 0x0000 Success | Stored, or a duplicate handled by the duplicate policy. | None. |
| 0xA700 "Storage disk is full." | Free space on the storage disk is below the limit (2,048 MB by default). | Free some space or move the storage folder. The device retries; nothing is lost if it keeps its queue. |
| 0xA700 "Index unavailable." | The database did not accept the index entry: the database server is down, its disk is full, or a SQLite file is locked. | Fix the database, then let the device send again. |
| 0xA700 with a disk error message | Writing the file failed: permissions, or a network share that is not available. | Check that LocalSystem can write to the storage folder. For a share, grant the computer account (DOMAIN\PACSSERVER$) access. A full share shows as write failures, because free space on a share cannot be read. |
| 0xC000 "Data set could not be read." | The image is corrupt or is not valid DICOM. | Check the sending device and send again. |
| 0xC000 "Study and Series Instance UID are required." | The image has no Study or Series Instance UID. | Fix the device or tool that created the image. |
| 0x0124 Refused: not authorized | The license does not allow receiving. The status comes with the reason. | See license messages. |
| Presentation context rejected (no matching transfer syntax) | The device offered only syntaxes this PACS is not set to accept, for example JPEG Extended or video with the default list. | Let the device also offer Explicit VR Little Endian, or add the syntax on the Settings page. |
| Association aborted during a very large image | One data set is larger than 4 GB, or the connection was idle for more than 120 seconds. | Check the device and the network. |
C-FIND: queries
| Symptom or status | Cause | Fix |
|---|---|---|
| No results, no error | No study matches, or the query used Modality Worklist. This PACS does not offer a worklist and returns nothing for it. | Check the query keys. Dates use YYYYMMDD or ranges such as 20260101-20260131. Names match the stored form (DOE^JOHN); the wildcards * and ? work. |
| 0xA700 Out of Resources, more than 100,000 matches | The query matches too many records. Results stop at 100,000. | Narrow the query by date range, modality or patient ID. |
| 0xC000 Unable to process | The database could not be read. | See database problems and the activity log. |
| 0x0124 Refused: not authorized | The license or product does not include query/retrieve. A Router without PACS has none. | See license messages. |
| Fewer series or images than expected | Images are still arriving, or some were refused. | Look for Receive failures in the activity log. |
C-MOVE and C-GET: retrieves
With C-MOVE this PACS opens a new connection to the address configured for the destination AE title and sends the images there, so the destination must be listening and must accept connections from this PACS. C-GET returns the images on the requester's own connection and needs neither a destination entry nor an inbound firewall rule on the requester's side.
| Status | Cause | Fix |
|---|---|---|
| 0xA801 Move destination unknown | The destination AE title is not in the Destinations list. The match is exact and case-sensitive. This PACS never sends to an address taken from the request. | Add the workstation on the Destinations page with its exact AE title, IP address and port. |
| 0xA900 Identifier does not match SOP class | The request lacks the unique key for its level, for example a Study-level move without a Study Instance UID. | Fix the requester's query level and keys. |
| 0xA702 Out of resources, unable to perform sub-operations | The request covers more than 65,535 images, or every image failed to send. | If every image failed: the destination is unreachable, rejects our AE title, or does not accept the transfer syntax. Run Test (C-ECHO) for it, and check that the workstation is listening and its firewall allows this PACS in. |
| 0xB000 Warning: sub-operations complete, one or more failures | Some images were sent and some failed. | Usually files missing after a bad restore or move, a destination that refuses some SOP classes, or a compressed image that could not be decompressed. Read the activity log and the service log. |
| 0x0122 on single images | The destination refused the SOP class, or the stored syntax with no possible fallback. | Check which SOP classes the destination accepts. |
| 0x0124 Refused: not authorized | The license or product does not include query/retrieve. | See license messages. |
| 0x0000 with 0 images | Nothing matched the UIDs requested. | Check the UIDs with a C-FIND first. |
| 0xFE00 Cancel | The requester cancelled. | None. |
| Slow, or stopped part-way | The destination must accept each image within 60 seconds. | Check the destination's load and the network. |
Manual send. A send job ends as Completed, Completed with errors, Failed or Cancelled, and lists the first 200 per-image failures with their reason, for example refused with status 0xA700. That status is the destination's own answer, so read its log. Send jobs are kept in memory: after a service restart the list is empty and an interrupted job must be started again.
Port in use and service start-up
If the DICOM port or the database is not ready, the service does not stop. It tries again after 2, 5, 10 and 30 seconds and then every 60 seconds, and shows the reason in the admin app and the service log.
| Message | Fix |
|---|---|
| "Port 11112 on 0.0.0.0 is already in use by another program. Choose a free port in Settings." | Find the program with the commands below, stop it, or choose another port. Every device must then use the new port. |
| "Port 11112 is in use, most likely by this PACS service, which already listens on it. That is fine." | Nothing to fix. The setup wizard saw this PACS's own listener. |
| "Windows does not allow port 104 on 0.0.0.0 (it may be reserved or excluded). Choose another port in Settings." | Windows has reserved the port. See the excluded ranges below and choose a port outside them. |
| "10.0.0.5 is not an IP address of this computer. Choose one of its addresses, or 0.0.0.0 for all of them, in Settings." | The listen address is wrong, often after a network change. Choose a current address or 0.0.0.0. |
| "Setup has not been completed. Open the PrologicSign PACS admin app and finish the setup wizard." | The service stays idle until the wizard is finished. Open the admin app and finish it. |
| "…settings.json could not be read…" | The PACS is not running because the settings file is damaged or was edited incorrectly. Restore it from a backup, or correct the edit. Stop the service before editing this file by hand. |
# Which program holds the port?
Get-Process -Id (Get-NetTCPConnection -LocalPort 11112 -State Listen).OwningProcess
# Which ports has Windows reserved?
netsh interface ipv4 show excludedportrange protocol=tcp
Database
While the database cannot be reached, C-STORE answers 0xA700 so that devices retry later. Short interruptions are retried automatically.
| Message or symptom | Fix |
|---|---|
| "Cannot reach …" or "… did not answer in time." | Check the host name, port and instance name, and that the database service is running. Check the firewall on the database server (SQL Server 1433, MySQL 3306, PostgreSQL 5432), and SQL Server Browser for named instances. |
"The server refused the sign-in." (or the PostgreSQL version, which mentions pg_hba.conf) | Check the user name and password. On MySQL, check that the account's host part matches the PACS computer. With Windows authentication, the service connects as the computer account (DOMAIN\PACSSERVER$), so that account needs the login. |
| "Signed in, but … does not exist on the server." | Create the database empty, or let setup create it if this user may create databases. |
| "Signed in, but this user is not allowed to do what setup needs…" | Grant the rights to create and change tables and indexes for setup and upgrades; read, insert, update and delete are enough in normal running. |
| "The encrypted connection failed: this PC does not trust the server's certificate…" | Install the server's CA certificate on the PACS computer. TrustServerCertificate=True also works on SQL Server, but it accepts the certificate without checking it. |
| After moving to a new computer, the connection string cannot be decrypted | The saved connection string is encrypted for the original computer (Windows DPAPI). Enter it again in Settings. |
| Built-in database (SQLite): locked, or errors after a backup | Never copy pacs.db alone while the service runs, and never delete pacs.db-wal or pacs.db-shm while it runs. |
License messages
The License page in the admin app shows the current state and message. A key is needed from day one: with no active key the PACS answers C-ECHO only and receives nothing, and the admin app opens the License page. To evaluate, get a free Developer key.
| Message | Meaning | Fix |
|---|---|---|
| "No license key is installed. Enter a license key (a free 7-day Developer key is available for testing)." | No active key on this computer. C-ECHO answers, nothing is received. Images already stored stay on disk. | Activate a key on the License page. To evaluate, get a free Developer key. |
| "That does not look like a license key." | The text entered is not in the key format (PLGIC-XXX-XXXXX-XXXXX-XXXXX-XXXXX). | Copy the key again from the customer portal. |
| "The license server could not be reached. Check the internet connection and proxy." | The service has no HTTPS access to dicomkit.plogic.dev. | Allow outbound HTTPS (443) for the service, which runs as LocalSystem, or use offline activation. |
| "The answer did not come from the PrologicSign license API (a proxy or firewall may have answered)." | A proxy or firewall replied instead of the license server. | Allow dicomkit.plogic.dev through it, or use offline activation. |
| "All N seat(s) of this license are in use." | Each seat is one machine. | Free a seat under Machines on the license page in the customer portal. |
| "This machine is not activated for the license (the seat was released)." | This computer's seat was freed. | Activate the key again. |
| "The license file was made for another computer." | A license file is bound to one machine. | Activate on this computer, or make a new offline request here. |
| "The license file is for another product…" | For example, a DicomKit license file. | Use the PrologicSign PACS license file. |
| "The license file has been changed or damaged." or "The license file is not valid." | The file does not pass its signature check. | Download it again from the portal. |
| "… is not in your product (…). Upgrade on dicomkit.plogic.dev…" or "Not in your product" | The key's product does not include that module. Admin pages for it show this message. | Change the product in the portal. The same key switches the module on at the next check-in; Check in now does it at once. |
| "The license server has not been reached since …; the license keeps working offline until …" | A warning, shown when the last check-in is over 48 hours old. Everything still works. | Restore HTTPS access before the date shown. |
| "This computer has not reached the PrologicSign license server since …, and a license works offline for 7 days." | The offline period is over. | Restore HTTPS access and press Check in now, or ask support for an offline license file. |
| "The … license ended on …" or "The license server refused this license (…)" | Expired or revoked. See what still works in the FAQ. | Renew in the customer portal. |
| "Binary integrity check FAILED: …" | The program files were changed or replaced. The installation runs as unlicensed. | Install again from the official installer. If it continues, send a support bundle. |
The admin app asks for administrator rights
This is expected. PrologicSign PACS Admin talks to the service over a local named pipe that only Administrators and SYSTEM may use, and it can start and stop the Windows service. So it asks once at each start, with a Windows User Account Control prompt.
| Message | Fix |
|---|---|
| "The admin app needs administrator rights to manage the PACS service, and Windows did not give them (the prompt was answered No)." | Start it again and answer Yes, or sign in as an administrator. |
| "Permission denied": "Windows refused the request." | Close the admin app and start it with Run as administrator, or ask your Windows administrator for the rights to manage services. |
| "Can't reach the PACS service" | Check that the service is running: use Start in the status bar, then try again. |
| "Service not installed" | Run the PrologicSign PACS installer, then open the admin app again. |
| "The service did not respond in time" | It may still be busy. Wait a moment and check the status bar, or read the Windows Event Viewer (Application log). |
On a computer with a PACS or Router service, the viewer asks in the same way each time it starts. On a computer with only the viewer, activating the license needs administrator rights once.
Windows SmartScreen: "Windows protected your PC"
The 1.0.0 installer is not yet signed with a Windows code-signing certificate, so SmartScreen may show "Windows protected your PC" and "Unknown publisher". This is expected for this version and does not mean the file is unsafe. The next release is planned to be signed by PrologicSign Technology.
- Download the installer only from https://pacs.plogic.dev, never from a link in an email or a file-sharing site.
- Compare its SHA-256 checksum with the one published next to the download:
Get-FileHash .\PrologicSignPACS-1.0.0-x64.msi -Algorithm SHA256 - Run the installer as an administrator. If the message appears, click More info, check the file name, then click Run anyway.
Software deployment tools that run msiexec /i … /qn do not show SmartScreen. If your organisation allows only signed software, the Administrator guide shows how to allow this version by hash or path under AppLocker or WDAC, or contact support and we will help your IT team.
Frequently asked questions
- What still works when a license ends?
- A paid PACS keeps receiving images and answering query/retrieve, so a hospital never loses what modalities send. Manual send, routing, tag morphing, transcoding and the viewer stop until a key is entered. On PACS + Router products, forwarding continues for 7 more days, then pauses with the queue kept. A Router without PACS keeps receiving for 7 days; after that it refuses new images with 0x0124 and still forwards what it already holds. A license the server refused has no 7-day period. A Developer key that ended stops everything until it is renewed (once, for 7 more days) or a Pro or Enterprise key is entered.
- Does it need internet access?
- Not for DICOM. Subscriptions check in with the license server once a day and keep working for 7 days without a connection. A computer that is never online uses offline activation: a request code, then a license file from the customer portal.
- Which ports does it use?
- One inbound TCP port for DICOM, 11112 by default. Outbound connections go to your destinations, and HTTPS (443) to the license server.
- Is DICOM over TLS available?
- Not in 1.0.0, which uses plain TCP. Restrict who can reach the port with the firewall. An AE title allow-list is not authentication: the sender chooses its own name.
- Does it offer Modality Worklist?
- No. A worklist query returns no matches.
- Where are my images and settings?
- Under
C:\ProgramData\PrologicSign\PACS\unless you chose another storage folder:settings.json,pacs.dbfor the built-in database,logs\andstudies\. Images are standard DICOM files, stored as received. - Does uninstalling delete my data?
- Not by default. Data is removed only if you tick "Also delete all PACS data" or use
REMOVEDATA=1, and that touches onlyC:\ProgramData\PrologicSign\PACS. A storage folder elsewhere and an external database are never touched. - How do I move to a new computer?
- Free the seat under Machines in the customer portal and activate the key on the new computer. Copy the database, storage folder and
settings.jsontogether, then enter any external database connection string again.
Sending a support bundle
A support bundle is a zip file with what support needs to diagnose a problem.
- In the admin app open Health and click Create support bundle....
- Choose where to save it. A copy also stays in
C:\ProgramData\PrologicSign\PACS\support\, where the newest 5 are kept. The name looks likePrologicSign-PACS-support-<computer>-<date>-<time>.zip. - Describe the problem in the issue tracker (reports are private between you and support) or on the contact page. Say what you expected, what happened, when, and which device was involved. Both take text only.
- Email the zip to support@plogic.dev with your license ID. Never send your license key, a password, or a connection string. If the file is too large to email, say so and ask for another way to send it.
| In the bundle | Detail |
|---|---|
logs/ | Service logs from the last 7 days, up to 300 MB before compression. |
health.json | The Health page's state at that moment. |
settings.json | Your settings with passwords, connection strings and keys removed. |
versions.txt | Product, library and .NET versions. |
environment.txt | Computer name, Windows version, memory, disks and time zone. |
No images or study data are included. The logs and settings can still contain AE titles, network addresses, file paths and DICOM UIDs, so handle the file as your site's policy requires.
The bundle is made by the service. If the service will not start, send the files in C:\ProgramData\PrologicSign\PACS\logs\ and any Event Log entries with ID 1000 instead. admin-errors.log is not part of the bundle, so add it when the problem is in the admin app.
PrologicSign PACS is not a medical device.
Release notes
What is in PrologicSign PACS 1.0.0, how to install the unsigned installer, and what this version does not do yet.
1.0.0 2026-11-09
The first release of PrologicSign PACS from PrologicSign Technology: an archive, a router and a viewer for Windows, built on DicomKit 1.0.0. One installer covers every product, and one license key per computer decides what runs.
Products
PrologicSign PACS is sold as six products, each in three editions: Developer, Pro and Enterprise.
| Product | Modules | What is installed |
|---|---|---|
| PrologicSign PACS | PACS | Windows service and admin app |
| PrologicSign Router | Router | Windows service and admin app |
| PrologicSign Viewer | Viewer | Viewer only: no service, no admin app, no setup wizard |
| PrologicSign PACS + Viewer | PACS, Viewer | Windows service, admin app and viewer |
| PrologicSign PACS + Router | PACS, Router | Windows service and admin app |
| PrologicSign PACS + Router + Viewer | PACS, Router, Viewer | Windows service, admin app and viewer |
What each edition includes
A feature is available when the edition includes it and the product has the module it belongs to.
| Feature | Module | Developer | Pro | Enterprise |
|---|---|---|---|---|
| Receive and store images | PACS or Router | Yes | Yes | Yes |
| Query/retrieve by other systems (C-FIND, C-MOVE, C-GET) | PACS | Yes | Yes | Yes |
| Manual send to another DICOM node | PACS or Router | Yes | Yes | Yes |
| Auto-routing, persistent queue, retry and replay | Router | Yes | Yes | Yes |
| Tag morphing | Router | Yes | Yes | Yes |
| Transcoding | PACS or Router | Yes | Yes | Yes |
| Basic viewer | Viewer | Yes | Yes | Yes |
| Full viewer | Viewer | Yes | No | Yes |
| Reports | PACS | Yes | No | Yes |
| Cloud export and cloud forward | PACS or Router | Yes | No | Yes |
| Your own branding (white label) | Any | Preview only | Yes | Yes |
Developer is for evaluation and testing, not for production: one machine, 7 days, renewable once.
In every product
- One installer.
PrologicSignPACS-1.0.0-x64.msicarries its own .NET runtime. Choose the product on the installer's Product page, or passPRODUCT=<code>for a silent install. - One license key per computer, shared by the service, the admin app and the viewer. Online activation, or offline activation with a request file and a license file from the customer portal.
- A key is needed from day one. To evaluate, get a free Developer key from dicomkit.plogic.dev. With no active key the PACS answers C-ECHO only and receives nothing, images already stored stay on disk, and the admin app opens the License page.
- Automatic updates accepted only when the update answer is signed by PrologicSign and the package matches its published SHA-256 checksum.
Windows service and admin app
Installed with every product except Viewer alone.
- A Windows service that runs with nobody signed in and restarts itself after a failure.
- A setup wizard for the database, this PACS (AE title, port, storage folder) and destinations.
- Study index and queue in the built-in SQLite database, or in SQL Server, MySQL / MariaDB or PostgreSQL. Images are files in the storage folder; the connection string is stored encrypted for the machine.
- Admin app pages for the dashboard, health, studies, destinations with C-ECHO tests, send jobs, activity log, logs, email alerts, SMTP settings, branding, settings and license. A page whose module is not in your product stays in the menu and says so.
PACS module
- Receives any storage SOP class and stores images exactly as received: no decompression and no recompression.
- Answers C-FIND, C-MOVE and C-GET from other systems. C-MOVE sends only to configured destinations.
- Storage management: retention, import, index check, statistics and study deletion.
- Download a study as a DICOM folder, ZIP or JPEG, or send it by email.
- Reports (Enterprise): templates, finalize and amend with version history, PDF output stored in the study as Encapsulated PDF, and email through your SMTP server.
Router module
- Routing rules, with a persistent queue, retry with back-off and replay.
- Tag morphing on the way through, for example patient IDs, accession number and institution.
- Transcoding on forward: an image the destination cannot accept as stored is decompressed and sent.
- Cloud forward (Enterprise): Amazon S3, Azure Blob Storage and Google Drive.
- Router without PACS: each routed image is deleted once every forward of it has succeeded, and there is no query/retrieve. An image whose forward failed for good is kept by default until it is replayed or deleted by hand, and images that match no rule are kept.
Viewer module
| Basic viewer (Pro) | Full viewer (Enterprise, Developer) | |
|---|---|---|
| Largest layout | 1 x 2 | 5 x 5 |
| Cine | No | Yes |
| Measurements | Length | Length, angle, Cobb angle, probe, rectangle, ellipse, freehand and text |
| Measurements kept between sessions | No | Yes |
- Opens local files, folders, DICOMDIR and CDs. Without an activated license it does this in basic mode, with an Activate button.
- With a license it also searches other PACS with C-FIND and retrieves with C-GET or C-MOVE, into a size-limited local cache.
- With a PACS on the same computer it opens studies from the service, and asks for administrator rights when it starts.
Installing: the Windows "Unknown publisher" message
The 1.0.0 installer is not yet signed with a Windows code-signing certificate. When you run it, Windows SmartScreen may show "Windows protected your PC" and "Unknown publisher". This is expected for this version and does not mean the file is unsafe.
- Download the installer only from pacs.plogic.dev.
- Optional, recommended for IT teams: compare the file's SHA-256 checksum with the one published next to the download.
SHA256SUMS.txt, next to the download, lists it and the checksum of every program file in the installer.
The administrator guide shows how to allow the installer under AppLocker or WDAC.Get-FileHash .\PrologicSignPACS-1.0.0-x64.msi -Algorithm SHA256 - Run the installer as an administrator. If the SmartScreen message appears, click More info, check the file name, then click Run anyway.
What protects you even without the Windows certificate:
- The program files carry the PrologicSign strong-name signature.
- Licenses are signed by the PrologicSign license server and checked by the PACS.
- Automatic updates are accepted only when the update answer is signed by PrologicSign and the downloaded package matches its published SHA-256 checksum; anything else is refused.
Next release: the installer and program files will be signed with a "PrologicSign Technology" code-signing certificate, so Windows will show a verified publisher. Installed systems receive it through the normal automatic update; nothing needs to be reinstalled.
If your organisation only allows signed software, contact PrologicSign support and we will help your IT team.
Known limitations
- No DICOM TLS in this version. DicomKit 1.0.0 has no TLS, so all DICOM traffic is plain TCP. Keep it on a trusted network or VPN. The TLS switches in the admin app and the viewer are disabled in 1.0.0. TLS support is built in the product and arrives with DicomKit 1.0.1. It has not been tested on a shipped build.
- MySQL / MariaDB and PostgreSQL were not exercised against a server in the release tests. The test machine had neither server, so those tests did not run. The built-in SQLite database and SQL Server (LocalDB) passed. If you plan to use MySQL, MariaDB or PostgreSQL, try it on a test system first.
- Windows only. 64-bit Windows 10, Windows 11, or Windows Server 2019 or later. PrologicSign PACS 1.0.0 has no Linux version and no web admin or web viewer.
- The installer and program files have no Windows code-signing signature until the next release (see above). A Publisher rule in AppLocker or WDAC cannot match them yet, so allow them by hash or path.
- Cloud forward has not been tested against real cloud providers. The Amazon S3, Azure Blob Storage and Google Drive connections were tested only against local stand-ins for those services, and the cloud case in the release test run has not been run. Use Test connection and send a test study to your own account before relying on it.
- No HL7 and no Modality Worklist. A worklist query is not offered and returns no matches.
- Transcoding only decompresses. Recompressing to another compressed transfer syntax is not available.
- Deflated and Explicit VR Big Endian are off by default. This version cannot forward or send images in those syntaxes correctly (a DicomKit 1.0.0 limitation). Switch them on only if the PACS never forwards or sends those images.
- The viewer has no MPR or 3D.
- The release test figures are from an earlier build, and the run does not cover everything. The latest run (2026-10-28) was made on a ship build from before the version number was set to 1.0.0 and before the changes of 2026-11-09: a key needed from day one (that build still had a trial without a key), the viewer asking for administrator rights on a PACS computer, and the disabled TLS switches. The run has not been repeated since those changes. On that earlier build, of 869 test rows, 376 passed, 0 failed, 2 were waived (the missing code-signing certificate) and 491 are pending. Most pending rows need an administrator run or a disposable test machine, or are manual checks. They include installer install and upgrade cases, the trial that build still had, reporting and study sharing, managed updates and the 2-hour soak test.