XSYNC plugin

XSYNC implemented as a XNAT 1.7 plugin.

Xsync plugin enables automatic synchronization of data from a project in one XNAT system to a project in a second system. Xsync is configurable to ensure that only the desired data is delivered, and if required, data is properly de-identified, and that it is delivered on a pre-set schedule.

Download

For XNAT 1.7.3.1(as of 10/09/2017)

Xsync Jar (Version 1.7.3.1) Download

Xsync Bean Jar (Version 1.7.3.1) Download

Latest Tested XNAT War File (XNAT Version 1.7.3.1) Download

For XNAT 1.7.3.1 (as of 08/09/2017)

Xsync Jar (Version 1.3.1) Download

Xsync Bean Jar (Version 1.3.1) Download

XNAT War File (XNAT Version 1.7.3.1) Download

ChangeLog

Version 1.3.2 As of Nov 14, 2017

Added functionality for custom Id generator and download mapping data.

Version 1.3.1 As of Aug 9, 2017

XAPI and other changes for compatibility with latest XNAT version 1.7.3.1 code.

Version 1.3.1-SNAPSHOT As of June 14, 2017

XAPI and other changes for compatibility with latest XNAT version 1.7.3-SNAPSHOT code.

Version 1.3-SNAPSHOT As of May 23, 2017

Revised sync blocking behavior with a service and UI for reporting on current sync status.

Fix for issue where sessions were sometimes sent without files.

Fix for issue where sessions can fail to sync if they are arriving when a sync is kicked off.

Fix for issue where data can be overwritten if configured URL is modified to point to a shadow server.

Version 1.2 May 3, 2017

Xsync Token Refresh Issue fixed

Xsync File Transfer verification added. This results in new Sync statuses, viz.,

SYNCED_AND_NOT_VERIFIED SYNCED_AND_VERIFIED INCOMPLETE

Ability to sync a single experiment out of sync cycle.

Building

To build the plugin, run the following command from within the plugin folder:

./gradlew clean jar

On Windows, you may need to run:

gradlew clean jar

If you haven't previously run this build, it may take a while for all of the dependencies to download.

You can verify your completed build by looking in the folder build/libs. It should contain files named something like xsync-plugin-*-1.0.jar. This is the plugin jar that you can install in your XNAT's plugins folder.

System Requirements

Source and Destination XNAT must be running XNAT version 1.7.2 or higher.

Getting Started

Xsync Advanced Features

As of Xsync Version 1.0, Xsync configuration UI does not expose all the configuration properties. In order to use the advanced features, Source XNAT Administrators can use XAPI Webservices. The Xsync configuration behind the scenes, is a JSON.

XNAT organises its data into Projects, Subjects, Subject Assessors (eg Clinical Data), Imaging Sessions (eg MR data), Imaging Session Assessors (eg Freesurfer data).

Each element in the XNAT data hierarchy can have resources (ie files). One can have Project resources, Subject resources, Subject Assessor Resources, Imaging Session Resources and Imaging Session Assessor Resources. Each of these resources is identified by a label (aka resource label).

Each data-type in XNAT is identified internally by its xsiType. For example, MR Session data is identified as xnat:mrSessionData.

When the needs_ok_to_sync flag is set to true for an Imaging Session, the Imaging Session is synced only when someone marks the session as Ok to Sync. This feature is useful when QC is to be done to make sure only curated data is sent over to the destination.

If needs_ok_to_sync flag is set to true for an Imaging session, say MR Session (xnat:mrSessionData), on the MR Session report page, Synchronization tab enables marking the session as Ok To Sync. If the MR Session is not flagged as Ok to Sync, the MR Session will be skipped.

  POST to /xapi/xsync/experiments/{experimentId} for marking sessions in bulk as _Ok to Sync_.

Xsync XAPI Web-Services

Source XNAT Administrators can access the Xsync XAPI Services via Administrator -> Site Administration. From the Site Administration page, navigate to Miscellaneous. Click on "View the Swagger Page".

XNAT web-services can be used from the Swagger page itself or invoked in a script or invoked by tools like curl.

Among the xsync-*-controller listed, the two most required ones are:

Xsync Site Level Configuration

Source XNAT Administartors can use Administrators -> Plugin Settings to

Other Tips

The Destination XNAT must have all the data-types deployed that the Source is attempting to sync.

Bugs

Report bugs to bugs@xnat.org