Changes between Version 2 and Version 3 of i2b2 HowTo Create an Ontology


Ignore:
Timestamp:
10/03/13 09:54:35 (11 years ago)
Author:
Richard Bramley
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • i2b2 HowTo Create an Ontology

    v2 v3  
    113113
    114114}}}
     115
     116Or run this script - Edit the parameters first
     117
     118{{{#!sql
     119
     120DECLARE @OntologyName VARCHAR(50), -- The name of the ontology, e.g. 'Onyx'
     121                @Prefix VARCHAR(10), -- The prefic for the concept code, e.g. 'ONX'
     122                @OntologyDescription VARCHAR(100), -- A nice description, e.g. 'BRICCS Onyx Questionnaire'
     123                @OntologyBaseNode VARCHAR(50), -- The name of the base node of the tree within i2b2, e.g. 'Onyx'
     124                @SourceSystem VARCHAR(50), -- The system from where the data came, e.g. 'BRICCS Onyx'
     125                @MetaDatabaseName VARCHAR(50), -- The name of the Meta Database in which to create the Ontology, e.g. 'i2b2_b1_metadata'
     126                @DataDatabaseName VARCHAR(50) -- The name of the Data Database in which to create the Ontology, e.g. 'i2b2_b1_data'
     127               
     128SET @OntologyName = 'Test CiviCRM'
     129SET @Prefix = 'TestGenCV'
     130SET @OntologyDescription = 'TestGenvasc Study Details from CiviCRM'
     131SET @OntologyBaseNode = 'TestCiviCRM'
     132SET @SourceSystem = 'TestGenvasc CiviCRM'
     133SET @MetaDatabaseName = 'i2b2_b1_metadata'
     134SET @DataDatabaseName = 'i2b2_b1_data'
     135
     136----------------------------------------------------------------
     137-------------- T H E   A C T U A L   S C R I P T ---------------
     138----------------------------------------------------------------
     139
     140--
     141-- CREATE ONTOLOGY TABLE
     142--
     143
     144DECLARE @TCreateOntologyTable VARCHAR(MAX)
     145SET @TCreateOntologyTable = '
     146   USE ' + @MetaDatabaseName + ';
     147   
     148   CREATE TABLE ' + @OntologyName + '
     149   (    "C_HLEVEL" INT                  NOT NULL,
     150        "C_FULLNAME" VARCHAR(700)       NOT NULL,
     151        "C_NAME" VARCHAR(2000)          NOT NULL,
     152        "C_SYNONYM_CD" CHAR(1)          NOT NULL,
     153        "C_VISUALATTRIBUTES" CHAR(3)    NOT NULL,
     154        "C_TOTALNUM" INT                    NULL,
     155        "C_BASECODE" VARCHAR(50)        NULL,
     156        "C_METADATAXML" TEXT            NULL,
     157        "C_FACTTABLECOLUMN" VARCHAR(50) NOT NULL,
     158        "C_TABLENAME" VARCHAR(50)       NOT NULL,
     159        "C_COLUMNNAME" VARCHAR(50)      NOT NULL,
     160        "C_COLUMNDATATYPE" VARCHAR(50)  NOT NULL,
     161        "C_OPERATOR" VARCHAR(10)        NOT NULL,
     162        "C_DIMCODE" VARCHAR(700)        NOT NULL,
     163        "C_COMMENT" TEXT                    NULL,
     164        "C_TOOLTIP" VARCHAR(900)        NULL,
     165        "UPDATE_DATE" DATETIME          NOT NULL,
     166        "DOWNLOAD_DATE" DATETIME        NULL,
     167        "IMPORT_DATE" DATETIME  NULL,
     168        "SOURCESYSTEM_CD" VARCHAR(50)   NULL,
     169        "VALUETYPE_CD" VARCHAR(50)      NULL
     170   ) ;'
     171   
     172EXEC (@TCreateOntologyTable);
     173
     174--
     175-- CREATE SCHEME
     176--
     177
     178DECLARE @TCreateScheme VARCHAR(MAX)
     179SET @TCreateScheme = '
     180   USE ' + @MetaDatabaseName + ';
     181   
     182   INSERT INTO SCHEMES(C_KEY, C_NAME, C_DESCRIPTION)
     183   VALUES(''' + @Prefix + ':'', ''' + @Prefix + ''', ''' + @OntologyDescription + ''');'
     184   
     185EXEC (@TCreateScheme);
     186
     187--
     188-- CREATE TABLE ACCESS
     189--
     190
     191DECLARE @TCreateTableAccess VARCHAR(MAX)
     192SET @TCreateTableAccess = '
     193   USE ' + @MetaDatabaseName + ';
     194   
     195   INSERT INTO TABLE_ACCESS(C_TABLE_CD, C_TABLE_NAME, C_HLEVEL, C_FULLNAME, C_NAME, C_SYNONYM_CD, C_VISUALATTRIBUTES, C_TOTALNUM, C_BASECODE, C_METADATAXML, C_FACTTABLECOLUMN, C_DIMTABLENAME, C_COLUMNNAME, C_COLUMNDATATYPE, C_OPERATOR, C_DIMCODE, C_COMMENT, C_TOOLTIP, C_ENTRY_DATE, C_CHANGE_DATE, C_STATUS_CD, C_PROTECTED_ACCESS, VALUETYPE_CD)
     196   VALUES(''' + @OntologyName +  ''', ''' + @OntologyName + ''', 0, ''\' + @OntologyBaseNode + '\'', ''' + @OntologyDescription + ''', ''N'', ''CA'', NULL, NULL, NULL, ''concept_cd'', ''concept_dimension'', ''concept_path'', ''T'', ''LIKE'', ''\' + @OntologyBaseNode + '\'', NULL, ''' + @OntologyDescription + ''', NULL, NULL, NULL, ''N'', NULL);';
     197   
     198EXEC (@TCreateTableAccess);
     199
     200--
     201-- CREATE THE BASE FOR THE ONTOLOGY
     202--
     203
     204DECLARE @OntologyID INT
     205
     206-- Create the Ontology
     207
     208INSERT INTO [i2b2ClinDataIntegration].[dbo].[Ontology] ([Name],[Prefix],[SourceSystem])
     209VALUES (
     210                        @OntologyName
     211           ,@Prefix
     212           ,@SourceSystem);
     213
     214SET @OntologyID = SCOPE_IDENTITY();
     215
     216SELECT @OntologyID;
     217
     218-- Create the ontology base code
     219
     220INSERT INTO [i2b2ClinDataIntegration].[dbo].[OntologyCode] ([ParentID],[OntologyID],[Code],[Name],[OntologyNodeTypeCode],[OntologyNodeStatusCode],[Editable],[MetaDataTypeCode],[MetaUnits])
     221VALUES (
     222                        NULL
     223           ,@OntologyID
     224           ,1
     225           ,@OntologyBaseNode
     226           ,'C'
     227           ,'A'
     228           ,0
     229           ,NULL
     230           ,NULL
     231        );
     232
     233-- Insert the base code into the Ontology table
     234DECLARE @TCreateBaseInOntologyTable VARCHAR(MAX)
     235SET @TCreateBaseInOntologyTable = '
     236   USE ' + @MetaDatabaseName + ';
     237   
     238   INSERT INTO  Onyxv2
     239   SELECT [C_HLEVEL]
     240      ,[C_FULLNAME]
     241      ,[C_NAME]
     242      ,[C_SYNONYM_CD]
     243      ,[C_VISUALATTRIBUTES]
     244      ,[C_TOTALNUM]
     245      ,[C_BASECODE]
     246      ,[C_METADATAXML]
     247      ,[C_FACTTABLECOLUMN]
     248      ,[C_TABLENAME]
     249      ,[C_COLUMNNAME]
     250      ,[C_COLUMNDATATYPE]
     251      ,[C_OPERATOR]
     252      ,[C_DIMCODE]
     253      ,[C_COMMENT]
     254      ,[C_TOOLTIP]
     255      ,[UPDATE_DATE]
     256      ,[DOWNLOAD_DATE]
     257      ,[IMPORT_DATE]
     258      ,[SOURCESYSTEM_CD]
     259      ,[VALUETYPE_CD]
     260  FROM [i2b2ClinDataIntegration].[dbo].[i2b2Ontology]
     261  WHERE OntologyID = ' + @OntologyID;
     262   
     263EXEC (@TCreateBaseInOntologyTable);
     264
     265-- Insert the base code into the Concept Table
     266DECLARE @TCreateBaseConceptTable VARCHAR(MAX)
     267SET @TCreateBaseConceptTable = '
     268   USE ' + @DataDatabaseName + ';
     269   
     270INSERT INTO concept_dimension
     271SELECT
     272      [concept_path]
     273      ,[concept_cd]
     274      ,[name_char]
     275      ,[concept_blob]
     276      ,[update_date]
     277      ,[download_date]
     278      ,[import_date]
     279      ,[sourcesystem_cd]
     280      ,[UPLOAD_ID]
     281  FROM [i2b2ClinDataIntegration].[dbo].[i2b2OntologyConceptCodes]
     282  WHERE OntologyID = ' + @OntologyID
     283   
     284EXEC (@TCreateBaseConceptTable);
     285
     286----------------------------------------------------------------
     287------- E N D   O F   T H E   A C T U A L   S C R I P T --------
     288----------------------------------------------------------------
     289
     290
     291}}}