Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Warning
titleHub Admins Only

This section is intended for hub administrators only.  For the ACT network, the hubs have already been set up and hosted at Harvard Catalyst, and remote sites should skip this section.


Here is a sample shrine.conf file for a system running SHRINE 34.20.1 0 , for a node supporting researchers and distributing queries. Note that the adapter section sets create = false; most real hubs do not have collections of patient data. 


Code Block
languagebash
themeRDark
titleshrine.conf
shrine {

  shrineHubBaseUrl = "https://localhost:6443" //The shrine hub's URL as observed from this tomcat server
  i2b2BaseUrl = "http://i2b2.example.com:9090" //The local i2b2's URL as observed from this tomcat server
  i2b2Domain = "exampleDomain"
  i2b2ShrineProjectName = "SHRINE"

  nodeKey = "somethingHub" //node key to get information from the hub about itself as a node.

  //shrineDatabaseType = "mysql" // "mysql" by default. It can be "sqlserver" "mysql" or "oracle"

  webclient {
    siteAdminEmail = "shrine-admin@example.com"
  }

  hiveCredentials {
    username = "demo"
    crcProjectId = "Demo"
  }//hiveCredentials

  hub {
    create = true

    //This part of the configuration is only used if no network is found in the hub's database
  messagequeue {
      blockingqWebApi {
        enabled = true  //Ifrun noshrine's networkMoM issystem foundIt is loaded into the database when at the hub starts.
    //To update the}
 network or nodes, use the appropriate curl commands, not this config section. }//messagequeue
    }//Specifiedhub

 nodes areadapter added{
 only if the nodecreate key does not already exist in the hub's database.= false
    //todo put a reference to those commands as part of SHRINE-3032}//adapter

    ifNoNetworkkeystore {
    privateKeyAlias  network {= "shrine-hub"
      caCertAliases  name = "Shrine Dev Test Network" //Name of your network["shrine-ca"]
  }//keystore

  steward {
    emailDataSteward {
   hubQueueName = "hub" //queue used to send messages to provide the hub,email differentaddress fromof the queueshrine usednode tosystem sendadmin, messages to ahandle QEPbounces and an adapter colocated with the hubinvalid addresses
        adminEmailfrom = "yourname@exampleshrine-admin@example.com"
      }
      //Nodes in this network
      //In ifNoNetwork - nodes are added only if the node key does not already exist in the hub's database.
      nodes = [provide the email address of the shrine node system admin, to handle bounces and invalid addresses
        {
          nameto = "Shrine Dev1", //human-readable name for this node
       shrine-steward@example.com"
   key = "somethingHub", //machine-friendlyprovide keythe usedexternally-reachable toURL identifyfor thisthe node. Never change this.data steward
        externalStewardBaseUrl  userDomainName = "${shrine-dev1.catalyst", //domain name for users from this node.
          adminEmail = "yourname@example.shrine-dev1.com", //the email address for the admin of this node
          queueName = "shrineDev1", //queue used to send messages to the qep and adapter at this node. This field is optional, defautls to the key if not specified
          sendQueries = "false" //true to send queries to an adapter at this node. An optional field, true by default.
        },
        {
          name = "shrine-dev2",
          key = "shrineDev2",
          userDomainName = "shrine-dev2.catalyst",
          adminEmail = "yourname@example.shrine-dev2.com"
        }
      ]
    }//ifNoNetwork

    networkHealth.shrineHubBaseUrl}/shrine-api/shrine-steward
    }
  }//steward
}//shrine

 It is rare but possible to have a set of patient data at the hub. Simply include the adapter section of qep-and-adapter-shrine.conf in your shrine.conf , tailored to your system as explained earlier in this chapter.


Set the shrine i2b2 user password in the password.conf file in /opt/shrine/tomcat/lib .

Code Block
themeRDark
titlepassword.conf
shrine.hiveCredentials.password = "changeit"


Next, configure the initial network structures and queues for the hub.

