Enumerate all studies on the source PACS using C-FIND at the Study Root level, filtering by date range, and export the list (StudyInstanceUID, AccessionNumber, PatientID, study date) to a migration manifest file
Issue C-MOVE requests in batches from the source PACS to the destination PACS, scheduling transfers during off-peak hours; control concurrency and inter-request delay to avoid saturating the clinical network
For each migrated study, re-query the destination PACS with C-FIND and verify that the number of series and instances matches the source manifest; log discrepancies for re-transfer
Reconcile patient and accession metadata differences between source and target using RIS data where DICOM headers contain legacy or incorrect identifiers, applying DICOM header correction before final send
Run a dual-read period where both PACSes are live, verifying clinician access and study routing, before decommissioning the source
Known gotchas
C-MOVE transfers all instances of a matching study to the Move Destination AE, which must be pre-registered at the source SCP as a known remote AE — verify AE registration before starting bulk migration
Large studies (e.g., CT angiography with thousands of instances) can cause C-MOVE association timeouts if the destination store is slow; configure DIMSE timeout values conservatively and consider instance-level re-queuing for failed associations
Duplicate instances on the destination PACS from previous partial migrations can interfere with study-count verification; implement a checksumming strategy (e.g., SOPInstanceUID set comparison) rather than relying solely on instance counts
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp