RTFM · Medical healthchecks
lb.saphira.dicom.qido: query the archive over HTTP (QIDO-RS)
DICOMweb is DICOM's modern REST dialect, and QIDO-RS is its search verb. The check queries a real endpoint with a synthetic key and demands the one thing a healthy QIDO service must return: HTTP 200 with application/dicom+json.
What it proves
The QIDO-RS read path end to end: the endpoint answers 200 and the content type is genuinely application/dicom+json; not a generic HTML error page in disguise. Continuous-safe and read-only. Kept separate from WADO and STOW by the package rule: query, retrieve and store are different capabilities and get different checks.
How it works
curl issues a GET with Accept: application/dicom+json to the configured full URL; including the AE-title path and query parameters, because that is what a real DICOMweb client sends. Both the status line and the Content-Type header are verified.
Configuration
| Variable / positional | Default | Meaning |
|---|---|---|
| $6 or LB_SAPHIRA_DICOM_QIDO_URL | (required) | Full QIDO URL incl. aets and query; per-VIP in dicom.qido/<service>.conf |
| LB_SAPHIRA_DICOMWEB_TLS_VERIFY | 0 | 1 = enforce certificate verification |
| LB_SAPHIRA_TIMEOUT | 3 | Transaction deadline |
Wiring it up
# ldirectord.cf - DICOMweb pool
virtual = 203.0.113.10:8081
protocol = tcp
scheduler = wlc
real = 192.168.20.23:8081 gate 1
checktype = external
checkcommand = "/var/lib/lb/saphira/lb.saphira.dicom.qido"
# /etc/saphira/lb-healthchecks.d/dicom.qido/pacs.conf
LB_SAPHIRA_DICOM_QIDO_URL=https://pacs.internal/dicomweb/aets/ACPACS/studies?PatientID=SAPHIRA-SYNTHETIC-HEALTHCHECK
Run it by hand
LB_SAPHIRA_DICOM_QIDO_URL='https://pacs/dicomweb/aets/ACPACS/studies?PatientID=X' \
/var/lib/lb/saphira/lb.saphira.dicom.qido pacs 8081 192.168.20.23 8081
echo $?
# 0 = 200 + application/dicom+json
# 1 = non-200, wrong content type, or connection failure
# 2 = no URL configured
Failure modes
- 200 with the wrong content type; a proxy or gateway answered instead of the DICOMweb service: the subtle failure this check exists for
- 401/403 under load: auth tiers degrading: visible here, not at the modality
Did we miss something?
If this page left something unanswered, found an error, or there is another subject you would like documented, tell us. Saphira’s documentation grows from real problems people need to solve.
Send feedback or request a new section →
Prefer not to do it yourself?
Everything needed to do the work yourself is documented here and remains free; we charge for human time, not for withholding knowledge. Sometimes the missing resource is simply time. The same people who build Saphira can provide paid professional help with implementation, migration, troubleshooting and administration.