BioMS 1.0 Setup and Admin Guide
Purpose
This document meant for the administrators of the BioMS application and describes the process of deploying the BioMS application and regular administration activities to be performed on the BioMS application.
Introduction
TODO
Deployment
The picture below shows the deployment model for the BioMS application with a two node Jboss cluster.
BioMS 1.0 Deployment ModelJBoss 5.1
BioMS node 1BioMS ORACLE DBJBoss 5.1
BioMS node2BioMS clusterApache http server load balancercaTissue2.0A on BioMSFrom BioMS adaptorCRAs, SM, AdminStudy Manager, BioMS Admin
BioMS 1.0 application is deployed with an instance of caTissue 2.0A which run against the same database schema BioMS is running on. This instance of caTissue is used for configuring specimen forms for use in BioMS and for generating reports on the specimen data stored in the BioMS DB and for performing some other administration activities.
BioMS application should be deployed in a JBoss cluster with minimum 2 nodes and front-ended by Apache load balancer. BioMS application requires Oracle 10.3 Enterprise or above for database.
The sections below describe the steps for deploying the BioMS application.
Pre-requisites
Make sure the following pre-requisites are satisfied before starting the deployment of BioMS.
- One Oracle 10g/11g Schema with permissions for creating table and sequences
- 3 Server machine with the following minimum configuration
- Dual core, 4GB RAM, 50 GB HDD x 2 – for BioMS cluster nodes and caTissue on BIoMS. One of these machines should have oracle client installed on it. This is required for installing caTissue.
- Dual Core, 1GB RAM, 50 GB HDD x 1 – for the apache load balancer
- OS : RHEL 5.0+
- JBoss 5.1
Setup caTissue2.0A on BioMS
Get the caTissue 2.0A installer from files. cbmi.wucon.wustl.edu: /files/bioms/1.0/RC1 and unpack in BioMS Node 1 server. Follow the caTissue 2.0 installation instruction to install caTissue to the BioMS database. This caTissue should be installed with all caTissue external system integrations like GSID, CTRP and C3PR should be disabled in install.properties . Also choose a different set of JBOSS port numbers to avoid conflict with the BioMS JBoss node running on the same server.
Setup BioMS on Bioms-node1
- Get the BioMS 1.0 distribution from files.cbmi.wucon.wustl.edu: /files/bioms/1.0/RC1/bioms-1.0.zip and unpack into a folder (lets call this folder BIOMS_INSTALL_HOME)
- Get JBoss 5.1 from here and unpack into a folder (lets call this JBOSS_HOME).
- Copy the folder JBOSS_HOME/server/all/ to JBOSS_HOME/server/bioms-node1
- Copy the contents of BIOMS_INSTALL_HOME/jboss-overlay onto JBOSS_HOME/server/bioms-node1/
- Copy BIOMS_INSTALL_HOME/war/bioms.war to JBOSS_HOME/server/bioms-node1/deploy
- Edit JBOSS_HOME/bin/run.conf and replace the JAVA_OPTS variable with the following
JAVA_OPTS="-Xms128m –Xmx2048m -XX:MaxPermSize=1024m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dgov.nih.nci.security.configFile=$HOME/.bioms/conf/ApplicationSecurityConfig.xml"
- Edit JBOSS_HOME/server/bioms-node1/cong/login-config.xml and update the database connection details under the application-policy element with name 'bms' to point to the BioMS database schema.
- Copy BIOMS_INSTALL_HOME/.bioms to users home folder ($HOME)
- Edit $HOME/.bioms/ApplicationSecurityConfig.xml and replace ${user.home} with the home directory path of the user.
- Edit $HOME/.bioms/bioms-config.groovy, and update the datasource section with the database connection details for the BioMS database schema.
- Start the JBoss Server bioms-bioms-node1
run.sh –b0.0.0.0 –cbioms-node1 -u 239.255.100.100 –gBioMSPartition -Djboss.messaging.ServerPeerID=1
This will start the server and the BioMS application deployed. Try accessing the BioMS application at url http://<bioms-node1-server>:8080/bioms. Login to the application using credentials admin@bms.com/Passw0rd and we should see a page similar to the following snapshot.
S Setup BioMS on Bioms-node2
Follow the same steps give in Section 3.3 substituting all bioms-bioms-node1 with bioms-bioms-node2 to setup second node of the BioMS cluster.
Start the BioMS Node with the command
run.sh –b0.0.0.0 –cbioms-bioms-node2 -u 239.255.100.100 –gBioMSPartition -Djboss.messaging.ServerPeerID=2
Once the bioms-node2 server is started make sure bioms-node2 bioms is accessible at http://<bioms-node2-server>:8080/bioms
Setup the Apache load balancer
Install apache HTTP server and configure mod_jk module and use the following mod_jk worker configuration
# Define list of workers that will be used# for mapping requestsworker.list=loadbalancer,status # Define Bioms-node1# modify the host as your host IP or DNS name.worker.bioms-bioms-node1.port=8009worker.bioms-node1.host=<bioms-node1-host> worker.bioms-node1.type=ajp13worker.bioms-node1.lbfactor=1worker.bioms-node1.cachesize=10 # Define Bioms-node2# modify the host as your host IP or DNS name.worker.bioms-node2.port=8009worker.bioms-node2.host=<bioms-node2-host> worker.bioms-node2.type=ajp13worker.bioms-node2.lbfactor=1worker.bioms-node2.cachesize=10 # Load-balancing behaviourworker.loadbalancer.type=lbworker.loadbalancer.balance_workers=bioms-node1,bioms-node2worker.loadbalancer.sticky_session=1#worker.list=loadbalancer # Status worker for managing load balancerworker.status.type=status
CTEP Authentication Setup
TODO
Mayo Authorization data Sync Setup
TODO
Participant Registration Sync Setup
TODO
Repository Sync
BioMS application can be integrated with tissue repository caTissue application. BioMS application is integrated with repository caTissue application it automatically synchronizes specimen data and shipment data between BioMS and caTissue to keep the data in sync across BioMS and repository caTissue. The sections below lists out all the data that gets synced between BioMS and caTissue.
BioMS to caTissue Sync (forward Sync)
A general rule applied on the sync of entities from BMS to Catissue is that entities are only synced to caTissue hosting those repositories where the entity would physically belong or is referenced by an entity that physically belong. E.g Specimen status updates are synced only to those caTissue repositories where the specimen would be shipped to.
Study
A study built in BMS will be synced to repositories on an explicit sync action from the Study Manager. When a study is completely built and is ready to be send to repositories Study manger will initiate a sync action by clicking the 'Synchronize Study' on build study UI. All study data except the following will be synced. These attributes/relations could not be synced because they are not captured in the caTissue domain model.
- Coincident Epoch
- Coincident CPE
- Alternate Specimen
- Equivalent Specimen
- SpecimenRequirement. tubeType
- SpecimenRequirement.repository
- SpecimenRequirement.shippingType
- SpecimenRequirement.specimenForms
- SpecimenRequirement.preparationInstruction
- SpecimenRequirement.shippingInstruction
Note: A Study would be synced (in its entirety) to only those repositories which receive at least one specimen from the study.
Participant
Participant data comes from the mayo RadoNode as part of the participant registration message. Whenever a new registration message is received from the RandoNode and new participant data is inserted into BioMS, the participant is synced to all the repositories. All the attributes (listed below) of the participant would be synced to all repositories linked to BioMS.
- firstname
- middleName
- lastName
- DOB
- race
- Ethnicity
- gender
- genomeType
Study Registration
StudyRegistration data comes from the Mayo RandoNode. Registration message contains a registration of a participant to Study and participant is automatically registered to all Epochs and Arms of the study. Participant registration messages are synced to those repositories where the study was originally synced. The following attributes of participarnt registration are synced
- protocolParticipantID (PPID)
- registrationDate
- participant
- protocol
When study registration is synced, all SCG and anticipated specimens for the participant stud registration is created in the caTissue repository. In each repository, specimen targeted (shipped to) that repository are mapped in the entity mapping table and all other anticipated specimens are marked 'Closed' and not mapped. The repository staff is not supposed to modify the specimen's marked closed, any modifications to those closed unmapped specimens will not be synced back to BioMS.
Note: For testing participant registration can be created in BMS using the temporary patientRegistration page. The participant registration page can be accessed at <bioms- base-url>/participantRegistration.
Specimen
Whenever specimen status changes in BioMS the updated specimen data is synced to the repository caTissue to which the specimen would be shipped to.
Specimen Collected
When a specimen is marked Collected by a CRA in BioMS, the following attributes of the specimen would be synced to the repository which would hold the specimen
- availableQuantiy
- initialQuantity
- collectionStatus (set to Collected)
- createdOnDate
Specimen CollectionEventParameter also will be added to the specimen with the following information.
- performedBy ( set to CRA who collected the specimen)
- timestamp
- container (set to the TubeType specified in the SpecimenRequirement)
- collectionProcedure (set to Not Specified)
The specimen would put in a storage position create on the BMS_Site_Container. BMS_Site_Container will hold the specimen until the specimen is moved to a 'InTransit' container, which happens when the specimen is shipped by collection site to a repository.
Specimen Pending
When the specimen is moved back to Pending state from collected in BMS the following attributes of the specimen would be updated
- availableQuantiy (set to 0)
- initialQuantity (set to 0)
- collectionStatus (set to Pending)
All other attribute will remain same including the collection event parameter.
Specimen Not Collected
When a specimen is marked Not Collected in BMS , the specimen status and the comment that captures the reason for not collected are synced to repository.
- collectionStatus (set to Not Collected)
- comment (capturing the reason for not collected)
Shipment
Shipments created in BioMS are synced to the repository were the shipment is addressed to. The shipment is synced to repository when the CRA sends the shipment in BioMS. The following attributes of the shipment are synced.
- label (set to 'BMS shipment <shipment id>' )
- sendDate
- senderSite
- receiverSite
- senderContactPerson
- receiverContactPerson
- specimens
- activiityStatus (set to 'In Transit')
Specimen Forms
Specimen form definition sync is not yet implemented. So whenever a Study Manager(SM) defines specimen form for BioMS via caTissue running on BioMS DB, SM manager has to share the form details to all the repository caTissue admins. Repository caTissue admins should define the forms in their caTissue and run generate:cacore:all build target to complete the form definition in caTissue. The form name and form attribute names, type and other constraints should match exactly with the form created in the BioMS.
Whenever a CRA, enter data on the specimen form in the checklist view, the form data is synced to repository to which the specimen gets synced. All attributes of the specimen form are synced and attached to the specimen via SpecimenRecordEntry. Once the form is synced from BioMS, repository users would be able to see the form data in the Annotations tab for the specimen in the caTissue.
User
Whenever a CRA User is created/updated in BioMS as part of Sync of user data from Mayo DB, the user is synced to all the repositories. The user is synced to repository only for referential integrity and the CRA users will not be able login to repository caTissue. The User is used in reference for collected user, shipped by User etc. The CRA user won't have any role or privileges assigned in caTissue. The following attributes (all) of the User are synced.
- loginName
- lastName
- firstName
- emailAddress
- Institution
- Adrress
- activityStatus
Site
When a new collection site is created/update in BMS as part of sync of Site data from Mayo DB, the Site data is synced to all repositories. All the sites from mayo DB are created as Collection Site is BMS and caTissue. The following (all) attributes of Site are synced.
- name
- type
- Address
- activityStatus
CaTissue to BMS Sync (reverse Sync)
Whenever specimen data originally synced from BioMS changes in the repository, the updates are synced back to BioMS to keep the data in sync. But Study , Participant and Participant Registration data doesn't get synced back to BioMS because, BioMS is the source of record for that data and repository users are not allowed to change that data.
Study
Studies that were created in caTissue as sync from BMS are not reverse synced because the BMS should be source of record for the Study definition and repositories should not be changing the study. If we allow reverse sync study modifications it could cause conflicts in BMS when different repositories make different kinds of modifications to the Study
Participant
Participants are created in BMS as part of processing RandoNode registrations. Reverse syncing of modifications (e.g participant name) to Participant should not be synced back to BMS because that could cause conflicts in BMS when multiple repositories change the values. Also the source of record for the participant data should be the registration system and the data should not be changes either in BMS or repository.
Question: Should we allow repositories to register participants to study via caTissue? If this is allowed then we would need to reverse sync participants to BMS. Any such reverse synced participant might needs to be synced to other repositories based on the study the participant is getting registered to.
Study Registration
Study registrations are creates in BioMS as part of processing RandoNode registrations. Modifications (e.g PPID) to registration should not be synced back to BioMS because that could cause conflicts in BioMS when multiple repositories change the values.
Specimen
Any modifications to Specimens that are originally synced from BMS or their derivatives are reverse synced to BMS. Here are the attributes that are reverse synced to BMS. Since each specimen is held only at one repository all the changes should come from only one repo and should not cause any conflicts in BioMS. Here are the list of attributes that are reverse synced to BMS.
AbstractSpecimen.initialQuantity |
AbstractSpecimen.lineage |
AbstractSpecimen.pathologicalStatus |
AbstractSpecimen.specimenClass |
AbstractSpecimen.specimenType |
Biohazard.name |
Biohazard.type |
DisposalEventParameters.activityStatus |
DisposalEventParameters.comments |
DisposalEventParameters.reason |
DisposalEventParameters.timestamp |
ExternalIdentifier.name |
ExternalIdentifier.value |
MolecularSpecimen.concentrationInMicrogramsPerMicroliter |
ReceivedEventParameters.receivedQuality |
ReceivedEventParameters.timestamp |
Specimen.activityStatus |
Specimen.available Quantity |
Specimen.barcode |
Specimen.collectionStatus |
Specimen.comment |
Specimen.createdOn |
Specimen.globalSpecimenIdentifier |
Specimen.isAvailable |
Specimen.label |
SpecimenCharacteristics.tissueSide |
SpecimenCharacteristics.tissueSite |
All SPP's (SPP should not be synced back, because all repos could have a different set of SSP) |
All DE Fields (Only those DE forms created by BMS could be synced back ) |
Once the specimen is received at the repository label, barcode, availableQuantity, initialQuantity, globalSpecimenIdentifier (if assigned at caTissue) and ReceivedEventParameters will be synced to BMS. BMS wont have these values assigned until the shipment containing the specimen is received at repository.
Aliquots and Derivatives
All aliquots and derivatives of specimens that were synced from BMS will be reverse synced. All the attribute of those child specimens would be reverse synced. BMS users will not be able to see those child specimens in BMS, but can be seen through the associated caTissue instance.
AbstractSpecimen.initialQuantity |
AbstractSpecimen.lineage |
AbstractSpecimen.pathologicalStatus |
AbstractSpecimen.specimenClass |
AbstractSpecimen.specimenType |
Biohazard.name |
Biohazard.type |
DisposalEventParameters.activityStatus |
DisposalEventParameters.comments |
DisposalEventParameters.reason |
DisposalEventParameters.timestamp |
ExternalIdentifier.name |
ExternalIdentifier.value |
MolecularSpecimen.concentrationInMicrogramsPerMicroliter |
ReceivedEventParameters.receivedQuality |
ReceivedEventParameters.timestamp |
Specimen.activityStatus |
Specimen.available Quantity |
Specimen.barcode |
Specimen.collectionStatus |
Specimen.comment |
Specimen.createdOn |
Specimen.globalSpecimenIdentifier |
Specimen.isAvailable |
Specimen.label |
SpecimenCharacteristics.tissueSide |
SpecimenCharacteristics.tissueSite |
All SPP's (SPP should not be synced back, because all repos could have a different set of SSP) |
All DE Fields (Only those DE forms created by BMS could be synced back ) |
Shipment
When a shipment sent from BMS is received at a repository, the status of the Shipment is updated and synced back to BMS.
The activityStatus of the shipment and all specimens contained in the shipment is set to 'Received' in BMS.
Specimen Collection Group
Specimen collection groups are created in caTissue during the participant registration sync. Repository users should not be creating any new collection groups.
Repository users can make modifications to Specimen Collection Group and the modifications would be synced back. The following attributes of the SCG will be synced back.
- activityStatus
- collectionStatus
- encounterTimeStamp
Issue: If multiple repositories changes the SCG it would cause a conflict in BMS and data across BMS and repositories will become out of sync.
User
Any new user created in the repository or any updates to any existing users would be synced back to BioMS. Only the basic user information (i.e User and Address) information would be synced back to BioMS. No authentication or authorization information would be synced back to BioMS. This syncing of users created in caTissue is required to maintain the referential integrity for references to repository users that gets synced back to BioMS.
Administration
This section describes various ongoing administrative tasks to be performed on the BioMS application.
Setup sync with a repository caTissue 2.0A
Given below are steps for linking a new repository caTissue instance to BioMS for data synchronization.
- Assign a unique name for the repository (<repo-name>)caTissue instance. E.g pco-repo.
- Assign a secret authorization key (<authkey>) for the repository
- Add new row to the BMS_REMOTE_REPOSITORY table in the BioMS database with the following data.
ID
NAME
JMS_QUEUE_NAME
AUTHKEY
STATUS
1 (max (id) +1)
<repo-name>
<repo-name>
<authkey>
1
Securely share the <repo-name> and <authkey> with the repository caTissue admin. They would need to update the bioms-adaptor.properties with these details.
Once the bioms-adaptor is setup properly at the repository caTissue and started you should see message like
controller.RepoSyncMessageController 2012-10-08 09:59:11,996 Sending 204 (no message available) to repo <repo-name>
in the bioms log.
Also messages like the following would be there on the BioMS adaptor log file.
5:01:14,745 INFO [STDOUT] 2012-10-08 15:01:14 SyncMessageReceiver [DEBUG] No mssage received, sleep for 10sec before trying again...Setup a new Repository Site
Once the repository caTissue instance is linked with BioMS as described above the follow the steps below to setup a new Repository Site for sync. A single caTissue instance can host multiple independent repository sites and BioMS can handle that.
- Request the caTissue Admin to create Repository Site and the repository coordinator user with the same details like name and address and note the ids of the Site and User created.
- Get the details of the Repository Site and the Coordinator user details from the repository caTissue admin.
- Create a Site of type Repository in BioMS via the 'caTissue2.0A on BioMS' and select the coordinator user created by the caTissue admin as the coordinator (this user would have been synced to BioMS automatically). Note the id of the site as <bms_repo_site_id> just created from caTissue2.0A on BioMS.
- Link the repository site created above with the caTissue remote repository created in step 5.1. For this insert a new row into the BMS_REMOTE_REPOSITORY_SITE table as shown below.
REMOTE_REPOSITORY_ID
SITE_ID
<id of the remote repo entry for the remote repo>
<site_id>
- Map the new Site created in BioMS with the Repository with the same name in caTissue. For this request the repository caTissue admin to insert the following row into BMS_CATISSUE_ENTITY table in the repository caTissue data base
ID
ENTITY_TYPE
BMS_ID
CATISSUE_ID
1 (or the next available id)
edu.wustl.catissuecore.domain.Site
<bms_repo_site_id>
<id_of_repo_site_in_catissue >
We should now be able to create studies with the new repository as the ship to site for specimen and sync the studies. When the study is synced study should show up in the caTissue.Building and rolling out new Study
Note: This section needs to be revised based on the business process
This section describes the steps for building and rolling out a new Study in BioMS.
- Identify the specimen form requirements for the study and if there is any specimen form required, build the form using the Local Extensions feature in the caTissue2A on BioMS. The form needs to be added to the form group with name bmsforms. Only these forms in this group will be available for selection in BioMS study builder.
The current version of BioMS has some restrictions on form fields and constraints and doesn't support all the capabilities of forms that could be created in caTissue. Given below is the summary of what is supported in the BioMS specimen forms.
Textfield (string ,numeric,URL datatypes and width, max length, min and max constraints are supported)TextArea ( width, max length and rows constraints are supported)CheckboxRadion ButtonListBox ComboBoxDate picker (Date only) File picker is not supported at this time.Also form inheritance and forms associations are not supported .
Watching for Sync issues
BioMS admin can see if there are any happening during syncing of data between BioMS and repository caTissue at <bioms-base-url>/syncError . This page lists all the erros occurred during the sync with the sync message and the error details including any stack trace.
BioMS admin should review this list of error at least once in a day to make sure sync functions are working properly.