Application Hosting

download Application Hosting

If you can't read please download the document

description

WG-23 Status Report – 29 October 2007. Application Hosting. Targets for WG-6. Overview for WG-6 – today Review for Public Comment in March 2008 Frozen Draft in May/June 2008 May decide to ballot early if implementations are far enough along Ballot Fall 2008. Basic Goals of Supp. 118. - PowerPoint PPT Presentation

Transcript of Application Hosting

  • WG-23 Status Report 29 October 2007

  • Targets for WG-6Overview for WG-6 todayReview for Public Comment in March 2008Frozen Draft in May/June 2008May decide to ballot early if implementations are far enough alongBallot Fall 2008

  • Basic Goals of Supp. 118Simple encapsulation of existing applicationsSelf-contained applicationsData exchange via files (e.g. Part 10 format)Ease development of new applications for DICOM novicesSimple abstract modelHosting System parses and builds DICOM objectsFull native access available if neededUse existing technology where practical

  • Out of Scope for Supp. 118Full integration into the Hosting System GUINo standard GUI widgetsHowever, host may provide rectangular screen area recommendation to cooperating applicationsDiscoveryNo standard service for locating suitable applications on the Internet for installationNo mechanism for determining what applications are installed on the Hosting SystemAccess to DICOM services beyond storage

  • In DebateFormalized description of applicationsAgainst not enough time to get it rightFor needed to verify application ID (e.g. signature)Alternative a paper-based descriptionStart-up method command line argumentsAgainst does not cover all start-up methodsFor simple, available on most systemsAlternative 1 well-known portAlternative 2 args, with well-known port fallbackAlternative 3 leave it open, let host decide

  • Application InitializationHosting System locates desired Application using mechanisms outside of the standard.Hosting System initializes the Hosted Application using the equivalent of a run or exec command.Hosted Application utilizes command line arguments passed by the Hosting System to connect to the Host interface, and to present the Application interface.If no command line arguments, the Hosted Application utilizes a well known port to obtain the needed information for connecting to the Host interface, and to present the Application interface.

  • Two Main InterfacesApplication holds methods that the Hosting System uses to control and feed data to the Hosted Application.Host holds methods that the Hosted Application uses to communicate outputs to the Hosting System, and to notify it of status and state changes.One-to-one correspondence of instances of the Host and Application interfaces.Interfaces are defined in WSDL to be language and platform independent.

  • Application MethodssetState(state : State) : booleangetState() : StatebringToFront() : boolean

  • Host MethodsnotifyStateChanged(state : State) : voidnotifyOutputAvailable() : voidnotifyStatus(status : Status) : voidgetTmpDir() : StringgetOutputDir() : StringgenerateUID() : StringgetAvailableScreen (appPreferredScreen : Rectangle) : Rectangle

  • Application StatesIDLE waiting for next taskINPROGRESS performing taskCOMPLETED task done, wait for Hosting System to grab outputSUSPENDED task is not finished, but no processing is being doneCANCELED kill the task and release resources with no further outputEXIT destroy this instance of the application

  • Application RunningOn start-up, the Hosted Application waits in the IDLE state.The Hosting System triggers a task by changing the Hosted Applications state to INPROGRESS.Hosted Application grabs the input data.The Hosted Application only handles one task at a time.The Hosting System may simultaneously start multiple Hosted Applications, including more than one running instance of the same Hosted Application.

  • Application SuspendThe Hosting System may pause a running Hosted Application by changing the state from INPROGRESS to SUSPENDED.When suspended, the Hosted Application minimizes resource use without loosing task context.The Hosting System asks the Hosted Application to continue processing the task by changing the state to INPROGRESS.

  • Application CancelThe Hosting System kills a running or suspended task by changing the Hosted Applications state to CANCELED. The Hosted Application aborts processing, releases all resources, and returns to the IDLE state, waiting for the next task.

  • Application Task CompletionWhen the Hosted Application has completed its task, it changes its state to COMPLETED and notifies the Hosting System of the state change.When the Host System has collected the output data, the Hosted Application changes state to IDLE, and notifies the Hosting System of the state change.

  • Application TerminationIf the Hosted Application is in the IDLE state, the Hosting System may terminate the Hosted Application by changing the state to EXIT.

  • Condition HandlingIf 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.The Status includes:statusType (i.e. INFO, WARN, ERROR, FATAL)codingSchemeDesignatorcodeValuemessageString

  • Data ExchangeFile Access MethodsSimple exchange of files (e.g. DICOM Part 10)Can support other file formats (e.g. Analyze) used by researchersFurthest along (essentially finished)Model Access MethodsBoth Native (e.g. DICOM models) and Abstract (e.g. Multi-Dimensional Image) versionsUses commonly available tools that are often used to process XMLIs independent of the underlying data format

  • File Access MethodsgetNativeObjectDescriptors() : NativeObjectDescriptor[]

    getAsFile(desireObjects : NativeObjectDescriptor[]) : NativeObjectLocator[]

  • Native Object DescriptorConsists of:UUID : StringMIMEType : StringSOPClassUID : StringUsed to describe the native form of one object (e.g. a DICOM Part 10 file)UUID used to: Avoid potential collisions with SOP Instance UIDMaintain generality

  • Native Object LocatorConsists of:referencedUUID : Stringuri : URIreferencedUUID, which identifies the object, is taken from the Native Object DescriptorThe uri identifies the location of the desired object (i.e., the file)

  • File Exchange SequenceRecipientSendergetNativeDescriptors()return of NativeDescriptors[]getAsFile( targets NativeDescrptors)return of NativeLocators[]

  • Symmetric File ExchangeFile Exchange methods are symmetric (i.e. the Hosted Application uses the same methods to get input data from the Hosting System that the Hosting System uses to get output data from the Hosted Applications)Once the recipient asks for a Native Object Descriptor as a file, and the sender responds, then the sender takes the object off of the Native Object Descriptor list

  • Model Access MethodsDerived from Java Image IO concepts:Abstract access to common dataGeneric mechanism to access format-specific dataUtilizes the XML Infoset conceptHosting System maintains a model of the referenced data, e.g. using DOM toolsUsing DOM does not mean that the data ever existed natively in XML formDOM is a convenient way to describe the layout of the data, even if the data is in DICOM formatHosted Application utilizes XPath to identify the desired data

  • Example XPath for Native Model/DicomObject/ViewCodeSequence/ Item[@number=1]/ CodeMeaning/value[@number=1]

    Will add a column to Part 6 Data Dictionary for properly formatted tag IDsWill have provisions for proper Private Data Element accessCan access by Group and Element Tags instead of by tag ID

  • Alternative Without XPathgetNativeMetadata() .getElementsByTagName(DicomObject).item(0) () .getElementsByTagName(ViewCodeSequence).item(0) .getElementsByTagName(Item).item(0) .getElementsByTagName(CodeMeaning).item(0) .getElementsByTagName(value).item(0) .getNodeValue()

  • Proposed Model MethodsGet Abstract Object DescriptorsAlternative to getNativeObjectDescriptors()Hosting System creates Abstract Models as neededReturns Native Descriptors if not part of an Abstract ModelGet/Set XPathMay return single values or InfosetsSet may be restricted to valuesAsymmetric Hosting System manages the creation of modelsCreate new models related to old onesAllows Hosting System to track info needed to serialize the object in DICOMAllows Hosting System to add derived references

  • Abstract Model (in development)Make life easier for the application developerDraws simplified concepts from the new DICOM enhance multi-frame objectsOnly commonly used dimensions includedReferences the source native models if an application needs full detailsAssumes cooked data, e.g.Modality LUT appliedClean data (sign extended, no overlay bits)Data from old style SOP Classes reorganizedPixel interleaved color onlySigned & unsigned integers, single & double floatsSemantic intent and units included

  • Access to Bulk DataFrame is the smallest common denominator Bulk Data References done as file locators plus offsets to start of dataCan be read in with normal I/O, orCan be accessed as memory-mapped files

  • Implementation StatusThree independent implementations of earlier version as proof of concept, including Java and .net versions interoperatingPrimitive performance benchmarkingTwo independent implementations of the file-based proposalMethodology similar to the model access methods used in other projectsMemory-mapped access used in other projects

  • Driving ForcesThe eXtensible Imaging Platform project from NCIs caBIG programFirst open source release due 15 December 2007Hands on demonstration at RSNA 2007Hands on tutorials at SIIM 2008Initial focus on analysis applications for trialsTwo hour workshop at Medical Imaging 2008Multiple implementers

  • caBIG will facilitate sharing of infrastructure, applications, and data

  • Core PrinciplesCommon, widely distributed informatics platformShared vocabulary, data elements, data modelsCommon standard for developing applications

  • In Vivo Imaging Workspace Middleware NCIA geACRIN AIM XIP

  • The eXtensible Imaging Platform (XIP) is the image analysis and visualization tool for caBIG.XIP is an open source environment for rapidly developing medical imaging applications from an extensible set of modular elements. XIP may be used by vendors to prototype or develop new applications.Imaging applications developed by research groups will be accessible within the clinical operating environment, using a new DICOM Plug-in interface first implemented in XIP.XIP may server as a reference implementation of the DICOM WG-23 Application Hosting interfaces.What is the ?

  • XIP Plug-in ArchitectureXIP Host

  • DICOM Plug-in Framework WG-23 addresses clinical integration and vendor inter-operability by defining standardized plugs and sockets (APIs)caBIG XIP addresses an open-architecture, open-source integrated development environment for rapid prototyping & collaboration based on WG 23 APIs.Unix, Mac, PCInternet ServerCommercial Vendor #2Commercial Vendor #1 Clinical Prototype & Collaboration XIP developed Application Standard API

  • After Supp. 118?Work item proposal for Phase 2 at spring 2008 DICOM Standards Committee meetingPhase 2 will fill holes from Phase 1 (e.g. some of the out of scope for 118 issues)

  • Abstract metadata for multidimensional image data considered as functions

    B Gibaud 25/10/2007

  • GoalsProvide documentation of the bulk dataConcerning logical organizationRange of the function : scalar or not, data type used (uchar, char, int, float, double, etc)Domain of the function : Number of variables, order of variables, number of samples along each dimension, regular sampling or notSemanticsOf componentsOf variables

  • Spec of domain and rangeRange (components)ScalarData-type, e.g. int32Semantics, e.g. T1weightedMRIsignalintensityVectorNb-components ; table of (Data-type, Semantics)Domain (variables)Nature of intervalRegular-intervalNb-samples ; inter-sample-distance ; sample-widthNon regular intervalNb-samples ; origin ; table of (dist-to-origin, sample-width )Semantics : e.g. space, time, energy

  • Example 1T1weighted MR datasetScalar RangeData-type=int32Semantics = T1weightedMRsignalintensity3 variablesRegular intervalNb-samples=256, inter_sample-dist=1mm, sample-width=1mm semantics = space along XRegular intervalNb-samples=256, inter_sample-dist=1mm, sample-width=1mm semantics = space along Y Regular intervalNb-samples=120, inter_sample-dist= 4mm, sample-width=4mm semantics = space along Z

  • Example 2fMRI datasetScalar RangeData-type=int16Semantics = T2STARMRsignalintensity4 variablesRegular intervalNb-samples=128, inter_sample-dist=4mm, sample-width=4mm semantics = space along XRegular intervalNb-samples=128, inter_sample-dist=4mm, sample-width=4mm semantics = space along Y Regular intervalNb-samples=12, inter_sample-dist= 9mm, sample-width=9mm semantics = space along ZRegular intervalNb-samples=200, inter_sample-dist= 1s, sample-width=0.5s semantics = time

  • Example 3SPECT acquisition dataset (TOMO)Scalar RangeData-type=int16Semantics = Number of counts3 variablesRegular intervalNb-samples=128, inter_sample-dist=4mm, sample-width=4mm semantics = space along XRegular intervalNb-samples=128, inter_sample-dist=4mm, sample-width=4mm semantics = space along Y Regular intervalNb-samples=128, inter_sample-dist= 2.81, sample-width=2.81 semantics = space along theta (projection angle)

  • Example 43D displacement field (non linear registration)Vector Range3 components(Data-type=float ; Semantics = space displacement along X)(Data-type=float ; Semantics = space displacement along Y)(Data-type=float ; Semantics = space displacement along Z) 3 variablesRegular intervalNb-samples=256, inter_sample-dist=1mm, sample-width=1mm semantics = space along XRegular intervalNb-samples=256, inter_sample-dist=1mm, sample-width=1mm semantics = space along Y Regular intervalNb-samples=120, inter_sample-dist= 4mm, sample-width=4mm semantics = space along Z

  • Example 5-1RGB 2D image Vector Range3 components(Data-type=int16 ; Semantics = Luminance in Red)(Data-type=int16 ; Semantics = Luminance in Green)(Data-type=int16 ; Semantics = Luminance in Blue)2 variablesRegular intervalNb-samples=1024, inter_sample-dist=0.5mm, sample-width=0.5mm semantics = space along XRegular intervalNb-samples=1024, inter_sample-dist=0.5mm, sample-width=0.5mm semantics = space along Y

  • Open issues 1Need to have a sort of qualitative variable to manage e.g. RGB images in 3 separate planes, indexed by this variable ? semantics of the corresponding variable would be : Red, Green, Blue ?semantics of the corresponding (scalar) range would be luminance ?Probably neededIt would become somewhat arbitrary to choose between a vector range versus a colour qualitative variable

  • Example 5-2RGB 2D image (as 3 separate planes)Scalar Range(Data-type=int16 ; Semantics = Luminance)3 variablesRegular intervalNb-samples=1024, inter_sample-dist=0.5mm, sample-width=0.5mm semantics = space along XRegular intervalNb-samples=1024, inter_sample-dist=0.5mm, sample-width=0.5mm semantics = space along YQualitative variableNb-samples=3(Semantics = Luminance in Red)(Semantics = Luminance in Green)(Semantics = Luminance in Blue)

  • Open issues 2Need to manage related variables ? for instance in the SPECT example (TOMO), the indexing could be done both on the projection angle and on timeUseful ?Is sampling necessarily regular with both variables (linear relationship between the two) ?

  • Open issues 3Need to manage units in which scalar components are represented (Hounsfield, NM units, etc.) ?Useful ?

  • Example 6MR SpectroTBD

    ****For those of you that were not able to attend Fred Priors talk, Ill first desc