Replies: 3 comments
-
So we could require that the image table HAS to have PatientID, StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID AND RelativeFileArchiveUri in the table to be supported by the extraction tool (i.e. CT_ImageTable, MR_ImageTable etc). That would mean we could do the UID swapping prior to sending to RabbitMQ. |
Beta Was this translation helpful? Give feedback.
0 replies
-
Release PluginShould look something like this: public class JustSayNo : IPluginDataFlowComponent<ReleaseAudit>, IPipelineRequirement<Project>, IPipelineRequirement<ReleaseData>
{
private Project _project;
private ReleaseData _release;
public void Abort(IDataLoadEventListener listener)
{
throw new NotImplementedException();
}
public void Check(ICheckNotifier notifier)
{
if(_release == null)
{
return;
}
foreach(var kvp in _release.ConfigurationsForRelease)
{
var config = kvp.Key;
foreach(var releaseable in kvp.Value)
{
//TODO: if releaseable.DataSet is imaging
// TODO: Check MongoDb Packaging Db to see if it is finished extracting images
notifier.OnCheckPerformed(new CheckEventArgs($"Images not ready yet for {releaseable.DataSet} in {config}", CheckResult.Fail));
}
}
}
public void Dispose(IDataLoadEventListener listener, Exception pipelineFailureExceptionIfAny)
{
}
public void PreInitialize(Project value, IDataLoadEventListener listener)
{
_project = value;
}
public void PreInitialize(ReleaseData value, IDataLoadEventListener listener)
{
_release = value;
}
public ReleaseAudit ProcessPipelineData(ReleaseAudit toProcess, IDataLoadEventListener listener, GracefulCancellationToken cancellationToken)
{
return toProcess;
}
} When checking a configuration with the above code you would get : |
Beta Was this translation helpful? Give feedback.
0 replies
-
Notes from call:
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
This discussion currently relates to the 'HIC mirror' and integrating the extraction practices of SmiServices with the current (small scale) extraction capabilities of RDMP.Dicom that HIC use today.
Use Case
Data analyst wants to extract multiple datasets including imaging modalities (e.g. CT) for a project cohort (list of CHI/ECHIs) directly from RDMP. Then run an extraction of all the anonymous clinical and accompanying images to disk with a single click.
User adds datasets to extraction and clicks Execute
Current RDMP support for image extraction
Current image extraction from RDMP via the Rdmp.Dicom plugin are covered here:
https://github.com/HicServices/RdmpDicom/blob/develop/Documentation/DataExtraction.md
Proposed changes
Add a new component in a plugin to RDMP that instead of handling the image extraction itself in a block single threaded manner instead sends messages to RabbitMQ (see below for messages).
Issues:
ExtractionRequestMessage
and the RabbitMQ sender logic is in SmiServices repo while the imaging plugin is upstream in Rdmp.Dicom repo. So either we need a second plugin in the scope of SmiServices or do a lot of code duplicationFoDicomAnonymiser
that would need to be replicated.ExtractFileCollectionInfoMessage
Messages
The plugin must take the role of CohortExtractor and all upstream services (extractorCL). As such it needs to produce the following messages:
Looks like we need to send multiple messages:
ExtractionRequestInfoMessage
(what I want extracted is X Tag with Y Value)ExtractFileMessage
(Hey you CTP!, copy out the file at DicomFilePath path)ExtractFileCollectionInfoMessage
(Hey Packager, this is what I told CTP to do)Release Plugin
Since extraction will be async we need a plugin that works at release stage in RDMP that will say 'not ready for release because images are not anonymised yet'.
Beta Was this translation helpful? Give feedback.
All reactions