randonode frame work and api open development conference september 17-19, 2008 ravi rajaram it...
TRANSCRIPT
RandoNode Frame Work and API
OPEN Development ConferenceSeptember 17-19, 2008
Ravi Rajaram
IT Development Manager
Welcome
9/18/08 RandoNode FrameWork 3
Goals for Today• Present a comprehensive view of the
RandoNode architecture
• Achieve a more uniform understanding of the system across the CTSU and all of the Groups
• Specifically, you should leave understanding…– The RandoNode framework classes and the classes
where you need to do the work– How to deploy a RandoNode– How to modify one of the RandoNode methods to
embed your business logic– How to extract data from the OPEN request objects– How to deal with the form and WSDL changes
9/18/08 RandoNode FrameWork 4
Warning !• For some of you, the hands on will be a bit trivial based
on the work you have done already…
Please bear with us…
9/18/08 RandoNode FrameWork 5
What is a RandoNode?
• A RandoNode is a web service hosted by the Cooperative Group. – Each Cooperative Group Hosts their own RandoNode
• A RandoNode accepts request objects from the OPEN Portal.
• After processing requests from the OPEN Portal objects, a RandoNode send the registration results back to OPEN.
• All of the RandoNode logic and classes are embedded in the RandoNode.jar.
9/18/08 RandoNode FrameWork 6
RandoNode.jar• Every Group receives this jar
• Contains all of the CTSU developed APIs
• Helpful in extracting the data
• Helpful in persisting data into a predefined schema
• Helpful for navigating the ODM objects
9/18/08 RandoNode FrameWork 7
RandoNode.jar (cont)
• The jar Contains 5 packages– Node
• Web interface classes and the utility to convert between object and xml
– Framework• Provides a clean separation between the web service input and the
registration business logic – Odm
• Contains the classes that represent the ODM object model – Domain
• Persistent domain objects for working with hibernate – Persist
• Hibernate persistent layer
9/18/08 RandoNode FrameWork 8
Node API – Web Interface
• At this time the web interface implements five methods– isAvailable()– doCredential – doValidate – doRegister – doRegisterTest
• Every RandoNode created from the starter kit or created from the scratch, should implement these methods
• The input and output parameters (Interface objects) for these methods are strongly typed objects – Exception: clinicaldata in ODM format is a string
9/18/08 RandoNode FrameWork 9
Node API – Interface Classes
9/18/08 RandoNode FrameWork 10
Node API – Interface Classes (cont)
• Domain classes– OpenRegistration– OdmData
• Transaction Overhead Classes– OpenTxheader– OpenRequest– OpenResponse
• Specific response Classes– Wrappers to multiple objects– Includes references to the Domain and Tx Overhead objects– Ex. RegistrationResponse
9/18/08 RandoNode FrameWork 11
Node API – OpenRegistration Class
9/18/08 RandoNode FrameWork 12
Node API – OdmData class
9/18/08 RandoNode FrameWork 13
Node API – isAvailable() Method• Purpose: Intended to find out if the Group RandoNode
services are available for accepting requests
• Input: OpenRequest
• Output: OpenResponse
• Return READY if service is available, NOT-READY, if not
9/18/08 RandoNode FrameWork 14
Node API – doCredential() Method• Purpose: To perform any special site, investigator and
CRA credentialing check at the Group
• Input: OpenRequest, OpenRegistration
• Output: RegistrationResponse
• Return SUCCESS if the credentialing is OK, FAILURE otherwise
9/18/08 RandoNode FrameWork 15
Node API – doValidate() Method• Purpose: to validate the registration and clinical data
before invoking the doRegister method. – Only validate the data and do not perform any registration
• Input: OpenRequest, OpenRegistration,OdmData
• Output: RegistrationResponse
• Return SUCCESS if the validation is OK, FAILURE otherwise. – OpenRegistration.statusDetailText should contain the validation
failure details
9/18/08 RandoNode FrameWork 16
Node API – doRegister() Method• Purpose: To register the patient in the study
– Check isTest is false for production requests
• Input: OpenRequest, OpenRegistration,OdmData
• Output: RegistrationResponse
• Return SUCCESS if the registration is OK, FAILURE otherwise. – The patientId, and treatmentAssignment should be filled in, if the
patient is eligible. – The eligibility should be set whether the patient is eligible or not. – The ineligibilityReason should contain the reason– siteInstructions is set with any additional information for the
registering site
9/18/08 RandoNode FrameWork 17
Node API – doRegisterTest() Method• Purpose: To test register the patient in the study
– redundant with isTest attribute of OpenTxHeader
• Input: OpenRequest, OpenRegistration,OdmData
• Output: RegistrationResponse
• Return SUCCESS if the registration is OK, FAILURE otherwise – The patientId, and treatmentAssignment should be filled in, if the
patient is eligible – The eligibility should be set whether the patient is eligible or not – The ineligibilityReason should contain the reason– siteInstructions is set with any additional information for the
registering site
9/18/08 RandoNode FrameWork 18
Treatment of Nulls and Other values• Within OPEN objects, any attribute value which is null
will contain:– ‘NULL’ for the string data type– -99 for Number data type (soon will be changed to -9999.99)– Wrapper functions will be implemented to provide method to test
for NULL values
• OtherValues attribute– Handles special data request from groups without changing the
API signature– Will contain name-value pairs– Over time, the class definitions will be changed to accommodate
the attributes explicitly
9/18/08 RandoNode FrameWork 19
RandoNode Object Flow for doRegister
9/18/08 RandoNode FrameWork 20
RandoNode FrameWork
• The RandoNode has a framework (Jerry’s Framework) that separates the classes based on responsibility:– Classes that the CTSU is responsible for maintaining– Classes that a Group is responsible for implementing to capture
their specific business logic
• CTSU provides a jar/dll that contains this framework classes
• The jar/dll also contains utilities that will help in extracting the data from the OPEN request objects
9/18/08 RandoNode FrameWork 21
Frame Work Classes
9/18/08 RandoNode FrameWork 22
Group Implementation Classes• A main class that inherits from RanodeNodeApp. This
class is called from the CTSU provided web service class to obtain a object to handle the OPEN requests.
• Class(es) that inherit(s) from RegistrationCore which contains the business logic for the web services provided by the groups’ RandoNode.
9/18/08 RandoNode FrameWork 23
Frame Work logic • Create application object RandoNodeNSABP
• Create an application block (transaction)
• Ask the application object to create an empty Registration object RegistrationNSABP. This can be protocol specific registration object such as RegistrationNSABPB42, RegistrationNSABPB45 etc..– Protocol specific registration objects will implement special rules for
that protocol for credentialing, validation, registration etc..
• Load the metadata and clinical data objects from the OdmData data. Set the incoming registration data
• Initialize the registration Response, including openRegistration
• Invoke the appropriate method in the Registration object RegistrationNSABP or protocol specific one.
• close the transaction
9/18/08 RandoNode FrameWork 24
ODM API
• Contains classes that represent the ODM object model– Meta data classes and clinical data classes
• Contains two util classes that facilitate data extraction– MetaDataUtil– ClinicalDataUtil– Classes load the data from the openClinicalData and
openMetadata strings (within OdmData) into ODM objects– The util classes will be enhanced with more methods as we get
request for extraction of data on predefined fields
9/18/08 RandoNode FrameWork 25
ODM API - Metadata Classes
9/18/08 RandoNode FrameWork 26
ODM API - ClinicalData Classes
9/18/08 RandoNode FrameWork 27
Domain and Persist API
• Contains classes that are required for persisting the data in the RandoNode schema
• Domain API contains the hibernate mapping files whereas the persist contains the java code for persistence
• A configuration parameter controls whether to persist the data in to the randonode Schema – More details about parameter later
9/18/08 RandoNode FrameWork 28
Domain and Persist API – RandoNode Schema
9/18/08 RandoNode FrameWork 29
Hands on Tasks Organization• Task 1 – Randonode Installation
• Task 2a - How to use OPENPortalProxy
• Task 2b – Extract data from simple questions
• Task 2c – Extract data from repeating Module
• Task 3 – Read meta data files using the OPENDataService.
• Task 4a - Metadata change.– How to deal with Meta data changes
• Task 4b - WSDL change