randonode frame work and api open development conference september 17-19, 2008 ravi rajaram it...

Post on 23-Dec-2015

214 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related