{
"cells": [
{
"cell_type": "markdown",
"id": "md",
"metadata": {},
"source": [
"# 03 — Severity Classification\n",
"\n",
"Fine-tune Bio_ClinicalBERT on MTSamples for severity classification.\n",
"\n",
"**What this notebook covers**\n",
"- Inspect weak-supervision labels\n",
"- Train the classifier\n",
"- Evaluate on the test set\n",
"- Save metrics for the dashboard\n",
"- Run inference on new notes\n",
"\n",
"> **Note**: Training takes ~20 min on CPU, ~5 min on Colab GPU."
]
},
{
"cell_type": "markdown",
"id": "md",
"metadata": {},
"source": [
"## 1. Setup"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Setup OK\n"
]
}
],
"source": [
"import sys\n",
"sys.path.insert(0, '..')\n",
"\n",
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"\n",
"import json\n",
"import pandas as pd\n",
"import plotly.express as px\n",
"from pathlib import Path\n",
"\n",
"from src.etl.extract import load_mtsamples\n",
"from src.etl.transform import prepare_for_training\n",
"from src.nlp.classifier import ClinicalClassifier\n",
"from src.utils.config import ModelConfig\n",
"\n",
"print('Setup OK')"
]
},
{
"cell_type": "markdown",
"id": "md",
"metadata": {},
"source": [
"## 2. Load and Inspect Training Data"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-06-26 19:15:41 | INFO | src.etl.extract | Loading MTSamples from C:\\Users\\Hp\\Documents\\clinical-nlp-pipeline\\data\\raw\\mtsamples.csv\n",
"2026-06-26 19:15:42 | INFO | src.etl.extract | MTSamples loaded: 4999 notes, 40 specialties\n",
"2026-06-26 19:15:42 | INFO | src.etl.transform | Running full transformation pipeline...\n",
"2026-06-26 19:15:42 | INFO | src.etl.transform | Dropped 33 rows with missing transcription text\n",
"2026-06-26 19:16:11 | INFO | src.etl.transform | Removed 2609 duplicate notes\n",
"2026-06-26 19:16:11 | INFO | src.etl.transform | Clean notes: 2357 rows remaining\n",
"2026-06-26 19:16:11 | INFO | src.etl.transform | Filtered 33 notes shorter than 30 words\n",
"2026-06-26 19:16:11 | INFO | src.etl.transform | Deriving severity labels via weak supervision...\n",
"2026-06-26 19:16:20 | INFO | src.etl.transform | urgent 1053 (45.3%)\n",
"2026-06-26 19:16:20 | INFO | src.etl.transform | routine 920 (39.6%)\n",
"2026-06-26 19:16:20 | INFO | src.etl.transform | critical 351 (15.1%)\n",
"2026-06-26 19:16:20 | INFO | src.etl.transform | Transformation complete: 2324 notes ready for training\n",
"Training samples: 2,324\n",
"\n",
"Severity distribution:\n",
"severity\n",
"urgent 1053\n",
"routine 920\n",
"critical 351\n",
"Name: count, dtype: int64\n",
"\n",
"Class balance:\n",
" urgent 1053 (45.3%)\n",
" routine 920 (39.6%)\n",
" critical 351 (15.1%)\n"
]
}
],
"source": [
"raw_df = load_mtsamples()\n",
"df = prepare_for_training(raw_df)\n",
"\n",
"print(f'Training samples: {len(df):,}')\n",
"print()\n",
"print('Severity distribution:')\n",
"print(df['severity'].value_counts())\n",
"print()\n",
"print(f'Class balance:')\n",
"for label, count in df['severity'].value_counts().items():\n",
" print(f' {label:<12} {count:>5} ({count/len(df):.1%})')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "code",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"customdata": [
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"urgent"
],
[
"critical"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"critical"
],
[
"routine"
],
[
"critical"
],
[
"critical"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"routine"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"routine"
],
[
"urgent"
],
[
"critical"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"urgent"
],
[
"critical"
]
],
"domain": {
"x": [
0,
1
],
"y": [
0,
1
]
},
"hole": 0.35,
"hovertemplate": "severity=%{customdata[0]}",
"labels": [
"routine",
"critical",
"critical",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"critical",
"routine",
"routine",
"critical",
"routine",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"critical",
"routine",
"routine",
"urgent",
"critical",
"urgent",
"routine",
"routine",
"routine",
"routine",
"critical",
"routine",
"routine",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"critical",
"urgent",
"routine",
"critical",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"critical",
"critical",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"critical",
"routine",
"urgent",
"routine",
"routine",
"routine",
"critical",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"critical",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"critical",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"critical",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"critical",
"routine",
"urgent",
"critical",
"routine",
"routine",
"routine",
"critical",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"routine",
"critical",
"critical",
"routine",
"routine",
"urgent",
"critical",
"urgent",
"critical",
"critical",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"critical",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"critical",
"routine",
"routine",
"urgent",
"critical",
"urgent",
"urgent",
"critical",
"routine",
"critical",
"routine",
"urgent",
"critical",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"critical",
"critical",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"critical",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"critical",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"critical",
"urgent",
"routine",
"routine",
"critical",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"critical",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"critical",
"urgent",
"routine",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"urgent",
"critical",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"critical",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"critical",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"critical",
"urgent",
"routine",
"urgent",
"critical",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"critical",
"critical",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"routine",
"critical",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"critical",
"urgent",
"critical",
"routine",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"critical",
"critical",
"urgent",
"routine",
"routine",
"routine",
"routine",
"critical",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"critical",
"urgent",
"urgent",
"urgent",
"critical",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"critical",
"urgent",
"routine",
"critical",
"critical",
"routine",
"critical",
"routine",
"routine",
"critical",
"critical",
"routine",
"critical",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"critical",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"critical",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"critical",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"critical",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"critical",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"critical",
"routine",
"critical",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"critical",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"urgent",
"critical",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"critical",
"urgent",
"urgent",
"routine",
"critical",
"urgent",
"routine",
"routine",
"urgent",
"critical",
"critical",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"critical",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"critical",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"critical",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"critical",
"routine",
"critical",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"routine",
"routine",
"routine",
"critical",
"routine",
"critical",
"routine",
"routine",
"urgent",
"urgent",
"critical",
"urgent",
"routine",
"urgent",
"critical",
"urgent",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"critical",
"urgent",
"critical",
"urgent",
"routine",
"routine",
"urgent",
"critical",
"routine",
"critical",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"critical",
"critical",
"routine",
"urgent",
"urgent",
"routine",
"critical",
"critical",
"critical",
"critical",
"critical",
"critical",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"critical",
"routine",
"critical",
"urgent",
"critical",
"critical",
"critical",
"critical",
"routine",
"routine",
"critical",
"critical",
"routine",
"critical",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"critical",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"critical",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"critical",
"routine",
"critical",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"critical",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"critical",
"urgent",
"routine",
"critical",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"critical",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"critical",
"routine",
"routine",
"critical",
"routine",
"routine",
"critical",
"urgent",
"critical",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"critical",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"critical",
"critical",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"critical",
"routine",
"critical",
"urgent",
"critical",
"routine",
"critical",
"urgent",
"urgent",
"routine",
"urgent",
"critical",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"critical",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"critical",
"critical",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"critical",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"critical",
"critical",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"critical",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"critical",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"critical",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"critical",
"critical",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"critical",
"routine",
"routine",
"routine",
"urgent",
"routine",
"critical",
"routine",
"routine",
"critical",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"critical",
"critical",
"routine",
"routine",
"urgent",
"urgent",
"critical",
"urgent",
"routine",
"critical",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"critical",
"routine",
"urgent",
"urgent",
"routine",
"critical",
"critical",
"critical",
"critical",
"urgent",
"critical",
"critical",
"routine",
"urgent",
"urgent",
"critical",
"critical",
"urgent",
"critical",
"routine",
"urgent",
"critical",
"urgent",
"routine",
"routine",
"urgent",
"critical",
"routine",
"urgent",
"routine",
"routine",
"routine",
"critical",
"routine",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"critical",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"critical",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"critical",
"routine",
"critical",
"routine",
"urgent",
"critical",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"routine",
"urgent",
"critical",
"routine",
"urgent",
"urgent",
"routine",
"critical",
"urgent",
"routine",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"critical",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"critical",
"critical",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"critical",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"critical",
"critical",
"urgent",
"urgent",
"critical",
"routine",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"critical",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"critical",
"routine",
"urgent",
"urgent",
"critical",
"critical",
"urgent",
"critical",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"critical",
"urgent",
"routine",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"routine",
"urgent",
"urgent",
"critical",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"critical",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"routine",
"critical",
"urgent",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"routine",
"critical",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"critical",
"critical",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"critical",
"routine",
"routine",
"urgent",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"critical",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"routine",
"routine",
"routine",
"routine",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"critical",
"urgent",
"routine",
"routine",
"critical",
"urgent",
"critical",
"critical",
"urgent",
"critical",
"critical",
"urgent",
"critical",
"critical",
"critical",
"routine",
"routine",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"critical",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"critical",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"critical",
"critical",
"urgent",
"routine",
"routine",
"critical",
"critical",
"urgent",
"urgent",
"routine",
"critical",
"routine",
"urgent",
"critical",
"critical",
"routine",
"urgent",
"critical",
"critical",
"critical",
"critical",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"routine",
"critical",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"critical",
"urgent",
"urgent",
"critical",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"critical",
"routine",
"urgent",
"routine",
"routine",
"routine",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"routine",
"critical",
"critical",
"critical",
"urgent",
"urgent",
"urgent",
"routine",
"critical",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"critical",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"critical",
"critical",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"routine",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"critical",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"critical",
"routine",
"urgent",
"critical",
"urgent",
"urgent",
"routine",
"urgent",
"critical",
"urgent",
"critical",
"routine",
"routine",
"urgent",
"critical",
"routine",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"critical",
"critical",
"urgent",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"critical",
"critical",
"urgent",
"routine",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"critical",
"critical",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"critical",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"urgent",
"critical",
"critical",
"critical",
"critical",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"critical",
"critical",
"critical",
"critical",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"critical",
"routine",
"urgent",
"urgent",
"routine",
"routine",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"urgent",
"routine",
"critical",
"critical",
"critical",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"critical",
"urgent",
"urgent",
"critical",
"critical",
"urgent",
"critical",
"critical",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"critical",
"critical",
"critical",
"critical",
"critical",
"urgent",
"critical",
"critical",
"critical",
"routine",
"urgent",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"routine",
"critical",
"routine",
"routine",
"critical",
"routine",
"critical",
"critical",
"routine",
"routine",
"routine",
"routine",
"routine",
"urgent",
"urgent",
"urgent",
"urgent",
"routine",
"urgent",
"critical",
"urgent",
"urgent",
"urgent",
"urgent",
"urgent",
"critical"
],
"legendgroup": "",
"marker": {
"colors": [
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#f39c12",
"#e74c3c",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#f39c12",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#e74c3c",
"#2ecc71",
"#e74c3c",
"#e74c3c",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#2ecc71",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#2ecc71",
"#f39c12",
"#e74c3c",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#f39c12",
"#e74c3c"
]
},
"name": "",
"showlegend": true,
"type": "pie"
}
],
"layout": {
"legend": {
"tracegroupgap": 0
},
"template": {
"data": {
"bar": [
{
"error_x": {
"color": "#2a3f5f"
},
"error_y": {
"color": "#2a3f5f"
},
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "bar"
}
],
"barpolar": [
{
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "barpolar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"baxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "choropleth"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "contour"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "contourcarpet"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmap"
}
],
"histogram": [
{
"marker": {
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "histogram"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2d"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2dcontour"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "parcoords"
}
],
"pie": [
{
"automargin": true,
"type": "pie"
}
],
"scatter": [
{
"fillpattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
},
"type": "scatter"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergl"
}
],
"scattermap": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermap"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermapbox"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolar"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolargl"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "#EBF0F8"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "#C8D4E3"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowcolor": "#2a3f5f",
"arrowhead": 0,
"arrowwidth": 1
},
"autotypenumbers": "strict",
"coloraxis": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"colorscale": {
"diverging": [
[
0,
"#8e0152"
],
[
0.1,
"#c51b7d"
],
[
0.2,
"#de77ae"
],
[
0.3,
"#f1b6da"
],
[
0.4,
"#fde0ef"
],
[
0.5,
"#f7f7f7"
],
[
0.6,
"#e6f5d0"
],
[
0.7,
"#b8e186"
],
[
0.8,
"#7fbc41"
],
[
0.9,
"#4d9221"
],
[
1,
"#276419"
]
],
"sequential": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"sequentialminus": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
]
},
"colorway": [
"#636efa",
"#EF553B",
"#00cc96",
"#ab63fa",
"#FFA15A",
"#19d3f3",
"#FF6692",
"#B6E880",
"#FF97FF",
"#FECB52"
],
"font": {
"color": "#2a3f5f"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "#E5ECF6",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"paper_bgcolor": "white",
"plot_bgcolor": "#E5ECF6",
"polar": {
"angularaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"radialaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"scene": {
"xaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"yaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"zaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
}
},
"shapedefaults": {
"line": {
"color": "#2a3f5f"
}
},
"ternary": {
"aaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"baxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"caxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"title": {
"x": 0.05
},
"xaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
},
"yaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
}
}
},
"title": {
"text": "Weak-supervision severity label distribution"
}
}
}
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Distribution chart\n",
"fig = px.pie(\n",
" df, names='severity',\n",
" title='Weak-supervision severity label distribution',\n",
" color='severity',\n",
" color_discrete_map={'routine': '#2ecc71', 'urgent': '#f39c12', 'critical': '#e74c3c'},\n",
" hole=0.35,\n",
")\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"id": "md",
"metadata": {},
"source": [
"## 3. Train the Classifier\n",
"\n",
"This cell fine-tunes Bio_ClinicalBERT and saves the best checkpoint."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-06-23 15:33:53 | INFO | src.nlp.classifier | ClinicalClassifier init: task=severity, model=emilyalsentzer/Bio_ClinicalBERT, labels=['routine', 'urgent', 'critical']\n",
"2026-06-23 15:33:53 | INFO | src.nlp.classifier | Starting fine-tuning: task=severity\n",
"2026-06-23 15:35:39 | INFO | src.nlp.classifier | Loading tokenizer: emilyalsentzer/Bio_ClinicalBERT\n",
"2026-06-23 15:35:40 | INFO | src.nlp.classifier | Training data: 2324 notes, label dist={'routine': 875, 'urgent': 1098, 'critical': 351}\n",
"2026-06-23 15:35:40 | INFO | src.nlp.classifier | Split: train=1742 val=349 test=233\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "238e316defa04700bdb4b8f32aaac9f0",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Loading weights: 0%| | 0/199 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[transformers] \u001b[1mBertForSequenceClassification LOAD REPORT\u001b[0m from: emilyalsentzer/Bio_ClinicalBERT\n",
"Key | Status | \n",
"-------------------------------------------+------------+-\n",
"cls.predictions.transform.dense.weight | UNEXPECTED | \n",
"cls.seq_relationship.weight | UNEXPECTED | \n",
"cls.predictions.transform.LayerNorm.weight | UNEXPECTED | \n",
"cls.predictions.transform.dense.bias | UNEXPECTED | \n",
"cls.predictions.decoder.weight | UNEXPECTED | \n",
"cls.predictions.transform.LayerNorm.bias | UNEXPECTED | \n",
"cls.seq_relationship.bias | UNEXPECTED | \n",
"cls.predictions.bias | UNEXPECTED | \n",
"classifier.weight | MISSING | \n",
"classifier.bias | MISSING | \n",
"\n",
"Notes:\n",
"- UNEXPECTED:\tcan be ignored when loading from different task/architecture; not ok if you expect identical arch.\n",
"- MISSING:\tthose params were newly initialized because missing from the checkpoint. Consider training on your downstream task.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-06-23 15:35:44 | INFO | src.nlp.classifier | Training on device: cpu\n",
"2026-06-23 15:35:45 | INFO | httpx | HTTP Request: GET https://huggingface.co/api/models/emilyalsentzer/Bio_ClinicalBERT \"HTTP/1.1 200 OK\"\n",
"2026-06-23 15:35:46 | INFO | httpx | HTTP Request: GET https://huggingface.co/api/models/emilyalsentzer/Bio_ClinicalBERT/commits/main \"HTTP/1.1 200 OK\"\n",
"2026-06-23 15:35:46 | INFO | httpx | HTTP Request: GET https://huggingface.co/api/models/emilyalsentzer/Bio_ClinicalBERT/discussions?p=0 \"HTTP/1.1 200 OK\"\n",
"2026-06-23 15:35:47 | INFO | httpx | HTTP Request: GET https://huggingface.co/api/models/emilyalsentzer/Bio_ClinicalBERT/commits/refs%2Fpr%2F16 \"HTTP/1.1 200 OK\"\n",
"2026-06-23 15:35:47 | INFO | httpx | HTTP Request: HEAD https://huggingface.co/emilyalsentzer/Bio_ClinicalBERT/resolve/refs%2Fpr%2F16/model.safetensors.index.json \"HTTP/1.1 404 Not Found\"\n",
"2026-06-23 17:55:44 | INFO | src.nlp.classifier | Epoch 1/3 loss=0.9339 val_acc=0.5501 val_f1=0.5258\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4d38bfaf6a354595872904efd94025a8",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Writing model shards: 0%| | 0/1 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-06-23 17:55:47 | INFO | src.nlp.classifier | Model saved to C:\\Users\\Hp\\Documents\\clinical-nlp-pipeline\\data\\models\\severity_classifier\n",
"2026-06-23 17:55:47 | INFO | src.nlp.classifier | → New best model saved (val_f1=0.5258)\n",
"2026-06-25 09:57:08 | INFO | src.nlp.classifier | Epoch 2/3 loss=0.6347 val_acc=0.7163 val_f1=0.7144\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "462ba661703046b6bb7a7f1d6c9c4a5f",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Writing model shards: 0%| | 0/1 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-06-25 09:57:14 | INFO | src.nlp.classifier | Model saved to C:\\Users\\Hp\\Documents\\clinical-nlp-pipeline\\data\\models\\severity_classifier\n",
"2026-06-25 09:57:14 | INFO | src.nlp.classifier | → New best model saved (val_f1=0.7144)\n",
"2026-06-25 13:15:42 | INFO | src.nlp.classifier | Epoch 3/3 loss=0.4488 val_acc=0.7249 val_f1=0.7243\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4f6bccac6e5c4757a6cd480f6533fb68",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Writing model shards: 0%| | 0/1 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-06-25 13:15:46 | INFO | src.nlp.classifier | Model saved to C:\\Users\\Hp\\Documents\\clinical-nlp-pipeline\\data\\models\\severity_classifier\n",
"2026-06-25 13:15:46 | INFO | src.nlp.classifier | → New best model saved (val_f1=0.7243)\n",
"2026-06-25 13:15:46 | INFO | src.nlp.classifier | Loading best checkpoint for test evaluation...\n",
"2026-06-25 13:15:46 | INFO | src.nlp.classifier | Loading classifier from: C:\\Users\\Hp\\Documents\\clinical-nlp-pipeline\\data\\models\\severity_classifier\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "7fc4cfe7668142e28fdff561284a5f0a",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Loading weights: 0%| | 0/201 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-06-25 13:15:48 | INFO | src.nlp.classifier | Classifier loaded ✓\n",
"2026-06-25 13:20:23 | INFO | src.nlp.classifier | Training complete — test_acc=0.7210 test_f1=0.7193\n",
"\n",
"Training complete!\n",
" Val accuracy : 0.7249\n",
" Val F1 : 0.7243\n",
" Test accuracy : 0.7210\n",
" Test F1 : 0.7193\n"
]
}
],
"source": [
"clf = ClinicalClassifier(task='severity')\n",
"metrics = clf.train(df)\n",
"\n",
"print()\n",
"print('Training complete!')\n",
"print(f' Val accuracy : {metrics[\"val_accuracy\"]:.4f}')\n",
"print(f' Val F1 : {metrics[\"val_f1\"]:.4f}')\n",
"print(f' Test accuracy : {metrics[\"test_accuracy\"]:.4f}')\n",
"print(f' Test F1 : {metrics[\"test_f1\"]:.4f}')"
]
},
{
"cell_type": "markdown",
"id": "per-class-md",
"metadata": {},
"source": [
"## 3b. Per-Class Performance (Test Set)\n",
"\n",
"Weighted accuracy/F1 can hide poor performance on the minority class.\n",
"\"critical\" is only ~15% of the data but the most clinically costly class\n",
"to get wrong (a missed critical case is worse than an over-flagged routine one).\n",
"This reconstructs the exact held-out test split used during training\n",
"(same seed, same filtering) and checks per-class precision/recall."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "8c7bf681",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-06-26 19:20:28 | INFO | src.nlp.classifier | ClinicalClassifier init: task=severity, model=emilyalsentzer/Bio_ClinicalBERT, labels=['routine', 'urgent', 'critical']\n"
]
}
],
"source": [
"clf = ClinicalClassifier(task='severity')\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "per-class-code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-06-26 19:21:50 | INFO | src.nlp.classifier | Loading classifier from: C:\\Users\\Hp\\Documents\\clinical-nlp-pipeline\\data\\models\\severity_classifier\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a5d1a221c5214d8cba0010ae6a93e4e3",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Loading weights: 0%| | 0/201 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-06-26 19:21:52 | INFO | src.nlp.classifier | Loading tokenizer: emilyalsentzer/Bio_ClinicalBERT\n",
"2026-06-26 19:21:53 | INFO | src.nlp.classifier | Classifier loaded OK\n",
" precision recall f1-score support\n",
"\n",
" routine 0.865 0.837 0.851 92\n",
" urgent 0.826 0.849 0.837 106\n",
" critical 0.800 0.800 0.800 35\n",
"\n",
" accuracy 0.837 233\n",
" macro avg 0.830 0.829 0.829 233\n",
"weighted avg 0.837 0.837 0.837 233\n",
"\n"
]
},
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"coloraxis": "coloraxis",
"hovertemplate": "Predicted: %{x}
Actual: %{y}
Count: %{z}",
"name": "0",
"texttemplate": "%{z}",
"type": "heatmap",
"x": [
"routine",
"urgent",
"critical"
],
"xaxis": "x",
"y": [
"routine",
"urgent",
"critical"
],
"yaxis": "y",
"z": {
"bdata": "TQ0CC1oFAQYc",
"dtype": "i1",
"shape": "3, 3"
}
}
],
"layout": {
"coloraxis": {
"autocolorscale": false,
"colorbar": {
"title": {
"text": "Count"
}
},
"colorscale": [
[
0,
"rgb(247,251,255)"
],
[
0.125,
"rgb(222,235,247)"
],
[
0.25,
"rgb(198,219,239)"
],
[
0.375,
"rgb(158,202,225)"
],
[
0.5,
"rgb(107,174,214)"
],
[
0.625,
"rgb(66,146,198)"
],
[
0.75,
"rgb(33,113,181)"
],
[
0.875,
"rgb(8,81,156)"
],
[
1,
"rgb(8,48,107)"
]
]
},
"template": {
"data": {
"bar": [
{
"error_x": {
"color": "#2a3f5f"
},
"error_y": {
"color": "#2a3f5f"
},
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "bar"
}
],
"barpolar": [
{
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "barpolar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"baxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "choropleth"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "contour"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "contourcarpet"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmap"
}
],
"histogram": [
{
"marker": {
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "histogram"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2d"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2dcontour"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "parcoords"
}
],
"pie": [
{
"automargin": true,
"type": "pie"
}
],
"scatter": [
{
"fillpattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
},
"type": "scatter"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergl"
}
],
"scattermap": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermap"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermapbox"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolar"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolargl"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "#EBF0F8"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "#C8D4E3"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowcolor": "#2a3f5f",
"arrowhead": 0,
"arrowwidth": 1
},
"autotypenumbers": "strict",
"coloraxis": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"colorscale": {
"diverging": [
[
0,
"#8e0152"
],
[
0.1,
"#c51b7d"
],
[
0.2,
"#de77ae"
],
[
0.3,
"#f1b6da"
],
[
0.4,
"#fde0ef"
],
[
0.5,
"#f7f7f7"
],
[
0.6,
"#e6f5d0"
],
[
0.7,
"#b8e186"
],
[
0.8,
"#7fbc41"
],
[
0.9,
"#4d9221"
],
[
1,
"#276419"
]
],
"sequential": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"sequentialminus": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
]
},
"colorway": [
"#636efa",
"#EF553B",
"#00cc96",
"#ab63fa",
"#FFA15A",
"#19d3f3",
"#FF6692",
"#B6E880",
"#FF97FF",
"#FECB52"
],
"font": {
"color": "#2a3f5f"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "#E5ECF6",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"paper_bgcolor": "white",
"plot_bgcolor": "#E5ECF6",
"polar": {
"angularaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"radialaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"scene": {
"xaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"yaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"zaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
}
},
"shapedefaults": {
"line": {
"color": "#2a3f5f"
}
},
"ternary": {
"aaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"baxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"caxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"title": {
"x": 0.05
},
"xaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
},
"yaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
}
}
},
"title": {
"text": "Confusion Matrix — Severity Classification (Test Set)"
},
"xaxis": {
"anchor": "y",
"constrain": "domain",
"domain": [
0,
1
],
"scaleanchor": "y",
"title": {
"text": "Predicted"
}
},
"yaxis": {
"anchor": "x",
"autorange": "reversed",
"constrain": "domain",
"domain": [
0,
1
],
"title": {
"text": "Actual"
}
}
}
}
},
"metadata": {},
"output_type": "display_data"
},
{
"ename": "",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[1;31mThe Kernel crashed while executing code in the current cell or a previous cell. \n",
"\u001b[1;31mPlease review the code in the cell(s) to identify a possible cause of the failure. \n",
"\u001b[1;31mClick here for more info. \n",
"\u001b[1;31mView Jupyter log for further details."
]
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"from sklearn.metrics import classification_report, confusion_matrix\n",
"import plotly.express as px\n",
"\n",
"from src.utils.config import ClassifierConfig, TrainingConfig\n",
"\n",
"labels_list = ClassifierConfig.active_labels() # ['routine', 'urgent', 'critical']\n",
"label2id = {lbl: i for i, lbl in enumerate(labels_list)}\n",
"cfg = TrainingConfig\n",
"\n",
"# Reconstruct the exact same split used inside clf.train() — same filtering,\n",
"# same integer label encoding, same seed — so this evaluates on the untouched\n",
"# held-out test set rather than data the model has already seen.\n",
"valid_mask = df['severity'].isin(labels_list)\n",
"df_valid = df[valid_mask]\n",
"texts = df_valid['transcription'].tolist()\n",
"label_ids = [label2id[lbl] for lbl in df_valid['severity']]\n",
"\n",
"x_trainval, x_test, y_trainval, y_test_ids = train_test_split(\n",
" texts, label_ids,\n",
" test_size = cfg.test_split,\n",
" random_state = cfg.random_seed,\n",
" stratify = label_ids,\n",
")\n",
"y_test = [labels_list[i] for i in y_test_ids]\n",
"\n",
"# Load the best saved checkpoint and predict on the held-out test set\n",
"clf.load()\n",
"results = clf.predict_batch(x_test)\n",
"y_pred = [r.label for r in results]\n",
"\n",
"print(classification_report(y_test, y_pred, labels=labels_list, digits=3))\n",
"\n",
"cm = confusion_matrix(y_test, y_pred, labels=labels_list)\n",
"fig = px.imshow(\n",
" cm, text_auto=True,\n",
" x=labels_list, y=labels_list,\n",
" labels=dict(x='Predicted', y='Actual', color='Count'),\n",
" title='Confusion Matrix — Severity Classification (Test Set)',\n",
" color_continuous_scale='Blues',\n",
")\n",
"fig.show()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "fa41f720",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"233 233 233\n",
"urgent 110\n",
"routine 88\n",
"critical 35\n",
"Name: count, dtype: int64\n"
]
}
],
"source": [
"print(len(x_test), len(y_test), len(y_pred))\n",
"print(pd.Series(y_test).value_counts())\n"
]
},
{
"cell_type": "markdown",
"id": "md",
"metadata": {},
"source": [
"## 4. Save Metrics for the Dashboard"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Metrics saved to C:\\Users\\Hp\\Documents\\clinical-nlp-pipeline\\data\\models\\severity_classifier\\training_metrics.json\n"
]
}
],
"source": [
"metrics_path = ModelConfig.fine_tuned_dir / 'training_metrics.json'\n",
"metrics_path.parent.mkdir(parents=True, exist_ok=True)\n",
"\n",
"with open(metrics_path, 'w') as fh:\n",
" json.dump(metrics, fh, indent=2)\n",
"\n",
"print(f'Metrics saved to {metrics_path}')"
]
},
{
"cell_type": "markdown",
"id": "md",
"metadata": {},
"source": [
"## 5. Inference on New Notes"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-06-25 15:59:39 | INFO | src.nlp.classifier | Loading classifier from: C:\\Users\\Hp\\Documents\\clinical-nlp-pipeline\\data\\models\\severity_classifier\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "45a4a24079e443a7a0b5bdf8c963577b",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Loading weights: 0%| | 0/201 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-06-25 15:59:39 | INFO | src.nlp.classifier | Classifier loaded ✓\n",
" [URGENT ] 98% Patient presents for routine annual check-up. No acute complaints. Vit...\n",
" [URGENT ] 50% Admitted to ED with acute severe abdominal pain, fever 39.5C, elevated...\n",
" [CRITICAL] 89% Patient transferred to ICU. Intubated for respiratory failure. GCS 6....\n"
]
}
],
"source": [
"clf.load() # load the best saved checkpoint\n",
"\n",
"test_notes = [\n",
" 'Patient presents for routine annual check-up. No acute complaints. Vitals stable.',\n",
" 'Admitted to ED with acute severe abdominal pain, fever 39.5C, elevated WBC.',\n",
" 'Patient transferred to ICU. Intubated for respiratory failure. GCS 6.',\n",
"]\n",
"\n",
"for note in test_notes:\n",
" result = clf.predict(note)\n",
" print(f' [{result.label.upper():<8}] {result.confidence:.0%} {note[:70]}...')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "clnenv (3.13.7.final.0)",
"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.13.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}