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

29
RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

Upload: ezra-boone

Post on 23-Dec-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

RandoNode Frame Work and API

OPEN Development ConferenceSeptember 17-19, 2008

Ravi Rajaram

IT Development Manager

Page 2: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

Welcome

Page 3: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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

Page 4: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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…

Page 5: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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.

Page 6: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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

Page 7: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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

Page 8: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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

Page 9: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

9/18/08 RandoNode FrameWork 9

Node API – Interface Classes

Page 10: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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

Page 11: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

9/18/08 RandoNode FrameWork 11

Node API – OpenRegistration Class

Page 12: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

9/18/08 RandoNode FrameWork 12

Node API – OdmData class

Page 13: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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

Page 14: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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

Page 15: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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

Page 16: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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

Page 17: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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

Page 18: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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

Page 19: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

9/18/08 RandoNode FrameWork 19

RandoNode Object Flow for doRegister

Page 20: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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

Page 21: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

9/18/08 RandoNode FrameWork 21

Frame Work Classes

Page 22: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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.

Page 23: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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

Page 24: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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

Page 25: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

9/18/08 RandoNode FrameWork 25

ODM API - Metadata Classes

Page 26: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

9/18/08 RandoNode FrameWork 26

ODM API - ClinicalData Classes

Page 27: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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

Page 28: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

9/18/08 RandoNode FrameWork 28

Domain and Persist API – RandoNode Schema

Page 29: RandoNode Frame Work and API OPEN Development Conference September 17-19, 2008 Ravi Rajaram IT Development Manager

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