{ "cells": [ { "cell_type": "markdown", "id": "b6f24a07", "metadata": {}, "source": [ "# FHIR example" ] }, { "cell_type": "markdown", "id": "313d8824", "metadata": {}, "source": [ "FHIR (Fast Healthcare Interoperability Resources) is a standard for healthcare data exchange, developed by Health Level Seven International (HL7). It is built on modern web technologies and is designed to enable easier access to healthcare information, supporting JSON, XML, and RDF formats for data representation. FHIR defines a set of \"resources\" that represent granular clinical concepts, like patients, admissions, and medications, facilitating integration with existing healthcare systems and the development of new applications.\n", "\n", "We want to emphasize that FHIR data is primarily designed for data exchanged and not for observational retrospective data. Such data should be stored in OMOP format." ] }, { "cell_type": "markdown", "id": "f55d3b7f", "metadata": {}, "source": [ "Here, we'll show a quick example on a synthetic dataset to demonstrate how one could work with FHIR data in ehrapy." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2024-05-15T13:47:00.200599Z", "start_time": "2024-05-15T13:46:58.309571Z" } }, "outputs": [], "source": [ "import ehrapy as ep" ], "id": "8df675df4777689a" }, { "cell_type": "code", "execution_count": 2, "id": "4b27e7ec", "metadata": { "ExecuteTime": { "end_time": "2024-05-15T13:47:25.133835Z", "start_time": "2024-05-15T13:47:08.699868Z" } }, "outputs": [], "source": [ "%%capture\n", "!wget https://synthetichealth.github.io/synthea-sample-data/downloads/latest/synthea_sample_data_fhir_latest.zip\n", "!mkdir fhir_dataset\n", "!unzip synthea_sample_data_fhir_latest.zip -d fhir_dataset" ] }, { "cell_type": "markdown", "id": "95a14df0", "metadata": {}, "source": [ "FHIR data is often times nested and contains lists and dictionaries.\n", "Generally, there are three options to deal with this:\n", "1. Transform the data into an awkward array and flatten it when needed.\n", "2. Extract values from all lists and dictionaries to store single values in the fields.\n", "3. Remove all lists and dictionaries. Only do this if the information is not relevant to you.\n", "\n", "Here, we'll work with Pandas `DataFrames` to be able to apply option 3." ] }, { "cell_type": "code", "execution_count": 3, "id": "b036b8e1", "metadata": { "ExecuteTime": { "end_time": "2024-05-15T13:48:00.239611Z", "start_time": "2024-05-15T13:47:43.088018Z" } }, "outputs": [], "source": [ "df = ep.io.read_fhir(\"fhir_dataset\", return_df=True)\n", "df = df[:1000] # The dataset is very large so we subset to the first 1000 records" ] }, { "cell_type": "code", "execution_count": 4, "id": "40d14b21", "metadata": { "ExecuteTime": { "end_time": "2024-05-15T13:48:00.636957Z", "start_time": "2024-05-15T13:48:00.241776Z" } }, "outputs": [], "source": [ "# Option 3: We're dropping any columns that contain lists or dictionaries and all columns that only contain NA values\n", "df.drop(columns=[col for col in df.columns if any(isinstance(x, (list, dict)) for x in df[col].dropna())], inplace=True)\n", "df.drop(columns=df.columns[df.isna().all()], inplace=True)" ] }, { "cell_type": "code", "execution_count": 5, "id": "ab1920a0", "metadata": { "ExecuteTime": { "end_time": "2024-05-15T13:48:00.651642Z", "start_time": "2024-05-15T13:48:00.637702Z" } }, "outputs": [ { "data": { "text/plain": "AnnData object with n_obs × n_vars = 1000 × 68\n layers: 'original'" }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "adata = ep.ad.df_to_anndata(df, index_column=\"id\")\n", "adata" ] }, { "cell_type": "code", "execution_count": 6, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "❗ Feature resource.suppliedItem.quantity.value was detected as a categorical feature stored numerically. Please verify.\n" ] }, { "data": { "text/plain": "\u001B[1m Detected feature types for AnnData object with 1000 obs and 68 vars\u001B[0m\n╠══ 📅\u001B[1m Date features\u001B[0m\n║ ╠══ resource.abatementDateTime\n║ ╠══ resource.authoredOn\n║ ╠══ resource.billablePeriod.end\n║ ╠══ resource.billablePeriod.start\n║ ╠══ resource.birthDate\n║ ╠══ resource.context.period.end\n║ ╠══ resource.context.period.start\n║ ╠══ resource.created\n║ ╠══ resource.date\n║ ╠══ resource.deceasedDateTime\n║ ╠══ resource.effectiveDateTime\n║ ╠══ resource.expirationDate\n║ ╠══ resource.issued\n║ ╠══ resource.manufactureDate\n║ ╠══ resource.occurrenceDateTime\n║ ╠══ resource.onsetDateTime\n║ ╠══ resource.performedPeriod.end\n║ ╠══ resource.performedPeriod.start\n║ ╠══ resource.period.end\n║ ╠══ resource.period.start\n║ ╠══ resource.recorded\n║ ╚══ resource.recordedDate\n╠══ 📐\u001B[1m Numerical features\u001B[0m\n║ ╠══ resource.distinctIdentifier\n║ ╠══ resource.lotNumber\n║ ╠══ resource.payment.amount.value\n║ ╠══ resource.serialNumber\n║ ╠══ resource.total.value\n║ ╚══ resource.valueQuantity.value\n╚══ 🗂️\u001B[1m Categorical features\u001B[0m\n ╠══ fullUrl (1000 categories)\n ╠══ patientId (5 categories)\n ╠══ request.method (1 categories)\n ╠══ request.url (16 categories)\n ╠══ resource.claim.reference (126 categories)\n ╠══ resource.class.code (3 categories)\n ╠══ resource.class.system (1 categories)\n ╠══ resource.code.text (125 categories)\n ╠══ resource.custodian.reference (8 categories)\n ╠══ resource.encounter.reference (57 categories)\n ╠══ resource.facility.reference (8 categories)\n ╠══ resource.gender (1 categories)\n ╠══ resource.intent (1 categories)\n ╠══ resource.location.reference (4 categories)\n ╠══ resource.maritalStatus.text (2 categories)\n ╠══ resource.medicationCodeableConcept.text (15 categories)\n ╠══ resource.multipleBirthBoolean (1 categories)\n ╠══ resource.outcome (1 categories)\n ╠══ resource.patient.reference (2 categories)\n ╠══ resource.payment.amount.currency (1 categories)\n ╠══ resource.prescription.reference (70 categories)\n ╠══ resource.primarySource (1 categories)\n ╠══ resource.provider.reference (16 categories)\n ╠══ resource.referral.reference (1 categories)\n ╠══ resource.requester.reference (6 categories)\n ╠══ resource.resourceType (16 categories)\n ╠══ resource.serviceProvider.reference (8 categories)\n ╠══ resource.status (8 categories)\n ╠══ resource.subject.reference (2 categories)\n ╠══ resource.suppliedItem.itemCodeableConcept.text (1 categories)\n ╠══ resource.suppliedItem.quantity.value (1 categories)\n ╠══ resource.text.status (1 categories)\n ╠══ resource.total.currency (1 categories)\n ╠══ resource.type.text (1 categories)\n ╠══ resource.use (1 categories)\n ╠══ resource.vaccineCode.text (5 categories)\n ╠══ resource.valueCodeableConcept.text (5 categories)\n ╠══ resource.valueQuantity.code (21 categories)\n ╠══ resource.valueQuantity.system (1 categories)\n ╚══ resource.valueQuantity.unit (21 categories)\n", "text/html": "
 Detected feature types for AnnData object with 1000 obs and 68 vars\n╠══ 📅 Date features\n║   ╠══ resource.abatementDateTime\n║   ╠══ resource.authoredOn\n║   ╠══ resource.billablePeriod.end\n║   ╠══ resource.billablePeriod.start\n║   ╠══ resource.birthDate\n║   ╠══ resource.context.period.end\n║   ╠══ resource.context.period.start\n║   ╠══ resource.created\n║   ╠══ resource.date\n║   ╠══ resource.deceasedDateTime\n║   ╠══ resource.effectiveDateTime\n║   ╠══ resource.expirationDate\n║   ╠══ resource.issued\n║   ╠══ resource.manufactureDate\n║   ╠══ resource.occurrenceDateTime\n║   ╠══ resource.onsetDateTime\n║   ╠══ resource.performedPeriod.end\n║   ╠══ resource.performedPeriod.start\n║   ╠══ resource.period.end\n║   ╠══ resource.period.start\n║   ╠══ resource.recorded\n║   ╚══ resource.recordedDate\n╠══ 📐 Numerical features\n║   ╠══ resource.distinctIdentifier\n║   ╠══ resource.lotNumber\n║   ╠══ resource.payment.amount.value\n║   ╠══ resource.serialNumber\n║   ╠══ resource.total.value\n║   ╚══ resource.valueQuantity.value\n╚══ 🗂️ Categorical features\n    ╠══ fullUrl (1000 categories)\n    ╠══ patientId (5 categories)\n    ╠══ request.method (1 categories)\n    ╠══ request.url (16 categories)\n    ╠══ resource.claim.reference (126 categories)\n    ╠══ resource.class.code (3 categories)\n    ╠══ resource.class.system (1 categories)\n    ╠══ resource.code.text (125 categories)\n    ╠══ resource.custodian.reference (8 categories)\n    ╠══ resource.encounter.reference (57 categories)\n    ╠══ resource.facility.reference (8 categories)\n    ╠══ resource.gender (1 categories)\n    ╠══ resource.intent (1 categories)\n    ╠══ resource.location.reference (4 categories)\n    ╠══ resource.maritalStatus.text (2 categories)\n    ╠══ resource.medicationCodeableConcept.text (15 categories)\n    ╠══ resource.multipleBirthBoolean (1 categories)\n    ╠══ resource.outcome (1 categories)\n    ╠══ resource.patient.reference (2 categories)\n    ╠══ resource.payment.amount.currency (1 categories)\n    ╠══ resource.prescription.reference (70 categories)\n    ╠══ resource.primarySource (1 categories)\n    ╠══ resource.provider.reference (16 categories)\n    ╠══ resource.referral.reference (1 categories)\n    ╠══ resource.requester.reference (6 categories)\n    ╠══ resource.resourceType (16 categories)\n    ╠══ resource.serviceProvider.reference (8 categories)\n    ╠══ resource.status (8 categories)\n    ╠══ resource.subject.reference (2 categories)\n    ╠══ resource.suppliedItem.itemCodeableConcept.text (1 categories)\n    ╠══ resource.suppliedItem.quantity.value (1 categories)\n    ╠══ resource.text.status (1 categories)\n    ╠══ resource.total.currency (1 categories)\n    ╠══ resource.type.text (1 categories)\n    ╠══ resource.use (1 categories)\n    ╠══ resource.vaccineCode.text (5 categories)\n    ╠══ resource.valueCodeableConcept.text (5 categories)\n    ╠══ resource.valueQuantity.code (21 categories)\n    ╠══ resource.valueQuantity.system (1 categories)\n    ╚══ resource.valueQuantity.unit (21 categories)\n
\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ep.ad.infer_feature_types(adata)" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-05-15T13:48:02.144915Z", "start_time": "2024-05-15T13:48:02.091641Z" } }, "id": "f4b42a0963eddc92" }, { "cell_type": "code", "execution_count": null, "id": "f74bfe98", "metadata": { "is_executing": true, "ExecuteTime": { "start_time": "2024-04-20T14:44:07.503009Z" } }, "outputs": [ { "data": { "text/plain": "\u001B[1;33mQuality control metrics missing. Calculating\u001B[0m\u001B[1;33m...\u001B[0m\n", "text/html": "
Quality control metrics missing. Calculating...\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.period.start \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m94.80\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.period.start had more than 94.80% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.medicationCodeableConcept.text \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m97.40\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.medicationCodeableConcept.text had more than 97.40% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.distinctIdentifier \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m99.50\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.distinctIdentifier had more than 99.50% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.type.text \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m99.50\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.type.text had more than 99.50% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.text.status \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m99.40\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.text.status had more than 99.40% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.facility.reference \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m88.80\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.facility.reference had more than 88.80% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.abatementDateTime \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m97.70\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.abatementDateTime had more than 97.70% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.vaccineCode.text \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m98.10\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.vaccineCode.text had more than 98.10% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.referral.reference \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m93.10\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.referral.reference had more than 93.10% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.lotNumber \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m99.50\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.lotNumber had more than 99.50% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.outcome \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m93.10\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.outcome had more than 93.10% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.primarySource \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m98.10\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.primarySource had more than 98.10% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.location.reference \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m90.80\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.location.reference had more than 90.80% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.class.code \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m95.60\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.class.code had more than 95.60% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.created \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m86.20\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.created had more than 86.20% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.context.period.start \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m95.70\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.context.period.start had more than 95.70% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.custodian.reference \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m95.70\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.custodian.reference had more than 95.70% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.patient.reference \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m82.40\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.patient.reference had more than 82.40% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.authoredOn \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m97.40\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.authoredOn had more than 97.40% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.claim.reference \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m93.10\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.claim.reference had more than 93.10% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.valueCodeableConcept.text \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m96.90\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.valueCodeableConcept.text had more than 96.90% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.valueString \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m99.90\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.valueString had more than 99.90% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.context.period.end \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m95.70\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.context.period.end had more than 95.70% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.suppliedItem.itemCodeableConcept.text \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m98.60\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.suppliedItem.itemCodeableConcept.text had more than 98.60% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.total.currency \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m93.10\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.total.currency had more than 93.10% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.payment.amount.value \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m93.10\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.payment.amount.value had more than 93.10% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.deceasedDateTime \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m99.90\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.deceasedDateTime had more than 99.90% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.total.value \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m93.10\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.total.value had more than 93.10% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.serialNumber \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m99.50\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.serialNumber had more than 99.50% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.requester.reference \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m97.40\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.requester.reference had more than 97.40% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.recordedDate \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m95.90\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.recordedDate had more than 95.90% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.payment.amount.currency \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m93.10\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.payment.amount.currency had more than 93.10% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.performedPeriod.start \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m92.70\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.performedPeriod.start had more than 92.70% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.gender \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m99.80\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.gender had more than 99.80% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.onsetDateTime \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m95.90\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.onsetDateTime had more than 95.90% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.date \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m95.70\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.date had more than 95.70% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.provider.reference \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m86.20\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.provider.reference had more than 86.20% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.recorded \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m99.90\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.recorded had more than 99.90% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.manufactureDate \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m99.50\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.manufactureDate had more than 99.50% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.billablePeriod.start \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m86.20\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.billablePeriod.start had more than 86.20% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.class.system \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m95.60\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.class.system had more than 95.60% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.maritalStatus.text \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m99.80\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.maritalStatus.text had more than 99.80% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.multipleBirthBoolean \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m99.80\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.multipleBirthBoolean had more than 99.80% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.serviceProvider.reference \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m95.60\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.serviceProvider.reference had more than 95.60% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.use \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m86.20\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.use had more than 86.20% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.performedPeriod.end \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m92.70\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.performedPeriod.end had more than 92.70% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.period.end \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m95.60\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.period.end had more than 95.60% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.expirationDate \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m99.50\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.expirationDate had more than 99.50% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.birthDate \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m99.80\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.birthDate had more than 99.80% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.occurrenceDateTime \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m96.70\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.occurrenceDateTime had more than 96.70% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.intent \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m97.00\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.intent had more than 97.00% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.billablePeriod.end \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m86.20\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.billablePeriod.end had more than 86.20% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.suppliedItem.quantity.value \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m98.60\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.suppliedItem.quantity.value had more than 98.60% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mFeature \u001B[0m\u001B[1;34mresource.prescription.reference \u001B[0m\u001B[1;33mhad more than \u001B[0m\u001B[1;34m97.40\u001B[0m\u001B[1;34m% \u001B[0m\u001B[1;33mmissing values!\u001B[0m\n", "text/html": "
Feature resource.prescription.reference had more than 97.40% missing values!\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "\u001B[1;33mscikit-learn-intelex is not available. Install via \u001B[0m\u001B[1;34mpip install scikit-learn-intelex \u001B[0m\u001B[1;33m for faster imputations.\u001B[0m\n", "text/html": "
scikit-learn-intelex is not available. Install via pip install scikit-learn-intelex  for faster imputations.\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "Output()", "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, "model_id": "38e945dd973e47f0bc4d6233a4c59773" } }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "", "text/html": "
\n"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": "\n",
      "text/html": "
\n
\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ep.pp.knn_impute(adata)" ] }, { "cell_type": "code", "execution_count": 26, "id": "d73b7085", "metadata": { "ExecuteTime": { "end_time": "2024-04-20T14:44:36.874001Z", "start_time": "2024-04-20T14:44:36.540997Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001B[1;35m2024-04-20 16:44:36,559\u001B[0m - \u001B[1;34mroot\u001B[0m \u001B[1;37mINFO - The original categorical values `['fullUrl', 'resource.resourceType', 'resource.text.status', 'resource.gender', 'resource.birthDate', 'resource.maritalStatus.text', 'resource.multipleBirthBoolean', 'request.method', 'request.url', 'resource.status', 'resource.class.system', 'resource.class.code', 'resource.subject.reference', 'resource.period.start', 'resource.period.end', 'resource.serviceProvider.reference', 'resource.code.text', 'resource.encounter.reference', 'resource.onsetDateTime', 'resource.recordedDate', 'resource.effectiveDateTime', 'resource.issued', 'resource.date', 'resource.custodian.reference', 'resource.context.period.start', 'resource.context.period.end', 'resource.use', 'resource.patient.reference', 'resource.billablePeriod.start', 'resource.billablePeriod.end', 'resource.created', 'resource.provider.reference', 'resource.facility.reference', 'resource.total.currency', 'resource.referral.reference', 'resource.claim.reference', 'resource.outcome', 'resource.payment.amount.currency', 'resource.abatementDateTime', 'resource.distinctIdentifier', 'resource.manufactureDate', 'resource.expirationDate', 'resource.lotNumber', 'resource.serialNumber', 'resource.type.text', 'resource.valueQuantity.unit', 'resource.valueQuantity.system', 'resource.valueQuantity.code', 'resource.valueCodeableConcept.text', 'resource.performedPeriod.start', 'resource.performedPeriod.end', 'resource.location.reference', 'resource.vaccineCode.text', 'resource.occurrenceDateTime', 'resource.primarySource', 'resource.valueString', 'resource.intent', 'resource.medicationCodeableConcept.text', 'resource.authoredOn', 'resource.requester.reference', 'resource.prescription.reference', 'resource.recorded', 'patientId', 'resource.deceasedDateTime', 'resource.suppliedItem.itemCodeableConcept.text']` were added to uns.\u001B[0m\n" ] }, { "data": { "text/plain": "Output()", "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, "model_id": "0480af17d59640328d3bbb509c2ba869" } }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\u001B[1;35m2024-04-20 16:44:36,740\u001B[0m - \u001B[1;34mroot\u001B[0m \u001B[1;37mINFO - Updated the original layer after encoding.\u001B[0m\n" ] }, { "data": { "text/plain": "", "text/html": "
\n"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": "\n",
      "text/html": "
\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/mamba/PycharmProjects/ehrapy/ehrapy/preprocessing/_encoding.py:282: DeprecationWarning: Converting `np.inexact` or `np.floating` to a dtype is deprecated. The current result is `float64` which is not strictly correct.\n", " encoded_ann_data.X = encoded_ann_data.X.astype(np.number)\n" ] } ], "source": [ "adata = ep.pp.encode(adata, autodetect=True)" ] }, { "cell_type": "code", "execution_count": 11, "id": "a2232474", "metadata": {}, "outputs": [], "source": [ "ep.pp.pca(adata)\n", "ep.pp.neighbors(adata, n_pcs=10)\n", "ep.tl.umap(adata)\n", "ep.tl.leiden(adata, resolution=0.3, key_added=\"leiden_0_3\")" ] }, { "cell_type": "code", "execution_count": 12, "id": "d3ec755c", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ep.pl.umap(adata, color=[\"leiden_0_3\"], title=\"Leiden 0.3\", size=20)" ] } ], "metadata": { "kernelspec": { "display_name": "ehrapy", "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.11.5" } }, "nbformat": 4, "nbformat_minor": 5 }