Download the shrine network lifecycle tool into /opt/shrine:

Code Block
languagebash
themeRDark
cd /opt/shrine


wget https://repo.open.catalyst.harvard.edu/nexus/content/groups/public/net/shrine/shrine-network-lifecycle-tool/4.0.0/shrine-network-lifecycle-tool-4.0.0-dist.zip -O shrine-network-lifecycle.zip unzip shrine-network-lifecycle.zip

cd shrine-network-lifecycle

Inside the conf directory, edit the override.conf file to use your database username and password:

Code Block
languagejs
themeRDark
shrine {
  queryEntryPoint{
    audit {
      emaildatabase {
        networkNamedataSourceFrom = "Enter network nametestDataSource"
 //Can be JNDI or testDataSource . Use networkSignaturetestDataSource =for "Entertests networkand signature"
command line tools, JNDI     grantDescription = "Enter description of grant"everywhere else
        helpContactName = "Enter help contact name"
testDataSource {
          helpContactEmaildriverClassName = "yourname@example.comcom.mysql.cj.jdbc.Driver" //TheJDBC emaildriver addressclass forname
 the node admin to contact for help if there areurl questions about an error that occurred after running the connectivity test= "jdbc:mysql://localhost:3306/qepAuditDB?serverTimezone=UTC" //URL to your database
      }
    credentials  webpage {
        networkName = "Enter network name"
        webPageNote  username = "yourUserName"
            password = "yourDatabasePassword"

Next, create a file named network.conf to meet your needs. At a minimum include the network section and a section for the hub's QEP:

Code Block
languagejs
themeRDark
shrine {
  network {
    networkThis is a note" //Optional alert message to display at the bottom of the network health webpage
        alertMessage = "This is an alert message"  //Optional alert message to display at the top of the network health webpage
      }
      connectivityTest {
      name  queryId = "123456789"  //The query Id of a previously run query that will be used to create a new query for the connectivity testNetwork Name"
        intervalhubQueueName = "24 hours" //How often to run the connectivity testhub"
        timeLimitadminEmail = "10 minutes"  //How long to wait for the query to finish running. If the query does not finish by this time, it will be marked as an error.yourEmail@yourhospital.edu"
       momId delay = "5 seconds" //The initial delay for starting the connectivity test. If the delay is "5 seconds" then the connectivity test will run 5 seconds after server startup.HubQueue"
      }
    }//networkHealth

    messagequeue {nodes = [
      blockingqWebApi {
        enabledname = true  //run shrine"Hub's MoM system at the hub.QEP"
      }
  key  }//messagequeue
  }//hub

  adapter {
= "hub-qep"
       create = false
  }//adapter

  keystore {
    privateKeyAlias userDomainName = "shrinenetwork-hub"
    caCertAliases = ["shrine-ca"]
  }//keystore

  steward {queueName = "shrinehub"
    emailDataSteward {
      //provide the email address of the shrine node system admin, to handle bounces and invalid addresses
      from = "shrine-admin@example.comsendQueries = "false"
      //provide the email address of the shrine node system admin, to handle bounces and invalid addresses
      to adminEmail = "shrine-steward@exampleyourEmail@yourhospital.comedu"
        momId //provide the externally-reachable URL for the data steward
  = "HubQepQueue"
    externalStewardBaseUrl = ${shrine.shrineHubBaseUrl}/shrine-api/shrine-steward
    }]
  }//steward
}//shrine

 It is rare but possible to have a set of patient data at the hub. Simply include the adapter section of shrine.conf from Chapter 8 in your shrine.conf .

All passwords are now stored in password.conf file in /opt/shrine/tomcat/lib instead of shrine.conf.

Finally use the shrineLifecycle tool to set up the network:

code
Code Block
languagebash
title
themeRDarkpassword.conf
shrine.hiveCredentials.password = "changeit"
shrine.keystore.password = "changeit"./shrineLifecycle createNetwork network.conf