41.7.1Setting Up SQL Server (MSSQL)

 

This page contains details on how to set up databases for use with SQL Server.

41.7.2Supported Versions

 

See platform requirements for information on supported versions of SQL Server.

41.7.3Creating a Database for Smile CDR

 

A script similar to the following can be used to create a new database named cdr with username cdr and password SmileCDR123 in MSSQL:

--create db off of master
USE master;  
--check if exists
IF DB_ID (N'cdr') IS NOT NULL  
DROP DATABASE cdr;
--create database 
CREATE DATABASE cdr  
COLLATE SQL_Latin1_General_CP1_CI_AS  
WITH TRUSTWORTHY ON, DB_CHAINING ON;  
--Verifying collation and option settings.  
SELECT name, collation_name, is_trustworthy_on, is_db_chaining_on  
FROM sys.databases  
WHERE name = N'cdr';

CREATE LOGIN cdr WITH PASSWORD = 'SmileCDR123'

Use cdr
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'cdr')
BEGIN
    CREATE USER [cdr] FOR LOGIN [cdr]
    EXEC sp_addrolemember N'db_owner', N'cdr'
END;

41.7.4Preparing an SQL Server Database for Smile CDR

 

To guarantee that an inserted row has been completely isolated, SQL Server uses a strict locking mechanism that prevents any reading or writing on that row new until the transaction is complete. Most other databases (like Postgres) allow reading to happen while a row is being inserted. Postgres' transaction isolation documentation states that two SELECT statements in a single transaction may return different values and still be able to guarantee that the transaction was isolated as a whole. SQL Server takes a different approach and states that this is an invalidation of the isolation property of a SQL transaction. This is a valid approach as we might have subsequent queries in our transaction that require a consistent view of a row, however when we try to write concurrently to a table this strictness may cause deadlocks to occur depending on our indexing strategy. Using the READ_COMMITTED_SNAPSHOT isolation level, SQL Server can guarantee that a transaction has a consistent view of a row without needing to lock the row to reads. This isolation level is the default of Azure SQL Databases.

Use cdr
ALTER DATABASE CURRENT
    SET READ_COMMITTED_SNAPSHOT ON;

41.7.5Database Connection Properties

 

When configuring Smile CDR to connect to a MSSQL database, set the appropriate persistence and cluster manager properties to values similar to the following (making adjustments where necessary, e.g. for hostname, port number, username and password):

Note that the OLE DB Driver 19 for SQL Server changed the encryption settings to require encryption on all connections by default. The example JDBC URL below is configured to trust all Server Certificates (trustServerCertificate=true) without performing any validation on them.
module.clustermgr.config.db.driver    =MSSQL_2012
module.clustermgr.config.db.url       =jdbc:sqlserver://localhost:1433;trustServerCertificate=true;database=cdr
module.clustermgr.config.db.username  =cdr
module.clustermgr.config.db.password  =SmileCDR123

41.7.6Setting up a Cluster Manager Database

 

To initialize a new SQL Server database for the Cluster Manager, initialize a database with the following SQL:

create sequence SEQ_AG_ADDRESS_PID start with 1 increment by 50;

create sequence SEQ_AG_APP_REQUEST_PID start with 1 increment by 50;

create sequence SEQ_AG_APPL_PID start with 1 increment by 50;

create sequence SEQ_AG_ATTESTATION_PID start with 1 increment by 50;

create sequence SEQ_AG_CLASS_PID start with 1 increment by 50;

create sequence SEQ_AG_COUNTRY_PID start with 1 increment by 50;

create sequence SEQ_AG_DATA_PID start with 1 increment by 50;

create sequence SEQ_AG_DOCUMENT_PID start with 1 increment by 50;

create sequence SEQ_AG_DRAFT_PID start with 1 increment by 50;

create sequence SEQ_AG_MEMBER_PHONE_PID start with 1 increment by 50;

create sequence SEQ_AG_METADATA_PID start with 1 increment by 50;

create sequence SEQ_AG_NOTE_PID start with 1 increment by 50;

create sequence SEQ_AG_OAUTH_REDIRECT_PID start with 1 increment by 50;

create sequence SEQ_AG_PERMISSION_PID start with 1 increment by 50;

create sequence SEQ_AG_PHONE_PID start with 1 increment by 50;

create sequence SEQ_AG_PREREQUISITE_PID start with 1 increment by 50;

create sequence SEQ_AG_PROFILE_PID start with 1 increment by 50;

create sequence SEQ_AG_SANDBOX_CLIENT_PID start with 1 increment by 50;

create sequence SEQ_AG_SCOPE_PID start with 1 increment by 50;

create sequence SEQ_AG_SCREENSHOT_PID start with 1 increment by 50;

create sequence SEQ_AUDITEVT_HEADER_PID start with 1 increment by 50;

create sequence SEQ_AUDITEVT_PID start with 1 increment by 50;

create sequence SEQ_AUDITEVT_TARGETMODULE_PID start with 1 increment by 50;

create sequence SEQ_AUDITEVT_TARGETRES_PID start with 1 increment by 50;

create sequence SEQ_AUDITEVT_TARGETUSER_PID start with 1 increment by 50;

create sequence SEQ_AUDITEVT_TYPE_PID start with 1 increment by 50;

create sequence SEQ_CACHE_SYNC_PID start with 1 increment by 50;

create sequence SEQ_CDATEMPLATE_PID start with 1 increment by 50;

create sequence SEQ_CDATEMPLATEPARAM_PID start with 1 increment by 50;

create sequence SEQ_CDR_RESTORE_PID start with 1 increment by 50;

create sequence SEQ_HTTPSESSION_PID start with 1 increment by 50;

create sequence SEQ_ID_CODE_PID start with 1 increment by 50;

create sequence SEQ_METRICHC_PID start with 1 increment by 50;

create sequence SEQ_METRICHEALTH_PID start with 1 increment by 50;

create sequence SEQ_MODPROC_PID start with 1 increment by 50;

create sequence SEQ_MODSTAT_PID start with 1 increment by 50;

create sequence SEQ_MODULE_CFGPROP_PID start with 1 increment by 50;

create sequence SEQ_MODULE_DEP_PID start with 1 increment by 50;

create sequence SEQ_MODULE_PID start with 1 increment by 50;

create sequence SEQ_MODULE_PROT_CFG_PID start with 1 increment by 50;

create sequence SEQ_MODULE_PROT_DEP_PID start with 1 increment by 50;

create sequence SEQ_MODULE_PROT_SUPPLIES_PID start with 1 increment by 50;

create sequence SEQ_MODULE_PROTOTYPE_PID start with 1 increment by 50;

create sequence SEQ_NODE_PID start with 1 increment by 50;

create sequence SEQ_NODEPROC_PID start with 1 increment by 50;

create sequence SEQ_OA2ATOKADNLINFO_PID start with 1 increment by 50;

create sequence SEQ_OA2ATOKEN_PID start with 1 increment by 50;

create sequence SEQ_OA2ATOKGRNTDA_PID start with 1 increment by 50;

create sequence SEQ_OA2ATOKSCP_PID start with 1 increment by 50;

create sequence SEQ_OA2AUTHCODE_PID start with 1 increment by 50;

create sequence SEQ_OA2CLIDETAASCOP_PID start with 1 increment by 50;

create sequence SEQ_OA2CLIDETAGSCOP_PID start with 1 increment by 50;

create sequence SEQ_OA2CLIDETAUTHGRNTTYP_PID start with 1 increment by 50;

create sequence SEQ_OA2CLIDETCLISEC_PID start with 1 increment by 50;

create sequence SEQ_OA2CLIDETREGREDIRURI_PID start with 1 increment by 50;

create sequence SEQ_OA2CLIENTDETAILS_PID start with 1 increment by 50;

create sequence SEQ_OA2CLIENTDETAILSSCOPE_PID start with 1 increment by 50;

create sequence SEQ_OA2CLIENTPERM_PID start with 1 increment by 50;

create sequence SEQ_OA2REFTOKEN_PID start with 1 increment by 50;

create sequence SEQ_OA2RTOKADNLINFO_PID start with 1 increment by 50;

create sequence SEQ_OA2RTOKGRNTDA_PID start with 1 increment by 50;

create sequence SEQ_OA2RTOKLNCHRESID_PID start with 1 increment by 50;

create sequence SEQ_OA2RTOKREQPRM_PID start with 1 increment by 50;

create sequence SEQ_OA2RTOKSCP_PID start with 1 increment by 50;

create sequence SEQ_OA2SERVER_PID start with 1 increment by 50;

create sequence SEQ_USER_OA2CLN_TOS_PID start with 1 increment by 50;

create sequence SEQ_USER_PERM_PID start with 1 increment by 50;

create sequence SEQ_USER_PID start with 1 increment by 50;

create sequence SEQ_USER_PSN_PID start with 1 increment by 50;

create sequence SEQ_USERDEFLNCHCTX_PID start with 1 increment by 50;

create sequence SEQ_USERTFAKEY_PID start with 1 increment by 50;

create sequence SEQ_USROA2CLNTAPRVDSCP_PID start with 1 increment by 50;

create sequence SEQ_XACT_LOG_PID start with 1 increment by 50;

create sequence SEQ_XACT_LOG_STEP_PID start with 1 increment by 50;

create table AG_ADDRESS (
    PID bigint not null,
    ADDRESS_LINE1 varchar(200) not null,
    ADDRESS_LINE2 varchar(200),
    CITY varchar(200) not null,
    COUNTRY varchar(200) not null,
    POSTAL_CODE varchar(200) not null,
    REGION varchar(200) not null,
    AG_PROFILE_PID bigint,
    primary key (PID)
);

create table AG_APP_REQUEST (
    PID bigint not null,
    APP_DESCRIPTION varchar(400),
    APP_DEVELOPER_NAME varchar(200),
    APP_HOMEPAGE varchar(200),
    APP_NAME varchar(200) not null,
    CREATED_BY varchar(200) not null,
    CREATED_DATE datetime2(6) not null,
    LAST_MODIFIED_BY varchar(200) not null,
    LAST_MODIFIED_DATE datetime2(6) not null,
    MEMBER_COMMENT varchar(200),
    COMPANY_NAME varchar(200),
    EMAIL varchar(200) not null,
    FIRST_NAME varchar(200) not null,
    INDUSTRY varchar(200),
    JOB_TITLE varchar(200),
    LAST_NAME varchar(200) not null,
    NOTE varchar(400),
    REQUEST_STATUS varchar(20) not null,
    SUBSCRIBE_ACCEPTED bit,
    MODULE_PID bigint not null,
    primary key (PID)
);

create table AG_APPL (
    PID bigint not null,
    ATTESTATION_ACCEPTED bit not null,
    BACKEND_SERVICE bit,
    CONFIDENTIAL bit,
    CONFIDENTIAL_TYPE varchar(20),
    JWK_SET_URL varchar(4000),
    HOME_URL varchar(200),
    LAUNCH_URL varchar(200),
    LONG_DESC varchar(4000) not null,
    APP_NAME varchar(200) not null,
    OAUTH_REDIRECT_URL varchar(200) not null,
    PRIVACY_POLICY_URL varchar(200) not null,
    SHORT_DESC varchar(200) not null,
    AG_STATUS varchar(20) not null,
    TERMS_OF_SERVICE_URL varchar(200) not null,
    VERSION_NUMBER bigint,
    CREATED_BY varchar(200) not null,
    CREATED_DATE datetime2(6) not null,
    LAST_MODIFIED_BY varchar(200) not null,
    LAST_MODIFIED_DATE datetime2(6) not null,
    IDENTIFIER varchar(200),
    SEED varchar(256),
    VIDEO_URL varchar(200),
    VIDEO_URL_STATUS varchar(20),
    JWK_SET_PID bigint,
    ATTESTATION_PID bigint,
    ICON_PID bigint,
    MODULE_PID bigint not null,
    OAUTH2_CLIENT_PID bigint,
    PARENT_PID bigint,
    PROFILE_PID bigint,
    USER_PID bigint,
    primary key (PID)
);

create table AG_ATTESTATION (
    PID bigint not null,
    ARCHIVE_DATE datetime2(6),
    CREATED_BY varchar(200) not null,
    CREATED_DATE datetime2(6) not null,
    LAST_MODIFIED_BY varchar(200) not null,
    LAST_MODIFIED_DATE datetime2(6) not null,
    TITLE varchar(200) not null,
    HTML_PID bigint,
    MODULE_PID bigint not null,
    PLAIN_HTML_PID bigint,
    primary key (PID)
);

create table AG_CLASS (
    PID bigint not null,
    CLASSIFICATION varchar(200) not null,
    AG_APPL_PID bigint,
    primary key (PID)
);

create table AG_COUNTRY (
    PID bigint not null,
    ISO_CODE_ALPHA2 varchar(2) not null,
    AG_APPL_PID bigint,
    primary key (PID)
);

create table AG_DATA (
    PID bigint not null,
    DATA_LOB varbinary(max),
    DATA_BIN varbinary(max),
    primary key (PID)
);

create table AG_DOCUMENT (
    PID bigint not null,
    FILEACTIVE bit not null,
    CREATED_BY varchar(200) not null,
    CREATED_DATE datetime2(6) not null,
    LAST_MODIFIED_BY varchar(200) not null,
    LAST_MODIFIED_DATE datetime2(6) not null,
    FILEDESC varchar(200),
    FILENAME varchar(200) not null,
    FILETYPE varchar(200) not null,
    DOCUMENT_PID bigint not null,
    AG_APPL_PID bigint,
    primary key (PID)
);

create table AG_DRAFT (
    PID bigint not null,
    CREATED_BY varchar(200) not null,
    CREATED_DATE datetime2(6) not null,
    LAST_MODIFIED_BY varchar(200) not null,
    LAST_MODIFIED_DATE datetime2(6) not null,
    BACKEND_SERVICE bit,
    DATA_HASH int,
    APP_NAME varchar(200) not null,
    DRAFT_PID bigint not null,
    MODULE_PID bigint not null,
    SOURCE_APP_PID bigint,
    USER_PID bigint not null,
    primary key (PID)
);

create table AG_MEMBER_PHONE (
    PID bigint not null,
    COUNTRY_CODE varchar(20) not null,
    PHONE_NUMBER varchar(20) not null,
    PHONE_TYPE varchar(20) not null,
    AG_APP_REQUEST_PID bigint,
    primary key (PID)
);

create table AG_METADATA (
    PID bigint not null,
    METADATA_KEY varchar(100) not null,
    METADATA_SEARCHABLE bit not null,
    METADATA_VALUE varchar(4000) not null,
    AG_APPL_PID bigint,
    primary key (PID)
);

create table AG_NOTE (
    PID bigint not null,
    CREATED_BY varchar(200) not null,
    CREATED_DATE datetime2(6) not null,
    LAST_MODIFIED_BY varchar(200) not null,
    LAST_MODIFIED_DATE datetime2(6) not null,
    MESSAGE varchar(1500) not null,
    REASON varchar(1000) not null,
    NOTE_TYPE varchar(20),
    AG_APPL_PID bigint,
    primary key (PID)
);

create table AG_OAUTH_REDIRECT (
    PID bigint not null,
    OAUTH_REDIRECT_URL varchar(200) not null,
    AG_APPL_PID bigint,
    primary key (PID)
);

create table AG_PERMISSION (
    PID bigint not null,
    PERMISSION varchar(200) not null,
    AG_APPL_PID bigint,
    primary key (PID)
);

create table AG_PHONE (
    PID bigint not null,
    COUNTRY_CODE varchar(20) not null,
    PHONE_NUMBER varchar(20) not null,
    PHONE_TYPE varchar(20) not null,
    AG_PROFILE_PID bigint,
    primary key (PID)
);

create table AG_PREREQUISITE (
    PID bigint not null,
    PREREQUISITE varchar(200) not null,
    AG_APPL_PID bigint,
    primary key (PID)
);

create table AG_PROFILE (
    PID bigint not null,
    ABOUT_US varchar(250),
    ARCHIVE_DATE datetime2(6),
    CREATED_BY varchar(200) not null,
    CREATED_DATE datetime2(6) not null,
    LAST_MODIFIED_BY varchar(200) not null,
    LAST_MODIFIED_DATE datetime2(6) not null,
    BUSINESS_NAME varchar(200),
    DESIGNATION varchar(200),
    DUNS_NUMBER varchar(200),
    FULL_NAME varchar(200) not null,
    INCORPORATED bit,
    INDIVIDUAL bit not null,
    SALES_CONTACT varchar(200),
    SUPPORT_CONTACT varchar(200),
    SUPPORT_WEBPAGE varchar(200),
    PROFILE_TYPE varchar(20),
    WEBSITE_URL varchar(200),
    MODULE_PID bigint not null,
    USER_PID bigint not null,
    primary key (PID)
);

