Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions docs/.vitepress/config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -95,22 +95,25 @@ export default defineConfig({
link: "/dicom-printer-2",
items: [
{ text: "Overview", link: "/dicom-printer-2/index.md" },
{ text: "Architecture & Design", link: "/dicom-printer-2/architecture" },
{ text: "Installation", link: "/dicom-printer-2/installation" },
{ text: "Command Line Options", link: "/dicom-printer-2/command-line" },
{
text: "Configuration",
link: "/dicom-printer-2/configuration",
items: [
{ text: "Settings", link: "/dicom-printer-2/config" },
{ text: "Configuration Reference", link: "/dicom-printer-2/config" },
{
text: "Actions",
link: "/dicom-printer-2/actions",
items: [
{ text: "Query", link: "/dicom-printer-2/actions/query" },
{ text: "Query Attributes", link: "/dicom-printer-2/actions/query-attributes" },
{ text: "Store", link: "/dicom-printer-2/actions/store" },
{ text: "Print", link: "/dicom-printer-2/actions/print" },
{ text: "Parse", link: "/dicom-printer-2/actions/parse" },
{ text: "SetTag", link: "/dicom-printer-2/actions/settag" },
{ text: "SetSequence", link: "/dicom-printer-2/actions/setsequence" },
{ text: "Save", link: "/dicom-printer-2/actions/save" },
{ text: "Image Manipulation", link: "/dicom-printer-2/actions/image-manipulation" },
{ text: "Run (Plugins)", link: "/dicom-printer-2/actions/run" },
Expand All @@ -137,7 +140,8 @@ export default defineConfig({
{ text: "Uninstallation", link: "/dicom-printer-2/uninstallation" },
{ text: "Upgrading", link: "/dicom-printer-2/upgrading" },
{ text: "Support", link: "/dicom-printer-2/support" },
{ text: "License", link: "/dicom-printer-2/license" }
{ text: "License", link: "/dicom-printer-2/license" },
{ text: "DICOM Conformance Statement", link: "/dicom-printer-2/conformance" }
]
},
],
Expand Down
62 changes: 30 additions & 32 deletions docs/dicom-printer-2/actions/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,39 +75,34 @@ Specifies the action to take when the performed action fails.
**Error Handling Modes:**

#### `Hold`
- The job is held in a suspended state
- The job will be retried after `SuspensionTime` minutes (configured in General section)
- The job remains in the queue until it succeeds or is manually discarded
- Use for temporary failures (network outages, PACS downtime)
- The job file remains on disk and workflow processing stops immediately
- The job is **not** automatically retried. It will only be re-processed if the service is restarted or if the file is manually "touched" (to update its creation time)
- Use for failures that require manual intervention or environment fixes before retrying

```xml
<Perform action="SendToPACS" onError="Hold"/>
```

#### `Suspend`
- The job is suspended indefinitely
- The job will not be automatically retried
- Manual intervention is required to resume the job
- Use for failures requiring human review
- The job is kept in memory and workflow processing stops at the failing action
- The job is automatically retried after `SuspensionTime` minutes (configured in the General section), resuming exactly from the action that failed
- Use for transient failures (e.g., temporary network glitches) where an automatic retry is appropriate

```xml
<Perform action="FindPatient" onError="Suspend"/>
```

#### `Ignore`
- The failure is logged but ignored
- Processing continues to the next workflow step
- The failure is logged but processing continues to the next workflow step
- Use for non-critical optional operations

```xml
<Perform action="SendAlert" onError="Ignore"/>
```

#### `Discard`
- The job is immediately discarded
- No retry is attempted
- The job is removed from the queue
- Use when failures are unrecoverable
- The job is immediately removed from the queue with no retry
- Use when a failure is unrecoverable

```xml
<Perform action="ExtractData" onError="Discard"/>
Expand Down Expand Up @@ -167,33 +162,36 @@ Complete example showing multiple actions:
<DicomPrinter>
<Actions>
<!-- Query worklist for patient data -->
<Query name="FindPatient" type="Worklist"
calledAE="RIS" callingAE="PRINTER" host="192.168.1.200" port="104">
<DcmTag tag="0040,0100">
<DcmSequence>
<DcmTag tag="0040,0002">#{Date}</DcmTag>
<DcmTag tag="0010,0020">#{PatientID}</DcmTag>
</DcmSequence>
</DcmTag>
<Query name="FindPatient" type="Worklist">
<ConnectionParameters>
<PeerAETitle>RIS</PeerAETitle>
<MyAETitle>PRINTER</MyAETitle>
<Host>192.168.1.200</Host>
<Port>104</Port>
</ConnectionParameters>
<DcmTag tag="(0010,0020)">#{PatientID}</DcmTag>
</Query>

<!-- Add metadata tags -->
<SetTag name="AddMetadata">
<DcmTag tag="0008,0020">#{Date}</DcmTag>
<DcmTag tag="0008,0080" value="Medical Center"/>
</SetTag>
<!-- Set metadata tags -->
<SetTag name="SetStudyDate" tag="(0008,0020)">#{Date}</SetTag>
<SetTag name="SetInstitution" tag="(0008,0080)">Medical Center</SetTag>

<!-- Send to PACS -->
<Store name="SendToPACS"
calledAE="PACS" callingAE="PRINTER" host="192.168.1.100" port="104"
compression="JPEG_Lossless"/>
<Store name="SendToPACS">
<ConnectionParameters>
<PeerAETitle>PACS</PeerAETitle>
<MyAETitle>PRINTER</MyAETitle>
<Host>192.168.1.100</Host>
<Port>104</Port>
</ConnectionParameters>
</Store>
</Actions>

<Workflow>
<!-- Configure error handling at workflow level -->
<Perform action="FindPatient" onError="Hold"/>
<If field="QUERY_FOUND" value="true">
<Perform action="AddMetadata"/>
<Perform action="SetStudyDate"/>
<Perform action="SetInstitution"/>
<Perform action="SendToPACS" onError="Hold"/>
</If>
</Workflow>
Expand Down
Loading