From 432d6d5cae1440909c338b920fb9e868ca43d63e Mon Sep 17 00:00:00 2001
From: Steve Reis <stevereis93@gmail.com>
Date: Mon, 14 Mar 2022 13:14:02 +0000
Subject: [PATCH] Datashield integration last changes

---
 .../datashield/assets/SOPHIA_logo.png         | Bin 33259 -> 0 bytes
 .../connectors/datashield/main.connector.ts   |  36 ++++--
 .../datashield/tests/histograms.spec.ts       |  25 ++++
 .../datashield/tests/quantiles.spec.ts        |  41 +++++++
 .../connectors/datashield/transformations.ts  | 115 +++++++-----------
 .../models/result/table-result.model.ts       |  14 ++-
 api/src/schema.gql                            |   6 +
 7 files changed, 153 insertions(+), 84 deletions(-)
 delete mode 100644 api/src/engine/connectors/datashield/assets/SOPHIA_logo.png
 create mode 100644 api/src/engine/connectors/datashield/tests/histograms.spec.ts
 create mode 100644 api/src/engine/connectors/datashield/tests/quantiles.spec.ts

diff --git a/api/src/engine/connectors/datashield/assets/SOPHIA_logo.png b/api/src/engine/connectors/datashield/assets/SOPHIA_logo.png
deleted file mode 100644
index f6eb8e35ce3cb90fe7588eb7ee73d8321360f449..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 33259
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
Kma3F63H*PQue!_t

diff --git a/api/src/engine/connectors/datashield/main.connector.ts b/api/src/engine/connectors/datashield/main.connector.ts
index 4451989..81f7bf6 100644
--- a/api/src/engine/connectors/datashield/main.connector.ts
+++ b/api/src/engine/connectors/datashield/main.connector.ts
@@ -20,7 +20,10 @@ import { ExperimentCreateInput } from 'src/engine/models/experiment/input/experi
 import { ExperimentEditInput } from 'src/engine/models/experiment/input/experiment-edit.input';
 import { ListExperiments } from 'src/engine/models/experiment/list-experiments.model';
 import { RawResult } from 'src/engine/models/result/raw-result.model';
-import { TableResult } from 'src/engine/models/result/table-result.model';
+import {
+  TableResult,
+  ThemeType,
+} from 'src/engine/models/result/table-result.model';
 import {
   transformToDomains,
   transformToHisto,
@@ -60,12 +63,12 @@ export default class DataShieldService implements IEngineService {
       }),
     );
 
-    if (response.data['breaks'] === undefined) {
+    if (response.data['global'] === undefined) {
       DataShieldService.logger.warn('Inconsistency on histogram result');
       DataShieldService.logger.verbose(path);
       return {
         rawdata: {
-          data: response.data[0],
+          data: 'Engine result are inconsitent',
           type: MIME_TYPES.ERROR,
         },
       };
@@ -73,6 +76,7 @@ export default class DataShieldService implements IEngineService {
 
     const title = variable.replace(/\./g, ' ').trim();
     const data = { ...response.data, title };
+
     const chart = transformToHisto.evaluate(data);
 
     return {
@@ -96,7 +100,11 @@ export default class DataShieldService implements IEngineService {
 
     const title = variable.replace(/\./g, ' ').trim();
     const data = { ...response.data, title };
-    return transformToTable.evaluate(data);
+    const table = transformToTable.evaluate(data);
+    return {
+      ...table,
+      theme: ThemeType.NORMAL,
+    };
   }
 
   async createExperiment(
@@ -164,16 +172,16 @@ export default class DataShieldService implements IEngineService {
   }
 
   async getDomains(): Promise<Domain[]> {
-    const path = this.options.baseurl + 'start';
+    const loginPath = this.options.baseurl + 'login';
 
-    const response = await firstValueFrom(
-      this.httpService.get(path, {
+    const loginData = await firstValueFrom(
+      this.httpService.get(loginPath, {
         auth: { username: 'guest', password: 'guest123' },
       }),
     );
 
-    if (response.headers && response.headers['set-cookie']) {
-      const cookies = response.headers['set-cookie'] as string[];
+    const cookies = (loginData.headers['set-cookie'] as string[]) ?? [];
+    if (loginData.headers && loginData.headers['set-cookie']) {
       cookies.forEach((cookie) => {
         const [key, value] = cookie.split(/={1}/);
         this.req.res.cookie(key, value, {
@@ -183,6 +191,16 @@ export default class DataShieldService implements IEngineService {
       });
     }
 
+    const path = this.options.baseurl + 'getvars';
+
+    const response = await firstValueFrom(
+      this.httpService.get(path, {
+        headers: {
+          cookie: cookies.join(';'),
+        },
+      }),
+    );
+
     return [transformToDomains.evaluate(response.data)];
   }
 
diff --git a/api/src/engine/connectors/datashield/tests/histograms.spec.ts b/api/src/engine/connectors/datashield/tests/histograms.spec.ts
new file mode 100644
index 0000000..32761b5
--- /dev/null
+++ b/api/src/engine/connectors/datashield/tests/histograms.spec.ts
@@ -0,0 +1,25 @@
+// query /histogram?var=Alanine.aminotransferase..Enzymatic.activity.volume..in.Serum.or.Plasma&type=combine
+
+export {};
+
+const data = {
+  global: {
+    breaks: [
+      1.9766, 15.083, 28.1893, 41.2957, 54.4021, 67.5085, 80.6149, 93.7212,
+      106.8276, 119.934, 133.0404,
+    ],
+    counts: [69, 388, 74, 17, 10, 0, 0, 0, 0, 0],
+    density: [0.0093, 0.0526, 0.0104, 0.0023, 0.0014, 0, 0, 0, 0, 0],
+    mids: [
+      8.5298, 21.6361, 34.7425, 47.8489, 60.9553, 74.0617, 87.168, 100.2744,
+      113.3808, 126.4872,
+    ],
+    xname: 'xvect',
+    equidist: true,
+    intensities: [0.0093, 0.0526, 0.0104, 0.0023, 0.0014, 0, 0, 0, 0, 0],
+  },
+};
+
+describe('Histograms', () => {
+  test.todo('TODO');
+});
diff --git a/api/src/engine/connectors/datashield/tests/quantiles.spec.ts b/api/src/engine/connectors/datashield/tests/quantiles.spec.ts
new file mode 100644
index 0000000..b2e3eea
--- /dev/null
+++ b/api/src/engine/connectors/datashield/tests/quantiles.spec.ts
@@ -0,0 +1,41 @@
+// query : quantiles?var=Alanine.aminotransferase..Enzymatic.activity.volume..in.Serum.or.Plasma&type=split
+
+export {};
+
+const data = {
+  'omop_test.db': {
+    '5%': 14.175,
+    '10%': 16,
+    '25%': 17.3,
+    '50%': 20.8,
+    '75%': 23.85,
+    '90%': 36.75,
+    '95%': 42.775,
+    Mean: 22.5667,
+  },
+  'test.db': {
+    '5%': 14.305,
+    '10%': 14.9,
+    '25%': 16.7,
+    '50%': 21.05,
+    '75%': 24.15,
+    '90%': 35.4,
+    '95%': 40.76,
+    Mean: 22.9203,
+  },
+  'sophia.db': {
+    '5%': 17.05,
+    '10%': 20.5,
+    '25%': 21,
+    '50%': 22.4,
+    '75%': 24.775,
+    '90%': 36.37,
+    '95%': 43.79,
+    Mean: 25.5347,
+  },
+  title: 'test',
+};
+
+describe('Quantiles', () => {
+  test.todo('TODO');
+});
diff --git a/api/src/engine/connectors/datashield/transformations.ts b/api/src/engine/connectors/datashield/transformations.ts
index 2f31ab2..0a664d3 100644
--- a/api/src/engine/connectors/datashield/transformations.ts
+++ b/api/src/engine/connectors/datashield/transformations.ts
@@ -31,83 +31,50 @@ export const transformToDomains = jsonata(`
 
 export const transformToHisto = jsonata(`
 (
-    $nbBreaks := $count(breaks);
+  $nbBreaks := $count(global.breaks);
+  $params := ["counts"];
 
-    {
-    "chart": {
-      "type": 'column'
-    },
-    "legend": {
-      "enabled": false
-    },
-    "series": [
-      {
-        "data": counts,
-        "dataLabels": {
-          "enabled": true
-        }
-      }
-    ],
-    "title": {
-      "text": title ? title : ''
-    },
-    "tooltip": {
-      "enabled": true
-    },
-    "xAxis": {
-      "categories": breaks#$i[$i < $nbBreaks-1].[$ & ' - ' & %.*[$i+1]]
-    },
-    "yAxis": {
-      "min": 0,
-      "minRange": 0.1,
-      "allowDecimals": true
-    }
+  {
+  "chart": {
+    "type": 'column'
+  },
+  "legend": {
+    "enabled": false
+  },
+  "series": global.$each(function ($v, $k) {
+      $k in $params ? {
+          "name": $k,
+          "data": $v 
+      } : undefined
+  })[],
+  "title": {
+    "text": title ? title : ''
+  },
+  "tooltip": {
+    "enabled": true
+  },
+  "xAxis": {
+    "categories": global.breaks#$i[$i < $nbBreaks-1].[$ & ' - ' & %.*[$i+1]]
+  },
+  "yAxis": {
+    "min": 0,
+    "minRange": 0.1,
+    "allowDecimals": true
+  }
 })
   `);
 
 export const transformToTable = jsonata(`
-{
-    "name": "Descriptive Statistics",
-    "headers": $append(title, ['5%','10%','25%','50%','75%','90%','95%','Mean']).{
-        "name": $,
-        "type": "string"
-    },
-    "data": $.message.$each(function($v, $k) {
-           $append($k,$v)
-        })
-}
-`);
-
-/*export const transformToTable = jsonata(`
-(
-    $params := ["xname", "equidist", "breaks"];
-    $concat := function($i, $j) {
-        $append($i, $j)
-    };
-
-    {
-        "name": "test",
-        "headers": $append('', $.*[0].breaks).{
-            "name": $,
-            "type": "string"
-        },
-        "data": $.$each(function($v, $k) {
-           [[$k],$v.$each(function($v, $k) {$not($k in $params) ? $append($k, $v) : undefined})]
-        }) ~> $reduce($concat, [])
-    }
-)
-`);*/
-
-/* export const transformToTable = jsonata(`
 (
-    $params := ["xname", "equidist", "breaks"];
-
-    $.$each(function($v, $k) {
-        {
-            "name": $k,
-            "headers": $v.breaks,
-            "data": $v.$each(function($v, $k) {$not($k in $params) ? $append($k, $v) : undefined})
-        }
-    })
-)
-`); */
+  $params := ["title"];
+  {
+  "name": "Descriptive Statistics",
+  "headers": $append(title, ['5%','10%','25%','50%','75%','90%','95%','Mean']).{
+      "name": $,
+      "type": "string"
+  },
+  "data": $.$each(function($v, $k) {
+         $not($k in $params) ? $append($k,$v.*) : undefined
+      })
+})
+`);
diff --git a/api/src/engine/models/result/table-result.model.ts b/api/src/engine/models/result/table-result.model.ts
index 002d59c..664d64c 100644
--- a/api/src/engine/models/result/table-result.model.ts
+++ b/api/src/engine/models/result/table-result.model.ts
@@ -1,7 +1,16 @@
-import { Field, ObjectType } from '@nestjs/graphql';
+import { Field, ObjectType, registerEnumType } from '@nestjs/graphql';
 import { Header } from './common/header.model';
 import { Result } from './common/result.model';
 
+export enum ThemeType {
+  DEFAULT,
+  NORMAL,
+}
+
+registerEnumType(ThemeType, {
+  name: 'ThemeType',
+});
+
 @ObjectType()
 export class TableResult extends Result {
   @Field()
@@ -12,4 +21,7 @@ export class TableResult extends Result {
 
   @Field(() => [Header])
   headers: Header[];
+
+  @Field(() => ThemeType, { defaultValue: ThemeType.DEFAULT })
+  theme?: ThemeType;
 }
diff --git a/api/src/schema.gql b/api/src/schema.gql
index b8935c5..9fb8aad 100644
--- a/api/src/schema.gql
+++ b/api/src/schema.gql
@@ -82,6 +82,12 @@ type TableResult {
   name: String!
   data: [[String!]!]!
   headers: [Header!]!
+  theme: ThemeType!
+}
+
+enum ThemeType {
+  DEFAULT
+  NORMAL
 }
 
 type RawResult {
-- 
GitLab