create table AG_SANDBOX_CLIENT (
    PID bigint not null,
    SEED varchar(256),
    MODULE_PID bigint not null,
    OAUTH2_CLIENT_PID bigint not null,
    USER_PID bigint not null,
    primary key (PID)
);

create table AG_SCOPE (
    PID bigint not null,
    SCOPE varchar(200) not null,
    SCOPE_TYPE varchar(20),
    AG_APPL_PID bigint,
    primary key (PID)
);

create table AG_SCREENSHOT (
    PID bigint not null,
    FILENAME varchar(200) not null,
    POSITION int not null,
    ASSET_STATUS varchar(20) not null,
    SCREENSHOT_PID bigint not null,
    AG_APPL_PID bigint,
    primary key (PID)
);

create table CDR_AUDIT_EVT (
    PID bigint not null,
    EVT_ADDITIONAL_JSON varchar(max),
    EVT_ADDITIONAL_JSON_VC varchar(max),
    AUSER_TYPE int,
    HAVE_HEADERS bit,
    REMOTE_ADDRESS varchar(100),
    REQUEST_ID varchar(128),
    HAVE_TARGET_MODULES bit not null,
    SOURCE_TRANSACTION_ID varchar(128),
    HAVE_TARGET_RESOURCES bit not null,
    HAVE_TARGET_USERS bit not null,
    EVT_TIMESTAMP datetime2(6) not null,
    TRANSACTION_GUID varchar(36),
    TYPE_DISPLAY varchar(200) not null,
    USER_PID bigint,
    CLIENT_PID bigint,
    ENDPOINT_MODULE_PID bigint not null,
    TYPE_PID bigint not null,
    primary key (PID)
);

create table CDR_AUDIT_EVT_HEADER (
    PID bigint not null,
    EVT_HEADER_NAME varchar(100) not null,
    EVT_HEADER_VALUE varchar(250),
    EVENT_PID bigint not null,
    primary key (PID)
);

create table CDR_AUDIT_EVT_TARGET_MODULE (
    PID bigint not null,
    EVENT_PID bigint not null,
    MODULE_PID bigint not null,
    primary key (PID)
);

create table CDR_AUDIT_EVT_TARGET_RES (
    PID bigint not null,
    REQ_VAL_RESULT int,
    RES_ID varchar(120) not null,
    RES_VERSION bigint,
    RES_VERSION_STR varchar(128),
    EVENT_PID bigint not null,
    PERS_MODULE_PID bigint not null,
    primary key (PID)
);

create table CDR_AUDIT_EVT_TARGET_USER (
    PID bigint not null,
    USER_PID bigint not null,
    EVENT_PID bigint not null,
    primary key (PID)
);

create table CDR_AUDIT_EVT_TYPE (
    PID bigint not null,
    CODEVAL varchar(200),
    SYSTEM_URL varchar(200),
    primary key (PID)
);

create table CDR_CACHE_SYNC (
    PID bigint not null,
    CACHE_ID varchar(256) not null,
    MODULE_PID bigint not null,
    UPDATED_TIME datetime2(6) not null,
    VERSION bigint not null,
    primary key (PID)
);

create table CDR_CDA_TEMPLATE (
    PID bigint not null,
    TEMPLATE_DESCRIPTION varchar(250),
    TEMPLATE_ID varchar(250) not null,
    TEMPLATE_CONTENT varchar(max),
    TEMPLATE_CONTENT_VC varchar(max),
    MODULE_PID bigint not null,
    primary key (PID)
);

create table CDR_CDA_TEMPLATE_PARAM (
    PID bigint not null,
    TEMPLATE_PARAMETER_NAME varchar(250) not null,
    TEMPLATE_PID bigint,
    primary key (PID)
);

create table CDR_DB_VERSION (
    DB_VERSION varchar(100) not null,
    DB_INIT_TIME datetime2(6) not null,
    primary key (DB_VERSION)
);

create table CDR_GLOBAL_GAUGE (
    ID varchar(200) not null,
    VAL_DOUBLE float(53),
    VAL_LONG bigint,
    primary key (ID)
);

create table CDR_HTTP_SESSION (
    PID bigint not null,
    SES_ATTRS varbinary(max),
    SES_ATTRS_BIN varbinary(max),
    SES_EXPIRY datetime2(6) not null,
    LAST_ACCESSED_TIME datetime2(6),
    MAX_INACTIVE bigint not null,
    PRINCIPAL_USERNAME varchar(200),
    SES_ID varchar(200) not null,
    MODULE_PID bigint not null,
    primary key (PID)
);

create table CDR_IDENTIFICATION_CODES (
    PID bigint not null,
    CDR_CODE varchar(6) not null,
    CODE_STATUS varchar(20) not null,
    EXPIRES_ON datetime2(6) not null,
    USER_PID bigint not null,
    primary key (PID)
);

create table CDR_METRIC_GAUGE (
    GAUGE_TYPE int not null,
    INTERVL int not null,
    START_TIME datetime2(6) not null,
    IS_COLLAPSED bit not null,
    GAUGE_VAL bigint not null,
    MODPROC_PID bigint not null,
    primary key (GAUGE_TYPE, INTERVL, MODPROC_PID, START_TIME)
);

create table CDR_METRIC_HC (
    PID bigint not null,
    ERROR_STRING varchar(200),
    HEALTHCHECK_TYPE int not null,
    IS_HEALTHY bit not null,
    HEALTHY_STRING varchar(200),
    MODPROC_PID bigint not null,
    primary key (PID)
);

create table CDR_METRIC_HEALTH (
    PID bigint not null,
    CUSTOM_HEALTHCHECK_NAME varchar(256),
    ERROR_STRING varchar(256),
    HEALTHCHECK_TYPE int not null,
    IS_HEALTHY bit not null,
    HEALTHY_STRING varchar(256),
    MODPROC_PID bigint not null,
    primary key (PID)
);

create table CDR_METRIC_TIMER (
    INTERVL int not null,
    START_TIME datetime2(6) not null,
    TIMER_TYPE int not null,
    IS_COLLAPSED bit not null,
    COUNT_VAL bigint,
    RATE_15_MIN float(53) not null,
    FIRST_SINCE_RS bit not null,
    RATE_5_MIN float(53) not null,
    LATENCY_MAX int not null,
    LATENCY_MEAN int not null,
    LATENCY_MIN int not null,
    MODPROC_PID bigint not null,
    RATE_1_MIN float(53) not null,
    primary key (INTERVL, MODPROC_PID, START_TIME, TIMER_TYPE)
);

create table CDR_MODULE (
    PID bigint not null,
    DELETED bit not null,
    MODULE_DISABLED bit not null,
    MATURITY int,
    MODULE_ID varchar(50) not null,
    PORTVAL int,
    NODE_PID bigint not null,
    PROTOTYPE_PID bigint not null,
    primary key (PID)
);

create table CDR_MODULE_CFG_PROP (
    PID bigint not null,
    VALUE_STRING varchar(200),
    VALUE_EXTENDED varchar(max),
    VALUE_EXTENDED_VC varchar(max),
    MODULE_PID bigint not null,
    PROTOTYPE_PID bigint not null,
    primary key (PID)
);

create table CDR_MODULE_DEP (
    PID bigint not null,
    MODULE_PID bigint not null,
    PROTOTYPE_PID bigint not null,
    TARGET_PID bigint,
    primary key (PID)
);

create table CDR_MODULE_PROCESS (
    PID bigint not null,
    FIRST_MP bit,
    MODULE_PID bigint not null,
    NODEPROC_PID bigint not null,
    RESTART_REQUIRED bit not null,
    MODULE_STATUS int not null,
    MODULE_STATUS_DESC varchar(200),
    STATUS_TIMESTAMP datetime2(6),
    primary key (PID)
);

create table CDR_MODULE_PROT_CFG (
    PID bigint not null,
    IS_ADVANCED bit not null,
    CATEGORY_KEY varchar(100) not null,
    DEFAULT_VALUE varchar(200),
    DESC_KEY varchar(200),
    ENUM_TYPE varchar(200),
    CFG_INDEX int not null,
    CFG_KEY varchar(200) not null,
    CFG_MATURITY varchar(200),
    NAME_KEY varchar(200) not null,
    IS_OPTIONAL bit not null,
    CFG_TYPE varchar(100) not null,
    PROTOTYPE_PID bigint not null,
    primary key (PID)
);

create table CDR_MODULE_PROT_DEP (
    PID bigint not null,
    DESCRIPTION_KEY varchar(200) not null,
    ENTRY_KEY varchar(200) not null,
    PROTOTYPE_PID bigint,
    primary key (PID)
);

create table CDR_MODULE_PROT_SUPPLIES (
    PID bigint not null,
    ENTRY_KEY int not null,
    PROTOTYPE_PID bigint,
    primary key (PID)
);

create table CDR_MODULE_PROTOTYPE (
    PID bigint not null,
    MODULE_TYPE varchar(200) not null,
    STOPPABLE bit not null,
    primary key (PID)
);

create table CDR_MODULE_STATE (
    PID bigint not null,
    STATE_TYPE int not null,
    STATE_VAL varchar(200),
    MODULE_PID bigint not null,
    primary key (PID)
);

create table CDR_NODE (
    PID bigint not null,
    IS_CONFIG_LOCKED bit,
    IS_DELETED bit,
    ENVIRONMENT_TYPE varchar(16),
    NODE_ID varchar(30) not null,
    IS_SECURITY_STRICT bit,
    primary key (PID)
);

create table CDR_NODE_MODULE_DIAGNOSTICS (
    DIAGNOSTICS_JSON varchar(max),
    DIAGNOSTICS_JSON_VC varchar(max),
    MODULE_PID bigint not null,
    NODE_PID bigint not null,
    primary key (MODULE_PID, NODE_PID)
);

create table CDR_NODE_PROCESS (
    PID bigint not null,
    CREATED_TIME datetime2(6) not null,
    HEARTBEAT_TIME datetime2(6),
    KILLED_BY varchar(20),
    NODE_PID bigint not null,
    PROCESS_ID varchar(20) not null,
    PROCESS_NAME varchar(100),
    STARTED_TIME datetime2(6),
    NODE_STATUS int not null,
    STOPPED_TIME datetime2(6),
    OPT_LOCK int not null,
    primary key (PID)
);

create table CDR_OA2_CLI_DET_AUTH_GRNT_TYP (
    PID bigint not null,
    GRANT_TYPE varchar(100) not null,
    CLIENT_PID bigint not null,
    primary key (PID)
);

create table CDR_OA2_CLI_DET_AUTOAP_SCOPE (
    PID bigint not null,
    SCOPE varchar(764) not null,
    CLIENT_PID bigint not null,
    primary key (PID)
);

create table CDR_OA2_CLI_DET_AUTOGRNT_SCOPE (
    PID bigint not null,
    SCOPE varchar(764) not null,
    CLIENT_PID bigint not null,
    primary key (PID)
);

create table CDR_OA2_CLI_DET_CLISEC (
    PID bigint not null,
    SEC_ACTIVATION datetime2(6),
    SEC_CREATION datetime2(6),
    SEC_DESC varchar(250),
    SEC_EXPIRATION datetime2(6),
    CLI_SECRET varchar(250) not null,
    CLIENT_PID bigint not null,
    primary key (PID)
);

create table CDR_OA2_CLI_DET_REG_REDIR_URI (
    PID bigint not null,
    REDIR_URI varchar(200) not null,
    CLIENT_PID bigint not null,
    primary key (PID)
);

create table CDR_OA2_SERVER (
    PID bigint not null,
    ARCHIVED_AT datetime2(6),
    AUDIENCE varchar(500),
    AUTH_WELL_KNOWN_CONFIG_URL varchar(500),
    CUSTOM_TOKEN_PARAMS varchar(500),
    FEDERATION_AUTH_SCRIPT_TEXT varbinary(max),
    FEDERATION_AUTH_SCRIPT_TXT_BIN varbinary(max),
    FEDERATION_AUTH_URL varchar(500),
    FEDERATION_JWKS_URL varchar(500),
    FEDERATION_REG_ID varchar(500) not null,
    FEDERATION_REQ_SCOPES varchar(500),
    FEDERATION_TOKEN_URL varchar(500),
    FEDERATION_USER_INFO_URL varchar(500),
    FEDERATION_USER_MAPPING_TEXT varbinary(max),
    FEDERATION_USR_MAPPING_TXT_BIN varbinary(max),
    FHIR_ENDPOINT_URL varchar(500),
    ISS varchar(200) not null,
    SERVER_NAME varchar(200),
    NOTES varchar(1000),
    ORGANIZATION_ID varchar(500),
    RESPONSE_TYPE varchar(500),
    INTRSPCT_CLIENT_ID varchar(200),
    INTRSPCT_CLIENT_SCRT varchar(200),
    JWKS_FILE varchar(500),
    JWKS_TEXT varchar(max),
    JWKS_TEXT_VC varchar(max),
    MODULE_PID bigint not null,
    primary key (PID)
);

create table CDR_OAUTH2_ATOKEN (
    PID bigint not null,
    EXPIRATION datetime2(6) not null,
    GRANT_TYPE varchar(20),
    ID_TOKEN_BYTES varbinary(max),
    ID_TOKEN_BYTES_BIN varbinary(max),
    ID_TOKEN_VAL varchar(1000),
    ISSUED datetime2(6) not null,
    REDIRECT_URI varchar(200),
    TOKEN_HASH varchar(150) not null,
    TOKEN_BYTES varbinary(max),
    TOKEN_BYTES_BIN varbinary(max),
    TOKEN_VAL varchar(1000),
    CLIENT_PID bigint not null,
    MODULE_PID bigint not null,
    REFRESH_TOKEN_PID bigint,
    USER_PID bigint,
    primary key (PID)
);

create table CDR_OAUTH2_ATOKEN_ADNLINFO (
    PID bigint not null,
    INFO_KEY varchar(200) not null,
    INFO_VALUE varchar(200) not null,
    TOKEN_PID bigint not null,
    primary key (PID)
);

create table CDR_OAUTH2_ATOKEN_GRNTDA (
    PID bigint not null,
    PERM_ARG varchar(764),
    PERM_NAME varchar(100) not null,
    TOKEN_PID bigint not null,
    primary key (PID)
);

create table CDR_OAUTH2_ATOKEN_SCOPE (
    PID bigint not null,
    SCOPE varchar(764) not null,
    TOKEN_PID bigint not null,
    primary key (PID)
);

create table CDR_OAUTH2_ATOKEN_UDATA (
    ATOKEN_PID bigint not null,
    TOKEN_KEY varchar(256) not null,
    VAL varbinary(max),
    primary key (ATOKEN_PID, TOKEN_KEY)
);

create table CDR_OAUTH2_ATOKEN_UDATA_BIN (
    ATOKEN_PID bigint not null,
    TOKEN_KEY varchar(256) not null,
    VAL_BIN varbinary(max),
    primary key (ATOKEN_PID, TOKEN_KEY)
);

create table CDR_OAUTH2_AUTH_CODE (
    PID bigint not null,
    OAUTH2_AUTHENTICATION varbinary(max),
    OAUTH2_AUTHENTICATION_BIN varbinary(max),
    CLIENT_ID varchar(200) not null,
    CODE_VAL varchar(100) not null,
    EXPIRATION datetime2(6) not null,
    PKCE_CHALLENGE varchar(200),
    PKCE_CHALLENGE_TYPE varchar(10),
    STATE_VAL varchar(256),
    primary key (PID)
);

create table CDR_OAUTH2_CLIENT_DET_SCOPE (
    PID bigint not null,
    SCOPE varchar(764) not null,
    CLIENT_PID bigint not null,
    primary key (PID)
);

create table CDR_OAUTH2_CLIENT_DETAILS (
    PID bigint not null,
    ACCESS_TOKEN_VALIDITY_SECONDS int,
    ALWAYS_REQUIRE_APPROVAL bit,
    ARCHIVED_AT datetime2(6),
    ATTESTATION_ACCEPTED bit,
    CAN_INTROSPECT_ANY bit,
    CAN_INTROSPECT_OWN bit,
    CAN_REUSE_TOKENS bit,
    CLIENT_ID varchar(200) not null,
    CLIENT_NAME varchar(200),
    CLIENT_SECRET varchar(200),
    ENABLED bit,
    FIXED_SCOPE bit not null,
    JWKS_URL varchar(4000),
    PUBLIC_JWKS varbinary(max),
    PUBLIC_JWKS_BIN varbinary(max),
    REFRESH_TOKEN_VALIDITY_SECONDS int,
    REMEMBER_APPROVED_SCOPES bit,
    SECRET_CLIENT_CAN_CHANGE bit,
    SECRET_REQUIRED bit not null,
    MODULE_PID bigint,
    primary key (PID)
);

create table CDR_OAUTH2_CLIENT_PERM (
    PID bigint not null,
    PERMISSION_TYPE varchar(100) not null,
    PERMISSION_ARG varchar(200),
    CLIENT_PID bigint not null,
    primary key (PID)
);

create table CDR_OAUTH2_JWT_UNIQ_ID (
    JWT_ID varchar(500) not null,
    CONSUMED_TIMESTAMP datetime2(6) not null,
    primary key (JWT_ID)
);

create table CDR_OAUTH2_KEYSTORE (
    KEYSTORE_ID varchar(50) not null,
    FILE_PATH varchar(4000),
    JSON_KEYS varchar(4000),
    primary key (KEYSTORE_ID)
);

create table CDR_OAUTH2_REFRESH_TOKEN (
    PID bigint not null,
    EXPIRATION datetime2(6),
    ISSUED datetime2(6) not null,
    TOKEN_VAL varchar(150) not null,
    CLIENT_PID bigint,
    USER_PID bigint,
    primary key (PID)
);

create table CDR_OAUTH2_RTOKEN_ADNLINFO (
    PID bigint not null,
    INFO_KEY varchar(200) not null,
    INFO_VALUE varchar(200) not null,
    TOKEN_PID bigint not null,
    primary key (PID)
);

create table CDR_OAUTH2_RTOKEN_GRNTDA (
    PID bigint not null,
    PERM_ARG varchar(764),
    PERM_NAME varchar(100) not null,
    TOKEN_PID bigint not null,
    primary key (PID)
);

create table CDR_OAUTH2_RTOKEN_LNCHRESID (
    PID bigint not null,
    RESOURCE_ID varchar(64) not null,
    RESOURCE_TYPE varchar(50) not null,
    TOKEN_PID bigint not null,
    primary key (PID)
);

create table CDR_OAUTH2_RTOKEN_REQPRM (
    PID bigint not null,
    PARM_KEY varchar(200) not null,
    PARM_VALUE varchar(1600),
    TOKEN_PID bigint not null,
    primary key (PID)
);

create table CDR_OAUTH2_RTOKEN_SCOPE (
    PID bigint not null,
    SCOPE varchar(764) not null,
    TOKEN_PID bigint not null,
    primary key (PID)
);

create table CDR_OAUTH2_RTOKEN_UDATA (
    TOKEN_PID bigint not null,
    TOKEN_KEY varchar(256) not null,
    VAL varbinary(max),
    primary key (TOKEN_PID, TOKEN_KEY)
);

create table CDR_OAUTH2_RTOKEN_UDATA_BIN (
    TOKEN_PID bigint not null,
    TOKEN_KEY varchar(256) not null,
    VAL_BIN varbinary(max),
    primary key (TOKEN_PID, TOKEN_KEY)
);

create table CDR_RESTORE (
    PID bigint not null,
    CONFIGS varchar(max),
    CONFIGS_VC varchar(max),
    CREATED datetime2(6) not null,
    VERSION varchar(50) not null,
    NODE_PID bigint not null,
    USER_PID bigint,
    primary key (PID)
);

create table CDR_USER_DETAILS (
    PID bigint not null,
    IS_ANON_ACCT bit,
    CREDS_EXPIRE_ON datetime2(6),
    USER_DISABLED bit not null,
    EMAIL varchar(200),
    EXPIRES_ON datetime2(6),
    IS_EXTERNAL bit,
    FAILED_LOGIN_ATTEMPTS int,
    FAMILY_NAME varchar(200),
    GIVEN_NAME varchar(200),
    LAST_ACTIVE datetime2(6),
    LAST_CONNECTED datetime2(6),
    USER_LOCKED bit not null,
    MODULE_PID bigint not null,
    NOTES varchar(max),
    NOTES_VC varchar(max),
    USER_PASSWORD varchar(200),
    IS_SERVICE_ACCT bit,
    IS_SYSTEM_USER bit not null,
    UPDATED_TS datetime2(6) not null,
    USERNAME varchar(200) not null,
    USERNAME_HAS_NAMESPACE bit,
    primary key (PID)
);

create table CDR_USER_DETAILS_DEF_LNCH_CTX (
    PID bigint not null,
    CONTEXT_TYPE varchar(50) not null,
    RESOURCE_ID varchar(64) not null,
    USER_PID bigint not null,
    primary key (PID)
);

create table CDR_USER_DETAILS_OA2CLNAPRVSCP (
    PID bigint not null,
    IS_APPROVED bit not null,
    SCOPE varchar(100) not null,
    CLIENT_PID bigint not null,
    USER_PID bigint not null,
    primary key (PID)
);

create table CDR_USER_OA2CLN_TOS (
    PID bigint not null,
    CREATED_BY varchar(200) not null,
    CREATED_DATE datetime2(6) not null,
    REVOKED_BY varchar(200),
    REVOKED_DATE datetime2(6),
    VERSION varchar(200) not null,
    CLIENT_PID bigint not null,
    USER_PID bigint not null,
    primary key (PID)
);

create table CDR_USER_PERM (
    PID bigint not null,
    PERMISSION_TYPE varchar(100) not null,
    PERMISSION_ARG varchar(200),
    USER_PID bigint,
    primary key (PID)
);

create table CDR_USER_PSN (
    PID bigint not null,
    CREATED_BY varchar(200) not null,
    CREATED_DATE datetime2(6) not null,
    REVOKED_BY varchar(200),
    REVOKED_DATE datetime2(6),
    USER_PID bigint not null,
    VERSION varchar(200) not null,
    primary key (PID)
);

create table CDR_USER_TFA_KEY (
    PID bigint not null,
    CONFIRMED_AT datetime2(6),
    KEY_EXPIRES datetime2(6),
    FAILED_VERIFS int,
    A_KEY varchar(250) not null,
    A_STYLE varchar(20) not null,
    OPTLOCK int not null,
    USER_PID bigint not null,
    primary key (PID)
);

create table CDR_XACT_LOG (
    PID bigint not null,
    ADDITIONAL_JSON varchar(max),
    INITIAL_TIMESTAMP datetime2(6) not null,
    EVT_OUTCOME int not null,
    SRC_XACT_ID varchar(128),
    EVT_SUBTYPE int not null,
    SRC_GUID varchar(36),
    EVT_TYPE int not null,
    USER_PID bigint,
    CLIENT_PID bigint,
    CDR_ENDPOINT_MODULE_PID bigint,
    primary key (PID)
);

create table CDR_XACT_LOG_STEP (
    STEP_PID bigint not null,
    BODY_BYTES varbinary(max),
    BODY_BYTES_BIN varbinary(max),
    BODY_TYPE int,
    LOCAL_HOST varchar(100),
    LOCAL_PORT int,
    EVT_OUTCOME int,
    PROCESSING_TIME bigint,
    REMOTE_HOST varchar(100),
    REMOTE_PORT int,
    REQUEST_URL_STR varchar(250),
    REQ_VAL_RESULT int,
    REQUEST_VERB varchar(7),
    RESPONSE_STATUS smallint,
    SUBSCRIPTION_ID varchar(77),
    LOG_TIMESTAMP datetime2(6) not null,
    STEP_TYPE int not null,
    LOG_PID bigint not null,
    primary key (STEP_PID)
);

create index IDX_AG_APPL_IDENTIFIER 
   on AG_APPL (IDENTIFIER);

create index IDX_AG_ATTEST_ARCHIVE_DATE 
   on AG_ATTESTATION (ARCHIVE_DATE);

alter table AG_DRAFT 
   add constraint IDX_AG_DRAFT_APPNAME_USER unique (APP_NAME, USER_PID);

alter table AG_OAUTH_REDIRECT 
   add constraint IDX_AG_OAUTH_REDIRECT_PID unique (OAUTH_REDIRECT_URL, PID);

create index IDX_AE_TGUID 
   on CDR_AUDIT_EVT (TRANSACTION_GUID);

create index IDX_CDRAUDITEVT_EVTTIMESTAMP 
   on CDR_AUDIT_EVT (EVT_TIMESTAMP);

create index IDX_AUDITEVT_HEADER_EVT 
   on CDR_AUDIT_EVT_HEADER (EVENT_PID);

create index IDX_AUDITEVT_TARGMOD_EVT 
   on CDR_AUDIT_EVT_TARGET_MODULE (EVENT_PID);

create index IDX_AUDITEVT_TARGRES_EVT 
   on CDR_AUDIT_EVT_TARGET_RES (EVENT_PID);

create index IDX_AUDITEVT_TARGUSR_EVT 
   on CDR_AUDIT_EVT_TARGET_USER (EVENT_PID);

create unique nonclustered index IDX_AUDITEVTTYPE_SYSTEM_CODE 
   on CDR_AUDIT_EVT_TYPE (SYSTEM_URL, CODEVAL) where SYSTEM_URL is not null and CODEVAL is not null;

alter table CDR_CACHE_SYNC 
   add constraint IDX_CACHE_SYNC_ID unique (MODULE_PID, CACHE_ID);

alter table CDR_CDA_TEMPLATE 
   add constraint IDX_CDATEMPL_ID unique (TEMPLATE_ID);

create index IDX_HTTPSESSION_EXPIRY 
   on CDR_HTTP_SESSION (SES_EXPIRY);

create index IDX_HTTPSESSION_MODULE 
   on CDR_HTTP_SESSION (MODULE_PID);

alter table CDR_HTTP_SESSION 
   add constraint IDX_HTTPSESSION_ID unique (SES_ID);

create index IDX_GAUGE_MODCOLLINTSTART 
   on CDR_METRIC_GAUGE (MODPROC_PID, GAUGE_TYPE, INTERVL, START_TIME);

create index IDX_GAUGE_MODCOLLSTART 
   on CDR_METRIC_GAUGE (MODPROC_PID, IS_COLLAPSED, START_TIME);

alter table CDR_METRIC_HC 
   add constraint IDX_METRICHC_NODEP_HID unique (MODPROC_PID, HEALTHCHECK_TYPE);

create unique nonclustered index IDX_METRICHC_MOD_TYPE_NAME 
   on CDR_METRIC_HEALTH (MODPROC_PID, HEALTHCHECK_TYPE, CUSTOM_HEALTHCHECK_NAME) where MODPROC_PID is not null and HEALTHCHECK_TYPE is not null and CUSTOM_HEALTHCHECK_NAME is not null;

create index IDX_TIMER_MODCOLLINTSTART 
   on CDR_METRIC_TIMER (MODPROC_PID, TIMER_TYPE, INTERVL, START_TIME);

create index IDX_TIMER_MODCOLLSTART_V2 
   on CDR_METRIC_TIMER (START_TIME, MODPROC_PID, IS_COLLAPSED);

alter table CDR_MODULE 
   add constraint IDX_MODULE_ID unique (NODE_PID, MODULE_ID);

alter table CDR_MODULE_CFG_PROP 
   add constraint IDX_CDR_MODULE_CDR_PROP_MODKEY unique (MODULE_PID, PROTOTYPE_PID);

alter table CDR_MODULE_PROCESS 
   add constraint IDX_MODPROC_NODEPROC_MOD unique (NODEPROC_PID, MODULE_PID);

alter table CDR_MODULE_PROT_CFG 
   add constraint IDX_CDR_MODULE_PROT_CDG_MODKEY unique (PROTOTYPE_PID, CFG_KEY);

create unique nonclustered index IDX_MODULEPROTDEP_PROT_KEY 
   on CDR_MODULE_PROT_DEP (PROTOTYPE_PID, ENTRY_KEY) where PROTOTYPE_PID is not null and ENTRY_KEY is not null;

alter table CDR_MODULE_PROTOTYPE 
   add constraint IDX_MODULEPROTOTYPE_TYPE unique (MODULE_TYPE);

create index IDX_MODSTAT_MOD 
   on CDR_MODULE_STATE (MODULE_PID);

alter table CDR_MODULE_STATE 
   add constraint IDX_MODSTAT_MODTYPE unique (MODULE_PID, STATE_TYPE);

alter table CDR_NODE 
   add constraint IDX_NODE_ID unique (NODE_ID);

alter table CDR_NODE_PROCESS 
   add constraint IDX_NODEPROC_PROCID unique (PROCESS_ID);

alter table CDR_OA2_CLI_DET_AUTH_GRNT_TYP 
   add constraint IDX_OA2TOKGRTTYP_TOK_GRNT_TYP unique (CLIENT_PID, GRANT_TYPE);

alter table CDR_OA2_CLI_DET_AUTOAP_SCOPE 
   add constraint IDX_OA2CLIDETAASCOPE_TOK_SCOP unique (CLIENT_PID, SCOPE);

alter table CDR_OA2_CLI_DET_AUTOGRNT_SCOPE 
   add constraint IDX_OA2CLIDETAGSCOPE_TOK_SCOP unique (CLIENT_PID, SCOPE);

alter table CDR_OA2_CLI_DET_CLISEC 
   add constraint IDX_OA2CLIDETCLISEC_SECRET unique (CLIENT_PID, CLI_SECRET);

alter table CDR_OA2_CLI_DET_REG_REDIR_URI 
   add constraint IDX_OA2CLIDETRRURI_TOK_SCO unique (CLIENT_PID, REDIR_URI);

create unique nonclustered index IDX_OA2SERVER_FED_REG_ID 
   on CDR_OA2_SERVER (MODULE_PID, FEDERATION_REG_ID, ARCHIVED_AT) where MODULE_PID is not null and FEDERATION_REG_ID is not null and ARCHIVED_AT is not null;

create unique nonclustered index IDX_OA2SERVER_MODULE_ISSURL 
   on CDR_OA2_SERVER (MODULE_PID, ISS, ARCHIVED_AT) where MODULE_PID is not null and ISS is not null and ARCHIVED_AT is not null;

create index IDX_OA2ATOKEN_TOKEN_HASH 
   on CDR_OAUTH2_ATOKEN (TOKEN_HASH);

create index IDX_OA2ATOKEN_USER 
   on CDR_OAUTH2_ATOKEN (USER_PID);

create index IDX_OA2ATOKEN_EXPIRATION 
   on CDR_OAUTH2_ATOKEN (EXPIRATION);

alter table CDR_OAUTH2_ATOKEN_ADNLINFO 
   add constraint IDX_OA2ATOKADLNF_ATOKEN_ADNLNF unique (TOKEN_PID, INFO_KEY);

create index IDX_OA2ATOKGRNT_ATOKEN_PERM 
   on CDR_OAUTH2_ATOKEN_GRNTDA (TOKEN_PID, PERM_NAME);

create index IDX_OA2ATOKSCP_SCP 
   on CDR_OAUTH2_ATOKEN_SCOPE (SCOPE, TOKEN_PID);

alter table CDR_OAUTH2_ATOKEN_SCOPE 
   add constraint IDX_OA2ATOKSCP_ATOKEN_SCOPE unique (TOKEN_PID, SCOPE);

create index IDX_OA2AUTHCODE_EXPIRATION 
   on CDR_OAUTH2_AUTH_CODE (EXPIRATION);

alter table CDR_OAUTH2_AUTH_CODE 
   add constraint IDX_OA2AUTHCODE_CODE unique (CODE_VAL);

alter table CDR_OAUTH2_CLIENT_DET_SCOPE 
   add constraint IDX_OA2CLIDETSCOP_TOKEN_SCOPE unique (CLIENT_PID, SCOPE);

create unique nonclustered index IDX_OA2CLIENTDETAILS_CLI_MOD 
   on CDR_OAUTH2_CLIENT_DETAILS (MODULE_PID, CLIENT_ID, ARCHIVED_AT) where MODULE_PID is not null and CLIENT_ID is not null and ARCHIVED_AT is not null;

create index IDX_OA2JWTUNIQID_TIMESTAMP 
   on CDR_OAUTH2_JWT_UNIQ_ID (CONSUMED_TIMESTAMP);

create index IDX_OA2REFTOKEN_USER 
   on CDR_OAUTH2_REFRESH_TOKEN (USER_PID);

create index IDX_OA2REFTOKEN_EXPIRATION 
   on CDR_OAUTH2_REFRESH_TOKEN (EXPIRATION);

alter table CDR_OAUTH2_REFRESH_TOKEN 
   add constraint IDX_OA2REFTOKEN_TOKEN unique (TOKEN_VAL);

alter table CDR_OAUTH2_RTOKEN_ADNLINFO 
   add constraint IDX_OA2RTOKADLNF_RTOKEN_ADNLNF unique (TOKEN_PID, INFO_KEY);

alter table CDR_OAUTH2_RTOKEN_REQPRM 
   add constraint IDX_OA2RTOKREQPRM_RTOKEN_PARM unique (TOKEN_PID, PARM_KEY);

create index IDX_OA2RTOKSCP_SCP 
   on CDR_OAUTH2_RTOKEN_SCOPE (SCOPE, TOKEN_PID);

alter table CDR_OAUTH2_RTOKEN_SCOPE 
   add constraint IDX_OA2RTOKSCP_RTOKEN_SCOPE unique (TOKEN_PID, SCOPE);

create index IDX_NID_CR_VER 
   on CDR_RESTORE (NODE_PID, CREATED, VERSION);

create index FK_CDR_RESTORE_NODE 
   on CDR_RESTORE (NODE_PID);

create index FK_CDR_RESTORE_USER 
   on CDR_RESTORE (USER_PID);

create index IDX_USER_FAMILYNAME 
   on CDR_USER_DETAILS (MODULE_PID, FAMILY_NAME);

create index IDX_USER_GIVENNAME 
   on CDR_USER_DETAILS (MODULE_PID, GIVEN_NAME);

alter table CDR_USER_DETAILS 
   add constraint IDX_USERDET_MODULE_USERNAME unique (MODULE_PID, USERNAME);

create index IDX_USERDEFLNCHCTX_USER 
   on CDR_USER_DETAILS_DEF_LNCH_CTX (USER_PID);

alter table CDR_USER_DETAILS_DEF_LNCH_CTX 
   add constraint IDX_USERDEFLNCHCTX_USER_CTYP unique (USER_PID, CONTEXT_TYPE);

create index IDX_USROA2CLNTAPRVDSCP_CLNTUSR 
   on CDR_USER_DETAILS_OA2CLNAPRVSCP (CLIENT_PID, USER_PID);

create index IDX_USER_OA2CLN_TOS_USRCLNT 
   on CDR_USER_OA2CLN_TOS (USER_PID, CLIENT_PID);

create index IDX_USER_PERM_PERM_USER 
   on CDR_USER_PERM (PERMISSION_TYPE, USER_PID);

create index IDX_USER_PSN_USR 
   on CDR_USER_PSN (USER_PID, VERSION, CREATED_DATE, REVOKED_DATE);

alter table CDR_USER_TFA_KEY 
   add constraint IDX_USERTFAKEY_USER unique (USER_PID);

create index IDX_XACTLOG_INITTS 
   on CDR_XACT_LOG (INITIAL_TIMESTAMP);

create index IDX_XACTID 
   on CDR_XACT_LOG (SRC_XACT_ID);

create unique nonclustered index IDX_GUID 
   on CDR_XACT_LOG (SRC_GUID) where SRC_GUID is not null;

create index IDX_XACTLOGSTEP_LOGID 
   on CDR_XACT_LOG_STEP (LOG_PID);

alter table AG_ADDRESS 
   add constraint FK_AG_ADDRESS_AG_PROFILE 
   foreign key (AG_PROFILE_PID) 
   references AG_PROFILE;

alter table AG_APP_REQUEST 
   add constraint FK_AG_APP_REQUEST_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table AG_APPL 
   add constraint FK_AG_APPL_JWK_SET 
   foreign key (JWK_SET_PID) 
   references AG_DATA;

alter table AG_APPL 
   add constraint FK_AG_APPL_AG_ATTESTATION 
   foreign key (ATTESTATION_PID) 
   references AG_ATTESTATION;

alter table AG_APPL 
   add constraint FK_AG_APPL_ICON 
   foreign key (ICON_PID) 
   references AG_DATA;

alter table AG_APPL 
   add constraint FK_AG_APPL_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table AG_APPL 
   add constraint FK_AG_APPL_OAUTH2_CLIENT 
   foreign key (OAUTH2_CLIENT_PID) 
   references CDR_OAUTH2_CLIENT_DETAILS;

alter table AG_APPL 
   add constraint FK_AG_APPL_PARENT_PID 
   foreign key (PARENT_PID) 
   references AG_APPL;

alter table AG_APPL 
   add constraint FK_AG_APPL_AG_PROFILE 
   foreign key (PROFILE_PID) 
   references AG_PROFILE;

alter table AG_APPL 
   add constraint FK_AG_APPL_USER 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table AG_ATTESTATION 
   add constraint FK_AG_ATTESTATION_HTML 
   foreign key (HTML_PID) 
   references AG_DATA;

alter table AG_ATTESTATION 
   add constraint FK_AG_ATTESTATION_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table AG_ATTESTATION 
   add constraint FK_AG_ATTESTATION_PLAIN_HTML 
   foreign key (PLAIN_HTML_PID) 
   references AG_DATA;

alter table AG_CLASS 
   add constraint FK_AG_CLASS_AG_APPL 
   foreign key (AG_APPL_PID) 
   references AG_APPL;

alter table AG_COUNTRY 
   add constraint FK_AG_COUNTRY_AG_APPL 
   foreign key (AG_APPL_PID) 
   references AG_APPL;

alter table AG_DOCUMENT 
   add constraint FK_AG_DOCUMENT_DATA_BLOB 
   foreign key (DOCUMENT_PID) 
   references AG_DATA;

alter table AG_DOCUMENT 
   add constraint FK_AG_DOCUMENT_AG_APPL 
   foreign key (AG_APPL_PID) 
   references AG_APPL;

alter table AG_DRAFT 
   add constraint FK_AG_DRAFT_DATA_BLOB 
   foreign key (DRAFT_PID) 
   references AG_DATA;

alter table AG_DRAFT 
   add constraint FK_AG_DRAFT_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table AG_DRAFT 
   add constraint FK_AG_DRAFT_SOURCE_APP_PID 
   foreign key (SOURCE_APP_PID) 
   references AG_APPL;

alter table AG_DRAFT 
   add constraint FK_AG_DRAFT_USER 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table AG_MEMBER_PHONE 
   add constraint FK_AG_MEMBER_PHONE_APP_REQUEST 
   foreign key (AG_APP_REQUEST_PID) 
   references AG_APP_REQUEST;

alter table AG_METADATA 
   add constraint FK_AG_METADATA_AG_APPL 
   foreign key (AG_APPL_PID) 
   references AG_APPL;

alter table AG_NOTE 
   add constraint FK_AG_NOTE_AG_APPL 
   foreign key (AG_APPL_PID) 
   references AG_APPL;

alter table AG_OAUTH_REDIRECT 
   add constraint FK_AG_OAUTH_REDIRECT_AG_APPL 
   foreign key (AG_APPL_PID) 
   references AG_APPL;

alter table AG_PERMISSION 
   add constraint FK_AG_PERMISSION_AG_APPL 
   foreign key (AG_APPL_PID) 
   references AG_APPL;

alter table AG_PHONE 
   add constraint FK_AG_PHONE_AG_PROFILE 
   foreign key (AG_PROFILE_PID) 
   references AG_PROFILE;

alter table AG_PREREQUISITE 
   add constraint FK_AG_PREREQUISITE_AG_APPL 
   foreign key (AG_APPL_PID) 
   references AG_APPL;

alter table AG_PROFILE 
   add constraint FK_AG_PROFILE_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table AG_PROFILE 
   add constraint FK_AG_PROFILE_USER 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table AG_SANDBOX_CLIENT 
   add constraint FK_AG_SANDBOX_CLIENT_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table AG_SANDBOX_CLIENT 
   add constraint FK_AG_CLIENT_OAUTH2_CLIENT 
   foreign key (OAUTH2_CLIENT_PID) 
   references CDR_OAUTH2_CLIENT_DETAILS;

alter table AG_SANDBOX_CLIENT 
   add constraint FK_AG_SANDBOX_CLIENT_USER 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table AG_SCOPE 
   add constraint FK_AG_SCOPE_AG_APPL 
   foreign key (AG_APPL_PID) 
   references AG_APPL;

alter table AG_SCREENSHOT 
   add constraint FK_AG_SCREENSHOT_DATA_BLOB 
   foreign key (SCREENSHOT_PID) 
   references AG_DATA;

alter table AG_SCREENSHOT 
   add constraint FK_AG_SCREENSHOT_AG_APPL 
   foreign key (AG_APPL_PID) 
   references AG_APPL;

alter table CDR_AUDIT_EVT 
   add constraint FK_AUDITEVT_CLIENT 
   foreign key (CLIENT_PID) 
   references CDR_OAUTH2_CLIENT_DETAILS;

alter table CDR_AUDIT_EVT 
   add constraint FK_AUDITEVT_ENDPOINTMODULE 
   foreign key (ENDPOINT_MODULE_PID) 
   references CDR_MODULE;

alter table CDR_AUDIT_EVT 
   add constraint FK_AUDITEVT_TYPE 
   foreign key (TYPE_PID) 
   references CDR_AUDIT_EVT_TYPE;

alter table CDR_AUDIT_EVT 
   add constraint FK_AUDITEVT_USER 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table CDR_AUDIT_EVT_HEADER 
   add constraint FK_AUDITEVT_HEADER_EVT 
   foreign key (EVENT_PID) 
   references CDR_AUDIT_EVT;

alter table CDR_AUDIT_EVT_TARGET_MODULE 
   add constraint FK_AUDITEVT_TARGETMODULE_EVT 
   foreign key (EVENT_PID) 
   references CDR_AUDIT_EVT;

alter table CDR_AUDIT_EVT_TARGET_MODULE 
   add constraint FK_AUDITEVT_TARGETMOD_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table CDR_AUDIT_EVT_TARGET_RES 
   add constraint FK_AUDITEVT_TARGETRES_EVT 
   foreign key (EVENT_PID) 
   references CDR_AUDIT_EVT;

alter table CDR_AUDIT_EVT_TARGET_RES 
   add constraint FK_AUDITEVT_TARGETRES_PERSMOD 
   foreign key (PERS_MODULE_PID) 
   references CDR_MODULE;

alter table CDR_AUDIT_EVT_TARGET_USER 
   add constraint FK_AUDITEVT_TARGETUSER_EVT 
   foreign key (EVENT_PID) 
   references CDR_AUDIT_EVT;

alter table CDR_AUDIT_EVT_TARGET_USER 
   add constraint FK_AUDITEVT_TARGETUSER_USER 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table CDR_CACHE_SYNC 
   add constraint FK_CACHE_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table CDR_CDA_TEMPLATE 
   add constraint FK_CDA_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table CDR_CDA_TEMPLATE_PARAM 
   add constraint FK_CDATEMPLATE_PID 
   foreign key (TEMPLATE_PID) 
   references CDR_CDA_TEMPLATE;

alter table CDR_HTTP_SESSION 
   add constraint FK_HTTPSESSION_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table CDR_IDENTIFICATION_CODES 
   add constraint FK_IDCODE_USER 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table CDR_METRIC_GAUGE 
   add constraint FK_METGAUGE_MODP 
   foreign key (MODPROC_PID) 
   references CDR_MODULE_PROCESS;

alter table CDR_METRIC_HC 
   add constraint FK_HC_MODP 
   foreign key (MODPROC_PID) 
   references CDR_MODULE_PROCESS;

alter table CDR_METRIC_HEALTH 
   add constraint FK_HEALTH_MODP 
   foreign key (MODPROC_PID) 
   references CDR_MODULE_PROCESS;

alter table CDR_METRIC_TIMER 
   add constraint FK_METTIMER_MODP 
   foreign key (MODPROC_PID) 
   references CDR_MODULE_PROCESS;

alter table CDR_MODULE 
   add constraint FK_MODULE_NODE 
   foreign key (NODE_PID) 
   references CDR_NODE;

alter table CDR_MODULE 
   add constraint FK_MODULE_PROTOTYPE 
   foreign key (PROTOTYPE_PID) 
   references CDR_MODULE_PROTOTYPE;

alter table CDR_MODULE_CFG_PROP 
   add constraint FK_MODULECFGPROP_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table CDR_MODULE_CFG_PROP 
   add constraint FK_MODULECFGPROP_PROTOTYPE 
   foreign key (PROTOTYPE_PID) 
   references CDR_MODULE_PROT_CFG;

alter table CDR_MODULE_DEP 
   add constraint FK_MODULEDEP_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table CDR_MODULE_DEP 
   add constraint FK_MODULEDEP_PROTOTYPE 
   foreign key (PROTOTYPE_PID) 
   references CDR_MODULE_PROT_DEP;

alter table CDR_MODULE_DEP 
   add constraint FK_MODULEDEP_TARGET 
   foreign key (TARGET_PID) 
   references CDR_MODULE;

alter table CDR_MODULE_PROCESS 
   add constraint FK_MODPROC_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table CDR_MODULE_PROCESS 
   add constraint FK_MODPROC_NODEPROC 
   foreign key (NODEPROC_PID) 
   references CDR_NODE_PROCESS;

alter table CDR_MODULE_PROT_CFG 
   add constraint FK_CDR_MODULEPROTCFG_PROT 
   foreign key (PROTOTYPE_PID) 
   references CDR_MODULE_PROTOTYPE;

alter table CDR_MODULE_PROT_DEP 
   add constraint FK_MODULE_PROT_DEP_PROT 
   foreign key (PROTOTYPE_PID) 
   references CDR_MODULE_PROTOTYPE;

alter table CDR_MODULE_PROT_SUPPLIES 
   add constraint FK_MODULE_PROT_SUPPLIES_PROT 
   foreign key (PROTOTYPE_PID) 
   references CDR_MODULE_PROTOTYPE;

alter table CDR_MODULE_STATE 
   add constraint FK_MODSTAT_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table CDR_NODE_MODULE_DIAGNOSTICS 
   add constraint FK_MULTI_NODE_MODULE_PID 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table CDR_NODE_MODULE_DIAGNOSTICS 
   add constraint FK_MULTI_NODE_PID 
   foreign key (NODE_PID) 
   references CDR_NODE;

alter table CDR_NODE_PROCESS 
   add constraint FK_NODEPROCESS_NODE 
   foreign key (NODE_PID) 
   references CDR_NODE;

alter table CDR_OA2_CLI_DET_AUTH_GRNT_TYP 
   add constraint FK_OA2CLIDETAUTHGRNTTY_CLI 
   foreign key (CLIENT_PID) 
   references CDR_OAUTH2_CLIENT_DETAILS;

alter table CDR_OA2_CLI_DET_AUTOAP_SCOPE 
   add constraint FK_OA2CLIDETAUTOAPPSCOP_CLI 
   foreign key (CLIENT_PID) 
   references CDR_OAUTH2_CLIENT_DETAILS;

alter table CDR_OA2_CLI_DET_AUTOGRNT_SCOPE 
   add constraint FK_OA2CLIDETAUTOGRNTPSCOP_CLI 
   foreign key (CLIENT_PID) 
   references CDR_OAUTH2_CLIENT_DETAILS;

alter table CDR_OA2_CLI_DET_CLISEC 
   add constraint FK_OA2CLIDETCLISEC_CLI 
   foreign key (CLIENT_PID) 
   references CDR_OAUTH2_CLIENT_DETAILS;

alter table CDR_OA2_CLI_DET_REG_REDIR_URI 
   add constraint FK_OA2CLIDETREGREDURI_CLI 
   foreign key (CLIENT_PID) 
   references CDR_OAUTH2_CLIENT_DETAILS;

alter table CDR_OA2_SERVER 
   add constraint FK_OA2SERVER_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table CDR_OAUTH2_ATOKEN 
   add constraint FK_OA2ATOKEN_CLIENT 
   foreign key (CLIENT_PID) 
   references CDR_OAUTH2_CLIENT_DETAILS;

alter table CDR_OAUTH2_ATOKEN 
   add constraint FK_OA2ATOKEN_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table CDR_OAUTH2_ATOKEN 
   add constraint FK_OA2ATOKEN_REF_TOK 
   foreign key (REFRESH_TOKEN_PID) 
   references CDR_OAUTH2_REFRESH_TOKEN;

alter table CDR_OAUTH2_ATOKEN 
   add constraint FK_OA2ATOKEN_USER 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table CDR_OAUTH2_ATOKEN_ADNLINFO 
   add constraint FK_OA2ATOKADNLINFO_TOKEN 
   foreign key (TOKEN_PID) 
   references CDR_OAUTH2_ATOKEN;

alter table CDR_OAUTH2_ATOKEN_GRNTDA 
   add constraint FK_OA2ATOKGRNTDA_TOKEN 
   foreign key (TOKEN_PID) 
   references CDR_OAUTH2_ATOKEN;

alter table CDR_OAUTH2_ATOKEN_SCOPE 
   add constraint FK_OA2ATOKSCP_TOKEN 
   foreign key (TOKEN_PID) 
   references CDR_OAUTH2_ATOKEN;

alter table CDR_OAUTH2_ATOKEN_UDATA 
   add constraint FK_OA2ATOKUD_TOKEN 
   foreign key (ATOKEN_PID) 
   references CDR_OAUTH2_ATOKEN;

alter table CDR_OAUTH2_ATOKEN_UDATA_BIN 
   add constraint FK_OA2ATOKUDBIN_TOKEN 
   foreign key (ATOKEN_PID) 
   references CDR_OAUTH2_ATOKEN;

alter table CDR_OAUTH2_CLIENT_DET_SCOPE 
   add constraint FK_OA2CLIDETSCOP_CLIENT 
   foreign key (CLIENT_PID) 
   references CDR_OAUTH2_CLIENT_DETAILS;

alter table CDR_OAUTH2_CLIENT_DETAILS 
   add constraint FK_OA2CLIENTDETAILS_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table CDR_OAUTH2_CLIENT_PERM 
   add constraint FK_OA2CLIENTPERM_CLIENT 
   foreign key (CLIENT_PID) 
   references CDR_OAUTH2_CLIENT_DETAILS;

alter table CDR_OAUTH2_REFRESH_TOKEN 
   add constraint FK_OA2REFTOKEN_CLIENT 
   foreign key (CLIENT_PID) 
   references CDR_OAUTH2_CLIENT_DETAILS;

alter table CDR_OAUTH2_REFRESH_TOKEN 
   add constraint FK_OA2REFTOKEN_USER 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table CDR_OAUTH2_RTOKEN_ADNLINFO 
   add constraint FK_OA2RTOKADNLINFO_TOKEN 
   foreign key (TOKEN_PID) 
   references CDR_OAUTH2_REFRESH_TOKEN;

alter table CDR_OAUTH2_RTOKEN_GRNTDA 
   add constraint FK_OA2RTOKGRNTDA_TOKEN 
   foreign key (TOKEN_PID) 
   references CDR_OAUTH2_REFRESH_TOKEN;

alter table CDR_OAUTH2_RTOKEN_LNCHRESID 
   add constraint FK_OA2RTOKLNCHRESID_TOKEN 
   foreign key (TOKEN_PID) 
   references CDR_OAUTH2_REFRESH_TOKEN;

alter table CDR_OAUTH2_RTOKEN_REQPRM 
   add constraint FK_OA2RTOKREQPRM_TOKEN 
   foreign key (TOKEN_PID) 
   references CDR_OAUTH2_REFRESH_TOKEN;

alter table CDR_OAUTH2_RTOKEN_SCOPE 
   add constraint FK_OA2RTOKSCP_TOKEN 
   foreign key (TOKEN_PID) 
   references CDR_OAUTH2_REFRESH_TOKEN;

alter table CDR_OAUTH2_RTOKEN_UDATA 
   add constraint FK_OA2RTOKUD_TOKEN 
   foreign key (TOKEN_PID) 
   references CDR_OAUTH2_REFRESH_TOKEN;

alter table CDR_OAUTH2_RTOKEN_UDATA_BIN 
   add constraint FK_OA2RTOKUDBIN_TOKEN 
   foreign key (TOKEN_PID) 
   references CDR_OAUTH2_REFRESH_TOKEN;

alter table CDR_RESTORE 
   add constraint FK_CDR_RESTORE_NODE 
   foreign key (NODE_PID) 
   references CDR_NODE;

alter table CDR_RESTORE 
   add constraint FK_CDR_RESTORE_USER 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table CDR_USER_DETAILS 
   add constraint FK_USERDETAILS_MODULE 
   foreign key (MODULE_PID) 
   references CDR_MODULE;

alter table CDR_USER_DETAILS_DEF_LNCH_CTX 
   add constraint FK_USERDEFLNCHCTX_USER 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table CDR_USER_DETAILS_OA2CLNAPRVSCP 
   add constraint FK_USROA2CLNTAPRVDSCP_CLIENT 
   foreign key (CLIENT_PID) 
   references CDR_OAUTH2_CLIENT_DETAILS;

alter table CDR_USER_DETAILS_OA2CLNAPRVSCP 
   add constraint FK_USROA2CLNTAPRVDSCP_USER 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table CDR_USER_OA2CLN_TOS 
   add constraint FK_USER_OA2CLN_TOS_CLIENT 
   foreign key (CLIENT_PID) 
   references CDR_OAUTH2_CLIENT_DETAILS;

alter table CDR_USER_OA2CLN_TOS 
   add constraint FK_USER_OA2CLN_TOS_USER 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table CDR_USER_PERM 
   add constraint FK_USERPERM_USER 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table CDR_USER_PSN 
   add constraint FK_USER_PSN_USER 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table CDR_USER_TFA_KEY 
   add constraint FK_USERTFAKEY_USER 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table CDR_XACT_LOG 
   add constraint FK_TRANSIT_CLIENT 
   foreign key (CLIENT_PID) 
   references CDR_OAUTH2_CLIENT_DETAILS;

alter table CDR_XACT_LOG 
   add constraint FK_XACTLOGSTEP_MODULE 
   foreign key (CDR_ENDPOINT_MODULE_PID) 
   references CDR_MODULE;

alter table CDR_XACT_LOG 
   add constraint FK_TRANSIT_EVENT 
   foreign key (USER_PID) 
   references CDR_USER_DETAILS;

alter table CDR_XACT_LOG_STEP 
   add constraint FK_XACTLOGSTEP_XACTLOG 
   foreign key (LOG_PID) 
   references CDR_XACT_LOG;

41.7.7Setting up a FHIR Storage (Relational) Database

 

To initialize a new SQL Server database for FHIR Storage (Relational), initialize a database with the following SQL:

create sequence SEQ_BLKEXCOL_PID start with 1 increment by 50;

create sequence SEQ_BLKEXCOLFILE_PID start with 1 increment by 50;

create sequence SEQ_BLKEXJOB_PID start with 1 increment by 50;

create sequence SEQ_BLKIMJOB_PID start with 1 increment by 50;

create sequence SEQ_BLKIMJOBFILE_PID start with 1 increment by 50;

create sequence SEQ_CDH_LB_REF start with 1 increment by 50;

create sequence SEQ_CDH_LB_SUB_GROUP start with 1 increment by 50;

create sequence SEQ_CDH_LB_WL start with 1 increment by 50;

create sequence SEQ_CDH_LB_WL_SUBS start with 1 increment by 50;

create sequence SEQ_CNCPT_MAP_GRP_ELM_TGT_PID start with 1 increment by 50;

create sequence SEQ_CODESYSTEM_PID start with 1 increment by 50;

create sequence SEQ_CODESYSTEMVER_PID start with 1 increment by 50;

create sequence SEQ_CONCEPT_DESIG_PID start with 1 increment by 50;

create sequence SEQ_CONCEPT_MAP_GROUP_PID start with 1 increment by 50;

create sequence SEQ_CONCEPT_MAP_GRP_ELM_PID start with 1 increment by 50;

create sequence SEQ_CONCEPT_MAP_PID start with 1 increment by 50;

create sequence SEQ_CONCEPT_PC_PID start with 1 increment by 50;

create sequence SEQ_CONCEPT_PID start with 1 increment by 50;

create sequence SEQ_CONCEPT_PROP_PID start with 1 increment by 50;

create sequence SEQ_EMPI_LINK_ID start with 1 increment by 50;

create sequence SEQ_FORCEDID_ID start with 1 increment by 50;

create sequence SEQ_HFJ_REVINFO start with 1 increment by 50;

create sequence SEQ_HISTORYTAG_ID start with 1 increment by 50;

create sequence SEQ_IDXCMBTOKNU_ID start with 1 increment by 50;

create sequence SEQ_IDXCMPSTRUNIQ_ID start with 1 increment by 50;

create sequence SEQ_NPM_PACK start with 1 increment by 50;

create sequence SEQ_NPM_PACKVER start with 1 increment by 50;

create sequence SEQ_NPM_PACKVERRES start with 1 increment by 50;

create sequence SEQ_RES_REINDEX_JOB start with 1 increment by 50;

create sequence SEQ_RESLINK_ID start with 1 increment by 50;

create sequence SEQ_RESOURCE_HISTORY_ID start with 1 increment by 50;

create sequence SEQ_RESOURCE_ID start with 1 increment by 50;

create sequence SEQ_RESPARMPRESENT_ID start with 1 increment by 50;

create sequence SEQ_RESTAG_ID start with 1 increment by 50;

create sequence SEQ_SEARCH start with 1 increment by 50;

create sequence SEQ_SEARCH_INC start with 1 increment by 50;

create sequence SEQ_SEARCH_RES start with 1 increment by 50;

create sequence SEQ_SPIDX_COORDS start with 1 increment by 50;

create sequence SEQ_SPIDX_DATE start with 1 increment by 50;

create sequence SEQ_SPIDX_NUMBER start with 1 increment by 50;

create sequence SEQ_SPIDX_QUANTITY start with 1 increment by 50;

create sequence SEQ_SPIDX_QUANTITY_NRML start with 1 increment by 50;

create sequence SEQ_SPIDX_STRING start with 1 increment by 50;

create sequence SEQ_SPIDX_TOKEN start with 1 increment by 50;

create sequence SEQ_SPIDX_URI start with 1 increment by 50;

create sequence SEQ_SUBSCRIPTION_ID start with 1 increment by 50;

create sequence SEQ_TAGDEF_ID start with 1 increment by 50;

create sequence SEQ_VALUESET_C_DSGNTN_PID start with 1 increment by 50;

create sequence SEQ_VALUESET_CONCEPT_PID start with 1 increment by 50;

create sequence SEQ_VALUESET_PID start with 1 increment by 50;

create table BT2_JOB_INSTANCE (
    ID varchar(100) not null,
    JOB_CANCELLED bit not null,
    CMB_RECS_PROCESSED int,
    CMB_RECS_PER_SEC float(53),
    CREATE_TIME datetime2(6) not null,
    CUR_GATED_STEP_ID varchar(100),
    DEFINITION_ID varchar(100) not null,
    DEFINITION_VER int not null,
    END_TIME datetime2(6),
    ERROR_COUNT int not null,
    ERROR_MSG varchar(500),
    EST_REMAINING varchar(100),
    FAST_TRACKING bit,
    PARAMS_JSON varchar(2000),
    PARAMS_JSON_LOB varchar(max),
    PARAMS_JSON_VC varchar(max),
    PROGRESS_PCT float(53) not null,
    REPORT varchar(max),
    REPORT_VC varchar(max),
    START_TIME datetime2(6),
    STAT varchar(20) not null,
    TOT_ELAPSED_MILLIS int,
    CLIENT_ID varchar(200),
    USER_NAME varchar(200),
    UPDATE_TIME datetime2(6),
    WARNING_MSG varchar(4000),
    WORK_CHUNKS_PURGED bit not null,
    primary key (ID)
);

create table BT2_WORK_CHUNK (
    ID varchar(100) not null,
    CREATE_TIME datetime2(6) not null,
    END_TIME datetime2(6),
    ERROR_COUNT int not null,
    ERROR_MSG varchar(500),
    INSTANCE_ID varchar(100) not null,
    DEFINITION_ID varchar(100) not null,
    DEFINITION_VER int not null,
    NEXT_POLL_TIME datetime2(6),
    POLL_ATTEMPTS int,
    RECORDS_PROCESSED int,
    SEQ int not null,
    CHUNK_DATA varchar(max),
    CHUNK_DATA_VC varchar(max),
    START_TIME datetime2(6),
    STAT varchar(20) not null,
    TGT_STEP_ID varchar(100) not null,
    UPDATE_TIME datetime2(6),
    WARNING_MSG varchar(4000),
    primary key (ID)
);

create table CDH_LB_REF (
    PID bigint not null,
    EXPIRES datetime2(6),
    LB_RES_ID bigint not null,
    ORDER_DATE datetime2(6),
    ROOT_RES_ID bigint not null,
    RULE_SYSTEM varchar(200) not null,
    RULE_VALUE varchar(200) not null,
    SUBS_RES_ID bigint not null,
    TRACK_PARAM varchar(200),
    TRACK_SUBPARAM varchar(200),
    primary key (PID)
);

create table CDH_LB_SUB_GROUP (
    PID bigint not null,
    SUBS_GROUP varchar(200) not null,
    SUBS_ID varchar(200) not null,
    SUBS_RES_ID bigint not null,
    primary key (PID)
);

create table CDH_LB_WL (
    PID bigint not null,
    SUBSCRIBER_TYPE varchar(200) not null,
    WATCHLIST_SYSTEM varchar(200) not null,
    WATCHLIST_VALUE varchar(200) not null,
    primary key (PID)
);

create table CDH_LB_WL_SUBS (
    PID bigint not null,
    SEED_STATUS int not null,
    SUBS_ID varchar(200) not null,
    SUBS_RES_ID bigint not null,
    WATCHLIST_ID bigint not null,
    primary key (PID)
);

create table HFJ_BINARY_STORAGE_BLOB (
    BLOB_ID varchar(200) not null,
    BLOB_DATA varbinary(max),
    CONTENT_TYPE varchar(100) not null,
    BLOB_HASH varchar(128),
    PUBLISHED_DATE datetime2(6) not null,
    RESOURCE_ID varchar(100) not null,
    BLOB_SIZE bigint not null,
    STORAGE_CONTENT_BIN varbinary(max),
    primary key (BLOB_ID)
);

create table HFJ_BLK_EXPORT_COLFILE (
    PID bigint not null,
    RES_ID varchar(100) not null,
    COLLECTION_PID bigint not null,
    primary key (PID)
);

create table HFJ_BLK_EXPORT_COLLECTION (
    PID bigint not null,
    TYPE_FILTER varchar(1000),
    RES_TYPE varchar(40) not null,
    OPTLOCK int not null,
    JOB_PID bigint not null,
    primary key (PID)
);

create table HFJ_BLK_EXPORT_JOB (
    PID bigint not null,
    CREATED_TIME datetime2(6) not null,
    EXP_TIME datetime2(6),
    JOB_ID varchar(36) not null,
    REQUEST varchar(1024) not null,
    EXP_SINCE datetime2(6),
    JOB_STATUS varchar(10) not null,
    STATUS_MESSAGE varchar(500),
    STATUS_TIME datetime2(6) not null,
    OPTLOCK int not null,
    primary key (PID)
);

create table HFJ_BLK_IMPORT_JOB (
    PID bigint not null,
    BATCH_SIZE int not null,
    FILE_COUNT int not null,
    JOB_DESC varchar(500),
    JOB_ID varchar(36) not null,
    ROW_PROCESSING_MODE varchar(20) not null,
    JOB_STATUS varchar(10) not null,
    STATUS_MESSAGE varchar(500),
    STATUS_TIME datetime2(6) not null,
    OPTLOCK int not null,
    primary key (PID)
);

create table HFJ_BLK_IMPORT_JOBFILE (
    PID bigint not null,
    JOB_CONTENTS varbinary(max),
    JOB_CONTENTS_VC varchar(max),
    FILE_DESCRIPTION varchar(500),
    FILE_SEQ int not null,
    TENANT_NAME varchar(200),
    JOB_PID bigint not null,
    primary key (PID)
);

create table HFJ_FORCED_ID (
    PID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    FORCED_ID varchar(100) not null,
    RESOURCE_PID bigint not null,
    RESOURCE_TYPE varchar(100) default '',
    primary key (PID)
);

create table HFJ_HISTORY_TAG (
    PID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    TAG_ID bigint,
    RES_VER_PID bigint not null,
    RES_ID bigint not null,
    RES_TYPE varchar(40) not null,
    primary key (PID)
);

create table HFJ_IDX_CMB_TOK_NU (
    PID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    HASH_COMPLETE bigint not null,
    IDX_STRING varchar(500) not null,
    RES_ID bigint,
    primary key (PID)
);

create table HFJ_IDX_CMP_STRING_UNIQ (
    PID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    HASH_COMPLETE bigint,
    HASH_COMPLETE_2 bigint,
    IDX_STRING varchar(500) not null,
    RES_ID bigint,
    primary key (PID)
);

create table HFJ_PARTITION (
    PART_ID int not null,
    PART_DESC varchar(200),
    PART_NAME varchar(200) not null,
    primary key (PART_ID)
);

create table HFJ_RES_LINK (
    PID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    SRC_PATH varchar(500) not null,
    SRC_RESOURCE_ID bigint not null,
    SOURCE_RESOURCE_TYPE varchar(40) not null,
    TARGET_RES_PARTITION_DATE date,
    TARGET_RES_PARTITION_ID int,
    TARGET_RESOURCE_ID bigint,
    TARGET_RESOURCE_TYPE varchar(40) not null,
    TARGET_RESOURCE_URL varchar(200),
    TARGET_RESOURCE_VERSION bigint,
    SP_UPDATED datetime2(6),
    primary key (PID)
);

create table HFJ_RES_PARAM_PRESENT (
    PID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    HASH_PRESENCE bigint,
    SP_PRESENT bit not null,
    RES_ID bigint not null,
    primary key (PID)
);

create table HFJ_RES_REINDEX_JOB (
    PID bigint not null,
    JOB_DELETED bit not null,
    REINDEX_COUNT int,
    RES_TYPE varchar(100),
    SUSPENDED_UNTIL datetime2(6),
    UPDATE_THRESHOLD_HIGH datetime2(6) not null,
    UPDATE_THRESHOLD_LOW datetime2(6),
    primary key (PID)
);

create table HFJ_RES_SEARCH_URL (
    RES_SEARCH_URL varchar(768) not null,
    PARTITION_ID int not null,
    CREATED_TIME datetime2(6) not null,
    PARTITION_DATE date,
    RES_ID bigint not null,
    primary key (RES_SEARCH_URL, PARTITION_ID)
);

create table HFJ_RES_TAG (
    PID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    TAG_ID bigint,
    RES_ID bigint,
    RES_TYPE varchar(40) not null,
    primary key (PID)
);

create table HFJ_RES_VER (
    PID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    RES_DELETED_AT datetime2(6),
    RES_VERSION varchar(7),
    HAS_TAGS bit not null,
    RES_PUBLISHED datetime2(6) not null,
    RES_UPDATED datetime2(6) not null,
    RES_ENCODING varchar(5) not null,
    REQUEST_ID varchar(16),
    RES_TEXT varbinary(max),
    RES_ID bigint not null,
    RES_TEXT_VC varchar(max),
    RES_TYPE varchar(40) not null,
    RES_VER bigint not null,
    SOURCE_URI varchar(100),
    primary key (PID)
);

create table HFJ_RES_VER_PROV (
    RES_VER_PID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    REQUEST_ID varchar(16),
    SOURCE_URI varchar(100),
    RES_PID bigint not null,
    primary key (RES_VER_PID)
);

create table HFJ_RESOURCE (
    RES_ID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    RES_DELETED_AT datetime2(6),
    RES_VERSION varchar(7),
    HAS_TAGS bit not null,
    RES_PUBLISHED datetime2(6) not null,
    RES_UPDATED datetime2(6) not null,
    FHIR_ID varchar(64),
    SP_HAS_LINKS bit not null,
    HASH_SHA256 varchar(64),
    SP_INDEX_STATUS bigint,
    RES_LANGUAGE varchar(20),
    SP_CMPSTR_UNIQ_PRESENT bit,
    SP_CMPTOKS_PRESENT bit,
    SP_COORDS_PRESENT bit not null,
    SP_DATE_PRESENT bit not null,
    SP_NUMBER_PRESENT bit not null,
    SP_QUANTITY_NRML_PRESENT bit not null,
    SP_QUANTITY_PRESENT bit not null,
    SP_STRING_PRESENT bit not null,
    SP_TOKEN_PRESENT bit not null,
    SP_URI_PRESENT bit not null,
    RES_TYPE varchar(40) not null,
    SEARCH_URL_PRESENT bit,
    RES_VER bigint not null,
    primary key (RES_ID)
);

create table HFJ_RESOURCE_MODIFIED (
    RES_ID varchar(256) not null,
    RES_VER varchar(8) not null,
    CREATED_TIME datetime2(6) not null,
    RESOURCE_TYPE varchar(40) not null,
    SUMMARY_MESSAGE varchar(4000) not null,
    primary key (RES_ID, RES_VER)
);

create table HFJ_REVINFO (
    REV bigint not null,
    REVTSTMP datetime2(6),
    primary key (REV)
);

create table HFJ_SEARCH (
    PID bigint not null,
    CREATED datetime2(6) not null,
    SEARCH_DELETED bit,
    EXPIRY_OR_NULL datetime2(6),
    FAILURE_CODE int,
    FAILURE_MESSAGE varchar(500),
    LAST_UPDATED_HIGH datetime2(6),
    LAST_UPDATED_LOW datetime2(6),
    NUM_BLOCKED int,
    NUM_FOUND int not null,
    PREFERRED_PAGE_SIZE int,
    RESOURCE_ID bigint,
    RESOURCE_TYPE varchar(200),
    SEARCH_PARAM_MAP varbinary(max),
    SEARCH_PARAM_MAP_BIN varbinary(max),
    SEARCH_QUERY_STRING varchar(max),
    SEARCH_QUERY_STRING_HASH int,
    SEARCH_QUERY_STRING_VC varchar(max),
    SEARCH_TYPE int not null,
    SEARCH_STATUS varchar(10) not null,
    TOTAL_COUNT int,
    SEARCH_UUID varchar(48) not null,
    OPTLOCK_VERSION int,
    primary key (PID)
);

create table HFJ_SEARCH_INCLUDE (
    PID bigint not null,
    SEARCH_INCLUDE varchar(200) not null,
    INC_RECURSE bit not null,
    REVINCLUDE bit not null,
    SEARCH_PID bigint not null,
    primary key (PID)
);

create table HFJ_SEARCH_RESULT (
    PID bigint not null,
    SEARCH_ORDER int not null,
    RESOURCE_PID bigint not null,
    SEARCH_PID bigint not null,
    primary key (PID)
);

create table HFJ_SPIDX_COORDS (
    SP_ID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    HASH_IDENTITY bigint,
    SP_MISSING bit not null,
    SP_NAME varchar(100),
    RES_ID bigint not null,
    RES_TYPE varchar(100),
    SP_UPDATED datetime2(6),
    SP_LATITUDE float(53),
    SP_LONGITUDE float(53),
    primary key (SP_ID)
);

create table HFJ_SPIDX_DATE (
    SP_ID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    HASH_IDENTITY bigint,
    SP_MISSING bit not null,
    SP_NAME varchar(100),
    RES_ID bigint not null,
    RES_TYPE varchar(100),
    SP_UPDATED datetime2(6),
    SP_VALUE_HIGH datetime2(6),
    SP_VALUE_HIGH_DATE_ORDINAL int,
    SP_VALUE_LOW datetime2(6),
    SP_VALUE_LOW_DATE_ORDINAL int,
    primary key (SP_ID)
);

create table HFJ_SPIDX_NUMBER (
    SP_ID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    HASH_IDENTITY bigint,
    SP_MISSING bit not null,
    SP_NAME varchar(100),
    RES_ID bigint not null,
    RES_TYPE varchar(100),
    SP_UPDATED datetime2(6),
    SP_VALUE decimal(19,2),
    primary key (SP_ID)
);

create table HFJ_SPIDX_QUANTITY (
    SP_ID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    HASH_IDENTITY bigint,
    SP_MISSING bit not null,
    SP_NAME varchar(100),
    RES_ID bigint not null,
    RES_TYPE varchar(100),
    SP_UPDATED datetime2(6),
    HASH_IDENTITY_AND_UNITS bigint,
    HASH_IDENTITY_SYS_UNITS bigint,
    SP_SYSTEM varchar(200),
    SP_UNITS varchar(200),
    SP_VALUE float(53),
    primary key (SP_ID)
);

create table HFJ_SPIDX_QUANTITY_NRML (
    SP_ID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    HASH_IDENTITY bigint,
    SP_MISSING bit not null,
    SP_NAME varchar(100),
    RES_ID bigint not null,
    RES_TYPE varchar(100),
    SP_UPDATED datetime2(6),
    HASH_IDENTITY_AND_UNITS bigint,
    HASH_IDENTITY_SYS_UNITS bigint,
    SP_SYSTEM varchar(200),
    SP_UNITS varchar(200),
    SP_VALUE float(53),
    primary key (SP_ID)
);

create table HFJ_SPIDX_STRING (
    SP_ID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    HASH_IDENTITY bigint,
    SP_MISSING bit not null,
    SP_NAME varchar(100),
    RES_ID bigint not null,
    RES_TYPE varchar(100),
    SP_UPDATED datetime2(6),
    HASH_EXACT bigint,
    HASH_NORM_PREFIX bigint,
    SP_VALUE_EXACT varchar(768),
    SP_VALUE_NORMALIZED varchar(768),
    primary key (SP_ID)
);

create table HFJ_SPIDX_TOKEN (
    SP_ID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    HASH_IDENTITY bigint,
    SP_MISSING bit not null,
    SP_NAME varchar(100),
    RES_ID bigint not null,
    RES_TYPE varchar(100),
    SP_UPDATED datetime2(6),
    HASH_SYS bigint,
    HASH_SYS_AND_VALUE bigint,
    HASH_VALUE bigint,
    SP_SYSTEM varchar(200),
    SP_VALUE varchar(200),
    primary key (SP_ID)
);

create table HFJ_SPIDX_URI (
    SP_ID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    HASH_IDENTITY bigint,
    SP_MISSING bit not null,
    SP_NAME varchar(100),
    RES_ID bigint not null,
    RES_TYPE varchar(100),
    SP_UPDATED datetime2(6),
    HASH_URI bigint,
    SP_URI varchar(500),
    primary key (SP_ID)
);

create table HFJ_SUBSCRIPTION_STATS (
    PID bigint not null,
    CREATED_TIME datetime2(6) not null,
    RES_ID bigint,
    primary key (PID)
);

create table HFJ_TAG_DEF (
    TAG_ID bigint not null,
    TAG_CODE varchar(200),
    TAG_DISPLAY varchar(200),
    TAG_SYSTEM varchar(200),
    TAG_TYPE int not null,
    TAG_USER_SELECTED bit,
    TAG_VERSION varchar(30),
    primary key (TAG_ID)
);

create table MPI_LINK (
    PID bigint not null,
    PARTITION_DATE date,
    PARTITION_ID int,
    CREATED datetime2(6) not null,
    EID_MATCH bit,
    GOLDEN_RESOURCE_PID bigint not null,
    NEW_PERSON bit,
    LINK_SOURCE int not null,
    MATCH_RESULT int not null,
    TARGET_TYPE varchar(40),
    PERSON_PID bigint not null,
    RULE_COUNT bigint,
    SCORE float(53),
    TARGET_PID bigint not null,
    UPDATED datetime2(6) not null,
    VECTOR bigint,
    VERSION varchar(16) not null,
    primary key (PID)
);

create table MPI_LINK_AUD (
    PID bigint not null,
    REV bigint not null,
    REVTYPE smallint,
    PARTITION_DATE date,
    PARTITION_ID int,
    CREATED datetime2(6),
    EID_MATCH bit,
    GOLDEN_RESOURCE_PID bigint,
    NEW_PERSON bit,
    LINK_SOURCE int,
    MATCH_RESULT int,
    TARGET_TYPE varchar(40),
    PERSON_PID bigint,
    RULE_COUNT bigint,
    SCORE float(53),
    TARGET_PID bigint,
    UPDATED datetime2(6),
    VECTOR bigint,
    VERSION varchar(16),
    primary key (REV, PID)
);

create table NPM_PACKAGE (
    PID bigint not null,
    CUR_VERSION_ID varchar(200),
    PACKAGE_DESC varchar(200),
    PACKAGE_ID varchar(200) not null,
    UPDATED_TIME datetime2(6) not null,
    primary key (PID)
);

create table NPM_PACKAGE_VER (
    PID bigint not null,
    CURRENT_VERSION bit not null,
    PKG_DESC varchar(200),
    DESC_UPPER varchar(200),
    FHIR_VERSION varchar(10) not null,
    FHIR_VERSION_ID varchar(20) not null,
    PACKAGE_ID varchar(200) not null,
    PACKAGE_SIZE_BYTES bigint not null,
    SAVED_TIME datetime2(6) not null,
    UPDATED_TIME datetime2(6) not null,
    VERSION_ID varchar(200) not null,
    PACKAGE_PID bigint not null,
    BINARY_RES_ID bigint not null,
    primary key (PID)
);

create table NPM_PACKAGE_VER_RES (
    PID bigint not null,
    CANONICAL_URL varchar(200),
    CANONICAL_VERSION varchar(200),
    FILE_DIR varchar(200),
    FHIR_VERSION varchar(10) not null,
    FHIR_VERSION_ID varchar(20) not null,
    FILE_NAME varchar(200),
    RES_SIZE_BYTES bigint not null,
    RES_TYPE varchar(40) not null,
    UPDATED_TIME datetime2(6) not null,
    PACKVER_PID bigint not null,
    BINARY_RES_ID bigint not null,
    primary key (PID)
);

create table TRM_CODESYSTEM (
    PID bigint not null,
    CODE_SYSTEM_URI varchar(200) not null,
    CURRENT_VERSION_PID bigint,
    CS_NAME varchar(200),
    RES_ID bigint,
    primary key (PID)
);

create table TRM_CODESYSTEM_VER (
    PID bigint not null,
    CS_DISPLAY varchar(200),
    CODESYSTEM_PID bigint,
    CS_VERSION_ID varchar(200),
    RES_ID bigint not null,
    primary key (PID)
);

create table TRM_CONCEPT (
    PID bigint not null,
    CODEVAL varchar(500) not null,
    CODESYSTEM_PID bigint not null,
    DISPLAY varchar(400),
    INDEX_STATUS bigint,
    PARENT_PIDS varchar(max),
    PARENT_PIDS_VC varchar(max),
    CODE_SEQUENCE int,
    CONCEPT_UPDATED datetime2(6),
    primary key (PID)
);

create table TRM_CONCEPT_DESIG (
    PID bigint not null,
    LANG varchar(500),
    USE_CODE varchar(500),
    USE_DISPLAY varchar(500),
    USE_SYSTEM varchar(500),
    VAL varchar(2000),
    VAL_VC varchar(max),
    CS_VER_PID bigint,
    CONCEPT_PID bigint,
    primary key (PID)
);

create table TRM_CONCEPT_MAP (
    PID bigint not null,
    RES_ID bigint,
    SOURCE_URL varchar(200),
    TARGET_URL varchar(200),
    URL varchar(200) not null,
    VER varchar(200),
    primary key (PID)
);

create table TRM_CONCEPT_MAP_GROUP (
    PID bigint not null,
    CONCEPT_MAP_URL varchar(200),
    SOURCE_URL varchar(200) not null,
    SOURCE_VS varchar(200),
    SOURCE_VERSION varchar(200),
    TARGET_URL varchar(200) not null,
    TARGET_VS varchar(200),
    TARGET_VERSION varchar(200),
    CONCEPT_MAP_PID bigint not null,
    primary key (PID)
);

create table TRM_CONCEPT_MAP_GRP_ELEMENT (
    PID bigint not null,
    SOURCE_CODE varchar(500) not null,
    CONCEPT_MAP_URL varchar(200),
    SOURCE_DISPLAY varchar(500),
    SYSTEM_URL varchar(200),
    SYSTEM_VERSION varchar(200),
    VALUESET_URL varchar(200),
    CONCEPT_MAP_GROUP_PID bigint not null,
    primary key (PID)
);

create table TRM_CONCEPT_MAP_GRP_ELM_TGT (
    PID bigint not null,
    TARGET_CODE varchar(500),
    CONCEPT_MAP_URL varchar(200),
    TARGET_DISPLAY varchar(500),
    TARGET_EQUIVALENCE varchar(50),
    SYSTEM_URL varchar(200),
    SYSTEM_VERSION varchar(200),
    VALUESET_URL varchar(200),
    CONCEPT_MAP_GRP_ELM_PID bigint not null,
    primary key (PID)
);

create table TRM_CONCEPT_PC_LINK (
    PID bigint not null,
    CHILD_PID bigint,
    CODESYSTEM_PID bigint not null,
    PARENT_PID bigint,
    REL_TYPE int,
    primary key (PID)
);

create table TRM_CONCEPT_PROPERTY (
    PID bigint not null,
    PROP_CODESYSTEM varchar(500),
    PROP_DISPLAY varchar(500),
    PROP_KEY varchar(500) not null,
    PROP_TYPE int not null,
    PROP_VAL varchar(500),
    PROP_VAL_BIN varbinary(max),
    PROP_VAL_LOB varbinary(max),
    CS_VER_PID bigint,
    CONCEPT_PID bigint,
    primary key (PID)
);

