|
# Installation
|
|
# Installation
|
|
## R package
|
|
## R package
|
|
|
|
|
|
Achilles is a R package available [here](https://github.com/OHDSI/Achilles).
|
|
Achilles is a R package available at https://github.com/OHDSI/Achilles.
|
|
To install Achilles package, you need to use `devtools::install_github()` function.
|
|
The repository was cloned and the package was installed manually in Rstudio.
|
|
|
|
The modifications we made are available at https://github.com/scossin/Achilles/commits/cdw_bordeaux and discussed below.
|
|
|
|
|
|
```r
|
|
## Oracle issues
|
|
devtools::install_github("OHDSI/Achilles")
|
|
There are currently 2 open issues with Oracle database:
|
|
```
|
|
|
|
## SQL results tables
|
|
|
|
|
|
|
|
The output table of the Achilles statistic computation need to be created before run Achilles analysis:
|
|
- https://github.com/OHDSI/Achilles/issues/598: Achilles create table doesn't work. [Our fix](https://github.com/scossin/Achilles/commit/f918ba5fb58dbea0e2e19cb6a279ce1d3dc41022) was to replace '' as by cast('' as varchar(255)) in the table creation queries.
|
|
- ACHILLES_RESULTS
|
|
- https://github.com/OHDSI/Achilles/issues/600: query 109 fails because SUBSTRING doesn't exist in Oracle. [Our fix](https://github.com/scossin/Achilles/commit/75008f4a6326a8f1a3db92dc260df8c037496573) was to replace substring by substr
|
|
- ACHILLES_HEEL
|
|
|
|
- ACHILLES_RESULTS_CONCEPT_COUNT
|
|
|
|
- ACHILLES_RESULTS_DIST
|
|
|
|
|
|
|
|
The scripts are available bellow. They must be run in the OMOP result scheme.
|
|
## Package execution
|
|
|
|
The script we executed to run Achilles is available here: https://github.com/scossin/Achilles/blob/cdw_bordeaux/codeToRun.R
|
|
|
|
|
|
```sql
|
|
The script ""./getConnectionDetails.R" (not in the repository). returns a connectionDetails object to connect to the database.
|
|
CREATE TABLE ACHILLES_RESULTS
|
|
The password is stored and encrypted by the [keyring](https://cran.r-project.org/web/packages/keyring/index.html) package.
|
|
(
|
|
|
|
ANALYSIS_ID NUMBER(38)
|
|
|
|
, STRATUM_1 VARCHAR2(255)
|
|
|
|
, STRATUM_2 VARCHAR2(255)
|
|
|
|
, STRATUM_3 VARCHAR2(255)
|
|
|
|
, STRATUM_4 VARCHAR2(255)
|
|
|
|
, STRATUM_5 VARCHAR2(255)
|
|
|
|
, COUNT_VALUE NUMBER(38)
|
|
|
|
);
|
|
|
|
```
|
|
|
|
|
|
|
|
```sql
|
|
**All the default analysis run successfully**.
|
|
CREATE TABLE ACHILLES_HEEL
|
|
|
|
(
|
|
|
|
ANALYSIS_ID NUMBER(38)
|
|
|
|
, ACHILLES_HEEL_WARNING VARCHAR2(255)
|
|
|
|
, RULE_ID NUMBER(38)
|
|
|
|
, RECORD_COUNT NUMBER(38)
|
|
|
|
);
|
|
|
|
```
|
|
|
|
|
|
|
|
```sql
|
|
We have a ORA-01652 error (unable to extend temp segment in tablespace) when running Achilles analysis id 424, 624, 724, 1824: the Oracle database run out of memory with 256 go avaivable in our TEMP tablespace.
|
|
CREATE TABLE ACHILLES_RESULTS_CONCEPT_COUNT
|
|
These queries find and rank the top 10 co-occurring condition (424) / procedures (624) / drugs (724) / measurement (1824).
|
|
(
|
|
To do so, these queries perform an inner join on person_id within the same_table. This inner join takes a lot of memory since these tables contain million of rows. The limited memory resource in TEMP_IAM (256 go) can't store the results of this inner join.
|
|
CONCEPT_ID NUMBER(38)
|
|
This issue happened in other databases and was discussed here: https://github.com/OHDSI/Achilles/issues/425
|
|
, RECORD_COUNT NUMBER(38)
|
|
Because these queries are computationally expensive, they don't belong to the default Achilles analysis.
|
|
, DESCENDANT_RECORD_COUNT NUMBER(38)
|
|
|
|
);
|
|
|
|
```
|
|
|
|
|
|
|
|
```sql
|
|
|
|
CREATE TABLE ACHILLES_RESULTS_DIST
|
|
|
|
(
|
|
|
|
ANALYSIS_ID NUMBER(38)
|
|
|
|
, STRATUM_1 VARCHAR2(255)
|
|
|
|
, STRATUM_2 VARCHAR2(255)
|
|
|
|
, STRATUM_3 VARCHAR2(255)
|
|
|
|
, STRATUM_4 VARCHAR2(255)
|
|
|
|
, STRATUM_5 VARCHAR2(255)
|
|
|
|
, COUNT_VALUE NUMBER(38)
|
|
|
|
, MIN_VALUE FLOAT
|
|
|
|
, MAX_VALUE FLOAT
|
|
|
|
, AVG_VALUE FLOAT
|
|
|
|
, STDEV_VALUE FLOAT
|
|
|
|
, MEDIAN_VALUE FLOAT
|
|
|
|
, P10_VALUE FLOAT
|
|
|
|
, P25_VALUE FLOAT
|
|
|
|
, P75_VALUE FLOAT
|
|
|
|
, P90_VALUE FLOAT
|
|
|
|
);
|
|
|
|
```
|
|
|
|
|
|
|
|
# Statistic computation
|
|
|
|
## Connexion
|
|
|
|
|
|
|
|
A connexion to the OMOP database is created by the `DatabaseConnector::createConnectionDetails()` function.
|
|
|
|
An example of connexion is avalable bellow.
|
|
|
|
|
|
|
|
```r
|
|
|
|
connectionDetails <- DatabaseConnector::createConnectionDetails(
|
|
|
|
dbms = 'oracle',
|
|
|
|
user = '[USER]',
|
|
|
|
password = '[PASSWORD]',
|
|
|
|
connectionString = 'jdbc:oracle:thin:@[SID]:[PORT]:[DBNAME]'
|
|
|
|
)
|
|
|
|
```
|
|
|
|
|
|
|
|
## Analysis
|
|
|
|
|
|
|
|
Statistic computation are generated by the `Achilles::achilles()` function.
|
|
|
|
|
|
|
|
```r
|
|
|
|
Achilles::achilles(
|
|
|
|
connectionDetails = connectionDetails,
|
|
|
|
cdmDatabaseSchema = 'omop',
|
|
|
|
resultsDatabaseSchema = 'omop_temp',
|
|
|
|
vocabDatabaseSchema = 'omop',
|
|
|
|
numThreads = 1,
|
|
|
|
sourceName = 'Achilles',
|
|
|
|
cdmVersion = '5.3.0',
|
|
|
|
runHeel = FALSE,
|
|
|
|
optimizeAtlasCache = TRUE,
|
|
|
|
createTable = FALSE
|
|
|
|
)
|
|
|
|
```
|
|
|
|
|
|
|
|
## Query exclusion
|
|
|
|
|
|
|
|
Some Achilles queries are not working on Oracle database and were excluded (IDs: 105, 106, 107, 110, 117, 211, 212, 220 and 1824) |
|
|