Application Hosting


Published on

  • Be the first to comment

  • Be the first to like this

Application Hosting

  1. 1. Lawrence Tarbox, Chair WG-23 Status Report – SPIE 2008
  2. 2. Provocative Statement <ul><li>DICOM WG-23 hopes to fundamentally change the way the medical imaging world thinks in regards to the distribution and deployment of medical imaging applications. </li></ul>
  3. 3. A Brave New World? <ul><li>Separate the provision of infrastructure from the application. </li></ul><ul><li>Infrastructure providers concentrate on the movement and storage of data and results, and on workflow management. </li></ul><ul><li>Application providers concentrate on the processing and analysis of that data, providing results back to the infrastructure. </li></ul><ul><li>Minimize the ‘reinvention of the wheel’. </li></ul>
  4. 4. Hosting System <ul><li>Supplies common infrastructure needed by all applications </li></ul><ul><li>Login </li></ul><ul><li>Audit Trail </li></ul><ul><li>Security </li></ul><ul><li>Worklists </li></ul><ul><li>Database </li></ul><ul><li>Network Access </li></ul><ul><li>Task/Resource Management </li></ul>
  5. 5. Hosted Application <ul><li>Provides task specific business logic </li></ul><ul><li>Works with any Hosting System that support the WG-23 Interface </li></ul><ul><li>Depends on the Hosting System for common infrastructure </li></ul><ul><li>Can work with abstract data models, independent of underlying storage format </li></ul>
  6. 6. Guiding Principles <ul><li>Simple encapsulation of existing applications </li></ul><ul><ul><li>Self-contained applications </li></ul></ul><ul><ul><li>Data exchange via files (e.g. Part 10 format) </li></ul></ul><ul><li>Ease development of new applications for DICOM novices </li></ul><ul><ul><li>Simple abstract model </li></ul></ul><ul><ul><li>Hosting System parses and builds DICOM objects </li></ul></ul><ul><ul><li>Full native access available if needed </li></ul></ul><ul><li>Use existing technology where practical </li></ul>
  7. 7. Out of Scope (for the moment) <ul><li>Full integration into the Hosting System GUI </li></ul><ul><ul><li>No standard GUI widgets </li></ul></ul><ul><ul><li>However, host may provide rectangular screen area recommendation to cooperating applications </li></ul></ul><ul><li>Discovery </li></ul><ul><ul><li>No standard service for locating suitable applications on the Internet for installation </li></ul></ul><ul><ul><li>No mechanism for determining what applications are installed on the Hosting System </li></ul></ul><ul><li>Access to DICOM services beyond storage </li></ul>
  8. 8. Two Main Interfaces <ul><li>“ Application ” holds methods that the Hosting System uses to control and feed data to the Hosted Application. </li></ul><ul><li>“ Host ” holds methods that the Hosted Application uses to communicate outputs to the Hosting System, and to notify it of status and state changes. </li></ul><ul><li>One-to-one correspondence of instances of the “Host” and “Application” interfaces. </li></ul><ul><li>Interfaces are defined in WSDL to be language and platform independent. </li></ul>
  9. 9. Application Initialization <ul><li>Hosting System locates desired Application using mechanisms outside of the standard. </li></ul><ul><li>Hosting System initializes the Hosted Application using the equivalent of a “run” or “exec” command. </li></ul><ul><li>Hosted Application utilizes command line arguments passed by the Hosting System to connect to the “Host” interface, and to present the “Application” interface. </li></ul>
  10. 10. Exit Destroy instance Idle Waiting for task InProgress Doing task Completed Host grabbing output Suspended Task paused Cancelled Task aborting Hosted Application States
  11. 11. “ Application” Methods <ul><li>setState(state : State) : boolean </li></ul><ul><li>getState() : State </li></ul><ul><li>bringToFront() : boolean </li></ul>
  12. 12. “ Host” Methods <ul><li>notifyStateChanged(state : State) : void </li></ul><ul><li>notifyOutputAvailable() : void </li></ul><ul><li>notifyStatus(status : Status) : void </li></ul><ul><li>getTmpDir() : String </li></ul><ul><li>getOutputDir() : String </li></ul><ul><li>generateUID() : String </li></ul><ul><li>getAvailableScreen (appPreferredScreen : Rectangle) : Rectangle </li></ul>
  13. 13. Condition Handling <ul><li>If there is a notable condition (e.g. a progress report, an error) in the Hosted Application, it may inform the Hosting System via a notifyStatus() call. </li></ul><ul><li>The Status includes: </li></ul><ul><ul><li>statusType (i.e. INFO, WARN, ERROR, FATAL) </li></ul></ul><ul><ul><li>codingSchemeDesignator </li></ul></ul><ul><ul><li>codeValue </li></ul></ul><ul><ul><li>messageString </li></ul></ul>
  14. 14. Data Exchange <ul><li>File Access Methods </li></ul><ul><ul><li>Simple exchange of files (e.g. DICOM Part 10) </li></ul></ul><ul><ul><li>Can support other file formats (e.g. Analyze) </li></ul></ul><ul><ul><li>Furthest along (essentially finished) </li></ul></ul><ul><li>Model Access Methods </li></ul><ul><ul><li>Both Native (e.g. DICOM models) and Abstract (e.g. Multi-Dimensional Image) versions </li></ul></ul><ul><ul><li>Is independent of the underlying data format </li></ul></ul>
  15. 15. File Access Methods <ul><li>getObjectDescriptors() : ObjectDescriptor[] </li></ul><ul><li>getAsFile(desireObjects : ObjectDescriptor[]) : ObjectLocator[] </li></ul><ul><li>Symmetric between host and application </li></ul>
  16. 16. Object Descriptor <ul><li>Consists of: </li></ul><ul><ul><li>UUID : String </li></ul></ul><ul><ul><li>MIMEType : String </li></ul></ul><ul><ul><li>SOPClassUID : String </li></ul></ul><ul><ul><li>Grouping info </li></ul></ul><ul><li>UUID used to: </li></ul><ul><ul><li>Avoid potential collisions with SOP Instance UID </li></ul></ul><ul><ul><li>Maintain generality (i.e. can refer to non-DICOM objects) </li></ul></ul>
  17. 17. Object Locator <ul><li>Consists of: </li></ul><ul><ul><li>referencedUUID : String </li></ul></ul><ul><ul><li>uri : URI </li></ul></ul><ul><ul><li>offset: Integer </li></ul></ul><ul><li>referencedUUID, which identifies the object, is taken from the Object Descriptor </li></ul><ul><li>The URI identifies the location of the desired object (i.e., the file) </li></ul>
  18. 18. File Exchange Sequence Recipient Sender getObjectDescriptors() return of ObjectDescriptors[] getAsFile( desiredObjects: ObjectDescrptors[]) return of ObjectLocators[]
  19. 19. Model Access Methods <ul><li>Derived from Java Image IO concepts: </li></ul><ul><ul><li>Abstract access to common data </li></ul></ul><ul><ul><li>Generic mechanism to access format-specific data </li></ul></ul><ul><li>Utilize the “XML Infoset” concept </li></ul><ul><ul><li>Provider/Sender maintains a model of the referenced data, e.g. using DOM tools </li></ul></ul><ul><ul><ul><li>Using DOM does not mean that the data ever existed natively in XML form </li></ul></ul></ul><ul><ul><ul><li>DOM is a convenient way to describe the layout of the data, even if the data is in DICOM format </li></ul></ul></ul><ul><ul><li>Requestor/Recipient utilizes XPath to identify the desired subset of data </li></ul></ul>
  20. 20. Abstract vs. Native Models <ul><li>Abstract Models </li></ul><ul><ul><li>Includes data common to multiple formats (e.g. DICOM, Analyze) </li></ul></ul><ul><ul><li>Application need not know the format of the native data </li></ul></ul><ul><ul><li>Does include references to the native data from which the abstract model was derived </li></ul></ul><ul><li>Native Models </li></ul><ul><ul><li>Gives full access to all information available in the native data </li></ul></ul><ul><ul><li>Allows an application to just access those parts of the native data that are of interest </li></ul></ul><ul><li>Bulk Data Access (separate from the model) </li></ul><ul><ul><li>File name (URI) plus offset (for performance) </li></ul></ul><ul><ul><li>‘ Cooked’ or ‘Raw’ </li></ul></ul>
  21. 21. Abstract Model <ul><li>Make life easier for the application developer </li></ul><ul><li>Draws simplified concepts from the new DICOM enhance multi-frame objects </li></ul><ul><ul><li>Only commonly used dimensions included </li></ul></ul><ul><ul><li>References the source native models if an application needs full details </li></ul></ul><ul><li>Assumes ‘cooked’ data, e.g. </li></ul><ul><ul><li>Modality LUT applied </li></ul></ul><ul><ul><li>‘ Clean’ data (sign extended, no overlay bits) </li></ul></ul><ul><ul><li>Data from old style SOP Classes reorganized </li></ul></ul><ul><li>Signed & unsigned integers, single & double floats </li></ul><ul><li>Semantic intent and units included </li></ul>
  22. 22. Spec of domain and range <ul><li>Range (components) </li></ul><ul><ul><li>Scalar </li></ul></ul><ul><ul><ul><li>Data-type, e.g. int32 </li></ul></ul></ul><ul><ul><ul><li>Semantics, e.g. T1 weighted MRI signal intensity </li></ul></ul></ul><ul><ul><ul><li>Units </li></ul></ul></ul><ul><ul><li>Vector </li></ul></ul><ul><ul><ul><li>Nb-components ; table of (Data-type, Semantics, Units) </li></ul></ul></ul><ul><li>Domain (variables) </li></ul><ul><ul><li>Nature of interval </li></ul></ul><ul><ul><ul><li>Regular-interval </li></ul></ul></ul><ul><ul><ul><ul><li>Nb-samples ; inter-sample-distance ; sample-width </li></ul></ul></ul></ul><ul><ul><ul><li>Non regular interval </li></ul></ul></ul><ul><ul><ul><ul><li>Nb-samples ; origin ; table of (dist-to-origin, sample-width ) </li></ul></ul></ul></ul><ul><ul><li>Semantics : e.g. space, time, energy </li></ul></ul>
  23. 23. Abstract Model Example <ul><li>T1weighted MR dataset </li></ul><ul><ul><li>Scalar Range </li></ul></ul><ul><ul><ul><li>Data-type=int32 </li></ul></ul></ul><ul><ul><ul><li>Semantics = ‘T1weightedMRsignalintensity’ </li></ul></ul></ul><ul><ul><li>3 variables </li></ul></ul><ul><ul><ul><li>Regular interval </li></ul></ul></ul><ul><ul><ul><ul><li>Nb-samples=256, inter_sample-dist=1mm, sample-width=1mm </li></ul></ul></ul></ul><ul><ul><ul><ul><li>semantics = ‘space along X’ </li></ul></ul></ul></ul><ul><ul><ul><li>Regular interval </li></ul></ul></ul><ul><ul><ul><ul><li>Nb-samples=256, inter_sample-dist=1mm, sample-width=1mm </li></ul></ul></ul></ul><ul><ul><ul><ul><li>semantics = ‘space along Y’ </li></ul></ul></ul></ul><ul><ul><ul><li>Regular interval </li></ul></ul></ul><ul><ul><ul><ul><li>Nb-samples=120, inter_sample-dist= 4mm, sample-width=4mm </li></ul></ul></ul></ul><ul><ul><ul><ul><li>semantics = ‘space along Z’ </li></ul></ul></ul></ul>
  24. 24. Model Access Methods <ul><li>Get Object Descriptors </li></ul><ul><ul><li>Descriptors for all native objects </li></ul></ul><ul><li>Get Abstract Object Descriptors </li></ul><ul><ul><li>Alternative to getObjectDescriptors() </li></ul></ul><ul><ul><li>Hosting System creates Abstract Models as needed </li></ul></ul><ul><ul><li>Returns Native Descriptors if not part of an Abstract Model </li></ul></ul><ul><li>Query XPath </li></ul><ul><ul><li>May return single values or Infosets </li></ul></ul><ul><ul><li>Multiple queries to multiple objects in one call </li></ul></ul><ul><li>Get Bulk Data (‘cooked’ or ‘raw’) </li></ul>
  25. 25. Example XPath for DICOM Model <ul><li>/DicomObject /Element[@name=“View Code Sequence”] </li></ul><ul><li>/Item[@number=1] /Element[@name=“Code Meaning”] /value[@number=1] </li></ul><ul><li>Can access by Name or Group+Element Tags </li></ul><ul><li>Will have provisions for proper Private Data Element access </li></ul>
  26. 26. Model Exchange Sequence Recipient Sender getAbstractObjectDescriptors() return of ObjectDescriptors[] queryModel( targetModels:UUID[], xpath:String[]) return of Infosets getBulkData( desiredData:DataDescriptors[]) return of DataLocators[]
  27. 27. How You Can Prepare <ul><li>Use the WG-23 Application Hosting interfaces in your own work </li></ul><ul><li>Encourage your developers to do the same </li></ul><ul><li>Start discussing with vendors their support for the WG-23 Application Hosting interfaces </li></ul><ul><li>Eventually include WG-23 Application Hosting interface support in RFPs </li></ul>
  28. 28. Can I Get It Now? <ul><li>The eXtensible Imaging Platform </li></ul><ul><ul><li> or </li></ul></ul><ul><ul><li>Includes a reference implementation of the WG-23 Application Hosting interfaces </li></ul></ul><ul><ul><li>Includes examples of a Hosting System and several Hosted Applications </li></ul></ul><ul><ul><li>Part of NCI’s caBIG™ program </li></ul></ul><ul><ul><li>Commercial friendly open source license </li></ul></ul><ul><li>Commercial implementations with SDKs starting to appear (prototypes) </li></ul>
  29. 29. <ul><li>The eXtensible Imaging Platform (XIP™) is the image analysis and visualization tool for caBIG . </li></ul><ul><li>XIP is an open source environment for rapidly developing medical imaging applications from an extensible set of modular elements. </li></ul><ul><li>XIP may be used by vendors to prototype or develop new applications . </li></ul><ul><li>Imaging applications developed by research groups will be accessible within the clinical operating environmen t , using the DICOM Application Hosting interface. </li></ul><ul><li>XIP serves as a reference implementation of the DICOM WG-23 Application Hosting interfaces . </li></ul>What is the ?
  30. 30. WG23 / XIP Relationship <ul><li>WG-23 addresses clinical integration and vendor inter-operability by defining standardized “plugs” and “sockets” (APIs) </li></ul><ul><li>caBIG XIP addresses an open-architecture, open-source, integrated environment for rapid application development based on WG 23 APIs </li></ul>Unix, Mac, PC Internet Server Commercial Vendor #2 … Commercial Vendor #1  Clinical   Prototype & Collaboration  XIP developed Application Standard API
  31. 31. XIP Builder™ <ul><li>Visual editing/debugging tool for rapidly developing imaging applications </li></ul><ul><li>Usable for hosted applications as well as standalone apps </li></ul><ul><li>Extensible framework </li></ul><ul><ul><li>Open Inventor® base </li></ul></ul><ul><ul><li>ITK & VTK cores </li></ul></ul><ul><ul><li>GPU based GLSL rendering/processing </li></ul></ul><ul><ul><li>High quality MPR </li></ul></ul><ul><ul><li>Remote rendering </li></ul></ul><ul><ul><li>Overlays/Measurements </li></ul></ul><ul><ul><li>Custom Additions </li></ul></ul>
  32. 32. Supplement 118 Timetable <ul><li>Review for Public Comment Spring 2008 </li></ul><ul><li>Frozen Draft Summer 2008 </li></ul><ul><ul><li>May decide to ballot early if implementations are far enough along </li></ul></ul><ul><li>Ballot Winter 2008 </li></ul>
  33. 33. After Supp. 118? <ul><li>Additional Work Item proposals expected </li></ul><ul><li>Phase 2 will fill holes from Phase 1 (e.g. some of the ‘out of scope for 118’ issues) </li></ul><ul><li>New features depend on user demand </li></ul>