Application HostingApplication Hosting
Lawrence Tarbox, Ph.D.Lawrence Tarbox, Ph.D.Chair WG 23Chair WG 23
Mallinckrodt Institute of RadiologyMallinckrodt Institute of RadiologyWashington University in St. Louis School of Washington University in St. Louis School of MedicineMedicine
MotivationMotivation
To create a mechanism where To create a mechanism where applications written by one party applications written by one party could be launched and run on could be launched and run on systems created by multiple other systems created by multiple other partiesparties
To create a framework for To create a framework for exchanging information about those exchanging information about those applicationsapplications
To support both research and clinical To support both research and clinical environmentsenvironments
Initial Driver – Molecular Initial Driver – Molecular ImagingImaging
A ‘bright dot’ in the image A ‘bright dot’ in the image is not sufficientis not sufficient
Ideal is a quantitative Ideal is a quantitative number, with normal number, with normal ranges derived from ranges derived from population, as now done population, as now done in lab analysisin lab analysis
Newer agents will require Newer agents will require more sophisticated more sophisticated analysis:analysis:– Agent uptake/decay ratesAgent uptake/decay rates– Pre/post comparisonsPre/post comparisons– Comparisons with Comparisons with
surrounding tissuesurrounding tissue– CalibrationCalibration– ……
Hundreds of new agents Hundreds of new agents anticipatedanticipated
ProblemProblem
Stakeholders in developing such Stakeholders in developing such agent-specific analysis applications agent-specific analysis applications typically are not the typically are not the vendors/creators of the medical vendors/creators of the medical workstationsworkstations
Little market incentive for medical Little market incentive for medical workstation vendorsworkstation vendors
Stakeholders do not want to develop Stakeholders do not want to develop multiple versions of an applicationmultiple versions of an application
Typical Plug-in Typical Plug-in ConceptConcept
……AA
EE
BB CC DD
FF
Extended Plug-in Extended Plug-in ConceptConcept
……
AA
EE
AA
DD
AA
CC
AA
BB
AA
Use Case – Agent-Specific Post Use Case – Agent-Specific Post ProcessingProcessing
MR MR CT CT PETPET
Molecular Imaging Plug -in Server
-- Agent Specific Acquisition/Recon
-- Agent Specific Image Analysis
PACS
Image Workstation
Plug-in Extension
SPECTSPECTMR MR CT CT PETPET
Molecular Imaging Plug -in Server
-- Agent Specific Acquisition/Recon
-- Agent Specific Image Analysis
Molecular Imaging Plug -in Server
-- Agent Specific Acquisition/Recon
-- Agent Specific Image Analysis
PACS
PACS
Image Workstation
Plug-in Extension
SPECTSPECT
1. System identifies the agent
2. System selects ‘plug-in’ app based on
agent
3. ‘Plug-in’ app performs
agent-specific analysis
Use Case – SOP-Specific Post Use Case – SOP-Specific Post ProcessingProcessing
New or Private SOP classes may be New or Private SOP classes may be unknown to a workstationunknown to a workstation– e.g. Radial IVUS imagese.g. Radial IVUS images
Workstation could look for a ‘plug-Workstation could look for a ‘plug-in’ application that does know how in’ application that does know how to handle the unknown SOP Classto handle the unknown SOP Class
Use Case – CAD/Screening Use Case – CAD/Screening ApplicationsApplications
‘‘Plug-in’ runs on a server that is Plug-in’ runs on a server that is fed sets of DICOM objects to fed sets of DICOM objects to analyze, and produces DICOM analyze, and produces DICOM Evidence Documents Evidence Documents
‘‘Plug-ins’ could run Plug-ins’ could run – on the central archiveon the central archive– on a manufacturer-supplied serveron a manufacturer-supplied server– as a remote serviceas a remote service
Use Case – Mammography Image Use Case – Mammography Image StorageStorage
Desire to archive both raw and Desire to archive both raw and processed dataprocessed data– Processed data to show what was used for Processed data to show what was used for
the diagnostic reportthe diagnostic report– Raw data for potential future enhancementsRaw data for potential future enhancements
No desire to double storage No desire to double storage requirements!requirements!
Solution – store raw plus reference to a Solution – store raw plus reference to a processing applicationprocessing application
Use Case – Multi-site Trials/ResearchUse Case – Multi-site Trials/Research
Need to perform the same Need to perform the same analysis on images collected at analysis on images collected at multiple sitesmultiple sites
Sites have multiple working Sites have multiple working environmentsenvironments
Trial coordinator would like to Trial coordinator would like to create a single analysis package create a single analysis package that could be run at all sitesthat could be run at all sites
Other Use CasesOther Use Cases
Customized Reporting and DisplayCustomized Reporting and Display– Site-specific reportsSite-specific reports
Print ComposingPrint Composing– Custom printing across multiple systemsCustom printing across multiple systems
Analysis of Image Data in Analysis of Image Data in RepositoriesRepositories– Faster to move apps than dataFaster to move apps than data
… …
Suggested StagingSuggested Staging
Stage one – Access to DICOM Datasets Stage one – Access to DICOM Datasets and Results Recordingand Results Recording
Stage Two – Access to Non-Interactive Stage Two – Access to Non-Interactive Application Services Application Services (e.g. print, archive)(e.g. print, archive)
Stage Three – Access to Interactive Stage Three – Access to Interactive Application Services Application Services (e.g. GUI, ‘skins’, (e.g. GUI, ‘skins’, rendering)rendering)
Stage Four – Standard Workflow Stage Four – Standard Workflow Descriptions, and Interactions Between Descriptions, and Interactions Between Hosted SoftwareHosted Software
Targets for Stage OneTargets for Stage One
Meta-data XML Schema to Describe an ApplicationMeta-data XML Schema to Describe an Application– Allows selection of appropriate applicationsAllows selection of appropriate applications– Allows administrator to determine compatibility of host Allows administrator to determine compatibility of host
system and hosted applicationsystem and hosted application Basic Launch and Control of a Hosted ApplicationBasic Launch and Control of a Hosted Application
– Load, Unload, Start, AbortLoad, Unload, Start, Abort Simple Interchange of Data Between a Hosting Simple Interchange of Data Between a Hosting
System and Hosted ApplicationsSystem and Hosted Applications– Data inputs and outputs described using DICOM Data inputs and outputs described using DICOM
SemanticsSemantics– DICOM messages/objects need not be used directly, DICOM messages/objects need not be used directly,
instead the API could give access to parts of the objectsinstead the API could give access to parts of the objects
GoalsGoals
A Standardized API that is:A Standardized API that is:
Language independentLanguage independent Platform independentPlatform independent IP independentIP independent ExtensibleExtensible SecureSecure
Open Interface Standard Open Interface Standard versusversus Open SourceOpen Source
Analogy to traditional DICOM:Analogy to traditional DICOM:– The content and encoding of objects The content and encoding of objects
is standardis standard– The means for transporting the The means for transporting the
objects (e.g. the network) is standardobjects (e.g. the network) is standard
But … But … – How to do the implementation is not How to do the implementation is not
standardstandard
Open Interface Standard Open Interface Standard versusversus Open SourceOpen Source
Implementations of Open Implementations of Open Standard Interfaces can be Open Standard Interfaces can be Open Source or proprietarySource or proprietary
Implementations on either side of Implementations on either side of the interface need not be created the interface need not be created by the same entityby the same entity
Interoperability is gained by Interoperability is gained by adherence to the standardadherence to the standard
Research SupportResearch Support
Hosting System (e.g. Medical Workstation)Hosting System (e.g. Medical Workstation)
API (Socket)API (Socket)
Custom Research/University PrototypeCustom Research/University Prototype
API (Plug)API (Plug)
Custom ClassesCustom Classes OEM ClassesOEM Classes(e.g. watsyn™, IDL)(e.g. watsyn™, IDL)
Prototype Plug-In Development EnvironmentPrototype Plug-In Development Environment
Hosting System (e.g. Medical Workstation)Hosting System (e.g. Medical Workstation)
API (Socket)API (Socket)
CommercializationCommercialization
API (Plug)API (Plug)
Hosted Application (Plug-in)Hosted Application (Plug-in)
Caution! Caution!
WARNING – What you are about to see are preliminary ideas that may change at any moment!
Application Description Document Application Description Document App IDApp ID
Identification by name, version, Identification by name, version, etc.etc.
Identification of functional Identification of functional categories and possible sub categories and possible sub categories.categories.
Identification descriptively, so Identification descriptively, so that a person understands what that a person understands what the application is.the application is.
Application Description Document Application Description Document App PrerequisitesApp Prerequisites
Hardware (memory required, Hardware (memory required, swap required, disk space swap required, disk space required, processor required, processor considerations, special hardware, considerations, special hardware, etc.) etc.)
Software environment (operating Software environment (operating system, libraries present, system, libraries present, database facilities, versions, etc.)database facilities, versions, etc.)
Application Description Document Application Description Document App InstallationApp Installation
The executable portion of the Hosted The executable portion of the Hosted ApplicationApplication
Short (and long?) user manual ensured Short (and long?) user manual ensured to be available as part of the application.to be available as part of the application.
A Hosted Application installer, which A Hosted Application installer, which may be provided as part of the Hosted may be provided as part of the Hosted Application package or which may Application package or which may merely be identified by the Hosted merely be identified by the Hosted Application package.Application package.
Application Description Document Application Description Document ParametersParameters
Information equivalent to the DICOM Information equivalent to the DICOM Conformance Claim, e.g. SOP Conformance Claim, e.g. SOP Classes accepted and produced, Classes accepted and produced, languages and character sets, languages and character sets, constrains on combinations of constrains on combinations of datasets, etc. datasets, etc.
Specific parameters that the Hosted Specific parameters that the Hosted Application needs to execute (e.g., Application needs to execute (e.g., provided in a SR templates)provided in a SR templates)
Application Description Document Application Description Document SecuritySecurity
Application integrity check, by Application integrity check, by means of digital hash, digital means of digital hash, digital signature, or similar techniques.signature, or similar techniques.
Verified or validated Verified or validated configurations, e.g. “Confirmed to configurations, e.g. “Confirmed to work on product X version a.b”work on product X version a.b”
Licensing information Licensing information
InterfacesInterfaces
Interfaces will be defined as Interfaces will be defined as web-services or grid services web-services or grid services – Can be implemented in any Can be implemented in any
languagelanguage– Can be local or remote Can be local or remote
(initial focus is local)(initial focus is local)– Is platform independentIs platform independent
HostedApplicationHostedApplication InterfaceInterface
HostedApplication HostedApplication startupstartup (HostingSystem (HostingSystem host)host)
StatusStatus createJobcreateJob (DicomObject [] objects)(DicomObject [] objects) voidvoid cancelcancel ()() StatusStatus shutdownshutdown ()()
How the Host System communicates with the Hosted Application
HostingSystemHostingSystem InterfaceInterface
Object []Object [] getConfigurationParameters getConfigurationParameters ()()
voidvoid progressUpdate progressUpdate (String message, (String message, JobStatus status, JobStatus status, DicomObject [] intermediate_objects)DicomObject [] intermediate_objects)
StringString createUID createUID ()() statusstatus resultsReturn resultsReturn
(DicomObject [] result_objects)(DicomObject [] result_objects) statusstatus jobComplete jobComplete ()()
How the Hosted Application communicates with the Hosting System
DICOMObjectDICOMObject Interface Interface
Information about how to access Information about how to access the objects, but not the objects the objects, but not the objects themselves.themselves.
Multiple Access Styles possible:Multiple Access Styles possible:– DICOM Network AccessDICOM Network Access– File-mapped DICOMFile-mapped DICOM– Parsed DICOMParsed DICOM
Access Styles negotiagedAccess Styles negotiaged
Work CycleWork Cycle
1.1. Define Use CasesDefine Use Cases
2.2. Derive RequirementsDerive Requirements
3.3. Review available technologyReview available technology
4.4. Create draft for public commentCreate draft for public comment
5.5. Freeze for trial useFreeze for trial use
6.6. Revise after feedback from Revise after feedback from implementersimplementers
7.7. BallotBallot
Volunteers SolicitedVolunteers Solicited
WG 23 welcomes your input. We WG 23 welcomes your input. We would be even happier with your would be even happier with your assistance in creating this new assistance in creating this new standard.standard.– Join the mailing list and contribute Join the mailing list and contribute
ideasideas– Join us at future meetings Join us at future meetings
(next is planned for April 26 in Austin (next is planned for April 26 in Austin prior to SCAR)prior to SCAR)