DICOM Sender (DicomSenderSetting)
What this setting controls
DicomSenderSetting sends a DICOM dataset to a remote DICOM SCP using a C-STORE request.
It controls:
- remote host and port
- calling and called AE titles
- message template/message type context from sender base fields
This page documents serialized JSON fields and runtime behavior.
Shared reference
For canonical enum numeric mappings used across workflow JSON, see Workflow Enum and Interface Reference.
For Integrations code API interface contracts used by custom code, see IMessage in Integration Soup.
Runtime model
flowchart TD
A[Take current activity message] --> B[Require runtime object type DicomMessage]
B --> C[Load DICOM file from bytes]
C --> D[Create DicomCStoreRequest]
D --> E[Send using RemoteHost/RemotePort/OurAET/RemoteAET]
E --> F[Check returned DICOM status]
F --> G[Write text success response]
Important non-obvious behavior:
- sender validates the runtime message object type, not only
MessageType. - current implementation is C-STORE only.
- success response is plain text message content, not a DICOM response object.
JSON shape
Typical serialized shape:
{
"$type": "HL7Soup.Functions.Settings.Senders.DicomSenderSetting, HL7SoupWorkflow",
"Id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"Name": "Send to PACS",
"Version": 3,
"MessageType": 16,
"MessageTypeOptions": null,
"MessageTemplate": "${11111111-1111-1111-1111-111111111111 inbound}",
"RemoteHost": "127.0.0.1",
"RemotePort": 104,
"OurAET": "HL7SOUP_SCU",
"RemoteAET": "ANY_SCP",
"TimeoutSeconds": 30,
"Filters": "00000000-0000-0000-0000-000000000000",
"Transformers": "00000000-0000-0000-0000-000000000000",
"TransformersNotAvailable": false,
"Disabled": false
}
Connection fields
RemoteHost
Remote DICOM SCP host or IP.
RemotePort
Remote DICOM TCP port.
OurAET
Calling AE title.
RemoteAET
Called AE title.
Important outcome:
- AE title mismatch can fail association even with correct network routing.
TimeoutSeconds
Serialized timeout field.
Important runtime outcome:
- not clearly applied by the current sender runtime path.
Message fields
MessageType
Meaningful value for normal operation:
16=DICOM
MessageTemplate
Activity message source before sender execution.
Critical runtime limitation:
- sender requires
workflowInstance.Messageto be an actualDicomMessageobject. - text/JSON/XML messages with
MessageType = 16are still invalid at runtime.
MessageTypeOptions
Serialized via sender base; no practical specialized usage in this sender runtime path.
Response behavior
This sender is not based on SenderWithResponseSetting.
Runtime behavior:
- on success, sets a text response describing C-STORE success status.
- on failure, errors the workflow instance.
Practical outcome:
- downstream consumers should treat this activity response as text metadata.
Workflow linkage fields
Filters
GUID of sender filters.
Transformers
GUID of sender transformers.
TransformersNotAvailable
Serialized inherited activity field indicating transformer availability state.
Disabled
If true, activity disabled.
Id
Activity GUID.
Name
User-facing activity name.
UI behavior that affects JSON authors
- dialog does not expose
TimeoutSeconds; manual JSON values tend to round-trip back to constructor default on UI save. - dialog does not provide dedicated advanced DICOM operation mode options (sender remains C-STORE flow).
Defaults
New DicomSenderSetting defaults:
RemoteHost = "127.0.0.1"RemotePort = 104OurAET = "HL7SOUP_SCU"RemoteAET = "ANY_SCP"TimeoutSeconds = 30MessageType = 16
Pitfalls and hidden outcomes
MessageType = 16alone is insufficient; runtime object must truly beDicomMessage.- response is text, not DICOM.
TimeoutSecondscurrently serializes without clear runtime enforcement in this sender.- transformer usage that converts message object away from DICOM will break sending.
Examples
Basic C-STORE sender
{
"$type": "HL7Soup.Functions.Settings.Senders.DicomSenderSetting, HL7SoupWorkflow",
"Id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"Name": "Send to PACS",
"MessageType": 16,
"MessageTemplate": "${11111111-1111-1111-1111-111111111111 inbound}",
"RemoteHost": "10.0.0.25",
"RemotePort": 104,
"OurAET": "HL7SOUP_SCU",
"RemoteAET": "ANY_SCP"
}
Alternate AE title pairing
{
"$type": "HL7Soup.Functions.Settings.Senders.DicomSenderSetting, HL7SoupWorkflow",
"Id": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
"Name": "Send to Archive Node",
"MessageType": 16,
"MessageTemplate": "${22222222-2222-2222-2222-222222222222 outbound}",
"RemoteHost": "dicom.archive.local",
"RemotePort": 11112,
"OurAET": "HL7SOUP_SCU",
"RemoteAET": "ARCHIVE_SCP"
}