{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "![Urgences - Image CC0 - pexels.com](img/pexels-pixabay-263402.jpg \"Urgences\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Challenge - [ED Lab Prediction]\n", "_Nom à trouver_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Objectif" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ce notebook effectue le pre-processing des données. \n", "Il exploite les données stockées dans la base sqlite, téléchargées à partir de `download_data.py` et les exporte dans un fichier csv à destination de l'entrainement de la data-visualisation l'algorithme." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Chargement des données" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import sqlite3\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [], "source": [ "# Sqlite connection\n", "conn = sqlite3.connect(\"./data/mimic-iv.sqlite\")\n", "\n", "# Custom lab items classification\n", "items = pd.read_csv(\"./config/lab_items.csv\").dropna()\n", "items_list = items[\"item_id\"].astype(\"str\").tolist()" ] }, { "cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [], "source": [ "# Création d'un index pour accélérer les requêtes\n", "conn.execute(\"CREATE INDEX IF NOT EXISTS biological_index ON labevents (stay_id, itemid)\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Stays dataset" ] }, { "cell_type": "code", "execution_count": 148, "metadata": {}, "outputs": [], "source": [ "stays = pd.read_sql(f\"\"\"\n", " SELECT \n", " s.stay_id,\n", " s.intime intime,\n", " p.gender gender,\n", " p.anchor_age age,\n", " t.temperature,\n", " t.heartrate,\n", " t.resprate,\n", " t.o2sat,\n", " t.sbp,\n", " t.dbp,\n", " t.pain,\n", " t.chiefcomplaint\n", " FROM edstays s\n", " LEFT JOIN patients p\n", " ON p.subject_id = s.subject_id\n", " LEFT Join triage t\n", " ON t.stay_id = s.stay_id\n", "\"\"\", conn)" ] }, { "cell_type": "code", "execution_count": 151, "metadata": {}, "outputs": [], "source": [ "# @TODO : include drugs" ] }, { "cell_type": "code", "execution_count": 178, "metadata": {}, "outputs": [], "source": [ "# Writting\n", "stays.to_csv(\"./data/features.csv\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Lab dataset" ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [], "source": [ "labs = pd.read_sql(f\"\"\"\n", " SELECT \n", " le.stay_id,\n", " le.itemid item_id\n", " FROM labevents le\n", " WHERE le.itemid IN ('{\"','\".join(items_list)}')\n", " GROUP BY\n", " le.stay_id,\n", " le.itemid\n", "\"\"\", conn)" ] }, { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [], "source": [ "labs_deduplicate = pd.merge(\n", " items[[\"item_id\",\"3\"]].rename(columns={\"3\":\"label\"}),\n", " labs,\n", " left_on=\"item_id\",\n", " right_on=\"item_id\"\n", ").drop_duplicates([\"stay_id\", \"label\"])[[\"stay_id\",\"label\"]] \\\n", " .reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 170, "metadata": {}, "outputs": [], "source": [ "labs_deduplicate_pivot = pd.pivot_table(\n", " labs_deduplicate.assign(value=1),\n", " index=[\"stay_id\"],\n", " columns=[\"label\"],\n", " values=\"value\"\n", ").fillna(0)" ] }, { "cell_type": "code", "execution_count": 176, "metadata": {}, "outputs": [], "source": [ "labs_deduplicate_pivot_final = labs_deduplicate_pivot.join(\n", " stays[[\"stay_id\"]].set_index(\"stay_id\"),\n", " how=\"right\"\n", ").fillna(0).astype(\"int8\").reset_index()" ] }, { "cell_type": "code", "execution_count": 179, "metadata": {}, "outputs": [], "source": [ "labs_deduplicate_pivot_final.to_csv(\"./data/labels.csv\")" ] } ], "metadata": { "interpreter": { "hash": "28b293e0c0671e44c7281dde6399c7c7419d3faca031d22494da8635907ada72" }, "kernelspec": { "display_name": "Python 3.9.7 ('base')", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }