From 2659b0e9d7e8a0fe98065cfacc09703797eb3a6a Mon Sep 17 00:00:00 2001 From: aspedrosa Date: Wed, 7 Oct 2020 19:41:37 +0100 Subject: [PATCH 1/8] add initial changes --- docker/docker-compose.yml | 6 + docker/superset/data/dashboards.json | 6262 ++++++++++++++++++++++++ docker/superset/data/datasources.yaml | 7 + docker/superset/docker-init-example.sh | 13 +- 4 files changed, 6287 insertions(+), 1 deletion(-) create mode 100644 docker/superset/data/dashboards.json create mode 100644 docker/superset/data/datasources.yaml diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index b4cdb679..182afc6a 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -8,6 +8,7 @@ x-superset-depends-on: &superset-depends-on x-superset-volumes: &superset-volumes - ./superset/docker-init.sh:/app/docker-init.sh - ./superset/superset_config_overrides.py:/app/pythonpath/superset_config_docker.py + - ./superset/data:/app/data - superset_home:/app/superset_home x-superset-environment: &superset-environment DATABASE_DIALECT: postgresql @@ -16,6 +17,11 @@ x-superset-environment: &superset-environment DATABASE_USER: ${POSTGRES_SUPERSET_USER} DATABASE_PASSWORD: ${POSTGRES_SUPERSET_PASSWORD} DATABASE_DB: ${POSTGRES_SUPERSET_DB} + ACHILLES_DATABASE_HOST: postgres + ACHILLES_DATABASE_PORT: 5432 + ACHILLES_DATABASE_USER: ${POSTGRES_ACHILLES_USER} + ACHILLES_DATABASE_PASSWORD: ${POSTGRES_ACHILLES_PASSWORD} + ACHILLES_DATABASE_DB: ${POSTGRES_ACHILLES_DB} REDIS_HOST: redis REDIS_PORT: 6379 REDIS_CACHE_DB: 3 diff --git a/docker/superset/data/dashboards.json b/docker/superset/data/dashboards.json new file mode 100644 index 00000000..f4b40057 --- /dev/null +++ b/docker/superset/data/dashboards.json @@ -0,0 +1,6262 @@ +{ + "dashboards": [ + { + "__Dashboard__": { + "css": ".button-container {\r\n display: none !important;\r\n}\r\n.favstar {\r\n display: none !important;\r\n}\r\n.dashboard-filter-indicators-container {\r\n display: none;\r\n}\r\n.grid-content > .dragdroppable.dragdroppable-row > .with-popover-menu {\r\n display: none;\r\n}\r\n#TABS-nlIU6H5mcT-pane-1 g.x.axis > g.tick text { /* WARNING panel 1 id hardcoded */\r\n display: none;\r\n}\r\n#TABS-nlIU6H5mcT-pane-2 g.nv-x.nv-axis.nvd3-svg > g.nvd3.nv-wrap.nv-axis > g > g.tick.zero > text { /* WARNING panel 2 id hardcoded */\r\n display: none;\r\n}", + "dashboard_title": "Database-Level Dashboard", + "description": null, + "json_metadata": "{\"timed_refresh_immune_slices\": [], \"filter_scopes\": {\"69\": {\"acronym\": {\"scope\": [\"ROOT_ID\"], \"immune\": []}}}, \"label_colors\": {\"FEMALE\": \"#FF3399\", \"MALE\": \"#3366FF\"}, \"expanded_slices\": {}, \"refresh_frequency\": 0, \"default_filters\": \"{\\\"69\\\": {\\\"acronym\\\": \\\"IPCI\\\"}}\", \"remote_id\": 19}", + "position_json": "{\"CHART--U7FhhFU0n\":{\"children\":[],\"id\":\"CHART--U7FhhFU0n\",\"meta\":{\"chartId\":68,\"height\":68,\"sliceName\":\"Total number of records\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-lo9-e021A\",\"ROW-c7LNEIpMK\"],\"type\":\"CHART\"},\"CHART-BnOwzcVjwq\":{\"children\":[],\"id\":\"CHART-BnOwzcVjwq\",\"meta\":{\"chartId\":95,\"height\":47,\"sliceName\":\"Number of Patients in Observation Period\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-PUkaLdBdU\",\"ROW-yxon6vmxv\"],\"type\":\"CHART\"},\"CHART-DC2GMfvdJN\":{\"children\":[],\"id\":\"CHART-DC2GMfvdJN\",\"meta\":{\"chartId\":84,\"height\":17,\"sliceName\":\"Gender\",\"width\":4},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-1Fl6StuBx5\",\"ROW-17jdq6K8l\"],\"type\":\"CHART\"},\"CHART-DPUB9ta2gT\":{\"children\":[],\"id\":\"CHART-DPUB9ta2gT\",\"meta\":{\"chartId\":34,\"height\":52,\"sliceName\":\"Device Types\",\"width\":4},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-aLyXzEdoc\",\"ROW-zqFHsyZls\"],\"type\":\"CHART\"},\"CHART-Drfuexmy0I\":{\"children\":[],\"id\":\"CHART-Drfuexmy0I\",\"meta\":{\"chartId\":62,\"height\":17,\"sliceName\":\"Number of Patients\",\"width\":4},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-1Fl6StuBx5\",\"ROW-17jdq6K8l\"],\"type\":\"CHART\"},\"CHART-Gkt9C4rMun\":{\"children\":[],\"id\":\"CHART-Gkt9C4rMun\",\"meta\":{\"chartId\":29,\"height\":52,\"sliceName\":\"Observation Types\",\"width\":4},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-aLyXzEdoc\",\"ROW-zqFHsyZls\"],\"type\":\"CHART\"},\"CHART-J7QQmZ-Ufp\":{\"children\":[],\"id\":\"CHART-J7QQmZ-Ufp\",\"meta\":{\"chartId\":91,\"height\":17,\"sliceName\":\"Gender\",\"width\":4},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-1Fl6StuBx5\",\"ROW-17jdq6K8l\"],\"type\":\"CHART\"},\"CHART-J8uOhWGKGl\":{\"children\":[],\"id\":\"CHART-J8uOhWGKGl\",\"meta\":{\"chartId\":17,\"height\":68,\"sliceName\":\"Average number of records per person\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-lo9-e021A\",\"ROW-c7LNEIpMK\"],\"type\":\"CHART\"},\"CHART-NMQP-NexNU\":{\"children\":[],\"id\":\"CHART-NMQP-NexNU\",\"meta\":{\"chartId\":94,\"height\":42,\"sliceName\":\"Year of Birth\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-1Fl6StuBx5\",\"ROW-zjktEX0qt\"],\"type\":\"CHART\"},\"CHART-T8A8busKb2\":{\"children\":[],\"id\":\"CHART-T8A8busKb2\",\"meta\":{\"chartId\":93,\"height\":46,\"sliceName\":\"Age at first observation\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-1Fl6StuBx5\",\"ROW-EP-ojvMCp\"],\"type\":\"CHART\"},\"CHART-Tk6wyTFL73\":{\"children\":[],\"id\":\"CHART-Tk6wyTFL73\",\"meta\":{\"chartId\":33,\"height\":52,\"sliceName\":\"Measurement Types\",\"width\":4},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-aLyXzEdoc\",\"ROW-zqFHsyZls\"],\"type\":\"CHART\"},\"CHART-_FXLuSju69\":{\"children\":[],\"id\":\"CHART-_FXLuSju69\",\"meta\":{\"chartId\":32,\"height\":51,\"sliceName\":\"Drug Types\",\"width\":4},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-aLyXzEdoc\",\"ROW-ppWbW9IKl\"],\"type\":\"CHART\"},\"CHART-aArNLqvW80\":{\"children\":[],\"id\":\"CHART-aArNLqvW80\",\"meta\":{\"chartId\":30,\"height\":51,\"sliceName\":\"Condition Types\",\"width\":4},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-aLyXzEdoc\",\"ROW-ppWbW9IKl\"],\"type\":\"CHART\"},\"CHART-b7Yie3s0zr\":{\"children\":[],\"id\":\"CHART-b7Yie3s0zr\",\"meta\":{\"chartId\":96,\"height\":52,\"sliceName\":\"Cumulative Observation Time\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-PUkaLdBdU\",\"ROW-VN1jC3tf_\"],\"type\":\"CHART\"},\"CHART-b8BOyNmBsE\":{\"children\":[],\"id\":\"CHART-b8BOyNmBsE\",\"meta\":{\"chartId\":31,\"height\":51,\"sliceName\":\"Procedure Types\",\"width\":4},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-aLyXzEdoc\",\"ROW-ppWbW9IKl\"],\"type\":\"CHART\"},\"CHART-cts6Aap4Oo\":{\"children\":[],\"id\":\"CHART-cts6Aap4Oo\",\"meta\":{\"chartId\":69,\"height\":14,\"sliceName\":\"Datasource Filter\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-xWfSSQqtYz\"],\"type\":\"CHART\"},\"CHART-npwypfCWV5\":{\"children\":[],\"id\":\"CHART-npwypfCWV5\",\"meta\":{\"chartId\":98,\"height\":37,\"sliceName\":\"Visit Type Table\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-b_lL8cylJ\",\"ROW-sHBcSeEf8\"],\"type\":\"CHART\"},\"CHART-nv4wUtoRwh\":{\"children\":[],\"id\":\"CHART-nv4wUtoRwh\",\"meta\":{\"chartId\":92,\"height\":16,\"sliceName\":\"Age at first observation\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-1Fl6StuBx5\",\"ROW-PiEYv4mHmy\"],\"type\":\"CHART\"},\"CHART-oLeevBrQLv\":{\"children\":[],\"id\":\"CHART-oLeevBrQLv\",\"meta\":{\"chartId\":99,\"height\":76,\"sliceName\":\"Concepts - Concept Browser Table\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-AUb2Iaddv\",\"ROW-Nk_zWwzuF\"],\"type\":\"CHART\"},\"CHART-p6VOi8cYoa\":{\"children\":[],\"id\":\"CHART-p6VOi8cYoa\",\"meta\":{\"chartId\":100,\"height\":14,\"sliceName\":\"Meta Data\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-yq5Qo0uV1Q\",\"ROW-3RUdTYcB7\"],\"type\":\"CHART\"},\"CHART-wgyH1aQqS-\":{\"children\":[],\"id\":\"CHART-wgyH1aQqS-\",\"meta\":{\"chartId\":97,\"height\":65,\"sliceName\":\"Visit Type Graph\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-b_lL8cylJ\",\"ROW-g7iSpN7E8\"],\"type\":\"CHART\"},\"DASHBOARD_VERSION_KEY\":\"v2\",\"DIVIDER-2jMwEzB_SZ\":{\"children\":[],\"id\":\"DIVIDER-2jMwEzB_SZ\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-1Fl6StuBx5\"],\"type\":\"DIVIDER\"},\"DIVIDER-C0V7ZxJS12\":{\"children\":[],\"id\":\"DIVIDER-C0V7ZxJS12\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-lo9-e021A\"],\"type\":\"DIVIDER\"},\"DIVIDER-OZ9jF1UaHB\":{\"children\":[],\"id\":\"DIVIDER-OZ9jF1UaHB\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-1Fl6StuBx5\"],\"type\":\"DIVIDER\"},\"DIVIDER-TYNKtcE8Cj\":{\"children\":[],\"id\":\"DIVIDER-TYNKtcE8Cj\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-1Fl6StuBx5\"],\"type\":\"DIVIDER\"},\"DIVIDER-i00SXDBZes\":{\"children\":[],\"id\":\"DIVIDER-i00SXDBZes\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"DIVIDER\"},\"DIVIDER-s0id6Zl6eI\":{\"children\":[],\"id\":\"DIVIDER-s0id6Zl6eI\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-1Fl6StuBx5\"],\"type\":\"DIVIDER\"},\"GRID_ID\":{\"children\":[\"ROW-xWfSSQqtYz\",\"TABS-nlIU6H5mcT\",\"DIVIDER-i00SXDBZes\",\"HEADER-lJdlq1pvoO\"],\"id\":\"GRID_ID\",\"parents\":[\"ROOT_ID\"],\"type\":\"GRID\"},\"HEADER-lJdlq1pvoO\":{\"children\":[],\"id\":\"HEADER-lJdlq1pvoO\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\",\"headerSize\":\"SMALL_HEADER\",\"text\":\"Disclaimer: The presented data can be used for an initial feasibility assessment but should not be used for research without involvement of the data custodian\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"HEADER\"},\"HEADER_ID\":{\"id\":\"HEADER_ID\",\"meta\":{\"text\":\"Database-Level Dashboard\"},\"type\":\"HEADER\"},\"MARKDOWN-1P6SZh2_DV\":{\"children\":[],\"id\":\"MARKDOWN-1P6SZh2_DV\",\"meta\":{\"code\":\"*The Number of Patients in Observation Period plot shows the number of patients that contribute at least one day in a specific month*\",\"height\":8,\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-PUkaLdBdU\",\"ROW-A1KKTo2rMu\"],\"type\":\"MARKDOWN\"},\"MARKDOWN-6PURPT2U9h\":{\"children\":[],\"id\":\"MARKDOWN-6PURPT2U9h\",\"meta\":{\"code\":\"*The cumulative observation time plot shows the percentage of patients that have more that X days of observation time*\",\"height\":8,\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-PUkaLdBdU\",\"ROW-ad9yKOl0wu\"],\"type\":\"MARKDOWN\"},\"MARKDOWN-a7cz6lCltf\":{\"children\":[],\"id\":\"MARKDOWN-a7cz6lCltf\",\"meta\":{\"code\":\"*The concepts browser allows you to search for concepts by name or concept_id. No exact number of patients or occurrences are provided but the magnitude of both.*\",\"height\":8,\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-AUb2Iaddv\",\"ROW-IuBt5KMm3F\"],\"type\":\"MARKDOWN\"},\"MARKDOWN-lWMdOlrcwh\":{\"children\":[],\"id\":\"MARKDOWN-lWMdOlrcwh\",\"meta\":{\"code\":\"*The Data Provenance bar charts show where the data is originating from.*\",\"height\":8,\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-aLyXzEdoc\",\"ROW-lCkpd-h391\"],\"type\":\"MARKDOWN\"},\"ROOT_ID\":{\"children\":[\"GRID_ID\"],\"id\":\"ROOT_ID\",\"type\":\"ROOT\"},\"ROW-17jdq6K8l\":{\"children\":[\"CHART-Drfuexmy0I\",\"CHART-DC2GMfvdJN\",\"CHART-J7QQmZ-Ufp\"],\"id\":\"ROW-17jdq6K8l\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-1Fl6StuBx5\"],\"type\":\"ROW\"},\"ROW-3RUdTYcB7\":{\"children\":[\"CHART-p6VOi8cYoa\"],\"id\":\"ROW-3RUdTYcB7\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-yq5Qo0uV1Q\"],\"type\":\"ROW\"},\"ROW-A1KKTo2rMu\":{\"children\":[\"MARKDOWN-1P6SZh2_DV\"],\"id\":\"ROW-A1KKTo2rMu\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-PUkaLdBdU\"],\"type\":\"ROW\"},\"ROW-EP-ojvMCp\":{\"children\":[\"CHART-T8A8busKb2\"],\"id\":\"ROW-EP-ojvMCp\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-1Fl6StuBx5\"],\"type\":\"ROW\"},\"ROW-IuBt5KMm3F\":{\"children\":[\"MARKDOWN-a7cz6lCltf\"],\"id\":\"ROW-IuBt5KMm3F\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-AUb2Iaddv\"],\"type\":\"ROW\"},\"ROW-Nk_zWwzuF\":{\"children\":[\"CHART-oLeevBrQLv\"],\"id\":\"ROW-Nk_zWwzuF\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-AUb2Iaddv\"],\"type\":\"ROW\"},\"ROW-PiEYv4mHmy\":{\"children\":[\"CHART-nv4wUtoRwh\"],\"id\":\"ROW-PiEYv4mHmy\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-1Fl6StuBx5\"],\"type\":\"ROW\"},\"ROW-VN1jC3tf_\":{\"children\":[\"CHART-b7Yie3s0zr\"],\"id\":\"ROW-VN1jC3tf_\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-PUkaLdBdU\"],\"type\":\"ROW\"},\"ROW-ad9yKOl0wu\":{\"children\":[\"MARKDOWN-6PURPT2U9h\"],\"id\":\"ROW-ad9yKOl0wu\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-PUkaLdBdU\"],\"type\":\"ROW\"},\"ROW-c7LNEIpMK\":{\"children\":[\"CHART-J8uOhWGKGl\",\"CHART--U7FhhFU0n\"],\"id\":\"ROW-c7LNEIpMK\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-lo9-e021A\"],\"type\":\"ROW\"},\"ROW-g7iSpN7E8\":{\"children\":[\"CHART-wgyH1aQqS-\"],\"id\":\"ROW-g7iSpN7E8\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-b_lL8cylJ\"],\"type\":\"ROW\"},\"ROW-lCkpd-h391\":{\"children\":[\"MARKDOWN-lWMdOlrcwh\"],\"id\":\"ROW-lCkpd-h391\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-aLyXzEdoc\"],\"type\":\"ROW\"},\"ROW-ppWbW9IKl\":{\"children\":[\"CHART-_FXLuSju69\",\"CHART-aArNLqvW80\",\"CHART-b8BOyNmBsE\"],\"id\":\"ROW-ppWbW9IKl\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-aLyXzEdoc\"],\"type\":\"ROW\"},\"ROW-sHBcSeEf8\":{\"children\":[\"CHART-npwypfCWV5\"],\"id\":\"ROW-sHBcSeEf8\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-b_lL8cylJ\"],\"type\":\"ROW\"},\"ROW-xWfSSQqtYz\":{\"children\":[\"CHART-cts6Aap4Oo\"],\"id\":\"ROW-xWfSSQqtYz\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-yxon6vmxv\":{\"children\":[\"CHART-BnOwzcVjwq\"],\"id\":\"ROW-yxon6vmxv\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-PUkaLdBdU\"],\"type\":\"ROW\"},\"ROW-zjktEX0qt\":{\"children\":[\"CHART-NMQP-NexNU\"],\"id\":\"ROW-zjktEX0qt\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-1Fl6StuBx5\"],\"type\":\"ROW\"},\"ROW-zqFHsyZls\":{\"children\":[\"CHART-DPUB9ta2gT\",\"CHART-Gkt9C4rMun\",\"CHART-Tk6wyTFL73\"],\"id\":\"ROW-zqFHsyZls\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\",\"TAB-aLyXzEdoc\"],\"type\":\"ROW\"},\"TAB-1Fl6StuBx5\":{\"children\":[\"DIVIDER-2jMwEzB_SZ\",\"ROW-17jdq6K8l\",\"DIVIDER-OZ9jF1UaHB\",\"ROW-PiEYv4mHmy\",\"DIVIDER-s0id6Zl6eI\",\"ROW-EP-ojvMCp\",\"DIVIDER-TYNKtcE8Cj\",\"ROW-zjktEX0qt\"],\"id\":\"TAB-1Fl6StuBx5\",\"meta\":{\"text\":\"Demographics\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\"],\"type\":\"TAB\"},\"TAB-AUb2Iaddv\":{\"children\":[\"ROW-IuBt5KMm3F\",\"ROW-Nk_zWwzuF\"],\"id\":\"TAB-AUb2Iaddv\",\"meta\":{\"text\":\"Concept Browser\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\"],\"type\":\"TAB\"},\"TAB-PUkaLdBdU\":{\"children\":[\"ROW-A1KKTo2rMu\",\"ROW-yxon6vmxv\",\"ROW-ad9yKOl0wu\",\"ROW-VN1jC3tf_\"],\"id\":\"TAB-PUkaLdBdU\",\"meta\":{\"text\":\"Observation Period\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\"],\"type\":\"TAB\"},\"TAB-aLyXzEdoc\":{\"children\":[\"ROW-lCkpd-h391\",\"ROW-ppWbW9IKl\",\"ROW-zqFHsyZls\"],\"id\":\"TAB-aLyXzEdoc\",\"meta\":{\"text\":\"Data Provenance\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\"],\"type\":\"TAB\"},\"TAB-b_lL8cylJ\":{\"children\":[\"ROW-g7iSpN7E8\",\"ROW-sHBcSeEf8\"],\"id\":\"TAB-b_lL8cylJ\",\"meta\":{\"text\":\"Visit\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\"],\"type\":\"TAB\"},\"TAB-lo9-e021A\":{\"children\":[\"DIVIDER-C0V7ZxJS12\",\"ROW-c7LNEIpMK\"],\"id\":\"TAB-lo9-e021A\",\"meta\":{\"text\":\"Data Domains\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\"],\"type\":\"TAB\"},\"TAB-yq5Qo0uV1Q\":{\"children\":[\"ROW-3RUdTYcB7\"],\"id\":\"TAB-yq5Qo0uV1Q\",\"meta\":{\"text\":\"Meta Data\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-nlIU6H5mcT\"],\"type\":\"TAB\"},\"TABS-nlIU6H5mcT\":{\"children\":[\"TAB-1Fl6StuBx5\",\"TAB-lo9-e021A\",\"TAB-aLyXzEdoc\",\"TAB-PUkaLdBdU\",\"TAB-b_lL8cylJ\",\"TAB-AUb2Iaddv\",\"TAB-yq5Qo0uV1Q\"],\"id\":\"TABS-nlIU6H5mcT\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"TABS\"}}", + "slices": [ + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "null.Peter Rijnbeek-Untitled Query 2--E1zjg5sW", + "datasource_type": "table", + "id": 91, + "params": "{\"adhoc_filters\": [], \"color_scheme\": \"supersetColors\", \"datasource\": \"86__table\", \"groupby\": [\"gender\"], \"label_colors\": {}, \"labels_outside\": true, \"metric\": {\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"count_value\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 413, \"is_dttm\": false, \"optionName\": \"_col_count_value\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"hasCustomLabel\": false, \"isNew\": false, \"label\": \"SUM(count_value)\", \"optionName\": \"metric_4yhwa29vtbe_i5wwa79ih78\", \"sqlExpression\": null}, \"number_format\": \"SMART_NUMBER\", \"pie_label_type\": \"key\", \"queryFields\": {\"groupby\": \"groupby\", \"metric\": \"metrics\"}, \"row_limit\": null, \"show_labels\": true, \"show_legend\": false, \"slice_id\": 91, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"pie\", \"remote_id\": 91, \"datasource_name\": \"Peter Rijnbeek-Untitled Query 2--E1zjg5sW\", \"schema\": \"null\", \"database_name\": \"Achilles\"}", + "slice_name": "Gender", + "viz_type": "pie" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.data_source", + "datasource_type": "table", + "id": 69, + "params": "{\"adhoc_filters\": [], \"datasource\": \"60__table\", \"date_filter\": false, \"filter_configs\": [{\"asc\": true, \"clearable\": false, \"column\": \"acronym\", \"key\": \"TnqEIVXFw\", \"label\": \"Datasource\", \"multiple\": false, \"searchAllOptions\": false}], \"granularity_sqla\": \"release_date\", \"instant_filtering\": true, \"queryFields\": {}, \"show_druid_time_granularity\": false, \"show_druid_time_origin\": false, \"show_sqla_time_column\": false, \"show_sqla_time_granularity\": false, \"slice_id\": 69, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"filter_box\", \"remote_id\": 69, \"datasource_name\": \"data_source\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Datasource Filter", + "viz_type": "filter_box" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Landing Page - Number of Patients query", + "datasource_type": "table", + "id": 62, + "params": "{\"adhoc_filters\": [], \"datasource\": \"54__table\", \"granularity_sqla\": null, \"header_font_size\": 0.3, \"metric\": {\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"count_value\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 277, \"is_dttm\": false, \"optionName\": \"_col_count_value\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": false, \"hasCustomLabel\": false, \"label\": \"SUM(count_value)\", \"optionName\": \"metric_g9sohftdn1_s9whttkxz1l\", \"sqlExpression\": null}, \"queryFields\": {\"metric\": \"metrics\"}, \"slice_id\": 62, \"subheader_font_size\": 0.125, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"big_number_total\", \"y_axis_format\": \"SMART_NUMBER\", \"remote_id\": 62, \"datasource_name\": \"Landing Page - Number of Patients query\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Number of Patients", + "viz_type": "big_number_total" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "null.Peter Rijnbeek-Untitled Query 2--E1zjg5sW", + "datasource_type": "table", + "id": 84, + "params": "{\"adhoc_filters\": [], \"all_columns\": [\"gender\", \"count_value\"], \"color_pn\": false, \"datasource\": \"86__table\", \"groupby\": [], \"metrics\": [], \"order_by_cols\": null, \"order_desc\": true, \"percent_metrics\": [], \"queryFields\": {\"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"row_limit\": 1000, \"show_cell_bars\": false, \"slice_id\": 84, \"table_timestamp_format\": \"smart_date\", \"time_grain_sqla\": \"P1D\", \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"table\", \"remote_id\": 84, \"datasource_name\": \"Peter Rijnbeek-Untitled Query 2--E1zjg5sW\", \"schema\": \"null\", \"database_name\": \"Achilles\"}", + "slice_name": "Gender", + "viz_type": "table" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "null.Peter Rijnbeek-Age group at start of first observation-smvSJk6Hw", + "datasource_type": "table", + "id": 92, + "params": "{\"adhoc_filters\": [], \"all_columns\": [\"age10\", \"age20\", \"age30\", \"age40\", \"age50\", \"age60\", \"age70\", \"age80\", \"age90\", \"age90p\"], \"color_pn\": true, \"datasource\": \"85__table\", \"groupby\": [], \"metrics\": [], \"order_by_cols\": [], \"order_desc\": true, \"percent_metrics\": [], \"queryFields\": {\"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"query_mode\": \"raw\", \"row_limit\": 1000, \"show_cell_bars\": false, \"table_timestamp_format\": \"smart_date\", \"time_grain_sqla\": \"P1D\", \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"table\", \"remote_id\": 92, \"datasource_name\": \"Peter Rijnbeek-Age group at start of first observation-smvSJk6Hw\", \"schema\": \"null\", \"database_name\": \"Achilles\"}", + "slice_name": "Age at first observation", + "viz_type": "table" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Untitled Query 2-hW_lXt3eU", + "datasource_type": "table", + "id": 93, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"name\"], \"contribution\": false, \"datasource\": \"10__table\", \"granularity_sqla\": null, \"groupby\": [\"age\"], \"label_colors\": {\"Demo University of Aveiro\": \"#454E7C\", \"FEMALE\": \"#5AC189\", \"Integrated Primary Care Information\": \"#1FA8C9\", \"MALE\": \"#FF7F44\"}, \"metrics\": [{\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"count\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 52, \"is_dttm\": false, \"optionName\": \"_col_count\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": false, \"hasCustomLabel\": false, \"label\": \"MAX(count)\", \"optionName\": \"metric_dsbny4uupqu_xitbpo2zwoi\", \"sqlExpression\": null}], \"order_bars\": true, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": true, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": false, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Age\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Count\", \"remote_id\": 93, \"datasource_name\": \"Untitled Query 2-hW_lXt3eU\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Age at first observation", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Untitled Query 3-OTisQhOu9", + "datasource_type": "table", + "id": 94, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"name\"], \"contribution\": false, \"datasource\": \"11__table\", \"granularity_sqla\": \"Birth_year\", \"groupby\": [\"Birth_year\"], \"label_colors\": {\"Demo University of Aveiro\": \"#454E7C\", \"FEMALE\": \"#5AC189\", \"Integrated Primary Care Information\": \"#1FA8C9\", \"MALE\": \"#FF7F44\"}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"count\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 56, \"is_dttm\": false, \"optionName\": \"_col_count\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": false, \"hasCustomLabel\": false, \"label\": \"SUM(count)\", \"optionName\": \"metric_cpx4knmvyq_7kbv0oube0f\", \"sqlExpression\": null}], \"order_bars\": true, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": true, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": true, \"show_legend\": false, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Year\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Count\", \"remote_id\": 94, \"datasource_name\": \"Untitled Query 3-OTisQhOu9\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Year of Birth", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Landing Page - Data Domains", + "datasource_type": "table", + "id": 68, + "params": "{\"adhoc_filters\": [], \"color_scheme\": \"bnbColors\", \"datasource\": \"67__table\", \"donut\": false, \"granularity_sqla\": null, \"groupby\": [\"data_domain\"], \"label_colors\": {}, \"labels_outside\": true, \"metric\": {\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"count\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 307, \"is_dttm\": false, \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": false, \"label\": \"MAX(count)\", \"optionName\": \"metric_fgt92lxki3d_v12pvew79ei\", \"sqlExpression\": null}, \"number_format\": \"SMART_NUMBER\", \"pie_label_type\": \"key\", \"queryFields\": {\"groupby\": \"groupby\", \"metric\": \"metrics\"}, \"row_limit\": 1000, \"show_labels\": true, \"show_legend\": true, \"slice_id\": 68, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"pie\", \"remote_id\": 68, \"datasource_name\": \"Landing Page - Data Domains\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Total number of records", + "viz_type": "pie" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Untitled Query 2-QPQHc1uh6", + "datasource_type": "table", + "id": 17, + "params": "{\"adhoc_filters\": [], \"all_columns_x\": \"name\", \"all_columns_y\": \"data_domain\", \"bottom_margin\": \"auto\", \"canvas_image_rendering\": \"pixelated\", \"datasource\": \"14__table\", \"granularity_sqla\": null, \"left_margin\": \"auto\", \"linear_color_scheme\": \"greens\", \"metric\": {\"aggregate\": \"AVG\", \"column\": {\"column_name\": \"records_per_person\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 68, \"is_dttm\": false, \"optionName\": \"_col_records_per_person\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"hasCustomLabel\": true, \"isNew\": false, \"label\": \"avg records per person\", \"optionName\": \"metric_zx7vov5aux_cmnw1nknahk\", \"sqlExpression\": null}, \"normalize_across\": \"heatmap\", \"normalized\": false, \"queryFields\": {\"metric\": \"metrics\"}, \"row_limit\": null, \"show_legend\": true, \"show_perc\": true, \"show_values\": false, \"slice_id\": 17, \"sort_x_axis\": \"alpha_asc\", \"sort_y_axis\": \"alpha_asc\", \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"heatmap\", \"xscale_interval\": null, \"y_axis_bounds\": [null, null], \"y_axis_format\": \"SMART_NUMBER\", \"yscale_interval\": null, \"remote_id\": 17, \"datasource_name\": \"Untitled Query 2-QPQHc1uh6\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Average number of records per person", + "viz_type": "heatmap" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 32, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Drug\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"d3Category20c\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 32, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 32, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Drug Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 30, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Condition\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"d3Category20c\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 30, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 30, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Condition Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 34, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Device\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 34, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 34, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Device Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 31, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Procedure\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"d3Category20b\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 31, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 31, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Procedure Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 29, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Observation\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {\"Observation recorded from EHR\": \"#8ce071\", \"Problem list from EHR\": \"#ffb400\", \"Syn1k-UK\": \"#ff5a5f\", \"Syn5k-NL\": \"#7b0051\", \"Syn5k-PT\": \"#007A87\", \"Syn5k-SP\": \"#00d1c1\", \"Test ordered through EHR\": \"#b4a76c\"}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 29, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 29, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Observation Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 33, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Measurement\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 33, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 33, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Measurement Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Patients in Observation Period per month Query", + "datasource_type": "table", + "id": 95, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"name\"], \"contribution\": false, \"datasource\": \"25__table\", \"granularity_sqla\": \"date\", \"groupby\": [\"date\"], \"label_colors\": {\"Demo University of Aveiro\": \"#454E7C\", \"FEMALE\": \"#5AC189\", \"Integrated Primary Care Information\": \"#1FA8C9\", \"MALE\": \"#FF7F44\"}, \"metrics\": [{\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"Nr_patients\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 138, \"is_dttm\": false, \"optionName\": \"_col_Nr_patients\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Num of Patients\", \"optionName\": \"metric_3p61x9ncona_q3o5fcc0v6q\", \"sqlExpression\": null}], \"order_bars\": true, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": true, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": false, \"slice_id\": 95, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Date\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Number of Patients\", \"remote_id\": 95, \"datasource_name\": \"Patients in Observation Period per month Query\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Number of Patients in Observation Period", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Cumulative Observation Period 2-L74hsau_K", + "datasource_type": "table", + "id": 96, + "params": "{\"adhoc_filters\": [], \"bottom_margin\": \"auto\", \"color_scheme\": \"supersetColors\", \"columns\": [\"name\"], \"datasource\": \"96__table\", \"groupby\": [\"xlengthofobservation\"], \"label_colors\": {\"Demo University of Aveiro\": \"#454E7C\", \"FEMALE\": \"#5AC189\", \"Integrated Primary Care Information\": \"#1FA8C9\", \"MALE\": \"#FF7F44\"}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"ypercentpersons\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 452, \"is_dttm\": false, \"optionName\": \"_col_ypercentpersons\", \"python_date_format\": null, \"type\": null, \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"hasCustomLabel\": false, \"isNew\": false, \"label\": \"SUM(ypercentpersons)\", \"optionName\": \"metric_cq74wvz3wga_ry4rmcxu0ip\", \"sqlExpression\": null}], \"order_bars\": true, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"row_limit\": 1000, \"show_legend\": false, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Days\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \",.1%\", \"remote_id\": 96, \"datasource_name\": \"Cumulative Observation Period 2-L74hsau_K\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Cumulative Observation Time", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Peter Rijnbeek-Visit Type Table v2-DhXfzMl9M", + "datasource_type": "table", + "id": 97, + "params": "{\"adhoc_filters\": [], \"bottom_margin\": \"auto\", \"color_scheme\": \"supersetColors\", \"columns\": [\"name\"], \"datasource\": \"99__table\", \"groupby\": [\"concept_name\"], \"label_colors\": {\"Demo University of Aveiro\": \"#454E7C\", \"FEMALE\": \"#5AC189\", \"Integrated Primary Care Information\": \"#1FA8C9\", \"MALE\": \"#FF7F44\"}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_persons\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 465, \"is_dttm\": false, \"optionName\": \"_col_num_persons\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"hasCustomLabel\": false, \"isNew\": false, \"label\": \"SUM(num_persons)\", \"optionName\": \"metric_kcrkrhrxkrl_nprl8ttp6tr\", \"sqlExpression\": null}], \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"row_limit\": 1000, \"show_legend\": false, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"dist_bar\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"remote_id\": 97, \"datasource_name\": \"Peter Rijnbeek-Visit Type Table v2-DhXfzMl9M\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Visit Type Graph", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Peter Rijnbeek-Visit Type Table v2-zZU86Qvwj", + "datasource_type": "table", + "id": 98, + "params": "{\"adhoc_filters\": [], \"all_columns\": [\"concept_name\", \"num_persons\", \"percent_persons\", \"records_per_person\"], \"color_pn\": true, \"datasource\": \"98__table\", \"groupby\": [], \"metrics\": [], \"order_by_cols\": [], \"order_desc\": true, \"percent_metrics\": [], \"queryFields\": {\"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"query_mode\": \"raw\", \"row_limit\": 1000, \"show_cell_bars\": false, \"table_timestamp_format\": \"smart_date\", \"time_grain_sqla\": \"P1D\", \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"table\", \"remote_id\": 98, \"datasource_name\": \"Peter Rijnbeek-Visit Type Table v2-zZU86Qvwj\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Visit Type Table", + "viz_type": "table" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 5-3i9mLe1yw", + "datasource_type": "table", + "id": 99, + "params": "{\"adhoc_filters\": [], \"align_pn\": false, \"all_columns\": [\"concept_id\", \"concept_name\", \"domain_id\", \"magnitude_persons\", \"magnitude_occurrences\"], \"color_pn\": true, \"datasource\": \"19__table\", \"granularity_sqla\": null, \"groupby\": [], \"include_search\": true, \"include_time\": false, \"metrics\": [], \"order_by_cols\": [], \"order_desc\": false, \"page_length\": 50, \"percent_metrics\": [], \"queryFields\": {\"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"query_mode\": \"raw\", \"row_limit\": null, \"show_cell_bars\": true, \"slice_id\": 99, \"table_filter\": true, \"table_timestamp_format\": \"%Y-%m-%d %H:%M:%S\", \"time_grain_sqla\": null, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"timeseries_limit_metric\": null, \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"table\", \"remote_id\": 99, \"datasource_name\": \"admin user-Untitled Query 5-3i9mLe1yw\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Concepts - Concept Browser Table", + "viz_type": "table" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "null.Peter Rijnbeek-Untitled Query 2-jCYlfS520", + "datasource_type": "table", + "id": 100, + "params": "{\"adhoc_filters\": [], \"all_columns\": [\"source_release_date\", \"cdm_release_date\", \"cdm_version\", \"vocabulary_version\"], \"color_pn\": true, \"datasource\": \"83__table\", \"groupby\": [], \"metrics\": [], \"order_by_cols\": [], \"order_desc\": true, \"percent_metrics\": [], \"queryFields\": {\"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"query_mode\": \"raw\", \"row_limit\": 1000, \"show_cell_bars\": true, \"table_timestamp_format\": \"smart_date\", \"time_grain_sqla\": \"P1D\", \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"table\", \"remote_id\": 100, \"datasource_name\": \"Peter Rijnbeek-Untitled Query 2-jCYlfS520\", \"schema\": \"null\", \"database_name\": \"Achilles\"}", + "slice_name": "Meta Data", + "viz_type": "table" + } + } + ], + "slug": "database-level-dashboard" + } + }, + { + "__Dashboard__": { + "css": null, + "dashboard_title": "Death", + "description": null, + "json_metadata": "{\"default_filters\": \"{}\", \"expanded_slices\": {}, \"filter_scopes\": {\"13\": {\"name\": {\"immune\": [], \"scope\": [\"ROOT_ID\"]}}}, \"refresh_frequency\": 0, \"timed_refresh_immune_slices\": [], \"remote_id\": 7}", + "position_json": "{\"CHART-BG6nv7w17X\":{\"children\":[],\"id\":\"CHART-BG6nv7w17X\",\"meta\":{\"chartId\":11,\"height\":61,\"sliceName\":\"Death - by month per thousand people\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-8BVvYxXdcV\"],\"type\":\"CHART\"},\"CHART-QO8ESAwbvV\":{\"children\":[],\"id\":\"CHART-QO8ESAwbvV\",\"meta\":{\"chartId\":12,\"height\":67,\"sliceName\":\"Death - number of records\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-rmVDxP5RH4\"],\"type\":\"CHART\"},\"CHART-fzSY6kQI66\":{\"children\":[],\"id\":\"CHART-fzSY6kQI66\",\"meta\":{\"chartId\":13,\"height\":17,\"sliceName\":\"Data Source Filter\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-9bJYyN5kJ7\"],\"type\":\"CHART\"},\"DASHBOARD_VERSION_KEY\":\"v2\",\"GRID_ID\":{\"children\":[\"ROW-9bJYyN5kJ7\",\"ROW-rmVDxP5RH4\",\"ROW-8BVvYxXdcV\"],\"id\":\"GRID_ID\",\"parents\":[\"ROOT_ID\"],\"type\":\"GRID\"},\"HEADER_ID\":{\"id\":\"HEADER_ID\",\"meta\":{\"text\":\"Death\"},\"type\":\"HEADER\"},\"ROOT_ID\":{\"children\":[\"GRID_ID\"],\"id\":\"ROOT_ID\",\"type\":\"ROOT\"},\"ROW-8BVvYxXdcV\":{\"children\":[\"CHART-BG6nv7w17X\"],\"id\":\"ROW-8BVvYxXdcV\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-9bJYyN5kJ7\":{\"children\":[\"CHART-fzSY6kQI66\"],\"id\":\"ROW-9bJYyN5kJ7\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-rmVDxP5RH4\":{\"children\":[\"CHART-QO8ESAwbvV\"],\"id\":\"ROW-rmVDxP5RH4\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"}}", + "slices": [ + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 2-2r83mvJTx", + "datasource_type": "table", + "id": 11, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"name\"], \"contribution\": false, \"datasource\": \"7__table\", \"granularity_sqla\": \"date\", \"groupby\": [\"date\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"count\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 43, \"is_dttm\": false, \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Count\", \"optionName\": \"metric_coqa2w94pe_sbgpc5c9aio\", \"sqlExpression\": null}], \"order_bars\": true, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 11, \"time_range\": \"No filter\", \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Years\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Number of Patients (in thousands)\", \"remote_id\": 11, \"datasource_name\": \"admin user-Untitled Query 2-2r83mvJTx\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Death - By Year per Thousand People", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Untitled Query 4-O04EF2u8N", + "datasource_type": "table", + "id": 12, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": false, \"bottom_margin\": \"auto\", \"color_scheme\": \"d3Category20b\", \"columns\": [], \"contribution\": false, \"datasource\": \"8__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {\"Count\": \"#ff5a5f\"}, \"metrics\": [{\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"count\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 46, \"is_dttm\": false, \"optionName\": \"_col_count\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Count\", \"optionName\": \"metric_g1isglpuorq_8fxikjkjk4w\", \"sqlExpression\": null}], \"order_bars\": false, \"reduce_x_ticks\": true, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 12, \"time_range\": \"No filter\", \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Databases\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Number of Patients\", \"remote_id\": 12, \"datasource_name\": \"Untitled Query 4-O04EF2u8N\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Death - Number of Records", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.data_source", + "datasource_type": "table", + "id": 13, + "params": "{\"adhoc_filters\": [], \"datasource\": \"60__table\", \"date_filter\": false, \"filter_configs\": [{\"asc\": true, \"clearable\": true, \"column\": \"name\", \"key\": \"jXSVXn3gk\", \"label\": \"Data Source\", \"multiple\": true}], \"granularity_sqla\": null, \"instant_filtering\": true, \"queryFields\": {}, \"show_druid_time_granularity\": false, \"show_druid_time_origin\": false, \"show_sqla_time_column\": false, \"show_sqla_time_granularity\": false, \"slice_id\": 13, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"filter_box\", \"remote_id\": 13, \"datasource_name\": \"data_source\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Data Source Filter", + "viz_type": "filter_box" + } + } + ], + "slug": "death" + } + }, + { + "__Dashboard__": { + "css": null, + "dashboard_title": "Tabbed Database Dashboard", + "description": null, + "json_metadata": "{\"timed_refresh_immune_slices\": [], \"expanded_slices\": {}, \"refresh_frequency\": 0, \"default_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\", \"filter_scopes\": {\"13\": {\"name\": {\"scope\": [\"ROOT_ID\"], \"immune\": []}}}, \"remote_id\": 18}", + "position_json": "{\"CHART-2_XSeaMRJO\":{\"children\":[],\"id\":\"CHART-2_XSeaMRJO\",\"meta\":{\"chartId\":83,\"height\":17,\"sliceName\":\"Age at first observation\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-V6z5U56QUt\",\"ROW-1R9yOlgr7\"],\"type\":\"CHART\"},\"CHART-F1ufawzP8Z\":{\"children\":[],\"id\":\"CHART-F1ufawzP8Z\",\"meta\":{\"chartId\":88,\"height\":34,\"sliceName\":\"Visit Type Table\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-l8N5xLbYF\",\"ROW-GNtn3Q2A_\"],\"type\":\"CHART\"},\"CHART-LE6kfso69G\":{\"children\":[],\"id\":\"CHART-LE6kfso69G\",\"meta\":{\"chartId\":82,\"height\":14,\"sliceName\":\"Meta Data\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-ux0LBXfrJ\",\"ROW-4uXTMAPy9\"],\"type\":\"CHART\"},\"CHART-PeC7vsiL4d\":{\"children\":[],\"id\":\"CHART-PeC7vsiL4d\",\"meta\":{\"chartId\":91,\"height\":18,\"sliceName\":\"Gender\",\"width\":4},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-V6z5U56QUt\",\"ROW-B9PU9uYiM\"],\"type\":\"CHART\"},\"CHART-TCF_PXmiyX\":{\"children\":[],\"id\":\"CHART-TCF_PXmiyX\",\"meta\":{\"chartId\":13,\"height\":14,\"sliceName\":\"Data Source Filter\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-bgRFfBapK\"],\"type\":\"CHART\"},\"CHART-XxEyqsVKJ8\":{\"children\":[],\"id\":\"CHART-XxEyqsVKJ8\",\"meta\":{\"chartId\":15,\"height\":44,\"sliceName\":\"Year of Birth\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-V6z5U56QUt\",\"ROW-AySCx6DR-\"],\"type\":\"CHART\"},\"CHART-ZVa4kJQZOv\":{\"children\":[],\"id\":\"CHART-ZVa4kJQZOv\",\"meta\":{\"chartId\":32,\"height\":60,\"sliceName\":\"Drug Types\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-fCDMcRIED\",\"ROW-l4THZxqyC\"],\"type\":\"CHART\"},\"CHART-_rzNOMWWxr\":{\"children\":[],\"id\":\"CHART-_rzNOMWWxr\",\"meta\":{\"chartId\":33,\"height\":63,\"sliceName\":\"Measurement Types\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-fCDMcRIED\",\"ROW-yUkejhVsr\"],\"type\":\"CHART\"},\"CHART-a7GX24w7VS\":{\"children\":[],\"id\":\"CHART-a7GX24w7VS\",\"meta\":{\"chartId\":89,\"height\":60,\"sliceName\":\"Visit Type Graph\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-l8N5xLbYF\",\"ROW-n-aCxJDKZ\"],\"type\":\"CHART\"},\"CHART-barxBjFdRO\":{\"children\":[],\"id\":\"CHART-barxBjFdRO\",\"meta\":{\"chartId\":62,\"height\":17,\"sliceName\":\"Number of Patients\",\"width\":4},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-V6z5U56QUt\",\"ROW-B9PU9uYiM\"],\"type\":\"CHART\"},\"CHART-bgOuJzQcK1\":{\"children\":[],\"id\":\"CHART-bgOuJzQcK1\",\"meta\":{\"chartId\":30,\"height\":60,\"sliceName\":\"Condition Types\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-fCDMcRIED\",\"ROW-l4THZxqyC\"],\"type\":\"CHART\"},\"CHART-eVg2nsL8-5\":{\"children\":[],\"id\":\"CHART-eVg2nsL8-5\",\"meta\":{\"chartId\":87,\"height\":51,\"sliceName\":\"Cumulative Observation Time\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-R1z8ZTvVC\",\"ROW-TiKrBMiHx\"],\"type\":\"CHART\"},\"CHART-ghrfiuZ3tN\":{\"children\":[],\"id\":\"CHART-ghrfiuZ3tN\",\"meta\":{\"chartId\":68,\"height\":62,\"sliceName\":\"Data Domains - Total number of records\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-mbS0w0jdN\",\"ROW-0v5-AL8pu\"],\"type\":\"CHART\"},\"CHART-hHB5KM2Fqp\":{\"children\":[],\"id\":\"CHART-hHB5KM2Fqp\",\"meta\":{\"chartId\":17,\"height\":71,\"sliceName\":\"Data Domains - Average number of records per person\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-mbS0w0jdN\",\"ROW-0v5-AL8pu\"],\"type\":\"CHART\"},\"CHART-ipvpuY2o7i\":{\"children\":[],\"id\":\"CHART-ipvpuY2o7i\",\"meta\":{\"chartId\":84,\"height\":18,\"sliceName\":\"Gender\",\"width\":4},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-V6z5U56QUt\",\"ROW-B9PU9uYiM\"],\"type\":\"CHART\"},\"CHART-jDS68HIk2o\":{\"children\":[],\"id\":\"CHART-jDS68HIk2o\",\"meta\":{\"chartId\":22,\"height\":66,\"sliceName\":\"Concepts - Concept Browser Table\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-vwu3LfQqs\",\"ROW-X-TcEAvv4\"],\"type\":\"CHART\"},\"CHART-l_sQINzspm\":{\"children\":[],\"id\":\"CHART-l_sQINzspm\",\"meta\":{\"chartId\":29,\"height\":62,\"sliceName\":\"Observation Types\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-fCDMcRIED\",\"ROW-yUkejhVsr\"],\"type\":\"CHART\"},\"CHART-lxk6ucPRL_\":{\"children\":[],\"id\":\"CHART-lxk6ucPRL_\",\"meta\":{\"chartId\":14,\"height\":43,\"sliceName\":\"Age at first observation\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-V6z5U56QUt\",\"ROW-U255CFRHi\"],\"type\":\"CHART\"},\"CHART-pqrREgYzs0\":{\"children\":[],\"id\":\"CHART-pqrREgYzs0\",\"meta\":{\"chartId\":34,\"height\":59,\"sliceName\":\"Device Types\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-fCDMcRIED\",\"ROW-hiR76xbM_\"],\"type\":\"CHART\"},\"CHART-qBT0bXHWFI\":{\"children\":[],\"id\":\"CHART-qBT0bXHWFI\",\"meta\":{\"chartId\":28,\"height\":48,\"sliceName\":\"Number of Patients in Observation Period\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-R1z8ZTvVC\",\"ROW-B3zVq5Y4e\"],\"type\":\"CHART\"},\"CHART-vs__Np-qB2\":{\"children\":[],\"id\":\"CHART-vs__Np-qB2\",\"meta\":{\"chartId\":31,\"height\":58,\"sliceName\":\"Procedure Types\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-fCDMcRIED\",\"ROW-hiR76xbM_\"],\"type\":\"CHART\"},\"DASHBOARD_VERSION_KEY\":\"v2\",\"DIVIDER-5-np8QXRK4\":{\"children\":[],\"id\":\"DIVIDER-5-np8QXRK4\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"DIVIDER\"},\"DIVIDER-6cYr4Zwp1X\":{\"children\":[],\"id\":\"DIVIDER-6cYr4Zwp1X\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-R1z8ZTvVC\"],\"type\":\"DIVIDER\"},\"DIVIDER-HGA90RM3mP\":{\"children\":[],\"id\":\"DIVIDER-HGA90RM3mP\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-mbS0w0jdN\"],\"type\":\"DIVIDER\"},\"DIVIDER-NP8AWGLhtX\":{\"children\":[],\"id\":\"DIVIDER-NP8AWGLhtX\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-V6z5U56QUt\"],\"type\":\"DIVIDER\"},\"DIVIDER-tfZpXyYlc8\":{\"children\":[],\"id\":\"DIVIDER-tfZpXyYlc8\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-V6z5U56QUt\"],\"type\":\"DIVIDER\"},\"DIVIDER-vSOqh5GqDh\":{\"children\":[],\"id\":\"DIVIDER-vSOqh5GqDh\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-V6z5U56QUt\"],\"type\":\"DIVIDER\"},\"GRID_ID\":{\"children\":[\"ROW-bgRFfBapK\",\"TABS-vD_pT_7gpe\",\"DIVIDER-5-np8QXRK4\",\"HEADER-mue9yivOyY\"],\"id\":\"GRID_ID\",\"parents\":[\"ROOT_ID\"],\"type\":\"GRID\"},\"HEADER-mue9yivOyY\":{\"children\":[],\"id\":\"HEADER-mue9yivOyY\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\",\"headerSize\":\"SMALL_HEADER\",\"text\":\"Disclaimer: The presented data can be used for an initial feasibility assessment but should not be used for research without involvement of the data custodian\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"HEADER\"},\"HEADER_ID\":{\"id\":\"HEADER_ID\",\"meta\":{\"text\":\"Tabbed Database Dashboard\"},\"type\":\"HEADER\"},\"MARKDOWN-FQWyHtYqSo\":{\"children\":[],\"id\":\"MARKDOWN-FQWyHtYqSo\",\"meta\":{\"code\":\"*The Data Provenance bar charts show where the data is originating from.*\",\"height\":7,\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-fCDMcRIED\",\"ROW--uIc-ZnAOs\"],\"type\":\"MARKDOWN\"},\"MARKDOWN-NAe4WDoVSC\":{\"children\":[],\"id\":\"MARKDOWN-NAe4WDoVSC\",\"meta\":{\"code\":\"*The concepts browser allows you to search for concepts by name or concept_id. No exact number of patients or occurrences are provided but the magnitude of both.*\",\"height\":7,\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-vwu3LfQqs\",\"ROW-oW5wpvNu8t\"],\"type\":\"MARKDOWN\"},\"MARKDOWN-ux03BQVfl1\":{\"children\":[],\"id\":\"MARKDOWN-ux03BQVfl1\",\"meta\":{\"code\":\"*The cumulative observation time plot shows the percentage of patients that have more that X days of observation time*\",\"height\":5,\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-R1z8ZTvVC\",\"ROW-4LZmCLtRZ\"],\"type\":\"MARKDOWN\"},\"MARKDOWN-vQytJRTAXp\":{\"children\":[],\"id\":\"MARKDOWN-vQytJRTAXp\",\"meta\":{\"code\":\"*The Number of Patients in Observation Period plot shows the number of patients that contribute at least one day in a specific month*\\n\",\"height\":6,\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-R1z8ZTvVC\",\"ROW-_ygRTcNiaZ\"],\"type\":\"MARKDOWN\"},\"ROOT_ID\":{\"children\":[\"GRID_ID\"],\"id\":\"ROOT_ID\",\"type\":\"ROOT\"},\"ROW--uIc-ZnAOs\":{\"children\":[\"MARKDOWN-FQWyHtYqSo\"],\"id\":\"ROW--uIc-ZnAOs\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-fCDMcRIED\"],\"type\":\"ROW\"},\"ROW-0v5-AL8pu\":{\"children\":[\"CHART-hHB5KM2Fqp\",\"CHART-ghrfiuZ3tN\"],\"id\":\"ROW-0v5-AL8pu\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-mbS0w0jdN\"],\"type\":\"ROW\"},\"ROW-1R9yOlgr7\":{\"children\":[\"CHART-2_XSeaMRJO\"],\"id\":\"ROW-1R9yOlgr7\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-V6z5U56QUt\"],\"type\":\"ROW\"},\"ROW-4LZmCLtRZ\":{\"children\":[\"MARKDOWN-ux03BQVfl1\"],\"id\":\"ROW-4LZmCLtRZ\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-R1z8ZTvVC\"],\"type\":\"ROW\"},\"ROW-4uXTMAPy9\":{\"children\":[\"CHART-LE6kfso69G\"],\"id\":\"ROW-4uXTMAPy9\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-ux0LBXfrJ\"],\"type\":\"ROW\"},\"ROW-AySCx6DR-\":{\"children\":[\"CHART-XxEyqsVKJ8\"],\"id\":\"ROW-AySCx6DR-\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-V6z5U56QUt\"],\"type\":\"ROW\"},\"ROW-B3zVq5Y4e\":{\"children\":[\"CHART-qBT0bXHWFI\"],\"id\":\"ROW-B3zVq5Y4e\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-R1z8ZTvVC\"],\"type\":\"ROW\"},\"ROW-B9PU9uYiM\":{\"children\":[\"CHART-barxBjFdRO\",\"CHART-ipvpuY2o7i\",\"CHART-PeC7vsiL4d\"],\"id\":\"ROW-B9PU9uYiM\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-V6z5U56QUt\"],\"type\":\"ROW\"},\"ROW-GNtn3Q2A_\":{\"children\":[\"CHART-F1ufawzP8Z\"],\"id\":\"ROW-GNtn3Q2A_\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-l8N5xLbYF\"],\"type\":\"ROW\"},\"ROW-TiKrBMiHx\":{\"children\":[\"CHART-eVg2nsL8-5\"],\"id\":\"ROW-TiKrBMiHx\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-R1z8ZTvVC\"],\"type\":\"ROW\"},\"ROW-U255CFRHi\":{\"children\":[\"CHART-lxk6ucPRL_\"],\"id\":\"ROW-U255CFRHi\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-V6z5U56QUt\"],\"type\":\"ROW\"},\"ROW-X-TcEAvv4\":{\"children\":[\"CHART-jDS68HIk2o\"],\"id\":\"ROW-X-TcEAvv4\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-vwu3LfQqs\"],\"type\":\"ROW\"},\"ROW-_ygRTcNiaZ\":{\"children\":[\"MARKDOWN-vQytJRTAXp\"],\"id\":\"ROW-_ygRTcNiaZ\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-R1z8ZTvVC\"],\"type\":\"ROW\"},\"ROW-bgRFfBapK\":{\"children\":[\"CHART-TCF_PXmiyX\"],\"id\":\"ROW-bgRFfBapK\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-hiR76xbM_\":{\"children\":[\"CHART-pqrREgYzs0\",\"CHART-vs__Np-qB2\"],\"id\":\"ROW-hiR76xbM_\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-fCDMcRIED\"],\"type\":\"ROW\"},\"ROW-l4THZxqyC\":{\"children\":[\"CHART-ZVa4kJQZOv\",\"CHART-bgOuJzQcK1\"],\"id\":\"ROW-l4THZxqyC\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-fCDMcRIED\"],\"type\":\"ROW\"},\"ROW-n-aCxJDKZ\":{\"children\":[\"CHART-a7GX24w7VS\"],\"id\":\"ROW-n-aCxJDKZ\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-l8N5xLbYF\"],\"type\":\"ROW\"},\"ROW-oW5wpvNu8t\":{\"children\":[\"MARKDOWN-NAe4WDoVSC\"],\"id\":\"ROW-oW5wpvNu8t\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-vwu3LfQqs\"],\"type\":\"ROW\"},\"ROW-yUkejhVsr\":{\"children\":[\"CHART-l_sQINzspm\",\"CHART-_rzNOMWWxr\"],\"id\":\"ROW-yUkejhVsr\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\",\"TAB-fCDMcRIED\"],\"type\":\"ROW\"},\"TAB-R1z8ZTvVC\":{\"children\":[\"ROW-_ygRTcNiaZ\",\"ROW-B3zVq5Y4e\",\"DIVIDER-6cYr4Zwp1X\",\"ROW-4LZmCLtRZ\",\"ROW-TiKrBMiHx\"],\"id\":\"TAB-R1z8ZTvVC\",\"meta\":{\"text\":\"Observation Period\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\"],\"type\":\"TAB\"},\"TAB-V6z5U56QUt\":{\"children\":[\"DIVIDER-tfZpXyYlc8\",\"ROW-B9PU9uYiM\",\"DIVIDER-NP8AWGLhtX\",\"ROW-1R9yOlgr7\",\"ROW-U255CFRHi\",\"DIVIDER-vSOqh5GqDh\",\"ROW-AySCx6DR-\"],\"id\":\"TAB-V6z5U56QUt\",\"meta\":{\"text\":\"Demographics\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\"],\"type\":\"TAB\"},\"TAB-fCDMcRIED\":{\"children\":[\"ROW--uIc-ZnAOs\",\"ROW-l4THZxqyC\",\"ROW-hiR76xbM_\",\"ROW-yUkejhVsr\"],\"id\":\"TAB-fCDMcRIED\",\"meta\":{\"text\":\"Data Provenance\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\"],\"type\":\"TAB\"},\"TAB-l8N5xLbYF\":{\"children\":[\"ROW-n-aCxJDKZ\",\"ROW-GNtn3Q2A_\"],\"id\":\"TAB-l8N5xLbYF\",\"meta\":{\"text\":\"Visit\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\"],\"type\":\"TAB\"},\"TAB-mbS0w0jdN\":{\"children\":[\"DIVIDER-HGA90RM3mP\",\"ROW-0v5-AL8pu\"],\"id\":\"TAB-mbS0w0jdN\",\"meta\":{\"text\":\"Data Domains\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\"],\"type\":\"TAB\"},\"TAB-ux0LBXfrJ\":{\"children\":[\"ROW-4uXTMAPy9\"],\"id\":\"TAB-ux0LBXfrJ\",\"meta\":{\"text\":\"Meta Data\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\"],\"type\":\"TAB\"},\"TAB-vwu3LfQqs\":{\"children\":[\"ROW-oW5wpvNu8t\",\"ROW-X-TcEAvv4\"],\"id\":\"TAB-vwu3LfQqs\",\"meta\":{\"text\":\"Concept Browser\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"TABS-vD_pT_7gpe\"],\"type\":\"TAB\"},\"TABS-vD_pT_7gpe\":{\"children\":[\"TAB-V6z5U56QUt\",\"TAB-mbS0w0jdN\",\"TAB-fCDMcRIED\",\"TAB-R1z8ZTvVC\",\"TAB-l8N5xLbYF\",\"TAB-vwu3LfQqs\",\"TAB-ux0LBXfrJ\"],\"id\":\"TABS-vD_pT_7gpe\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"TABS\"}}", + "slices": [ + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Landing Page - Data Domains", + "datasource_type": "table", + "id": 68, + "params": "{\"adhoc_filters\": [], \"color_scheme\": \"bnbColors\", \"datasource\": \"67__table\", \"donut\": false, \"granularity_sqla\": null, \"groupby\": [\"data_domain\"], \"label_colors\": {}, \"labels_outside\": true, \"metric\": {\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"count\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 307, \"is_dttm\": false, \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": false, \"label\": \"MAX(count)\", \"optionName\": \"metric_fgt92lxki3d_v12pvew79ei\", \"sqlExpression\": null}, \"number_format\": \"SMART_NUMBER\", \"pie_label_type\": \"key\", \"queryFields\": {\"groupby\": \"groupby\", \"metric\": \"metrics\"}, \"row_limit\": 1000, \"show_labels\": true, \"show_legend\": true, \"slice_id\": 68, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"pie\", \"remote_id\": 68, \"datasource_name\": \"Landing Page - Data Domains\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Total number of records", + "viz_type": "pie" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "null.Peter Rijnbeek-Age group at start of first observation-smvSJk6Hw", + "datasource_type": "table", + "id": 83, + "params": "{\"adhoc_filters\": [], \"all_columns\": [\"name\", \"age10\", \"age20\", \"age30\", \"age40\", \"age50\", \"age60\", \"age70\", \"age80\", \"age90\", \"age90p\"], \"color_pn\": true, \"datasource\": \"85__table\", \"groupby\": [], \"metrics\": [], \"order_by_cols\": [], \"order_desc\": true, \"percent_metrics\": [], \"queryFields\": {\"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"row_limit\": 1000, \"show_cell_bars\": false, \"slice_id\": 83, \"table_timestamp_format\": \"smart_date\", \"time_grain_sqla\": \"P1D\", \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"table\", \"remote_id\": 83, \"datasource_name\": \"Peter Rijnbeek-Age group at start of first observation-smvSJk6Hw\", \"schema\": \"null\", \"database_name\": \"Achilles\"}", + "slice_name": "Age at first observation", + "viz_type": "table" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Untitled Query 2-hW_lXt3eU", + "datasource_type": "table", + "id": 14, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"name\"], \"contribution\": false, \"datasource\": \"10__table\", \"granularity_sqla\": null, \"groupby\": [\"age\"], \"label_colors\": {\"Female\": \"#FF3399\", \"Male\": \"#3366FF\", \"Syn1k-UK\": \"#ff5a5f\", \"Syn5k-NL\": \"#7b0051\", \"Syn5k-PT\": \"#007A87\", \"Syn5k-SP\": \"#00d1c1\"}, \"metrics\": [{\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"count\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 52, \"is_dttm\": false, \"optionName\": \"_col_count\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": false, \"hasCustomLabel\": false, \"label\": \"MAX(count)\", \"optionName\": \"metric_dsbny4uupqu_xitbpo2zwoi\", \"sqlExpression\": null}], \"order_bars\": true, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": true, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 14, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Age\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Count\", \"remote_id\": 14, \"datasource_name\": \"Untitled Query 2-hW_lXt3eU\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Age at first observation", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Untitled Query 3-OTisQhOu9", + "datasource_type": "table", + "id": 15, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"name\"], \"contribution\": false, \"datasource\": \"11__table\", \"granularity_sqla\": \"Birth_year\", \"groupby\": [\"Birth_year\"], \"label_colors\": {\"Female\": \"#FF3399\", \"Male\": \"#3366FF\", \"Syn1k-UK\": \"#ff5a5f\", \"Syn5k-NL\": \"#7b0051\", \"Syn5k-PT\": \"#007A87\", \"Syn5k-SP\": \"#00d1c1\"}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"count\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 56, \"is_dttm\": false, \"optionName\": \"_col_count\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": false, \"hasCustomLabel\": false, \"label\": \"SUM(count)\", \"optionName\": \"metric_cpx4knmvyq_7kbv0oube0f\", \"sqlExpression\": null}], \"order_bars\": true, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": true, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": true, \"show_legend\": true, \"slice_id\": 15, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Year\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Count\", \"remote_id\": 15, \"datasource_name\": \"Untitled Query 3-OTisQhOu9\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Year of Birth", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "null.Peter Rijnbeek-Untitled Query 2-jCYlfS520", + "datasource_type": "table", + "id": 82, + "params": "{\"adhoc_filters\": [], \"all_columns\": [\"name\", \"source_release_date\", \"cdm_release_date\", \"cdm_version\", \"vocabulary_version\"], \"color_pn\": true, \"datasource\": \"83__table\", \"groupby\": [], \"metrics\": [], \"order_by_cols\": [], \"order_desc\": true, \"percent_metrics\": [], \"queryFields\": {\"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"row_limit\": 1000, \"show_cell_bars\": true, \"slice_id\": 82, \"table_timestamp_format\": \"smart_date\", \"time_grain_sqla\": \"P1D\", \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"table\", \"remote_id\": 82, \"datasource_name\": \"Peter Rijnbeek-Untitled Query 2-jCYlfS520\", \"schema\": \"null\", \"database_name\": \"Achilles\"}", + "slice_name": "Meta Data", + "viz_type": "table" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.data_source", + "datasource_type": "table", + "id": 13, + "params": "{\"adhoc_filters\": [], \"datasource\": \"60__table\", \"date_filter\": false, \"filter_configs\": [{\"asc\": true, \"clearable\": true, \"column\": \"name\", \"key\": \"jXSVXn3gk\", \"label\": \"Data Source\", \"multiple\": true}], \"granularity_sqla\": null, \"instant_filtering\": true, \"queryFields\": {}, \"show_druid_time_granularity\": false, \"show_druid_time_origin\": false, \"show_sqla_time_column\": false, \"show_sqla_time_granularity\": false, \"slice_id\": 13, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"filter_box\", \"remote_id\": 13, \"datasource_name\": \"data_source\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Data Source Filter", + "viz_type": "filter_box" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "null.Peter Rijnbeek-Untitled Query 2--E1zjg5sW", + "datasource_type": "table", + "id": 84, + "params": "{\"adhoc_filters\": [], \"all_columns\": [\"gender\", \"count_value\"], \"color_pn\": false, \"datasource\": \"86__table\", \"groupby\": [], \"metrics\": [], \"order_by_cols\": null, \"order_desc\": true, \"percent_metrics\": [], \"queryFields\": {\"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"row_limit\": 1000, \"show_cell_bars\": false, \"slice_id\": 84, \"table_timestamp_format\": \"smart_date\", \"time_grain_sqla\": \"P1D\", \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"table\", \"remote_id\": 84, \"datasource_name\": \"Peter Rijnbeek-Untitled Query 2--E1zjg5sW\", \"schema\": \"null\", \"database_name\": \"Achilles\"}", + "slice_name": "Gender", + "viz_type": "table" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Landing Page - Number of Patients query", + "datasource_type": "table", + "id": 62, + "params": "{\"adhoc_filters\": [], \"datasource\": \"54__table\", \"granularity_sqla\": null, \"header_font_size\": 0.3, \"metric\": {\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"count_value\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 277, \"is_dttm\": false, \"optionName\": \"_col_count_value\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": false, \"hasCustomLabel\": false, \"label\": \"SUM(count_value)\", \"optionName\": \"metric_g9sohftdn1_s9whttkxz1l\", \"sqlExpression\": null}, \"queryFields\": {\"metric\": \"metrics\"}, \"slice_id\": 62, \"subheader_font_size\": 0.125, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"big_number_total\", \"y_axis_format\": \"SMART_NUMBER\", \"remote_id\": 62, \"datasource_name\": \"Landing Page - Number of Patients query\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Number of Patients", + "viz_type": "big_number_total" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Untitled Query 2-QPQHc1uh6", + "datasource_type": "table", + "id": 17, + "params": "{\"adhoc_filters\": [], \"all_columns_x\": \"name\", \"all_columns_y\": \"data_domain\", \"bottom_margin\": \"auto\", \"canvas_image_rendering\": \"pixelated\", \"datasource\": \"14__table\", \"granularity_sqla\": null, \"left_margin\": \"auto\", \"linear_color_scheme\": \"greens\", \"metric\": {\"aggregate\": \"AVG\", \"column\": {\"column_name\": \"records_per_person\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 68, \"is_dttm\": false, \"optionName\": \"_col_records_per_person\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"hasCustomLabel\": true, \"isNew\": false, \"label\": \"avg records per person\", \"optionName\": \"metric_zx7vov5aux_cmnw1nknahk\", \"sqlExpression\": null}, \"normalize_across\": \"heatmap\", \"normalized\": false, \"queryFields\": {\"metric\": \"metrics\"}, \"row_limit\": null, \"show_legend\": true, \"show_perc\": true, \"show_values\": false, \"slice_id\": 17, \"sort_x_axis\": \"alpha_asc\", \"sort_y_axis\": \"alpha_asc\", \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"heatmap\", \"xscale_interval\": null, \"y_axis_bounds\": [null, null], \"y_axis_format\": \"SMART_NUMBER\", \"yscale_interval\": null, \"remote_id\": 17, \"datasource_name\": \"Untitled Query 2-QPQHc1uh6\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Average number of records per person", + "viz_type": "heatmap" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 5-3i9mLe1yw", + "datasource_type": "table", + "id": 22, + "params": "{\"adhoc_filters\": [], \"align_pn\": false, \"all_columns\": [\"source_name\", \"concept_id\", \"concept_name\", \"domain_id\", \"magnitude_persons\", \"magnitude_occurrences\"], \"color_pn\": true, \"datasource\": \"19__table\", \"granularity_sqla\": null, \"groupby\": [], \"include_search\": true, \"include_time\": false, \"metrics\": [], \"order_by_cols\": [], \"order_desc\": false, \"page_length\": 50, \"percent_metrics\": [], \"queryFields\": {\"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"row_limit\": null, \"show_cell_bars\": true, \"slice_id\": 22, \"table_filter\": true, \"table_timestamp_format\": \"%Y-%m-%d %H:%M:%S\", \"time_grain_sqla\": null, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"timeseries_limit_metric\": null, \"url_params\": {}, \"viz_type\": \"table\", \"remote_id\": 22, \"datasource_name\": \"admin user-Untitled Query 5-3i9mLe1yw\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Concepts - Concept Browser Table", + "viz_type": "table" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Cumulative Observation Period 2-L74hsau_K", + "datasource_type": "table", + "id": 87, + "params": "{\"adhoc_filters\": [], \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"name\"], \"datasource\": \"96__table\", \"groupby\": [\"xlengthofobservation\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"ypercentpersons\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 452, \"is_dttm\": false, \"optionName\": \"_col_ypercentpersons\", \"python_date_format\": null, \"type\": null, \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"hasCustomLabel\": false, \"isNew\": false, \"label\": \"SUM(ypercentpersons)\", \"optionName\": \"metric_cq74wvz3wga_ry4rmcxu0ip\", \"sqlExpression\": null}], \"order_bars\": true, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"row_limit\": 1000, \"show_legend\": true, \"slice_id\": 87, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Days\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \",.1%\", \"remote_id\": 87, \"datasource_name\": \"Cumulative Observation Period 2-L74hsau_K\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Cumulative Observation Time", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Patients in Observation Period per month Query", + "datasource_type": "table", + "id": 28, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"name\"], \"contribution\": false, \"datasource\": \"25__table\", \"granularity_sqla\": \"date\", \"groupby\": [\"date\"], \"label_colors\": {\"Syn1k-UK\": \"#ff5a5f\", \"Syn5k-NL\": \"#7b0051\", \"Syn5k-PT\": \"#007A87\", \"Syn5k-SP\": \"#00d1c1\"}, \"metrics\": [{\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"Nr_patients\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 138, \"is_dttm\": false, \"optionName\": \"_col_Nr_patients\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Num of Patients\", \"optionName\": \"metric_3p61x9ncona_q3o5fcc0v6q\", \"sqlExpression\": null}], \"order_bars\": true, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": true, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 28, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Dates\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Number of Patients\", \"remote_id\": 28, \"datasource_name\": \"Patients in Observation Period per month Query\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Number of Patients in Observation Period", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Peter Rijnbeek-Visit Type Table v2-zZU86Qvwj", + "datasource_type": "table", + "id": 88, + "params": "{\"adhoc_filters\": [], \"all_columns\": [\"name\", \"concept_name\", \"num_persons\", \"percent_persons\", \"records_per_person\"], \"color_pn\": true, \"datasource\": \"98__table\", \"groupby\": [], \"metrics\": [], \"order_by_cols\": [], \"order_desc\": true, \"percent_metrics\": [], \"queryFields\": {\"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"row_limit\": 1000, \"show_cell_bars\": false, \"table_timestamp_format\": \"smart_date\", \"time_grain_sqla\": \"P1D\", \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"viz_type\": \"table\", \"remote_id\": 88, \"datasource_name\": \"Peter Rijnbeek-Visit Type Table v2-zZU86Qvwj\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Visit Type Table", + "viz_type": "table" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Peter Rijnbeek-Visit Type Table v2-DhXfzMl9M", + "datasource_type": "table", + "id": 89, + "params": "{\"adhoc_filters\": [], \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"name\"], \"datasource\": \"99__table\", \"groupby\": [\"concept_name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_persons\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 465, \"is_dttm\": false, \"optionName\": \"_col_num_persons\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"hasCustomLabel\": false, \"isNew\": false, \"label\": \"SUM(num_persons)\", \"optionName\": \"metric_kcrkrhrxkrl_nprl8ttp6tr\", \"sqlExpression\": null}], \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"row_limit\": 1000, \"show_legend\": true, \"slice_id\": 89, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"remote_id\": 89, \"datasource_name\": \"Peter Rijnbeek-Visit Type Table v2-DhXfzMl9M\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Visit Type Graph", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 34, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Device\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 34, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 34, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Device Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 33, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Measurement\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 33, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 33, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Measurement Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 32, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Drug\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"d3Category20c\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 32, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 32, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Drug Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 31, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Procedure\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"d3Category20b\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 31, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 31, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Procedure Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 30, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Condition\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"d3Category20c\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 30, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 30, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Condition Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 29, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Observation\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {\"Observation recorded from EHR\": \"#8ce071\", \"Problem list from EHR\": \"#ffb400\", \"Syn1k-UK\": \"#ff5a5f\", \"Syn5k-NL\": \"#7b0051\", \"Syn5k-PT\": \"#007A87\", \"Syn5k-SP\": \"#00d1c1\", \"Test ordered through EHR\": \"#b4a76c\"}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 29, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 29, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Observation Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "null.Peter Rijnbeek-Untitled Query 2--E1zjg5sW", + "datasource_type": "table", + "id": 91, + "params": "{\"adhoc_filters\": [], \"color_scheme\": \"supersetColors\", \"datasource\": \"86__table\", \"groupby\": [\"gender\"], \"label_colors\": {}, \"labels_outside\": true, \"metric\": {\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"count_value\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 413, \"is_dttm\": false, \"optionName\": \"_col_count_value\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"hasCustomLabel\": false, \"isNew\": false, \"label\": \"SUM(count_value)\", \"optionName\": \"metric_4yhwa29vtbe_i5wwa79ih78\", \"sqlExpression\": null}, \"number_format\": \"SMART_NUMBER\", \"pie_label_type\": \"key\", \"queryFields\": {\"groupby\": \"groupby\", \"metric\": \"metrics\"}, \"row_limit\": null, \"show_labels\": true, \"show_legend\": false, \"slice_id\": 91, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"pie\", \"remote_id\": 91, \"datasource_name\": \"Peter Rijnbeek-Untitled Query 2--E1zjg5sW\", \"schema\": \"null\", \"database_name\": \"Achilles\"}", + "slice_name": "Gender", + "viz_type": "pie" + } + } + ], + "slug": "database-single-dashboard" + } + }, + { + "__Dashboard__": { + "css": null, + "dashboard_title": "Concepts Browser", + "description": null, + "json_metadata": "{\"default_filters\": \"{\\\"59\\\": {\\\"domain_id\\\": [\\\"Visit\\\"]}}\", \"expanded_slices\": {}, \"filter_scopes\": {\"59\": {\"domain_id\": {\"scope\": [\"ROOT_ID\"], \"immune\": []}}, \"60\": {\"source_name\": {\"scope\": [\"ROOT_ID\"], \"immune\": []}}}, \"refresh_frequency\": 0, \"timed_refresh_immune_slices\": [], \"remote_id\": 13}", + "position_json": "{\"CHART-35D7cc092b\":{\"children\":[],\"id\":\"CHART-35D7cc092b\",\"meta\":{\"chartId\":57,\"height\":17,\"sliceName\":\"Number of Concepts\",\"width\":4},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-3sikPXy1E\"],\"type\":\"CHART\"},\"CHART-9IQI-4PBLv\":{\"children\":[],\"id\":\"CHART-9IQI-4PBLv\",\"meta\":{\"chartId\":59,\"height\":17,\"sliceName\":\"Entity Type Filter\",\"width\":4},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-3sikPXy1E\"],\"type\":\"CHART\"},\"CHART-FP-_ARzsH7\":{\"children\":[],\"id\":\"CHART-FP-_ARzsH7\",\"meta\":{\"chartId\":22,\"height\":78,\"sliceName\":\"Concepts - Concept Browser Table\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-gTYmxo1nX\"],\"type\":\"CHART\"},\"CHART-wbLOAGyJGa\":{\"children\":[],\"id\":\"CHART-wbLOAGyJGa\",\"meta\":{\"chartId\":60,\"height\":17,\"sliceName\":\"Datasource Filter\",\"width\":4},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-3sikPXy1E\"],\"type\":\"CHART\"},\"DASHBOARD_VERSION_KEY\":\"v2\",\"GRID_ID\":{\"children\":[\"ROW-miknEJ5g9F\",\"ROW-3sikPXy1E\",\"ROW-gTYmxo1nX\"],\"id\":\"GRID_ID\",\"parents\":[\"ROOT_ID\"],\"type\":\"GRID\"},\"HEADER_ID\":{\"id\":\"HEADER_ID\",\"meta\":{\"text\":\"Concepts Browser\"},\"type\":\"HEADER\"},\"MARKDOWN-pTxzduuP7Z\":{\"children\":[],\"id\":\"MARKDOWN-pTxzduuP7Z\",\"meta\":{\"code\":\"*The concepts browser allows you to search for concepts by name or concept_id in all the data sources you select. No exact number of patients or occurrences are provided but the magnitude of both.*\",\"height\":7,\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-miknEJ5g9F\"],\"type\":\"MARKDOWN\"},\"ROOT_ID\":{\"children\":[\"GRID_ID\"],\"id\":\"ROOT_ID\",\"type\":\"ROOT\"},\"ROW-3sikPXy1E\":{\"children\":[\"CHART-wbLOAGyJGa\",\"CHART-9IQI-4PBLv\",\"CHART-35D7cc092b\"],\"id\":\"ROW-3sikPXy1E\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-gTYmxo1nX\":{\"children\":[\"CHART-FP-_ARzsH7\"],\"id\":\"ROW-gTYmxo1nX\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-miknEJ5g9F\":{\"children\":[\"MARKDOWN-pTxzduuP7Z\"],\"id\":\"ROW-miknEJ5g9F\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"}}", + "slices": [ + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 5-3i9mLe1yw", + "datasource_type": "table", + "id": 22, + "params": "{\"adhoc_filters\": [], \"align_pn\": false, \"all_columns\": [\"source_name\", \"concept_id\", \"concept_name\", \"domain_id\", \"magnitude_persons\", \"magnitude_occurrences\"], \"color_pn\": true, \"datasource\": \"19__table\", \"granularity_sqla\": null, \"groupby\": [], \"include_search\": true, \"include_time\": false, \"metrics\": [], \"order_by_cols\": [], \"order_desc\": false, \"page_length\": 50, \"percent_metrics\": [], \"queryFields\": {\"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"row_limit\": null, \"show_cell_bars\": true, \"slice_id\": 22, \"table_filter\": true, \"table_timestamp_format\": \"%Y-%m-%d %H:%M:%S\", \"time_grain_sqla\": null, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"timeseries_limit_metric\": null, \"url_params\": {}, \"viz_type\": \"table\", \"remote_id\": 22, \"datasource_name\": \"admin user-Untitled Query 5-3i9mLe1yw\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Concepts - Concept Browser Table", + "viz_type": "table" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "Andre Pedrosa-Untitled Query 4-XSyBDNYd6", + "datasource_type": "table", + "id": 57, + "params": "{\"adhoc_filters\": [], \"datasource\": \"51__table\", \"granularity_sqla\": null, \"header_font_size\": 0.3, \"metric\": {\"aggregate\": \"COUNT_DISTINCT\", \"column\": {\"column_name\": \"concept_name\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 266, \"is_dttm\": false, \"optionName\": \"_col_concept_name\", \"python_date_format\": null, \"type\": \"STRING\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Concepts\", \"optionName\": \"metric_s8j9b1vtvma_bg2a7n7b0no\", \"sqlExpression\": null}, \"subheader_font_size\": 0.125, \"time_range\": \"No filter\", \"viz_type\": \"big_number_total\", \"y_axis_format\": \"SMART_NUMBER\", \"remote_id\": 57, \"datasource_name\": \"Concepts General - Filters\", \"schema\": null, \"database_name\": \"Achilles\"}", + "slice_name": "Number of Concepts", + "viz_type": "big_number_total" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "Concepts General - Filters", + "datasource_type": "table", + "id": 59, + "params": "{\"adhoc_filters\": [], \"datasource\": \"51__table\", \"date_filter\": false, \"filter_configs\": [{\"asc\": true, \"clearable\": true, \"column\": \"domain_id\", \"key\": \"1_cV3BATS\", \"label\": \"Entity Type\", \"multiple\": true}], \"granularity_sqla\": null, \"instant_filtering\": true, \"queryFields\": {}, \"show_druid_time_granularity\": false, \"show_druid_time_origin\": false, \"show_sqla_time_column\": false, \"show_sqla_time_granularity\": false, \"slice_id\": 59, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"filter_box\", \"remote_id\": 59, \"datasource_name\": \"Concepts General - Filters\", \"schema\": null, \"database_name\": \"Achilles\"}", + "slice_name": "Domain Filter", + "viz_type": "filter_box" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "Concepts General - Filters", + "datasource_type": "table", + "id": 60, + "params": "{\"adhoc_filters\": [], \"datasource\": \"51__table\", \"date_filter\": false, \"filter_configs\": [{\"asc\": true, \"clearable\": true, \"column\": \"source_name\", \"key\": \"7eXl-WFCs\", \"label\": \"Datasource\", \"multiple\": true}], \"granularity_sqla\": null, \"instant_filtering\": true, \"show_druid_time_granularity\": false, \"show_druid_time_origin\": false, \"show_sqla_time_column\": false, \"show_sqla_time_granularity\": false, \"slice_id\": 60, \"time_range\": \"No filter\", \"url_params\": {}, \"viz_type\": \"filter_box\", \"remote_id\": 60, \"datasource_name\": \"Concepts General - Filters\", \"schema\": null, \"database_name\": \"Achilles\"}", + "slice_name": "Datasource Filter", + "viz_type": "filter_box" + } + } + ], + "slug": "concepts-general" + } + }, + { + "__Dashboard__": { + "css": null, + "dashboard_title": "Provenance", + "description": null, + "json_metadata": "{\"default_filters\": \"{}\", \"expanded_slices\": {}, \"refresh_frequency\": 0, \"timed_refresh_immune_slices\": [], \"filter_scopes\": {\"13\": {\"name\": {\"scope\": [\"ROOT_ID\"], \"immune\": []}}}, \"remote_id\": 14}", + "position_json": "{\"CHART-B9oELPfU_y\":{\"children\":[],\"id\":\"CHART-B9oELPfU_y\",\"meta\":{\"chartId\":31,\"height\":65,\"sliceName\":\"Concepts - Procedure Types\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-YDPtjYKxid\"],\"type\":\"CHART\"},\"CHART-Ff5q_yjOGL\":{\"children\":[],\"id\":\"CHART-Ff5q_yjOGL\",\"meta\":{\"chartId\":32,\"height\":61,\"sliceName\":\"Concepts - Drug Types\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-tLsQVspD3\"],\"type\":\"CHART\"},\"CHART-U-QZ35Xw1e\":{\"children\":[],\"id\":\"CHART-U-QZ35Xw1e\",\"meta\":{\"chartId\":34,\"height\":63,\"sliceName\":\"Concepts - Device Types\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-YDPtjYKxid\"],\"type\":\"CHART\"},\"CHART-jKCUQaYpML\":{\"children\":[],\"id\":\"CHART-jKCUQaYpML\",\"meta\":{\"chartId\":30,\"height\":61,\"sliceName\":\"Concepts - Condition Types\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-tLsQVspD3\"],\"type\":\"CHART\"},\"CHART-pZx2CarZpN\":{\"children\":[],\"id\":\"CHART-pZx2CarZpN\",\"meta\":{\"chartId\":29,\"height\":63,\"sliceName\":\"Concepts - Observation Types\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-i13-Ll46Hj\"],\"type\":\"CHART\"},\"CHART-wPre-hIgUB\":{\"children\":[],\"id\":\"CHART-wPre-hIgUB\",\"meta\":{\"chartId\":33,\"height\":63,\"sliceName\":\"Concepts - Measurement Types\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-i13-Ll46Hj\"],\"type\":\"CHART\"},\"CHART-wiZiygoZjC\":{\"children\":[],\"id\":\"CHART-wiZiygoZjC\",\"meta\":{\"chartId\":13,\"height\":14,\"sliceName\":\"Data Source Filter\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-zwaSxX6vB\"],\"type\":\"CHART\"},\"DASHBOARD_VERSION_KEY\":\"v2\",\"DIVIDER-it-rey7Vg1\":{\"children\":[],\"id\":\"DIVIDER-it-rey7Vg1\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"DIVIDER\"},\"GRID_ID\":{\"children\":[\"ROW-LQbuYpDSiU\",\"ROW-zwaSxX6vB\",\"DIVIDER-it-rey7Vg1\",\"ROW-tLsQVspD3\",\"ROW-YDPtjYKxid\",\"ROW-i13-Ll46Hj\"],\"id\":\"GRID_ID\",\"parents\":[\"ROOT_ID\"],\"type\":\"GRID\"},\"HEADER_ID\":{\"id\":\"HEADER_ID\",\"meta\":{\"text\":\"Provenance\"},\"type\":\"HEADER\"},\"MARKDOWN-KucspUEg01\":{\"children\":[],\"id\":\"MARKDOWN-KucspUEg01\",\"meta\":{\"code\":\"This Dashboard shows the provenance of the data in the different data domains.\",\"height\":6,\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-LQbuYpDSiU\"],\"type\":\"MARKDOWN\"},\"ROOT_ID\":{\"children\":[\"GRID_ID\"],\"id\":\"ROOT_ID\",\"type\":\"ROOT\"},\"ROW-LQbuYpDSiU\":{\"children\":[\"MARKDOWN-KucspUEg01\"],\"id\":\"ROW-LQbuYpDSiU\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-YDPtjYKxid\":{\"children\":[\"CHART-B9oELPfU_y\",\"CHART-U-QZ35Xw1e\"],\"id\":\"ROW-YDPtjYKxid\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-i13-Ll46Hj\":{\"children\":[\"CHART-wPre-hIgUB\",\"CHART-pZx2CarZpN\"],\"id\":\"ROW-i13-Ll46Hj\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-tLsQVspD3\":{\"children\":[\"CHART-jKCUQaYpML\",\"CHART-Ff5q_yjOGL\"],\"id\":\"ROW-tLsQVspD3\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-zwaSxX6vB\":{\"children\":[\"CHART-wiZiygoZjC\"],\"id\":\"ROW-zwaSxX6vB\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"}}", + "slices": [ + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 29, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Observation\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {\"Observation recorded from EHR\": \"#8ce071\", \"Problem list from EHR\": \"#ffb400\", \"Syn1k-UK\": \"#ff5a5f\", \"Syn5k-NL\": \"#7b0051\", \"Syn5k-PT\": \"#007A87\", \"Syn5k-SP\": \"#00d1c1\", \"Test ordered through EHR\": \"#b4a76c\"}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 29, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 29, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Observation Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 30, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Condition\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"d3Category20c\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 30, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 30, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Condition Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 31, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Procedure\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"d3Category20b\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 31, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 31, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Procedure Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 32, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Drug\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"d3Category20c\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 32, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 32, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Drug Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 33, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Measurement\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 33, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 33, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Measurement Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-_1-hZtmZL", + "datasource_type": "table", + "id": 34, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"Device\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_qgdp5ana5g_vtxqy9rqhm7\", \"fromFormData\": true, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"domain_name\"}], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"concept_name\"], \"contribution\": true, \"datasource\": \"26__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"num_records\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 143, \"is_dttm\": false, \"optionName\": \"_col_num_records\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Nr Records\", \"optionName\": \"metric_o8vjq1gc86q_hk98r2d9mm\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 34, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 34, \"datasource_name\": \"admin user-Untitled Query 3-_1-hZtmZL\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Device Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.data_source", + "datasource_type": "table", + "id": 13, + "params": "{\"adhoc_filters\": [], \"datasource\": \"60__table\", \"date_filter\": false, \"filter_configs\": [{\"asc\": true, \"clearable\": true, \"column\": \"name\", \"key\": \"jXSVXn3gk\", \"label\": \"Data Source\", \"multiple\": true}], \"granularity_sqla\": null, \"instant_filtering\": true, \"queryFields\": {}, \"show_druid_time_granularity\": false, \"show_druid_time_origin\": false, \"show_sqla_time_column\": false, \"show_sqla_time_granularity\": false, \"slice_id\": 13, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"filter_box\", \"remote_id\": 13, \"datasource_name\": \"data_source\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Data Source Filter", + "viz_type": "filter_box" + } + } + ], + "slug": "concepts-domains" + } + }, + { + "__Dashboard__": { + "css": null, + "dashboard_title": "Observation Period", + "description": null, + "json_metadata": "{\"default_filters\": \"{}\", \"expanded_slices\": {}, \"filter_scopes\": {\"13\": {\"name\": {\"scope\": [\"ROOT_ID\"], \"immune\": []}}}, \"refresh_frequency\": 0, \"timed_refresh_immune_slices\": [], \"remote_id\": 9}", + "position_json": "{\"CHART-JM7VyS2xhO\":{\"children\":[],\"id\":\"CHART-JM7VyS2xhO\",\"meta\":{\"chartId\":40,\"height\":82,\"sliceName\":\"Population Characteristics - Observation Period End Dates\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-nweL96pnK\"],\"type\":\"CHART\"},\"CHART-SUFSDt02gT\":{\"children\":[],\"id\":\"CHART-SUFSDt02gT\",\"meta\":{\"chartId\":41,\"height\":82,\"sliceName\":\"Population Characteristics - Observation Period Start Dates\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-nweL96pnK\"],\"type\":\"CHART\"},\"CHART-ZLo2NIXJ2P\":{\"children\":[],\"id\":\"CHART-ZLo2NIXJ2P\",\"meta\":{\"chartId\":13,\"height\":15,\"sliceName\":\"Data Source Filter\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-kcQg7b0fn\"],\"type\":\"CHART\"},\"CHART-zm6-cGyI_H\":{\"children\":[],\"id\":\"CHART-zm6-cGyI_H\",\"meta\":{\"chartId\":28,\"height\":79,\"sliceName\":\"Population Characteristics - Patients in Observation Period per month\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-5W7alUw50\"],\"type\":\"CHART\"},\"DASHBOARD_VERSION_KEY\":\"v2\",\"GRID_ID\":{\"children\":[\"ROW-kcQg7b0fn\",\"ROW-5W7alUw50\",\"ROW-nweL96pnK\"],\"id\":\"GRID_ID\",\"parents\":[\"ROOT_ID\"],\"type\":\"GRID\"},\"HEADER_ID\":{\"id\":\"HEADER_ID\",\"meta\":{\"text\":\"Observation Period\"},\"type\":\"HEADER\"},\"ROOT_ID\":{\"children\":[\"GRID_ID\"],\"id\":\"ROOT_ID\",\"type\":\"ROOT\"},\"ROW-5W7alUw50\":{\"children\":[\"CHART-zm6-cGyI_H\"],\"id\":\"ROW-5W7alUw50\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-kcQg7b0fn\":{\"children\":[\"CHART-ZLo2NIXJ2P\"],\"id\":\"ROW-kcQg7b0fn\",\"meta\":{\"0\":\"ROOT_ID\",\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-nweL96pnK\":{\"children\":[\"CHART-SUFSDt02gT\",\"CHART-JM7VyS2xhO\"],\"id\":\"ROW-nweL96pnK\",\"meta\":{\"0\":\"ROOT_ID\",\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"}}", + "slices": [ + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Patients in Observation Period per month Query", + "datasource_type": "table", + "id": 28, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"name\"], \"contribution\": false, \"datasource\": \"25__table\", \"granularity_sqla\": \"date\", \"groupby\": [\"date\"], \"label_colors\": {\"Syn1k-UK\": \"#ff5a5f\", \"Syn5k-NL\": \"#7b0051\", \"Syn5k-PT\": \"#007A87\", \"Syn5k-SP\": \"#00d1c1\"}, \"metrics\": [{\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"Nr_patients\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 138, \"is_dttm\": false, \"optionName\": \"_col_Nr_patients\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Num of Patients\", \"optionName\": \"metric_3p61x9ncona_q3o5fcc0v6q\", \"sqlExpression\": null}], \"order_bars\": true, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": true, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 28, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Dates\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Number of Patients\", \"remote_id\": 28, \"datasource_name\": \"Patients in Observation Period per month Query\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Number of Patients in Observation Period", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.data_source", + "datasource_type": "table", + "id": 13, + "params": "{\"adhoc_filters\": [], \"datasource\": \"60__table\", \"date_filter\": false, \"filter_configs\": [{\"asc\": true, \"clearable\": true, \"column\": \"name\", \"key\": \"jXSVXn3gk\", \"label\": \"Data Source\", \"multiple\": true}], \"granularity_sqla\": null, \"instant_filtering\": true, \"queryFields\": {}, \"show_druid_time_granularity\": false, \"show_druid_time_origin\": false, \"show_sqla_time_column\": false, \"show_sqla_time_granularity\": false, \"slice_id\": 13, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"filter_box\", \"remote_id\": 13, \"datasource_name\": \"data_source\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Data Source Filter", + "viz_type": "filter_box" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 2-T7XwQxM_U", + "datasource_type": "table", + "id": 40, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"name\"], \"contribution\": false, \"datasource\": \"39__table\", \"granularity_sqla\": \"year_month\", \"groupby\": [\"year_month\"], \"label_colors\": {\"Syn1k-UK\": \"#ff5a5f\", \"Syn5k-NL\": \"#7b0051\", \"Syn5k-PT\": \"#007A87\", \"Syn5k-SP\": \"#00d1c1\"}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"patient_count\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 210, \"is_dttm\": false, \"optionName\": \"_col_patient_count\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Patients\", \"optionName\": \"metric_polnej098p8_gvup6qsu0dr\", \"sqlExpression\": null}], \"order_bars\": true, \"reduce_x_ticks\": true, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 40, \"time_range\": \"No filter\", \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Year\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Number of Patients\", \"remote_id\": 40, \"datasource_name\": \"Observation Period End Dates Query\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Population Characteristics - Observation Period End Dates", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 2-OVOM0LBcs", + "datasource_type": "table", + "id": 41, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"name\"], \"contribution\": false, \"datasource\": \"40__table\", \"granularity_sqla\": \"year_month\", \"groupby\": [\"year_month\"], \"label_colors\": {\"Syn1k-UK\": \"#ff5a5f\", \"Syn5k-NL\": \"#7b0051\", \"Syn5k-PT\": \"#007A87\", \"Syn5k-SP\": \"#00d1c1\"}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"patient_count\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 213, \"is_dttm\": false, \"optionName\": \"_col_patient_count\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Patients\", \"optionName\": \"metric_6bczp63az25_cplpgcko0q\", \"sqlExpression\": null}], \"order_bars\": true, \"reduce_x_ticks\": true, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 41, \"time_range\": \"No filter\", \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Year\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Number of Patients\", \"remote_id\": 41, \"datasource_name\": \"Observation Period Start Dates Query\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Population Characteristics - Observation Period Start Dates", + "viz_type": "dist_bar" + } + } + ], + "slug": "period" + } + }, + { + "__Dashboard__": { + "css": null, + "dashboard_title": "Person", + "description": null, + "json_metadata": "{\"default_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\", \"expanded_slices\": {}, \"filter_scopes\": {\"13\": {\"name\": {\"scope\": [\"ROOT_ID\"], \"immune\": []}}}, \"label_colors\": {\"Female\": \"#FF3399\", \"Male\": \"#3366FF\"}, \"refresh_frequency\": 0, \"timed_refresh_immune_slices\": [], \"remote_id\": 8}", + "position_json": "{\"CHART-XsJxSD2vxt\":{\"children\":[],\"id\":\"CHART-XsJxSD2vxt\",\"meta\":{\"chartId\":14,\"height\":44,\"sliceName\":\"Age at first observation\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-xxT4JsbUi\"],\"type\":\"CHART\"},\"CHART-_tHxzTYv3G\":{\"children\":[],\"id\":\"CHART-_tHxzTYv3G\",\"meta\":{\"chartId\":16,\"height\":44,\"sliceName\":\"Person - Gender Distribution\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-IUvjhGpjI\"],\"type\":\"CHART\"},\"CHART-gUBonfpEfu\":{\"children\":[],\"id\":\"CHART-gUBonfpEfu\",\"meta\":{\"chartId\":15,\"height\":44,\"sliceName\":\"Year of Birth\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-IUvjhGpjI\"],\"type\":\"CHART\"},\"CHART-iDbO8sCO7s\":{\"children\":[],\"id\":\"CHART-iDbO8sCO7s\",\"meta\":{\"chartId\":13,\"height\":17,\"sliceName\":\"Data Source Filter\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-kiDnX8f_d9\"],\"type\":\"CHART\"},\"CHART-nWcIaca73t\":{\"children\":[],\"id\":\"CHART-nWcIaca73t\",\"meta\":{\"chartId\":83,\"height\":44,\"sliceName\":\"Age at first observation\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-xxT4JsbUi\"],\"type\":\"CHART\"},\"DASHBOARD_VERSION_KEY\":\"v2\",\"DIVIDER-83kwyFwpNl\":{\"children\":[],\"id\":\"DIVIDER-83kwyFwpNl\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"DIVIDER\"},\"DIVIDER-gBYwO8Qw_3\":{\"children\":[],\"id\":\"DIVIDER-gBYwO8Qw_3\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"DIVIDER\"},\"DIVIDER-t2RQ2Z4lTS\":{\"children\":[],\"id\":\"DIVIDER-t2RQ2Z4lTS\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"DIVIDER\"},\"GRID_ID\":{\"children\":[\"ROW-kiDnX8f_d9\",\"DIVIDER-t2RQ2Z4lTS\",\"ROW-xxT4JsbUi\",\"ROW-IUvjhGpjI\",\"DIVIDER-gBYwO8Qw_3\",\"DIVIDER-83kwyFwpNl\"],\"id\":\"GRID_ID\",\"parents\":[\"ROOT_ID\"],\"type\":\"GRID\"},\"HEADER_ID\":{\"id\":\"HEADER_ID\",\"meta\":{\"text\":\"Person\"},\"type\":\"HEADER\"},\"ROOT_ID\":{\"children\":[\"GRID_ID\"],\"id\":\"ROOT_ID\",\"type\":\"ROOT\"},\"ROW-IUvjhGpjI\":{\"children\":[\"CHART-gUBonfpEfu\",\"CHART-_tHxzTYv3G\"],\"id\":\"ROW-IUvjhGpjI\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-kiDnX8f_d9\":{\"children\":[\"CHART-iDbO8sCO7s\"],\"id\":\"ROW-kiDnX8f_d9\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-xxT4JsbUi\":{\"children\":[\"CHART-nWcIaca73t\",\"CHART-XsJxSD2vxt\"],\"id\":\"ROW-xxT4JsbUi\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"}}", + "slices": [ + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.data_source", + "datasource_type": "table", + "id": 13, + "params": "{\"adhoc_filters\": [], \"datasource\": \"60__table\", \"date_filter\": false, \"filter_configs\": [{\"asc\": true, \"clearable\": true, \"column\": \"name\", \"key\": \"jXSVXn3gk\", \"label\": \"Data Source\", \"multiple\": true}], \"granularity_sqla\": null, \"instant_filtering\": true, \"queryFields\": {}, \"show_druid_time_granularity\": false, \"show_druid_time_origin\": false, \"show_sqla_time_column\": false, \"show_sqla_time_granularity\": false, \"slice_id\": 13, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"filter_box\", \"remote_id\": 13, \"datasource_name\": \"data_source\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Data Source Filter", + "viz_type": "filter_box" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Untitled Query 2-hW_lXt3eU", + "datasource_type": "table", + "id": 14, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"name\"], \"contribution\": false, \"datasource\": \"10__table\", \"granularity_sqla\": null, \"groupby\": [\"age\"], \"label_colors\": {\"Female\": \"#FF3399\", \"Male\": \"#3366FF\", \"Syn1k-UK\": \"#ff5a5f\", \"Syn5k-NL\": \"#7b0051\", \"Syn5k-PT\": \"#007A87\", \"Syn5k-SP\": \"#00d1c1\"}, \"metrics\": [{\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"count\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 52, \"is_dttm\": false, \"optionName\": \"_col_count\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": false, \"hasCustomLabel\": false, \"label\": \"MAX(count)\", \"optionName\": \"metric_dsbny4uupqu_xitbpo2zwoi\", \"sqlExpression\": null}], \"order_bars\": true, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": true, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": true, \"slice_id\": 14, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Age\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Count\", \"remote_id\": 14, \"datasource_name\": \"Untitled Query 2-hW_lXt3eU\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Age at first observation", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 4-Rh4xC8sII", + "datasource_type": "table", + "id": 16, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"supersetColors\", \"columns\": [\"gender\"], \"contribution\": true, \"datasource\": \"12__table\", \"granularity_sqla\": null, \"groupby\": [\"acronym\"], \"label_colors\": {\"Female\": \"#FF3399\", \"Male\": \"#3366FF\"}, \"metrics\": [{\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"number_of_persons\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 60, \"is_dttm\": false, \"optionName\": \"_col_number_of_persons\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": false, \"hasCustomLabel\": false, \"label\": \"MAX(number_of_persons)\", \"optionName\": \"metric_xwgqdrwbpcd_f5co556qml\", \"sqlExpression\": null}], \"order_bars\": true, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": true, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": true, \"show_legend\": true, \"slice_id\": 16, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 16, \"datasource_name\": \"admin user-Untitled Query 4-Rh4xC8sII\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Gender", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "null.Peter Rijnbeek-Age group at start of first observation-smvSJk6Hw", + "datasource_type": "table", + "id": 83, + "params": "{\"adhoc_filters\": [], \"all_columns\": [\"name\", \"age10\", \"age20\", \"age30\", \"age40\", \"age50\", \"age60\", \"age70\", \"age80\", \"age90\", \"age90p\"], \"color_pn\": true, \"datasource\": \"85__table\", \"groupby\": [], \"metrics\": [], \"order_by_cols\": [], \"order_desc\": true, \"percent_metrics\": [], \"queryFields\": {\"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"row_limit\": 1000, \"show_cell_bars\": false, \"slice_id\": 83, \"table_timestamp_format\": \"smart_date\", \"time_grain_sqla\": \"P1D\", \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"table\", \"remote_id\": 83, \"datasource_name\": \"Peter Rijnbeek-Age group at start of first observation-smvSJk6Hw\", \"schema\": \"null\", \"database_name\": \"Achilles\"}", + "slice_name": "Age at first observation", + "viz_type": "table" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Untitled Query 3-OTisQhOu9", + "datasource_type": "table", + "id": 15, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"name\"], \"contribution\": false, \"datasource\": \"11__table\", \"granularity_sqla\": \"Birth_year\", \"groupby\": [\"Birth_year\"], \"label_colors\": {\"Female\": \"#FF3399\", \"Male\": \"#3366FF\", \"Syn1k-UK\": \"#ff5a5f\", \"Syn5k-NL\": \"#7b0051\", \"Syn5k-PT\": \"#007A87\", \"Syn5k-SP\": \"#00d1c1\"}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"count\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 56, \"is_dttm\": false, \"optionName\": \"_col_count\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": false, \"hasCustomLabel\": false, \"label\": \"SUM(count)\", \"optionName\": \"metric_cpx4knmvyq_7kbv0oube0f\", \"sqlExpression\": null}], \"order_bars\": true, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": true, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": true, \"show_legend\": true, \"slice_id\": 15, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Year\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Count\", \"remote_id\": 15, \"datasource_name\": \"Untitled Query 3-OTisQhOu9\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Year of Birth", + "viz_type": "dist_bar" + } + } + ], + "slug": "person" + } + }, + { + "__Dashboard__": { + "css": null, + "dashboard_title": "Database Dashboard", + "description": null, + "json_metadata": "{\"default_filters\": \"{}\", \"expanded_slices\": {}, \"filter_scopes\": {\"69\": {\"slug\": {\"scope\": [\"ROOT_ID\"], \"immune\": []}}}, \"label_colors\": {\"FEMALE\": \"#FF3399\", \"MALE\": \"#3366FF\"}, \"refresh_frequency\": 0, \"timed_refresh_immune_slices\": [], \"remote_id\": 17}", + "position_json": "{\"CHART--kWqGf1JkH\":{\"children\":[],\"id\":\"CHART--kWqGf1JkH\",\"meta\":{\"chartId\":72,\"height\":50,\"sliceName\":\"Observation Period Start Dates\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-Dn6S4EA0Fg\"],\"type\":\"CHART\"},\"CHART-8z989jjeWz\":{\"children\":[],\"id\":\"CHART-8z989jjeWz\",\"meta\":{\"chartId\":73,\"height\":50,\"sliceName\":\"Observation Period End Dates\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-Dn6S4EA0Fg\"],\"type\":\"CHART\"},\"CHART-M8kUuHfF9A\":{\"children\":[],\"id\":\"CHART-M8kUuHfF9A\",\"meta\":{\"chartId\":70,\"height\":65,\"sliceName\":\"Months in Observation Period (Cumulative)\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-wQIVjE9wQw\"],\"type\":\"CHART\"},\"CHART-RS4gMlM6Q1\":{\"children\":[],\"id\":\"CHART-RS4gMlM6Q1\",\"meta\":{\"chartId\":71,\"height\":60,\"sliceName\":\"Patients in Observation Period per month\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-HYjdu2pLjn\"],\"type\":\"CHART\"},\"CHART-cBIbJQ2nIy\":{\"children\":[],\"id\":\"CHART-cBIbJQ2nIy\",\"meta\":{\"chartId\":74,\"height\":64,\"sliceName\":\"Year of Birth\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-9Y5S2iG5Y\"],\"type\":\"CHART\"},\"CHART-o4Kt5kGrBg\":{\"children\":[],\"id\":\"CHART-o4Kt5kGrBg\",\"meta\":{\"chartId\":69,\"height\":16,\"sliceName\":\"Datasource Filter\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-gAB5d9FHb1\"],\"type\":\"CHART\"},\"CHART-o9cOFxbkjW\":{\"children\":[],\"id\":\"CHART-o9cOFxbkjW\",\"meta\":{\"chartId\":75,\"height\":64,\"sliceName\":\"Gender Distribution\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-9Y5S2iG5Y\"],\"type\":\"CHART\"},\"CHART-o_dQEc98Dr\":{\"children\":[],\"id\":\"CHART-o_dQEc98Dr\",\"meta\":{\"chartId\":82,\"height\":14,\"sliceName\":\"Meta Data\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-etbk4arAir\"],\"type\":\"CHART\"},\"DASHBOARD_VERSION_KEY\":\"v2\",\"GRID_ID\":{\"children\":[\"ROW-etbk4arAir\",\"ROW-gAB5d9FHb1\",\"ROW-9Y5S2iG5Y\",\"ROW-wQIVjE9wQw\",\"ROW-HYjdu2pLjn\",\"ROW-Dn6S4EA0Fg\"],\"id\":\"GRID_ID\",\"parents\":[\"ROOT_ID\"],\"type\":\"GRID\"},\"HEADER_ID\":{\"id\":\"HEADER_ID\",\"meta\":{\"text\":\"Database Dashboard\"},\"type\":\"HEADER\"},\"ROOT_ID\":{\"children\":[\"GRID_ID\"],\"id\":\"ROOT_ID\",\"type\":\"ROOT\"},\"ROW-9Y5S2iG5Y\":{\"children\":[\"CHART-cBIbJQ2nIy\",\"CHART-o9cOFxbkjW\"],\"id\":\"ROW-9Y5S2iG5Y\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-Dn6S4EA0Fg\":{\"children\":[\"CHART--kWqGf1JkH\",\"CHART-8z989jjeWz\"],\"id\":\"ROW-Dn6S4EA0Fg\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-HYjdu2pLjn\":{\"children\":[\"CHART-RS4gMlM6Q1\"],\"id\":\"ROW-HYjdu2pLjn\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-etbk4arAir\":{\"children\":[\"CHART-o_dQEc98Dr\"],\"id\":\"ROW-etbk4arAir\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-gAB5d9FHb1\":{\"children\":[\"CHART-o4Kt5kGrBg\"],\"id\":\"ROW-gAB5d9FHb1\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-wQIVjE9wQw\":{\"children\":[\"CHART-M8kUuHfF9A\"],\"id\":\"ROW-wQIVjE9wQw\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"}}", + "slices": [ + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.data_source", + "datasource_type": "table", + "id": 69, + "params": "{\"adhoc_filters\": [], \"datasource\": \"60__table\", \"date_filter\": false, \"filter_configs\": [{\"asc\": true, \"clearable\": false, \"column\": \"acronym\", \"key\": \"TnqEIVXFw\", \"label\": \"Datasource\", \"multiple\": false, \"searchAllOptions\": false}], \"granularity_sqla\": \"release_date\", \"instant_filtering\": true, \"queryFields\": {}, \"show_druid_time_granularity\": false, \"show_druid_time_origin\": false, \"show_sqla_time_column\": false, \"show_sqla_time_granularity\": false, \"slice_id\": 69, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"filter_box\", \"remote_id\": 69, \"datasource_name\": \"data_source\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Datasource Filter", + "viz_type": "filter_box" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Andre Pedrosa-Untitled Query 2-j2rbCK3jb", + "datasource_type": "table", + "id": 70, + "params": "{\"adhoc_filters\": [], \"annotation_layers\": [], \"bar_stacked\": false, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"comparison_type\": \"values\", \"contribution\": false, \"datasource\": \"70__table\", \"granularity_sqla\": \"to_date\", \"groupby\": [], \"label_colors\": {}, \"left_margin\": \"auto\", \"line_interpolation\": \"linear\", \"metrics\": [{\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"comulative_sum\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 322, \"is_dttm\": false, \"optionName\": \"_col_comulative_sum\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": false, \"hasCustomLabel\": false, \"label\": \"MAX(comulative_sum)\", \"optionName\": \"metric_ykgievhqj9_0mwwiejdzhj9\", \"sqlExpression\": null}], \"order_desc\": false, \"reduce_x_ticks\": true, \"resample_method\": null, \"resample_rule\": null, \"rich_tooltip\": false, \"rolling_type\": \"None\", \"row_limit\": 1000, \"show_bar_value\": false, \"show_brush\": \"auto\", \"show_controls\": false, \"show_legend\": false, \"slice_id\": 70, \"time_grain_sqla\": \"P1M\", \"time_range\": \"No filter\", \"timeseries_limit_metric\": null, \"url_params\": {}, \"viz_type\": \"bar\", \"x_axis_format\": \"%d/%m/%Y\", \"x_axis_label\": \"Dates\", \"x_axis_showminmax\": true, \"x_ticks_layout\": \"auto\", \"y_axis_bounds\": [null, null], \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Number of Patients\", \"y_axis_showminmax\": true, \"y_log_scale\": false, \"remote_id\": 70, \"datasource_name\": \"Months in Observation Period (Cumulative) Query\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Months in Observation Period (Cumulative)", + "viz_type": "bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-Yz2m_VyTU", + "datasource_type": "table", + "id": 71, + "params": "{\"adhoc_filters\": [], \"annotation_layers\": [], \"bar_stacked\": false, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"comparison_type\": \"values\", \"contribution\": false, \"datasource\": \"25__table\", \"granularity_sqla\": \"date\", \"groupby\": [], \"label_colors\": {}, \"left_margin\": \"auto\", \"line_interpolation\": \"linear\", \"metrics\": [{\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"Nr_patients\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 138, \"is_dttm\": false, \"optionName\": \"_col_Nr_patients\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": false, \"label\": \"MAX(Nr_patients)\", \"optionName\": \"metric_5nb2ilf0kh6_tzbxvd2pmk\", \"sqlExpression\": null}], \"order_desc\": true, \"reduce_x_ticks\": true, \"resample_method\": null, \"resample_rule\": null, \"rich_tooltip\": true, \"rolling_type\": \"None\", \"row_limit\": 10000, \"show_bar_value\": false, \"show_brush\": \"auto\", \"show_controls\": false, \"show_legend\": false, \"time_grain_sqla\": \"P1D\", \"time_range\": \"No filter\", \"timeseries_limit_metric\": null, \"url_params\": {}, \"viz_type\": \"bar\", \"x_axis_format\": \"%d/%m/%Y\", \"x_axis_label\": \"Dates\", \"x_axis_showminmax\": true, \"x_ticks_layout\": \"auto\", \"y_axis_bounds\": [null, null], \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Number of Patients\", \"y_axis_showminmax\": true, \"y_log_scale\": false, \"remote_id\": 71, \"datasource_name\": \"Patients in Observation Period per month Query\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Patients in Observation Period per month", + "viz_type": "bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 2-OVOM0LBcs", + "datasource_type": "table", + "id": 72, + "params": "{\"adhoc_filters\": [], \"annotation_layers\": [], \"bar_stacked\": false, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"comparison_type\": \"values\", \"contribution\": false, \"datasource\": \"40__table\", \"granularity_sqla\": \"year_month\", \"groupby\": [], \"label_colors\": {\"MAX(Nr_patients)\": \"#7b0051\", \"MAX(comulative_sum)\": \"#007A87\", \"MAX(patient_count)\": \"#ff5a5f\"}, \"left_margin\": \"auto\", \"line_interpolation\": \"linear\", \"metrics\": [{\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"patient_count\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 213, \"is_dttm\": false, \"optionName\": \"_col_patient_count\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": false, \"label\": \"MAX(patient_count)\", \"optionName\": \"metric_h0m8rzh63kf_f2yh2arx25c\", \"sqlExpression\": null}], \"order_desc\": true, \"reduce_x_ticks\": true, \"resample_method\": null, \"resample_rule\": null, \"rich_tooltip\": true, \"rolling_type\": \"None\", \"row_limit\": 10000, \"show_bar_value\": false, \"show_brush\": \"auto\", \"show_controls\": false, \"show_legend\": false, \"slice_id\": 72, \"time_grain_sqla\": \"P1D\", \"time_range\": \"No filter\", \"timeseries_limit_metric\": null, \"url_params\": {}, \"viz_type\": \"bar\", \"x_axis_format\": \"%d/%m/%Y\", \"x_axis_label\": \"Dates\", \"x_axis_showminmax\": true, \"x_ticks_layout\": \"auto\", \"y_axis_bounds\": [null, null], \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Number of Patients\", \"y_axis_showminmax\": true, \"y_log_scale\": false, \"remote_id\": 72, \"datasource_name\": \"Observation Period Start Dates Query\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Observation Period Start Dates", + "viz_type": "bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 2-T7XwQxM_U", + "datasource_type": "table", + "id": 73, + "params": "{\"adhoc_filters\": [], \"annotation_layers\": [], \"bar_stacked\": false, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"comparison_type\": \"values\", \"contribution\": false, \"datasource\": \"39__table\", \"granularity_sqla\": \"year_month\", \"groupby\": [], \"label_colors\": {}, \"left_margin\": \"auto\", \"line_interpolation\": \"linear\", \"metrics\": [{\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"patient_count\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 210, \"is_dttm\": false, \"optionName\": \"_col_patient_count\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": false, \"hasCustomLabel\": false, \"label\": \"MAX(patient_count)\", \"optionName\": \"metric_lbm2uqrrxp_pmrc72c5e8i\", \"sqlExpression\": null}], \"order_desc\": true, \"reduce_x_ticks\": true, \"resample_method\": null, \"resample_rule\": null, \"rich_tooltip\": true, \"rolling_type\": \"None\", \"row_limit\": 10000, \"show_bar_value\": false, \"show_brush\": \"auto\", \"show_controls\": false, \"show_legend\": false, \"time_grain_sqla\": \"P1D\", \"time_range\": \"No filter\", \"timeseries_limit_metric\": null, \"url_params\": {}, \"viz_type\": \"bar\", \"x_axis_format\": \"%d/%m/%Y\", \"x_axis_label\": \"Number of Patients\", \"x_axis_showminmax\": true, \"x_ticks_layout\": \"auto\", \"y_axis_bounds\": [null, null], \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Dates\", \"y_axis_showminmax\": true, \"y_log_scale\": false, \"remote_id\": 73, \"datasource_name\": \"Observation Period End Dates Query\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Observation Period End Dates", + "viz_type": "bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Yeart of Birth Query", + "datasource_type": "table", + "id": 74, + "params": "{\"adhoc_filters\": [], \"annotation_layers\": [], \"bar_stacked\": false, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"comparison_type\": \"values\", \"contribution\": false, \"datasource\": \"72__table\", \"granularity_sqla\": \"to_date\", \"groupby\": [], \"label_colors\": {\"MAX(count_value)\": \"#ff5a5f\", \"MAX(patient_count)\": \"#7b0051\"}, \"left_margin\": \"auto\", \"line_interpolation\": \"linear\", \"metrics\": [{\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"count_value\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 331, \"is_dttm\": false, \"optionName\": \"_col_count_value\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": false, \"label\": \"MAX(count_value)\", \"optionName\": \"metric_nvb11g0k6b_arn2otb3akr\", \"sqlExpression\": null}], \"order_desc\": true, \"reduce_x_ticks\": true, \"resample_method\": null, \"resample_rule\": null, \"rich_tooltip\": true, \"rolling_type\": \"None\", \"row_limit\": 1000, \"show_bar_value\": false, \"show_brush\": \"auto\", \"show_controls\": false, \"show_legend\": false, \"slice_id\": 74, \"time_grain_sqla\": \"P1Y\", \"time_range\": \"No filter\", \"timeseries_limit_metric\": null, \"url_params\": {}, \"viz_type\": \"bar\", \"x_axis_format\": \"smart_date\", \"x_axis_label\": \"Number of Patients\", \"x_axis_showminmax\": true, \"x_ticks_layout\": \"auto\", \"y_axis_bounds\": [null, null], \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"Years\", \"y_axis_showminmax\": true, \"y_log_scale\": false, \"remote_id\": 74, \"datasource_name\": \"Yeart of Birth Query\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Year of Birth", + "viz_type": "bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Gender Distribution Query", + "datasource_type": "table", + "id": 75, + "params": "{\"adhoc_filters\": [{\"clause\": \"WHERE\", \"comparator\": \"\", \"expressionType\": \"SIMPLE\", \"filterOptionName\": \"filter_o7kky2eo8p_8qta0r70816\", \"isExtra\": false, \"isNew\": false, \"operator\": \"==\", \"sqlExpression\": null, \"subject\": \"slug\"}], \"color_scheme\": \"supersetColors\", \"datasource\": \"73__table\", \"donut\": false, \"granularity_sqla\": null, \"groupby\": [\"concept_name\"], \"label_colors\": {}, \"labels_outside\": true, \"metric\": {\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"count_value\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 334, \"is_dttm\": false, \"optionName\": \"_col_count_value\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": false, \"hasCustomLabel\": false, \"label\": \"MAX(count_value)\", \"optionName\": \"metric_aroar6vxd3p_upgopfh7ob8\", \"sqlExpression\": null}, \"number_format\": \"SMART_NUMBER\", \"pie_label_type\": \"key\", \"queryFields\": {\"groupby\": \"groupby\", \"metric\": \"metrics\"}, \"row_limit\": 1000, \"show_labels\": true, \"show_legend\": true, \"slice_id\": 75, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"pie\", \"remote_id\": 75, \"datasource_name\": \"Gender Distribution Query\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Gender Distribution", + "viz_type": "pie" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "null.Peter Rijnbeek-Untitled Query 2-jCYlfS520", + "datasource_type": "table", + "id": 82, + "params": "{\"adhoc_filters\": [], \"all_columns\": [\"name\", \"source_release_date\", \"cdm_release_date\", \"cdm_version\", \"vocabulary_version\"], \"color_pn\": true, \"datasource\": \"83__table\", \"groupby\": [], \"metrics\": [], \"order_by_cols\": [], \"order_desc\": true, \"percent_metrics\": [], \"queryFields\": {\"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"row_limit\": 1000, \"show_cell_bars\": true, \"slice_id\": 82, \"table_timestamp_format\": \"smart_date\", \"time_grain_sqla\": \"P1D\", \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"table\", \"remote_id\": 82, \"datasource_name\": \"Peter Rijnbeek-Untitled Query 2-jCYlfS520\", \"schema\": \"null\", \"database_name\": \"Achilles\"}", + "slice_name": "Meta Data", + "viz_type": "table" + } + } + ], + "slug": null + } + }, + { + "__Dashboard__": { + "css": null, + "dashboard_title": "General", + "description": null, + "json_metadata": "{\"default_filters\": \"{}\", \"expanded_slices\": {}, \"filter_scopes\": {\"43\": {\"country\": {\"scope\": [\"ROOT_ID\"], \"immune\": []}}, \"47\": {\"database_type\": {\"scope\": [\"ROOT_ID\"], \"immune\": []}}}, \"refresh_frequency\": 0, \"timed_refresh_immune_slices\": [], \"remote_id\": 10}", + "position_json": "{\"CHART-1KwGh2j-y7\":{\"children\":[],\"id\":\"CHART-1KwGh2j-y7\",\"meta\":{\"chartId\":48,\"height\":87,\"sliceName\":\"General - Database Types per Country\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-blDgrXLRaL\"],\"type\":\"CHART\"},\"CHART-2fGPCcNp2n\":{\"children\":[],\"id\":\"CHART-2fGPCcNp2n\",\"meta\":{\"chartId\":44,\"height\":70,\"sliceName\":\"General - World Map\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-PwJZx-afY\"],\"type\":\"CHART\"},\"CHART-7ETPqVcSSq\":{\"children\":[],\"id\":\"CHART-7ETPqVcSSq\",\"meta\":{\"chartId\":38,\"height\":68,\"sliceName\":\"General - Network Growth by Date\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-OYDj7R-s0\"],\"type\":\"CHART\"},\"CHART-9xmshOyUbi\":{\"children\":[],\"id\":\"CHART-9xmshOyUbi\",\"meta\":{\"chartId\":45,\"height\":70,\"sliceName\":\"General - Patients per Country\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-wM0KShgxh\"],\"type\":\"CHART\"},\"CHART-DoYAl5inPT\":{\"children\":[],\"id\":\"CHART-DoYAl5inPT\",\"meta\":{\"chartId\":47,\"height\":18,\"sliceName\":\"Database Type Filter\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-HOI5ottEp\"],\"type\":\"CHART\"},\"CHART-ECoe9mc9qZ\":{\"children\":[],\"id\":\"CHART-ECoe9mc9qZ\",\"meta\":{\"chartId\":43,\"height\":18,\"sliceName\":\"Country Filter\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-HOI5ottEp\"],\"type\":\"CHART\"},\"CHART-Ktvcah2Rsz\":{\"children\":[],\"id\":\"CHART-Ktvcah2Rsz\",\"meta\":{\"chartId\":67,\"height\":68,\"sliceName\":\"Total Number of Patients\",\"width\":6},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-OYDj7R-s0\"],\"type\":\"CHART\"},\"CHART-XfqzLlRIKE\":{\"children\":[],\"id\":\"CHART-XfqzLlRIKE\",\"meta\":{\"chartId\":82,\"height\":26,\"sliceName\":\"Meta Data\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-zCl7Skz2K\"],\"type\":\"CHART\"},\"DASHBOARD_VERSION_KEY\":\"v2\",\"GRID_ID\":{\"children\":[\"ROW-HOI5ottEp\",\"ROW-OYDj7R-s0\",\"ROW-wM0KShgxh\",\"ROW-blDgrXLRaL\",\"ROW-PwJZx-afY\",\"ROW-zCl7Skz2K\"],\"id\":\"GRID_ID\",\"parents\":[\"ROOT_ID\"],\"type\":\"GRID\"},\"HEADER_ID\":{\"id\":\"HEADER_ID\",\"meta\":{\"text\":\"General\"},\"type\":\"HEADER\"},\"ROOT_ID\":{\"children\":[\"GRID_ID\"],\"id\":\"ROOT_ID\",\"type\":\"ROOT\"},\"ROW-HOI5ottEp\":{\"children\":[\"CHART-DoYAl5inPT\",\"CHART-ECoe9mc9qZ\"],\"id\":\"ROW-HOI5ottEp\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-OYDj7R-s0\":{\"children\":[\"CHART-Ktvcah2Rsz\",\"CHART-7ETPqVcSSq\"],\"id\":\"ROW-OYDj7R-s0\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-PwJZx-afY\":{\"children\":[\"CHART-2fGPCcNp2n\"],\"id\":\"ROW-PwJZx-afY\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-blDgrXLRaL\":{\"children\":[\"CHART-1KwGh2j-y7\"],\"id\":\"ROW-blDgrXLRaL\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-wM0KShgxh\":{\"children\":[\"CHART-9xmshOyUbi\"],\"id\":\"ROW-wM0KShgxh\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-zCl7Skz2K\":{\"children\":[\"CHART-XfqzLlRIKE\"],\"id\":\"ROW-zCl7Skz2K\",\"meta\":{\"0\":\"ROOT_ID\",\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"}}", + "slices": [ + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Untitled Query 5-IExD-Tsxs", + "datasource_type": "table", + "id": 38, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"source\"], \"contribution\": false, \"datasource\": \"34__table\", \"granularity_sqla\": \"release_date\", \"groupby\": [\"release_date\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"count\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 183, \"is_dttm\": false, \"optionName\": \"_col_count\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": false, \"hasCustomLabel\": false, \"label\": \"SUM(count)\", \"optionName\": \"metric_j73605q0028_v113p5hp1fk\", \"sqlExpression\": null}], \"order_bars\": true, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": true, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": true, \"show_legend\": true, \"slice_id\": 38, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 38, \"datasource_name\": \"Untitled Query 5-IExD-Tsxs\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "General - Network Growth by Date", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Untitled Query 2-gUfsW6Np2", + "datasource_type": "table", + "id": 43, + "params": "{\"adhoc_filters\": [], \"datasource\": \"42__table\", \"date_filter\": false, \"filter_configs\": [{\"asc\": true, \"clearable\": true, \"column\": \"country\", \"key\": \"aUpt-p5_Y\", \"label\": \"Country\", \"multiple\": true}], \"granularity_sqla\": null, \"instant_filtering\": true, \"queryFields\": {}, \"show_druid_time_granularity\": false, \"show_druid_time_origin\": false, \"show_sqla_time_column\": false, \"show_sqla_time_granularity\": false, \"slice_id\": 43, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"filter_box\", \"remote_id\": 43, \"datasource_name\": \"Untitled Query 2-gUfsW6Np2\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Country Filter", + "viz_type": "filter_box" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Untitled Query 2-4l_EYigMw", + "datasource_type": "table", + "id": 44, + "params": "{\"adhoc_filters\": [], \"all_columns_x\": \"longitude\", \"all_columns_y\": \"latitude\", \"clustering_radius\": \"60\", \"datasource\": \"43__table\", \"global_opacity\": 1, \"granularity_sqla\": \"release_date\", \"groupby\": [], \"mapbox_color\": \"rgb(0, 122, 135)\", \"mapbox_label\": [], \"mapbox_style\": \"mapbox://styles/mapbox/light-v9\", \"pandas_aggfunc\": \"sum\", \"point_radius\": \"Auto\", \"point_radius_unit\": \"Pixels\", \"queryFields\": {\"groupby\": \"groupby\"}, \"render_while_dragging\": true, \"row_limit\": null, \"slice_id\": 44, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viewport_latitude\": 46.586847765032815, \"viewport_longitude\": -2.091453679580307, \"viewport_zoom\": 5.002977294115867, \"viz_type\": \"mapbox\", \"remote_id\": 44, \"datasource_name\": \"Untitled Query 2-4l_EYigMw\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "General - World Map", + "viz_type": "mapbox" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 2-shJVbL7EX", + "datasource_type": "table", + "id": 45, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": false, \"bottom_margin\": \"auto\", \"color_scheme\": \"d3Category20\", \"columns\": [], \"contribution\": false, \"datasource\": \"44__table\", \"granularity_sqla\": null, \"groupby\": [\"country\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"patient_count\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 234, \"is_dttm\": false, \"optionName\": \"_col_patient_count\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Patients\", \"optionName\": \"metric_c7b7cws7pcc_ohfme4oxs4t\", \"sqlExpression\": null}], \"order_bars\": false, \"queryFields\": {\"columns\": \"groupby\", \"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"reduce_x_ticks\": false, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": false, \"show_legend\": false, \"slice_id\": 45, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Country\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"N\\u00ba of Patients\", \"remote_id\": 45, \"datasource_name\": \"admin user-Untitled Query 2-shJVbL7EX\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "General - Patients per Country", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Untitled Query-Pf9p33tCv", + "datasource_type": "table", + "id": 47, + "params": "{\"adhoc_filters\": [], \"datasource\": \"45__table\", \"date_filter\": false, \"filter_configs\": [{\"asc\": true, \"clearable\": true, \"column\": \"database_type\", \"key\": \"BTgn7F3pm\", \"label\": \"Type\", \"multiple\": true}], \"granularity_sqla\": null, \"instant_filtering\": true, \"show_druid_time_granularity\": false, \"show_druid_time_origin\": false, \"show_sqla_time_column\": false, \"show_sqla_time_granularity\": false, \"slice_id\": 47, \"time_range\": \"No filter\", \"viz_type\": \"filter_box\", \"remote_id\": 47, \"datasource_name\": \"Untitled Query-Pf9p33tCv\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Database Type Filter", + "viz_type": "filter_box" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 3-HNnjlOJDx", + "datasource_type": "table", + "id": 48, + "params": "{\"adhoc_filters\": [], \"all_columns_x\": \"country\", \"all_columns_y\": \"database_type\", \"bottom_margin\": \"auto\", \"canvas_image_rendering\": \"pixelated\", \"datasource\": \"15__table\", \"granularity_sqla\": null, \"left_margin\": 75, \"linear_color_scheme\": \"purples\", \"metric\": {\"aggregate\": \"SUM\", \"column\": {\"column_name\": \"Nr_patients\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 73, \"is_dttm\": false, \"optionName\": \"_col_Nr_patients\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Number of patients\", \"optionName\": \"metric_2yivtqo4lqe_jw393somnp\", \"sqlExpression\": null}, \"normalize_across\": \"heatmap\", \"normalized\": false, \"row_limit\": null, \"show_legend\": true, \"show_perc\": false, \"show_values\": false, \"slice_id\": 48, \"sort_x_axis\": \"alpha_asc\", \"sort_y_axis\": \"alpha_asc\", \"time_range\": \"No filter\", \"url_params\": {}, \"viz_type\": \"heatmap\", \"xscale_interval\": null, \"y_axis_bounds\": [null, null], \"y_axis_format\": \"SMART_NUMBER\", \"yscale_interval\": null, \"remote_id\": 48, \"datasource_name\": \"admin user-Untitled Query 3-HNnjlOJDx\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "General - Database Types per Country", + "viz_type": "heatmap" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Landing Page - Patients Growth query", + "datasource_type": "table", + "id": 67, + "params": "{\"adhoc_filters\": [], \"color_picker\": {\"a\": 1, \"b\": 135, \"g\": 122, \"r\": 0}, \"datasource\": \"66__table\", \"granularity_sqla\": \"release_date\", \"header_font_size\": 0.3, \"metric\": {\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"sum\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 305, \"is_dttm\": false, \"optionName\": \"_col_sum\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": false, \"label\": \"MAX(sum)\", \"optionName\": \"metric_hiuu6ucrfkk_s8053mwxuz\", \"sqlExpression\": null}, \"queryFields\": {\"metric\": \"metrics\"}, \"rolling_type\": \"None\", \"show_trend_line\": true, \"slice_id\": 67, \"start_y_axis_at_zero\": true, \"subheader_font_size\": 0.125, \"time_grain_sqla\": \"P1D\", \"time_range\": \"No filter\", \"time_range_endpoints\": [\"unknown\", \"inclusive\"], \"url_params\": {}, \"viz_type\": \"big_number\", \"y_axis_format\": \"SMART_NUMBER\", \"remote_id\": 67, \"datasource_name\": \"Landing Page - Patients Growth query\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Total Number of Patients", + "viz_type": "big_number" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "null.Peter Rijnbeek-Untitled Query 2-jCYlfS520", + "datasource_type": "table", + "id": 82, + "params": "{\"adhoc_filters\": [], \"all_columns\": [\"name\", \"source_release_date\", \"cdm_release_date\", \"cdm_version\", \"vocabulary_version\"], \"color_pn\": true, \"datasource\": \"83__table\", \"groupby\": [], \"metrics\": [], \"order_by_cols\": [], \"order_desc\": true, \"percent_metrics\": [], \"queryFields\": {\"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"row_limit\": 1000, \"show_cell_bars\": true, \"slice_id\": 82, \"table_timestamp_format\": \"smart_date\", \"time_grain_sqla\": \"P1D\", \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"table\", \"remote_id\": 82, \"datasource_name\": \"Peter Rijnbeek-Untitled Query 2-jCYlfS520\", \"schema\": \"null\", \"database_name\": \"Achilles\"}", + "slice_name": "Meta Data", + "viz_type": "table" + } + } + ], + "slug": "general" + } + }, + { + "__Dashboard__": { + "css": null, + "dashboard_title": "Visit", + "description": null, + "json_metadata": "{\"default_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\", \"expanded_slices\": {}, \"filter_scopes\": {\"13\": {\"name\": {\"scope\": [\"ROOT_ID\"], \"immune\": []}}}, \"refresh_frequency\": 0, \"timed_refresh_immune_slices\": [], \"remote_id\": 12}", + "position_json": "{\"CHART-3MKl_PHkxV\":{\"children\":[],\"id\":\"CHART-3MKl_PHkxV\",\"meta\":{\"chartId\":35,\"height\":88,\"sliceName\":\"Visit - Types\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-rwkC5ilame\"],\"type\":\"CHART\"},\"CHART-hGDF771Xsv\":{\"children\":[],\"id\":\"CHART-hGDF771Xsv\",\"meta\":{\"chartId\":13,\"height\":17,\"sliceName\":\"Data Source Filter\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-_E-RhPvzfA\"],\"type\":\"CHART\"},\"CHART-qRhxIzmh3h\":{\"children\":[],\"id\":\"CHART-qRhxIzmh3h\",\"meta\":{\"chartId\":81,\"height\":42,\"sliceName\":\"Visit Type Table\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-ht1TASs2b\"],\"type\":\"CHART\"},\"DASHBOARD_VERSION_KEY\":\"v2\",\"DIVIDER-QRqyLpi9gr\":{\"children\":[],\"id\":\"DIVIDER-QRqyLpi9gr\",\"meta\":{},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"DIVIDER\"},\"GRID_ID\":{\"children\":[\"ROW--cbqRbtdg\",\"ROW-_E-RhPvzfA\",\"ROW-ht1TASs2b\",\"DIVIDER-QRqyLpi9gr\",\"ROW-rwkC5ilame\"],\"id\":\"GRID_ID\",\"parents\":[\"ROOT_ID\"],\"type\":\"GRID\"},\"HEADER_ID\":{\"id\":\"HEADER_ID\",\"meta\":{\"text\":\"Visit\"},\"type\":\"HEADER\"},\"MARKDOWN-n3XzMJvUv5\":{\"children\":[],\"id\":\"MARKDOWN-n3XzMJvUv5\",\"meta\":{\"code\":\"This dashboard shows the different types of visits per data source (see [Visit Occurence Table](https://ohdsi.github.io/CommonDataModel/cdm531.html#visit_occurrence))\",\"height\":6,\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW--cbqRbtdg\"],\"type\":\"MARKDOWN\"},\"ROOT_ID\":{\"children\":[\"GRID_ID\"],\"id\":\"ROOT_ID\",\"type\":\"ROOT\"},\"ROW--cbqRbtdg\":{\"children\":[\"MARKDOWN-n3XzMJvUv5\"],\"id\":\"ROW--cbqRbtdg\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-_E-RhPvzfA\":{\"children\":[\"CHART-hGDF771Xsv\"],\"id\":\"ROW-_E-RhPvzfA\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-ht1TASs2b\":{\"children\":[\"CHART-qRhxIzmh3h\"],\"id\":\"ROW-ht1TASs2b\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-rwkC5ilame\":{\"children\":[\"CHART-3MKl_PHkxV\"],\"id\":\"ROW-rwkC5ilame\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"}}", + "slices": [ + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.data_source", + "datasource_type": "table", + "id": 13, + "params": "{\"adhoc_filters\": [], \"datasource\": \"60__table\", \"date_filter\": false, \"filter_configs\": [{\"asc\": true, \"clearable\": true, \"column\": \"name\", \"key\": \"jXSVXn3gk\", \"label\": \"Data Source\", \"multiple\": true}], \"granularity_sqla\": null, \"instant_filtering\": true, \"queryFields\": {}, \"show_druid_time_granularity\": false, \"show_druid_time_origin\": false, \"show_sqla_time_column\": false, \"show_sqla_time_granularity\": false, \"slice_id\": 13, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"filter_box\", \"remote_id\": 13, \"datasource_name\": \"data_source\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Data Source Filter", + "viz_type": "filter_box" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.admin user-Untitled Query 2-JMjrFNhp8", + "datasource_type": "table", + "id": 35, + "params": "{\"adhoc_filters\": [], \"bar_stacked\": true, \"bottom_margin\": \"auto\", \"color_scheme\": \"bnbColors\", \"columns\": [\"Observation\"], \"contribution\": true, \"datasource\": \"28__table\", \"granularity_sqla\": null, \"groupby\": [\"name\"], \"label_colors\": {}, \"metrics\": [{\"aggregate\": \"MAX\", \"column\": {\"column_name\": \"Nr_Observations\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 150, \"is_dttm\": false, \"optionName\": \"_col_Nr_Observations\", \"python_date_format\": null, \"type\": \"INT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"fromFormData\": true, \"hasCustomLabel\": true, \"label\": \"Observations\", \"optionName\": \"metric_5sxmx1s2u9j_ugpu7x8q3e\", \"sqlExpression\": null}], \"order_bars\": true, \"reduce_x_ticks\": true, \"row_limit\": null, \"show_bar_value\": false, \"show_controls\": true, \"show_legend\": true, \"slice_id\": 35, \"time_range\": \"No filter\", \"url_params\": {}, \"viz_type\": \"dist_bar\", \"x_axis_label\": \"Databases\", \"x_ticks_layout\": \"auto\", \"y_axis_format\": \"SMART_NUMBER\", \"y_axis_label\": \"\", \"remote_id\": 35, \"datasource_name\": \"admin user-Untitled Query 2-JMjrFNhp8\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Visit - Types", + "viz_type": "dist_bar" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "null.Peter Rijnbeek-Visit Type Table-dQ22vpz3e", + "datasource_type": "table", + "id": 81, + "params": "{\"adhoc_filters\": [], \"all_columns\": [\"name\", \"Type\", \"Count\"], \"color_pn\": true, \"datasource\": \"82__table\", \"groupby\": [], \"metrics\": [], \"order_by_cols\": [], \"order_desc\": true, \"percent_metrics\": [], \"queryFields\": {\"groupby\": \"groupby\", \"metrics\": \"metrics\"}, \"row_limit\": 1000, \"show_cell_bars\": false, \"slice_id\": 81, \"table_timestamp_format\": \"smart_date\", \"time_grain_sqla\": \"P1D\", \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"table\", \"remote_id\": 81, \"datasource_name\": \"Peter Rijnbeek-Visit Type Table-dQ22vpz3e\", \"schema\": \"null\", \"database_name\": \"Achilles\"}", + "slice_name": "Visit Type Table", + "viz_type": "table" + } + } + ], + "slug": "visit" + } + }, + { + "__Dashboard__": { + "css": ".button-container {\r\n display: none !important;\r\n}\r\n.favstar {\r\n display: none !important;\r\n}", + "dashboard_title": "Data Domains", + "description": null, + "json_metadata": "{\"default_filters\": \"{}\", \"expanded_slices\": {}, \"filter_scopes\": {\"13\": {\"name\": {\"immune\": [], \"scope\": [\"ROOT_ID\"]}}}, \"refresh_frequency\": 0, \"timed_refresh_immune_slices\": [], \"remote_id\": 11}", + "position_json": "{\"CHART-HDXeZ20Xer\":{\"children\":[],\"id\":\"CHART-HDXeZ20Xer\",\"meta\":{\"chartId\":13,\"height\":16,\"sliceName\":\"Data Source Filter\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-2QdcSfvQC\"],\"type\":\"CHART\"},\"CHART-KE5LQpz4oP\":{\"children\":[],\"id\":\"CHART-KE5LQpz4oP\",\"meta\":{\"chartId\":17,\"height\":78,\"sliceName\":\"Data domains - Number of records per peson\",\"width\":12},\"parents\":[\"ROOT_ID\",\"GRID_ID\",\"ROW-aQBrShv5F\"],\"type\":\"CHART\"},\"DASHBOARD_VERSION_KEY\":\"v2\",\"GRID_ID\":{\"children\":[\"ROW-2QdcSfvQC\",\"ROW-aQBrShv5F\"],\"id\":\"GRID_ID\",\"parents\":[\"ROOT_ID\"],\"type\":\"GRID\"},\"HEADER_ID\":{\"id\":\"HEADER_ID\",\"meta\":{\"text\":\"Data Domains\"},\"type\":\"HEADER\"},\"ROOT_ID\":{\"children\":[\"GRID_ID\"],\"id\":\"ROOT_ID\",\"type\":\"ROOT\"},\"ROW-2QdcSfvQC\":{\"children\":[\"CHART-HDXeZ20Xer\"],\"id\":\"ROW-2QdcSfvQC\",\"meta\":{\"0\":\"ROOT_ID\",\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"},\"ROW-aQBrShv5F\":{\"children\":[\"CHART-KE5LQpz4oP\"],\"id\":\"ROW-aQBrShv5F\",\"meta\":{\"background\":\"BACKGROUND_TRANSPARENT\"},\"parents\":[\"ROOT_ID\",\"GRID_ID\"],\"type\":\"ROW\"}}", + "slices": [ + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.data_source", + "datasource_type": "table", + "id": 13, + "params": "{\"adhoc_filters\": [], \"datasource\": \"60__table\", \"date_filter\": false, \"filter_configs\": [{\"asc\": true, \"clearable\": true, \"column\": \"name\", \"key\": \"jXSVXn3gk\", \"label\": \"Data Source\", \"multiple\": true}], \"granularity_sqla\": null, \"instant_filtering\": true, \"queryFields\": {}, \"show_druid_time_granularity\": false, \"show_druid_time_origin\": false, \"show_sqla_time_column\": false, \"show_sqla_time_granularity\": false, \"slice_id\": 13, \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {\"preselect_filters\": \"{\\\"13\\\": {\\\"name\\\": [\\\"Integrated Primary Care Information\\\"]}}\"}, \"viz_type\": \"filter_box\", \"remote_id\": 13, \"datasource_name\": \"data_source\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Data Source Filter", + "viz_type": "filter_box" + } + }, + { + "__Slice__": { + "cache_timeout": null, + "datasource_name": "public.Untitled Query 2-QPQHc1uh6", + "datasource_type": "table", + "id": 17, + "params": "{\"adhoc_filters\": [], \"all_columns_x\": \"name\", \"all_columns_y\": \"data_domain\", \"bottom_margin\": \"auto\", \"canvas_image_rendering\": \"pixelated\", \"datasource\": \"14__table\", \"granularity_sqla\": null, \"left_margin\": \"auto\", \"linear_color_scheme\": \"greens\", \"metric\": {\"aggregate\": \"AVG\", \"column\": {\"column_name\": \"records_per_person\", \"description\": null, \"expression\": null, \"filterable\": true, \"groupby\": true, \"id\": 68, \"is_dttm\": false, \"optionName\": \"_col_records_per_person\", \"python_date_format\": null, \"type\": \"OBJECT\", \"verbose_name\": null}, \"expressionType\": \"SIMPLE\", \"hasCustomLabel\": true, \"isNew\": false, \"label\": \"avg records per person\", \"optionName\": \"metric_zx7vov5aux_cmnw1nknahk\", \"sqlExpression\": null}, \"normalize_across\": \"heatmap\", \"normalized\": false, \"queryFields\": {\"metric\": \"metrics\"}, \"row_limit\": null, \"show_legend\": true, \"show_perc\": true, \"show_values\": false, \"slice_id\": 17, \"sort_x_axis\": \"alpha_asc\", \"sort_y_axis\": \"alpha_asc\", \"time_range\": \"No filter\", \"time_range_endpoints\": [\"inclusive\", \"exclusive\"], \"url_params\": {}, \"viz_type\": \"heatmap\", \"xscale_interval\": null, \"y_axis_bounds\": [null, null], \"y_axis_format\": \"SMART_NUMBER\", \"yscale_interval\": null, \"remote_id\": 17, \"datasource_name\": \"Untitled Query 2-QPQHc1uh6\", \"schema\": \"public\", \"database_name\": \"Achilles\"}", + "slice_name": "Average number of records per person", + "viz_type": "heatmap" + } + } + ], + "slug": "data-domains" + } + } + ], + "datasources": [ + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-21T16:47:17" + }, + "column_name": "name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-21T16:47:17" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 66, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 14, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-21T16:47:17" + }, + "column_name": "data_domain", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-21T16:47:17" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 67, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 14, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-21T16:47:17" + }, + "column_name": "records_per_person", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-21T16:47:17" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 68, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 14, + "type": "OBJECT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-29T15:29:07" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-09-29T15:29:07" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 481, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 14, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-21T16:47:17" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-21T16:47:17" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 14, + "metric_name": "count", + "metric_type": null, + "table_id": 14, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 14, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "SELECT \r\n source.name,\r\n source.acronym,\r\n case \r\n when analysis_id = 201 then 'Visit'\r\n when analysis_id = 401 then 'Condition'\r\n when analysis_id = 501 then 'Death'\r\n when analysis_id = 601 then 'Procedure'\r\n when analysis_id = 701 then 'Drug Exposure'\r\n when analysis_id = 801 then 'Observation'\r\n when analysis_id = 1801 then 'Measurement'\r\n when analysis_id = 2101 then 'Device'\r\n when analysis_id = 2201 then 'Note'\r\n end as Data_Domain,\r\n SUM(count_value) /AVG(num_persons) as \"records_per_person\"\r\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\nINNER JOIN (SELECT data_source_id , count_value as num_persons FROM achilles_results WHERE analysis_id = 1) counts\r\nON achilles.data_source_id = counts.data_source_id \r\nGROUP BY analysis_id, source.name, source.acronym\r\nHAVING analysis_id IN (201, 401, 501, 601, 701, 801, 1801, 2101, 2201)", + "table_name": "Untitled Query 2-QPQHc1uh6", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-19T16:14:57" + }, + "column_name": "concept_id", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-24T16:32:05" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 88, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 19, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-19T16:14:57" + }, + "column_name": "concept_name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-24T16:32:05" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 89, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 19, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-19T16:14:57" + }, + "column_name": "domain_id", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-24T16:32:05" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 90, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 19, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-19T16:14:57" + }, + "column_name": "Occurrence_count", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-24T16:32:05" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 92, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 19, + "type": "OBJECT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-19T16:14:57" + }, + "column_name": "Person_count", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-24T16:32:05" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 93, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 19, + "type": "OBJECT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-19T16:14:57" + }, + "column_name": "magnitude_occurrences", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-24T16:32:05" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 94, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 19, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-19T16:16:54" + }, + "column_name": "source_name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-24T16:32:05" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 91, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 19, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-29T15:37:02" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-09-29T15:37:02" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 488, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 19, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-19T16:14:57" + }, + "column_name": "magnitude_persons", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-24T16:32:05" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 95, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 19, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-24T16:32:05" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-24T16:32:05" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 19, + "metric_name": "count", + "metric_type": null, + "table_id": 19, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 19, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "SELECT\r\n q1.concept_id AS concept_id,\r\n q1.concept_name AS concept_name,\r\n q1.domain_id,\r\n source.name AS source_name,\r\n source.acronym,\r\n sum(q1.count_value) as \"Occurrence_count\",\r\n sum(q1.count_person) as \"Person_count\",\r\n CASE \r\n WHEN sum(q1.count_value)<=10 THEN '<=10'\r\n WHEN sum(q1.count_value)<=100 THEN '11-10\u02c62'\r\n WHEN sum(q1.count_value)<=1000 THEN '10\u02c62-10\u02c63'\r\n WHEN sum(q1.count_value)<=10000 THEN '10\u02c63-10\u02c64'\r\n WHEN sum(q1.count_value)<=100000 THEN '10\u02c64-10\u02c65'\r\n WHEN sum(q1.count_value)<=1000000 THEN '10\u02c65-10\u02c66'\r\n ELSE '>10\u02c66'\r\n END as \"magnitude_occurrences\",\r\n CASE \r\n WHEN sum(q1.count_person)<=10 THEN '<=10'\r\n WHEN sum(q1.count_person)<=100 THEN '11-10\u02c62'\r\n WHEN sum(q1.count_person)<=1000 THEN '10\u02c62-10\u02c63'\r\n WHEN sum(q1.count_person)<=10000 THEN '10\u02c63-10\u02c64'\r\n WHEN sum(q1.count_person)<=100000 THEN '10\u02c64-10\u02c65'\r\n WHEN sum(q1.count_person)<=1000000 THEN '10\u02c65-10\u02c66'\r\n ELSE '>10\u02c66'\r\n END AS \"magnitude_persons\"\r\nFROM (SELECT analysis_id,\r\n stratum_1 concept_id,\r\n data_source_id,\r\n concept_name,\r\n domain_id,\r\n count_value, 0 as count_person\r\n FROM achilles_results\r\n JOIN concept ON cast(stratum_1 AS BIGINT)=concept_id\r\n WHERE analysis_id in (201, 301, 401, 601, 701, 801, 901, 1001, 1801)\r\n UNION (SELECT analysis_id,\r\n stratum_1 concept_id,\r\n data_source_id,\r\n concept_name,\r\n domain_id,\r\n 0 as count_value,\r\n sum(count_value) as count_person\r\n FROM achilles_results\r\n JOIN concept on cast(stratum_1 as BIGINT)=concept_id\r\n WHERE analysis_id in (202, 401, 601, 701, 801, 901, 1001, 1801)\r\n GROUP BY analysis_id,stratum_1,data_source_id,concept_name,domain_id) ) as q1\r\n INNER JOIN public.data_source AS source ON q1.data_source_id=source.id\r\nGROUP BY q1.concept_id,q1.concept_name,q1.domain_id,source.name, acronym\r\nORDER BY \"Person_count\" desc", + "table_name": "admin user-Untitled Query 5-3i9mLe1yw", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-27T12:21:50" + }, + "column_name": "name", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-27T12:20:47" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 458, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 98, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-27T12:21:50" + }, + "column_name": "concept_name", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-27T12:20:47" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 459, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 98, + "type": "STRING", + "verbose_name": "visit_type" + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-27T12:21:50" + }, + "column_name": "num_persons", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-27T12:20:47" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 460, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 98, + "type": "INT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-27T12:21:50" + }, + "column_name": "percent_persons", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-27T12:20:47" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 461, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 98, + "type": null, + "verbose_name": "persons (%)" + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-27T12:21:50" + }, + "column_name": "records_per_person", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-27T12:20:47" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 462, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 98, + "type": null, + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-29T15:35:52" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-09-29T15:35:52" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 487, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 98, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-27T12:20:47" + }, + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-27T12:20:47" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 101, + "metric_name": "count", + "metric_type": null, + "table_id": 98, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 98, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "SELECT\r\n name,\r\n acronym,\r\n concept.concept_name,\r\n ar1.count_value AS num_persons,\r\n round(100.0 * ar1.count_value / denom.count_value, 2) AS percent_persons,\r\n round(1.0 * ar2.count_value / ar1.count_value, 2) AS records_per_person\r\nFROM (\r\n SELECT *\r\n FROM achilles_results WHERE analysis_id = 200) AS ar1\r\n JOIN (\r\n SELECT *\r\n FROM achilles_results WHERE analysis_id = 201) AS ar2\r\n ON ar1.stratum_1 = ar2.stratum_1 AND ar1.data_source_id = ar2.data_source_id\r\n JOIN (\r\n SELECT *\r\n FROM achilles_results WHERE analysis_id = 1) AS denom\r\n ON ar1.data_source_id = denom.data_source_id\r\n JOIN data_source ON data_source.id = ar1.data_source_id\r\n JOIN concept ON CAST(ar1.stratum_1 AS INTEGER) = concept_id\r\nORDER BY ar1.data_source_id, ar1.count_value DESC", + "table_name": "Peter Rijnbeek-Visit Type Table v2-zZU86Qvwj", + "template_params": null + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-29T09:13:59" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-07-10T10:48:06" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 320, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 70, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-07-10T11:06:07" + }, + "column_name": "comulative_sum", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-07-10T10:48:06" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 322, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 70, + "type": "OBJECT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-07-10T11:03:15" + }, + "column_name": "to_date", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-07-10T10:48:06" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 321, + "is_active": null, + "is_dttm": true, + "python_date_format": null, + "table_id": 70, + "type": "DATETIME", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-07-10T10:48:06" + }, + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-07-10T10:48:06" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 70, + "metric_name": "count", + "metric_type": null, + "table_id": 70, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 70, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "SELECT source.acronym,\r\n TO_DATE(stratum_1, 'YYYYMM'),\r\n SUM(count_value) OVER (PARTITION BY source.acronym ORDER BY TO_DATE(stratum_1, 'YYYYMM') ASC) as comulative_sum\r\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\nWHERE analysis_id = 110", + "table_name": "Months in Observation Period (Cumulative) Query", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T15:08:00" + }, + "column_name": "age90", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T15:05:26" + }, + "description": null, + "expression": null, + "filterable": false, + "groupby": true, + "id": 408, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 85, + "type": null, + "verbose_name": "80-90" + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T15:08:00" + }, + "column_name": "age90p", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T15:05:26" + }, + "description": null, + "expression": null, + "filterable": false, + "groupby": true, + "id": 409, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 85, + "type": null, + "verbose_name": "90+" + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-29T15:27:38" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-09-29T15:27:38" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 479, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 85, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T15:08:00" + }, + "column_name": "name", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T15:05:26" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 399, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 85, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T15:08:00" + }, + "column_name": "age10", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T15:05:26" + }, + "description": null, + "expression": null, + "filterable": false, + "groupby": true, + "id": 400, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 85, + "type": null, + "verbose_name": "0-10" + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T15:08:00" + }, + "column_name": "age20", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T15:05:26" + }, + "description": null, + "expression": null, + "filterable": false, + "groupby": true, + "id": 401, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 85, + "type": null, + "verbose_name": "10-20" + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T15:08:00" + }, + "column_name": "age30", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T15:05:26" + }, + "description": null, + "expression": null, + "filterable": false, + "groupby": true, + "id": 402, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 85, + "type": null, + "verbose_name": "20-30" + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T15:08:00" + }, + "column_name": "age40", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T15:05:26" + }, + "description": null, + "expression": null, + "filterable": false, + "groupby": true, + "id": 403, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 85, + "type": null, + "verbose_name": "30-40" + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T15:08:00" + }, + "column_name": "age50", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T15:05:26" + }, + "description": null, + "expression": null, + "filterable": false, + "groupby": true, + "id": 404, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 85, + "type": null, + "verbose_name": "40-50" + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T15:08:00" + }, + "column_name": "age60", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T15:05:26" + }, + "description": null, + "expression": null, + "filterable": false, + "groupby": true, + "id": 405, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 85, + "type": null, + "verbose_name": "50-60" + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T15:08:00" + }, + "column_name": "age70", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T15:05:26" + }, + "description": null, + "expression": null, + "filterable": false, + "groupby": true, + "id": 406, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 85, + "type": null, + "verbose_name": "60-70" + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T15:08:00" + }, + "column_name": "age80", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T15:05:26" + }, + "description": null, + "expression": null, + "filterable": false, + "groupby": true, + "id": 407, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 85, + "type": null, + "verbose_name": "70-80" + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T15:05:26" + }, + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T15:05:26" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 88, + "metric_name": "count", + "metric_type": null, + "table_id": 85, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 85, \"database_name\": \"Achilles\"}", + "schema": "null", + "sql": "SELECT name,\r\n acronym,\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) < 10 THEN count_value END) AS \"age10\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 10 AND CAST(stratum_2 AS INTEGER) < 20 THEN count_value END) AS \"age20\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 20 AND CAST(stratum_2 AS INTEGER) < 30 THEN count_value END) AS \"age30\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 30 AND CAST(stratum_2 AS INTEGER) < 40 THEN count_value END) AS \"age40\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 40 AND CAST(stratum_2 AS INTEGER) < 50 THEN count_value END) AS \"age50\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 50 AND CAST(stratum_2 AS INTEGER) < 60 THEN count_value END) AS \"age60\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 60 AND CAST(stratum_2 AS INTEGER) < 70 THEN count_value END) AS \"age70\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 70 AND CAST(stratum_2 AS INTEGER) < 80 THEN count_value END) AS \"age80\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 80 AND CAST(stratum_2 AS INTEGER) < 90 THEN count_value END) AS \"age90\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 90 THEN count_value END) AS \"age90p\"\r\n FROM (\r\n SELECT source.name,\r\n acronym,\r\n count_value,\r\n stratum_2 \r\n FROM public.achilles_results AS achilles\r\n INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\n INNER JOIN public.concept ON stratum_1 = CAST(concept_id AS text)\r\n WHERE analysis_id = 102\r\n ) as sub_query\r\n \r\n GROUP BY name, acronym", + "table_name": "Peter Rijnbeek-Age group at start of first observation-smvSJk6Hw", + "template_params": null + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-29T09:42:24" + }, + "column_name": "name", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-09-29T09:42:24" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 473, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 67, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-27T11:13:17" + }, + "column_name": "data_domain", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T11:13:17" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 306, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 67, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-27T11:13:17" + }, + "column_name": "count", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T11:13:17" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 307, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 67, + "type": "OBJECT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-29T15:29:34" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-09-29T15:29:34" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 482, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 67, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-27T11:13:17" + }, + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T11:13:17" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 67, + "metric_name": "count", + "metric_type": null, + "table_id": 67, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 67, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "SELECT\r\ndata_source.name,\r\ndata_source.acronym,\r\n case \r\n when analysis_id = 201 then 'Visit'\r\n when analysis_id = 401 then 'Condition'\r\n when analysis_id = 501 then 'Death'\r\n when analysis_id = 601 then 'Procedure'\r\n when analysis_id = 701 then 'Drug Exposure'\r\n when analysis_id = 801 then 'Observation'\r\n when analysis_id = 1801 then 'Measurement'\r\n when analysis_id = 2101 then 'Device'\r\n when analysis_id = 2201 then 'Note'\r\n end as Data_Domain,\r\n SUM(count_value) as \"count\"\r\nFROM achilles_results\r\nJOIN data_source ON achilles_results.data_source_id=data_source.id\r\nGROUP BY name, acronym, analysis_id\r\nHAVING analysis_id IN (201, 401, 501, 601, 701, 801, 1801, 2101, 2201)", + "table_name": "Landing Page - Data Domains", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-29T09:12:43" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-07-10T14:17:47" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 329, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 72, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-07-10T14:17:47" + }, + "column_name": "to_date", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-07-10T14:17:47" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 330, + "is_active": true, + "is_dttm": true, + "python_date_format": null, + "table_id": 72, + "type": "DATETIME", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-07-10T14:17:47" + }, + "column_name": "count_value", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-07-10T14:17:47" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 331, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 72, + "type": "INT", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-07-10T14:17:47" + }, + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-07-10T14:17:47" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 74, + "metric_name": "count", + "metric_type": null, + "table_id": 72, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 72, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "SELECT acronym,\r\n TO_DATE(stratum_1, 'YYYY'),\r\n count_value\r\nFROM achilles_results JOIN data_source on data_source_id = data_source.id\r\nWHERE analysis_id = 3", + "table_name": "Yeart of Birth Query", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T21:25:40" + }, + "column_name": "name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T21:25:40" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 208, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 39, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T21:25:40" + }, + "column_name": "year_month", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T21:25:40" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 209, + "is_active": true, + "is_dttm": true, + "python_date_format": null, + "table_id": 39, + "type": "DATETIME", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T21:25:40" + }, + "column_name": "patient_count", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T21:25:40" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 210, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 39, + "type": "INT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-28T16:06:58" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-07-10T14:01:22" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 324, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 39, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T21:25:40" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T21:25:40" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 39, + "metric_name": "count", + "metric_type": null, + "table_id": 39, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 39, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "SELECT source.name,\r\n source.acronym,\r\n to_date(stratum_1, 'YYYYMM') as year_month,\r\n count_value as patient_count\r\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\nwhere analysis_id = 112", + "table_name": "Observation Period End Dates Query", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-29T09:25:24" + }, + "column_name": "name", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-09-29T09:23:07" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 472, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 54, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-29T15:26:29" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-09-29T15:26:29" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 477, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 54, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-27T09:44:06" + }, + "column_name": "count_value", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T09:42:25" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 277, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 54, + "type": "OBJECT", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-27T09:42:25" + }, + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T09:42:25" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 54, + "metric_name": "count", + "metric_type": null, + "table_id": 54, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 54, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "SELECT achilles_results.count_value,\r\ndata_source.name,\r\ndata_source.acronym\r\nFROM achilles_results\r\nJOIN data_source ON achilles_results.data_source_id=data_source.id\r\nWHERE analysis_id = 1", + "table_name": "Landing Page - Number of Patients query", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-03T21:23:38" + }, + "column_name": "name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T21:23:38" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 231, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 44, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-03T21:23:38" + }, + "column_name": "country", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T21:23:38" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 232, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 44, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-03T21:23:38" + }, + "column_name": "database_type", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T21:23:38" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 233, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 44, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-03T21:23:38" + }, + "column_name": "patient_count", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T21:23:38" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 234, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 44, + "type": "INT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-28T16:10:21" + }, + "column_name": "acronym", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T21:23:38" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 235, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 44, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-03T21:23:38" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T21:23:38" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 44, + "metric_name": "count", + "metric_type": null, + "table_id": 44, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 44, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "-- 1 General - Patients per Country\r\nSELECT source.name,\r\n country.country,\r\n source.database_type,\r\n count_value as patient_count,\r\n source.acronym\r\nFROM public.achilles_results AS achilles INNER JOIN \r\n public.data_source AS source ON achilles.data_source_id=source.id\r\n INNER JOIN public.country AS country ON \r\n source.country_id=country.id\r\nWHERE analysis_id = 1", + "table_name": "admin user-Untitled Query 2-shJVbL7EX", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-28T16:02:53" + }, + "column_name": "acronym", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T23:00:58" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 53, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 10, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-20T23:00:58" + }, + "column_name": "name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T23:00:58" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 50, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 10, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-20T23:00:58" + }, + "column_name": "age", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T23:00:58" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 51, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 10, + "type": "INT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-20T23:00:58" + }, + "column_name": "count", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T23:00:58" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 52, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 10, + "type": "INT", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-20T23:00:58" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T23:00:58" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 10, + "metric_name": "count", + "metric_type": null, + "table_id": 10, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 10, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "-- 101 Person - Patients by age\r\nSELECT source.name,\r\n cast(stratum_1 as int) as Age,\r\n count_value as count, \r\n source.acronym\r\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\nwhere analysis_id = 101", + "table_name": "Untitled Query 2-hW_lXt3eU", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-29T20:52:38" + }, + "column_name": "name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-24T17:13:03" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 136, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 25, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-29T20:52:38" + }, + "column_name": "Nr_patients", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-24T17:13:03" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 138, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 25, + "type": "INT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-29T20:52:38" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-09-29T15:33:04" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 484, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 25, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-29T21:02:23" + }, + "column_name": "date", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-24T17:13:03" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 137, + "is_active": null, + "is_dttm": true, + "python_date_format": "", + "table_id": 25, + "type": "DATETIME", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-24T17:13:03" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-24T17:13:03" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 25, + "metric_name": "count", + "metric_type": null, + "table_id": 25, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 25, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "-- 110 Population characteristics - Patients in Observation Period per month (whole month)\r\nSELECT source.name, \r\n source.acronym,\r\n to_date(stratum_1, 'YYYYMM') as Date,\r\n count_value as \"Nr_patients\"\r\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\nWHERE analysis_id = 110", + "table_name": "Patients in Observation Period per month Query", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:30:44" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-10-02T09:30:44" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 490, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 51, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-19T16:01:57" + }, + "column_name": "concept_name", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-19T16:01:57" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 266, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 51, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-19T16:01:57" + }, + "column_name": "domain_id", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-19T16:01:57" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 267, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 51, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-19T16:01:57" + }, + "column_name": "source_name", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-19T16:01:57" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 268, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 51, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-19T16:01:57" + }, + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-19T16:01:57" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 51, + "metric_name": "count", + "metric_type": null, + "table_id": 51, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 51, \"database_name\": \"Achilles\"}", + "schema": null, + "sql": "SELECT concept_name,\r\n domain_id,\r\n source.name AS source_name,\r\n source.acronym\r\nFROM achilles_results\r\nJOIN concept ON cast(stratum_1 AS BIGINT) = concept_id\r\nINNER JOIN public.data_source AS source ON data_source_id=source.id\r\nWHERE analysis_id in (201, 401, 601, 701, 801, 901, 1001, 1801, 200, 400, 600, 700, 800, 1800)", + "table_name": "Concepts General - Filters", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T09:42:28" + }, + "column_name": "name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T09:42:28" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 148, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 28, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T09:42:28" + }, + "column_name": "Observation", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T09:42:28" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 149, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 28, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T09:42:28" + }, + "column_name": "Nr_Observations", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T09:42:28" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 150, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 28, + "type": "INT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-28T16:57:37" + }, + "column_name": "acronym", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T09:42:28" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 151, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 28, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T09:42:28" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T09:42:28" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 28, + "metric_name": "count", + "metric_type": null, + "table_id": 28, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 28, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "SELECT source.name, \r\n concept_name AS \"Observation\", \r\n count_value AS \"Nr_Observations\",\r\n source.acronym\r\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\nINNER JOIN public.concept ON stratum_1 = CAST(concept_id AS text)\r\nWHERE analysis_id = 201", + "table_name": "admin user-Untitled Query 2-JMjrFNhp8", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-29T09:13:33" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-07-10T14:33:57" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 332, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 73, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-07-10T14:33:57" + }, + "column_name": "concept_name", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-07-10T14:33:57" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 333, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 73, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-07-10T14:33:57" + }, + "column_name": "count_value", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-07-10T14:33:57" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 334, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 73, + "type": "INT", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-07-10T14:33:57" + }, + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-07-10T14:33:57" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 75, + "metric_name": "count", + "metric_type": null, + "table_id": 73, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 73, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "SELECT acronym,\r\n concept_name,\r\n count_value\r\nFROM public.achilles_results\r\n INNER JOIN public.concept\r\n ON stratum_1 = CAST(concept_id AS text)\r\n JOIN public.data_source\r\n ON data_source.id = data_source_id\r\nWHERE analysis_id = 2", + "table_name": "Gender Distribution Query", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-28T16:10:52" + }, + "column_name": "acronym", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-21T17:05:42" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 74, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 15, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-21T17:05:42" + }, + "column_name": "name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-21T17:05:42" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 70, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 15, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-21T17:05:42" + }, + "column_name": "country", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-21T17:05:42" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 71, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 15, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-21T17:05:42" + }, + "column_name": "Nr_patients", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-21T17:05:42" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 73, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 15, + "type": "INT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-03-04T10:51:34" + }, + "column_name": "database_type", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-21T17:05:42" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 72, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 15, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-21T17:05:42" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-21T17:05:42" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 15, + "metric_name": "count", + "metric_type": null, + "table_id": 15, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 15, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "-- 1 General - Database types per country\r\nSELECT source.name, \r\n country.country,\r\n database_type,\r\n count_value as \"Nr_patients\",\r\n source.acronym\r\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\nINNER JOIN public.country AS country ON source.country_id=country.id\r\nWHERE analysis_id = 1", + "table_name": "admin user-Untitled Query 3-HNnjlOJDx", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-03-04T10:32:38" + }, + "column_name": "name", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-03-04T10:32:38" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 236, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 45, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-03-04T10:32:38" + }, + "column_name": "country", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-03-04T10:32:38" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 237, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 45, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-03-04T10:32:38" + }, + "column_name": "database_type", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-03-04T10:32:38" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 238, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 45, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-28T16:09:13" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-03-04T10:32:38" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 239, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 45, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-03-04T10:32:38" + }, + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-03-04T10:32:38" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 45, + "metric_name": "count", + "metric_type": null, + "table_id": 45, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 45, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "-- 1 General - Database types per country\r\nSELECT source.name, \r\n country.country,\r\n source.database_type,\r\n source.acronym\r\nFROM public.data_source AS source INNER JOIN public.country \r\n AS country ON source.country_id=country.id", + "table_name": "Untitled Query-Pf9p33tCv", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-29T15:35:11" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-09-29T15:35:11" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 486, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 99, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-27T12:23:45" + }, + "column_name": "name", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-27T12:23:45" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 463, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 99, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-27T12:23:45" + }, + "column_name": "concept_name", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-27T12:23:45" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 464, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 99, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-27T12:23:45" + }, + "column_name": "num_persons", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-27T12:23:45" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 465, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 99, + "type": "INT", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-27T12:23:45" + }, + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-27T12:23:45" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 102, + "metric_name": "count", + "metric_type": null, + "table_id": 99, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 99, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "SELECT\r\n data_source.name,\r\n data_source.acronym,\r\n concept.concept_name,\r\n achilles_results.count_value AS num_persons\r\nFROM (SELECT * FROM achilles_results WHERE analysis_id = 200) as achilles_results\r\nJOIN data_source ON achilles_results.data_source_id = data_source.id\r\nJOIN concept ON CAST(achilles_results.stratum_1 AS INTEGER) = concept.concept_id", + "table_name": "Peter Rijnbeek-Visit Type Table v2-DhXfzMl9M", + "template_params": null + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-28T15:59:16" + }, + "column_name": "name", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T17:36:45" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 410, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 86, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-28T15:59:16" + }, + "column_name": "gender", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T17:36:45" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 412, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 86, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-28T15:59:16" + }, + "column_name": "count_value", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T17:36:45" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 413, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 86, + "type": "INT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-29T15:27:08" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-09-29T15:27:08" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 478, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 86, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T17:36:45" + }, + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T17:36:45" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 89, + "metric_name": "count", + "metric_type": null, + "table_id": 86, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 86, \"database_name\": \"Achilles\"}", + "schema": "null", + "sql": "SELECT source.name,\r\n source.acronym,\r\n concept_name as gender,\r\n count_value\r\n FROM public.achilles_results AS achilles\r\n INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\n INNER JOIN public.concept ON stratum_1 = CAST(concept_id AS text)\r\n WHERE analysis_id = 2", + "table_name": "Peter Rijnbeek-Untitled Query 2--E1zjg5sW", + "template_params": null + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:37:57" + }, + "column_name": "name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T17:01:36" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 218, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 42, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:37:57" + }, + "column_name": "country", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T17:01:36" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 219, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 42, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:37:57" + }, + "column_name": "type", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T17:01:36" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 220, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 42, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:37:57" + }, + "column_name": "acronym", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T17:01:36" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 221, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 42, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-03T17:01:36" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T17:01:36" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 42, + "metric_name": "count", + "metric_type": null, + "table_id": 42, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 42, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "-- 1 General - Database types per country\r\nSELECT source.name, \r\n country.country as Country, \r\n source.database_type,\r\n source.acronym\r\nFROM public.data_source AS source INNER JOIN public.country \r\n AS country ON source.country_id=country.id", + "table_name": "Untitled Query 2-gUfsW6Np2", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-27T11:19:47" + }, + "column_name": "name", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-27T11:19:47" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 449, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 96, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-27T11:19:47" + }, + "column_name": "xlengthofobservation", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-27T11:19:47" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 451, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 96, + "type": "INT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-27T11:19:47" + }, + "column_name": "ypercentpersons", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-27T11:19:47" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 452, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 96, + "type": null, + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-29T15:33:49" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-09-29T15:33:49" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 485, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 96, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-27T11:19:47" + }, + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-27T11:19:47" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 99, + "metric_name": "count", + "metric_type": null, + "table_id": 96, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 96, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "SELECT\r\n name,\r\n acronym,\r\n xLengthOfObservation,\r\n round(cumulative_sum / total, 5) as yPercentPersons\r\nFROM (\r\n SELECT data_source_id, CAST(stratum_1 AS INTEGER) * 30 AS xLengthOfObservation, SUM(count_value) OVER (PARTITION BY data_source_id ORDER BY CAST(stratum_1 AS INTEGER) DESC) as cumulative_sum\r\n FROM achilles_results\r\n WHERE analysis_id = 108\r\n) AS cumulative_sums\r\nJOIN (\r\n SELECT data_source_id, count_value as total\r\n FROM achilles_results\r\n WHERE analysis_id = 1\r\n) AS totals\r\nON cumulative_sums.data_source_id = totals.data_source_id\r\nJOIN data_source ON cumulative_sums.data_source_id = data_source.id\r\nORDER BY name, xLengthOfObservation", + "table_name": "Cumulative Observation Period 2-L74hsau_K", + "template_params": null + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:43:06" + }, + "column_name": "cdm_release_date", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T12:20:02" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 388, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 83, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:43:06" + }, + "column_name": "cdm_version", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T12:20:02" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 389, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 83, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:43:06" + }, + "column_name": "vocabulary_version", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T12:20:02" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 390, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 83, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:43:06" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-09-29T15:38:40" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 489, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 83, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:43:06" + }, + "column_name": "database_type", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-10-02T09:35:34" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 491, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 83, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:43:06" + }, + "column_name": "name", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T12:20:02" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 386, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 83, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:43:06" + }, + "column_name": "source_release_date", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T12:20:02" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 387, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 83, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:43:19" + }, + "column_name": "country", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-10-02T09:43:19" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 494, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 83, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T12:20:02" + }, + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T12:20:02" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 86, + "metric_name": "count", + "metric_type": null, + "table_id": 83, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 83, \"database_name\": \"Achilles\"}", + "schema": "null", + "sql": "-- Note: Unless you save your query, these tabs will NOT persist if you clear your cookies or change browsers.\r\n\r\nSELECT\r\n acronym,\r\n stratum_1 as \"name\",\r\n database_type,\r\n country,\r\n stratum_2 as \"source_release_date\",\r\n stratum_3 as \"cdm_release_date\",\r\n stratum_4 as \"cdm_version\",\r\n stratum_5 as \"vocabulary_version\"\r\nFROM achilles_results\r\nJOIN data_source ON achilles_results.data_source_id = data_source.id\r\nJOIN country ON data_source.country_id = country.id\r\nWHERE analysis_id=5000", + "table_name": "Peter Rijnbeek-Untitled Query 2-jCYlfS520", + "template_params": null + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T14:46:22" + }, + "column_name": "source", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T14:46:22" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 178, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 34, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T14:46:22" + }, + "column_name": "country", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T14:46:22" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 179, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 34, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T14:46:22" + }, + "column_name": "database_type", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T14:46:22" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 180, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 34, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T14:46:22" + }, + "column_name": "release_date", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T14:46:22" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 181, + "is_active": true, + "is_dttm": true, + "python_date_format": null, + "table_id": 34, + "type": "DATETIME", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T14:46:22" + }, + "column_name": "gender", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T14:46:22" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 182, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 34, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T14:46:22" + }, + "column_name": "count", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T14:46:22" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 183, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 34, + "type": "INT", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T14:46:22" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T14:46:22" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 34, + "metric_name": "count", + "metric_type": null, + "table_id": 34, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 34, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "SELECT data.source,\n data.country,\n data.database_type,\n data.release_date,\n concept_name AS gender,\n count_value AS count\nFROM (\n SELECT source.name AS source,\n achilles.analysis_id AS analysis_id,\n achilles.stratum_1,\n achilles.stratum_2,\n achilles.stratum_3,\n achilles.stratum_4,\n achilles.stratum_5,\n achilles.count_value,\n country.country,\n source.database_type, \n source.release_date\n FROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\n INNER JOIN public.country AS country ON source.country_id=country.id\n ) data\nJOIN (SELECT '8507' AS concept_id, 'Male' AS concept_name UNION SELECT '8532' AS concept_id, 'Female' AS concept_name) AS concepts ON data.stratum_1 = concept_id\nWHERE analysis_id =2", + "table_name": "Untitled Query 5-IExD-Tsxs", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-28T17:26:32" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 287, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 60, + "type": "VARCHAR(50)", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "column_name": "id", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 285, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 60, + "type": "INTEGER", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "column_name": "name", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 286, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 60, + "type": "VARCHAR(40)", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "column_name": "release_date", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 288, + "is_active": true, + "is_dttm": true, + "python_date_format": null, + "table_id": 60, + "type": "DATE", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "column_name": "database_type", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 289, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 60, + "type": "VARCHAR(40)", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "column_name": "latitude", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 290, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 60, + "type": "DOUBLE PRECISION", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "column_name": "longitude", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 291, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 60, + "type": "DOUBLE PRECISION", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "column_name": "link", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 292, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 60, + "type": "VARCHAR(200)", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "column_name": "country_id", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 293, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 60, + "type": "INTEGER", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": "release_date", + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T10:40:23" + }, + "d3format": null, + "description": null, + "expression": "COUNT(*)", + "id": 60, + "metric_name": "count", + "metric_type": "count", + "table_id": 60, + "verbose_name": "COUNT(*)", + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 60, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": null, + "table_name": "data_source", + "template_params": null + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-20T23:05:51" + }, + "column_name": "name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T23:05:51" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 54, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 11, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-20T23:05:51" + }, + "column_name": "Birth_year", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T23:05:51" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 55, + "is_active": true, + "is_dttm": true, + "python_date_format": null, + "table_id": 11, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-20T23:05:51" + }, + "column_name": "count", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T23:05:51" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 56, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 11, + "type": "INT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-29T15:28:23" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-09-29T15:28:23" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 480, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 11, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-20T23:05:51" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T23:05:51" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 11, + "metric_name": "count", + "metric_type": null, + "table_id": 11, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 11, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "-- 3 Person - Births by year\r\nSELECT source.name,\r\n source.acronym,\r\n stratum_1 as \"Birth_year\",\r\n count_value as count\r\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\nwhere analysis_id = 3", + "table_name": "Untitled Query 3-OTisQhOu9", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-27T11:52:28" + }, + "column_name": "name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-27T11:52:28" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 140, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 26, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-27T11:52:28" + }, + "column_name": "domain_name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-27T11:52:28" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 141, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 26, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-27T11:52:28" + }, + "column_name": "concept_name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-27T11:52:28" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 142, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 26, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-27T11:52:28" + }, + "column_name": "num_records", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-27T11:52:28" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 143, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 26, + "type": "OBJECT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-29T15:32:32" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-09-29T15:32:32" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 483, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 26, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-27T11:52:28" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-27T11:52:28" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 26, + "metric_name": "count", + "metric_type": null, + "table_id": 26, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 26, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "-- Concepts Domains\r\nselect source.name,\r\n source.acronym,\r\n case when analysis_id = 405 then 'Condition'\r\n when analysis_id = 605 then 'Procedure'\r\n when analysis_id = 705 then 'Drug'\r\n when analysis_id = 805 then 'Observation'\r\n when analysis_id = 1805 then 'Measurement'\r\n when analysis_id = 2105 then 'Device'\r\n else 'Other' end as domain_name,\r\n concept_name, sum(count_value) as num_records\r\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\nINNER JOIN public.concept AS c1 ON stratum_2 = CAST(concept_id AS text)\r\nWHERE analysis_id in (405,605,705,805,1805,2105)\r\nGROUP BY source.name, source.acronym, concept_name, \r\n case when analysis_id = 405 then 'Condition'\r\n when analysis_id = 605 then 'Procedure'\r\n when analysis_id = 705 then 'Drug'\r\n when analysis_id = 805 then 'Observation'\r\n when analysis_id = 1805 then 'Measurement'\r\n when analysis_id = 2105 then 'Device'\r\n else 'Other' end", + "table_name": "admin user-Untitled Query 3-_1-hZtmZL", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-28T16:16:29" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-09-28T16:16:20" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 471, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 82, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T11:31:42" + }, + "column_name": "Type", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T11:31:08" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 383, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 82, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T11:31:42" + }, + "column_name": "name", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T11:31:08" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 384, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 82, + "type": "STRING", + "verbose_name": "Data Source" + } + }, + { + "__TableColumn__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T11:31:42" + }, + "column_name": "Count", + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T11:31:08" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 385, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 82, + "type": "INT", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 8, + "changed_on": { + "__datetime__": "2020-09-26T11:31:08" + }, + "created_by_fk": 8, + "created_on": { + "__datetime__": "2020-09-26T11:31:08" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 85, + "metric_name": "count", + "metric_type": null, + "table_id": 82, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 82, \"database_name\": \"Achilles\"}", + "schema": "null", + "sql": "-- Note: Unless you save your query, these tabs will NOT persist if you clear your cookies or change browsers.\r\n\r\nSELECT \"concept_name\" AS \"Type\",\r\n name,\r\n max(\"count_value\") AS \"Count\",\r\n acronym\r\nFROM\r\n (SELECT source.name,\r\n concept_name,\r\n count_value,\r\n source.acronym\r\n FROM public.achilles_results AS achilles\r\n INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\n INNER JOIN public.concept ON stratum_1 = CAST(concept_id AS text)\r\n WHERE analysis_id = 201) AS expr_qry\r\nGROUP BY \"Type\",\r\n name,\r\n acronym\r\nORDER BY \"Count\" DESC\r\nLIMIT 50000", + "table_name": "Peter Rijnbeek-Visit Type Table-dQ22vpz3e", + "template_params": null + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-28T17:01:49" + }, + "column_name": "acronym", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T16:53:27" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 47, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 8, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-20T16:53:27" + }, + "column_name": "name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T16:53:27" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 45, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 8, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-20T16:53:27" + }, + "column_name": "count", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T16:53:27" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 46, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 8, + "type": "INT", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-20T16:53:27" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T16:53:27" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 8, + "metric_name": "count", + "metric_type": null, + "table_id": 8, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 8, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "-- 501\tDeath - number of records\r\nSELECT source.name,\r\n count_value as count, \r\n source.acronym\r\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\nwhere analysis_id = 501", + "table_name": "Untitled Query 4-O04EF2u8N", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:39:21" + }, + "column_name": "sum", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T11:03:50" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 305, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 66, + "type": "OBJECT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:39:53" + }, + "column_name": "country", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-10-02T09:39:53" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 493, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 66, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:39:21" + }, + "column_name": "release_date", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T11:03:50" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 304, + "is_active": null, + "is_dttm": true, + "python_date_format": null, + "table_id": 66, + "type": "DATETIME", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-10-02T09:39:42" + }, + "column_name": "database_type", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-10-02T09:39:42" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 492, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 66, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-27T11:03:50" + }, + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-05-27T11:03:50" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 66, + "metric_name": "count", + "metric_type": null, + "table_id": 66, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 66, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "SELECT\r\n country,\r\n database_type,\r\n release_date,\r\n sum(count_value) OVER (ORDER BY release_date ASC)\r\nFROM achilles_results\r\nJOIN data_source ON data_source_id = data_source.id\r\nJOIN country ON data_source.country_id = country.id\r\nWHERE analysis_id = 1", + "table_name": "Landing Page - Patients Growth query", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-03T17:06:51" + }, + "column_name": "name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T17:06:51" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 222, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 43, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-03T17:06:51" + }, + "column_name": "latitude", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T17:06:51" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 226, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 43, + "type": "FLOAT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-03T17:06:51" + }, + "column_name": "longitude", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T17:06:51" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 227, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 43, + "type": "FLOAT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-03T17:06:51" + }, + "column_name": "country", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T17:06:51" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 229, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 43, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-28T16:11:26" + }, + "column_name": "acronym", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T17:06:51" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 223, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 43, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-03-04T11:08:59" + }, + "column_name": "database_type", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T17:06:51" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 225, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 43, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-03T17:06:51" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-03T17:06:51" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 43, + "metric_name": "count", + "metric_type": null, + "table_id": 43, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 43, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "SELECT name,\r\n acronym,\r\n database_type,\r\n latitude,\r\n longitude,\r\n country\r\nFROM public.data_source AS source INNER JOIN public.country \r\n AS country ON source.country_id=country.id", + "table_name": "Untitled Query 2-4l_EYigMw", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-28T16:05:23" + }, + "column_name": "acronym", + "created_by_fk": 2, + "created_on": { + "__datetime__": "2020-07-10T13:57:07" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 323, + "is_active": true, + "is_dttm": false, + "python_date_format": null, + "table_id": 40, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-07-10T11:54:57" + }, + "column_name": "name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T21:29:43" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 211, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 40, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-07-10T11:54:57" + }, + "column_name": "year_month", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T21:29:43" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 212, + "is_active": null, + "is_dttm": true, + "python_date_format": null, + "table_id": 40, + "type": "DATETIME", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-07-10T11:54:57" + }, + "column_name": "patient_count", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T21:29:43" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 213, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 40, + "type": "INT", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T21:29:43" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-03-02T21:29:43" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 40, + "metric_name": "count", + "metric_type": null, + "table_id": 40, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 40, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "-- 111 Population characteristics - Observation Period End Dates\r\nSELECT source.name,\r\n source.acronym,\r\n to_date(stratum_1, 'YYYYMM') as year_month,\r\n count_value as patient_count\r\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\nwhere analysis_id = 111", + "table_name": "Observation Period Start Dates Query", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-28T17:02:28" + }, + "column_name": "acronym", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T16:41:12" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 44, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 7, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-19T17:04:35" + }, + "column_name": "name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T16:41:12" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 41, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 7, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-19T17:04:35" + }, + "column_name": "date", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T16:41:12" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 42, + "is_active": null, + "is_dttm": true, + "python_date_format": null, + "table_id": 7, + "type": "DATETIME", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-05-19T17:04:35" + }, + "column_name": "count", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T16:41:12" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 43, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 7, + "type": "INT", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-20T16:41:12" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T16:41:12" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 7, + "metric_name": "count", + "metric_type": null, + "table_id": 7, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 7, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "-- 502\tDeath - by month per thousand people\r\nSELECT source.name,\r\n cast(extract(year from to_date(stratum_1, 'YYYYMM')) as INTEGER) as Date,\r\n count_value as count, \r\n source.acronym\r\nFROM public.achilles_results as achilles INNER JOIN public.data_source as source ON achilles.data_source_id=source.id\r\nwhere analysis_id = 502", + "table_name": "admin user-Untitled Query 2-2r83mvJTx", + "template_params": "{}" + } + }, + { + "__SqlaTable__": { + "cache_timeout": null, + "columns": [ + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T14:52:43" + }, + "column_name": "name", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T23:12:36" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 58, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 12, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T14:52:43" + }, + "column_name": "gender", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T23:12:36" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 59, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 12, + "type": "STRING", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-03-02T14:52:43" + }, + "column_name": "number_of_persons", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T23:12:36" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 60, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 12, + "type": "INT", + "verbose_name": null + } + }, + { + "__TableColumn__": { + "changed_by_fk": 2, + "changed_on": { + "__datetime__": "2020-09-28T16:07:44" + }, + "column_name": "acronym", + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T23:12:36" + }, + "description": null, + "expression": null, + "filterable": true, + "groupby": true, + "id": 61, + "is_active": null, + "is_dttm": false, + "python_date_format": null, + "table_id": 12, + "type": "STRING", + "verbose_name": null + } + } + ], + "database_id": 2, + "default_endpoint": null, + "description": null, + "fetch_values_predicate": null, + "filter_select_enabled": false, + "main_dttm_col": null, + "metrics": [ + { + "__SqlMetric__": { + "changed_by_fk": 1, + "changed_on": { + "__datetime__": "2020-02-20T23:12:36" + }, + "created_by_fk": 1, + "created_on": { + "__datetime__": "2020-02-20T23:12:36" + }, + "d3format": null, + "description": null, + "expression": "count(*)", + "id": 12, + "metric_name": "count", + "metric_type": null, + "table_id": 12, + "verbose_name": null, + "warning_text": null + } + } + ], + "offset": 0, + "params": "{\"remote_id\": 12, \"database_name\": \"Achilles\"}", + "schema": "public", + "sql": "-- 2 Person - Gender distribution\r\nSELECT source.name,\r\n concept_name AS Gender, \r\n count_value AS Number_of_persons,\r\n source.acronym\r\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\nJOIN (SELECT '8507' AS concept_id, 'Male' AS concept_name UNION SELECT '8532' AS concept_id, 'Female' AS concept_name) AS concepts ON achilles.stratum_1 = concept_id\r\nwhere analysis_id = 2", + "table_name": "admin user-Untitled Query 4-Rh4xC8sII", + "template_params": "{}" + } + } + ] +} \ No newline at end of file diff --git a/docker/superset/data/datasources.yaml b/docker/superset/data/datasources.yaml new file mode 100644 index 00000000..04f80160 --- /dev/null +++ b/docker/superset/data/datasources.yaml @@ -0,0 +1,7 @@ +databases: +- database_name: Achilles + extra: "{\r\n \"metadata_params\": {},\r\n \"engine_params\": {},\r\n \"\ + metadata_cache_timeout\": {},\r\n \"schemas_allowed_for_csv_upload\": []\r\n\ + }" + sqlalchemy_uri: postgresql+psycopg2://ACHILLES_USER:ACHILLES_PASSWORD@postgres:5432/ACHILLES_DB + diff --git a/docker/superset/docker-init-example.sh b/docker/superset/docker-init-example.sh index 92bab5be..91161630 100755 --- a/docker/superset/docker-init-example.sh +++ b/docker/superset/docker-init-example.sh @@ -4,7 +4,7 @@ set -e -STEP_CNT=3 +STEP_CNT=5 echo_step() { cat < /tmp/datasources.yaml +superset import-datasources -p /tmp/datasources.yaml +echo_step "4" "Complete" "Importing datasources" + +# Import datashboards +echo_step "5" "Starting" "Importing dashboards" +superset import-dashboards -p /app/data/dashboards.json +echo_step "5" "Complete" "Importing dashboards" From f2905d42764911afc62ac6729e5a0a24783f3b45 Mon Sep 17 00:00:00 2001 From: aspedrosa Date: Fri, 16 Oct 2020 10:51:37 +0100 Subject: [PATCH 2/8] Make the load of dashboards a one time thing --- .gitignore | 3 - docker/.env-example | 6 ++ docker/README.md | 34 +++++++----- docker/docker-compose.yml | 13 +---- docker/superset/data/datasources.yaml | 7 --- docker/superset/docker-init-example.sh | 52 ------------------ docker/superset/docker-init.sh | 31 +++++++++++ .../dashboards.json | 0 .../one_time_run_scripts/load-dashboards.sh | 27 +++++++++ .../one_time_run_scripts/superset-init.sh | 55 +++++++++++++++++++ 10 files changed, 141 insertions(+), 87 deletions(-) delete mode 100644 docker/superset/data/datasources.yaml delete mode 100755 docker/superset/docker-init-example.sh create mode 100755 docker/superset/docker-init.sh rename docker/superset/{data => one_time_run_scripts}/dashboards.json (100%) create mode 100755 docker/superset/one_time_run_scripts/load-dashboards.sh create mode 100755 docker/superset/one_time_run_scripts/superset-init.sh diff --git a/.gitignore b/.gitignore index 0d6ad54c..1cc621f1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,3 @@ -# custom file created at docker/superset -docker-init.sh - # Docker volumes volumes/ diff --git a/docker/.env-example b/docker/.env-example index f033c0f5..c7c1b771 100644 --- a/docker/.env-example +++ b/docker/.env-example @@ -26,6 +26,12 @@ POSTGRES_ACHILLES_USER=achilles POSTGRES_ACHILLES_PASSWORD=achilles POSTGRES_ACHILLES_DB=achilles +SUPERSET_ADMIN_USERNAME=admin +SUPERSET_ADMIN_PASSWORD=admin +SUPERSET_ADMIN_FIRSTNAME=Superset +SUPERSET_ADMIN_LASTNAME=Admin +SUPERSET_ADMIN_EMAIL=admin@superset.com + #production or development INSTALLATION_ENV=production diff --git a/docker/README.md b/docker/README.md index ec9ed0dc..760cd15b 100644 --- a/docker/README.md +++ b/docker/README.md @@ -2,27 +2,31 @@ 1. Clone the repository with the command `git clone --recurse-submodules https://github.com/EHDEN/NetworkDashboards`. If you already cloned the repository without the `--recurse-submodules` option, run `git submodule update --init` to fetch the superset submodule. -2. Create a `.env` file on the `docker` directory, using `.env-example` as reference, setting all necessary environment variables (SUPERSET\_MAPBOX\_API\_KEY and DASHBOARD\_VIEWER\_SECRET\_KEY). +2. Create a `.env` file on the `docker` directory, using `.env-example` as a reference, setting all necessary environment variables (SUPERSET\_MAPBOX\_API\_KEY and DASHBOARD\_VIEWER\_SECRET\_KEY). -3. Create a `docker-init.sh` file on `docker/superset` based on the file `docker/superset/docker-init-example.sh` to set up admin credentials for superset. +3. If you wish to expose the dashboard viewer app through a specific domain(s) you must add it/them to the ALLOWED_HOSTS list on file `dashboard_viewer/dashboard_viewer/settings.py` and remove the `'*'` entry. -4. If you wish to expose the dashboard viewer app through a specific domain(s) you must add it/them to the ALLOWED_HOSTS list on file `dashboard_viewer/dashboard_viewer/settings.py` and remove the `'*'` entry. +4. Build containers' images: `docker-compose build`. This might take several minutes. -5. Build containers' images: `docker-compose build`. This might take several minutes. +5. Set up the database for the dashboard viewer app: `docker-compose run --rm dashboard ./docker-init.sh`. -6. Set up the database for the dashboard viewer app: `docker-compose run --rm dashboard ./docker-init.sh`. +6. Bring up the containers: `docker-compose up -d`. -7. Bring up the containers: `docker-compose up -d`. +7. Wait until the container `superset-init` stops running. It is creating the necessary tables on the database and creating permissions and roles. -8. If you used the default ports: +8. Execute the script `./superset/one_time_run_scripts/superset-init.sh`. This will create an admin account and associate the `achilles` database to Superset. **Attention:** You must be in the docker directory to execute this script. - - Go to `http://localhost` to access the dashboard viewer app. - - Go to `http://localhost:8088` to access superset. +9. We have already built some dashboard so if you want to import them run the script `./superset/one_time_run_scripts/load_dashboards.sh`. **Attention:** You must be in the docker directory to execute this script. -9. On release 0.37 of superset there is a bug related to the public role and because of that we had to set `PUBLIC_ROLE_LIKE_GAMMA = True` on superset settings. This leads the public role with permissions that he shouldn't have. To solve this, so any anonymous user can view dashboards, you should remove all its permissions and then add the following: +10. If you used the default ports: - - can explore JSON on Superset - - can dashboard on Superset - - all datasource access on all_datasource_access - - can csrf token on Superset - - can list on CssTemplateAsyncModelView + - Go to `http://localhost` to access the dashboard viewer app. + - Go to `http://localhost:8088` to access superset. + +11. On release 0.37 of superset there is a bug related to the public role and because of that, we had to set `PUBLIC_ROLE_LIKE_GAMMA = True` on superset settings. This leads the public role with permissions that he shouldn't have. To solve this, so any anonymous user can view dashboards, you should remove all its permissions and then add the following: + + - can explore JSON on Superset + - can dashboard on Superset + - all datasource access on all_datasource_access + - can csrf token on Superset + - can list on CssTemplateAsyncModelView diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 182afc6a..03581f54 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -8,7 +8,6 @@ x-superset-depends-on: &superset-depends-on x-superset-volumes: &superset-volumes - ./superset/docker-init.sh:/app/docker-init.sh - ./superset/superset_config_overrides.py:/app/pythonpath/superset_config_docker.py - - ./superset/data:/app/data - superset_home:/app/superset_home x-superset-environment: &superset-environment DATABASE_DIALECT: postgresql @@ -17,11 +16,6 @@ x-superset-environment: &superset-environment DATABASE_USER: ${POSTGRES_SUPERSET_USER} DATABASE_PASSWORD: ${POSTGRES_SUPERSET_PASSWORD} DATABASE_DB: ${POSTGRES_SUPERSET_DB} - ACHILLES_DATABASE_HOST: postgres - ACHILLES_DATABASE_PORT: 5432 - ACHILLES_DATABASE_USER: ${POSTGRES_ACHILLES_USER} - ACHILLES_DATABASE_PASSWORD: ${POSTGRES_ACHILLES_PASSWORD} - ACHILLES_DATABASE_DB: ${POSTGRES_ACHILLES_DB} REDIS_HOST: redis REDIS_PORT: 6379 REDIS_CACHE_DB: 3 @@ -47,7 +41,6 @@ services: superset-init: build: *superset-app-build - container_name: superset_init command: ["/app/docker-init.sh"] environment: *superset-environment depends_on: *superset-depends-on @@ -57,7 +50,6 @@ services: superset-worker: build: *superset-app-build - container_name: superset_worker command: ["celery", "worker", "--app=superset.tasks.celery_app:app", "-Ofair", "-l", "INFO"] restart: unless-stopped environment: *superset-environment @@ -100,7 +92,7 @@ services: - ${NGINX_PORT}:80 volumes: - ./nginx-config:/etc/nginx/conf.d - - ./static:/static/dashboard + - dashboard_static:/static/dashboard - ../dashboard_viewer/media:/media depends_on: - dashboard @@ -138,7 +130,7 @@ services: # required, to keep the achilles files outside - ./volumes/achilles_results_files:/app/achilles_results_files # production - - ./static:/app/static + - dashboard_static:/app/static - ../dashboard_viewer/media:/app/media # development #- ../dashboard_viewer:/app @@ -147,6 +139,7 @@ services: volumes: superset_home: + dashboard_static: networks: all: diff --git a/docker/superset/data/datasources.yaml b/docker/superset/data/datasources.yaml deleted file mode 100644 index 04f80160..00000000 --- a/docker/superset/data/datasources.yaml +++ /dev/null @@ -1,7 +0,0 @@ -databases: -- database_name: Achilles - extra: "{\r\n \"metadata_params\": {},\r\n \"engine_params\": {},\r\n \"\ - metadata_cache_timeout\": {},\r\n \"schemas_allowed_for_csv_upload\": []\r\n\ - }" - sqlalchemy_uri: postgresql+psycopg2://ACHILLES_USER:ACHILLES_PASSWORD@postgres:5432/ACHILLES_DB - diff --git a/docker/superset/docker-init-example.sh b/docker/superset/docker-init-example.sh deleted file mode 100755 index 91161630..00000000 --- a/docker/superset/docker-init-example.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env bash - -# Based on https://github.com/apache/incubator-superset/blob/0.37.0rc3/docker/docker-init.sh - -set -e - -STEP_CNT=5 - -echo_step() { -cat <> CHANGE THE VALUES BELOW << -echo_step "1" "Starting" "Setting up admin user ( admin / admin )" -superset fab create-admin \ - --username admin \ - --firstname Superset \ - --lastname Admin \ - --email admin@superset.com \ - --password admin -echo_step "1" "Complete" "Setting up admin user" - -# Initialize the database -echo_step "2" "Starting" "Applying DB migrations" -superset db upgrade -echo_step "2" "Complete" "Applying DB migrations" - -# Create default roles and permissions -echo_step "3" "Starting" "Setting up roles and perms" -superset init -echo_step "3" "Complete" "Setting up roles and perms" - -# Import Achilles datasource -echo_step "4" "Starting" "Importing datasources" -sed -e "s/ACHILLES_HOST/$ACHILLES_DATABASE_HOST; s/ACHILLES_PORT/$ACHILLES_DATABASE_PORT; s/ACHILLES_DB/$ACHILLES_DATABASE_DB; s/ACHILLES_USER/$ACHILLES_DATABASE_USER; s/ACHILLES_PASSOWRD/$ACHILLES_DATABASE_PASSWORD/" /app/data/datasources.yaml > /tmp/datasources.yaml -superset import-datasources -p /tmp/datasources.yaml -echo_step "4" "Complete" "Importing datasources" - -# Import datashboards -echo_step "5" "Starting" "Importing dashboards" -superset import-dashboards -p /app/data/dashboards.json -echo_step "5" "Complete" "Importing dashboards" diff --git a/docker/superset/docker-init.sh b/docker/superset/docker-init.sh new file mode 100755 index 00000000..68126298 --- /dev/null +++ b/docker/superset/docker-init.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +# Based on https://github.com/apache/incubator-superset/blob/0.37.0rc3/docker/docker-init.sh + +set -e + +STEP_CNT=2 + +echo_step() { +cat < Date: Tue, 20 Oct 2020 10:18:06 +0100 Subject: [PATCH 3/8] Create fixtures for initial data --- dashboard_viewer/docker-init.sh | 8 +- .../tabsManager/fixtures/initial_data.json | 161 ++ .../fixtures/country_initial_data.json | 1994 +++++++++++++++++ .../uploader/management/__init__.py | 0 .../uploader/management/commands/__init__.py | 0 .../management/commands/populate_countries.py | 269 --- 6 files changed, 2160 insertions(+), 272 deletions(-) create mode 100644 dashboard_viewer/tabsManager/fixtures/initial_data.json create mode 100644 dashboard_viewer/uploader/fixtures/country_initial_data.json delete mode 100644 dashboard_viewer/uploader/management/__init__.py delete mode 100644 dashboard_viewer/uploader/management/commands/__init__.py delete mode 100644 dashboard_viewer/uploader/management/commands/populate_countries.py diff --git a/dashboard_viewer/docker-init.sh b/dashboard_viewer/docker-init.sh index 2e9d4ec3..2014f3f0 100755 --- a/dashboard_viewer/docker-init.sh +++ b/dashboard_viewer/docker-init.sh @@ -7,9 +7,11 @@ wait-for-it "$POSTGRES_ACHILLES_HOST:$POSTGRES_ACHILLES_PORT" # Apply django migrations python manage.py migrate -python manage.py migrate --database=achilles uploader -python manage.py migrate --database=achilles materialized_queries_manager -python manage.py populate_countries +python manage.py migrate --database=achilles + +# Load initial data +python manage.py load_data --app tabsManager initial_data +python manage.py load_data --app uploader --database achilles country_initial_data # Create an user for the admin app python manage.py createsuperuser diff --git a/dashboard_viewer/tabsManager/fixtures/initial_data.json b/dashboard_viewer/tabsManager/fixtures/initial_data.json new file mode 100644 index 00000000..8a1651ec --- /dev/null +++ b/dashboard_viewer/tabsManager/fixtures/initial_data.json @@ -0,0 +1,161 @@ +[ + { + "model": "tabsManager.button", + "pk": 1, + "fields": { + "title": "Death", + "icon": "times", + "position": 15, + "visible": true + } + }, + { + "model": "tabsManager.button", + "pk": 2, + "fields": { + "title": "Person", + "icon": "users", + "position": 5, + "visible": true + } + }, + { + "model": "tabsManager.button", + "pk": 3, + "fields": { + "title": "Visit", + "icon": "calendar-day", + "position": 12, + "visible": true + } + }, + { + "model": "tabsManager.button", + "pk": 4, + "fields": { + "title": "General Concepts", + "icon": "asterisk", + "position": 16, + "visible": true + } + }, + { + "model": "tabsManager.button", + "pk": 5, + "fields": { + "title": "Data Domains", + "icon": "table", + "position": 19, + "visible": true + } + }, + { + "model": "tabsManager.button", + "pk": 6, + "fields": { + "title": "General", + "icon": "asterisk", + "position": 1, + "visible": true + } + }, + { + "model": "tabsManager.button", + "pk": 7, + "fields": { + "title": "Population characteristics", + "icon": "globe-europe", + "position": 6, + "visible": true + } + }, + { + "model": "tabsManager.button", + "pk": 8, + "fields": { + "title": "Concepts", + "icon": "book-medical", + "position": 16, + "visible": true + } + }, + { + "model": "tabsManager.button", + "pk": 9, + "fields": { + "title": "Concept Domains", + "icon": "chart-bar", + "position": 17, + "visible": true + } + }, + { + "model": "tabsManager.tabgroup", + "pk": 1, + "fields": {} + }, + { + "model": "tabsManager.tab", + "pk": 1, + "fields": { + "url": "https://superset.ehden.eu/superset/dashboard/death/?standalone=true", + "group": null + } + }, + { + "model": "tabsManager.tab", + "pk": 2, + "fields": { + "url": "https://superset.ehden.eu/superset/dashboard/person/?standalone=true", + "group": null + } + }, + { + "model": "tabsManager.tab", + "pk": 3, + "fields": { + "url": "https://superset.ehden.eu/superset/dashboard/visit/?standalone=true", + "group": null + } + }, + { + "model": "tabsManager.tab", + "pk": 4, + "fields": { + "url": "https://superset.ehden.eu/superset/dashboard/concepts-general/?standalone=true", + "group": 1 + } + }, + { + "model": "tabsManager.tab", + "pk": 5, + "fields": { + "url": "https://superset.ehden.eu/superset/dashboard/data-domains/?standalone=true", + "group": null + } + }, + { + "model": "tabsManager.tab", + "pk": 6, + "fields": { + "url": "https://superset.ehden.eu/superset/dashboard/general/?standalone=true", + "group": null + } + }, + { + "model": "tabsManager.tab", + "pk": 7, + "fields": { + "url": "https://superset.ehden.eu/superset/dashboard/period/?standalone=true", + "group": null + } + }, + { + "model": "tabsManager.tab", + "pk": 8, + "fields": { + "url": "https://superset.ehden.eu/superset/dashboard/concepts-domains/?standalone=true", + "group": 8 + } + } +] diff --git a/dashboard_viewer/uploader/fixtures/country_initial_data.json b/dashboard_viewer/uploader/fixtures/country_initial_data.json new file mode 100644 index 00000000..c85a995a --- /dev/null +++ b/dashboard_viewer/uploader/fixtures/country_initial_data.json @@ -0,0 +1,1994 @@ +[ + { + "model": "uploader.country", + "pk": 1, + "fields": { + "country": "Afghanistan", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 2, + "fields": { + "country": "Aland Islands", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 3, + "fields": { + "country": "Albania", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 4, + "fields": { + "country": "Algeria", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 5, + "fields": { + "country": "American Samoa", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 6, + "fields": { + "country": "Andorra", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 7, + "fields": { + "country": "Angola", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 8, + "fields": { + "country": "Anguilla", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 9, + "fields": { + "country": "Antarctica", + "continent": "" + } + }, + { + "model": "uploader.country", + "pk": 10, + "fields": { + "country": "Antigua and Barbuda", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 11, + "fields": { + "country": "Argentina", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 12, + "fields": { + "country": "Armenia", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 13, + "fields": { + "country": "Aruba", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 14, + "fields": { + "country": "Australia", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 15, + "fields": { + "country": "Austria", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 16, + "fields": { + "country": "Azerbaijan", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 17, + "fields": { + "country": "Bahamas", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 18, + "fields": { + "country": "Bahrain", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 19, + "fields": { + "country": "Bangladesh", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 20, + "fields": { + "country": "Barbados", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 21, + "fields": { + "country": "Belarus", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 22, + "fields": { + "country": "Belgium", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 23, + "fields": { + "country": "Belize", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 24, + "fields": { + "country": "Benin", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 25, + "fields": { + "country": "Bermuda", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 26, + "fields": { + "country": "Bhutan", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 27, + "fields": { + "country": "Bolivia (Plurinational State of)", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 28, + "fields": { + "country": "Bonaire, Sint Eustatius and Saba", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 29, + "fields": { + "country": "Bosnia and Herzegovina", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 30, + "fields": { + "country": "Botswana", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 31, + "fields": { + "country": "Bouvet Island", + "continent": "" + } + }, + { + "model": "uploader.country", + "pk": 32, + "fields": { + "country": "Brazil", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 33, + "fields": { + "country": "British Indian Ocean Territory", + "continent": "" + } + }, + { + "model": "uploader.country", + "pk": 34, + "fields": { + "country": "Brunei Darussalam", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 35, + "fields": { + "country": "Bulgaria", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 36, + "fields": { + "country": "Burkina Faso", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 37, + "fields": { + "country": "Burundi", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 38, + "fields": { + "country": "Cambodia", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 39, + "fields": { + "country": "Cameroon", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 40, + "fields": { + "country": "Canada", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 41, + "fields": { + "country": "Cabo Verde", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 42, + "fields": { + "country": "Cayman Islands", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 43, + "fields": { + "country": "Central African Republic", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 44, + "fields": { + "country": "Chad", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 45, + "fields": { + "country": "Chile", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 46, + "fields": { + "country": "China", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 47, + "fields": { + "country": "Christmas Island", + "continent": "" + } + }, + { + "model": "uploader.country", + "pk": 48, + "fields": { + "country": "Cocos (Keeling) Islands", + "continent": "" + } + }, + { + "model": "uploader.country", + "pk": 49, + "fields": { + "country": "Colombia", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 50, + "fields": { + "country": "Comoros", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 51, + "fields": { + "country": "Congo", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 52, + "fields": { + "country": "Congo (Democratic Republic of the)", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 53, + "fields": { + "country": "Cook Islands", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 54, + "fields": { + "country": "Costa Rica", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 55, + "fields": { + "country": "C\u00f4te d'Ivoire", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 56, + "fields": { + "country": "Croatia", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 57, + "fields": { + "country": "Cuba", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 58, + "fields": { + "country": "Cura\u00e7ao", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 59, + "fields": { + "country": "Cyprus", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 60, + "fields": { + "country": "Czech Republic", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 61, + "fields": { + "country": "Denmark", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 62, + "fields": { + "country": "Djibouti", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 63, + "fields": { + "country": "Dominica", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 64, + "fields": { + "country": "Dominican Republic", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 65, + "fields": { + "country": "Ecuador", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 66, + "fields": { + "country": "Egypt", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 67, + "fields": { + "country": "El Salvador", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 68, + "fields": { + "country": "Equatorial Guinea", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 69, + "fields": { + "country": "Eritrea", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 70, + "fields": { + "country": "Estonia", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 71, + "fields": { + "country": "Ethiopia", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 72, + "fields": { + "country": "Falkland Islands (Malvinas)", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 73, + "fields": { + "country": "Faroe Islands", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 74, + "fields": { + "country": "Fiji", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 75, + "fields": { + "country": "Finland", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 76, + "fields": { + "country": "France", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 77, + "fields": { + "country": "French Guiana", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 78, + "fields": { + "country": "French Polynesia", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 79, + "fields": { + "country": "French Southern Territories", + "continent": "" + } + }, + { + "model": "uploader.country", + "pk": 80, + "fields": { + "country": "Gabon", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 81, + "fields": { + "country": "Gambia", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 82, + "fields": { + "country": "Georgia", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 83, + "fields": { + "country": "Germany", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 84, + "fields": { + "country": "Ghana", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 85, + "fields": { + "country": "Gibraltar", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 86, + "fields": { + "country": "Greece", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 87, + "fields": { + "country": "Greenland", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 88, + "fields": { + "country": "Grenada", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 89, + "fields": { + "country": "Guadeloupe", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 90, + "fields": { + "country": "Guam", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 91, + "fields": { + "country": "Guatemala", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 92, + "fields": { + "country": "Guernsey", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 93, + "fields": { + "country": "Guinea", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 94, + "fields": { + "country": "Guinea-Bissau", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 95, + "fields": { + "country": "Guyana", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 96, + "fields": { + "country": "Haiti", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 97, + "fields": { + "country": "Heard Island and McDonald Islands", + "continent": "" + } + }, + { + "model": "uploader.country", + "pk": 98, + "fields": { + "country": "Holy See", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 99, + "fields": { + "country": "Honduras", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 100, + "fields": { + "country": "Hong Kong", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 101, + "fields": { + "country": "Hungary", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 102, + "fields": { + "country": "Iceland", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 103, + "fields": { + "country": "India", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 104, + "fields": { + "country": "Indonesia", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 105, + "fields": { + "country": "Iran (Islamic Republic of)", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 106, + "fields": { + "country": "Iraq", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 107, + "fields": { + "country": "Ireland", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 108, + "fields": { + "country": "Isle of Man", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 109, + "fields": { + "country": "Israel", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 110, + "fields": { + "country": "Italy", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 111, + "fields": { + "country": "Jamaica", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 112, + "fields": { + "country": "Japan", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 113, + "fields": { + "country": "Jersey", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 114, + "fields": { + "country": "Jordan", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 115, + "fields": { + "country": "Kazakhstan", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 116, + "fields": { + "country": "Kenya", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 117, + "fields": { + "country": "Kiribati", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 118, + "fields": { + "country": "Korea (Democratic People's Republic of)", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 119, + "fields": { + "country": "Korea (Republic of)", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 120, + "fields": { + "country": "Kuwait", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 121, + "fields": { + "country": "Kyrgyzstan", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 122, + "fields": { + "country": "Lao People's Democratic Republic", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 123, + "fields": { + "country": "Latvia", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 124, + "fields": { + "country": "Lebanon", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 125, + "fields": { + "country": "Lesotho", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 126, + "fields": { + "country": "Liberia", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 127, + "fields": { + "country": "Libya", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 128, + "fields": { + "country": "Liechtenstein", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 129, + "fields": { + "country": "Lithuania", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 130, + "fields": { + "country": "Luxembourg", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 131, + "fields": { + "country": "Macao", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 132, + "fields": { + "country": "Macedonia (the former Yugoslav Republic of)", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 133, + "fields": { + "country": "Madagascar", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 134, + "fields": { + "country": "Malawi", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 135, + "fields": { + "country": "Malaysia", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 136, + "fields": { + "country": "Maldives", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 137, + "fields": { + "country": "Mali", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 138, + "fields": { + "country": "Malta", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 139, + "fields": { + "country": "Marshall Islands", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 140, + "fields": { + "country": "Martinique", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 141, + "fields": { + "country": "Mauritania", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 142, + "fields": { + "country": "Mauritius", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 143, + "fields": { + "country": "Mayotte", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 144, + "fields": { + "country": "Mexico", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 145, + "fields": { + "country": "Micronesia (Federated States of)", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 146, + "fields": { + "country": "Moldova (Republic of)", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 147, + "fields": { + "country": "Monaco", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 148, + "fields": { + "country": "Mongolia", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 149, + "fields": { + "country": "Montenegro", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 150, + "fields": { + "country": "Montserrat", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 151, + "fields": { + "country": "Morocco", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 152, + "fields": { + "country": "Mozambique", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 153, + "fields": { + "country": "Myanmar", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 154, + "fields": { + "country": "Namibia", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 155, + "fields": { + "country": "Nauru", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 156, + "fields": { + "country": "Nepal", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 157, + "fields": { + "country": "Netherlands", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 158, + "fields": { + "country": "New Caledonia", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 159, + "fields": { + "country": "New Zealand", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 160, + "fields": { + "country": "Nicaragua", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 161, + "fields": { + "country": "Niger", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 162, + "fields": { + "country": "Nigeria", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 163, + "fields": { + "country": "Niue", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 164, + "fields": { + "country": "Norfolk Island", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 165, + "fields": { + "country": "Northern Mariana Islands", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 166, + "fields": { + "country": "Norway", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 167, + "fields": { + "country": "Oman", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 168, + "fields": { + "country": "Pakistan", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 169, + "fields": { + "country": "Palau", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 170, + "fields": { + "country": "Palestine, State of", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 171, + "fields": { + "country": "Panama", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 172, + "fields": { + "country": "Papua New Guinea", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 173, + "fields": { + "country": "Paraguay", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 174, + "fields": { + "country": "Peru", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 175, + "fields": { + "country": "Philippines", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 176, + "fields": { + "country": "Pitcairn", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 177, + "fields": { + "country": "Poland", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 178, + "fields": { + "country": "Portugal", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 179, + "fields": { + "country": "Puerto Rico", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 180, + "fields": { + "country": "Qatar", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 181, + "fields": { + "country": "R\u00e9union", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 182, + "fields": { + "country": "Romania", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 183, + "fields": { + "country": "Russian Federation", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 184, + "fields": { + "country": "Rwanda", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 185, + "fields": { + "country": "Saint Barth\u00e9lemy", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 186, + "fields": { + "country": "Saint Helena, Ascension and Tristan da Cunha", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 187, + "fields": { + "country": "Saint Kitts and Nevis", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 188, + "fields": { + "country": "Saint Lucia", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 189, + "fields": { + "country": "Saint Martin (French part)", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 190, + "fields": { + "country": "Saint Pierre and Miquelon", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 191, + "fields": { + "country": "Saint Vincent and the Grenadines", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 192, + "fields": { + "country": "Samoa", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 193, + "fields": { + "country": "San Marino", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 194, + "fields": { + "country": "Sao Tome and Principe", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 195, + "fields": { + "country": "Saudi Arabia", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 196, + "fields": { + "country": "Senegal", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 197, + "fields": { + "country": "Serbia", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 198, + "fields": { + "country": "Seychelles", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 199, + "fields": { + "country": "Sierra Leone", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 200, + "fields": { + "country": "Singapore", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 201, + "fields": { + "country": "Sint Maarten (Dutch part)", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 202, + "fields": { + "country": "Slovakia", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 203, + "fields": { + "country": "Slovenia", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 204, + "fields": { + "country": "Solomon Islands", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 205, + "fields": { + "country": "Somalia", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 206, + "fields": { + "country": "South Africa", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 207, + "fields": { + "country": "South Georgia and the South Sandwich Islands", + "continent": "" + } + }, + { + "model": "uploader.country", + "pk": 208, + "fields": { + "country": "South Sudan", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 209, + "fields": { + "country": "Spain", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 210, + "fields": { + "country": "Sri Lanka", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 211, + "fields": { + "country": "Sudan", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 212, + "fields": { + "country": "Suriname", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 213, + "fields": { + "country": "Svalbard and Jan Mayen", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 214, + "fields": { + "country": "Swaziland", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 215, + "fields": { + "country": "Sweden", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 216, + "fields": { + "country": "Switzerland", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 217, + "fields": { + "country": "Syrian Arab Republic", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 218, + "fields": { + "country": "Taiwan, Province of China", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 219, + "fields": { + "country": "Tajikistan", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 220, + "fields": { + "country": "Tanzania, United Republic of", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 221, + "fields": { + "country": "Thailand", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 222, + "fields": { + "country": "Timor-Leste", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 223, + "fields": { + "country": "Togo", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 224, + "fields": { + "country": "Tokelau", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 225, + "fields": { + "country": "Tonga", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 226, + "fields": { + "country": "Trinidad and Tobago", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 227, + "fields": { + "country": "Tunisia", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 228, + "fields": { + "country": "Turkey", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 229, + "fields": { + "country": "Turkmenistan", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 230, + "fields": { + "country": "Turks and Caicos Islands", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 231, + "fields": { + "country": "Tuvalu", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 232, + "fields": { + "country": "Uganda", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 233, + "fields": { + "country": "Ukraine", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 234, + "fields": { + "country": "United Arab Emirates", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 235, + "fields": { + "country": "United Kingdom of Great Britain and Northern Ireland", + "continent": "Europe" + } + }, + { + "model": "uploader.country", + "pk": 236, + "fields": { + "country": "United States of America", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 237, + "fields": { + "country": "United States Minor Outlying Islands", + "continent": "" + } + }, + { + "model": "uploader.country", + "pk": 238, + "fields": { + "country": "Uruguay", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 239, + "fields": { + "country": "Uzbekistan", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 240, + "fields": { + "country": "Vanuatu", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 241, + "fields": { + "country": "Venezuela (Bolivarian Republic of)", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 242, + "fields": { + "country": "Viet Nam", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 243, + "fields": { + "country": "Virgin Islands (British)", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 244, + "fields": { + "country": "Virgin Islands (U.S.)", + "continent": "Americas" + } + }, + { + "model": "uploader.country", + "pk": 245, + "fields": { + "country": "Wallis and Futuna", + "continent": "Oceania" + } + }, + { + "model": "uploader.country", + "pk": 246, + "fields": { + "country": "Western Sahara", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 247, + "fields": { + "country": "Yemen", + "continent": "Asia" + } + }, + { + "model": "uploader.country", + "pk": 248, + "fields": { + "country": "Zambia", + "continent": "Africa" + } + }, + { + "model": "uploader.country", + "pk": 249, + "fields": { + "country": "Zimbabwe", + "continent": "Africa" + } + } +] diff --git a/dashboard_viewer/uploader/management/__init__.py b/dashboard_viewer/uploader/management/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/dashboard_viewer/uploader/management/commands/__init__.py b/dashboard_viewer/uploader/management/commands/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/dashboard_viewer/uploader/management/commands/populate_countries.py b/dashboard_viewer/uploader/management/commands/populate_countries.py deleted file mode 100644 index 58607170..00000000 --- a/dashboard_viewer/uploader/management/commands/populate_countries.py +++ /dev/null @@ -1,269 +0,0 @@ -from django.core.management.base import BaseCommand -from uploader.models import Country - - -class Command(BaseCommand): - help = "This command will populate the database with the countries and continents" - - def handle(self, *args, **options): - listOfCountries = self.getCountries() - entries = [] - for country in listOfCountries: - entries.append(Country(country=country, continent=listOfCountries[country])) - try: - Country.objects.bulk_create(entries) - except Exception as ex: - print(ex) - - def getCountries(self): - return { - "Afghanistan": "Asia", - "Aland Islands": "Europe", - "Albania": "Europe", - "Algeria": "Africa", - "American Samoa": "Oceania", - "Andorra": "Europe", - "Angola": "Africa", - "Anguilla": "Americas", - "Antarctica": "", - "Antigua and Barbuda": "Americas", - "Argentina": "Americas", - "Armenia": "Asia", - "Aruba": "Americas", - "Australia": "Oceania", - "Austria": "Europe", - "Azerbaijan": "Asia", - "Bahamas": "Americas", - "Bahrain": "Asia", - "Bangladesh": "Asia", - "Barbados": "Americas", - "Belarus": "Europe", - "Belgium": "Europe", - "Belize": "Americas", - "Benin": "Africa", - "Bermuda": "Americas", - "Bhutan": "Asia", - "Bolivia (Plurinational State of)": "Americas", - "Bonaire, Sint Eustatius and Saba": "Americas", - "Bosnia and Herzegovina": "Europe", - "Botswana": "Africa", - "Bouvet Island": "", - "Brazil": "Americas", - "British Indian Ocean Territory": "", - "Brunei Darussalam": "Asia", - "Bulgaria": "Europe", - "Burkina Faso": "Africa", - "Burundi": "Africa", - "Cambodia": "Asia", - "Cameroon": "Africa", - "Canada": "Americas", - "Cabo Verde": "Africa", - "Cayman Islands": "Americas", - "Central African Republic": "Africa", - "Chad": "Africa", - "Chile": "Americas", - "China": "Asia", - "Christmas Island": "", - "Cocos (Keeling) Islands": "", - "Colombia": "Americas", - "Comoros": "Africa", - "Congo": "Africa", - "Congo (Democratic Republic of the)": "Africa", - "Cook Islands": "Oceania", - "Costa Rica": "Americas", - "Côte d'Ivoire": "Africa", - "Croatia": "Europe", - "Cuba": "Americas", - "Curaçao": "Americas", - "Cyprus": "Asia", - "Czech Republic": "Europe", - "Denmark": "Europe", - "Djibouti": "Africa", - "Dominica": "Americas", - "Dominican Republic": "Americas", - "Ecuador": "Americas", - "Egypt": "Africa", - "El Salvador": "Americas", - "Equatorial Guinea": "Africa", - "Eritrea": "Africa", - "Estonia": "Europe", - "Ethiopia": "Africa", - "Falkland Islands (Malvinas)": "Americas", - "Faroe Islands": "Europe", - "Fiji": "Oceania", - "Finland": "Europe", - "France": "Europe", - "French Guiana": "Americas", - "French Polynesia": "Oceania", - "French Southern Territories": "", - "Gabon": "Africa", - "Gambia": "Africa", - "Georgia": "Asia", - "Germany": "Europe", - "Ghana": "Africa", - "Gibraltar": "Europe", - "Greece": "Europe", - "Greenland": "Americas", - "Grenada": "Americas", - "Guadeloupe": "Americas", - "Guam": "Oceania", - "Guatemala": "Americas", - "Guernsey": "Europe", - "Guinea": "Africa", - "Guinea-Bissau": "Africa", - "Guyana": "Americas", - "Haiti": "Americas", - "Heard Island and McDonald Islands": "", - "Holy See": "Europe", - "Honduras": "Americas", - "Hong Kong": "Asia", - "Hungary": "Europe", - "Iceland": "Europe", - "India": "Asia", - "Indonesia": "Asia", - "Iran (Islamic Republic of)": "Asia", - "Iraq": "Asia", - "Ireland": "Europe", - "Isle of Man": "Europe", - "Israel": "Asia", - "Italy": "Europe", - "Jamaica": "Americas", - "Japan": "Asia", - "Jersey": "Europe", - "Jordan": "Asia", - "Kazakhstan": "Asia", - "Kenya": "Africa", - "Kiribati": "Oceania", - "Korea (Democratic People's Republic of)": "Asia", - "Korea (Republic of)": "Asia", - "Kuwait": "Asia", - "Kyrgyzstan": "Asia", - "Lao People's Democratic Republic": "Asia", - "Latvia": "Europe", - "Lebanon": "Asia", - "Lesotho": "Africa", - "Liberia": "Africa", - "Libya": "Africa", - "Liechtenstein": "Europe", - "Lithuania": "Europe", - "Luxembourg": "Europe", - "Macao": "Asia", - "Macedonia (the former Yugoslav Republic of)": "Europe", - "Madagascar": "Africa", - "Malawi": "Africa", - "Malaysia": "Asia", - "Maldives": "Asia", - "Mali": "Africa", - "Malta": "Europe", - "Marshall Islands": "Oceania", - "Martinique": "Americas", - "Mauritania": "Africa", - "Mauritius": "Africa", - "Mayotte": "Africa", - "Mexico": "Americas", - "Micronesia (Federated States of)": "Oceania", - "Moldova (Republic of)": "Europe", - "Monaco": "Europe", - "Mongolia": "Asia", - "Montenegro": "Europe", - "Montserrat": "Americas", - "Morocco": "Africa", - "Mozambique": "Africa", - "Myanmar": "Asia", - "Namibia": "Africa", - "Nauru": "Oceania", - "Nepal": "Asia", - "Netherlands": "Europe", - "New Caledonia": "Oceania", - "New Zealand": "Oceania", - "Nicaragua": "Americas", - "Niger": "Africa", - "Nigeria": "Africa", - "Niue": "Oceania", - "Norfolk Island": "Oceania", - "Northern Mariana Islands": "Oceania", - "Norway": "Europe", - "Oman": "Asia", - "Pakistan": "Asia", - "Palau": "Oceania", - "Palestine, State of": "Asia", - "Panama": "Americas", - "Papua New Guinea": "Oceania", - "Paraguay": "Americas", - "Peru": "Americas", - "Philippines": "Asia", - "Pitcairn": "Oceania", - "Poland": "Europe", - "Portugal": "Europe", - "Puerto Rico": "Americas", - "Qatar": "Asia", - "Réunion": "Africa", - "Romania": "Europe", - "Russian Federation": "Europe", - "Rwanda": "Africa", - "Saint Barthélemy": "Americas", - "Saint Helena, Ascension and Tristan da Cunha": "Africa", - "Saint Kitts and Nevis": "Americas", - "Saint Lucia": "Americas", - "Saint Martin (French part)": "Americas", - "Saint Pierre and Miquelon": "Americas", - "Saint Vincent and the Grenadines": "Americas", - "Samoa": "Oceania", - "San Marino": "Europe", - "Sao Tome and Principe": "Africa", - "Saudi Arabia": "Asia", - "Senegal": "Africa", - "Serbia": "Europe", - "Seychelles": "Africa", - "Sierra Leone": "Africa", - "Singapore": "Asia", - "Sint Maarten (Dutch part)": "Americas", - "Slovakia": "Europe", - "Slovenia": "Europe", - "Solomon Islands": "Oceania", - "Somalia": "Africa", - "South Africa": "Africa", - "South Georgia and the South Sandwich Islands": "", - "South Sudan": "Africa", - "Spain": "Europe", - "Sri Lanka": "Asia", - "Sudan": "Africa", - "Suriname": "Americas", - "Svalbard and Jan Mayen": "Europe", - "Swaziland": "Africa", - "Sweden": "Europe", - "Switzerland": "Europe", - "Syrian Arab Republic": "Asia", - "Taiwan, Province of China": "Asia", - "Tajikistan": "Asia", - "Tanzania, United Republic of": "Africa", - "Thailand": "Asia", - "Timor-Leste": "Asia", - "Togo": "Africa", - "Tokelau": "Oceania", - "Tonga": "Oceania", - "Trinidad and Tobago": "Americas", - "Tunisia": "Africa", - "Turkey": "Asia", - "Turkmenistan": "Asia", - "Turks and Caicos Islands": "Americas", - "Tuvalu": "Oceania", - "Uganda": "Africa", - "Ukraine": "Europe", - "United Arab Emirates": "Asia", - "United Kingdom of Great Britain and Northern Ireland": "Europe", - "United States of America": "Americas", - "United States Minor Outlying Islands": "", - "Uruguay": "Americas", - "Uzbekistan": "Asia", - "Vanuatu": "Oceania", - "Venezuela (Bolivarian Republic of)": "Americas", - "Viet Nam": "Asia", - "Virgin Islands (British)": "Americas", - "Virgin Islands (U.S.)": "Americas", - "Wallis and Futuna": "Oceania", - "Western Sahara": "Africa", - "Yemen": "Asia", - "Zambia": "Africa", - "Zimbabwe": "Africa", - } From 1a2cf0abe8d82c2a3008388094430022f0455289 Mon Sep 17 00:00:00 2001 From: aspedrosa Date: Sun, 25 Oct 2020 17:30:55 +0000 Subject: [PATCH 4/8] Create a command for generating materialized views --- dashboard_viewer/dashboard_viewer/routers.py | 14 +- dashboard_viewer/docker-init.sh | 5 +- .../fixtures/initial_data.json | 173 ++++++++++++++++++ .../commands/build_materialized_queries.py | 44 +++++ .../materialized_queries_manager/models.py | 11 +- .../tabsManager/fixtures/initial_data.json | 2 +- 6 files changed, 238 insertions(+), 11 deletions(-) create mode 100644 dashboard_viewer/materialized_queries_manager/fixtures/initial_data.json create mode 100644 dashboard_viewer/materialized_queries_manager/management/commands/build_materialized_queries.py diff --git a/dashboard_viewer/dashboard_viewer/routers.py b/dashboard_viewer/dashboard_viewer/routers.py index db16bf60..278d65ec 100644 --- a/dashboard_viewer/dashboard_viewer/routers.py +++ b/dashboard_viewer/dashboard_viewer/routers.py @@ -9,32 +9,32 @@ class AchillesRouter: achilles database. The rest will be stored on the default database """ - achilles_app = "uploader" + achilles_apps = ["uploader", "materialized_queries_manager"] achilles_db = "achilles" def db_for_read(self, model, **_): - if model._meta.app_label == self.achilles_app: + if model._meta.app_label in self.achilles_apps: return self.achilles_db return None def db_for_write(self, model, **_): - if model._meta.app_label == self.achilles_app: + if model._meta.app_label in self.achilles_apps: return self.achilles_db return None def allow_relation(self, obj1, obj2, **_): if ( - obj1._meta.app_label == self.achilles_app - or obj2._meta.app_label == self.achilles_app + obj1._meta.app_label in self.achilles_apps + or obj2._meta.app_label in self.achilles_apps ): return True return None def allow_migrate(self, db, app_label, **_): if db == self.achilles_db: - result = app_label == self.achilles_app + result = app_label in self.achilles_apps return result - if app_label == self.achilles_app: + if app_label in self.achilles_apps: result = db == self.achilles_db return result return None diff --git a/dashboard_viewer/docker-init.sh b/dashboard_viewer/docker-init.sh index 2014f3f0..bba68411 100755 --- a/dashboard_viewer/docker-init.sh +++ b/dashboard_viewer/docker-init.sh @@ -10,8 +10,9 @@ python manage.py migrate python manage.py migrate --database=achilles # Load initial data -python manage.py load_data --app tabsManager initial_data -python manage.py load_data --app uploader --database achilles country_initial_data +python manage.py loaddata --app tabsManager initial_data +python manage.py loaddata --app uploader --database achilles country_initial_data +python manage.py loaddata --app materialized_queries_manager --database achilles initial_data # Create an user for the admin app python manage.py createsuperuser diff --git a/dashboard_viewer/materialized_queries_manager/fixtures/initial_data.json b/dashboard_viewer/materialized_queries_manager/fixtures/initial_data.json new file mode 100644 index 00000000..9b45ce19 --- /dev/null +++ b/dashboard_viewer/materialized_queries_manager/fixtures/initial_data.json @@ -0,0 +1,173 @@ +[ + { + "model": "materialized_queries_manager.materializedquery", + "pk": 1, + "fields": { + "name": "number_of_patients", + "dashboards": null, + "query": "SELECT\r\nachilles_results.count_value,\r\ndata_source.name,\r\ndata_source.acronym\r\nFROM achilles_results\r\nJOIN data_source ON achilles_results.data_source_id=data_source.id\r\nWHERE analysis_id = 1" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 2, + "fields": { + "name": "gender", + "dashboards": null, + "query": "SELECT source.name as name,\r\n source.acronym,\r\n concept_name as gender,\r\n count_value\r\n FROM public.achilles_results AS achilles\r\n INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\n INNER JOIN public.concept ON stratum_1 = CAST(concept_id AS text)\r\n WHERE analysis_id = 2" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 4, + "fields": { + "name": "age1observation_bar_chart", + "dashboards": null, + "query": "SELECT source.name,\r\n cast(stratum_1 as int) as Age,\r\n count_value as count, \r\n source.acronym\r\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\nwhere analysis_id = 101" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 5, + "fields": { + "name": "year_of_birth", + "dashboards": null, + "query": "SELECT source.name,\r\n source.acronym,\r\n stratum_1 as \"Birth_year\",\r\n count_value as count\r\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\nwhere analysis_id = 3" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 6, + "fields": { + "name": "avg_num_of_records_per_person", + "dashboards": null, + "query": "SELECT \r\n source.name,\r\n source.acronym,\r\n case \r\n when analysis_id = 201 then 'Visit'\r\n when analysis_id = 401 then 'Condition'\r\n when analysis_id = 501 then 'Death'\r\n when analysis_id = 601 then 'Procedure'\r\n when analysis_id = 701 then 'Drug Exposure'\r\n when analysis_id = 801 then 'Observation'\r\n when analysis_id = 1801 then 'Measurement'\r\n when analysis_id = 2101 then 'Device'\r\n when analysis_id = 2201 then 'Note'\r\n end as Data_Domain,\r\n SUM(count_value) /AVG(num_persons) as \"records_per_person\"\r\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\nINNER JOIN (SELECT data_source_id , count_value as num_persons FROM achilles_results WHERE analysis_id = 1) counts\r\nON achilles.data_source_id = counts.data_source_id \r\nGROUP BY analysis_id, source.name, source.acronym\r\nHAVING analysis_id IN (201, 401, 501, 601, 701, 801, 1801, 2101, 2201)" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 7, + "fields": { + "name": "data_domain_total_num_of_records", + "dashboards": null, + "query": "SELECT\r\ndata_source.name,\r\ndata_source.acronym,\r\n case \r\n when analysis_id = 201 then 'Visit'\r\n when analysis_id = 401 then 'Condition'\r\n when analysis_id = 501 then 'Death'\r\n when analysis_id = 601 then 'Procedure'\r\n when analysis_id = 701 then 'Drug Exposure'\r\n when analysis_id = 801 then 'Observation'\r\n when analysis_id = 1801 then 'Measurement'\r\n when analysis_id = 2101 then 'Device'\r\n when analysis_id = 2201 then 'Note'\r\n end as Data_Domain,\r\n SUM(count_value) as \"count\"\r\nFROM achilles_results\r\nJOIN data_source ON achilles_results.data_source_id=data_source.id\r\nGROUP BY name, acronym, analysis_id\r\nHAVING analysis_id IN (201, 401, 501, 601, 701, 801, 1801, 2101, 2201)" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 10, + "fields": { + "name": "num_of_patients_in_observation_period", + "dashboards": null, + "query": "SELECT source.name,\r\n source.acronym,\r\n to_date(stratum_1, 'YYYYMM') as Date,\r\n count_value as \"Nr_patients\"\r\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\nWHERE analysis_id = 110" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 11, + "fields": { + "name": "cumulative_observation_time", + "dashboards": null, + "query": "SELECT\r\n name,\r\n acronym,\r\n xLengthOfObservation,\r\n round(cumulative_sum / total, 5) as yPercentPersons\r\nFROM (\r\n SELECT data_source_id, CAST(stratum_1 AS INTEGER) * 30 AS xLengthOfObservation, SUM(count_value) OVER (PARTITION BY data_source_id ORDER BY CAST(stratum_1 AS INTEGER) DESC) as cumulative_sum\r\n FROM achilles_results\r\n WHERE analysis_id = 108\r\n) AS cumulative_sums\r\nJOIN (\r\n SELECT data_source_id, count_value as total\r\n FROM achilles_results\r\n WHERE analysis_id = 1\r\n) AS totals\r\nON cumulative_sums.data_source_id = totals.data_source_id\r\nJOIN data_source ON cumulative_sums.data_source_id = data_source.id\r\nORDER BY name, xLengthOfObservation" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 12, + "fields": { + "name": "visit_type_bar_chart", + "dashboards": null, + "query": "SELECT\r\n data_source.name,\r\n data_source.acronym,\r\n concept.concept_name,\r\n achilles_results.count_value AS num_persons\r\nFROM (SELECT * FROM achilles_results WHERE analysis_id = 200) as achilles_results\r\nJOIN data_source ON achilles_results.data_source_id = data_source.id\r\nJOIN concept ON CAST(achilles_results.stratum_1 AS INTEGER) = concept.concept_id" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 13, + "fields": { + "name": "visit_type_table", + "dashboards": null, + "query": "SELECT\r\n name,\r\n acronym,\r\n concept.concept_name,\r\n ar1.count_value AS num_persons,\r\n round(100.0 * ar1.count_value / denom.count_value, 2) AS percent_persons,\r\n round(1.0 * ar2.count_value / ar1.count_value, 2) AS records_per_person\r\nFROM (\r\n SELECT *\r\n FROM achilles_results WHERE analysis_id = 200) AS ar1\r\n JOIN (\r\n SELECT *\r\n FROM achilles_results WHERE analysis_id = 201) AS ar2\r\n ON ar1.stratum_1 = ar2.stratum_1 AND ar1.data_source_id = ar2.data_source_id\r\n JOIN (\r\n SELECT *\r\n FROM achilles_results WHERE analysis_id = 1) AS denom\r\n ON ar1.data_source_id = denom.data_source_id\r\n JOIN data_source ON data_source.id = ar1.data_source_id\r\n JOIN concept ON CAST(ar1.stratum_1 AS INTEGER) = concept_id\r\nORDER BY ar1.data_source_id, ar1.count_value DESC" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 14, + "fields": { + "name": "concept_browser_table", + "dashboards": null, + "query": "SELECT\r\n q1.concept_id AS concept_id,\r\n q1.concept_name AS concept_name,\r\n q1.domain_id,\r\n source.name AS source_name,\r\n source.acronym,\r\n sum(q1.count_value) as \"Occurrence_count\",\r\n sum(q1.count_person) as \"Person_count\",\r\n CASE \r\n WHEN sum(q1.count_value)<=10 THEN '<=10'\r\n WHEN sum(q1.count_value)<=100 THEN '11-10\u02c62'\r\n WHEN sum(q1.count_value)<=1000 THEN '10\u02c62-10\u02c63'\r\n WHEN sum(q1.count_value)<=10000 THEN '10\u02c63-10\u02c64'\r\n WHEN sum(q1.count_value)<=100000 THEN '10\u02c64-10\u02c65'\r\n WHEN sum(q1.count_value)<=1000000 THEN '10\u02c65-10\u02c66'\r\n ELSE '>10\u02c66'\r\n END as \"magnitude_occurrences\",\r\n CASE \r\n WHEN sum(q1.count_person)<=10 THEN '<=10'\r\n WHEN sum(q1.count_person)<=100 THEN '11-10\u02c62'\r\n WHEN sum(q1.count_person)<=1000 THEN '10\u02c62-10\u02c63'\r\n WHEN sum(q1.count_person)<=10000 THEN '10\u02c63-10\u02c64'\r\n WHEN sum(q1.count_person)<=100000 THEN '10\u02c64-10\u02c65'\r\n WHEN sum(q1.count_person)<=1000000 THEN '10\u02c65-10\u02c66'\r\n ELSE '>10\u02c66'\r\n END AS \"magnitude_persons\"\r\nFROM (SELECT analysis_id,\r\n stratum_1 concept_id,\r\n data_source_id,\r\n concept_name,\r\n domain_id,\r\n count_value, 0 as count_person\r\n FROM achilles_results\r\n JOIN concept ON cast(stratum_1 AS BIGINT)=concept_id\r\n WHERE analysis_id in (201, 301, 401, 601, 701, 801, 901, 1001, 1801)\r\n UNION (SELECT analysis_id,\r\n stratum_1 concept_id,\r\n data_source_id,\r\n concept_name,\r\n domain_id,\r\n 0 as count_value,\r\n sum(count_value) as count_person\r\n FROM achilles_results\r\n JOIN concept on cast(stratum_1 as BIGINT)=concept_id\r\n WHERE analysis_id in (202, 401, 601, 701, 801, 901, 1001, 1801)\r\n GROUP BY analysis_id,stratum_1,data_source_id,concept_name,domain_id) ) as q1\r\n INNER JOIN public.data_source AS source ON q1.data_source_id=source.id\r\nGROUP BY q1.concept_id,q1.concept_name,q1.domain_id,source.name, acronym\r\nORDER BY \"Person_count\" desc" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 15, + "fields": { + "name": "meta_data_table", + "dashboards": null, + "query": "SELECT\r\n acronym,\r\n stratum_1 as \"name\",\r\n database_type,\r\n country,\r\n stratum_2 as \"source_release_date\",\r\n stratum_3 as \"cdm_release_date\",\r\n stratum_4 as \"cdm_version\",\r\n stratum_5 as \"vocabulary_version\"\r\nFROM achilles_results\r\nJOIN data_source ON achilles_results.data_source_id = data_source.id\r\nJOIN country ON data_source.country_id = country.id\r\nWHERE analysis_id=5000" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 16, + "fields": { + "name": "age1observation_table", + "dashboards": null, + "query": "SELECT name,\r\n acronym,\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) < 10 THEN count_value END) AS \"0-10\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 10 AND CAST(stratum_2 AS INTEGER) < 20 THEN count_value END) AS \"10-20\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 20 AND CAST(stratum_2 AS INTEGER) < 30 THEN count_value END) AS \"20-30\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 30 AND CAST(stratum_2 AS INTEGER) < 40 THEN count_value END) AS \"30-40\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 40 AND CAST(stratum_2 AS INTEGER) < 50 THEN count_value END) AS \"40-50\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 50 AND CAST(stratum_2 AS INTEGER) < 60 THEN count_value END) AS \"50-60\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 60 AND CAST(stratum_2 AS INTEGER) < 70 THEN count_value END) AS \"60-70\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 70 AND CAST(stratum_2 AS INTEGER) < 80 THEN count_value END) AS \"70-80\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 80 AND CAST(stratum_2 AS INTEGER) < 90 THEN count_value END) AS \"80-90\",\r\n SUM(CASE WHEN CAST(stratum_2 AS INTEGER) >= 90 THEN count_value END) AS \"90+\"\r\n FROM (\r\n SELECT source.name as name,\r\n source.acronym,\r\n count_value,\r\n stratum_2 \r\n FROM public.achilles_results AS achilles\r\n INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\n INNER JOIN public.concept ON stratum_1 = CAST(concept_id AS text)\r\n WHERE analysis_id = 102\r\n ) as sub_query\r\n \r\n GROUP BY name, acronym" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 17, + "fields": { + "name": "data_provenance", + "dashboards": null, + "query": "select source.name,\n source.acronym,\n case when analysis_id = 405 then 'Condition'\n when analysis_id = 605 then 'Procedure'\n when analysis_id = 705 then 'Drug'\n when analysis_id = 805 then 'Observation'\n when analysis_id = 1805 then 'Measurement'\n when analysis_id = 2105 then 'Device'\n else 'Other' end as domain_name,\n concept_name, sum(count_value) as num_records\nFROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\nINNER JOIN public.concept AS c1 ON stratum_2 = CAST(concept_id AS text)\nWHERE analysis_id in (405,605,705,805,1805,2105)\nGROUP BY source.name, source.acronym, concept_name, \n case when analysis_id = 405 then 'Condition'\n when analysis_id = 605 then 'Procedure'\n when analysis_id = 705 then 'Drug'\n when analysis_id = 805 then 'Observation'\n when analysis_id = 1805 then 'Measurement'\n when analysis_id = 2105 then 'Device'\n else 'Other' end" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 18, + "fields": { + "name": "database_country_filter", + "dashboards": "general", + "query": "SELECT source.name, \r\n country.country,\r\n source.database_type,\r\n source.acronym\r\nFROM public.data_source AS source INNER JOIN public.country \r\n AS country ON source.country_id=country.id" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 19, + "fields": { + "name": "network_patient_growth", + "dashboards": "general", + "query": "SELECT\r\n country,\r\n database_type,\r\n release_date,\r\n sum(count_value) OVER (ORDER BY release_date ASC)\r\nFROM achilles_results\r\nJOIN data_source ON data_source_id = data_source.id\r\nJOIN country ON data_source.country_id = country.id\r\nWHERE analysis_id = 1" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 20, + "fields": { + "name": "network_patient_growth_by_date", + "dashboards": null, + "query": "SELECT data.source,\r\n data.country,\r\n data.database_type,\r\n data.release_date,\r\n concept_name AS gender,\r\n count_value AS count\r\nFROM (\r\n SELECT source.name AS source,\r\n achilles.analysis_id AS analysis_id,\r\n achilles.stratum_1,\r\n achilles.stratum_2,\r\n achilles.stratum_3,\r\n achilles.stratum_4,\r\n achilles.stratum_5,\r\n achilles.count_value,\r\n country.country,\r\n source.database_type, \r\n source.release_date\r\n FROM public.achilles_results AS achilles INNER JOIN public.data_source AS source ON achilles.data_source_id=source.id\r\n INNER JOIN public.country AS country ON source.country_id=country.id\r\n ) data\r\nJOIN (SELECT '8507' AS concept_id, 'Male' AS concept_name UNION SELECT '8532' AS concept_id, 'Female' AS concept_name) AS concepts ON data.stratum_1 = concept_id\r\nWHERE analysis_id =2" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 21, + "fields": { + "name": "world_map", + "dashboards": "general", + "query": "SELECT name,\r\n acronym,\r\n database_type,\r\n latitude,\r\n longitude,\r\n country\r\nFROM public.data_source AS source INNER JOIN public.country \r\n AS country ON source.country_id=country.id" + } + }, + { + "model": "materialized_queries_manager.materializedquery", + "pk": 22, + "fields": { + "name": "patients_per_country_and_database_type", + "dashboards": "general", + "query": "SELECT country.country,\r\n source.database_type,\r\n count_value\r\nFROM public.achilles_results AS achilles \r\n INNER JOIN public.data_source AS source ON \r\n achilles.data_source_id=source.id\r\n INNER JOIN public.country AS country ON \r\n source.country_id=country.id\r\nWHERE analysis_id = 1" + } + } +] diff --git a/dashboard_viewer/materialized_queries_manager/management/commands/build_materialized_queries.py b/dashboard_viewer/materialized_queries_manager/management/commands/build_materialized_queries.py new file mode 100644 index 00000000..af6a69e9 --- /dev/null +++ b/dashboard_viewer/materialized_queries_manager/management/commands/build_materialized_queries.py @@ -0,0 +1,44 @@ +from contextlib import closing + +from django.conf import settings +from django.core.management.base import BaseCommand +from django.db import connections +from django.db.utils import ProgrammingError +from materialized_queries_manager.models import MaterializedQuery + + +class Command(BaseCommand): + + help = ( + "Generates the materialized queries records as materialized views on Postgres" + ) + + def handle(self, *_, **__): + with closing(connections["achilles"].cursor()) as cursor: + for materialized_query in MaterializedQuery.objects.all(): + + cursor.execute( + "SELECT COUNT(*) FROM pg_matviews WHERE matviewname = %s", + [materialized_query.name], + ) + if cursor.fetchone()[0] > 0: + self.stdout.write( + f"Materialized view {materialized_query.name} already exists. Skipping.", + self.style.WARNING, + ) + continue + + try: + cursor.execute( + f"CREATE MATERIALIZED VIEW {materialized_query.name} AS {materialized_query.query}" + ) + + cursor.execute( + f"GRANT SELECT ON {materialized_query.name} TO {settings.POSTGRES_SUPERSET_USER}" + ) + except ProgrammingError as e: + self.stderr.write( + f"Invalid sql on query '{materialized_query.name}'. Skipping. You should edit the sql query " + f"under the admin app and the materialized views will be created. Error: {e}", + self.style.ERROR, + ) diff --git a/dashboard_viewer/materialized_queries_manager/models.py b/dashboard_viewer/materialized_queries_manager/models.py index 3a609204..79182895 100644 --- a/dashboard_viewer/materialized_queries_manager/models.py +++ b/dashboard_viewer/materialized_queries_manager/models.py @@ -53,7 +53,16 @@ def full_clean(self, exclude=None, validate_unique=True): with closing(connections["achilles"].cursor()) as cursor: if self.id: old = MaterializedQuery.objects.get(id=self.id) - if old.name != self.name and old.query == self.query: + + cursor.execute( + "SELECT COUNT(*) FROM pg_matviews WHERE matviewname = %s", + [old.name], + ) + old_exists = cursor.fetchone()[0] > 0 + + if not old_exists: + self._create_materialized_view(cursor) + elif old.name != self.name and old.query == self.query: cursor.execute( f"ALTER MATERIALIZED VIEW {old.name} RENAME TO {self.name}" ) diff --git a/dashboard_viewer/tabsManager/fixtures/initial_data.json b/dashboard_viewer/tabsManager/fixtures/initial_data.json index 8a1651ec..3bb7625e 100644 --- a/dashboard_viewer/tabsManager/fixtures/initial_data.json +++ b/dashboard_viewer/tabsManager/fixtures/initial_data.json @@ -155,7 +155,7 @@ "pk": 8, "fields": { "url": "https://superset.ehden.eu/superset/dashboard/concepts-domains/?standalone=true", - "group": 8 + "group": 1 } } ] From 8a806c547b4523c9b2920510cc54be0ccba76d09 Mon Sep 17 00:00:00 2001 From: aspedrosa Date: Sun, 25 Oct 2020 17:56:08 +0000 Subject: [PATCH 5/8] Insert admin credentials through a prompt --- docker/.env-example | 7 ------- docker/superset/one_time_run_scripts/superset-init.sh | 7 +------ 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/docker/.env-example b/docker/.env-example index c7c1b771..fc860197 100644 --- a/docker/.env-example +++ b/docker/.env-example @@ -21,17 +21,10 @@ POSTGRES_DASHBOARD_VIEWER_DB=cdm # vv CHANGE VARIABLE BELOW vv DASHBOARD_VIEWER_SECRET_KEY=secret - POSTGRES_ACHILLES_USER=achilles POSTGRES_ACHILLES_PASSWORD=achilles POSTGRES_ACHILLES_DB=achilles -SUPERSET_ADMIN_USERNAME=admin -SUPERSET_ADMIN_PASSWORD=admin -SUPERSET_ADMIN_FIRSTNAME=Superset -SUPERSET_ADMIN_LASTNAME=Admin -SUPERSET_ADMIN_EMAIL=admin@superset.com - #production or development INSTALLATION_ENV=production diff --git a/docker/superset/one_time_run_scripts/superset-init.sh b/docker/superset/one_time_run_scripts/superset-init.sh index f33bd00c..72eed5fd 100755 --- a/docker/superset/one_time_run_scripts/superset-init.sh +++ b/docker/superset/one_time_run_scripts/superset-init.sh @@ -23,12 +23,7 @@ EOF source .env echo_step "1" "Starting" "Setting up admin user" -docker-compose run superset superset fab create-admin \ - --username $SUPERSET_ADMIN_USERNAME \ - --password $SUPERSET_ADMIN_PASSWORD \ - --firstname $SUPERSET_ADMIN_FIRSTNAME \ - --lastname $SUPERSET_ADMIN_LASTNAME \ - --email $SUPERSET_ADMIN_EMAIL +docker-compose run superset superset fab create-admin echo_step "1" "Complete" "Setting up admin user" # Import Achilles datasource From 628729a93af8ae04f0da64dcd5a05f3d509e7d1e Mon Sep 17 00:00:00 2001 From: aspedrosa Date: Tue, 27 Oct 2020 20:14:23 +0000 Subject: [PATCH 6/8] Create Superset url variable to fill tabs url --- dashboard_viewer/docker-init.sh | 6 ++++++ .../tabsManager/fixtures/initial_data.json | 16 ++++++++-------- docker/.env-example | 1 + docker/docker-compose.yml | 1 + 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/dashboard_viewer/docker-init.sh b/dashboard_viewer/docker-init.sh index bba68411..928015bd 100755 --- a/dashboard_viewer/docker-init.sh +++ b/dashboard_viewer/docker-init.sh @@ -10,6 +10,12 @@ python manage.py migrate python manage.py migrate --database=achilles # Load initial data +if [ $SUPERSET_URL == "" ] ; then + 1>&2 echo "Environment variable SUPERSET_URL not set" + exit 1 +fi + +sed -i s/"{SUPERSET_URL}"/$SUPERSET_URL/ /app/dashboard_viewer/tabsManager/fixtures/initial_data.json python manage.py loaddata --app tabsManager initial_data python manage.py loaddata --app uploader --database achilles country_initial_data python manage.py loaddata --app materialized_queries_manager --database achilles initial_data diff --git a/dashboard_viewer/tabsManager/fixtures/initial_data.json b/dashboard_viewer/tabsManager/fixtures/initial_data.json index 3bb7625e..1cf5b6f9 100644 --- a/dashboard_viewer/tabsManager/fixtures/initial_data.json +++ b/dashboard_viewer/tabsManager/fixtures/initial_data.json @@ -98,7 +98,7 @@ "model": "tabsManager.tab", "pk": 1, "fields": { - "url": "https://superset.ehden.eu/superset/dashboard/death/?standalone=true", + "url": "https://{SUPERSET_URL}/superset/dashboard/death/?standalone=true", "group": null } }, @@ -106,7 +106,7 @@ "model": "tabsManager.tab", "pk": 2, "fields": { - "url": "https://superset.ehden.eu/superset/dashboard/person/?standalone=true", + "url": "https://{SUPERSET_URL}/superset/dashboard/person/?standalone=true", "group": null } }, @@ -114,7 +114,7 @@ "model": "tabsManager.tab", "pk": 3, "fields": { - "url": "https://superset.ehden.eu/superset/dashboard/visit/?standalone=true", + "url": "https://{SUPERSET_URL}/superset/dashboard/visit/?standalone=true", "group": null } }, @@ -122,7 +122,7 @@ "model": "tabsManager.tab", "pk": 4, "fields": { - "url": "https://superset.ehden.eu/superset/dashboard/concepts-general/?standalone=true", + "url": "https://{SUPERSET_URL}/superset/dashboard/concepts-general/?standalone=true", "group": 1 } }, @@ -130,7 +130,7 @@ "model": "tabsManager.tab", "pk": 5, "fields": { - "url": "https://superset.ehden.eu/superset/dashboard/data-domains/?standalone=true", + "url": "https://{SUPERSET_URL}/superset/dashboard/data-domains/?standalone=true", "group": null } }, @@ -138,7 +138,7 @@ "model": "tabsManager.tab", "pk": 6, "fields": { - "url": "https://superset.ehden.eu/superset/dashboard/general/?standalone=true", + "url": "https://{SUPERSET_URL}/superset/dashboard/general/?standalone=true", "group": null } }, @@ -146,7 +146,7 @@ "model": "tabsManager.tab", "pk": 7, "fields": { - "url": "https://superset.ehden.eu/superset/dashboard/period/?standalone=true", + "url": "https://{SUPERSET_URL}/superset/dashboard/period/?standalone=true", "group": null } }, @@ -154,7 +154,7 @@ "model": "tabsManager.tab", "pk": 8, "fields": { - "url": "https://superset.ehden.eu/superset/dashboard/concepts-domains/?standalone=true", + "url": "https://{SUPERSET_URL}/superset/dashboard/concepts-domains/?standalone=true", "group": 1 } } diff --git a/docker/.env-example b/docker/.env-example index fc860197..b480ef42 100644 --- a/docker/.env-example +++ b/docker/.env-example @@ -14,6 +14,7 @@ POSTGRES_SUPERSET_PASSWORD=superset POSTGRES_SUPERSET_DB=superset # vv FILL VARIABLE BELOW to use the MapBox chart vv SUPERSET_MAPBOX_API_KEY=... +SUPERSET_URL=localhost:8088 POSTGRES_DASHBOARD_VIEWER_USER=cdm POSTGRES_DASHBOARD_VIEWER_PASSWORD=cdm diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 03581f54..b05d5741 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -120,6 +120,7 @@ services: REDIS_CONSTANCE_DB: 2 SECRET_KEY: ${DASHBOARD_VIEWER_SECRET_KEY} DASHBOARD_VIEWER_ENV: ${INSTALLATION_ENV} + SUPERSET_URL: ${SUPERSET_URL} # ports for development #ports: # - ${DASHBOARD_VIEWER_PORT}:8000 From 9f6ca0eb3d48dd4f2f62c3b081aba1733508ab64 Mon Sep 17 00:00:00 2001 From: aspedrosa Date: Tue, 27 Oct 2020 20:17:11 +0000 Subject: [PATCH 7/8] Add --rm so containers to run commands get removed --- docker/superset/one_time_run_scripts/superset-init.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/superset/one_time_run_scripts/superset-init.sh b/docker/superset/one_time_run_scripts/superset-init.sh index 72eed5fd..7fe025e5 100755 --- a/docker/superset/one_time_run_scripts/superset-init.sh +++ b/docker/superset/one_time_run_scripts/superset-init.sh @@ -23,13 +23,13 @@ EOF source .env echo_step "1" "Starting" "Setting up admin user" -docker-compose run superset superset fab create-admin +docker-compose run --rm superset superset fab create-admin echo_step "1" "Complete" "Setting up admin user" # Import Achilles datasource echo_step "2" "Starting" "Importing datasources" -docker-compose run superset sh -c "echo 'import sqlalchemy +docker-compose run --rm superset sh -c "echo 'import sqlalchemy import sys from superset import db from superset.models.core import Database From 527f43b5e0f06378cdf7011a958146606f711c17 Mon Sep 17 00:00:00 2001 From: aspedrosa Date: Wed, 28 Oct 2020 19:18:59 +0000 Subject: [PATCH 8/8] Update docker setup --- docker/README.md | 109 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 92 insertions(+), 17 deletions(-) diff --git a/docker/README.md b/docker/README.md index 760cd15b..776f116d 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,32 +1,107 @@ # Setup a docker environment +## First Steps + 1. Clone the repository with the command `git clone --recurse-submodules https://github.com/EHDEN/NetworkDashboards`. If you already cloned the repository without the `--recurse-submodules` option, run `git submodule update --init` to fetch the superset submodule. -2. Create a `.env` file on the `docker` directory, using `.env-example` as a reference, setting all necessary environment variables (SUPERSET\_MAPBOX\_API\_KEY and DASHBOARD\_VIEWER\_SECRET\_KEY). +2. Create a `.env` file on the `docker` directory, using `.env-example` as a reference, setting all necessary environment variables (`SUPERSET_MAPBOX_API_KEY` and `DASHBOARD_VIEWER_SECRET_KEY`). + +## Dashboard Viewer setup + +1. If you wish to expose the dashboard viewer app through a specific domain(s) you must add it/them to the `ALLOWED_HOSTS` list on file `dashboard_viewer/dashboard_viewer/settings.py` and remove the `'*'` entry. + +2. Build containers' images: `docker-compose build`. This might take several minutes. + +3. Set up the database and create an admin account for the dashboard viewer app: `docker-compose run --rm dashboard ./docker-init.sh`. + +## Insert Concepts + +The concepts table is not in the repository due to its dimension, therefore we use directly the Postgres console to insert this table in the installation. + +1. Get your concept csv file from [Athena](https://athena.ohdsi.org/) + +2. Copy the file into postgres container + + ```sh + docker cp concept.csv dashboard_viewer_postgres_1:/tmp/ + ``` + +3. Enter in the postgres container: + + ```sh + docker exec -it dashboard_viewer_postgres_1 bash + ``` + +4. Enter in the `achilles` database (value of the variable `POSTGRES_ACHILLES_DB` on the .env file) with the `root` user (value of the variable `POSTGRES_ROOT_USER` on the .env file): + + ``` + psql achilles root + ``` + +5. Create the `concept` table + + ```sql + CREATE TABLE concept ( + concept_id INTEGER NOT NULL, + concept_name VARCHAR(255) NOT NULL, + domain_id VARCHAR(20) NOT NULL, + vocabulary_id VARCHAR(20) NOT NULL, + concept_class_id VARCHAR(20) NOT NULL, + standard_concept VARCHAR(1) NULL, + concept_code VARCHAR(50) NOT NULL, + valid_start_date DATE NOT NULL, + valid_end_date DATE NOT NULL, + invalid_reason VARCHAR(1) NULL + ); + ``` + +6. Copy the CSV file content to the table (this could take a while) + + To get both `'` (single quotes) and `"` (double quotes) on the `concept_name` column we use a workaround by setting the quote character to one that should never be in the text. Here we used `\b` (backslash). + + ```sql + COPY public.concept FROM '/tmp/concept.csv' WITH CSV HEADER + DELIMITER E'\t' QUOTE E'\b'; + ``` + +7. Create index in table (this could take a while): + + ```sql + CREATE INDEX concept_concept_id_index ON concept (concept_id); + CREATE INDEX concept_concept_name_index ON concept (concept_name); + ``` + +8. Set the owner of the `concept` table to the `achilles` user (value of the variable `POSTGRES_ACHILLES_USER` on the .env file): + + ``` + ALTER TABLE concept OWNER TO achiller + ``` + +9. Bring up the containers: `docker-compose up -d`. -3. If you wish to expose the dashboard viewer app through a specific domain(s) you must add it/them to the ALLOWED_HOSTS list on file `dashboard_viewer/dashboard_viewer/settings.py` and remove the `'*'` entry. +10. Run the command `docker-compose run --rm dashboard python manage.py generate_materialized_views` to create the materialized views on Postgres. -4. Build containers' images: `docker-compose build`. This might take several minutes. +## Superset setup -5. Set up the database for the dashboard viewer app: `docker-compose run --rm dashboard ./docker-init.sh`. +1. Make sure that the container `superset-init` has finished before continuing. It is creating the necessary tables on the database and creating permissions and roles. -6. Bring up the containers: `docker-compose up -d`. +2. Execute the script `./superset/one_time_run_scripts/superset-init.sh`. This will create an admin account and associate the `achilles` database to Superset. **Attention:** You must be in the docker directory to execute this script. -7. Wait until the container `superset-init` stops running. It is creating the necessary tables on the database and creating permissions and roles. +3. We have already built some dashboards so if you want to import them run the script `./superset/one_time_run_scripts/load_dashboards.sh`. **Attention:** You must be in the docker directory to execute this script. -8. Execute the script `./superset/one_time_run_scripts/superset-init.sh`. This will create an admin account and associate the `achilles` database to Superset. **Attention:** You must be in the docker directory to execute this script. +4. If you used the default ports: -9. We have already built some dashboard so if you want to import them run the script `./superset/one_time_run_scripts/load_dashboards.sh`. **Attention:** You must be in the docker directory to execute this script. + - Go to `http://localhost` to access the dashboard viewer app. + - Go to `http://localhost:8088` to access superset. -10. If you used the default ports: +5. On release 0.37 of Superset, there is a bug related to the public role and because of that, we had to set `PUBLIC_ROLE_LIKE_GAMMA = True` on Superset settings. This leads the public role with permissions that he shouldn't have. To solve this, so any anonymous user can view dashboards, you should remove all its permissions and then add the following: - - Go to `http://localhost` to access the dashboard viewer app. - - Go to `http://localhost:8088` to access superset. + - can explore JSON on Superset + - can dashboard on Superset + - all datasource access on all_datasource_access + - can csrf token on Superset + - can list on CssTemplateAsyncModelView -11. On release 0.37 of superset there is a bug related to the public role and because of that, we had to set `PUBLIC_ROLE_LIKE_GAMMA = True` on superset settings. This leads the public role with permissions that he shouldn't have. To solve this, so any anonymous user can view dashboards, you should remove all its permissions and then add the following: +## Dummy data - - can explore JSON on Superset - - can dashboard on Superset - - all datasource access on all_datasource_access - - can csrf token on Superset - - can list on CssTemplateAsyncModelView +On a fresh installation, there are no achilles_results data so Superset's dashboards will display "No results". On the root of this repository, you can find the `demo` directory where we have an ACHILLES results file with synthetic data that you can upload to a data source on the uploader app of the dashboard viewer (localhost/uploader). If you wish to compare multiple data sources, on the `demo` directory the is also a python script that allows you to generate new ACHILLES results files, where it generates random count values based on the ranges of values for each set of analysis_id and stratums present on a base ACHILLES results file. So, from the one ACHILLES results fill we provided, you can have multiple data sources with different data.