create table TRM_VALUESET (
    PID bigint not null,
    EXPANSION_STATUS varchar(50) not null,
    EXPANDED_AT datetime2(6),
    VSNAME varchar(200),
    RES_ID bigint,
    TOTAL_CONCEPT_DESIGNATIONS bigint default 0 not null,
    TOTAL_CONCEPTS bigint default 0 not null,
    URL varchar(200) not null,
    VER varchar(200),
    primary key (PID)
);

create table TRM_VALUESET_C_DESIGNATION (
    PID bigint not null,
    VALUESET_CONCEPT_PID bigint not null,
    LANG varchar(500),
    USE_CODE varchar(500),
    USE_DISPLAY varchar(500),
    USE_SYSTEM varchar(500),
    VAL varchar(2000) not null,
    VALUESET_PID bigint not null,
    primary key (PID)
);

create table TRM_VALUESET_CONCEPT (
    PID bigint not null,
    CODEVAL varchar(500) not null,
    DISPLAY varchar(400),
    INDEX_STATUS bigint,
    VALUESET_ORDER int not null,
    SOURCE_DIRECT_PARENT_PIDS varchar(max),
    SOURCE_DIRECT_PARENT_PIDS_VC varchar(max),
    SOURCE_PID bigint,
    SYSTEM_URL varchar(200) not null,
    SYSTEM_VER varchar(200),
    VALUESET_PID bigint not null,
    primary key (PID)
);

create index IDX_BT2JI_CT 
   on BT2_JOB_INSTANCE (CREATE_TIME);

create index IDX_BT2WC_II_SEQ 
   on BT2_WORK_CHUNK (INSTANCE_ID, SEQ);

create index IDX_BT2WC_II_SI_S_SEQ_ID 
   on BT2_WORK_CHUNK (INSTANCE_ID, TGT_STEP_ID, STAT, SEQ, ID);

create index IDX_CDH_LB_REF_RULE_SUBS 
   on CDH_LB_REF (RULE_SYSTEM, RULE_VALUE, SUBS_RES_ID);

create index IDX_CDH_LB_REF_TRACK_PARAM 
   on CDH_LB_REF (TRACK_PARAM);

create index IDX_CDH_LB_REF_TRACK_SUBPARAM 
   on CDH_LB_REF (TRACK_SUBPARAM);

create index IDX_CDH_LB_REF_EXPIRES 
   on CDH_LB_REF (EXPIRES);

create index FK_LB_RES 
   on CDH_LB_REF (LB_RES_ID);

create index FK_LB_SUBS 
   on CDH_LB_REF (SUBS_RES_ID);

create index FK_LB_ROOT 
   on CDH_LB_REF (ROOT_RES_ID);

alter table CDH_LB_REF 
   add constraint IDX_CDH_LB_REF_UNIQ unique (RULE_SYSTEM, RULE_VALUE, ROOT_RES_ID, SUBS_RES_ID, LB_RES_ID);

create index IDX_CDH_LB_SUB_GROUP_GROUP 
   on CDH_LB_SUB_GROUP (SUBS_GROUP);

create index IDX_CDH_LB_SUB_GROUP_ID 
   on CDH_LB_SUB_GROUP (SUBS_ID);

alter table CDH_LB_SUB_GROUP 
   add constraint IDX_CDH_LB_SUB_ID_GROUP unique (SUBS_RES_ID, SUBS_GROUP);

alter table CDH_LB_WL 
   add constraint IDX_CDH_LB_WL_WATCHLIST_TOKEN unique (WATCHLIST_SYSTEM, WATCHLIST_VALUE);

create index FK_LB_WL_SUBS 
   on CDH_LB_WL_SUBS (SUBS_RES_ID);

alter table CDH_LB_WL_SUBS 
   add constraint IDX_CDH_LB_WL_SUBS_WATCHLIST unique (WATCHLIST_ID, SUBS_RES_ID);

create index IDX_BLKEX_EXPTIME 
   on HFJ_BLK_EXPORT_JOB (EXP_TIME);

alter table HFJ_BLK_EXPORT_JOB 
   add constraint IDX_BLKEX_JOB_ID unique (JOB_ID);

alter table HFJ_BLK_IMPORT_JOB 
   add constraint IDX_BLKIM_JOB_ID unique (JOB_ID);

create index IDX_BLKIM_JOBFILE_JOBID 
   on HFJ_BLK_IMPORT_JOBFILE (JOB_PID);

create index IDX_RESHISTTAG_RESID 
   on HFJ_HISTORY_TAG (RES_ID);

create unique nonclustered index IDX_RESHISTTAG_TAGID 
   on HFJ_HISTORY_TAG (RES_VER_PID, TAG_ID) where RES_VER_PID is not null and TAG_ID is not null;

create index IDX_IDXCMBTOKNU_STR 
   on HFJ_IDX_CMB_TOK_NU (IDX_STRING);

create index IDX_IDXCMBTOKNU_HASHC 
   on HFJ_IDX_CMB_TOK_NU (HASH_COMPLETE, RES_ID, PARTITION_ID);

create index IDX_IDXCMBTOKNU_RES 
   on HFJ_IDX_CMB_TOK_NU (RES_ID);

create index IDX_IDXCMPSTRUNIQ_RESOURCE 
   on HFJ_IDX_CMP_STRING_UNIQ (RES_ID);

alter table HFJ_IDX_CMP_STRING_UNIQ 
   add constraint IDX_IDXCMPSTRUNIQ_STRING unique (IDX_STRING);

alter table HFJ_PARTITION 
   add constraint IDX_PART_NAME unique (PART_NAME);

create index IDX_RL_SRC 
   on HFJ_RES_LINK (SRC_RESOURCE_ID);

create index IDX_RL_TGT_v2 
   on HFJ_RES_LINK (TARGET_RESOURCE_ID, SRC_PATH, SRC_RESOURCE_ID, TARGET_RESOURCE_TYPE, PARTITION_ID);

create index IDX_RESPARMPRESENT_RESID 
   on HFJ_RES_PARAM_PRESENT (RES_ID);

create index IDX_RESPARMPRESENT_HASHPRES 
   on HFJ_RES_PARAM_PRESENT (HASH_PRESENCE);

create index IDX_RESSEARCHURL_RES 
   on HFJ_RES_SEARCH_URL (RES_ID);

create index IDX_RESSEARCHURL_TIME 
   on HFJ_RES_SEARCH_URL (CREATED_TIME);

create index IDX_RES_TAG_RES_TAG 
   on HFJ_RES_TAG (RES_ID, TAG_ID, PARTITION_ID);

create index IDX_RES_TAG_TAG_RES 
   on HFJ_RES_TAG (TAG_ID, RES_ID, PARTITION_ID);

create unique nonclustered index IDX_RESTAG_TAGID 
   on HFJ_RES_TAG (RES_ID, TAG_ID) where RES_ID is not null and TAG_ID is not null;

create index IDX_RESVER_TYPE_DATE 
   on HFJ_RES_VER (RES_TYPE, RES_UPDATED, RES_ID);

create index IDX_RESVER_ID_DATE 
   on HFJ_RES_VER (RES_ID, RES_UPDATED);

create index IDX_RESVER_DATE 
   on HFJ_RES_VER (RES_UPDATED, RES_ID);

alter table HFJ_RES_VER 
   add constraint IDX_RESVER_ID_VER unique (RES_ID, RES_VER);

create index IDX_RESVERPROV_SOURCEURI 
   on HFJ_RES_VER_PROV (SOURCE_URI);

create index IDX_RESVERPROV_REQUESTID 
   on HFJ_RES_VER_PROV (REQUEST_ID);

create index IDX_RESVERPROV_RES_PID 
   on HFJ_RES_VER_PROV (RES_PID);

create index IDX_RES_DATE 
   on HFJ_RESOURCE (RES_UPDATED);

create index IDX_RES_FHIR_ID 
   on HFJ_RESOURCE (FHIR_ID);

create index IDX_RES_TYPE_DEL_UPDATED 
   on HFJ_RESOURCE (RES_TYPE, RES_DELETED_AT, RES_UPDATED, PARTITION_ID, RES_ID);

create index IDX_RES_RESID_UPDATED 
   on HFJ_RESOURCE (RES_ID, RES_UPDATED, PARTITION_ID);

create unique nonclustered index IDX_RES_TYPE_FHIR_ID 
   on HFJ_RESOURCE (RES_TYPE, FHIR_ID) where RES_TYPE is not null and FHIR_ID is not null;

create index IDX_SEARCH_RESTYPE_HASHS 
   on HFJ_SEARCH (RESOURCE_TYPE, SEARCH_QUERY_STRING_HASH, CREATED);

create index IDX_SEARCH_CREATED 
   on HFJ_SEARCH (CREATED);

alter table HFJ_SEARCH 
   add constraint IDX_SEARCH_UUID unique (SEARCH_UUID);

create index FK_SEARCHINC_SEARCH 
   on HFJ_SEARCH_INCLUDE (SEARCH_PID);

alter table HFJ_SEARCH_RESULT 
   add constraint IDX_SEARCHRES_ORDER unique (SEARCH_PID, SEARCH_ORDER);

create index IDX_SP_COORDS_HASH_V2 
   on HFJ_SPIDX_COORDS (HASH_IDENTITY, SP_LATITUDE, SP_LONGITUDE, RES_ID, PARTITION_ID);

create index IDX_SP_COORDS_UPDATED 
   on HFJ_SPIDX_COORDS (SP_UPDATED);

create index IDX_SP_COORDS_RESID 
   on HFJ_SPIDX_COORDS (RES_ID);

create index IDX_SP_DATE_HASH_V2 
   on HFJ_SPIDX_DATE (HASH_IDENTITY, SP_VALUE_LOW, SP_VALUE_HIGH, RES_ID, PARTITION_ID);

create index IDX_SP_DATE_HASH_HIGH_V2 
   on HFJ_SPIDX_DATE (HASH_IDENTITY, SP_VALUE_HIGH, RES_ID, PARTITION_ID);

create index IDX_SP_DATE_ORD_HASH_V2 
   on HFJ_SPIDX_DATE (HASH_IDENTITY, SP_VALUE_LOW_DATE_ORDINAL, SP_VALUE_HIGH_DATE_ORDINAL, RES_ID, PARTITION_ID);

create index IDX_SP_DATE_ORD_HASH_HIGH_V2 
   on HFJ_SPIDX_DATE (HASH_IDENTITY, SP_VALUE_HIGH_DATE_ORDINAL, RES_ID, PARTITION_ID);

create index IDX_SP_DATE_RESID_V2 
   on HFJ_SPIDX_DATE (RES_ID, HASH_IDENTITY, SP_VALUE_LOW, SP_VALUE_HIGH, SP_VALUE_LOW_DATE_ORDINAL, SP_VALUE_HIGH_DATE_ORDINAL, PARTITION_ID);

create index IDX_SP_NUMBER_HASH_VAL_V2 
   on HFJ_SPIDX_NUMBER (HASH_IDENTITY, SP_VALUE, RES_ID, PARTITION_ID);

create index IDX_SP_NUMBER_RESID_V2 
   on HFJ_SPIDX_NUMBER (RES_ID, HASH_IDENTITY, SP_VALUE, PARTITION_ID);

create index IDX_SP_QUANTITY_HASH_V2 
   on HFJ_SPIDX_QUANTITY (HASH_IDENTITY, SP_VALUE, RES_ID, PARTITION_ID);

create index IDX_SP_QUANTITY_HASH_UN_V2 
   on HFJ_SPIDX_QUANTITY (HASH_IDENTITY_AND_UNITS, SP_VALUE, RES_ID, PARTITION_ID);

create index IDX_SP_QUANTITY_HASH_SYSUN_V2 
   on HFJ_SPIDX_QUANTITY (HASH_IDENTITY_SYS_UNITS, SP_VALUE, RES_ID, PARTITION_ID);

create index IDX_SP_QUANTITY_RESID_V2 
   on HFJ_SPIDX_QUANTITY (RES_ID, HASH_IDENTITY, HASH_IDENTITY_SYS_UNITS, HASH_IDENTITY_AND_UNITS, SP_VALUE, PARTITION_ID);

create index IDX_SP_QNTY_NRML_HASH_V2 
   on HFJ_SPIDX_QUANTITY_NRML (HASH_IDENTITY, SP_VALUE, RES_ID, PARTITION_ID);

create index IDX_SP_QNTY_NRML_HASH_UN_V2 
   on HFJ_SPIDX_QUANTITY_NRML (HASH_IDENTITY_AND_UNITS, SP_VALUE, RES_ID, PARTITION_ID);

create index IDX_SP_QNTY_NRML_HASH_SYSUN_V2 
   on HFJ_SPIDX_QUANTITY_NRML (HASH_IDENTITY_SYS_UNITS, SP_VALUE, RES_ID, PARTITION_ID);

create index IDX_SP_QNTY_NRML_RESID_V2 
   on HFJ_SPIDX_QUANTITY_NRML (RES_ID, HASH_IDENTITY, HASH_IDENTITY_SYS_UNITS, HASH_IDENTITY_AND_UNITS, SP_VALUE, PARTITION_ID);

create index IDX_SP_STRING_HASH_IDENT_V2 
   on HFJ_SPIDX_STRING (HASH_IDENTITY, RES_ID, PARTITION_ID);

create index IDX_SP_STRING_HASH_NRM_V2 
   on HFJ_SPIDX_STRING (HASH_NORM_PREFIX, SP_VALUE_NORMALIZED, RES_ID, PARTITION_ID);

create index IDX_SP_STRING_HASH_EXCT_V2 
   on HFJ_SPIDX_STRING (HASH_EXACT, RES_ID, PARTITION_ID);

create index IDX_SP_STRING_RESID_V2 
   on HFJ_SPIDX_STRING (RES_ID, HASH_NORM_PREFIX, PARTITION_ID);

create index IDX_SP_TOKEN_HASH_V2 
   on HFJ_SPIDX_TOKEN (HASH_IDENTITY, SP_SYSTEM, SP_VALUE, RES_ID, PARTITION_ID);

create index IDX_SP_TOKEN_HASH_S_V2 
   on HFJ_SPIDX_TOKEN (HASH_SYS, RES_ID, PARTITION_ID);

create index IDX_SP_TOKEN_HASH_SV_V2 
   on HFJ_SPIDX_TOKEN (HASH_SYS_AND_VALUE, RES_ID, PARTITION_ID);

create index IDX_SP_TOKEN_HASH_V_V2 
   on HFJ_SPIDX_TOKEN (HASH_VALUE, RES_ID, PARTITION_ID);

create index IDX_SP_TOKEN_RESID_V2 
   on HFJ_SPIDX_TOKEN (RES_ID, HASH_SYS_AND_VALUE, HASH_VALUE, HASH_SYS, HASH_IDENTITY, PARTITION_ID);

create index IDX_SP_URI_HASH_URI_V2 
   on HFJ_SPIDX_URI (HASH_URI, RES_ID, PARTITION_ID);

create index IDX_SP_URI_HASH_IDENTITY_V2 
   on HFJ_SPIDX_URI (HASH_IDENTITY, SP_URI, RES_ID, PARTITION_ID);

create index IDX_SP_URI_COORDS 
   on HFJ_SPIDX_URI (RES_ID);

create unique nonclustered index IDX_SUBSC_RESID 
   on HFJ_SUBSCRIPTION_STATS (RES_ID) where RES_ID is not null;

create index IDX_TAG_DEF_TP_CD_SYS 
   on HFJ_TAG_DEF (TAG_TYPE, TAG_CODE, TAG_SYSTEM, TAG_ID, TAG_VERSION, TAG_USER_SELECTED);

create index IDX_EMPI_MATCH_TGT_VER 
   on MPI_LINK (MATCH_RESULT, TARGET_PID, VERSION);

create index IDX_EMPI_GR_TGT 
   on MPI_LINK (GOLDEN_RESOURCE_PID, TARGET_PID);

create index FK_EMPI_LINK_TARGET 
   on MPI_LINK (TARGET_PID);

create index IDX_EMPI_TGT_MR_LS 
   on MPI_LINK (TARGET_TYPE, MATCH_RESULT, LINK_SOURCE);

create index IDX_EMPI_TGT_MR_SCORE 
   on MPI_LINK (TARGET_TYPE, MATCH_RESULT, SCORE);

alter table MPI_LINK 
   add constraint IDX_EMPI_PERSON_TGT unique (PERSON_PID, TARGET_PID);

alter table NPM_PACKAGE 
   add constraint IDX_PACK_ID unique (PACKAGE_ID);

create index FK_NPM_PKV_PKG 
   on NPM_PACKAGE_VER (PACKAGE_PID);

create index FK_NPM_PKV_RESID 
   on NPM_PACKAGE_VER (BINARY_RES_ID);

alter table NPM_PACKAGE_VER 
   add constraint IDX_PACKVER unique (PACKAGE_ID, VERSION_ID);

create index IDX_PACKVERRES_URL 
   on NPM_PACKAGE_VER_RES (CANONICAL_URL);

create index FK_NPM_PACKVERRES_PACKVER 
   on NPM_PACKAGE_VER_RES (PACKVER_PID);

create index FK_NPM_PKVR_RESID 
   on NPM_PACKAGE_VER_RES (BINARY_RES_ID);

create index FK_TRMCODESYSTEM_RES 
   on TRM_CODESYSTEM (RES_ID);

create index FK_TRMCODESYSTEM_CURVER 
   on TRM_CODESYSTEM (CURRENT_VERSION_PID);

alter table TRM_CODESYSTEM 
   add constraint IDX_CS_CODESYSTEM unique (CODE_SYSTEM_URI);

create index FK_CODESYSVER_RES_ID 
   on TRM_CODESYSTEM_VER (RES_ID);

create index FK_CODESYSVER_CS_ID 
   on TRM_CODESYSTEM_VER (CODESYSTEM_PID);

create unique nonclustered index IDX_CODESYSTEM_AND_VER 
   on TRM_CODESYSTEM_VER (CODESYSTEM_PID, CS_VERSION_ID) where CODESYSTEM_PID is not null and CS_VERSION_ID is not null;

create index IDX_CONCEPT_INDEXSTATUS 
   on TRM_CONCEPT (INDEX_STATUS);

create index IDX_CONCEPT_UPDATED 
   on TRM_CONCEPT (CONCEPT_UPDATED);

alter table TRM_CONCEPT 
   add constraint IDX_CONCEPT_CS_CODE unique (CODESYSTEM_PID, CODEVAL);

create index FK_CONCEPTDESIG_CONCEPT 
   on TRM_CONCEPT_DESIG (CONCEPT_PID);

create index FK_CONCEPTDESIG_CSV 
   on TRM_CONCEPT_DESIG (CS_VER_PID);

create index FK_TRMCONCEPTMAP_RES 
   on TRM_CONCEPT_MAP (RES_ID);

create unique nonclustered index IDX_CONCEPT_MAP_URL 
   on TRM_CONCEPT_MAP (URL, VER) where URL is not null and VER is not null;

create index FK_TCMGROUP_CONCEPTMAP 
   on TRM_CONCEPT_MAP_GROUP (CONCEPT_MAP_PID);

create index IDX_CNCPT_MAP_GRP_CD 
   on TRM_CONCEPT_MAP_GRP_ELEMENT (SOURCE_CODE);

create index FK_TCMGELEMENT_GROUP 
   on TRM_CONCEPT_MAP_GRP_ELEMENT (CONCEPT_MAP_GROUP_PID);

create index IDX_CNCPT_MP_GRP_ELM_TGT_CD 
   on TRM_CONCEPT_MAP_GRP_ELM_TGT (TARGET_CODE);

create index FK_TCMGETARGET_ELEMENT 
   on TRM_CONCEPT_MAP_GRP_ELM_TGT (CONCEPT_MAP_GRP_ELM_PID);

create index FK_TERM_CONCEPTPC_CHILD 
   on TRM_CONCEPT_PC_LINK (CHILD_PID);

create index FK_TERM_CONCEPTPC_PARENT 
   on TRM_CONCEPT_PC_LINK (PARENT_PID);

create index FK_TERM_CONCEPTPC_CS 
   on TRM_CONCEPT_PC_LINK (CODESYSTEM_PID);

create index FK_CONCEPTPROP_CONCEPT 
   on TRM_CONCEPT_PROPERTY (CONCEPT_PID);

create index FK_CONCEPTPROP_CSV 
   on TRM_CONCEPT_PROPERTY (CS_VER_PID);

create index FK_TRMVALUESET_RES 
   on TRM_VALUESET (RES_ID);

create unique nonclustered index IDX_VALUESET_URL 
   on TRM_VALUESET (URL, VER) where URL is not null and VER is not null;

create index FK_TRM_VALUESET_CONCEPT_PID 
   on TRM_VALUESET_C_DESIGNATION (VALUESET_CONCEPT_PID);

create index FK_TRM_VSCD_VS_PID 
   on TRM_VALUESET_C_DESIGNATION (VALUESET_PID);

alter table TRM_VALUESET_CONCEPT 
   add constraint IDX_VS_CONCEPT_CSCD unique (VALUESET_PID, SYSTEM_URL, CODEVAL);

alter table TRM_VALUESET_CONCEPT 
   add constraint IDX_VS_CONCEPT_ORDER unique (VALUESET_PID, VALUESET_ORDER);

alter table BT2_WORK_CHUNK 
   add constraint FK_BT2WC_INSTANCE 
   foreign key (INSTANCE_ID) 
   references BT2_JOB_INSTANCE;

alter table CDH_LB_REF 
   add constraint FK_LB_RES 
   foreign key (LB_RES_ID) 
   references HFJ_RESOURCE;

alter table CDH_LB_REF 
   add constraint FK_LB_ROOT 
   foreign key (ROOT_RES_ID) 
   references HFJ_RESOURCE;

alter table CDH_LB_REF 
   add constraint FK_LB_SUBS 
   foreign key (SUBS_RES_ID) 
   references HFJ_RESOURCE;

alter table CDH_LB_SUB_GROUP 
   add constraint FK_LB_GP_SUBS 
   foreign key (SUBS_RES_ID) 
   references HFJ_RESOURCE;

alter table CDH_LB_WL_SUBS 
   add constraint FK_LB_WL_SUBS 
   foreign key (SUBS_RES_ID) 
   references HFJ_RESOURCE;

alter table CDH_LB_WL_SUBS 
   add constraint FK_LB_WL_ID 
   foreign key (WATCHLIST_ID) 
   references CDH_LB_WL;

alter table HFJ_BLK_EXPORT_COLFILE 
   add constraint FK_BLKEXCOLFILE_COLLECT 
   foreign key (COLLECTION_PID) 
   references HFJ_BLK_EXPORT_COLLECTION;

alter table HFJ_BLK_EXPORT_COLLECTION 
   add constraint FK_BLKEXCOL_JOB 
   foreign key (JOB_PID) 
   references HFJ_BLK_EXPORT_JOB;

alter table HFJ_BLK_IMPORT_JOBFILE 
   add constraint FK_BLKIMJOBFILE_JOB 
   foreign key (JOB_PID) 
   references HFJ_BLK_IMPORT_JOB;

alter table HFJ_HISTORY_TAG 
   add constraint FKtderym7awj6q8iq5c51xv4ndw 
   foreign key (TAG_ID) 
   references HFJ_TAG_DEF;

alter table HFJ_HISTORY_TAG 
   add constraint FK_HISTORYTAG_HISTORY 
   foreign key (RES_VER_PID) 
   references HFJ_RES_VER;

alter table HFJ_IDX_CMB_TOK_NU 
   add constraint FK_IDXCMBTOKNU_RES_ID 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table HFJ_IDX_CMP_STRING_UNIQ 
   add constraint FK_IDXCMPSTRUNIQ_RES_ID 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table HFJ_RES_LINK 
   add constraint FK_RESLINK_SOURCE 
   foreign key (SRC_RESOURCE_ID) 
   references HFJ_RESOURCE;

alter table HFJ_RES_LINK 
   add constraint FK_RESLINK_TARGET 
   foreign key (TARGET_RESOURCE_ID) 
   references HFJ_RESOURCE;

alter table HFJ_RES_PARAM_PRESENT 
   add constraint FK_RESPARMPRES_RESID 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table HFJ_RES_SEARCH_URL 
   add constraint FK_RES_SEARCH_URL_RESOURCE 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table HFJ_RES_TAG 
   add constraint FKbfcjbaftmiwr3rxkwsy23vneo 
   foreign key (TAG_ID) 
   references HFJ_TAG_DEF;

alter table HFJ_RES_TAG 
   add constraint FK_RESTAG_RESOURCE 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table HFJ_RES_VER 
   add constraint FK_RESOURCE_HISTORY_RESOURCE 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table HFJ_RES_VER_PROV 
   add constraint FK_RESVERPROV_RES_PID 
   foreign key (RES_PID) 
   references HFJ_RESOURCE;

alter table HFJ_RES_VER_PROV 
   add constraint FK_RESVERPROV_RESVER_PID 
   foreign key (RES_VER_PID) 
   references HFJ_RES_VER;

alter table HFJ_SEARCH_INCLUDE 
   add constraint FK_SEARCHINC_SEARCH 
   foreign key (SEARCH_PID) 
   references HFJ_SEARCH;

alter table HFJ_SPIDX_COORDS 
   add constraint FKC97MPK37OKWU8QVTCEG2NH9VN 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table HFJ_SPIDX_DATE 
   add constraint FK_SP_DATE_RES 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table HFJ_SPIDX_NUMBER 
   add constraint FK_SP_NUMBER_RES 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table HFJ_SPIDX_QUANTITY 
   add constraint FK_SP_QUANTITY_RES 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table HFJ_SPIDX_QUANTITY_NRML 
   add constraint FK_SP_QUANTITYNM_RES 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table HFJ_SPIDX_STRING 
   add constraint FK_SPIDXSTR_RESOURCE 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table HFJ_SPIDX_TOKEN 
   add constraint FK_SP_TOKEN_RES 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table HFJ_SPIDX_URI 
   add constraint FKGXSREUTYMMFJUWDSWV3Y887DO 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table HFJ_SUBSCRIPTION_STATS 
   add constraint FK_SUBSC_RESOURCE_ID 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table MPI_LINK 
   add constraint FK_EMPI_LINK_GOLDEN_RESOURCE 
   foreign key (GOLDEN_RESOURCE_PID) 
   references HFJ_RESOURCE;

alter table MPI_LINK 
   add constraint FK_EMPI_LINK_PERSON 
   foreign key (PERSON_PID) 
   references HFJ_RESOURCE;

alter table MPI_LINK 
   add constraint FK_EMPI_LINK_TARGET 
   foreign key (TARGET_PID) 
   references HFJ_RESOURCE;

alter table MPI_LINK_AUD 
   add constraint FKaow7nxncloec419ars0fpp58m 
   foreign key (REV) 
   references HFJ_REVINFO;

alter table NPM_PACKAGE_VER 
   add constraint FK_NPM_PKV_PKG 
   foreign key (PACKAGE_PID) 
   references NPM_PACKAGE;

alter table NPM_PACKAGE_VER 
   add constraint FK_NPM_PKV_RESID 
   foreign key (BINARY_RES_ID) 
   references HFJ_RESOURCE;

alter table NPM_PACKAGE_VER_RES 
   add constraint FK_NPM_PACKVERRES_PACKVER 
   foreign key (PACKVER_PID) 
   references NPM_PACKAGE_VER;

alter table NPM_PACKAGE_VER_RES 
   add constraint FK_NPM_PKVR_RESID 
   foreign key (BINARY_RES_ID) 
   references HFJ_RESOURCE;

alter table TRM_CODESYSTEM 
   add constraint FK_TRMCODESYSTEM_CURVER 
   foreign key (CURRENT_VERSION_PID) 
   references TRM_CODESYSTEM_VER;

alter table TRM_CODESYSTEM 
   add constraint FK_TRMCODESYSTEM_RES 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table TRM_CODESYSTEM_VER 
   add constraint FK_CODESYSVER_CS_ID 
   foreign key (CODESYSTEM_PID) 
   references TRM_CODESYSTEM;

alter table TRM_CODESYSTEM_VER 
   add constraint FK_CODESYSVER_RES_ID 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table TRM_CONCEPT 
   add constraint FK_CONCEPT_PID_CS_PID 
   foreign key (CODESYSTEM_PID) 
   references TRM_CODESYSTEM_VER;

alter table TRM_CONCEPT_DESIG 
   add constraint FK_CONCEPTDESIG_CSV 
   foreign key (CS_VER_PID) 
   references TRM_CODESYSTEM_VER;

alter table TRM_CONCEPT_DESIG 
   add constraint FK_CONCEPTDESIG_CONCEPT 
   foreign key (CONCEPT_PID) 
   references TRM_CONCEPT;

alter table TRM_CONCEPT_MAP 
   add constraint FK_TRMCONCEPTMAP_RES 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table TRM_CONCEPT_MAP_GROUP 
   add constraint FK_TCMGROUP_CONCEPTMAP 
   foreign key (CONCEPT_MAP_PID) 
   references TRM_CONCEPT_MAP;

alter table TRM_CONCEPT_MAP_GRP_ELEMENT 
   add constraint FK_TCMGELEMENT_GROUP 
   foreign key (CONCEPT_MAP_GROUP_PID) 
   references TRM_CONCEPT_MAP_GROUP;

alter table TRM_CONCEPT_MAP_GRP_ELM_TGT 
   add constraint FK_TCMGETARGET_ELEMENT 
   foreign key (CONCEPT_MAP_GRP_ELM_PID) 
   references TRM_CONCEPT_MAP_GRP_ELEMENT;

alter table TRM_CONCEPT_PC_LINK 
   add constraint FK_TERM_CONCEPTPC_CHILD 
   foreign key (CHILD_PID) 
   references TRM_CONCEPT;

alter table TRM_CONCEPT_PC_LINK 
   add constraint FK_TERM_CONCEPTPC_CS 
   foreign key (CODESYSTEM_PID) 
   references TRM_CODESYSTEM_VER;

alter table TRM_CONCEPT_PC_LINK 
   add constraint FK_TERM_CONCEPTPC_PARENT 
   foreign key (PARENT_PID) 
   references TRM_CONCEPT;

alter table TRM_CONCEPT_PROPERTY 
   add constraint FK_CONCEPTPROP_CSV 
   foreign key (CS_VER_PID) 
   references TRM_CODESYSTEM_VER;

alter table TRM_CONCEPT_PROPERTY 
   add constraint FK_CONCEPTPROP_CONCEPT 
   foreign key (CONCEPT_PID) 
   references TRM_CONCEPT;

alter table TRM_VALUESET 
   add constraint FK_TRMVALUESET_RES 
   foreign key (RES_ID) 
   references HFJ_RESOURCE;

alter table TRM_VALUESET_C_DESIGNATION 
   add constraint FK_TRM_VALUESET_CONCEPT_PID 
   foreign key (VALUESET_CONCEPT_PID) 
   references TRM_VALUESET_CONCEPT;

alter table TRM_VALUESET_C_DESIGNATION 
   add constraint FK_TRM_VSCD_VS_PID 
   foreign key (VALUESET_PID) 
   references TRM_VALUESET;

alter table TRM_VALUESET_CONCEPT 
   add constraint FK_TRM_VALUESET_PID 
   foreign key (VALUESET_PID) 
   references TRM_VALUESET;

41.7.8Troubleshooting

 

41.7.8.1HFJ_RESOURCE.FHIR_ID casing issues

Background: the FHIR specification considers the Resource id to be a case sensitive. Meaning :

PUT /Patient/patient1 (unique properties)
PUT /Patient/Patient1 (unique properties)

are different resources

With the recommended collation (SQL_Latin1_General_CP1_CI_AS), this will fail.

This is corrected by upgrading to a current release. To fix this manually in older releases, change the collation for only HFJ_RESOURCE.FHIR_ID to SQL_Latin1_General_CP1_CS_AS.

Please run the following SQLs:

  • Drop Index IDX_RES_FHIR_ID
drop index HFJ_RESOURCE.IDX_RES_FHIR_ID;
drop index IDX_RES_TYPE_FHIR_ID on HFJ_RESOURCE;
  • Change the collation on HFJ_RESOURCE.FHIR_ID:
ALTER TABLE HFJ_RESOURCE ALTER COLUMN FHIR_ID varchar(64) COLLATE SQL_Latin1_General_CP1_CS_AS;
  • Re-create index IDX_RES_FHIR_ID:
create index IDX_RES_FHIR_ID on HFJ_RESOURCE(FHIR_ID);
create unique index IDX_RES_TYPE_FHIR_ID on HFJ_RESOURCE(RES_TYPE, FHIR_ID) INCLUDE (RES_ID, RES_DELETED_AT);