SHRINE operates by getting settings from a master configuration file, named shrine.conf. You will need to place this file within /opt/shrine/tomcat/lib. Here is a sample node shrine.conf file for a system running SHRINE 1.22.8 (in this guide, we will refer to this file often and will go more in detail on configuring this file in the later chapters):
shrine { pmEndpoint { url = "http://localhost:9090/i2b2/services/PMService/getServices" } ontEndpoint { url = "http://localhost:9090/i2b2/services/OntologyService" } hiveCredentials { domain = "i2b2demo" username = "demo" password = "demouser" crcProjectId = "Demo" ontProjectId = "SHRINE" } breakdownResultOutputTypes { PATIENT_AGE_COUNT_XML { description = "Age patient breakdown" } PATIENT_RACE_COUNT_XML { description = "Race patient breakdown" } PATIENT_VITALSTATUS_COUNT_XML { description = "Vital Status patient breakdown" } PATIENT_GENDER_COUNT_XML { description = "Gender patient breakdown" } } queryEntryPoint { create = true audit { collectQepAudit = false database { dataSourceFrom = "JNDI" jndiDataSourceName = "java:comp/env/jdbc/qepAuditDB" slickProfileClassName = "slick.driver.MySQLDriver$" //slick.driver.H2Driver$ //slick.driver.PostgresDriver$ //slick.driver.SQLServerDriver$ //slick.driver.JdbcDriver$ //freeslick.OracleProfile$ //freeslick.MSSQLServerProfile$ } } trustModelIsHub = true attachSigningCert = true authenticationType = "pm" authorizationType = "shrine-steward" shrineSteward { qepUserName = "qep" qepPassword = "password" stewardBaseUrl = "https://localhost:6443" } includeAggregateResults = false maxQueryWaitTime { minutes = 5 } broadcasterServiceEndpoint { url = "https://shrine-hub-url:6443/shrine/rest/broadcaster/broadcast" } } //end queryEntryPoint adapter { create = true audit { collectAdapterAudit = false database { dataSourceFrom = "JNDI" jndiDataSourceName = "java:comp/env/jdbc/adapterAuditDB" slickProfileClassName = "slick.driver.MySQLDriver$" //slick.driver.H2Driver$ //slick.driver.PostgresDriver$ //slick.driver.SQLServerDriver$ //slick.driver.JdbcDriver$ //freeslick.OracleProfile$ //freeslick.MSSQLServerProfile$ } } crcEndpoint { url = "http://localhost:9090/i2b2/services/QueryToolService" } adapterLockoutAttemptsThreshold = 0 setSizeObfuscation = true adapterMappingsFileName = "AdapterMappings.csv" maxSignatureAge { minutes = 5 } immediatelyRunIncomingQueries = true } // end adapter networkStatusQuery = "\\\\SHRINE\\SHRINE\\Demographics\\Gender\\Male\\" humanReadableNodeName = "Shrine Node Name" shrineDatabaseType = "mysql" keystore { file = "/opt/shrine/shrine.keystore" password = "password" privateKeyAlias = "privateKeyAlias" keyStoreType = "JKS" caCertAliases = ["shrine-hub-ca"] } problem { problemHandler = "net.shrine.problem.LogAndDatabaseProblemHandler$" } dashboard { happyBaseUrl = "https://localhost:6443/shrine/rest/happy" statusBaseUrl = "https://localhost:6443/shrine/rest/internalstatus" database { dataSourceFrom = "JNDI" jndiDataSourceName = "java:comp/env/jdbc/problemDB" slickProfileClassName = "slick.driver.MySQLDriver$" //slick.driver.H2Driver$ //slick.driver.PostgresDriver$ //slick.driver.SQLServerDriver$ //slick.driver.JdbcDriver$ //freeslick.OracleProfile$ //freeslick.MSSQLServerProfile$ } } //end dashboard status { permittedHostOfOrigin = "localhost" } squerylDataSource { database { dataSourceFrom = "JNDI" jndiDataSourceName = "java:comp/env/jdbc/shrineDB" } } authenticate { usersource { domain = "i2b2demo" } } steward { createTopicsMode = Approved emailDataSteward { sendAuditEmails = false //false to turn off the whole works of emailing the data steward //interval = "1 day" //Audit researchers daily //timeAfterMidnight = "6 hours" //Audit researchers at 6 am. If the interval is less than 1 day then this delay is ignored. //maxQueryCountBetweenAudits = 30 //If a researcher runs more than this many queries since the last audit audit her //minTimeBetweenAudits = "30 days" //If a researcher runs at least one query, audit those queries if this much time has passed //You must provide the email address of the shrine node system admin, to handle bounces and invalid addresses //from = "shrine-admin@example.com" //You must provide the email address of the data steward //to = "shrine-steward@example.com" //subject = "Audit SHRINE researchers" //The baseUrl for the data steward to be substituted in to email text. Must be supplied if it is used in the email text. //stewardBaseUrl = "https://example.com:8443/steward/" //Text to use for the email audit. //AUDIT_LINES will be replaced by a researcherLine for each researcher to audit. //STEWARD_BASE_URL will be replaced by the value in stewardBaseUrl if available. //emailBody = """Please audit the following users at STEWARD_BASE_URL at your earliest convinience: AUDIT_LINES""" //note that this can be a multiline message //Text to use per researcher to audit. //FULLNAME, USERNAME, COUNT and LAST_AUDIT_DATE will be replaced with appropriate text. //researcherLine = "FULLNAME (USERNAME) has run COUNT queries since LAST_AUDIT_DATE." } database { dataSourceFrom = "JNDI" jndiDataSourceName = "java:comp/env/jdbc/stewardDB" slickProfileClassName = "slick.driver.MySQLDriver$" //slick.driver.H2Driver$ //slick.driver.PostgresDriver$ //slick.driver.SQLServerDriver$ //slick.driver.JdbcDriver$ //freeslick.OracleProfile$ //freeslick.MSSQLServerProfile$ } } // end steward email { } } // end shrine section
NOTE
If you are using Oracle for your database connections, please remember to change the 'slickProfileClassName' to 'freeslick.OracleProfile$'! Also, change shrineDatabaseType = 'oracle'!
Overview
Content Tools