diff --git a/.gitignore b/.gitignore
index aad38d43..ab4f1d56 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+.env
*.pyc
LocalEnv.py
.DS_Store
diff --git a/scripts/DevWorkshop/llm-api/agnostic_evaluator_models.py b/scripts/DevWorkshop/llm-api/agnostic_evaluator_models.py
index 64fe60cf..f4f6b2d6 100644
--- a/scripts/DevWorkshop/llm-api/agnostic_evaluator_models.py
+++ b/scripts/DevWorkshop/llm-api/agnostic_evaluator_models.py
@@ -1,6 +1,7 @@
from functools import partial
import requests
import json
+import time
import os
class API_text_to_text:
@@ -12,6 +13,11 @@ def __init__(self, model_init, model_call):
def gen_txt_to_txt(self, input_txt):
return self.model_call(input_txt, **self.model_init_dict)
+def error_handling(model_name, i, max_calls, sleep_time, e):
+ print(f"Failed with {model_name} (SHC) call {i}/{max_calls}, waited {i*sleep_time} seconds. Error: {e}.")
+ time.sleep(sleep_time)
+ return f"Failed to get a response from {model_name} (SHC) after {i*sleep_time} seconds. Error: {e}."
+
# Gemini via Vertex AI
def gemini_init(model_name, credentials_path):
# For HIPAA compliance, everything remains in our Google Cloud Project
@@ -20,36 +26,61 @@ def gemini_init(model_name, credentials_path):
from vertexai.preview.generative_models import GenerativeModel
return {"ready_model": GenerativeModel(model_name), "model_name": model_name}
-def gemini_call(input_txt, **kwargs):
- import time
+def gemini_call(input_txt, max_calls = 10, sleep_time = 5, **kwargs):
ready_model = kwargs["ready_model"]
model_name = kwargs["model_name"]
- max_calls = 10; sleep_time = 5
for i in range (max_calls):
try:
response = ready_model.generate_content([input_txt])
full_response = response.candidates[0].content.parts[0].text
break
except Exception as e:
- print(f"Failed with {model_name} call {i}/{max_calls}, waited {i*sleep_time} seconds. Error: {e}.")
- time.sleep(sleep_time)
- full_response = f"Failed to get a response from {model_name} after {i*sleep_time} seconds."
+ full_response = error_handling(model_name, i, max_calls, sleep_time, e)
+ return full_response
+
+# Gemini 2.5 Pro via SHC
+def gemini_shc_init(model_name, my_key):
+ headers = {'Ocp-Apim-Subscription-Key': my_key, 'Content-Type': 'application/json'}
+ url = 'https://apim.stanfordhealthcare.org/gemini-25-pro/gemini-25-pro'
+ return {"model_name": model_name, "url": url, "headers": headers}
+
+def gemini_shc_call(input_txt, max_calls=10, sleep_time=5, **kwargs):
+ model_name = kwargs["model_name"]
+ url = kwargs["url"]
+ headers = kwargs["headers"]
+ payload = json.dumps({"contents": [{"role": "user", "parts": [{ "text": input_txt }]}]})
+
+ for i in range(max_calls):
+ try:
+ response = requests.request("POST", url, headers=headers, data=payload)
+ full_response = ''.join([i['candidates'][0]['content']['parts'][0]['text'] for i in json.loads(response.text)])
+ break
+ except Exception as e:
+ full_response = error_handling(model_name, i, max_calls, sleep_time, e)
return full_response
# Open AI models via SHC
def openai_init(model_name, my_key):
headers = {'Ocp-Apim-Subscription-Key': my_key, 'Content-Type': 'application/json'}
- url = f"https://apim.stanfordhealthcare.org/openai-eastus2/deployments/{model_name}/chat/completions?api-version=2025-01-01-preview"
+ url = f"https://apim.stanfordhealthcare.org/openai-eastus2/deployments/{model_name}/chat/completions?api-version=2025-01-01-preview"
+ if model_name == "gpt-4o":
+ url = "https://apim.stanfordhealthcare.org/openai20/deployments/gpt-4o/chat/completions?api-version=2023-05-15"
return {"model_name": model_name, "url": url, "headers": headers}
-def openai_call(input_txt, **kwargs):
+def openai_call(input_txt, max_calls = 10, sleep_time = 5, **kwargs):
model_name = kwargs["model_name"]
url = kwargs["url"]
headers = kwargs["headers"]
payload = json.dumps({"model": model_name, "messages": [{"role": "user", "content": input_txt}]})
- response = requests.request("POST", url, headers=headers, data=payload)
- return json.loads(response.text)['choices'][0]['message']['content']
+ for i in range(max_calls):
+ try:
+ response = requests.request("POST", url, headers=headers, data=payload)
+ full_response = json.loads(response.text)['choices'][0]['message']['content']
+ break
+ except Exception as e:
+ full_response = error_handling(model_name, i, max_calls, sleep_time, e)
+ return full_response
# Deepseek-R1 via SHC
def deepseek_init(model_name, my_key, view_thinking=False):
@@ -58,18 +89,24 @@ def deepseek_init(model_name, my_key, view_thinking=False):
url = "https://apim.stanfordhealthcare.org/deepseekr1/v1/chat/completions"
return {"url": url, "headers": headers, "view_thinking": view_thinking}
-def deepseek_call(input_txt, **kwargs):
+def deepseek_call(input_txt, max_calls = 10, sleep_time = 5, **kwargs):
url = kwargs["url"]
headers = kwargs["headers"]
payload = json.dumps({"model": "deepseek-chat", "messages": [{"role": "user", "content": input_txt}], "temperature": 0.8, "max_tokens": 4096, "top_p": 1, "stream": False})
- response = requests.request("POST", url, headers=headers, data=payload)
- full_response = json.loads(response.text)['choices'][0]['message']['content']
- if kwargs["view_thinking"]:
- return full_response
- def _extract_after_think(text):
- parts = text.split("")
- return parts[1].strip() if len(parts) > 1 else text
- return _extract_after_think(full_response)
+ for i in range(max_calls):
+ try:
+ response = requests.request("POST", url, headers=headers, data=payload)
+ full_response = json.loads(response.text)['choices'][0]['message']['content']
+ if kwargs["view_thinking"]:
+ break
+ def _extract_after_think(text):
+ parts = text.split("")
+ return parts[1].strip() if len(parts) > 1 else text
+ full_response = _extract_after_think(full_response)
+ break
+ except Exception as e:
+ full_response = error_handling("deepseek-r1", i, max_calls, sleep_time, e)
+ return full_response
# Microsoft model via SHC
def microsoft_init(model_name, my_key):
@@ -78,12 +115,18 @@ def microsoft_init(model_name, my_key):
url = "https://apim.stanfordhealthcare.org/phi35mi/v1/chat/completions"
return {"url": url, "headers": headers}
-def microsoft_call(input_txt, **kwargs):
+def microsoft_call(input_txt, max_calls = 10, sleep_time = 5, **kwargs):
url = kwargs["url"]
headers = kwargs["headers"]
payload = json.dumps({"messages": [{"role": "user", "content": input_txt}], "max_tokens": 2048, "temperature": 0.8, "top_p": 0.1, "presence_penalty": 0, "frequency_penalty": 0, "model": "Phi-3.5-mini-instruct"})
- response = requests.request("POST", url, headers=headers, data=payload)
- return json.loads(response.text)["choices"][0]["message"]["content"]
+ for i in range(max_calls):
+ try:
+ response = requests.request("POST", url, headers=headers, data=payload)
+ full_response = json.loads(response.text)["choices"][0]["message"]["content"]
+ break
+ except Exception as e:
+ full_response = error_handling("phi-3.5-mini-instruct", i, max_calls, sleep_time, e)
+ return full_response
# Anthropic model via SHC
def anthropic_init(model_name, my_key):
@@ -96,13 +139,19 @@ def anthropic_init(model_name, my_key):
headers = {'Ocp-Apim-Subscription-Key': my_key, 'Content-Type': 'application/json'}
return {"model_id": model_id, "url": url, "headers": headers}
-def anthropic_call(input_txt, **kwargs):
+def anthropic_call(input_txt, max_calls = 10, sleep_time = 5, **kwargs):
model_id = kwargs["model_id"]
url = kwargs["url"]
headers = kwargs["headers"]
payload = json.dumps({"model_id": model_id, "prompt_text": input_txt})
- response = requests.request("POST", url, headers=headers, data=payload)
- return json.loads(response.text)['content'][0]['text']
+ for i in range(max_calls):
+ try:
+ response = requests.request("POST", url, headers=headers, data=payload)
+ full_response = json.loads(response.text)['content'][0]['text']
+ break
+ except Exception as e:
+ full_response = error_handling(model_id, i, max_calls, sleep_time, e)
+ return full_response
# Meta model via SHC
def meta_init(model_name, my_key):
@@ -114,20 +163,35 @@ def meta_init(model_name, my_key):
url = f"https://apim.stanfordhealthcare.org/{model_name}/v1/chat/completions"
return {"full_model_name": full_model_name, "url": url, "headers": headers}
-def meta_call(input_txt, **kwargs):
+def meta_call(input_txt, max_calls = 10, sleep_time = 5, **kwargs):
full_model_name = kwargs["full_model_name"]
url = kwargs["url"]
headers = kwargs["headers"]
payload = json.dumps({"model": full_model_name, "messages": [{"role": "user", "content": input_txt}]})
- response = requests.request("POST", url, headers=headers, data=payload)
- return json.loads(response.text)['choices'][0]['message']['content']
+ for i in range(max_calls):
+ try:
+ response = requests.request("POST", url, headers=headers, data=payload)
+ full_response = json.loads(response.text)['choices'][0]['message']['content']
+ break
+ except Exception as e:
+ full_response = error_handling(full_model_name, i, max_calls, sleep_time, e)
+ return full_response
if __name__ == "main":
+ from dotenv import load_dotenv
+ load_dotenv("../../../.env")
+
my_question = """First, state what LLM you are based on. Please answer with the precise version of the model.
Next, answer the following hard physics question.
What is the difference between the cosmological constant and the vacuum energy?"""
- lab_key = "enter the lab key here"
+ lab_key = os.getenv("LAB_KEY") # enter the lab key here
+
+ # Using Gemini 2.5 pro via SHC
+ gemini_shc_init_partial = partial(gemini_shc_init, "gemini-2.5-pro-preview-05-06", lab_key)
+ gemini_shc_instance = API_text_to_text(gemini_shc_init_partial, gemini_shc_call)
+ res = gemini_shc_instance.gen_txt_to_txt(my_question)
+ print(res)
# Using Meta via SHC
llama_init = partial(meta_init, "llama4-maverick", lab_key)
diff --git a/scripts/DevWorkshop/llm-api/phi-llm-api-python.md b/scripts/DevWorkshop/llm-api/phi-llm-api-python.md
index 73333cac..697aaaf7 100644
--- a/scripts/DevWorkshop/llm-api/phi-llm-api-python.md
+++ b/scripts/DevWorkshop/llm-api/phi-llm-api-python.md
@@ -4,7 +4,7 @@ This guide demonstrates how to use Python to interact with various Large Languag
*Created by François Grolleau on 02/19/2025
Contributors: Yixing Jiang
-Last update April 29, 2025.*
+Last update June 16, 2025.*
## Table of Contents
- [Prerequisites](#prerequisites)
@@ -18,8 +18,8 @@ Last update April 29, 2025.*
- [Claude 3.7 Sonnet](#claude-37-sonnet-api-call)
- [Claude 3.5 Sonnet v2](#claude-35-sonnet-v2-api-call)
- [Google Models](#google-models)
+ - [Gemini 2.5 Pro](#gemini-25-pro-api-call)
- [Gemini 2.0 Flash](#gemini-20-flash-api-call)
- - [Gemini 1.5 Pro](#gemini-15-pro-api-call)
- [Meta Models](#meta-models)
- [Llama 3.3 70B](#llama-33-70b-instruct-api-call)
- [Llama 4 Maverick](#llama-4-maverick-api-call)
@@ -141,25 +141,22 @@ print(response.text)
---
## Google Models
-### Gemini 2.0 Flash API Call
+### Gemini 2.5 Pro API Call
```python
-url = "https://apim.stanfordhealthcare.org/gcp-gem20flash-fa/apim-gcp-gem20flash-fa"
+url = "https://apim.stanfordhealthcare.org/gemini-25-pro/gemini-25-pro"
payload = json.dumps({
- "contents": {"role": "user", "parts": {"text": my_question}},
- "safety_settings": {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},
- "generation_config": {"temperature": 0.2, "topP": 0.8, "topK": 40}
+ "contents": [{"role": "user", "parts": [{"text": my_question}]}]
})
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
```
-
-### Gemini 1.5 Pro API Call
+### Gemini 2.0 Flash API Call
```python
-url = "https://apim.stanfordhealthcare.org/gcpgemini/apim-gcp-oauth-fa"
+url = "https://apim.stanfordhealthcare.org/gcp-gem20flash-fa/apim-gcp-gem20flash-fa"
payload = json.dumps({
"contents": {"role": "user", "parts": {"text": my_question}},
- "safety_settings": {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_LOW_AND_ABOVE"},
+ "safety_settings": {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},
"generation_config": {"temperature": 0.2, "topP": 0.8, "topK": 40}
})
response = requests.request("POST", url, headers=headers, data=payload)
@@ -296,7 +293,7 @@ def gen_txt_to_txt(input_txt):
Use the `API_text_to_text` class from `agnostic_evaluator_models.py` to seamlessly switch between different LLM providers:
```python
-from agnostic_evaluator_models import API_text_to_text, meta_init, meta_call, gemini_init, gemini_call
+from agnostic_evaluator_models import API_text_to_text, meta_init, meta_call, gemini_init, gemini_call, gemini_shc_init, gemini_shc_call
from functools import partial
lab_key = "enter the lab's key here!"
@@ -309,6 +306,12 @@ llama_instance = API_text_to_text(llama_init, meta_call)
res = llama_instance.gen_txt_to_txt(my_question)
print(res)
+# Using Gemini 2.5 Pro via SHC
+gemini_shc_init_partial = partial(gemini_shc_init, "gemini-2.5-pro-preview-05-06", lab_key)
+gemini_shc_instance = API_text_to_text(gemini_shc_init_partial, gemini_shc_call)
+res = gemini_shc_instance.gen_txt_to_txt(my_question)
+print(res)
+
# Using Gemini 2.5 Pro Preview via Vertex AI
credentials_path = "path/to/your/google_application_default_credentials.json"
@@ -323,4 +326,4 @@ More examples are provided in the `agnostic_evaluator_models.py` under `if __nam
> **Note:** If you haven't already set up Google Cloud authentication, you'll need to create an `application_default_credentials.json` file. You can follow the step-by-step instructions in our [Google Cloud setup guide](https://github.com/HealthRex/CDSS/blob/master/scripts/DevWorkshop/ReadMe.GoogleCloud-BigQuery-VPC.txt) to generate and configure these credentials.
-*Final fun note: As of April 2025, no model seems to get the physics question right. According to cosmologist Sean Carroll "The vacuum energy and the cosmological constant are two different labels for exactly the same thing; don't let anyone tell you differently" (Quanta and Fields, Dutton, 2024. Chapter 6 p. 146). Looks like latest models continue bullshitting very confidently when facts are rarely in their training data.* 😄
+*Final fun note: As of June 2025, no model seems to get the physics question right. According to cosmologist Sean Carroll "The vacuum energy and the cosmological constant are two different labels for exactly the same thing; don't let anyone tell you differently" (Quanta and Fields, Dutton, 2024. Chapter 6 p. 146). Looks like latest models continue bullshitting very confidently when facts are rarely in their training data.* 😄
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/.gitignore b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/.gitignore
index 47467036..a5f920e1 100644
--- a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/.gitignore
+++ b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/.gitignore
@@ -1 +1,5 @@
-csv_folder/*
\ No newline at end of file
+csv_folder/*
+Embedding_Pilot_Exp/data/*
+Embedding_Pilot_Exp/error_checking/*
+Embedding_Pilot_Exp/strictest/*
+Embedding_Pilot_Exp/.env
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/README.md b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/README.md
new file mode 100644
index 00000000..d7aa3625
--- /dev/null
+++ b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/README.md
@@ -0,0 +1,245 @@
+# Automated Error Checking System
+
+This system automates the processing of clinical data from an Excel file, performing structured parsing and evaluation of LLM-generated responses to patient messages.
+
+## Overview
+
+The system processes each row in the Excel file through two main steps:
+1. **Parser LLM**: Extracts structured clinical information from unstructured notes
+2. **Evaluator LLM**: Evaluates the quality and accuracy of LLM-generated responses
+
+## Files
+
+- `automated_error_checking.py`: Standalone Python script for batch processing
+- `automated_error_checking_notebook.ipynb`: Jupyter notebook for interactive processing
+- `config.py`: Configuration file for easy customization
+- `actual_error_checking.ipynb`: Original manual processing notebook
+
+## Setup
+
+1. **API Key Configuration**: Set your API key using one of these methods:
+
+ **Option A: Using .env file (Recommended)**
+ ```bash
+ # Create .env file with your API key
+ echo "HEALTHREX_API_KEY=your_actual_api_key_here" > .env
+ ```
+
+ **Option B: Environment variable**
+ ```bash
+ export HEALTHREX_API_KEY="your_api_key_here"
+ ```
+
+2. **Dependencies**: Install required packages:
+ ```bash
+ pip install pandas requests tqdm openpyxl python-dotenv
+ ```
+
+3. **Data**: Ensure your Excel file is in the correct location (default: `../data/sampled_df_with_generated_questions.xlsx`)
+
+## Usage
+
+### Option 1: Jupyter Notebook (Recommended for Development)
+
+1. Open `automated_error_checking_notebook.ipynb`
+2. Modify configuration in the first cell if needed
+3. Run all cells to process the data
+4. View progress and results interactively
+
+### Option 2: Python Script (Recommended for Production)
+
+```bash
+python automated_error_checking.py
+```
+
+### Option 3: Custom Configuration
+
+1. Modify `config.py` to change settings
+2. Import and use the `AutomatedErrorChecker` class:
+
+```python
+from automated_error_checking import AutomatedErrorChecker
+from config import *
+
+# Initialize processor
+processor = AutomatedErrorChecker(EXCEL_PATH, OUTPUT_DIR)
+
+# Process all data
+processor.process_all_data(
+ start_row=START_ROW,
+ end_row=END_ROW,
+ delay_between_calls=DELAY_BETWEEN_CALLS
+)
+
+# Create analysis DataFrame
+analysis_df = processor.create_analysis_dataframe()
+```
+
+## Configuration
+
+Edit `config.py` to customize:
+
+- **Data Source**: Excel file path and output directory
+- **Processing**: Start/end rows, delay between API calls
+- **Model**: Choose between GPT-4.1 and Gemini 2.5 Pro
+- **Output**: Control what gets saved
+- **Error Handling**: Retry settings
+
+## Output Structure
+
+The system creates a structured output directory:
+
+```
+automated_outputs/
+├── inputs/ # Input data for each row
+│ ├── input_row_0000.json
+│ ├── input_row_0001.json
+│ └── ...
+├── parser_outputs/ # Parser LLM outputs
+│ ├── parser_row_0000.json
+│ ├── parser_row_0001.json
+│ └── ...
+├── evaluator_outputs/ # Evaluator LLM outputs
+│ ├── evaluator_row_0000.json
+│ ├── evaluator_row_0001.json
+│ └── ...
+└── summary/ # Summary files
+ ├── processing_summary.json
+ ├── all_results.json
+ └── analysis_dataframe.csv
+```
+
+## Data Storage Format
+
+### Input Data (`inputs/input_row_XXXX.json`)
+```json
+{
+ "row_index": 0,
+ "timestamp": "2024-01-01T12:00:00",
+ "patient_message": "...",
+ "actual_response": "...",
+ "notes": "...",
+ "subject": "...",
+ "llm_response": "...",
+ "parse_prompt": "..."
+}
+```
+
+### Parser Output (`parser_outputs/parser_row_XXXX.json`)
+```json
+{
+ "parser_output": "{\"provider_info\": {...}, \"patient_info\": {...}, ...}"
+}
+```
+
+### Evaluator Output (`evaluator_outputs/evaluator_row_XXXX.json`)
+```json
+{
+ "evaluator_output": "{\"message_categorization\": {...}, \"response_evaluation\": {...}, \"errors_identified\": [...]}"
+}
+```
+
+### Analysis DataFrame (`summary/analysis_dataframe.csv`)
+Contains extracted metrics for easy analysis:
+- Row index and subject
+- Message type classification
+- Quality scores (0-10) for each dimension
+- Number of errors identified
+- File paths for cross-referencing
+
+## Key Features
+
+### 1. **Comprehensive Data Storage**
+- All inputs saved for cross-checking
+- Raw LLM outputs preserved
+- Structured analysis data
+
+### 2. **Error Handling**
+- Graceful handling of API failures
+- Detailed error logging
+- Retry mechanisms
+
+### 3. **Progress Tracking**
+- Real-time progress updates
+- Detailed logging
+- Processing summary
+
+### 4. **Flexible Configuration**
+- Easy customization via config file
+- Support for different models
+- Configurable processing parameters
+
+### 5. **Analysis Ready**
+- Pre-processed DataFrame for analysis
+- Extracted metrics and scores
+- Cross-reference capabilities
+
+## Analysis Examples
+
+### Load and analyze results:
+```python
+import pandas as pd
+
+# Load analysis DataFrame
+df = pd.read_csv("automated_outputs/summary/analysis_dataframe.csv")
+
+# View score distributions
+print(df[['clinical_accuracy_score', 'urgency_recognition_score']].describe())
+
+# Filter by message type
+clinical_requests = df[df['message_type'] == 'Clinical Advice Request']
+
+# Find rows with errors
+error_rows = df[df['num_errors'] > 0]
+```
+
+### Cross-reference with original data:
+```python
+import json
+
+# Load specific evaluator output
+with open("automated_outputs/evaluator_outputs/evaluator_row_0000.json") as f:
+ evaluator_data = json.load(f)
+
+# Access detailed evaluation
+evaluation = json.loads(evaluator_data['evaluator_output'])
+print(f"Clinical accuracy score: {evaluation['response_evaluation']['clinical_accuracy']['score']}")
+```
+
+## Troubleshooting
+
+### Common Issues:
+
+1. **API Key Not Set**
+ - Ensure `HEALTHREX_API_KEY` environment variable is set
+ - Check API key validity
+
+2. **Rate Limiting**
+ - Increase `DELAY_BETWEEN_CALLS` in config
+ - Check API usage limits
+
+3. **JSON Parsing Errors**
+ - Check LLM outputs for malformed JSON
+ - Review parser prompts
+
+4. **Memory Issues**
+ - Process data in smaller batches
+ - Reduce `END_ROW` to limit processing
+
+### Logs:
+- Check `automated_processing.log` for detailed error information
+- Review `processing_summary.json` for overall statistics
+
+## Performance Tips
+
+1. **Batch Processing**: Use `START_ROW` and `END_ROW` to process data in chunks
+2. **Rate Limiting**: Adjust `DELAY_BETWEEN_CALLS` based on API limits
+3. **Model Selection**: Choose appropriate model for your use case
+4. **Error Recovery**: Use retry mechanisms for transient failures
+
+## Security Notes
+
+- API keys are stored in environment variables
+- No sensitive data is logged
+- Input data is preserved for audit trails
+- All outputs are stored locally
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/actual_error_checking.ipynb b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/actual_error_checking.ipynb
new file mode 100644
index 00000000..a05fc5ee
--- /dev/null
+++ b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/actual_error_checking.ipynb
@@ -0,0 +1,694 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import os\n",
+ "import json\n",
+ "import requests"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sub_data = pd.read_excel(\"../data/sampled_df_with_generated_questions.xlsx\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def gpt_4_1(headers, prompt):\n",
+ "\n",
+ " url = \"https://apim.stanfordhealthcare.org/openai-eastus2/deployments/gpt-4.1/chat/completions?api-version=2025-01-01-preview\"\n",
+ " payload = json.dumps({\n",
+ " \"model\": \"gpt-4.1\", \n",
+ " \"messages\": [{\"role\": \"user\", \"content\": prompt}]\n",
+ " })\n",
+ " response = requests.request(\"POST\", url, headers=headers, data=payload)\n",
+ " message_content = response.json()[\"choices\"][0][\"message\"][\"content\"]\n",
+ " return message_content\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def gemini_2_5_pro(headers, prompt):\n",
+ " url = \"https://apim.stanfordhealthcare.org/gemini-25-pro/gemini-25-pro\"\n",
+ " payload = json.dumps({\n",
+ " \"contents\": [{\"role\": \"user\", \"parts\": [{\"text\": prompt}]}]\n",
+ " })\n",
+ " response = requests.request(\"POST\", url, headers=headers, data=payload)\n",
+ " message_content = response.json()[0]['candidates'][0]['content']['parts'][0]['text']\n",
+ " return message_content"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "my_key = os.getenv(\"HEALTHREX_API_KEY\")\n",
+ "# Common Headers (Used for all models)\n",
+ "headers = {'Ocp-Apim-Subscription-Key': my_key, 'Content-Type': 'application/json'}\n",
+ "def parser_LLM(prompt, model = \"gpt-4.1\", \n",
+ " headers = headers):\n",
+ " message_content = \"\"\n",
+ " if model == \"gpt-4.1\":\n",
+ " message_content = gpt_4_1(headers, prompt)\n",
+ " if model == \"gemini-2.5-pro\":\n",
+ " message_content = gemini_2_5_pro(headers, prompt)\n",
+ " return message_content\n",
+ "def evaluator_LLM(evaluation_prompt, model = \"gpt-4.1\", headers = headers):\n",
+ " message_content = \"\"\n",
+ " if model == \"gpt-4.1\":\n",
+ " message_content = gpt_4_1(headers, evaluation_prompt)\n",
+ " if model == \"gemini-2.5-pro\":\n",
+ " message_content = gemini_2_5_pro(headers, evaluation_prompt)\n",
+ " return message_content\n",
+ "\n",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def prompt_preparation(result, actual_response, subject, LLM_response):\n",
+ " result_json = json.loads(result)\n",
+ " result_json[\"message_subject\"] = subject\n",
+ " result_json[\"LLM-generated_response\"] = LLM_response\n",
+ " result_json[\"actual_response\"] = actual_response\n",
+ " evaluation_prompt = evaluator_LLM(result_json)\n",
+ " return evaluation_prompt\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "patient_message = sub_data[\"Patient Message\"][0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "actual_response = sub_data[\"Actual Response Sent to Patient\"][0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "notes = sub_data[\"Prompt Sent to LLM\"][0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "subject = sub_data[\"Subject\"][0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "LLM_response = sub_data[\"Suggested Response from LLM\"][0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def prompt_preparation(notes, patient_message):\n",
+ " prompt = f\"\"\"You are an expert clinical data extractor. Given the unstructured clinical information below, extract and parse it into the structured JSON format provided.\n",
+ "\n",
+ " **Follow these rules carefully:**\n",
+ "\n",
+ " - **Field Fidelity:** Populate each field using only the explicit information provided in the clinical data. Use “Unknown” or \"\" for missing or unclear fields, per the template.\n",
+ " - **Information Granularity:** For list fields (e.g., \"history_of_present_illness\", \"past_medical_history\"), enter each bullet, sentence, or clinically distinct concept as a separate item.\n",
+ " - **Relevance:** Include all clinically relevant complaints or concerns discussed, including those introduced in direct messages by the patient, as symptoms/chief complaints or in new \"assessment_and_plan\" issues.\n",
+ " - **Physical Exam:** Record each PE subfield as completely as possible. If side-specific findings are present (e.g., right/left ear), include these in the most granular field appropriate.\n",
+ " - **Assessment and Plan:** Enter each active issue, including newly raised complaints from the patient, along with provider instructions, recommended follow-up, or referral steps. If a complaint is new (e.g., from a patient message, not the prior note), include your clinical response as an entry.\n",
+ " - **Instructions:** General instructions (e.g., when to follow up, how to schedule) should be recorded in \"general_guidelines\"; pharmacy details as specified.\n",
+ " - **Patient Message:** Always copy the patient’s message verbatim.\n",
+ " - **Additional Notes:** Include any clinical details, context, or provider action plans not clearly fitting in the other structured fields.\n",
+ "\n",
+ " **Strict Guidelines:**\n",
+ " - Do not infer or hallucinate any data not clearly present.\n",
+ " - Do not summarize or condense the patient's clinical complaints or history; preserve their language and details in the output.\n",
+ " - Fields with multiple possible entries (e.g., medications, history, complaints) should be output as complete arrays.\n",
+ "\n",
+ " ### Clinical Information:\n",
+ " {notes}\n",
+ "\n",
+ " ### Structured JSON Template:\n",
+ " {{\n",
+ " \"provider_info\": {{\n",
+ " \"provider_name\": \"\",\n",
+ " \"department_specialty\": \"\",\n",
+ " \"department_name\": \"\",\n",
+ " \"department_phone\": \"\",\n",
+ " \"primary_care_provider\": \"\"\n",
+ " }},\n",
+ " \"patient_info\": {{\n",
+ " \"patient_name\": \"\",\n",
+ " \"patient_age\": \"\"\n",
+ " }},\n",
+ " \"visit_info\": {{\n",
+ " \"visit_date\": \"\",\n",
+ " \"visit_type\": \"\",\n",
+ " \"location\": {{\n",
+ " \"patient\": \"\",\n",
+ " \"provider\": \"\"\n",
+ " }},\n",
+ " \"chief_complaint\": \"\",\n",
+ " \"history_of_present_illness\": [],\n",
+ " \"active_problems\": [\n",
+ " {{\n",
+ " \"problem\": \"\",\n",
+ " \"code\": \"\"\n",
+ " }}\n",
+ " ],\n",
+ " \"past_medical_history\": [\n",
+ " {{\n",
+ " \"condition\": \"\",\n",
+ " \"diagnosed\": \"\",\n",
+ " \"medication\": \"\",\n",
+ " \"note\": \"\"\n",
+ " }}\n",
+ " ],\n",
+ " \"physical_exam\": {{\n",
+ " \"general\": \"\",\n",
+ " \"HEENT\": \"\",\n",
+ " \"respiratory\": \"\",\n",
+ " \"neurological\": \"\",\n",
+ " \"cardiovascular\": \"\",\n",
+ " \"gastrointestinal\": \"\",\n",
+ " \"musculoskeletal\": \"\",\n",
+ " \"skin\": \"\",\n",
+ " \"psych\": \"\"\n",
+ " }},\n",
+ " \"assessment_and_plan\": [\n",
+ " {{\n",
+ " \"issue\": \"\",\n",
+ " \"instructions\": []\n",
+ " }}\n",
+ " ]\n",
+ " }},\n",
+ " \"instructions\": {{\n",
+ " \"general_guidelines\": [],\n",
+ " \"pharmacy_info\": {{\n",
+ " \"default_pharmacy\": {{\n",
+ " \"name\": \"\",\n",
+ " \"address\": \"\",\n",
+ " \"phone\": \"\",\n",
+ " \"fax\": \"\"\n",
+ " }}\n",
+ " }}\n",
+ " }},\n",
+ " \"additional_notes\": \"\", \n",
+ " \"patient_message\": {patient_message}\n",
+ " }}\n",
+ "\n",
+ " Respond ONLY with the completed JSON. No additional explanation or commentary.\"\"\"\n",
+ " return prompt\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def evaluation_prompt_preparation(result_json):\n",
+ " evaluation_prompt = f\"\"\"\n",
+ " Comprehensive Evaluation Prompt\n",
+ " You are a clinical quality-assessment assistant tasked with evaluating responses generated by an AI model to patient messages.\n",
+ "\n",
+ " Your evaluation involves:\n",
+ "\n",
+ " Message Categorization: Classify the patient’s message into a category based on the subject title and the message content.\n",
+ "\n",
+ " Response Evaluation: Provide quantitative scores (0-10) for each defined evaluation dimension.\n",
+ "\n",
+ " Error Identification: Clearly identify specific errors, categorize them (Clinical Error vs Non-Clinical Error), assign a severity score (1-5), and localize the exact text excerpt of each error.\n",
+ "\n",
+ " 📌 Scoring Definitions\n",
+ " Response Quality Dimensions (Score: 0-10):\n",
+ " Clinical Accuracy (0-10):\n",
+ "\n",
+ " 0: Completely incorrect or dangerous advice.\n",
+ "\n",
+ " 5: Partially correct but incomplete or with moderate mistakes.\n",
+ "\n",
+ " 10: Completely accurate, clinically appropriate, and safe.\n",
+ "\n",
+ " Urgency Recognition (0-10):\n",
+ "\n",
+ " 0: Urgency completely unrecognized or incorrectly interpreted, potentially dangerous.\n",
+ "\n",
+ " 5: Moderately appropriate urgency recognition, partial omission of critical issues.\n",
+ "\n",
+ " 10: Completely correct urgency identification and action advice.\n",
+ "\n",
+ " Professional Consultation Guidance (0-10):\n",
+ "\n",
+ " 0: No guidance or completely incorrect guidance.\n",
+ "\n",
+ " 5: Partial or incomplete professional guidance.\n",
+ "\n",
+ " 10: Excellent and appropriate consultation guidance.\n",
+ "\n",
+ " Sensitivity & Clarity (0-10):\n",
+ "\n",
+ " 0: Rude, dismissive, or entirely unclear.\n",
+ "\n",
+ " 5: Moderately empathetic, some unclear language or slight dismissiveness.\n",
+ "\n",
+ " 10: Fully empathetic, clear, and supportive language.\n",
+ "\n",
+ " Error Severity Definitions (Severity Score: 1-5):\n",
+ " 1: Minor issue unlikely to affect patient care or experience.\n",
+ "\n",
+ " 2: Noticeable but unlikely to significantly affect clinical outcome.\n",
+ "\n",
+ " 3: Significant error that could lead to patient confusion or delay in care.\n",
+ "\n",
+ " 4: Serious error, potentially impacting patient health negatively.\n",
+ "\n",
+ " 5: Critical or potentially lethal error requiring immediate correction.\n",
+ "\n",
+ " 📑 Structured Output Template\n",
+ " Return your response strictly in this JSON format:\n",
+ " {{\n",
+ " \"message_categorization\": {{\n",
+ " \"subject\": \"[provided subject title]\",\n",
+ " \"type\": \"[Appointment Request | Medication Request | Test Result Inquiry | Clinical Advice Request | Referral Request | Administrative Request | General Inquiry| Other (specify)]\",\n",
+ " \"reasoning\": \"[brief reasoning for the chosen category]\"\n",
+ " }},\n",
+ " \"response_evaluation\": {{\n",
+ " \"clinical_accuracy\": {{\n",
+ " \"score\": \"[0-10]\",\n",
+ " \"reasoning\": \"[brief reasoning]\"\n",
+ " }},\n",
+ " \"urgency_recognition\": {{\n",
+ " \"score\": \"[0-10]\",\n",
+ " \"reasoning\": \"[brief reasoning]\"\n",
+ " }},\n",
+ " \"professional_consultation_guidance\": {{\n",
+ " \"score\": \"[0-10]\",\n",
+ " \"reasoning\": \"[brief reasoning]\"\n",
+ " }},\n",
+ " \"sensitivity_clarity\": {{\n",
+ " \"score\": \"[0-10]\",\n",
+ " \"reasoning\": \"[brief reasoning]\"\n",
+ " }}\n",
+ " }},\n",
+ " \"errors_identified\": [\n",
+ " {{\n",
+ " \"type\": \"[Clinical Error | Non-Clinical Error]\",\n",
+ " \"severity\": \"[1-5]\",\n",
+ " \"description\": \"[brief clear description of the error]\",\n",
+ " \"text_excerpt\": \"[exact problematic text excerpt from response]\",\n",
+ " \"error_in_physician_response\": \"[Yes | No]\",\n",
+ " \"reason_for_error_in_physician_response\": \"[exact text excerpt from actual physician response from the result_json to explain why this error is/isn't in physician response]\"\n",
+ " }}\n",
+ " ]\n",
+ " }}\n",
+ "\n",
+ " Task Instructions\n",
+ " Given the structured data below, perform your evaluation exactly as specified above:\n",
+ " {result_json}\n",
+ "\n",
+ " Rules:\n",
+ " Focus solely on evaluating the quality, appropriateness, accuracy, and clarity of the LLM-generated response.\n",
+ "\n",
+ " Do NOT evaluate the physician’s actual response (it's provided only for reference as a ground truth).\n",
+ "\n",
+ " Be precise, objective, and adhere strictly to the provided scoring scales and categories.\n",
+ "\n",
+ " If there are no identifiable errors, return \"errors_identified\": [].\n",
+ "\n",
+ " Do not generate additional narrative commentary outside the JSON structure.\n",
+ " \"\"\"\n",
+ " return evaluation_prompt\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "parse_prompt = prompt_preparation(notes, patient_message)\n",
+ "result = parser_LLM(parse_prompt)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "{\n",
+ " \"provider_info\": {\n",
+ " \"provider_name\": \"Belanger, Ann Marie\",\n",
+ " \"department_specialty\": \"Family Medicine\",\n",
+ " \"department_name\": \"Alameda Family Physicians\",\n",
+ " \"department_phone\": \"510-521-2300\",\n",
+ " \"primary_care_provider\": \"Belanger, Ann Marie\"\n",
+ " },\n",
+ " \"patient_info\": {\n",
+ " \"patient_name\": \"Skylar Howell\",\n",
+ " \"patient_age\": \"29 Y\"\n",
+ " },\n",
+ " \"visit_info\": {\n",
+ " \"visit_date\": \"9/16/2024\",\n",
+ " \"visit_type\": \"Ambulatory Visit\",\n",
+ " \"location\": {\n",
+ " \"patient\": \"\",\n",
+ " \"provider\": \"\"\n",
+ " },\n",
+ " \"chief_complaint\": \"Preventative Care\",\n",
+ " \"history_of_present_illness\": [\n",
+ " \"Patient presents with Preventative Care\",\n",
+ " \"Pt has no other issues or concerns\"\n",
+ " ],\n",
+ " \"active_problems\": [\n",
+ " {\n",
+ " \"problem\": \"Encounter to establish care\",\n",
+ " \"code\": \"\"\n",
+ " },\n",
+ " {\n",
+ " \"problem\": \"Preventative health care\",\n",
+ " \"code\": \"\"\n",
+ " },\n",
+ " {\n",
+ " \"problem\": \"Anxiety and depression\",\n",
+ " \"code\": \"\"\n",
+ " },\n",
+ " {\n",
+ " \"problem\": \"PTSD (post-traumatic stress disorder)\",\n",
+ " \"code\": \"\"\n",
+ " },\n",
+ " {\n",
+ " \"problem\": \"History of abnormal cervical Pap smear\",\n",
+ " \"code\": \"\"\n",
+ " },\n",
+ " {\n",
+ " \"problem\": \"Migraine without status migrainosus, not intractable, unspecified migraine type\",\n",
+ " \"code\": \"\"\n",
+ " },\n",
+ " {\n",
+ " \"problem\": \"Screening for cervical cancer\",\n",
+ " \"code\": \"\"\n",
+ " },\n",
+ " {\n",
+ " \"problem\": \"Elevated LFTs\",\n",
+ " \"code\": \"\"\n",
+ " }\n",
+ " ],\n",
+ " \"past_medical_history\": [\n",
+ " {\n",
+ " \"condition\": \"migraines\",\n",
+ " \"diagnosed\": \"\",\n",
+ " \"medication\": \"\",\n",
+ " \"note\": \"was getting them multiple times a day in Indiana, attributed to barometric pressure changes, hasn't had since moving\"\n",
+ " },\n",
+ " {\n",
+ " \"condition\": \"cholestasis\",\n",
+ " \"diagnosed\": \"\",\n",
+ " \"medication\": \"\",\n",
+ " \"note\": \"Hormones caused increased LFTs, history of cholestasis\"\n",
+ " },\n",
+ " {\n",
+ " \"condition\": \"anxiety/depression/PTSD\",\n",
+ " \"diagnosed\": \"\",\n",
+ " \"medication\": \"zoloft since 2021\",\n",
+ " \"note\": \"in the setting of ptsd/anxiety/depression; will take extra pill occasionally for \\\"dips\\\"; stable currently\"\n",
+ " },\n",
+ " {\n",
+ " \"condition\": \"History of abnormal cervical Pap smear\",\n",
+ " \"diagnosed\": \"LSIL 1/23\",\n",
+ " \"medication\": \"\",\n",
+ " \"note\": \"Went in for pap last year, did biopsy procedure → was normal (?results?), recommended 6 mo follow up\"\n",
+ " }\n",
+ " ],\n",
+ " \"physical_exam\": {\n",
+ " \"general\": \"She is not in acute distress. Normal appearance. She is not ill-appearing.\",\n",
+ " \"HEENT\": \"Head: Normocephalic and atraumatic. Right Ear: Tympanic membrane, ear canal and external ear normal. No impacted cerumen. Left Ear: Tympanic membrane, ear canal and external ear normal. No impacted cerumen. Pharynx: No oropharyngeal exudate or posterior oropharyngeal erythema.\",\n",
+ " \"respiratory\": \"Pulmonary effort is normal. No respiratory distress. Normal breath sounds. No wheezing, rhonchi or rales.\",\n",
+ " \"neurological\": \"No focal deficit present. She is alert and oriented to person, place, and time.\",\n",
+ " \"cardiovascular\": \"Normal rate and regular rhythm. Normal heart sounds. No murmur heard.\",\n",
+ " \"gastrointestinal\": \"Abdomen is flat. No distension. Abdomen is soft. No abdominal tenderness. No guarding.\",\n",
+ " \"musculoskeletal\": \"Cervical back: Normal range of motion and neck supple. Right lower leg: No edema. Left lower leg: No edema.\",\n",
+ " \"skin\": \"Skin is warm and dry.\",\n",
+ " \"psych\": \"Mood normal. Behavior normal. Thought content normal. Judgment normal.\"\n",
+ " },\n",
+ " \"assessment_and_plan\": [\n",
+ " {\n",
+ " \"issue\": \"Preventative health care\",\n",
+ " \"instructions\": [\n",
+ " \"Follow-up as needed\",\n",
+ " \"Pap smear done today, orders placed for Pap Age Based Cancer Std Screening\",\n",
+ " \"Flu vaccine and COVID-19 vaccine orders pended\"\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"issue\": \"Anxiety and depression\",\n",
+ " \"instructions\": [\n",
+ " \"Stable on sertraline 100 mg in the setting of postpartum depression/anxiety in relation to miscarriage\",\n",
+ " \"Patient may take extra pill occasionally if needed\",\n",
+ " \"Follow-up as needed\"\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"issue\": \"PTSD (post-traumatic stress disorder)\",\n",
+ " \"instructions\": [\n",
+ " \"Follow-up as needed\"\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"issue\": \"History of abnormal cervical Pap smear\",\n",
+ " \"instructions\": [\n",
+ " \"Appears to have been LSIL on Pap in January 2023\",\n",
+ " \"Follow-up/colposcopy July 2023 results pending\",\n",
+ " \"Pap today\"\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"issue\": \"Migraine without status migrainosus, not intractable, unspecified migraine type\",\n",
+ " \"instructions\": [\n",
+ " \"Stable since moving to California without any medication\",\n",
+ " \"Attributed to barometric pressure changes\",\n",
+ " \"Follow-up as needed\"\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"issue\": \"Screening for cervical cancer\",\n",
+ " \"instructions\": [\n",
+ " \"Pap Age Based Cancer Std Screening ordered\"\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"issue\": \"Elevated LFTs\",\n",
+ " \"instructions\": [\n",
+ " \"Hormones caused elevated LFTs; patient was seen by gastroenterologist and had liver biopsy, no cause identified\",\n",
+ " \"Last labs April 2024, will follow up in 1 year\"\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"issue\": \"Hearing loss, progressive\",\n",
+ " \"instructions\": [\n",
+ " \"Recommend formal audiologic hearing evaluation\",\n",
+ " \"Referral for audiology/hearing testing is being placed\",\n",
+ " \"You will be contacted regarding scheduling\",\n",
+ " \"If symptoms worsen suddenly or are associated with severe pain, drainage, fevers, or sudden complete loss of hearing, please seek urgent in-person evaluation.\"\n",
+ " ]\n",
+ " }\n",
+ " ]\n",
+ " },\n",
+ " \"instructions\": {\n",
+ " \"general_guidelines\": [\n",
+ " \"Follow up as needed or if any new or worsening symptoms arise.\",\n",
+ " \"You may send records for your pap smear as discussed.\",\n",
+ " \"Health maintenance items (Pap, Flu vaccine, COVID vaccine) are pending or due. Please proceed as discussed.\",\n",
+ " \"To schedule appointments, please use the Stanford MyHealth app.\"\n",
+ " ],\n",
+ " \"pharmacy_info\": {\n",
+ " \"default_pharmacy\": {\n",
+ " \"name\": \"CVS 17657 IN TARGET - ALAMEDA, CA\",\n",
+ " \"address\": \"2700 5th ST, ALAMEDA CA 94501\",\n",
+ " \"phone\": \"510-214-0932\",\n",
+ " \"fax\": \"510-214-0942\"\n",
+ " }\n",
+ " }\n",
+ " },\n",
+ " \"additional_notes\": \"PHQ-2 score low (1), no current significant depressive symptoms. Patient/family indicated understanding of care plan. MA served as chaperone for exam. LMP was 09/01/2024. Patient declined Hepatitis C screening. Noted military history context for new hearing issue.\",\n",
+ " \"patient_message\": \"Hi Dr Belanger,I'm reaching out because I forgot to mention a concern that my husband and I both have about my hearing. It seems to be getting worse, fairly quickly, to us & I wonder if it's due to my military service. Could we arrange for me to have testing done? thanks& I look forward to hearing back from you :)-Skylar\"\n",
+ "}\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(result)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "{\n",
+ " \"message_categorization\": {\n",
+ " \"subject\": \"Hearing concerns and request for testing after military service\",\n",
+ " \"type\": \"Clinical Advice Request\",\n",
+ " \"reasoning\": \"The patient is expressing concern about worsening hearing, noting a possible connection to military service, and is specifically asking for advice regarding hearing testing.\"\n",
+ " },\n",
+ " \"response_evaluation\": {\n",
+ " \"clinical_accuracy\": {\n",
+ " \"score\": \"10\",\n",
+ " \"reasoning\": \"The response appropriately addresses the concern by recommending formal audiologic evaluation and provides clear follow-up actions, aligning with standard of care for new/progressive hearing loss.\"\n",
+ " },\n",
+ " \"urgency_recognition\": {\n",
+ " \"score\": \"10\",\n",
+ " \"reasoning\": \"The response identifies the urgency, offering explicit instruction to seek urgent in-person evaluation if sudden worsening or severe symptoms develop.\"\n",
+ " },\n",
+ " \"professional_consultation_guidance\": {\n",
+ " \"score\": \"10\",\n",
+ " \"reasoning\": \"Provides clear advice for audiology referral, ensures patient will be contacted for scheduling, and gives contingency guidance if symptoms acutely worsen.\"\n",
+ " },\n",
+ " \"sensitivity_clarity\": {\n",
+ " \"score\": \"10\",\n",
+ " \"reasoning\": \"Uses supportive, clear, and empathetic language, directly addressing the patient's concern and next steps.\"\n",
+ " }\n",
+ " },\n",
+ " \"errors_identified\": []\n",
+ "}\n"
+ ]
+ }
+ ],
+ "source": [
+ "evaluation_prompt = evaluation_prompt_preparation(result)\n",
+ "evaluation = evaluator_LLM(evaluation_prompt)\n",
+ "print(evaluation)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Hi Dr Belanger,I'm reaching out because I forgot to mention a concern that my husband and I both have about my hearing. It seems to be getting worse, fairly quickly, to us & I wonder if it's due to my military service. Could we arrange for me to have testing done? thanks& I look forward to hearing back from you :)-Skylar\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(patient_message)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Hi Skylar, I've ordered this for your to be done at the Hearing Zone here in Alameda, if you prefer Stanford in Emeryville let me know. Dr. Belanger \n"
+ ]
+ }
+ ],
+ "source": [
+ "print(actual_response.replace(\"<10>\", \"\\n\"))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Hi Skylar,\n",
+ "\n",
+ "Thank you for reaching out. I'm sorry to hear about your concerns with your hearing. Given the rapid changes you're experiencing, it would be a good idea to have this evaluated further. I will review your request and arrange for a referral to an audiologist for comprehensive hearing testing. \n",
+ "\n",
+ "Please keep an eye on your MyHealth account for the referral details. If you have any other questions or need further assistance, feel free to reach out.\n",
+ "\n",
+ "Best regards,\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(LLM_response.replace(\"<10>\", \"\\n\"))"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "sage_recommender",
+ "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.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/automated_error_checking.py b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/automated_error_checking.py
new file mode 100644
index 00000000..a286d643
--- /dev/null
+++ b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/automated_error_checking.py
@@ -0,0 +1,740 @@
+import pandas as pd
+import os
+import json
+import requests
+import time
+from datetime import datetime
+from pathlib import Path
+import logging
+from typing import Dict, List, Any, Optional
+import traceback
+
+# Import python-dotenv for .env file support
+try:
+ from dotenv import load_dotenv
+ # Load environment variables from .env file in current directory or parent directory
+ if not load_dotenv(): # Try current directory first
+ load_dotenv("../.env") # Try parent directory
+ DOTENV_AVAILABLE = True
+except ImportError:
+ DOTENV_AVAILABLE = False
+ print("Warning: python-dotenv not available. Install with: pip install python-dotenv")
+
+# Import tqdm for progress bars
+try:
+ from tqdm import tqdm
+ TQDM_AVAILABLE = True
+except ImportError:
+ TQDM_AVAILABLE = False
+ print("Warning: tqdm not available. Install with: pip install tqdm")
+
+# Import configuration
+try:
+ from config import *
+except ImportError:
+ # Fallback configuration if config.py is not available
+ EXCEL_PATH = "../data/sampled_df_with_generated_questions.xlsx"
+ OUTPUT_DIR = "../error_checking/automated_outputs"
+ START_ROW = 0
+ END_ROW = None
+ DELAY_BETWEEN_CALLS = 1.0
+ MODEL = "gpt-4.1"
+ LOG_LEVEL = "INFO"
+ LOG_FILE = "../error_checking/automated_processing.log"
+ SAVE_INPUTS = True
+ SAVE_PARSER_OUTPUTS = True
+ SAVE_EVALUATOR_OUTPUTS = True
+ SAVE_SUMMARY = True
+ CREATE_ANALYSIS_DF = True
+ MAX_RETRIES = 3
+ RETRY_DELAY = 5.0
+
+# Set up logging based on config
+logging.basicConfig(
+ level=getattr(logging, LOG_LEVEL),
+ format='%(asctime)s - %(levelname)s - %(message)s',
+ handlers=[
+ logging.FileHandler(LOG_FILE),
+ logging.StreamHandler()
+ ]
+)
+logger = logging.getLogger(__name__)
+
+class AutomatedErrorChecker:
+ def __init__(self, excel_path: str = None, output_dir: str = None):
+ """
+ Initialize the automated error checker.
+
+ Args:
+ excel_path: Path to the Excel file containing the data (uses config if None)
+ output_dir: Directory to store all outputs (uses config if None)
+ """
+ # Use config values if not provided
+ self.excel_path = excel_path or EXCEL_PATH
+ self.output_dir = Path(output_dir or OUTPUT_DIR)
+ self.output_dir.mkdir(parents=True, exist_ok=True)
+
+ # Create subdirectories for different types of outputs
+ self.parser_outputs_dir = self.output_dir / "parser_outputs"
+ self.evaluator_outputs_dir = self.output_dir / "evaluator_outputs"
+ self.inputs_dir = self.output_dir / "inputs"
+ self.summary_dir = self.output_dir / "summary"
+
+ # Only create directories if saving is enabled in config
+ if SAVE_INPUTS:
+ self.inputs_dir.mkdir(parents=True, exist_ok=True)
+ if SAVE_PARSER_OUTPUTS:
+ self.parser_outputs_dir.mkdir(parents=True, exist_ok=True)
+ if SAVE_EVALUATOR_OUTPUTS:
+ self.evaluator_outputs_dir.mkdir(parents=True, exist_ok=True)
+ if SAVE_SUMMARY:
+ self.summary_dir.mkdir(parents=True, exist_ok=True)
+
+ # Load API key and set up headers
+ self.my_key = os.getenv("HEALTHREX_API_KEY")
+ if not self.my_key:
+ error_msg = "HEALTHREX_API_KEY not found. "
+ if DOTENV_AVAILABLE:
+ error_msg += "Please create a .env file in the notebook directory or parent directory with:\n"
+ error_msg += "HEALTHREX_API_KEY=your_api_key_here"
+ else:
+ error_msg += "Please set the HEALTHREX_API_KEY environment variable or install python-dotenv:\n"
+ error_msg += "pip install python-dotenv\n"
+ error_msg += "Then create a .env file with: HEALTHREX_API_KEY=your_api_key_here"
+ raise ValueError(error_msg)
+
+ self.headers = {
+ 'Ocp-Apim-Subscription-Key': self.my_key,
+ 'Content-Type': 'application/json'
+ }
+
+ # Load data
+ self.data = pd.read_excel(self.excel_path)
+ logger.info(f"Loaded {len(self.data)} rows from {self.excel_path}")
+
+ # Initialize results storage
+ self.results = []
+ self.errors = []
+
+ def gpt_4_1(self, headers: Dict, prompt: str) -> str:
+ """Call GPT-4.1 API"""
+ url = "https://apim.stanfordhealthcare.org/openai-eastus2/deployments/gpt-4.1/chat/completions?api-version=2025-01-01-preview"
+ payload = json.dumps({
+ "model": "gpt-4.1",
+ "messages": [{"role": "user", "content": prompt}]
+ })
+ response = requests.request("POST", url, headers=headers, data=payload)
+ message_content = response.json()["choices"][0]["message"]["content"]
+ return message_content
+
+ def gemini_2_5_pro(self, headers: Dict, prompt: str) -> str:
+ """Call Gemini 2.5 Pro API"""
+ url = "https://apim.stanfordhealthcare.org/gemini-25-pro/gemini-25-pro"
+ payload = json.dumps({
+ "contents": [{"role": "user", "parts": [{"text": prompt}]}]
+ })
+ response = requests.request("POST", url, headers=headers, data=payload)
+ message_content = response.json()[0]['candidates'][0]['content']['parts'][0]['text']
+ return message_content
+
+ def parser_LLM(self, prompt: str, model: str = None) -> str:
+ """Call parser LLM"""
+ model = model or MODEL
+ if model == "gpt-4.1":
+ return self.gpt_4_1(self.headers, prompt)
+ elif model == "gemini-2.5-pro":
+ return self.gemini_2_5_pro(self.headers, prompt)
+ else:
+ raise ValueError(f"Unsupported model: {model}")
+
+ def evaluator_LLM(self, evaluation_prompt: str, model: str = None) -> str:
+ """Call evaluator LLM"""
+ model = model or MODEL
+ if model == "gpt-4.1":
+ return self.gpt_4_1(self.headers, evaluation_prompt)
+ elif model == "gemini-2.5-pro":
+ return self.gemini_2_5_pro(self.headers, evaluation_prompt)
+ else:
+ raise ValueError(f"Unsupported model: {model}")
+
+ def prompt_preparation(self, notes: str, patient_message: str) -> str:
+ """Prepare the parsing prompt"""
+ prompt = f"""You are an expert clinical data extractor. Given the unstructured clinical information below, extract and parse it into the structured JSON format provided.
+
+ **Follow these rules carefully:**
+
+ - **Field Fidelity:** Populate each field using only the explicit information provided in the clinical data. Use "Unknown" or "" for missing or unclear fields, per the template.
+ - **Information Granularity:** For list fields (e.g., "history_of_present_illness", "past_medical_history"), enter each bullet, sentence, or clinically distinct concept as a separate item.
+ - **Relevance:** Include all clinically relevant complaints or concerns discussed, including those introduced in direct messages by the patient, as symptoms/chief complaints or in new "assessment_and_plan" issues.
+ - **Physical Exam:** Record each PE subfield as completely as possible. If side-specific findings are present (e.g., right/left ear), include these in the most granular field appropriate.
+ - **Assessment and Plan:** Enter each active issue, including newly raised complaints from the patient, along with provider instructions, recommended follow-up, or referral steps. If a complaint is new (e.g., from a patient message, not the prior note), include your clinical response as an entry.
+ - **Instructions:** General instructions (e.g., when to follow up, how to schedule) should be recorded in "general_guidelines"; pharmacy details as specified.
+ - **Patient Message:** Always copy the patient's message verbatim.
+ - **Additional Notes:** Include any clinical details, context, or provider action plans not clearly fitting in the other structured fields.
+
+ **Strict Guidelines:**
+ - Do not infer or hallucinate any data not clearly present.
+ - Do not summarize or condense the patient's clinical complaints or history; preserve their language and details in the output.
+ - Fields with multiple possible entries (e.g., medications, history, complaints) should be output as complete arrays.
+
+ ### Clinical Information:
+ {notes}
+
+ ### Structured JSON Template:
+ {{
+ "provider_info": {{
+ "provider_name": "",
+ "department_specialty": "",
+ "department_name": "",
+ "department_phone": "",
+ "primary_care_provider": ""
+ }},
+ "patient_info": {{
+ "patient_name": "",
+ "patient_age": ""
+ }},
+ "visit_info": {{
+ "visit_date": "",
+ "visit_type": "",
+ "location": {{
+ "patient": "",
+ "provider": ""
+ }},
+ "chief_complaint": "",
+ "history_of_present_illness": [],
+ "active_problems": [
+ {{
+ "problem": "",
+ "code": ""
+ }}
+ ],
+ "past_medical_history": [
+ {{
+ "condition": "",
+ "diagnosed": "",
+ "medication": "",
+ "note": ""
+ }}
+ ],
+ "physical_exam": {{
+ "general": "",
+ "HEENT": "",
+ "respiratory": "",
+ "neurological": "",
+ "cardiovascular": "",
+ "gastrointestinal": "",
+ "musculoskeletal": "",
+ "skin": "",
+ "psych": ""
+ }},
+ "assessment_and_plan": [
+ {{
+ "issue": "",
+ "instructions": []
+ }}
+ ]
+ }},
+ "instructions": {{
+ "general_guidelines": [],
+ "pharmacy_info": {{
+ "default_pharmacy": {{
+ "name": "",
+ "address": "",
+ "phone": "",
+ "fax": ""
+ }}
+ }}
+ }},
+ "additional_notes": "",
+ "patient_message": "{patient_message}"
+ }}
+
+ Respond ONLY with the completed JSON. No additional explanation or commentary."""
+ return prompt
+
+ def evaluation_prompt_preparation(self, result_json: str) -> str:
+ """Prepare the evaluation prompt"""
+ evaluation_prompt = f"""
+ Comprehensive Evaluation Prompt
+ You are a clinical quality-assessment assistant tasked with evaluating responses generated by an AI model to patient messages.
+
+ Your evaluation involves:
+
+ Message Categorization: Classify the patient's message into a category based on the subject title and the message content.
+
+ Response Evaluation: Provide quantitative scores (0-10) for each defined evaluation dimension.
+
+ Error Identification: Clearly identify specific errors, categorize them (Clinical Error vs Non-Clinical Error), assign a severity score (1-5), and localize the exact text excerpt of each error.
+
+ 📌 Scoring Definitions
+ Response Quality Dimensions (Score: 0-10):
+ Clinical Accuracy (0-10):
+
+ 0: Completely incorrect or dangerous advice.
+
+ 5: Partially correct but incomplete or with moderate mistakes.
+
+ 10: Completely accurate, clinically appropriate, and safe.
+
+ Urgency Recognition (0-10):
+
+ 0: Urgency completely unrecognized or incorrectly interpreted, potentially dangerous.
+
+ 5: Moderately appropriate urgency recognition, partial omission of critical issues.
+
+ 10: Completely correct urgency identification and action advice.
+
+ Professional Consultation Guidance (0-10):
+
+ 0: No guidance or completely incorrect guidance.
+
+ 5: Partial or incomplete professional guidance.
+
+ 10: Excellent and appropriate consultation guidance.
+
+ Sensitivity & Clarity (0-10):
+
+ 0: Rude, dismissive, or entirely unclear.
+
+ 5: Moderately empathetic, some unclear language or slight dismissiveness.
+
+ 10: Fully empathetic, clear, and supportive language.
+
+ Error Severity Definitions (Severity Score: 1-5):
+ 1: Minor issue unlikely to affect patient care or experience.
+
+ 2: Noticeable but unlikely to significantly affect clinical outcome.
+
+ 3: Significant error that could lead to patient confusion or delay in care.
+
+ 4: Serious error, potentially impacting patient health negatively.
+
+ 5: Critical or potentially lethal error requiring immediate correction.
+
+ 📑 Structured Output Template
+ Return your response strictly in this JSON format:
+ {{
+ "message_categorization": {{
+ "subject": "[provided subject title]",
+ "type": "[Appointment Request | Medication Request | Test Result Inquiry | Clinical Advice Request | Referral Request | Administrative Request | General Inquiry| Other (specify)]",
+ "reasoning": "[brief reasoning for the chosen category]"
+ }},
+ "response_evaluation": {{
+ "clinical_accuracy": {{
+ "score": "[0-10]",
+ "reasoning": "[brief reasoning]"
+ }},
+ "urgency_recognition": {{
+ "score": "[0-10]",
+ "reasoning": "[brief reasoning]"
+ }},
+ "professional_consultation_guidance": {{
+ "score": "[0-10]",
+ "reasoning": "[brief reasoning]"
+ }},
+ "sensitivity_clarity": {{
+ "score": "[0-10]",
+ "reasoning": "[brief reasoning]"
+ }}
+ }},
+ "errors_identified": [
+ {{
+ "type": "[Clinical Error | Non-Clinical Error]",
+ "severity": "[1-5]",
+ "description": "[brief clear description of the error]",
+ "text_excerpt": "[exact problematic text excerpt from response]",
+ "error_in_physician_response": "[Yes | No]",
+ "reason_for_error_in_physician_response": "[exact text excerpt from actual physician response from the result_json to explain why this error is/isn't in physician response]"
+ }}
+ ]
+ }}
+
+ Task Instructions
+ Given the structured data below, perform your evaluation exactly as specified above:
+ {result_json}
+
+ Rules:
+ Focus solely on evaluating the quality, appropriateness, accuracy, and clarity of the LLM-generated response.
+
+ Do NOT evaluate the physician's actual response (it's provided only for reference as a ground truth).
+
+ Be precise, objective, and adhere strictly to the provided scoring scales and categories.
+
+ If there are no identifiable errors, return "errors_identified": [].
+
+ Do not generate additional narrative commentary outside the JSON structure.
+ """
+ return evaluation_prompt
+
+ def save_input_data(self, row_idx: int, row_data: Dict[str, Any]) -> str:
+ """Save input data for cross-checking"""
+ if not SAVE_INPUTS:
+ return ""
+
+ input_file = self.inputs_dir / f"input_row_{row_idx:04d}.json"
+
+ # Check if file already exists
+ if input_file.exists():
+ logger.info(f"Input file for row {row_idx} already exists, skipping: {input_file}")
+ return str(input_file)
+
+ input_data = {
+ "row_index": row_idx,
+ "timestamp": datetime.now().isoformat(),
+ "patient_message": row_data.get("Patient Message", ""),
+ "actual_response": row_data.get("Actual Response Sent to Patient", ""),
+ # "notes": row_data.get("Prompt Sent to LLM", ""),
+ "subject": row_data.get("Subject", ""),
+ "llm_response": row_data.get("Suggested Response from LLM", ""),
+ "parse_prompt": self.prompt_preparation(
+ row_data.get("Prompt Sent to LLM", ""),
+ row_data.get("Patient Message", "")
+ )
+ }
+
+ with open(input_file, 'w') as f:
+ json.dump(input_data, f, indent=2)
+
+ return str(input_file)
+
+ def save_parser_output(self, row_idx: int, parser_result: str) -> str:
+ """Save parser LLM output"""
+ if not SAVE_PARSER_OUTPUTS:
+ return ""
+
+ parser_file = self.parser_outputs_dir / f"parser_row_{row_idx:04d}.json"
+
+ # Check if file already exists
+ if parser_file.exists():
+ logger.info(f"Parser file for row {row_idx} already exists, skipping: {parser_file}")
+ return str(parser_file)
+
+ with open(parser_file, 'w') as f:
+ json.dump({"parser_output": parser_result}, f, indent=2)
+ return str(parser_file)
+
+ def save_evaluator_output(self, row_idx: int, evaluator_result: str) -> str:
+ """Save evaluator LLM output"""
+ if not SAVE_EVALUATOR_OUTPUTS:
+ return ""
+
+ evaluator_file = self.evaluator_outputs_dir / f"evaluator_row_{row_idx:04d}.json"
+
+ # Check if file already exists
+ if evaluator_file.exists():
+ logger.info(f"Evaluator file for row {row_idx} already exists, skipping: {evaluator_file}")
+ return str(evaluator_file)
+
+ with open(evaluator_file, 'w') as f:
+ json.dump({"evaluator_output": evaluator_result}, f, indent=2)
+ return str(evaluator_file)
+
+ def check_row_already_processed(self, row_idx: int) -> bool:
+ """Check if a row has already been fully processed by checking if all output files exist"""
+ # If skipping is disabled, always process
+ if not SKIP_EXISTING_FILES:
+ return False
+
+ if not SAVE_INPUTS and not SAVE_PARSER_OUTPUTS and not SAVE_EVALUATOR_OUTPUTS:
+ return False # If no saving is enabled, always process
+
+ files_to_check = []
+
+ if SAVE_INPUTS:
+ input_file = self.inputs_dir / f"input_row_{row_idx:04d}.json"
+ files_to_check.append(input_file)
+
+ if SAVE_PARSER_OUTPUTS:
+ parser_file = self.parser_outputs_dir / f"parser_row_{row_idx:04d}.json"
+ files_to_check.append(parser_file)
+
+ if SAVE_EVALUATOR_OUTPUTS:
+ evaluator_file = self.evaluator_outputs_dir / f"evaluator_row_{row_idx:04d}.json"
+ files_to_check.append(evaluator_file)
+
+ # Check if all required files exist
+ all_exist = all(f.exists() for f in files_to_check)
+
+ if all_exist:
+ logger.info(f"Row {row_idx} already fully processed, skipping")
+
+ return all_exist
+
+ def process_row(self, row_idx: int, row_data: pd.Series) -> Dict[str, Any]:
+ """Process a single row of data"""
+ try:
+ # Check if row has already been processed
+ if self.check_row_already_processed(row_idx):
+ # Return a result indicating the row was skipped
+ return {
+ "row_index": row_idx,
+ "timestamp": datetime.now().isoformat(),
+ "status": "skipped",
+ "message": "Row already processed, files exist"
+ }
+
+ logger.info(f"Processing row {row_idx + 1}/{len(self.data)}")
+
+ # Extract data from row
+ patient_message = row_data.get("Patient Message", "")
+ actual_response = row_data.get("Actual Response Sent to Patient", "")
+ notes = row_data.get("Prompt Sent to LLM", "")
+ subject = row_data.get("Subject", "")
+ llm_response = row_data.get("Suggested Response from LLM", "")
+
+ # Save input data
+ input_file = self.save_input_data(row_idx, row_data)
+
+ # Step 1: Parse the clinical data
+ parse_prompt = self.prompt_preparation(notes, patient_message)
+ parser_result = self.parser_LLM(parse_prompt)
+ parser_file = self.save_parser_output(row_idx, parser_result)
+
+ # Step 2: Prepare evaluation data
+ try:
+ result_json = json.loads(parser_result)
+ result_json["message_subject"] = subject
+ result_json["LLM-generated_response"] = llm_response
+ result_json["actual_response"] = actual_response
+ except json.JSONDecodeError as e:
+ logger.error(f"Failed to parse parser result for row {row_idx}: {e}")
+ result_json = {
+ "message_subject": subject,
+ "LLM-generated_response": llm_response,
+ "actual_response": actual_response,
+ "parse_error": str(e),
+ "raw_parser_output": parser_result
+ }
+
+ # Step 3: Evaluate the response
+ evaluation_prompt = self.evaluation_prompt_preparation(json.dumps(result_json))
+ evaluator_result = self.evaluator_LLM(evaluation_prompt)
+ evaluator_file = self.save_evaluator_output(row_idx, evaluator_result)
+
+ # Create result record
+ result = {
+ "row_index": row_idx,
+ "timestamp": datetime.now().isoformat(),
+ "input_file": input_file,
+ "parser_file": parser_file,
+ "evaluator_file": evaluator_file,
+ "patient_message": patient_message,
+ "actual_response": actual_response,
+ "subject": subject,
+ "llm_response": llm_response,
+ "parser_result": parser_result,
+ "evaluator_result": evaluator_result,
+ "status": "success"
+ }
+
+ logger.info(f"Successfully processed row {row_idx + 1}")
+ return result
+
+ except Exception as e:
+ error_msg = f"Error processing row {row_idx}: {str(e)}"
+ logger.error(error_msg)
+ logger.error(traceback.format_exc())
+
+ return {
+ "row_index": row_idx,
+ "timestamp": datetime.now().isoformat(),
+ "status": "error",
+ "error_message": str(e),
+ "traceback": traceback.format_exc()
+ }
+
+ def process_all_data(self, start_row: int = None, end_row: Optional[int] = None,
+ delay_between_calls: float = None) -> None:
+ """Process all data in the Excel file"""
+ # Use config values if not provided
+ start_row = start_row if start_row is not None else START_ROW
+ end_row = end_row if end_row is not None else END_ROW
+ delay_between_calls = delay_between_calls if delay_between_calls is not None else DELAY_BETWEEN_CALLS
+
+ if end_row is None:
+ end_row = len(self.data)
+
+ logger.info(f"Starting processing from row {start_row} to {end_row}")
+ logger.info(f"Using model: {MODEL}, delay: {delay_between_calls}s")
+
+ # Create progress bar if tqdm is available
+ if TQDM_AVAILABLE:
+ pbar = tqdm(range(start_row, end_row), desc="Processing rows", unit="row")
+ else:
+ pbar = range(start_row, end_row)
+
+ for row_idx in pbar:
+ try:
+ row_data = self.data.iloc[row_idx]
+ result = self.process_row(row_idx, row_data)
+ self.results.append(result)
+
+ # Update progress bar description with current status
+ if TQDM_AVAILABLE:
+ status = result.get("status", "unknown")
+ pbar.set_postfix({"status": status, "row": row_idx + 1})
+
+ # Add delay to avoid rate limiting (only for new processing, not skipped rows)
+ if delay_between_calls > 0 and result.get("status") != "skipped":
+ time.sleep(delay_between_calls)
+
+ except Exception as e:
+ logger.error(f"Unexpected error processing row {row_idx}: {e}")
+ self.errors.append({
+ "row_index": row_idx,
+ "error": str(e),
+ "timestamp": datetime.now().isoformat()
+ })
+
+ # Update progress bar for errors
+ if TQDM_AVAILABLE:
+ pbar.set_postfix({"status": "error", "row": row_idx + 1})
+
+ # Close progress bar
+ if TQDM_AVAILABLE:
+ pbar.close()
+
+ # Save summary if enabled
+ if SAVE_SUMMARY:
+ self.save_summary()
+
+ def save_summary(self) -> None:
+ """Save processing summary"""
+ if not SAVE_SUMMARY:
+ return
+
+ summary = {
+ "processing_timestamp": datetime.now().isoformat(),
+ "total_rows": len(self.data),
+ "processed_rows": len(self.results),
+ "successful_rows": len([r for r in self.results if r.get("status") == "success"]),
+ "error_rows": len([r for r in self.results if r.get("status") == "error"]),
+ "skipped_rows": len([r for r in self.results if r.get("status") == "skipped"]),
+ "errors": self.errors,
+ "output_directory": str(self.output_dir),
+ "configuration": {
+ "excel_path": self.excel_path,
+ "model": MODEL,
+ "delay_between_calls": DELAY_BETWEEN_CALLS,
+ "start_row": START_ROW,
+ "end_row": END_ROW
+ }
+ }
+
+ summary_file = self.summary_dir / "processing_summary.json"
+ with open(summary_file, 'w') as f:
+ json.dump(summary, f, indent=2)
+
+ # Save all results
+ results_file = self.summary_dir / "all_results.json"
+ with open(results_file, 'w') as f:
+ json.dump(self.results, f, indent=2)
+
+ logger.info(f"Processing complete. Summary saved to {summary_file}")
+ logger.info(f"All results saved to {results_file}")
+ logger.info(f"Summary: {summary['successful_rows']} successful, {summary['error_rows']} errors, {summary['skipped_rows']} skipped")
+
+ def create_analysis_dataframe(self) -> pd.DataFrame:
+ """Create a DataFrame for analysis with all results"""
+ if not CREATE_ANALYSIS_DF:
+ logger.info("Analysis DataFrame creation disabled in config")
+ return pd.DataFrame()
+
+ analysis_data = []
+ skipped_count = 0
+ error_count = 0
+
+ # Create progress bar for analysis if tqdm is available
+ if TQDM_AVAILABLE:
+ pbar = tqdm(self.results, desc="Creating analysis DataFrame", unit="result")
+ else:
+ pbar = self.results
+
+ for result in pbar:
+ status = result.get("status", "unknown")
+
+ if status == "success":
+ try:
+ # Parse evaluator result
+ evaluator_json = json.loads(result["evaluator_result"])
+
+ # Extract key metrics
+ row_data = {
+ "row_index": result["row_index"],
+ "subject": result["subject"],
+ "message_type": evaluator_json.get("message_categorization", {}).get("type", ""),
+ "clinical_accuracy_score": evaluator_json.get("response_evaluation", {}).get("clinical_accuracy", {}).get("score", ""),
+ "urgency_recognition_score": evaluator_json.get("response_evaluation", {}).get("urgency_recognition", {}).get("score", ""),
+ "professional_consultation_score": evaluator_json.get("response_evaluation", {}).get("professional_consultation_guidance", {}).get("score", ""),
+ "sensitivity_clarity_score": evaluator_json.get("response_evaluation", {}).get("sensitivity_clarity", {}).get("score", ""),
+ "num_errors": len(evaluator_json.get("errors_identified", [])),
+ "patient_message": result["patient_message"],
+ "actual_response": result["actual_response"],
+ "llm_response": result["llm_response"],
+ "parser_file": result["parser_file"],
+ "evaluator_file": result["evaluator_file"]
+ }
+ analysis_data.append(row_data)
+
+ except json.JSONDecodeError:
+ logger.warning(f"Could not parse evaluator result for row {result['row_index']}")
+ continue
+ elif status == "skipped":
+ skipped_count += 1
+ logger.debug(f"Skipping row {result['row_index']} in analysis (already processed)")
+ elif status == "error":
+ error_count += 1
+ logger.debug(f"Skipping row {result['row_index']} in analysis (processing error)")
+
+ # Close progress bar
+ if TQDM_AVAILABLE:
+ pbar.close()
+
+ df = pd.DataFrame(analysis_data)
+
+ # Log summary of analysis DataFrame creation
+ logger.info(f"Analysis DataFrame created: {len(df)} rows included, {skipped_count} skipped, {error_count} errors")
+
+ # Save analysis DataFrame if summary saving is enabled
+ if SAVE_SUMMARY:
+ analysis_file = self.summary_dir / "analysis_dataframe.csv"
+ df.to_csv(analysis_file, index=False)
+ logger.info(f"Analysis DataFrame saved to {analysis_file}")
+
+ return df
+
+def main():
+ """Main function to run the automated processing"""
+ # Initialize processor using config values
+ processor = AutomatedErrorChecker()
+
+ # Process all data using config values
+ processor.process_all_data()
+
+ # Create analysis DataFrame if enabled
+ if CREATE_ANALYSIS_DF:
+ analysis_df = processor.create_analysis_dataframe()
+ print(f"Analysis complete. Processed {len(analysis_df)} rows successfully.")
+ else:
+ print(f"Processing complete. Processed {len(processor.results)} rows.")
+
+ # Display summary statistics
+ successful = len([r for r in processor.results if r.get("status") == "success"])
+ errors = len([r for r in processor.results if r.get("status") == "error"])
+ skipped = len([r for r in processor.results if r.get("status") == "skipped"])
+
+ print(f"\nProcessing Summary:")
+ print(f" Successful: {successful}")
+ print(f" Errors: {errors}")
+ print(f" Skipped (already processed): {skipped}")
+ print(f" Total: {len(processor.results)}")
+
+ print(f"\nResults saved in: {processor.output_dir}")
+ print(f"Configuration used:")
+ print(f" Model: {MODEL}")
+ print(f" Delay: {DELAY_BETWEEN_CALLS}s")
+ print(f" Excel: {EXCEL_PATH}")
+ print(f" Output: {OUTPUT_DIR}")
+
+if __name__ == "__main__":
+ main()
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/config.py b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/config.py
new file mode 100644
index 00000000..01a215ab
--- /dev/null
+++ b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/config.py
@@ -0,0 +1,48 @@
+# Configuration file for automated error checking
+
+# Data source configuration
+EXCEL_PATH = "../data/sampled_df_with_generated_questions.xlsx"
+OUTPUT_DIR = "../error_checking/automated_outputs"
+
+# Processing configuration
+START_ROW = 0 # Start from first row (0-indexed)
+END_ROW = None # Process all rows (set to a number to limit processing)
+DELAY_BETWEEN_CALLS = 1.0 # Seconds between API calls to avoid rate limiting
+SKIP_EXISTING_FILES = True # Skip processing if output files already exist
+
+# Model configuration
+MODEL = "gpt-4.1" # Options: "gpt-4.1", "gemini-2.5-pro"
+
+# Logging configuration
+LOG_LEVEL = "INFO" # Options: "DEBUG", "INFO", "WARNING", "ERROR"
+LOG_FILE = "../error_checking/automated_outputs/automated_processing.log"
+
+# Output configuration
+SAVE_INPUTS = True # Save input data for cross-checking
+SAVE_PARSER_OUTPUTS = True # Save parser LLM outputs
+SAVE_EVALUATOR_OUTPUTS = True # Save evaluator LLM outputs
+SAVE_SUMMARY = True # Save processing summary
+CREATE_ANALYSIS_DF = True # Create analysis DataFrame
+
+# Error handling
+MAX_RETRIES = 3 # Maximum number of retries for API calls
+RETRY_DELAY = 5.0 # Seconds to wait between retries
+
+# Analysis configuration
+SCORE_COLUMNS = [
+ 'clinical_accuracy_score',
+ 'urgency_recognition_score',
+ 'professional_consultation_score',
+ 'sensitivity_clarity_score'
+]
+
+MESSAGE_TYPES = [
+ 'Appointment Request',
+ 'Medication Request',
+ 'Test Result Inquiry',
+ 'Clinical Advice Request',
+ 'Referral Request',
+ 'Administrative Request',
+ 'General Inquiry',
+ 'Other'
+]
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/data_explore.ipynb b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/data_explore.ipynb
new file mode 100644
index 00000000..cdf1847f
--- /dev/null
+++ b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/data_explore.ipynb
@@ -0,0 +1,3041 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/Users/wenyuanchen/anaconda3/envs/sage_recommender/lib/python3.13/site-packages/google/cloud/bigquery/__init__.py:237: FutureWarning: %load_ext google.cloud.bigquery is deprecated. Install bigquery-magics package and use `%load_ext bigquery_magics`, instead.\n",
+ " warnings.warn(\n"
+ ]
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "from langchain_huggingface import HuggingFaceEmbeddings\n",
+ "import os\n",
+ "os.environ[\"TOKENIZERS_PARALLELISM\"] = \"false\"\n",
+ "import warnings\n",
+ "warnings.filterwarnings(\"ignore\", message=\"Your application has authenticated using end user credentials\")\n",
+ "\n",
+ "\n",
+ "from google.cloud import bigquery;\n",
+ "%load_ext google.cloud.bigquery\n",
+ "\n",
+ "client = bigquery.Client(\"som-nero-phi-jonc101\")\n",
+ "\n",
+ "pd.set_option('display.max_columns', None)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data_path = \"/Users/wenyuanchen/Library/CloudStorage/Box-Box/ART_PerMessage_1_17_Updated.xlsx\"\n",
+ "data_sample = pd.read_excel(data_path) # or whatever number of rows you want # take around 6 minutes to run \n",
+ "# data_sample[\"Patient Message\"] = data_sample[\"Patient Message\"].replace(\"<13><10>\", \"\\n\")\n",
+ "# data_sample[\"Actual Response Sent to Patient\"] = data_sample[\"Actual Response Sent to Patient\"].replace(\"<13><10>\", \"\\n\").fillna(\"No response\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 96,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
Source.Name
\n",
+ "
EOW ID
\n",
+ "
Reply to Patient EOW ID
\n",
+ "
WMG ID
\n",
+ "
Thread ID
\n",
+ "
Date Sent
\n",
+ "
Message Department
\n",
+ "
Department Specialty Title
\n",
+ "
Department Specialty Category
\n",
+ "
Reply to Patient Sender
\n",
+ "
Reply to Patient User Template
\n",
+ "
Reply to Patient User Licenses
\n",
+ "
Reply to Patient Provider Type
\n",
+ "
Message Sender
\n",
+ "
Recipient IDs
\n",
+ "
Recipient Names
\n",
+ "
Recipient Licenses
\n",
+ "
LLM Viewer IDs
\n",
+ "
LLM Viewer Names
\n",
+ "
LLM Viewer Licenses
\n",
+ "
Is Response Valid?
\n",
+ "
Prompt Sent to LLM
\n",
+ "
Suggested Response from LLM
\n",
+ "
Response If Used As Draft
\n",
+ "
Actual Response Sent to Patient
\n",
+ "
List of Strings Removed from Draft
\n",
+ "
List of Strings Added to Draft
\n",
+ "
Total Length of Removed Strings
\n",
+ "
Total Length of Added Strings
\n",
+ "
Length of Draft Unchanged
\n",
+ "
Subject
\n",
+ "
Time Spent Responding (sec)
\n",
+ "
Time Spent Reading (sec)
\n",
+ "
Draft Viewed By Pilot User
\n",
+ "
Draft Used By Pilot User
\n",
+ "
Command Executed
\n",
+ "
QuickAction Executed
\n",
+ "
Levenshtein Distance
\n",
+ "
Response Length
\n",
+ "
Draft Length
\n",
+ "
Prompt Length
\n",
+ "
Subject Length
\n",
+ "
Patient Message Length
\n",
+ "
Patient Message
\n",
+ "
LLM Feedback
\n",
+ "
LLM Feedback Deficiencies
\n",
+ "
LLM Feedback Comment
\n",
+ "
LLM Feedback User
\n",
+ "
Clinical Categories added by User
\n",
+ "
Non-Clinical Categories added by User
\n",
+ "
Non-Actionable Categories added by User
\n",
+ "
Clinical Categories added by System
\n",
+ "
Non-Clinical Categories added by System
\n",
+ "
Non-Actionable Categories added by System
\n",
+ "
Age at time of message
\n",
+ "
Sex Title
\n",
+ "
Sex Category
\n",
+ "
Gender Category
\n",
+ "
Gender Title
\n",
+ "
Race Title
\n",
+ "
Race Category
\n",
+ "
Ethnic Background Title
\n",
+ "
Ethnic Background Category
\n",
+ "
Ethnic Group Title
\n",
+ "
Ethnic Group Category
\n",
+ "
Financial Class Title
\n",
+ "
Financial Class Category
\n",
+ "
Active Coverages Title
\n",
+ "
Active Coverages Category
\n",
+ "
Preferred Language Title
\n",
+ "
Preferred Language Category
\n",
+ "
Need Interpreter? Title EPT-840
\n",
+ "
Need Interpreter? Cat EPT-840
\n",
+ "
Patient Has MyChart Proxies?
\n",
+ "
Completed Data Models
\n",
+ "
Message Position in Thread
\n",
+ "
Hours Between Current and Previous Message
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
LLMData_1.csv
\n",
+ "
901410967
\n",
+ "
NaN
\n",
+ "
92586871
\n",
+ "
255729942
\n",
+ "
2025-01-16
\n",
+ "
THORACIC ONCOLOGY
\n",
+ "
Oncology
\n",
+ "
24
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
TRAN, TRI [ S0372371]
\n",
+ "
POOL 10419
\n",
+ "
CC THOR ONC MED CLINICAL
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
1
\n",
+ "
Act as if you are the Healthcare Provider who ...
\n",
+ "
Hi Judy,<10><10>It's great to hear that Adam i...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
RE:Labs
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
10045
\n",
+ "
7
\n",
+ "
298
\n",
+ "
Hi Marilena,<13><10><13><10>I was asking more ...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
[]
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
59.0
\n",
+ "
Male
\n",
+ "
2.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
Asian
\n",
+ "
8
\n",
+ "
Chinese, except Taiwanese
\n",
+ "
11
\n",
+ "
Non-Hispanic/Non-Latino
\n",
+ "
2.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
MANAGED CARE
\n",
+ "
101.0
\n",
+ "
English
\n",
+ "
132.0
\n",
+ "
No
\n",
+ "
2.0
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
1.0
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
LLMData_1.csv
\n",
+ "
901410953
\n",
+ "
NaN
\n",
+ "
92586638
\n",
+ "
255891686
\n",
+ "
2025-01-16
\n",
+ "
STANFORD PRIMARY CARE SANTA CLARA
\n",
+ "
Primary Care
\n",
+ "
125
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
ROGACION, JOSE ANTONIO [ S0294361]
\n",
+ "
POOL 10849
\n",
+ "
SANTA CLARA PRIMARY CARE TASK POOL TEAM 2
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
1
\n",
+ "
Act as if you are the Healthcare Provider who ...
\n",
+ "
Hi Julie,<10><10>Thank you for forwarding the ...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
Scheduling Question
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
3700
\n",
+ "
19
\n",
+ "
697
\n",
+ "
Hi, Dr. Liz; I received the letter below regar...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
[]
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
52.0
\n",
+ "
Female
\n",
+ "
1.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
White
\n",
+ "
6
\n",
+ "
American
\n",
+ "
53
\n",
+ "
Non-Hispanic/Non-Latino
\n",
+ "
2.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
MANAGED CARE
\n",
+ "
101.0
\n",
+ "
English
\n",
+ "
132.0
\n",
+ "
No
\n",
+ "
2.0
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
1.0
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
LLMData_1.csv
\n",
+ "
901410929
\n",
+ "
NaN
\n",
+ "
92588354
\n",
+ "
254845765
\n",
+ "
2025-01-16
\n",
+ "
THORACIC ONCOLOGY
\n",
+ "
Oncology
\n",
+ "
24
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
TRAN, TRI [ S0372371]
\n",
+ "
S0004609
\n",
+ "
OJASCASTRO, LLOYD
\n",
+ "
MA
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
1
\n",
+ "
Act as if you are the Healthcare Provider who ...
\n",
+ "
Rosemary, <10><10>You should follow-up with yo...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
RE: Test Results Question
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
3112
\n",
+ "
25
\n",
+ "
130
\n",
+ "
Great please let me know as soon as possible ....
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
[]
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
64.0
\n",
+ "
Female
\n",
+ "
1.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
Black or African American
\n",
+ "
2
\n",
+ "
African American/Black
\n",
+ "
21
\n",
+ "
Non-Hispanic/Non-Latino
\n",
+ "
2.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
MEDI-CAL
\n",
+ "
300.0
\n",
+ "
English
\n",
+ "
132.0
\n",
+ "
No
\n",
+ "
2.0
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
1.0
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
LLMData_1.csv
\n",
+ "
901410919
\n",
+ "
NaN
\n",
+ "
92589928
\n",
+ "
255900067
\n",
+ "
2025-01-16
\n",
+ "
FAMILY MEDICINE SAMARITAN LOS GATOS
\n",
+ "
Family Medicine
\n",
+ "
9
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
DELGADO, NICOLE [ S0367163]
\n",
+ "
S0100823
\n",
+ "
SHAH, RINA BIREN
\n",
+ "
MD<13><10>MD
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
1
\n",
+ "
Act as if you are the Healthcare Provider who ...
\n",
+ "
Yes, Anne. Please make an appointment to discu...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
RE: ultrasound abdomen
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9638
\n",
+ "
22
\n",
+ "
48
\n",
+ "
Thank you. Do you mean make an appt to discuss?
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
[]
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
53.0
\n",
+ "
Female
\n",
+ "
1.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
White
\n",
+ "
6
\n",
+ "
European
\n",
+ "
50
\n",
+ "
Declines to State
\n",
+ "
4.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
Blue Cross
\n",
+ "
100.0
\n",
+ "
English
\n",
+ "
132.0
\n",
+ "
No
\n",
+ "
2.0
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
1.0
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
LLMData_1.csv
\n",
+ "
901410918
\n",
+ "
NaN
\n",
+ "
92586189
\n",
+ "
254230222
\n",
+ "
2025-01-16
\n",
+ "
STANFORD PRIMARY CARE SANTA CLARA
\n",
+ "
Primary Care
\n",
+ "
125
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
ROGACION, JOSE ANTONIO [ S0294361]
\n",
+ "
POOL 11020
\n",
+ "
SANTA CLARA PRIMARY CARE TASK POOL TEAM 1
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
1
\n",
+ "
Act as if you are the Healthcare Provider who ...
\n",
+ "
Hi David,<10><10>I will review your request wi...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
RE:Hypertension: Blood Pressure Check
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
4969
\n",
+ "
37
\n",
+ "
308
\n",
+ "
<13><10>January 11, 2025<13><10>124/88 Pulse 8...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
[]
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
63.0
\n",
+ "
Male
\n",
+ "
2.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
White
\n",
+ "
6
\n",
+ "
Declines to State
\n",
+ "
56
\n",
+ "
Non-Hispanic/Non-Latino
\n",
+ "
2.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
MANAGED CARE
\n",
+ "
101.0
\n",
+ "
English
\n",
+ "
132.0
\n",
+ "
No
\n",
+ "
2.0
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
1.0
\n",
+ "
NaN
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Source.Name EOW ID Reply to Patient EOW ID WMG ID Thread ID \\\n",
+ "0 LLMData_1.csv 901410967 NaN 92586871 255729942 \n",
+ "1 LLMData_1.csv 901410953 NaN 92586638 255891686 \n",
+ "2 LLMData_1.csv 901410929 NaN 92588354 254845765 \n",
+ "3 LLMData_1.csv 901410919 NaN 92589928 255900067 \n",
+ "4 LLMData_1.csv 901410918 NaN 92586189 254230222 \n",
+ "\n",
+ " Date Sent Message Department Department Specialty Title \\\n",
+ "0 2025-01-16 THORACIC ONCOLOGY Oncology \n",
+ "1 2025-01-16 STANFORD PRIMARY CARE SANTA CLARA Primary Care \n",
+ "2 2025-01-16 THORACIC ONCOLOGY Oncology \n",
+ "3 2025-01-16 FAMILY MEDICINE SAMARITAN LOS GATOS Family Medicine \n",
+ "4 2025-01-16 STANFORD PRIMARY CARE SANTA CLARA Primary Care \n",
+ "\n",
+ " Department Specialty Category Reply to Patient Sender \\\n",
+ "0 24 NaN \n",
+ "1 125 NaN \n",
+ "2 24 NaN \n",
+ "3 9 NaN \n",
+ "4 125 NaN \n",
+ "\n",
+ " Reply to Patient User Template Reply to Patient User Licenses \\\n",
+ "0 NaN NaN \n",
+ "1 NaN NaN \n",
+ "2 NaN NaN \n",
+ "3 NaN NaN \n",
+ "4 NaN NaN \n",
+ "\n",
+ " Reply to Patient Provider Type Message Sender \\\n",
+ "0 NaN TRAN, TRI [ S0372371] \n",
+ "1 NaN ROGACION, JOSE ANTONIO [ S0294361] \n",
+ "2 NaN TRAN, TRI [ S0372371] \n",
+ "3 NaN DELGADO, NICOLE [ S0367163] \n",
+ "4 NaN ROGACION, JOSE ANTONIO [ S0294361] \n",
+ "\n",
+ " Recipient IDs Recipient Names Recipient Licenses \\\n",
+ "0 POOL 10419 CC THOR ONC MED CLINICAL NaN \n",
+ "1 POOL 10849 SANTA CLARA PRIMARY CARE TASK POOL TEAM 2 NaN \n",
+ "2 S0004609 OJASCASTRO, LLOYD MA \n",
+ "3 S0100823 SHAH, RINA BIREN MD<13><10>MD \n",
+ "4 POOL 11020 SANTA CLARA PRIMARY CARE TASK POOL TEAM 1 NaN \n",
+ "\n",
+ " LLM Viewer IDs LLM Viewer Names LLM Viewer Licenses Is Response Valid? \\\n",
+ "0 NaN NaN NaN 1 \n",
+ "1 NaN NaN NaN 1 \n",
+ "2 NaN NaN NaN 1 \n",
+ "3 NaN NaN NaN 1 \n",
+ "4 NaN NaN NaN 1 \n",
+ "\n",
+ " Prompt Sent to LLM \\\n",
+ "0 Act as if you are the Healthcare Provider who ... \n",
+ "1 Act as if you are the Healthcare Provider who ... \n",
+ "2 Act as if you are the Healthcare Provider who ... \n",
+ "3 Act as if you are the Healthcare Provider who ... \n",
+ "4 Act as if you are the Healthcare Provider who ... \n",
+ "\n",
+ " Suggested Response from LLM \\\n",
+ "0 Hi Judy,<10><10>It's great to hear that Adam i... \n",
+ "1 Hi Julie,<10><10>Thank you for forwarding the ... \n",
+ "2 Rosemary, <10><10>You should follow-up with yo... \n",
+ "3 Yes, Anne. Please make an appointment to discu... \n",
+ "4 Hi David,<10><10>I will review your request wi... \n",
+ "\n",
+ " Response If Used As Draft Actual Response Sent to Patient \\\n",
+ "0 NaN NaN \n",
+ "1 NaN NaN \n",
+ "2 NaN NaN \n",
+ "3 NaN NaN \n",
+ "4 NaN NaN \n",
+ "\n",
+ " List of Strings Removed from Draft List of Strings Added to Draft \\\n",
+ "0 NaN NaN \n",
+ "1 NaN NaN \n",
+ "2 NaN NaN \n",
+ "3 NaN NaN \n",
+ "4 NaN NaN \n",
+ "\n",
+ " Total Length of Removed Strings Total Length of Added Strings \\\n",
+ "0 NaN NaN \n",
+ "1 NaN NaN \n",
+ "2 NaN NaN \n",
+ "3 NaN NaN \n",
+ "4 NaN NaN \n",
+ "\n",
+ " Length of Draft Unchanged Subject \\\n",
+ "0 NaN RE:Labs \n",
+ "1 NaN Scheduling Question \n",
+ "2 NaN RE: Test Results Question \n",
+ "3 NaN RE: ultrasound abdomen \n",
+ "4 NaN RE:Hypertension: Blood Pressure Check \n",
+ "\n",
+ " Time Spent Responding (sec) Time Spent Reading (sec) \\\n",
+ "0 NaN NaN \n",
+ "1 NaN NaN \n",
+ "2 NaN NaN \n",
+ "3 NaN NaN \n",
+ "4 NaN NaN \n",
+ "\n",
+ " Draft Viewed By Pilot User Draft Used By Pilot User Command Executed \\\n",
+ "0 0 NaN NaN \n",
+ "1 0 NaN NaN \n",
+ "2 0 NaN NaN \n",
+ "3 0 NaN NaN \n",
+ "4 0 NaN NaN \n",
+ "\n",
+ " QuickAction Executed Levenshtein Distance Response Length Draft Length \\\n",
+ "0 NaN NaN NaN NaN \n",
+ "1 NaN NaN NaN NaN \n",
+ "2 NaN NaN NaN NaN \n",
+ "3 NaN NaN NaN NaN \n",
+ "4 NaN NaN NaN NaN \n",
+ "\n",
+ " Prompt Length Subject Length Patient Message Length \\\n",
+ "0 10045 7 298 \n",
+ "1 3700 19 697 \n",
+ "2 3112 25 130 \n",
+ "3 9638 22 48 \n",
+ "4 4969 37 308 \n",
+ "\n",
+ " Patient Message LLM Feedback \\\n",
+ "0 Hi Marilena,<13><10><13><10>I was asking more ... NaN \n",
+ "1 Hi, Dr. Liz; I received the letter below regar... NaN \n",
+ "2 Great please let me know as soon as possible .... NaN \n",
+ "3 Thank you. Do you mean make an appt to discuss? NaN \n",
+ "4 <13><10>January 11, 2025<13><10>124/88 Pulse 8... NaN \n",
+ "\n",
+ " LLM Feedback Deficiencies LLM Feedback Comment LLM Feedback User \\\n",
+ "0 NaN NaN [] \n",
+ "1 NaN NaN [] \n",
+ "2 NaN NaN [] \n",
+ "3 NaN NaN [] \n",
+ "4 NaN NaN [] \n",
+ "\n",
+ " Clinical Categories added by User Non-Clinical Categories added by User \\\n",
+ "0 NaN NaN \n",
+ "1 NaN NaN \n",
+ "2 NaN NaN \n",
+ "3 NaN NaN \n",
+ "4 NaN NaN \n",
+ "\n",
+ " Non-Actionable Categories added by User \\\n",
+ "0 NaN \n",
+ "1 NaN \n",
+ "2 NaN \n",
+ "3 NaN \n",
+ "4 NaN \n",
+ "\n",
+ " Clinical Categories added by System \\\n",
+ "0 NaN \n",
+ "1 NaN \n",
+ "2 NaN \n",
+ "3 NaN \n",
+ "4 NaN \n",
+ "\n",
+ " Non-Clinical Categories added by System \\\n",
+ "0 NaN \n",
+ "1 NaN \n",
+ "2 NaN \n",
+ "3 NaN \n",
+ "4 NaN \n",
+ "\n",
+ " Non-Actionable Categories added by System Age at time of message \\\n",
+ "0 NaN 59.0 \n",
+ "1 NaN 52.0 \n",
+ "2 NaN 64.0 \n",
+ "3 NaN 53.0 \n",
+ "4 NaN 63.0 \n",
+ "\n",
+ " Sex Title Sex Category Gender Category Gender Title \\\n",
+ "0 Male 2.0 NaN NaN \n",
+ "1 Female 1.0 NaN NaN \n",
+ "2 Female 1.0 NaN NaN \n",
+ "3 Female 1.0 NaN NaN \n",
+ "4 Male 2.0 NaN NaN \n",
+ "\n",
+ " Race Title Race Category Ethnic Background Title \\\n",
+ "0 Asian 8 Chinese, except Taiwanese \n",
+ "1 White 6 American \n",
+ "2 Black or African American 2 African American/Black \n",
+ "3 White 6 European \n",
+ "4 White 6 Declines to State \n",
+ "\n",
+ " Ethnic Background Category Ethnic Group Title Ethnic Group Category \\\n",
+ "0 11 Non-Hispanic/Non-Latino 2.0 \n",
+ "1 53 Non-Hispanic/Non-Latino 2.0 \n",
+ "2 21 Non-Hispanic/Non-Latino 2.0 \n",
+ "3 50 Declines to State 4.0 \n",
+ "4 56 Non-Hispanic/Non-Latino 2.0 \n",
+ "\n",
+ " Financial Class Title Financial Class Category Active Coverages Title \\\n",
+ "0 NaN NaN MANAGED CARE \n",
+ "1 NaN NaN MANAGED CARE \n",
+ "2 NaN NaN MEDI-CAL \n",
+ "3 NaN NaN Blue Cross \n",
+ "4 NaN NaN MANAGED CARE \n",
+ "\n",
+ " Active Coverages Category Preferred Language Title \\\n",
+ "0 101.0 English \n",
+ "1 101.0 English \n",
+ "2 300.0 English \n",
+ "3 100.0 English \n",
+ "4 101.0 English \n",
+ "\n",
+ " Preferred Language Category Need Interpreter? Title EPT-840 \\\n",
+ "0 132.0 No \n",
+ "1 132.0 No \n",
+ "2 132.0 No \n",
+ "3 132.0 No \n",
+ "4 132.0 No \n",
+ "\n",
+ " Need Interpreter? Cat EPT-840 Patient Has MyChart Proxies? \\\n",
+ "0 2.0 0 \n",
+ "1 2.0 0 \n",
+ "2 2.0 0 \n",
+ "3 2.0 0 \n",
+ "4 2.0 0 \n",
+ "\n",
+ " Completed Data Models Message Position in Thread \\\n",
+ "0 NaN 1.0 \n",
+ "1 NaN 1.0 \n",
+ "2 NaN 1.0 \n",
+ "3 NaN 1.0 \n",
+ "4 NaN 1.0 \n",
+ "\n",
+ " Hours Between Current and Previous Message \n",
+ "0 NaN \n",
+ "1 NaN \n",
+ "2 NaN \n",
+ "3 NaN \n",
+ "4 NaN "
+ ]
+ },
+ "execution_count": 96,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data_sample.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "assert len(data_sample.columns) == 77 \n",
+ "helpful_cols = important_cols = [\"Thread ID\",\"Date Sent\",\n",
+ " \"Subject\",\"Patient Message\", \"Message Sender\",\n",
+ " \"Actual Response Sent to Patient\",\n",
+ " \"Recipient Names\",\"Recipient IDs\", \"Message Department\",\"Department Specialty Title\"]\n",
+ "data_sample_sub_cols = data_sample[helpful_cols]\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def query_embedding_func(message, model):\n",
+ " query_vector = model.embed_query(message)\n",
+ " assert isinstance(query_vector, list)\n",
+ " assert all(isinstance(x, float) for x in query_vector)\n",
+ " query_vector_literal = str(query_vector).replace(\"[\", \"ARRAY[\").replace(\"]\", \"]\")\n",
+ " return query_vector_literal"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "answer_question_paired_data_dedup = pd.read_excel(\"../data/answer_question_paired_data_dedup.xlsx\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def beatiful_print_thread(thread_id = None, df = answer_question_paired_data_dedup):\n",
+ " if thread_id is None:\n",
+ " thread_id =np.random.choice(df[\"Thread ID\"].unique())\n",
+ " # sort by index is important to make sure the message is in the correct order\n",
+ " thread_df = df[df[\"Thread ID\"] == thread_id].sort_index(ascending=False)\n",
+ " print(f\"Thread ID: {thread_id}\")\n",
+ " print(\"-\" * 80)\n",
+ " for idx, row in thread_df.iterrows():\n",
+ " print(f\"idx: {idx}\")\n",
+ " print(f\"Subject: {row['Subject']}\")\n",
+ " print(\"-\" * 40)\n",
+ " print(f\"Date Sent: {row['Date Sent']}\")\n",
+ " print(\"-\" * 40)\n",
+ " print(\"Sender Message:\")\n",
+ " print(row[\"Patient Message\"].replace(\"<13><10>\", \"\\n\"))\n",
+ " print(\"-\" * 40)\n",
+ " print(f\"Provider Response by {row[\"Recipient Names\"]}:\")\n",
+ " try:\n",
+ " print(row[\"Actual Response Sent to Patient\"].replace(\"<13><10>\", \"\\n\"))\n",
+ " except:\n",
+ " print(\"No response\")\n",
+ " print(\"-\" * 40) # Separator for readability"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/8AAANVCAYAAAAuhU7eAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAoNNJREFUeJzs3XlclXX+///nkeUICEdQAUlcMjUJt7QQnVxyLdAma9QoyjS10SRMx3TasCkxtzbLbHEpK5pKm0kSlyzL3G2oULPNNUEcRVB0QOH6/dGX6+cRNI6cI3R9Hvfb7dxunvf7da7rdZ1zoJ5cm80wDEMAAAAAAMCyalV3AwAAAAAAwLMI/wAAAAAAWBzhHwAAAAAAiyP8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAASdKiRYtks9nMR+3atRUeHq6ePXsqNTVVubm55V6TkpIim83m0npOnTqllJQUff755y69rqJ1NW3aVPHx8S4t5/e88847eu655yqcs9lsSklJcev63O3TTz9Vp06dFBAQIJvNpo8++qhcTY8ePZw+6ws9yrbVZrPpgQceuLwbcokq+50cNmyYbDabAgMDdfLkyXLz+/btU61atf4Qn3l1+OWXX/TAAw+oZcuW8vPzk7+/v6655ho9+uij+vXXX6u7PUnSJ598wmcHAOfwru4GAAA1y8KFC3X11VfrzJkzys3N1fr16/XMM89o1qxZeu+999S7d2+z9r777lP//v1dWv6pU6c0depUSb+F0Mq6lHVdinfeeUdZWVlKTk4uN7dx40Y1atTI4z1cKsMwNHjwYLVs2VL//ve/FRAQoFatWpWre/nll1VQUGA+T09P11NPPWV+9mVq8ra6g4+Pj86ePav33ntPI0aMcJpbuHChAgMDnd4n/Gb58uUaOnSo6tevrwceeEAdOnSQzWbTd999pwULFig9PV3/+c9/qrtNffLJJ3rppZf4AwAA/D+EfwCAk+joaHXq1Ml8ftttt2n8+PH605/+pEGDBunHH39UWFiYpN/CoacD4qlTp+Tv739Z1vV7OnfuXK3r/z2HDh3SsWPHdOutt6pXr14XrIuKinJ6/v3330sq/9m7Q9nnVxP5+vpqwIABWrBggVP4NwxDixYt0pAhQ/Taa69VY4c1z549ezR06FC1bNlSn332mRwOhzl34403KikpScuWLavGDgEAF8Jh/wCA39W4cWPNnj1bJ06c0Pz5883xig6xXrt2rXr06KF69erJz89PjRs31m233aZTp05p7969atCggSRp6tSp5uHlw4YNc1re119/rdtvv13BwcFq3rz5BddVZtmyZWrbtq1q166tK6+8Ui+88ILTfNkpDXv37nUa//zzz2Wz2cxTEHr06KH09HTt27fP6fD3MhUdAp6VlaVbbrlFwcHBql27ttq3b6/FixdXuJ53331XjzzyiCIiIhQUFKTevXtr9+7dF37jz7F+/Xr16tVLgYGB8vf3V5cuXZSenm7Op6SkmH8cefjhh2Wz2dS0adNKLbuy3nrrLbVu3Vr+/v5q166dli9f7jR/sc/PMAy9/PLLat++vfz8/BQcHKzbb79dv/zyi9MyVq9erVtuuUWNGjVS7dq1ddVVV2n06NH673//W66f9PR0tW/fXna7Xc2aNdOsWbNc3qbhw4drw4YNTp/DmjVrtG/fPt17770VviYnJ0ejR49Wo0aN5Ovrq2bNmmnq1Kk6e/asU928efPUrl071alTR4GBgbr66qv197//3Zw/deqUJk6cqGbNmql27doKCQlRp06d9O6775o127Zt09ChQ9W0aVP5+fmpadOmuuOOO7Rv375yfa1fv16xsbGqXbu2rrjiCj322GN6/fXXK/zuv/fee4qNjVVAQIDq1Kmjfv36VWpv/Zw5c1RYWKiXX37ZKfiXsdlsGjRokNPYggUL1K5dO3Mbb731Vu3atcuppkePHhUeCTRs2DCn7/HevXtls9k0a9YszZkzR82aNVOdOnUUGxurTZs2Ob3upZdeMnsqe5S9D++//75iYmLkcDjk7++vK6+8UsOHD//d7QeAPzL2/AMAKuXmm2+Wl5eXvvjiiwvW7N27V3Fxcbrhhhu0YMEC1a1bV7/++qsyMjJUXFyshg0bKiMjQ/3799eIESN03333SZL5B4EygwYN0tChQ3X//fersLDwon1lZmYqOTlZKSkpCg8P19tvv60HH3xQxcXFmjhxokvb+PLLL2vUqFH6+eefK7X3cvfu3erSpYtCQ0P1wgsvqF69elqyZImGDRumw4cPa9KkSU71f//739W1a1e9/vrrKigo0MMPP6wBAwZo165d8vLyuuB61q1bpz59+qht27Z64403ZLfb9fLLL2vAgAF69913NWTIEN13331q166dBg0apHHjxikhIUF2u92l7b+Y9PR0bd26VU8++aTq1KmjGTNm6NZbb9Xu3bt15ZVXOtVW9PmNHj1aixYtUlJSkp555hkdO3ZMTz75pLp06aJvvvnGPJrk559/VmxsrO677z45HA7t3btXc+bM0Z/+9Cd999138vHxkfTbtQ1uueUWxcbGKi0tTSUlJZoxY4YOHz7s0nb17t1bTZo00YIFC/TMM89Ikt544w1169ZNLVq0KFefk5Oj66+/XrVq1dLjjz+u5s2ba+PGjXrqqae0d+9eLVy4UJKUlpamMWPGaNy4cZo1a5Zq1aqln376STt37jSX9dBDD+mtt97SU089pQ4dOqiwsFBZWVk6evSoWbN37161atVKQ4cOVUhIiLKzszVv3jxdd9112rlzp+rXry9J+vbbb9WnTx+1bNlSixcvlr+/v1555RUtWbKk3DZMmzZNjz76qO699149+uijKi4u1syZM3XDDTdoy5Yt5Y4MOdeqVasUFhZW6aNgUlNT9fe//1133HGHUlNTdfToUaWkpCg2NlZbt26t8D2ujJdeeklXX321eX2Oxx57TDfffLP27Nkjh8Ohxx57TIWFhfrggw+0ceNG83UNGzbUxo0bNWTIEA0ZMkQpKSmqXbu29u3bp7Vr115SLwDwh2EAAGAYxsKFCw1JxtatWy9YExYWZrRu3dp8/sQTTxjn/qfkgw8+MCQZmZmZF1zGkSNHDEnGE088UW6ubHmPP/74BefO1aRJE8Nms5VbX58+fYygoCCjsLDQadv27NnjVPfZZ58ZkozPPvvMHIuLizOaNGlSYe/n9z106FDDbrcb+/fvd6q76aabDH9/f+P48eNO67n55pud6v75z38akoyNGzdWuL4ynTt3NkJDQ40TJ06YY2fPnjWio6ONRo0aGaWlpYZhGMaePXsMScbMmTMvurzz/d5nL8kICwszCgoKzLGcnByjVq1aRmpqqjl2oc9v48aNhiRj9uzZTuMHDhww/Pz8jEmTJlW43tLSUuPMmTPGvn37DEnGv/71L3MuJibGiIiIME6fPm2OFRQUGCEhIeW+JxW55557jICAALPv8PBw48yZM8bRo0cNu91uLFq0qMLv6ujRo406deoY+/btc1rerFmzDEnGjh07DMMwjAceeMCoW7fuRXuIjo42/vznP/9ur+c6e/ascfLkSSMgIMB4/vnnzfG//OUvRkBAgHHkyBFzrKSkxIiKinL67u/fv9/w9vY2xo0b57TcEydOGOHh4cbgwYMvuv7atWsbnTt3rlSveXl5hp+fX7nv/f79+w273W4kJCSYY927dze6d+9ebhn33HOP089j2Xe8TZs2xtmzZ83xLVu2GJKMd9991xwbO3Zshd+Fss+q7OcTAP6v4LB/AEClGYZx0fn27dvL19dXo0aN0uLFi8sd0l1Zt912W6Vrr7nmGrVr185pLCEhQQUFBfr6668vaf2VtXbtWvXq1UuRkZFO48OGDdOpU6ec9jhK0sCBA52et23bVpIqPIS7TGFhoTZv3qzbb79dderUMce9vLyUmJiogwcPVvrUgaro2bOnAgMDzedhYWEKDQ2tsPfzP7/ly5fLZrPprrvu0tmzZ81HeHi42rVr53Tnh9zcXN1///2KjIyUt7e3fHx81KRJE0kyDxUvLCzU1q1bNWjQINWuXdt8bWBgoAYMGODytt177706fPiwVqxYobffflu+vr76y1/+UmHt8uXL1bNnT0VERDhty0033STpt6M0JOn666/X8ePHdccdd+hf//pXhactXH/99VqxYoUmT56szz//XKdPny5Xc/LkST388MO66qqr5O3tLW9vb9WpU0eFhYVOh86vW7dON954o3kkgCTVqlVLgwcPdlreypUrdfbsWd19991O/deuXVvdu3d3+S4cF7Nx40adPn3aPK2nTGRkpG688UZ9+umnl7zsuLg4p6NlKvOzVOa6666TJA0ePFj//Oc/a8zdCQDA0wj/AIBKKSws1NGjRxUREXHBmubNm2vNmjUKDQ3V2LFj1bx5czVv3lzPP/+8S+tq2LBhpWvDw8MvOHbu4dOecPTo0Qp7LXuPzl9/vXr1nJ6XHZZfUegrk5eXJ8MwXFqPJ5zfu/Rb/xX1fn6vhw8flmEYCgsLk4+Pj9Nj06ZNZjAuLS1V3759tXTpUk2aNEmffvqptmzZYp7LXbauvLw8lZaWXvSzd0WTJk3Uq1cvLViwQAsWLNDQoUMveJHCw4cP6+OPPy63Hddcc40kmduSmJioBQsWaN++fbrtttsUGhqqmJgYrV692lzWCy+8oIcfflgfffSRevbsqZCQEP35z3/Wjz/+aNYkJCRo7ty5uu+++7Ry5Upt2bJFW7duVYMGDZze+6NHj5qnTpzr/LGy0yKuu+66ctvw3nvvVfhHinM1btxYe/bsuWjNuT1JFf88R0REVOl7eyk/S2W6deumjz76yPwjSKNGjRQdHe10rQUAsCLO+QcAVEp6erpKSkp+9/Z8N9xwg2644QaVlJRo27ZtevHFF5WcnKywsDANHTq0UuuqzH3ay+Tk5FxwrCwglO0dLioqcqr7vaDze+rVq6fs7Oxy44cOHZIkp72wlyo4OFi1atXy+Hrc6fzPr379+rLZbPryyy8rvA5B2VhWVpa++eYbLVq0SPfcc485/9NPPznVBwcHy2azXfSzd9Xw4cN11113qbS0VPPmzbtgXf369dW2bVs9/fTTFc6f+8exe++9V/fee68KCwv1xRdf6IknnlB8fLx++OEHNWnSRAEBAZo6daqmTp1qHnkwefJkDRgwQN9//73y8/O1fPlyPfHEE5o8ebK53KKiIh07dsxpvfXq1avwegfnvx9l35UPPvjAPKLCFf369dOLL76oTZs2/e55/2U/fxf67p77va1du7by8/PL1VX1Z/RCbrnlFt1yyy0qKirSpk2blJqaqoSEBDVt2lSxsbEeWScAVDf2/AMAftf+/fs1ceJEORwOjR49ulKv8fLyUkxMjHnF7bJD8F3ZQ1cZO3bs0DfffOM09s477ygwMFDXXnutJJlXC//222+d6v7973+XW96F9mZXpFevXlq7dq0Zwsu8+eab8vf3d8utAQMCAhQTE6OlS5c69VVaWqolS5aoUaNGatmyZZXX40nx8fEyDEO//vqrOnXqVO7Rpk0bSf//Hw3O/wPBuXeYkH57T66//notXbpU//vf/8zxEydO6OOPP76kHm+99VbdeuutGj58+EU/t/j4eGVlZal58+YVbktFR8YEBATopptu0iOPPKLi4mLt2LGjXE1YWJiGDRumO+64Q7t379apU6dks9lkGEa59+P1119XSUmJ01j37t21du1ap7BcWlqq999/36muX79+8vb21s8//1xh/793q8fx48crICBAY8aMqTCsG4ZhXiwzNjZWfn5+5S46ePDgQfOUmTJNmzbVDz/84PQHuqNHj2rDhg0X7ediKvO7xm63q3v37ubFHitzxwMA+KNizz8AwElWVpZ5HnBubq6+/PJLLVy4UF5eXlq2bFm5K/Of65VXXtHatWsVFxenxo0b63//+58WLFgg6berqku/nZfdpEkT/etf/1KvXr0UEhKi+vXrX/Jt6SIiIjRw4EClpKSoYcOGWrJkiVavXq1nnnnGPHT7uuuuU6tWrTRx4kSdPXtWwcHBWrZsmdavX19ueW3atNHSpUs1b948dezYUbVq1bpgIHriiSfMc8Aff/xxhYSE6O2331Z6erpmzJhR4a3QLkVqaqr69Omjnj17auLEifL19dXLL7+srKwsvfvuuy4dKVEdunbtqlGjRunee+/Vtm3b1K1bNwUEBCg7O1vr169XmzZt9Ne//lVXX321mjdvrsmTJ8swDIWEhOjjjz92OlS+zD/+8Q/1799fffr00YQJE1RSUqJnnnlGAQEB5faKV0bt2rX1wQcf/G7dk08+qdWrV6tLly5KSkpSq1at9L///U979+7VJ598oldeeUWNGjXSyJEj5efnp65du6phw4bKyclRamqqHA6Hec55TEyM4uPj1bZtWwUHB2vXrl166623FBsba353u3XrppkzZ5o/I+vWrdMbb7yhunXrOvX1yCOP6OOPP1avXr30yCOPyM/PT6+88op5t4VatX7b39O0aVM9+eSTeuSRR/TLL7+of//+Cg4O1uHDh7VlyxbzaIQLadasmdLS0jRkyBC1b99eDzzwgDp06CBJ2rlzpxYsWCDDMHTrrbeqbt26euyxx/T3v/9dd999t+644w4dPXpUU6dOVe3atfXEE0+Yy01MTNT8+fN11113aeTIkTp69KhmzJihoKCgyn+I5yn7o9Izzzyjm266SV5eXmrbtq2eeuopHTx4UL169VKjRo10/PhxPf/88/Lx8VH37t0veX0AUONV37UGAQA1SdkV38sevr6+RmhoqNG9e3dj2rRpRm5ubrnXnH8F/o0bNxq33nqr0aRJE8Nutxv16tUzunfvbvz73/92et2aNWuMDh06GHa73ZBk3HPPPU7LO/eK5Rdal2H8drX/uLg444MPPjCuueYaw9fX12jatKkxZ86ccq//4YcfjL59+xpBQUFGgwYNjHHjxhnp6enlrvZ/7Ngx4/bbbzfq1q1r2Gw2p3WqgrsUfPfdd8aAAQMMh8Nh+Pr6Gu3atTMWLlzoVFN2tf/333/fabzsyuXn11fkyy+/NG688UYjICDA8PPzMzp37mx8/PHHFS7PE1f7Hzt2bLnxJk2amJ+dYVz88zMMw1iwYIERExNjbkPz5s2Nu+++29i2bZtZs3PnTqNPnz5GYGCgERwcbPzlL38x9u/fX+F7/+9//9to27at4evrazRu3NiYPn16hd+Tipx7tf8LudCdKY4cOWIkJSUZzZo1M3x8fIyQkBCjY8eOxiOPPGKcPHnSMAzDWLx4sdGzZ08jLCzM8PX1NSIiIozBgwcb3377rbmcyZMnG506dTKCg4MNu91uXHnllcb48eON//73v2bNwYMHjdtuu80IDg42AgMDjf79+xtZWVnl3nvD+O07EhMTY9jtdiM8PNz429/+ZjzzzDMVXtn+o48+Mnr27GkEBQUZdrvdaNKkiXH77bcba9as+d33zjAM4+effzbGjBljXHXVVYbdbjf8/PyMqKgo46GHHip3V43XX3/d/JwcDodxyy23mHdFONfixYuN1q1bG7Vr1zaioqKM995774JX+6/oO37+Z1VUVGTcd999RoMGDcyf5T179hjLly83brrpJuOKK64wf8/dfPPNxpdfflmpbQeAPyqbYfzOpZsBAADwh9S3b1/t3btXP/zwQ3W3AgCoZhz2DwAAYAEPPfSQOnTooMjISB07dkxvv/22Vq9erTfeeKO6WwMA1ACEfwAAAAsoKSnR448/rpycHNlsNkVFRemtt97SXXfdVd2tAQBqAA77BwAAAADA4rjVHwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHBf8c6PS0lIdOnRIgYGBstls1d0OAAAAAMDiDMPQiRMnFBERoVq1Lrx/n/DvRocOHVJkZGR1twEAAAAA+D/mwIEDatSo0QXnCf9uFBgYKOm3Nz0oKKiauwEAAAAAWF1BQYEiIyPNPHohhH83KjvUPygoiPAPAAAAALhsfu/Ucy74BwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxXlXdwOoeZpOTi83tnd6XDV0AgAAAABwB/b8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAAAAAAWBzhHwAAAAAAi6vW8N+0aVPZbLZyj7Fjx0qSDMNQSkqKIiIi5Ofnpx49emjHjh1OyygqKtK4ceNUv359BQQEaODAgTp48KBTTV5enhITE+VwOORwOJSYmKjjx4871ezfv18DBgxQQECA6tevr6SkJBUXF3t0+wEAAAAAuByqNfxv3bpV2dnZ5mP16tWSpL/85S+SpBkzZmjOnDmaO3eutm7dqvDwcPXp00cnTpwwl5GcnKxly5YpLS1N69ev18mTJxUfH6+SkhKzJiEhQZmZmcrIyFBGRoYyMzOVmJhozpeUlCguLk6FhYVav3690tLS9OGHH2rChAmX6Z0AAAAAAMBzbIZhGNXdRJnk5GQtX75cP/74oyQpIiJCycnJevjhhyX9tpc/LCxMzzzzjEaPHq38/Hw1aNBAb731loYMGSJJOnTokCIjI/XJJ5+oX79+2rVrl6KiorRp0ybFxMRIkjZt2qTY2Fh9//33atWqlVasWKH4+HgdOHBAERERkqS0tDQNGzZMubm5CgoKqlT/BQUFcjgcys/Pr/RraqKmk9PLje2dHlcNnQAAAAAALqayObTGnPNfXFysJUuWaPjw4bLZbNqzZ49ycnLUt29fs8Zut6t79+7asGGDJGn79u06c+aMU01ERISio6PNmo0bN8rhcJjBX5I6d+4sh8PhVBMdHW0Gf0nq16+fioqKtH379gv2XFRUpIKCAqcHAAAAAAA1TY0J/x999JGOHz+uYcOGSZJycnIkSWFhYU51YWFh5lxOTo58fX0VHBx80ZrQ0NBy6wsNDXWqOX89wcHB8vX1NWsqkpqaal5HwOFwKDIy0oUtBgAAAADg8qgx4f+NN97QTTfd5LT3XZJsNpvTc8Mwyo2d7/yaiuovpeZ8U6ZMUX5+vvk4cODARfsCAAAAAKA61Ijwv2/fPq1Zs0b33XefORYeHi5J5fa85+bmmnvpw8PDVVxcrLy8vIvWHD58uNw6jxw54lRz/nry8vJ05syZckcEnMtutysoKMjpAQAAAABATVMjwv/ChQsVGhqquLj//6JyzZo1U3h4uHkHAOm36wKsW7dOXbp0kSR17NhRPj4+TjXZ2dnKysoya2JjY5Wfn68tW7aYNZs3b1Z+fr5TTVZWlrKzs82aVatWyW63q2PHjp7ZaAAAAAAALhPv6m6gtLRUCxcu1D333CNv7/+/HZvNpuTkZE2bNk0tWrRQixYtNG3aNPn7+yshIUGS5HA4NGLECE2YMEH16tVTSEiIJk6cqDZt2qh3796SpNatW6t///4aOXKk5s+fL0kaNWqU4uPj1apVK0lS3759FRUVpcTERM2cOVPHjh3TxIkTNXLkSPbmAwAAAAD+8Ko9/K9Zs0b79+/X8OHDy81NmjRJp0+f1pgxY5SXl6eYmBitWrVKgYGBZs2zzz4rb29vDR48WKdPn1avXr20aNEieXl5mTVvv/22kpKSzLsCDBw4UHPnzjXnvby8lJ6erjFjxqhr167y8/NTQkKCZs2a5cEtBwAAAADg8rAZhmFUdxNWUdn7K9Z0TSenlxvbOz2ugkoAAAAAQHWqbA6tEef8AwAAAAAAzyH8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAAAAAAWBzhHwAAAAAAiyP8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAAAAAAWBzhHwAAAAAAiyP8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAAAAAAWBzhHwAAAAAAiyP8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAAAAAAWBzhHwAAAAAAiyP8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAAAAAAWBzhHwAAAAAAiyP8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAAAAAAWBzhHwAAAAAAiyP8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAAAAAAWBzhHwAAAAAAiyP8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAAAAAAWBzhHwAAAAAAiyP8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAAAAAAWBzhHwAAAAAAiyP8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAAAAAAWBzhHwAAAAAAiyP8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAAAAAAWBzhHwAAAAAAiyP8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFVXv4//XXX3XXXXepXr168vf3V/v27bV9+3Zz3jAMpaSkKCIiQn5+furRo4d27NjhtIyioiKNGzdO9evXV0BAgAYOHKiDBw861eTl5SkxMVEOh0MOh0OJiYk6fvy4U83+/fs1YMAABQQEqH79+kpKSlJxcbHHth0AAAAAgMuhWsN/Xl6eunbtKh8fH61YsUI7d+7U7NmzVbduXbNmxowZmjNnjubOnautW7cqPDxcffr00YkTJ8ya5ORkLVu2TGlpaVq/fr1Onjyp+Ph4lZSUmDUJCQnKzMxURkaGMjIylJmZqcTERHO+pKREcXFxKiws1Pr165WWlqYPP/xQEyZMuCzvBQAAAAAAnmIzDMOorpVPnjxZX331lb788ssK5w3DUEREhJKTk/Xwww9L+m0vf1hYmJ555hmNHj1a+fn5atCggd566y0NGTJEknTo0CFFRkbqk08+Ub9+/bRr1y5FRUVp06ZNiomJkSRt2rRJsbGx+v7779WqVSutWLFC8fHxOnDggCIiIiRJaWlpGjZsmHJzcxUUFPS721NQUCCHw6H8/PxK1ddUTSenlxvbOz2uGjoBAAAAAFxMZXNote75//e//61OnTrpL3/5i0JDQ9WhQwe99tpr5vyePXuUk5Ojvn37mmN2u13du3fXhg0bJEnbt2/XmTNnnGoiIiIUHR1t1mzcuFEOh8MM/pLUuXNnORwOp5ro6Ggz+EtSv379VFRU5HQawrmKiopUUFDg9AAAAAAAoKap1vD/yy+/aN68eWrRooVWrlyp+++/X0lJSXrzzTclSTk5OZKksLAwp9eFhYWZczk5OfL19VVwcPBFa0JDQ8utPzQ01Knm/PUEBwfL19fXrDlfamqqeQ0Bh8OhyMhIV98CAAAAAAA8rlrDf2lpqa699lpNmzZNHTp00OjRozVy5EjNmzfPqc5mszk9Nwyj3Nj5zq+pqP5Sas41ZcoU5efnm48DBw5ctCcAAAAAAKpDtYb/hg0bKioqymmsdevW2r9/vyQpPDxcksrtec/NzTX30oeHh6u4uFh5eXkXrTl8+HC59R85csSp5vz15OXl6cyZM+WOCChjt9sVFBTk9AAAAAAAoKap1vDftWtX7d6922nshx9+UJMmTSRJzZo1U3h4uFavXm3OFxcXa926derSpYskqWPHjvLx8XGqyc7OVlZWllkTGxur/Px8bdmyxazZvHmz8vPznWqysrKUnZ1t1qxatUp2u10dO3Z085YDAAAAAHD5eFfnysePH68uXbpo2rRpGjx4sLZs2aJXX31Vr776qqTfDsNPTk7WtGnT1KJFC7Vo0ULTpk2Tv7+/EhISJEkOh0MjRozQhAkTVK9ePYWEhGjixIlq06aNevfuLem3own69++vkSNHav78+ZKkUaNGKT4+Xq1atZIk9e3bV1FRUUpMTNTMmTN17NgxTZw4USNHjmSPPgAAAADgD61aw/91112nZcuWacqUKXryySfVrFkzPffcc7rzzjvNmkmTJun06dMaM2aM8vLyFBMTo1WrVikwMNCsefbZZ+Xt7a3Bgwfr9OnT6tWrlxYtWiQvLy+z5u2331ZSUpJ5V4CBAwdq7ty55ryXl5fS09M1ZswYde3aVX5+fkpISNCsWbMuwzsBAAAAAIDn2AzDMKq7Cauo7P0Va7qmk9PLje2dHlcNnQAAAAAALqayObRaz/kHAAAAAACeR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxXlXdwOoHk0np5cb2zs9rho6AQAAAAB4Gnv+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFhctYb/lJQU2Ww2p0d4eLg5bxiGUlJSFBERIT8/P/Xo0UM7duxwWkZRUZHGjRun+vXrKyAgQAMHDtTBgwedavLy8pSYmCiHwyGHw6HExEQdP37cqWb//v0aMGCAAgICVL9+fSUlJam4uNhj2w4AAAAAwOVS7Xv+r7nmGmVnZ5uP7777zpybMWOG5syZo7lz52rr1q0KDw9Xnz59dOLECbMmOTlZy5YtU1pamtavX6+TJ08qPj5eJSUlZk1CQoIyMzOVkZGhjIwMZWZmKjEx0ZwvKSlRXFycCgsLtX79eqWlpenDDz/UhAkTLs+bAAAAAACAB3lXewPe3k57+8sYhqHnnntOjzzyiAYNGiRJWrx4scLCwvTOO+9o9OjRys/P1xtvvKG33npLvXv3liQtWbJEkZGRWrNmjfr166ddu3YpIyNDmzZtUkxMjCTptddeU2xsrHbv3q1WrVpp1apV2rlzpw4cOKCIiAhJ0uzZszVs2DA9/fTTCgoKukzvBgAAAAAA7lfte/5//PFHRUREqFmzZho6dKh++eUXSdKePXuUk5Ojvn37mrV2u13du3fXhg0bJEnbt2/XmTNnnGoiIiIUHR1t1mzcuFEOh8MM/pLUuXNnORwOp5ro6Ggz+EtSv379VFRUpO3bt1+w96KiIhUUFDg9AAAAAACoaao1/MfExOjNN9/UypUr9dprryknJ0ddunTR0aNHlZOTI0kKCwtzek1YWJg5l5OTI19fXwUHB1+0JjQ0tNy6Q0NDnWrOX09wcLB8fX3Nmoqkpqaa1xFwOByKjIx08R0AAAAAAMDzqjX833TTTbrtttvUpk0b9e7dW+np6ZJ+O7y/jM1mc3qNYRjlxs53fk1F9ZdSc74pU6YoPz/ffBw4cOCifQEAAAAAUB2q/bD/cwUEBKhNmzb68ccfzesAnL/nPTc319xLHx4eruLiYuXl5V205vDhw+XWdeTIEaea89eTl5enM2fOlDsi4Fx2u11BQUFODwAAAAAAapoaFf6Lioq0a9cuNWzYUM2aNVN4eLhWr15tzhcXF2vdunXq0qWLJKljx47y8fFxqsnOzlZWVpZZExsbq/z8fG3ZssWs2bx5s/Lz851qsrKylJ2dbdasWrVKdrtdHTt29Og2AwAAAADgadV6tf+JEydqwIABaty4sXJzc/XUU0+poKBA99xzj2w2m5KTkzVt2jS1aNFCLVq00LRp0+Tv76+EhARJksPh0IgRIzRhwgTVq1dPISEhmjhxonkagSS1bt1a/fv318iRIzV//nxJ0qhRoxQfH69WrVpJkvr27auoqCglJiZq5syZOnbsmCZOnKiRI0eyNx8AAAAA8IdXreH/4MGDuuOOO/Tf//5XDRo0UOfOnbVp0yY1adJEkjRp0iSdPn1aY8aMUV5enmJiYrRq1SoFBgaay3j22Wfl7e2twYMH6/Tp0+rVq5cWLVokLy8vs+btt99WUlKSeVeAgQMHau7cuea8l5eX0tPTNWbMGHXt2lV+fn5KSEjQrFmzLtM7AQAAAACA59gMwzCquwmrKCgokMPhUH5+fo0/YqDp5PRyY3unx/3uHAAAAACg5qhsDq1R5/wDAAAAAAD3I/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4rxdKc7Pz9eyZcv05Zdfau/evTp16pQaNGigDh06qF+/furSpYun+gQAAAAAAJeoUnv+s7OzNXLkSDVs2FBPPvmkCgsL1b59e/Xq1UuNGjXSZ599pj59+igqKkrvvfeep3sGAAAAAAAuqNSe/3bt2unuu+/Wli1bFB0dXWHN6dOn9dFHH2nOnDk6cOCAJk6c6NZGAQAAAADApalU+N+xY4caNGhw0Ro/Pz/dcccduuOOO3TkyBG3NAcAAAAAAKquUof9nxv8CwsLXaoHAAAAAADVy+Wr/YeFhWn48OFav369J/oBAAAAAABu5nL4f/fdd5Wfn69evXqpZcuWmj59ug4dOuSJ3gAAAAAAgBu4HP4HDBigDz/8UIcOHdJf//pXvfvuu2rSpIni4+O1dOlSnT171hN9AgAAAACAS+Ry+C9Tr149jR8/Xt98843mzJmjNWvW6Pbbb1dERIQef/xxnTp1yp19AgAAAACAS1Spq/1XJCcnR2+++aYWLlyo/fv36/bbb9eIESN06NAhTZ8+XZs2bdKqVavc2SsAAAAAALgELof/pUuXauHChVq5cqWioqI0duxY3XXXXapbt65Z0759e3Xo0MGdfQIAAAAAgEvkcvi/9957NXToUH311Ve67rrrKqy58sor9cgjj1S5OQAAAAAAUHUuh//s7Gz5+/tftMbPz09PPPHEJTcFAAAAAADcx+UL/n3++edauXJlufGVK1dqxYoVbmkKAAAAAAC4j8vhf/LkySopKSk3bhiGJk+e7JamAAAAAACA+7gc/n/88UdFRUWVG7/66qv1008/uaUpAAAAAADgPi6Hf4fDoV9++aXc+E8//aSAgAC3NAUAAAAAANzH5fA/cOBAJScn6+effzbHfvrpJ02YMEEDBw50a3MAAAAAAKDqXA7/M2fOVEBAgK6++mo1a9ZMzZo1U+vWrVWvXj3NmjXLEz0CAAAAAIAqcPlWfw6HQxs2bNDq1av1zTffyM/PT23btlW3bt080R8AAAAAAKgil8O/JNlsNvXt21d9+/Z1dz8AAAAAAMDNLin8f/rpp/r000+Vm5ur0tJSp7kFCxa4pTEAAAAAAOAeLof/qVOn6sknn1SnTp3UsGFD2Ww2T/QFAAAAAADcxOXw/8orr2jRokVKTEz0RD8AAAAAAMDNXL7af3Fxsbp06eKJXgAAAAAAgAe4HP7vu+8+vfPOO57oBQAAAAAAeIDLh/3/73//06uvvqo1a9aobdu28vHxcZqfM2eO25oDAAAAAABV53L4//bbb9W+fXtJUlZWltMcF/8DAAAAAKDmcTn8f/bZZ57oAwAAAAAAeIjL5/yX+emnn7Ry5UqdPn1akmQYhtuaAgAAAAAA7uNy+D969Kh69eqlli1b6uabb1Z2drak3y4EOGHCBLc3CAAAAAAAqsbl8D9+/Hj5+Pho//798vf3N8eHDBmijIwMtzYHAAAAAACqzuVz/letWqWVK1eqUaNGTuMtWrTQvn373NYYAAAAAABwD5f3/BcWFjrt8S/z3//+V3a73S1NAQAAAAAA93E5/Hfr1k1vvvmm+dxms6m0tFQzZ85Uz5493docAAAAAACoOpcP+585c6Z69Oihbdu2qbi4WJMmTdKOHTt07NgxffXVV57oEQAAAAAAVIHLe/6joqL07bff6vrrr1efPn1UWFioQYMG6T//+Y+aN2/uiR4BAAAAAEAVuLznX5LCw8M1depUd/cCAAAAAAA8wOXw/8UXX1x0vlu3bpfcDAAAAAAAcD+Xw3+PHj3KjdlsNvPfJSUlVWoIAAAAAAC4l8vn/Ofl5Tk9cnNzlZGRoeuuu06rVq3yRI8AAAAAAKAKXN7z73A4yo316dNHdrtd48eP1/bt293SGAAAAAAAcA+X9/xfSIMGDbR79253LQ4AAAAAALiJy3v+v/32W6fnhmEoOztb06dPV7t27dzWGAAAAAAAcA+Xw3/79u1ls9lkGIbTeOfOnbVgwQK3NQYAAAAAANzD5fC/Z88ep+e1atVSgwYNVLt2bbc1BQAAAAAA3Mfl8N+kSRNP9AEAAAAAADzE5fD/wgsvVLo2KSnJ1cUDAAAAAAA3czn8P/vsszpy5IhOnTqlunXrSpKOHz8uf39/NWjQwKyz2WyEfwAAAAAAagCXb/X39NNPq3379tq1a5eOHTumY8eOadeuXbr22mv11FNPac+ePdqzZ49++eUXT/QLAAAAAABc5HL4f+yxx/Tiiy+qVatW5lirVq307LPP6tFHH3VrcwAAAAAAoOpcDv/Z2dk6c+ZMufGSkhIdPnzYLU0BAAAAAAD3cTn89+rVSyNHjtS2bdtkGIYkadu2bRo9erR69+7t9gYBAAAAAEDVuBz+FyxYoCuuuELXX3+9ateuLbvdrpiYGDVs2FCvv/66J3oEAAAAAABV4PLV/hs0aKBPPvlEP/zwg77//nsZhqHWrVurZcuWnugPAAAAAABUkcvhv0zTpk1lGIaaN28ub+9LXgwAAAAAAPAwlw/7P3XqlEaMGCF/f39dc8012r9/vyQpKSlJ06dPd3uDAAAAAACgalwO/1OmTNE333yjzz//XLVr1zbHe/furffee8+tzQEAAAAAgKpz+Xj9jz76SO+99546d+4sm81mjkdFRennn392a3MAAAAAAKDqXN7zf+TIEYWGhpYbLywsdPpjAAAAAAAAqBlcDv/XXXed0tPTzedlgf+1115TbGys+zoDAAAAAABu4fJh/6mpqerfv7927typs2fP6vnnn9eOHTu0ceNGrVu3zhM9ogZpOjm93Nje6XHV0AkAAAAAoLJc3vPfpUsXbdiwQadOnVLz5s21atUqhYWFaePGjerYsaMnegQAAAAAAFXg0p7/M2fOaNSoUXrssce0ePFiT/UEAAAAAADcyKU9/z4+Plq2bJmnegEAAAAAAB7g8mH/t956qz766CMPtAIAAAAAADzB5Qv+XXXVVfrHP/6hDRs2qGPHjgoICHCaT0pKcltzAAAAAACg6lwO/6+//rrq1q2r7du3a/v27U5zNpuN8A8AAAAAQA1T6fBfWlqqWrVqac+ePZ7sBwAAAAAAuFmlz/n38fFRbm6u+fxvf/ubjh075pGmAAAAAACA+1Q6/BuG4fR8/vz5On78uLv7AQAAAAAAbuby1f7LnP/HAAAAAAAAUDNdcvgHAAAAAAB/DC5d7f/xxx+Xv7+/JKm4uFhPP/20HA6HU82cOXPc1x0AAAAAAKiySof/bt26affu3ebzLl266JdffnGqsdls7usMAAAAAAC4RaXD/+eff+7BNgAAAAAAgKdwzj8AAAAAABZXqfA/ffp0FRYWVmqBmzdvVnp6usuNpKamymazKTk52RwzDEMpKSmKiIiQn5+fevTooR07dji9rqioSOPGjVP9+vUVEBCggQMH6uDBg041eXl5SkxMlMPhkMPhUGJiYrnbFO7fv18DBgxQQECA6tevr6SkJBUXF7u8HQAAAAAA1DSVCv87d+5UkyZN9Ne//lUrVqzQkSNHzLmzZ8/q22+/1csvv6wuXbpo6NChCgoKcqmJrVu36tVXX1Xbtm2dxmfMmKE5c+Zo7ty52rp1q8LDw9WnTx+dOHHCrElOTtayZcuUlpam9evX6+TJk4qPj1dJSYlZk5CQoMzMTGVkZCgjI0OZmZlKTEw050tKShQXF6fCwkKtX79eaWlp+vDDDzVhwgSXtgMAAAAAgJqoUuH/zTff1Nq1a1VaWqo777xT4eHh8vX1VWBgoOx2uzp06KAFCxZo2LBh+v7773XDDTdUuoGTJ0/qzjvv1Guvvabg4GBz3DAMPffcc3rkkUc0aNAgRUdHa/HixTp16pTeeecdSVJ+fr7eeOMNzZ49W71791aHDh20ZMkSfffdd1qzZo0kadeuXcrIyNDrr7+u2NhYxcbG6rXXXtPy5cvNCxiuWrVKO3fu1JIlS9ShQwf17t1bs2fP1muvvaaCgoJKbwsAAAAAADVRpc/5b9u2rebPn6+jR4/q66+/1vvvv6/XXntNK1eu1OHDh7Vt2zaNGjVKdrvdpQbGjh2ruLg49e7d22l8z549ysnJUd++fc0xu92u7t27a8OGDZKk7du368yZM041ERERio6ONms2btwoh8OhmJgYs6Zz585yOBxONdHR0YqIiDBr+vXrp6KiIm3fvv2CvRcVFamgoMDpAQAAAABATVPpq/2Xsdlsateundq1a1fllaelpenrr7/W1q1by83l5ORIksLCwpzGw8LCtG/fPrPG19fX6YiBspqy1+fk5Cg0NLTc8kNDQ51qzl9PcHCwfH19zZqKpKamaurUqb+3mQAAAAAAVKtqu9r/gQMH9OCDD2rJkiWqXbv2BetsNpvTc8Mwyo2d7/yaiuovpeZ8U6ZMUX5+vvk4cODARfsCAAAAAKA6VFv43759u3Jzc9WxY0d5e3vL29tb69at0wsvvCBvb29zT/z5e95zc3PNufDwcBUXFysvL++iNYcPHy63/iNHjjjVnL+evLw8nTlzptwRAeey2+0KCgpyegAAAAAAUNNUW/jv1auXvvvuO2VmZpqPTp066c4771RmZqauvPJKhYeHa/Xq1eZriouLtW7dOnXp0kWS1LFjR/n4+DjVZGdnKysry6yJjY1Vfn6+tmzZYtZs3rxZ+fn5TjVZWVnKzs42a1atWiW73a6OHTt69H0AAAAAAMDTXD7n310CAwMVHR3tNBYQEKB69eqZ48nJyZo2bZpatGihFi1aaNq0afL391dCQoIkyeFwaMSIEZowYYLq1aunkJAQTZw4UW3atDEvINi6dWv1799fI0eO1Pz58yVJo0aNUnx8vFq1aiVJ6tu3r6KiopSYmKiZM2fq2LFjmjhxokaOHMnefAAAAADAH16Vw39BQYHWrl2rVq1aqXXr1u7oyTRp0iSdPn1aY8aMUV5enmJiYrRq1SoFBgaaNc8++6y8vb01ePBgnT59Wr169dKiRYvk5eVl1rz99ttKSkoy7wowcOBAzZ0715z38vJSenq6xowZo65du8rPz08JCQmaNWuWW7cHAAAAAIDqYDMMw3DlBYMHD1a3bt30wAMP6PTp02rXrp327t0rwzCUlpam2267zVO91ngFBQVyOBzKz8+v8UcMNJ2cXm5s7/S4Ks0BAAAAAC6vyuZQl8/5/+KLL3TDDTdIkpYtWybDMHT8+HG98MILeuqppy69YwAAAAAA4BEuh//8/HyFhIRIkjIyMnTbbbfJ399fcXFx+vHHH93eIAAAAAAAqBqXw39kZKQ2btyowsJCZWRkmOfR5+XlqXbt2m5vEAAAAAAAVI3LF/xLTk7WnXfeqTp16qhJkybq0aOHpN9OB2jTpo27+wMAAAAAAFXkcvgfM2aMrr/+eh04cEB9+vRRrVq/HTxw5ZVXcs4/AAAAAAA10CXd6q9Tp07q1KmT01hcHFd8BwAAAACgJqpU+H/ooYcqvcA5c+ZccjMAAAAAAMD9KhX+//Of/zg93759u0pKStSqVStJ0g8//CAvLy917NjR/R0CAAAAAIAqqVT4/+yzz8x/z5kzR4GBgVq8eLGCg4Ml/Xal/3vvvVc33HCDZ7oEAAAAAACXzOVb/c2ePVupqalm8Jek4OBgPfXUU5o9e7ZbmwMAAAAAAFXncvgvKCjQ4cOHy43n5ubqxIkTbmkKAAAAAAC4j8vh/9Zbb9W9996rDz74QAcPHtTBgwf1wQcfaMSIERo0aJAnegQAAAAAAFXg8q3+XnnlFU2cOFF33XWXzpw589tCvL01YsQIzZw50+0NAgAAAACAqnE5/Pv7++vll1/WzJkz9fPPP8swDF111VUKCAjwRH8AAAAAAKCKXA7/ZQICAtS2bVt39gIAAAAAADzgksL/1q1b9f7772v//v0qLi52mlu6dKlbGgMAAAAAAO7h8gX/0tLS1LVrV+3cuVPLli3TmTNntHPnTq1du1YOh8MTPQIAAAAAgCpwOfxPmzZNzz77rJYvXy5fX189//zz2rVrlwYPHqzGjRt7okcAAAAAAFAFLof/n3/+WXFxcZIku92uwsJC2Ww2jR8/Xq+++qrbGwQAAAAAAFXjcvgPCQnRiRMnJElXXHGFsrKyJEnHjx/XqVOn3NsdAAAAAACoMpcv+HfDDTdo9erVatOmjQYPHqwHH3xQa9eu1erVq9WrVy9P9AgAAAAAAKrA5fA/d+5c/e9//5MkTZkyRT4+Plq/fr0GDRqkxx57zO0NAgAAAACAqnE5/IeEhJj/rlWrliZNmqRJkya5tSkAAAAAAOA+Lp/zL/120b9HH31Ud9xxh3JzcyVJGRkZ2rFjh1ubAwAAAAAAVedy+F+3bp3atGmjzZs3a+nSpTp58qQk6dtvv9UTTzzh9gYBAAAAAEDVuBz+J0+erKeeekqrV6+Wr6+vOd6zZ09t3LjRrc0BAAAAAICqczn8f/fdd7r11lvLjTdo0EBHjx51S1MAAAAAAMB9XA7/devWVXZ2drnx//znP7riiivc0hQAAAAAAHAfl8N/QkKCHn74YeXk5Mhms6m0tFRfffWVJk6cqLvvvtsTPQIAAAAAgCpwOfw//fTTaty4sa644gqdPHlSUVFR6tatm7p06aJHH33UEz0CAAAAAIAq8Hal2DAMHTp0SK+99pr+8Y9/6Ouvv1Zpaak6dOigFi1aeKpHAAAAAABQBS6H/xYtWmjHjh1q0aKFrrzySk/1BQAAAAAA3MSlw/5r1aqlFi1acFV/AAAAAAD+QFw+53/GjBn629/+pqysLE/0AwAAAAAA3Mylw/4l6a677tKpU6fUrl07+fr6ys/Pz2n+2LFjbmsOAAAAAABUncvh/7nnnvNAGwAAAAAAwFNcDv/33HOPJ/oAAAAAAAAe4nL4l6TS0lL99NNPys3NVWlpqdNct27d3NIYAAAAAABwD5fD/6ZNm5SQkKB9+/bJMAynOZvNppKSErc1BwAAAAAAqs7l8H///ferU6dOSk9PV8OGDWWz2TzRFwAAAAAAcBOXw/+PP/6oDz74QFdddZUn+gEAAAAAAG5Wy9UXxMTE6KeffvJELwAAAAAAwAMqtef/22+/Nf89btw4TZgwQTk5OWrTpo18fHycatu2beveDgEAAAAAQJVUKvy3b99eNpvN6QJ/w4cPN/9dNscF/wAAAAAAqHkqFf737Nnj6T4AAAAAAICHVCr8N2nSRMOHD9fzzz+vwMBAT/cEAAAAAADcqNIX/Fu8eLFOnz7tyV4AAAAAAIAHVDr8n3u+PwAAAAAA+ONw6VZ/NpvNU30AAAAAAAAPqdQ5/2Vatmz5u38AOHbsWJUaAgAAAAAA7uVS+J86daocDoenegEAAAAAAB7gUvgfOnSoQkNDPdULAAAAAADwgEqf88/5/gAAAAAA/DFxtX8AAAAAACyu0of9l5aWerIPAAAAAADgIS7d6g8AAAAAAPzxEP4BAAAAALA4wj8AAAAAABZXqfB/7bXXKi8vT5L05JNP6tSpUx5tCgAAAAAAuE+lwv+uXbtUWFgoSZo6dapOnjzp0aYAAAAAAID7VOpq/+3bt9e9996rP/3pTzIMQ7NmzVKdOnUqrH388cfd2iAAAAAAAKiaSoX/RYsW6YknntDy5ctls9m0YsUKeXuXf6nNZiP8AwAAAABQw1Qq/Ldq1UppaWmSpFq1aunTTz9VaGioRxsDAAAAAADuUanwf67S0lJP9AEAAAAAADzE5fAvST///LOee+457dq1SzabTa1bt9aDDz6o5s2bu7s/AAAAAABQRZW62v+5Vq5cqaioKG3ZskVt27ZVdHS0Nm/erGuuuUarV6/2RI8AAAAAAKAKXN7zP3nyZI0fP17Tp08vN/7www+rT58+bmsOAAAAAABUnct7/nft2qURI0aUGx8+fLh27tzplqYAAAAAAID7uBz+GzRooMzMzHLjmZmZ3AEAAAAAAIAayOXD/keOHKlRo0bpl19+UZcuXWSz2bR+/Xo988wzmjBhgid6BAAAAAAAVeBy+H/ssccUGBio2bNna8qUKZKkiIgIpaSkKCkpye0NAgAAAACAqnE5/NtsNo0fP17jx4/XiRMnJEmBgYFubwwAAAAAALiHy+H/XIR+AAAAAABqPpcv+AcAAAAAAP5YCP8AAAAAAFgc4R8AAAAAAItzKfyfOXNGPXv21A8//OCpfgAAAAAAgJu5FP59fHyUlZUlm83mqX4AAAAAAICbuXzY/91336033njDE70AAAAAAAAPcPlWf8XFxXr99de1evVqderUSQEBAU7zc+bMcVtzAAAAAACg6lwO/1lZWbr22mslqdy5/5wOAAAAAABAzeNy+P/ss8880QcAAAAAAPCQS77V308//aSVK1fq9OnTkiTDMNzWFAAAAAAAcB+Xw//Ro0fVq1cvtWzZUjfffLOys7MlSffdd58mTJjg9gYBAAAAAEDVuBz+x48fLx8fH+3fv1/+/v7m+JAhQ5SRkeHW5gAAAAAAQNW5fM7/qlWrtHLlSjVq1MhpvEWLFtq3b5/bGgMAAAAAAO7h8p7/wsJCpz3+Zf773//Kbre7pSkAAAAAAOA+Lof/bt266c033zSf22w2lZaWaubMmerZs6dbmwMAAAAAAFXn8mH/M2fOVI8ePbRt2zYVFxdr0qRJ2rFjh44dO6avvvrKEz0CAAAAAIAqcHnPf1RUlL799ltdf/316tOnjwoLCzVo0CD95z//UfPmzT3RIwAAAAAAqAKX9/xLUnh4uKZOneruXgAAAAAAgAdcUvjPy8vTG2+8oV27dslms6l169a69957FRIS4u7+AAAAAABAFbl82P+6devUrFkzvfDCC8rLy9OxY8f0wgsvqFmzZlq3bp1Ly5o3b57atm2roKAgBQUFKTY2VitWrDDnDcNQSkqKIiIi5Ofnpx49emjHjh1OyygqKtK4ceNUv359BQQEaODAgTp48KBTTV5enhITE+VwOORwOJSYmKjjx4871ezfv18DBgxQQECA6tevr6SkJBUXF7v25gAAAAAAUAO5HP7Hjh2rwYMHa8+ePVq6dKmWLl2qX375RUOHDtXYsWNdWlajRo00ffp0bdu2Tdu2bdONN96oW265xQz4M2bM0Jw5czR37lxt3bpV4eHh6tOnj06cOGEuIzk5WcuWLVNaWprWr1+vkydPKj4+XiUlJWZNQkKCMjMzlZGRoYyMDGVmZioxMdGcLykpUVxcnAoLC7V+/XqlpaXpww8/1IQJE1x9ewAAAAAAqHFshmEYrrzAz89PmZmZatWqldP47t271b59e50+fbpKDYWEhGjmzJkaPny4IiIilJycrIcffljSb3v5w8LC9Mwzz2j06NHKz89XgwYN9NZbb2nIkCGSpEOHDikyMlKffPKJ+vXrp127dikqKkqbNm1STEyMJGnTpk2KjY3V999/r1atWmnFihWKj4/XgQMHFBERIUlKS0vTsGHDlJubq6CgoEr1XlBQIIfDofz8/Eq/pro0nZxebmzv9LgqzQEAAAAALq/K5lCX9/xfe+212rVrV7nxXbt2qX379q4uzlRSUqK0tDQVFhYqNjZWe/bsUU5Ojvr27WvW2O12de/eXRs2bJAkbd++XWfOnHGqiYiIUHR0tFmzceNGORwOM/hLUufOneVwOJxqoqOjzeAvSf369VNRUZG2b99+wZ6LiopUUFDg9AAAAAAAoKap1AX/vv32W/PfSUlJevDBB/XTTz+pc+fOkn7bk/7SSy9p+vTpLjfw3XffKTY2Vv/73/9Up04dLVu2TFFRUWYwDwsLc6oPCwvTvn37JEk5OTny9fVVcHBwuZqcnByzJjQ0tNx6Q0NDnWrOX09wcLB8fX3NmoqkpqZy1wMAAAAAQI1XqfDfvn172Ww2nXuGwKRJk8rVJSQkmIffV1arVq2UmZmp48eP68MPP9Q999zjdOFAm83mVG8YRrmx851fU1H9pdScb8qUKXrooYfM5wUFBYqMjLxobwAAAAAAXG6VCv979uzxWAO+vr666qqrJEmdOnXS1q1b9fzzz5vn+efk5Khhw4ZmfW5urrmXPjw8XMXFxcrLy3Pa+5+bm6suXbqYNYcPHy633iNHjjgtZ/PmzU7zeXl5OnPmTLkjAs5lt9tlt9svZbMBAAAAALhsKnXOf5MmTSr9qCrDMFRUVKRmzZopPDxcq1evNueKi4u1bt06M9h37NhRPj4+TjXZ2dnKysoya2JjY5Wfn68tW7aYNZs3b1Z+fr5TTVZWlrKzs82aVatWyW63q2PHjlXeJgAAAAAAqlOl9vyf79dff9VXX32l3NxclZaWOs0lJSVVejl///vfddNNNykyMlInTpxQWlqaPv/8c2VkZMhmsyk5OVnTpk1TixYt1KJFC02bNk3+/v5KSEiQJDkcDo0YMUITJkxQvXr1FBISookTJ6pNmzbq3bu3JKl169bq37+/Ro4cqfnz50uSRo0apfj4ePOOBX379lVUVJQSExM1c+ZMHTt2TBMnTtTIkSNr/FX7AQAAAAD4PS6H/4ULF+r++++Xr6+v6tWrV+68eVfC/+HDh5WYmKjs7Gw5HA61bdtWGRkZ6tOnj6Tfritw+vRpjRkzRnl5eYqJidGqVasUGBhoLuPZZ5+Vt7e3Bg8erNOnT6tXr15atGiRvLy8zJq3335bSUlJ5l0BBg4cqLlz55rzXl5eSk9P15gxY9S1a1f5+fkpISFBs2bNcvXtAQAAAACgxrEZ517FrxIiIyN1//33a8qUKapVy+U7BVpaZe+vWBM0nZxebmzv9LgqzQEAAAAALq/K5lCX0/upU6c0dOhQgj8AAAAAAH8QLif4ESNG6P333/dELwAAAAAAwANcPuc/NTVV8fHxysjIUJs2beTj4+M0P2fOHLc1BwAAAAAAqs7l8D9t2jStXLnSvFL++Rf8AwAAAAAANYvL4X/OnDlasGCBhg0b5oF2AAAAAACAu7l8zr/dblfXrl090QsAAAAAAPAAl8P/gw8+qBdffNETvQAAAAAAAA9w+bD/LVu2aO3atVq+fLmuueaachf8W7p0qduaAwAAAAAAVedy+K9bt64GDRrkiV4AAAAAAIAHuBz+Fy5c6Ik+AAAAAACAh7h8zj8AAAAAAPhjcXnPf7NmzWSz2S44/8svv1SpIQAAAAAA4F4uh//k5GSn52fOnNF//vMfZWRk6G9/+5u7+gIAAAAAAG7icvh/8MEHKxx/6aWXtG3btio3BAAAAAAA3Mtt5/zfdNNN+vDDD921OAAAAAAA4CZuC/8ffPCBQkJC3LU4AAAAAADgJi4f9t+hQwenC/4ZhqGcnBwdOXJEL7/8slubAwAAAAAAVedy+P/zn//s9LxWrVpq0KCBevTooauvvtpdfQEAAAAAADdxOfw/8cQTnugDAAAAAAB4iNvO+QcAAAAAADVTpff816pVy+lc/4rYbDadPXu2yk0BAAAAAAD3qXT4X7Zs2QXnNmzYoBdffFGGYbilKQAAAAAA4D6VDv+33HJLubHvv/9eU6ZM0ccff6w777xT//jHP9zaHAAAAAAAqLpLOuf/0KFDGjlypNq2bauzZ88qMzNTixcvVuPGjd3dHwAAAAAAqCKXwn9+fr4efvhhXXXVVdqxY4c+/fRTffzxx4qOjvZUfwAAAAAAoIoqfdj/jBkz9Mwzzyg8PFzvvvtuhacBAAAAAACAmqfS4X/y5Mny8/PTVVddpcWLF2vx4sUV1i1dutRtzQEAAAAAgKqrdPi/++67f/dWfwAAAAAAoOapdPhftGiRB9uAFTSdnF5ubO/0uGroBAAAAABwrku62j8AAAAAAPjjIPwDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4qo1/Kempuq6665TYGCgQkND9ec//1m7d+92qjEMQykpKYqIiJCfn5969OihHTt2ONUUFRVp3Lhxql+/vgICAjRw4EAdPHjQqSYvL0+JiYlyOBxyOBxKTEzU8ePHnWr279+vAQMGKCAgQPXr11dSUpKKi4s9su0AAAAAAFwu1Rr+161bp7Fjx2rTpk1avXq1zp49q759+6qwsNCsmTFjhubMmaO5c+dq69atCg8PV58+fXTixAmzJjk5WcuWLVNaWprWr1+vkydPKj4+XiUlJWZNQkKCMjMzlZGRoYyMDGVmZioxMdGcLykpUVxcnAoLC7V+/XqlpaXpww8/1IQJEy7PmwEAAAAAgId4V+fKMzIynJ4vXLhQoaGh2r59u7p16ybDMPTcc8/pkUce0aBBgyRJixcvVlhYmN555x2NHj1a+fn5euONN/TWW2+pd+/ekqQlS5YoMjJSa9asUb9+/bRr1y5lZGRo06ZNiomJkSS99tprio2N1e7du9WqVSutWrVKO3fu1IEDBxQRESFJmj17toYNG6ann35aQUFBl/GdAQAAAADAfWrUOf/5+fmSpJCQEEnSnj17lJOTo759+5o1drtd3bt314YNGyRJ27dv15kzZ5xqIiIiFB0dbdZs3LhRDofDDP6S1LlzZzkcDqea6OhoM/hLUr9+/VRUVKTt27dX2G9RUZEKCgqcHgAAAAAA1DQ1JvwbhqGHHnpIf/rTnxQdHS1JysnJkSSFhYU51YaFhZlzOTk58vX1VXBw8EVrQkNDy60zNDTUqeb89QQHB8vX19esOV9qaqp5DQGHw6HIyEhXNxsAAAAAAI+rMeH/gQce0Lfffqt333233JzNZnN6bhhGubHznV9TUf2l1JxrypQpys/PNx8HDhy4aE8AAAAAAFSHGhH+x40bp3//+9/67LPP1KhRI3M8PDxcksrtec/NzTX30oeHh6u4uFh5eXkXrTl8+HC59R45csSp5vz15OXl6cyZM+WOCChjt9sVFBTk9AAAAAAAoKap1vBvGIYeeOABLV26VGvXrlWzZs2c5ps1a6bw8HCtXr3aHCsuLta6devUpUsXSVLHjh3l4+PjVJOdna2srCyzJjY2Vvn5+dqyZYtZs3nzZuXn5zvVZGVlKTs726xZtWqV7Ha7Onbs6P6NBwAAAADgMqnWq/2PHTtW77zzjv71r38pMDDQ3PPucDjk5+cnm82m5ORkTZs2TS1atFCLFi00bdo0+fv7KyEhwawdMWKEJkyYoHr16ikkJEQTJ05UmzZtzKv/t27dWv3799fIkSM1f/58SdKoUaMUHx+vVq1aSZL69u2rqKgoJSYmaubMmTp27JgmTpyokSNHskcfAAAAAPCHVq3hf968eZKkHj16OI0vXLhQw4YNkyRNmjRJp0+f1pgxY5SXl6eYmBitWrVKgYGBZv2zzz4rb29vDR48WKdPn1avXr20aNEieXl5mTVvv/22kpKSzLsCDBw4UHPnzjXnvby8lJ6erjFjxqhr167y8/NTQkKCZs2a5aGtBwAAAADg8qjW8G8Yxu/W2Gw2paSkKCUl5YI1tWvX1osvvqgXX3zxgjUhISFasmTJRdfVuHFjLV++/Hd7AgAAAADgj6RGXPAPAAAAAAB4DuEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4ryruwFYX9PJ6RWO750ed5k7AQAAAID/m9jzDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOMI/AAAAAAAWR/gHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGEfwAAAAAALI7wDwAAAACAxRH+AQAAAACwOO/qbgD/tzWdnF7h+N7pcZe5EwAAAACwLvb8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAAAAAAWBzhHwAAAAAAi6vW8P/FF19owIABioiIkM1m00cffeQ0bxiGUlJSFBERIT8/P/Xo0UM7duxwqikqKtK4ceNUv359BQQEaODAgTp48KBTTV5enhITE+VwOORwOJSYmKjjx4871ezfv18DBgxQQECA6tevr6SkJBUXF3tiswEAAAAAuKyqNfwXFhaqXbt2mjt3boXzM2bM0Jw5czR37lxt3bpV4eHh6tOnj06cOGHWJCcna9myZUpLS9P69et18uRJxcfHq6SkxKxJSEhQZmamMjIylJGRoczMTCUmJprzJSUliouLU2FhodavX6+0tDR9+OGHmjBhguc2HgAAAACAy8S7Old+00036aabbqpwzjAMPffcc3rkkUc0aNAgSdLixYsVFhamd955R6NHj1Z+fr7eeOMNvfXWW+rdu7ckacmSJYqMjNSaNWvUr18/7dq1SxkZGdq0aZNiYmIkSa+99ppiY2O1e/dutWrVSqtWrdLOnTt14MABRURESJJmz56tYcOG6emnn1ZQUNBleDcAAAAAAPCMGnvO/549e5STk6O+ffuaY3a7Xd27d9eGDRskSdu3b9eZM2ecaiIiIhQdHW3WbNy4UQ6Hwwz+ktS5c2c5HA6nmujoaDP4S1K/fv1UVFSk7du3X7DHoqIiFRQUOD0AAAAAAKhpamz4z8nJkSSFhYU5jYeFhZlzOTk58vX1VXBw8EVrQkNDyy0/NDTUqeb89QQHB8vX19esqUhqaqp5HQGHw6HIyEgXtxIAAAAAAM+rseG/jM1mc3puGEa5sfOdX1NR/aXUnG/KlCnKz883HwcOHLhoXwAAAAAAVIcaG/7Dw8Mlqdye99zcXHMvfXh4uIqLi5WXl3fRmsOHD5db/pEjR5xqzl9PXl6ezpw5U+6IgHPZ7XYFBQU5PQAAAAAAqGlqbPhv1qyZwsPDtXr1anOsuLhY69atU5cuXSRJHTt2lI+Pj1NNdna2srKyzJrY2Fjl5+dry5YtZs3mzZuVn5/vVJOVlaXs7GyzZtWqVbLb7erYsaNHtxMAAAAAAE+r1qv9nzx5Uj/99JP5fM+ePcrMzFRISIgaN26s5ORkTZs2TS1atFCLFi00bdo0+fv7KyEhQZLkcDg0YsQITZgwQfXq1VNISIgmTpyoNm3amFf/b926tfr376+RI0dq/vz5kqRRo0YpPj5erVq1kiT17dtXUVFRSkxM1MyZM3Xs2DFNnDhRI0eOZG8+AAAAAOAPr1rD/7Zt29SzZ0/z+UMPPSRJuueee7Ro0SJNmjRJp0+f1pgxY5SXl6eYmBitWrVKgYGB5mueffZZeXt7a/DgwTp9+rR69eqlRYsWycvLy6x5++23lZSUZN4VYODAgZo7d6457+XlpfT0dI0ZM0Zdu3aVn5+fEhISNGvWLE+/BQAAAAAAeFy1hv8ePXrIMIwLzttsNqWkpCglJeWCNbVr19aLL76oF1988YI1ISEhWrJkyUV7ady4sZYvX/67PQMAAAAA8EdTY8/5BwAAAAAA7kH4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFudd3Q0AF9J0cnqF43unx13mTgAAAADgj409/wAAAAAAWBzhHwAAAAAAiyP8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAAAAAAWBzhHwAAAAAAiyP8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAAAAAAWBzhHwAAAAAAi/Ou7gaAS9F0cnqF43unx13mTgAAAACg5mPPPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMUR/gEAAAAAsDjv6m4AcLemk9MrHN87Pe4ydwIAAAAANQN7/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACLI/wDAAAAAGBxhH8AAAAAACyO8A8AAAAAgMV5V3cDwOXUdHJ6ubG90+OqoRMAAAAAuHzY8w8AAAAAgMUR/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHOEfAAAAAACL41Z/wP/DbQABAAAAWBV7/gEAAAAAsDjCPwAAAAAAFkf4BwAAAADA4gj/AAAAAABYHBf8AyqBiwECAAAA+CNjzz8AAAAAABZH+AcAAAAAwOI47B+oIk4JAAAAAFDTsecfAAAAAACLY88/4CEVHREgcVQAAAAAgMuPPf8AAAAAAFgc4R8AAAAAAIvjsH+gGnBKAAAAAIDLifAP1DD8YQAAAACAuxH+z/Pyyy9r5syZys7O1jXXXKPnnntON9xwQ3W3BUjiDwMAAAAALg3h/xzvvfeekpOT9fLLL6tr166aP3++brrpJu3cuVONGzeu7vaAi6roDwNlfxS41DkAAAAA1kD4P8ecOXM0YsQI3XfffZKk5557TitXrtS8efOUmppazd0Bl9+l/NGAoxMAAACAmofw//8UFxdr+/btmjx5stN43759tWHDhgpfU1RUpKKiIvN5fn6+JKmgoMBzjbpJadGpcmNlfbt7rqLxmjRn5e321LZdbO5iPUY/sbLCuayp/dw6lzW1nyS5fc4T/QMAAABVUfb/54ZhXLTOZvxexf8Rhw4d0hVXXKGvvvpKXbp0McenTZumxYsXa/fu3eVek5KSoqlTp17ONgEAAAAAKOfAgQNq1KjRBefZ838em83m9NwwjHJjZaZMmaKHHnrIfF5aWqpjx46pXr16F3xNTVNQUKDIyEgdOHBAQUFBlZq7lNdYYa6m9MG2sd1s9//NbatJ230xNWW7L7VHT7jc67ucfbj7M/DEd/JSWflzA3Bhf8SfOcMwdOLECUVERFy0jvD//9SvX19eXl7KyclxGs/NzVVYWFiFr7Hb7bLb7U5jdevW9VSLHhUUFHTBL/eF5i7lNVaYqyl9eGKupvRxuedqSh+Xe66m9OGJuZrSx+Weu9x9XExN2e5L7dETLvf6Lmcf7v4MPPGdvFRW/twAXNgf7WfO4XD8bk2ty9DHH4Kvr686duyo1atXO42vXr3a6TQAAAAAAAD+aNjzf46HHnpIiYmJ6tSpk2JjY/Xqq69q//79uv/++6u7NQAAAAAALhnh/xxDhgzR0aNH9eSTTyo7O1vR0dH65JNP1KRJk+puzWPsdrueeOKJcqcvXGzuUl5jhbma0gfbxnZXda6m9MG2/XG3+2JqynZfao+ecLnXdzn7cPdn4Inv5KWy8ucG4MKs/DPH1f4BAAAAALA4zvkHAAAAAMDiCP8AAAAAAFgc4R8AAAAAAIsj/AMAAAAAYHGE//+jvvjiCw0YMEARERGy2Wz66KOPJEmpqam67rrrFBgYqNDQUP35z3/W7t27JUnz5s1T27ZtFRQUpKCgIMXGxmrFihUVLj81NVU2m03JyclKSUmRzWZzeoSHh5u1v/76q+666y7Vq1dP/v7+at++vbZv366mTZuWe53NZtNf//pXPfroo2rWrJn8/Px05ZVX6sknn1Rpaakk6cSJE0pOTlZYWJi8vLzk6+vrtI3nbn9gYKBsNpt8fX3Vo0cP7dixQ1988YU6deqk2rVrm+vMzMyUJK1du1ZXXXWVfHx8ZLPZFBISorvvvluHDh3SF198oVatWsnb21s2m00BAQHq3bu3Nm/eXO797tevn2w2m5577jl98cUXioyMLLednTt3Nl8XGhoqm80mf39/BQYGKioqSr17967w/bHZbLr66qsVEBBgblvr1q01b948paamqn379vLx8ZGXl5e8vLx0ww036Mcff3T67AMCAlS7dm3Z7XZdeeWVio6OVmBgoBwOh0JDQxUcHCybzaZx48apU6dO8vX1lbe3t7y9vRUaGqq7775bU6ZM0XXXXSe73W7OBQUFqXfv3hozZky579mQIUNks9kUHx+v6667znyPz31ERkaar6tXr57Cw8NVp04dBQYGKjIyUu3atbvgexIZGanAwED5+/vLz89PdrtdrVu31h133KG2bdsqMDBQvr6+8vX1ld1uV1RUlK6++moFBQXJbrebcz169NBjjz2mJk2ayNvbW7Vq1ZLNZtPcuXMlSXPnzlVoaKi8vLzM979Xr146dOiQ5s2bZ34vbTabvL291b59e23evLncz1dYWJj5HZk3b55CQkIq/I6Uva5OnTry8fGRt7e3/Pz81LlzZz399NMXfD8aNmyooKAgc7vO/Z4cPnxYw4YNU0REhPk5DBs2zPz5MQxDKSkpCgoKks1mU6NGjbRjxw5J0tKlS9WvXz/z+3fnnXdKks6cOaOHH35Ybdq0MX8mW7durUOHDkmSUlJSdPXVV5tzjRs31ubNm8v9TmnTpo35vgwbNqzC96TMrl271Lp1a/Nz6Ny5s/bv33/B92TmzJk6efKkHnjgATkcDvNnPC4ursL6/v37a9y4ceXGfX19tWPHjgp/99WvX1+S9Nhjj5Wb8/Pz06FDhyp8nd1u1+bNmyucK3s/LjTXqFGjcmO1atVSYGBghXMVvR+NGjWSn5+f+R252O/uc+f8/f3N9XXs2FE7duzQr7/+qu7du5uftc1m0zvvvCNJ2rt3r6655hrz96iPj4/i4uJ06NAh/frrr2rbtq358+Pl5aXrr7/e6XtSZvTo0bLZbEpJSblgj+d+TwYOHCiHw6HAwEDze+KqC/03a+zYsU4/NxEREfLz8zP/m+Nuv9fH7/3cXMoyL/Q9OXv27AX/e33uXNnvLh8fH3Xr1k2jR49Ws2bNZLfb5e/vb36PMjMznX6XBAQEKCIiwvzv8KW4WI/nctf35GLK/v+lSZMm8vPzU5cuXbR161Zzvuz3a/369c33A0DlXCj7SKr075XRo0erefPm8vPzU4MGDXTLLbfo+++/v8xbUjWE//+jCgsL1a5dOzOwlFm3bp3Gjh2rTZs2afXq1Tp79qz69u2rwsJCNWrUSNOnT9e2bdu0bds23XjjjbrlllvK/c/L1q1b9eqrr6pt27bm2DXXXKPs7Gzz8d1330mS8vLy1LVrV/n4+GjFihXauXOnZs+erbp162rr1q1Or1m9erWk335AX3nlFc2dO1e7du3SjBkzNHPmTL344ouSpPvuu0+rV6/WhAkTNHr0aN16662SpKNHjzptf2Fhoc6ePStJmjlzpsLDw9WnTx8dOXJEV1xxhf785z+Xe9+OHTumkpISJSUlSZIefvhh/fDDDxo4cKAKCwvVunVrPfLII5J+CytNmzZV3759dejQIaf3+4cfflBERITZS3BwsNq3by9JWrBggbKzs/XJJ5+osLBQjRs31unTpyVJTz31lL755hsNGTJEbdq00euvv+70mgULFkiS+T/20m9hdPz48Ro3bpzef/99nThxQm3bttWbb76pG264QZmZmbrxxhu1du1ajR07ViNHjpQkRUdHq169ejp16pQOHjyoTz/9VJMmTVJwcLBq1frtV8fXX3+t4cOHq2PHjpo2bZr+9Kc/ycvLS7t27dLLL7+ssWPH6h//+IdeeukldevWTXXq1NEVV1yhV199VXfffbf5PTt48KCWLVum8PBw/fzzzxo7dqxuvvlmdenSRb1799YVV1yhn3/+WS1bttTYsWP1z3/+U2fPnlVAQIACAwO1ceNGhYaGasSIEfr888+1Zs0a83VlQWXcuHHq16+f6tWrp/bt26t+/foaM2aM/vnPf+qWW25R8+bN1bZtW915550yDEPBwcE6duyY7r33Xvn4+GjAgAEyDEN+fn566aWXNHDgQI0ZM0ZPPvmkJGn8+PHasWOH6tevryuuuEKzZ8/WihUrlJCQoM8++0x9+vRRo0aNdM899+iNN97QmjVrNHz4cH333Xfq1auXAgMDzZ+v1NRU8zuXnZ2tRo0a6dprr9UNN9yg9evXKykpST4+PpozZ44aNWqkBx98UN7e3rrnnnt0zz33qKSkRHfffbcaN26sJUuWaP369ebrvLy8zO9S//79FR4ersGDB0v67XanDzzwgLp3765ffvlFqampCgsLU0hIiJYuXarCwkJJMn/m/Pz81LJlS/n7+6tPnz46ceKECgsL1bRpU/n5+Tn97Jw6dUpff/217rjjDoWGhuqqq67S8ePHNXDgQElSy5YtNW7cOIWFhally5YKCgpS3759deTIEfN3StOmTZWTk2P+7EhSbGysIiMjFRUVpfvuu0+ffPKJJOnnn39W586dlZ2drRYtWujOO+/UY489ptq1ays7O1srVqwwX1f2h7TbbrtN48eP10cffSR/f39dffXV6tChg1l77bXXKiYmRp988ok2bNigJk2a6M0331RoaKgCAgL0+uuv67PPPtPNN9+sPn36qKioSFdccYUmTpyoWbNmSZL++c9/mr/HAgICNH/+fH355Zdavny5oqKizPejUaNGeu+997Rp0yZ9/vnnuv32283fxWW/TxcsWKCoqCiFhYWZ70fdunXVs2dPffPNN/rmm2/03Xff6c4779Q111yjjRs3qm7duvrrX/+qNWvW6JtvvlG3bt101VVXmfXffPONnnvuOaf3IyMjQ0uWLNGuXbvM3yVvv/32BX93l/1e//7772Wz2fT/tXfm8TVd6///nCE5J7OIzBMhpiAhMUQiSUsEEVpFEERNr5iiKG65aiaGxNwYrqL0Sl1CYwpCaFFCGwRBzHOrqBpjyOf3h9/ePTsnJ4Zqfa+73q/XfiV7PXut/exnP+tZe+211j6pqalYuHAhXF1d0bhxYzRs2BAk0a1bN9nXbWxscPv2bYSFheH27dsYN24csrKykJKSgitXrqBFixYICQmBvb09Zs2ahV27dsk+IfmJxLp167B//364uLhg9uzZJeoocebMGYSGhqJq1arYuXMnDh8+LPvJq2KqzWrXrp1cb1JSUjB37lwcOHBAbnPu3r37yuf6M3oAQLNmzRTHSPXmdcs05SfdunUz2V5PmTIF8+fPR0REBHQ6HQYNGgRzc3OcPn0aixYtwtSpUzF58mTExMQoOuJSLBk1ahR++uknpKeny+3w6yDpYeqZAnizflIa0vPL8uXLkZeXh6ZNm6JJ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",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the number of threads is 246588\n",
+ "the number of messages is 848790\n",
+ " the average number of messages per thread is 3.4421383035670834\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Get the count of each Thread ID\n",
+ "thread_counts = data_sample['Thread ID'].value_counts()\n",
+ "# Now, get the frequency of each count (i.e., how many threads have count=1, count=2, etc.)\n",
+ "count_frequency = thread_counts.value_counts().sort_index()\n",
+ "\n",
+ "# Plot\n",
+ "plt.figure(figsize=(12,10))\n",
+ "plt.bar(count_frequency.index, count_frequency.values)\n",
+ "plt.xlabel('Number of Messages in Thread (Count)')\n",
+ "plt.ylabel('Number of Threads (Frequency)')\n",
+ "plt.title('Distribution of Thread Message Counts')\n",
+ "plt.xticks(count_frequency.index) # Show all counts on x-axis if not too many\n",
+ "plt.show()\n",
+ "print(f\"the number of threads is {len(thread_counts)}\")\n",
+ "print(f\"the number of messages is {thread_counts.sum()}\")\n",
+ "print(f\" the average number of messages per thread is {thread_counts.mean()}\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Focus on valid question-answer pair"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 157,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def remove_duplicate_messages(threads_to_keep):\n",
+ " # first round of duplicate removal\n",
+ " df = data_sample_sub_cols[data_sample_sub_cols['Thread ID'].isin(threads_to_keep)].reset_index().sort_values(['Thread ID', 'index'], ascending=False).drop_duplicates()\n",
+ " \n",
+ " # Create a boolean column: True if response exists, False otherwise\n",
+ " df['has_response'] = df[\"Actual Response Sent to Patient\"].notnull()\n",
+ "\n",
+ " # Sort so that for each Patient Message, rows with a response come first, then by index (descending or ascending as you prefer)\n",
+ " df = df.sort_values(['Patient Message', 'has_response', 'index'], ascending=[True, False, False])\n",
+ "\n",
+ " # Drop duplicates based on Patient Message, keeping the one with a response if it exists\n",
+ " df_no_dupes = df.drop_duplicates(subset=[\"Patient Message\"], keep='first').sort_values(['Thread ID', 'index'], ascending=False)\n",
+ "\n",
+ " # Optionally, drop the helper column\n",
+ " df_no_dupes = df_no_dupes.drop(columns=['has_response'])\n",
+ " return df_no_dupes\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/8AAANVCAYAAAAuhU7eAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAflRJREFUeJzs3Xd4FOX+///XEtIJIbSECIQivQtKU0BpKk1QAVGUIuABQRCkHEWKSgcbB8RCURQ8RwELGohSFOkIYgAB6UgoQggQMIHk/v3hN/tjSUJ2kl0S5/N8XFeui8zc8973bO4M+8rMzjqMMUYAAAAAAMC28uV2AwAAAAAAwLsI/wAAAAAA2BzhHwAAAAAAmyP8AwAAAABgc4R/AAAAAABsjvAPAAAAAIDNEf4BAAAAALA5wj8AAAAAADZH+AcAAAAAwOYI/wAASdL8+fPlcDicXwEBAYqIiNC9996riRMn6vTp0+m2GTt2rBwOh6XHuXz5ssaOHas1a9ZY2i6jxypTpozatm1rqU5WPvnkE73xxhsZrnM4HBo7dqxHH8/Tvv/+e9WrV0/BwcFyOBxatmxZujHNmjVz+Vln9pW2rw6HQ88+++yt3ZFscndO9ujRQw6HQyEhIbp06VK69UeOHFG+fPn+ET/z3HDw4EE9++yzqlixogIDAxUUFKRq1arppZde0h9//JHb7UmSvvnmG352AHCd/LndAAAgb5k3b54qV66sq1ev6vTp01q3bp0mT56sadOm6dNPP1WLFi2cY59++mndf//9lupfvnxZ48aNk/R3CHVXdh4rOz755BPFxsZq8ODB6dZt2LBBJUuW9HoP2WWMUefOnVWxYkV9+eWXCg4OVqVKldKNmzVrli5cuOD8fvny5Xr11VedP/s0eXlfPcHX11fXrl3Tp59+qt69e7usmzdvnkJCQlyeJ/zt66+/VteuXVW0aFE9++yzqlOnjhwOh3799VfNnTtXy5cv1/bt23O7TX3zzTf6z3/+wx8AAOD/IfwDAFxUr15d9erVc37/8MMPa8iQIbr77rvVqVMn7d+/X+Hh4ZL+DofeDoiXL19WUFDQLXmsrDRo0CBXHz8rJ06c0Llz59SxY0c1b94803FVq1Z1+f63336TlP5n7wlpP7+8yM/PT+3atdPcuXNdwr8xRvPnz1eXLl303nvv5WKHec+hQ4fUtWtXVaxYUatXr1ZoaKhz3X333adBgwZp6dKludghACAzXPYPAMhS6dKlNX36dF28eFFz5sxxLs/oEutVq1apWbNmKlKkiAIDA1W6dGk9/PDDunz5sg4fPqxixYpJksaNG+e8vLxHjx4u9X7++Wc98sgjCgsLU/ny5TN9rDRLly5VzZo1FRAQoHLlyumtt95yWZ/2lobDhw+7LF+zZo0cDofzLQjNmjXT8uXLdeTIEZfL39NkdAl4bGysOnTooLCwMAUEBKh27dpasGBBho+zaNEivfjii4qMjFTBggXVokUL7d27N/Mn/jrr1q1T8+bNFRISoqCgIDVq1EjLly93rh87dqzzjyMjRoyQw+FQmTJl3Krtro8++khVqlRRUFCQatWqpa+//tpl/c1+fsYYzZo1S7Vr11ZgYKDCwsL0yCOP6ODBgy41YmJi1KFDB5UsWVIBAQG6/fbb1a9fP/3555/p+lm+fLlq164tf39/lS1bVtOmTbO8T7169dL69etdfg7fffedjhw5op49e2a4zcmTJ9WvXz+VLFlSfn5+Klu2rMaNG6dr1665jJs9e7Zq1aqlAgUKKCQkRJUrV9a///1v5/rLly9r2LBhKlu2rAICAlS4cGHVq1dPixYtco7ZunWrunbtqjJlyigwMFBlypTRY489piNHjqTra926dWrYsKECAgJ02223afTo0Xr//fcznPuffvqpGjZsqODgYBUoUECtW7d262z9jBkzlJiYqFmzZrkE/zQOh0OdOnVyWTZ37lzVqlXLuY8dO3bUnj17XMY0a9YswyuBevTo4TKPDx8+LIfDoWnTpmnGjBkqW7asChQooIYNG2rjxo0u2/3nP/9x9pT2lfY8/O9//1P9+vUVGhqqoKAglStXTr169cpy/wHgn4wz/wAAtzz44IPy8fHRDz/8kOmYw4cPq02bNrrnnns0d+5cFSpUSH/88Yeio6OVnJysEiVKKDo6Wvfff7969+6tp59+WpKcfxBI06lTJ3Xt2lXPPPOMEhMTb9rXjh07NHjwYI0dO1YRERH6+OOP9dxzzyk5OVnDhg2ztI+zZs1S3759deDAAbfOXu7du1eNGjVS8eLF9dZbb6lIkSJauHChevTooVOnTmn48OEu4//973+rcePGev/993XhwgWNGDFC7dq10549e+Tj45Pp46xdu1YtW7ZUzZo19cEHH8jf31+zZs1Su3bttGjRInXp0kVPP/20atWqpU6dOmngwIHq1q2b/P39Le3/zSxfvlxbtmzR+PHjVaBAAU2ZMkUdO3bU3r17Va5cOZexGf38+vXrp/nz52vQoEGaPHmyzp07p/Hjx6tRo0b65ZdfnFeTHDhwQA0bNtTTTz+t0NBQHT58WDNmzNDdd9+tX3/9Vb6+vpL+vrdBhw4d1LBhQy1evFgpKSmaMmWKTp06ZWm/WrRooaioKM2dO1eTJ0+WJH3wwQdq0qSJKlSokG78yZMndddddylfvnx6+eWXVb58eW3YsEGvvvqqDh8+rHnz5kmSFi9erP79+2vgwIGaNm2a8uXLp99//127d+921nr++ef10Ucf6dVXX1WdOnWUmJio2NhYnT171jnm8OHDqlSpkrp27arChQsrLi5Os2fP1p133qndu3eraNGikqSdO3eqZcuWqlixohYsWKCgoCC98847WrhwYbp9mDBhgl566SX17NlTL730kpKTkzV16lTdc8892rx5c7orQ663cuVKhYeHu30VzMSJE/Xvf/9bjz32mCZOnKizZ89q7NixatiwobZs2ZLhc+yO//znP6pcubLz/hyjR4/Wgw8+qEOHDik0NFSjR49WYmKiPvvsM23YsMG5XYkSJbRhwwZ16dJFXbp00dixYxUQEKAjR45o1apV2eoFAP4xDAAAxph58+YZSWbLli2ZjgkPDzdVqlRxfj9mzBhz/X8ln332mZFkduzYkWmNM2fOGElmzJgx6dal1Xv55ZczXXe9qKgo43A40j1ey5YtTcGCBU1iYqLLvh06dMhl3OrVq40ks3r1aueyNm3amKioqAx7v7Hvrl27Gn9/f3P06FGXcQ888IAJCgoy58+fd3mcBx980GXcf//7XyPJbNiwIcPHS9OgQQNTvHhxc/HiReeya9eumerVq5uSJUua1NRUY4wxhw4dMpLM1KlTb1rvRln97CWZ8PBwc+HCBeeykydPmnz58pmJEyc6l2X289uwYYORZKZPn+6y/NixYyYwMNAMHz48w8dNTU01V69eNUeOHDGSzBdffOFcV79+fRMZGWmuXLniXHbhwgVTuHDhdPMkI0899ZQJDg529h0REWGuXr1qzp49a/z9/c38+fMznKv9+vUzBQoUMEeOHHGpN23aNCPJ7Nq1yxhjzLPPPmsKFSp00x6qV69uHnrooSx7vd61a9fMpUuXTHBwsHnzzTedyx999FETHBxszpw541yWkpJiqlat6jL3jx49avLnz28GDhzoUvfixYsmIiLCdO7c+aaPHxAQYBo0aOBWr/Hx8SYwMDDdvD969Kjx9/c33bp1cy5r2rSpadq0aboaTz31lMvvY9ocr1Gjhrl27Zpz+ebNm40ks2jRIueyAQMGZDgX0n5Wab+fAPB/BZf9AwDcZoy56fratWvLz89Pffv21YIFC9Jd0u2uhx9+2O2x1apVU61atVyWdevWTRcuXNDPP/+crcd316pVq9S8eXOVKlXKZXmPHj10+fJllzOOktS+fXuX72vWrClJGV7CnSYxMVGbNm3SI488ogIFCjiX+/j4qHv37jp+/Ljbbx3IiXvvvVchISHO78PDw1W8ePEMe7/x5/f111/L4XDoiSee0LVr15xfERERqlWrlssnP5w+fVrPPPOMSpUqpfz588vX11dRUVGS5LxUPDExUVu2bFGnTp0UEBDg3DYkJETt2rWzvG89e/bUqVOn9O233+rjjz+Wn5+fHn300QzHfv3117r33nsVGRnpsi8PPPCApL+v0pCku+66S+fPn9djjz2mL774IsO3Ldx111369ttvNXLkSK1Zs0ZXrlxJN+bSpUsaMWKEbr/9duXPn1/58+dXgQIFlJiY6HLp/Nq1a3Xfffc5rwSQpHz58qlz584u9VasWKFr167pySefdOk/ICBATZs2tfwpHDezYcMGXblyxfm2njSlSpXSfffdp++//z7btdu0aeNytYw7v0tp7rzzTklS586d9d///jfPfDoBAHgb4R8A4JbExESdPXtWkZGRmY4pX768vvvuOxUvXlwDBgxQ+fLlVb58eb355puWHqtEiRJuj42IiMh02fWXT3vD2bNnM+w17Tm68fGLFCni8n3aZfkZhb408fHxMsZYehxvuLF36e/+M+r9xl5PnTolY4zCw8Pl6+vr8rVx40ZnME5NTVWrVq20ZMkSDR8+XN9//702b97sfC932mPFx8crNTX1pj97K6KiotS8eXPNnTtXc+fOVdeuXTO9SeGpU6f01VdfpduPatWqSZJzX7p37665c+fqyJEjevjhh1W8eHHVr19fMTExzlpvvfWWRowYoWXLlunee+9V4cKF9dBDD2n//v3OMd26ddPMmTP19NNPa8WKFdq8ebO2bNmiYsWKuTz3Z8+edb514no3Lkt7W8Sdd96Zbh8+/fTTDP9Icb3SpUvr0KFDNx1zfU9Sxr/PkZGROZq32fldStOkSRMtW7bM+UeQkiVLqnr16i73WgAAO+I9/wAAtyxfvlwpKSlZfjzfPffco3vuuUcpKSnaunWr3n77bQ0ePFjh4eHq2rWrW4/lzue0pzl58mSmy9ICQtrZ4aSkJJdxWQWdrBQpUkRxcXHplp84cUKSXM7CZldYWJjy5cvn9cfxpBt/fkWLFpXD4dCPP/6Y4X0I0pbFxsbql19+0fz58/XUU0851//+++8u48PCwuRwOG76s7eqV69eeuKJJ5SamqrZs2dnOq5o0aKqWbOmXnvttQzXX//HsZ49e6pnz55KTEzUDz/8oDFjxqht27bat2+foqKiFBwcrHHjxmncuHHOKw9Gjhypdu3a6bffflNCQoK+/vprjRkzRiNHjnTWTUpK0rlz51wet0iRIhne7+DG5yNtrnz22WfOKyqsaN26td5++21t3Lgxy/f9p/3+ZTZ3r5+3AQEBSkhISDcup7+jmenQoYM6dOigpKQkbdy4URMnTlS3bt1UpkwZNWzY0CuPCQC5jTP/AIAsHT16VMOGDVNoaKj69evn1jY+Pj6qX7++847baZfgWzlD545du3bpl19+cVn2ySefKCQkRHfccYckOe8WvnPnTpdxX375Zbp6mZ3Nzkjz5s21atUqZwhP8+GHHyooKMgjHw0YHBys+vXra8mSJS59paamauHChSpZsqQqVqyY48fxprZt28oYoz/++EP16tVL91WjRg1J//8fDW78A8H1nzAh/f2c3HXXXVqyZIn++usv5/KLFy/qq6++ylaPHTt2VMeOHdWrV6+b/tzatm2r2NhYlS9fPsN9yejKmODgYD3wwAN68cUXlZycrF27dqUbEx4erh49euixxx7T3r17dfnyZTkcDhlj0j0f77//vlJSUlyWNW3aVKtWrXIJy6mpqfrf//7nMq5169bKnz+/Dhw4kGH/WX3U45AhQxQcHKz+/ftnGNaNMc6bZTZs2FCBgYHpbjp4/Phx51tm0pQpU0b79u1z+QPd2bNntX79+pv2czPuHGv8/f3VtGlT580e3fnEAwD4p+LMPwDARWxsrPN9wKdPn9aPP/6oefPmycfHR0uXLk13Z/7rvfPOO1q1apXatGmj0qVL66+//tLcuXMl/X1Xdenv92VHRUXpiy++UPPmzVW4cGEVLVo02x9LFxkZqfbt22vs2LEqUaKEFi5cqJiYGE2ePNl56fadd96pSpUqadiwYbp27ZrCwsK0dOlSrVu3Ll29GjVqaMmSJZo9e7bq1q2rfPnyZRqIxowZ43wP+Msvv6zChQvr448/1vLlyzVlypQMPwotOyZOnKiWLVvq3nvv1bBhw+Tn56dZs2YpNjZWixYtsnSlRG5o3Lix+vbtq549e2rr1q1q0qSJgoODFRcXp3Xr1qlGjRr617/+pcqVK6t8+fIaOXKkjDEqXLiwvvrqK5dL5dO88soruv/++9WyZUsNHTpUKSkpmjx5soKDg9OdFXdHQECAPvvssyzHjR8/XjExMWrUqJEGDRqkSpUq6a+//tLhw4f1zTff6J133lHJkiXVp08fBQYGqnHjxipRooROnjypiRMnKjQ01Pme8/r166tt27aqWbOmwsLCtGfPHn300Udq2LChc+42adJEU6dOdf6OrF27Vh988IEKFSrk0teLL76or776Ss2bN9eLL76owMBAvfPOO85PW8iX7+/zPWXKlNH48eP14osv6uDBg7r//vsVFhamU6dOafPmzc6rETJTtmxZLV68WF26dFHt2rX17LPPqk6dOpKk3bt3a+7cuTLGqGPHjipUqJBGjx6tf//733ryySf12GOP6ezZsxo3bpwCAgI0ZswYZ93u3btrzpw5euKJJ9SnTx+dPXtWU6ZMUcGCBd3/Id4g7Y9KkydP1gMPPCAfHx/VrFlTr776qo4fP67mzZurZMmSOn/+vN588035+vqqadOm2X48AMjzcu9egwCAvCTtju9pX35+fqZ48eKmadOmZsKECeb06dPptrnxDvwbNmwwHTt2NFFRUcbf398UKVLENG3a1Hz55Zcu23333XemTp06xt/f30gyTz31lEu96+9YntljGfP33f7btGljPvvsM1OtWjXj5+dnypQpY2bMmJFu+3379plWrVqZggULmmLFipmBAwea5cuXp7vb/7lz58wjjzxiChUqZBwOh8tjKoNPKfj1119Nu3btTGhoqPHz8zO1atUy8+bNcxmTdrf///3vfy7L0+5cfuP4jPz444/mvvvuM8HBwSYwMNA0aNDAfPXVVxnW88bd/gcMGJBueVRUlPNnZ8zNf37GGDN37lxTv3595z6UL1/e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Tk6xP3m7F/bHu3XsJK88J3mlj5wyxujixYuKjIy86TjC//9TtGhR+fj46OTJky7LT58+rfDw8Ay38ff3l7+/v8uyQoUKeavFW6pgwYI5/gXwRI281EteqZGXemF/8nYv7E/e7oX9ydu9sD/erZNX+rDb/nhCXppvnpCX9icvPS95RV55TvJKHzkRGhqa5Rg+6u//8fPzU926dRUTE+OyPCYmxuVtAAAAAAAA/NNw5v86zz//vLp376569eqpYcOGevfdd3X06FE988wzud0aAAAAAADZRvi/TpcuXXT27FmNHz9ecXFxql69ur755htFRUXldmu3jL+/v8aMGZPu7Qy3ukZe6iWv1MhLvbA/ebsX9idv98L+5O1e2B/v1skp9idv98L+eLeOneSV5ySv9HGrcLd/AAAAAABsjvf8AwAAAABgc4R/AAAAAABsjvAPAAAAAIDNEf4BAAAAALA5wj8kST/88IPatWunyMhIORwOLVu2zHKNiRMn6s4771RISIiKFy+uhx56SHv37rVUY/bs2apZs6YKFiyoggULqmHDhvr2228t93JjXw6HQ4MHD7a03dixY+VwOFy+IiIiLD/+H3/8oSeeeEJFihRRUFCQateurW3btrm9fZkyZdL14XA4NGDAAEt9XLt2TS+99JLKli2rwMBAlStXTuPHj1dqaqqlOhcvXtTgwYMVFRWlwMBANWrUSFu2bMl0fFZzyxijsWPHKjIyUoGBgWrWrJl27dpluc6SJUvUunVrFS1aVA6HQzt27LBU4+rVqxoxYoRq1Kih4OBgRUZG6sknn9SJEycs9TF27FhVrlxZwcHBCgsLU4sWLbRp0ybL+3O9fv36yeFw6I033rBUo0ePHunmTYMGDSz3sWfPHrVv316hoaEKCQlRgwYNdPToUUt1MprDDodDU6dOdbvGpUuX9Oyzz6pkyZIKDAxUlSpVNHv2bEt9nDp1Sj169FBkZKSCgoJ0//33a//+/S5j3DmWZTVv3anhzpzNqo4789adXrKat1aP75nNWXfqZDVv3e3lZvPWnRruzFl36mQ1b92pkdW8zer/TnePs1nVcWfOekJWfbh7nLXymiKzOXsr9kdy7zh7K3px5zibVQ13jrPektFrPqvz9sYa7r4+yKoPd+etnWX0vLhzrL0VfeTmvL2VCP+QJCUmJqpWrVqaOXNmtmusXbtW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3pn+oehmfZw/f96cPn3aGGPMXXfdZfr3759uTGbHMivz1p3joTtzNqs67sxbq8fmjOZtZjWsztns9HLjvM2shpV5604f7szZzOpYmbfu9OLOvE2T9n9ndo+zN9a5Xm685z+r1wJZHWdvrJOd46wnpfWR3eOsN3rJznH2xhrXszJfs8vKa77M5q27NW52nM3ua0935+0/lZXnxd3XB97u41bM29yU3923BwBZMcZo4MCBWrp0qdasWaOyZct6rG7ae3Hc0bx583R35e/Zs6cqV66sESNGyMfHJ1t9JCUlac+ePbrnnnvc3qZx48bpPrJp3759ioqKsvz48+bNU/HixdWmTRvL20p/3602Xz7X23z4+PhY/qi/NMHBwQoODlZ8fLxWrFihKVOmWK5RtmxZRUREKCYmRnXq1JH09/vg1q5dq8mTJ2err5y4evWqOnfurP3792v16tUqUqSIR+pancPdu3dP93601q1bq3v37urZs2e2+zh79qyOHTumEiVKuDXez89Pd955p8fmsCR98MEHqlu3ruX3OF69elVXr1712BwODQ2V9Pd9PbZu3apXXnnFuS6rY5k789ZTx0N36mQ1b7Pby/XzNqsa7s7Z7PRy47zNqoY789ZKHzebs1nVcWfeWunlZvM2o96SkpJyfJy1evzylqz6cLfPtHHeOs66K60Pbxxns9tLTo6zGT3/VuZrdnniNZ87NbI6zma3j7zy++UtVp6X7L4+8HQft2Le5qpb+IcG5GEXL14027dvN9u3bzeSnO87y+xu0Rn517/+ZUJDQ82aNWtMXFyc8+vy5ctu1xg1apT54YcfzKFDh8zOnTvNv//9b5MvXz6zcuXK7OyWU3Yu+x86dKhZs2aNOXjwoNm4caNp27atCQkJMYcPH3a7xubNm03+/PnNa6+9Zvbv328+/vhjExQUZBYuXGipl5SUFFO6dGkzYsQIS9td76mnnjK33Xab+frrr82hQ4fMkiVLTNGiRc3w4cMt1YmOjjbffvutOXjwoFm5cqWpVauWueuuu0xycnKG47OaW5MmTTKhoaFmyZIl5tdffzWPPfaYKVGihLlw4YKlOmfPnjXbt283y5cvN5LM4sWLzfbt201cXJxbNa5evWrat29vSpYsaXbs2OEyh5OSktyqcenSJTNq1CizYcMGc/jwYbNt2zbTu3dv4+/v73IHWXf2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Vq2ann/+eW3cuNE57ujRo+rQoYMKFCigggULqnPnzjp16lS65/l6gwcPVrNmzZzfN2vWTIMGDdLw4cOdz/P18zztd7pjx47prrJo3769li1b5vIHLwBA9hH+AQC3lI+PjyZMmKC3335bx48fz1GtVatW6cSJE/rhhx80Y8YMjR07Vm3btlVYWJg2bdqkZ555Rs8884yOHTvmst0LL7ygoUOHavv27WrUqJHat2+vs2fPSpLi4uLUtGlT1a5dW1u3blV0dLROnTqlzp07u9RYsGCB8ufPr59++klz5szJsL8333xT06dP17Rp07Rz5061bt1a7du31/79+52PVa1aNQ0dOlRxcXEaNmzYTfe3Z8+ezpAuSXPnzlWvXr3SjXvppZc0b948zZ49W7t27dKQIUP0xBNPaO3atZL+fg/47t279e2332rPnj2aPXu2ihYtKkl666239OWXX+q///2v9u7dq4ULF7oEsnz58umtt95SbGysFixYoFWrVmn48OHO9T/99JOeeeYZPffcc9qxY4datmyp1157zaW/FStW6IknntCgQYO0e/duzZkzR/Pnz3eO++yzz/T6669rzpw52r9/v5YtW6YaNWrc9Lm50erVq3XgwAGtXr1aCxYs0Pz58zV//nxLNTIyffp01atXT9u3b1f//v31r3/9S7/99pvLmBEjRmjQoEHas2ePWrdurffee08vvviiXnvtNe3Zs0cTJkzQ6NGjtWDBAuc2ISEhmj9/vnbv3q0333xT7733nl5//XXn+v/+978aM2aMXnvtNW3dulUlSpRI9weEG8XHxys2Nlb16tVzLjt37pyio6M1YMAABQcHp9sm7Y80xhg99NBDOnfunNauXauYmBgdOHBAXbp0sfycLViwQMHBwdq0aZOmTJmi8ePHKyYmRpKcV1XMmzcv3VUW9erV09WrV51XYwAAcsgAAHCLPPXUU6ZDhw7GGGMaNGhgevXqZYwxZunSpeb6/5LGjBljatWq5bLt66+/bqKiolxqRUVFmZSUFOeySpUqmXvuucf5/bVr10xwcLBZtGiRMcaYQ4cOGUn/X3v3H1NV/f8B/MlFAxryQzT5EUMvYvzmDrgigdxS6GqEbk0kRhOKaAgCEaGrBmZYcRXQzSEu2gSMuplFpQQTyBo/Rg6TErnRLAU2a7GktEzrct+fP9o9X44XFdCN7/D5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",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the number of threads is 182698\n",
+ "the number of messages is 375933\n",
+ " the average number of messages per thread is 2.0576744135130105\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Get the count of each Thread ID\n",
+ "# Filter out rows where patient message and actual response are not present\n",
+ "threads_to_keep = data_sample_sub_cols[data_sample_sub_cols[\"Actual Response Sent to Patient\"].notna()][\"Thread ID\"].unique()\n",
+ "answer_question_paired_data_dedup = remove_duplicate_messages(threads_to_keep = threads_to_keep).dropna(subset=[\"Patient Message\"]) # the main df for embedding\n",
+ "answer_question_paired_data_dedup[\"Patient Message\"] = answer_question_paired_data_dedup[\"Patient Message\"].str.replace(\"<13><10>\", \"\")\n",
+ "answer_question_paired_data_dedup[\"Actual Response Sent to Patient\"] = answer_question_paired_data_dedup[\"Actual Response Sent to Patient\"].str.replace(\"<13><10>\", \"\")\n",
+ "thread_counts_with_response = answer_question_paired_data_dedup['Thread ID'].value_counts()\n",
+ "\n",
+ "# Now, get the frequency of each count (i.e., how many threads have count=1, count=2, etc.)\n",
+ "count_frequency_with_response = thread_counts_with_response.value_counts().sort_index()\n",
+ "\n",
+ "# Plot\n",
+ "plt.figure(figsize=(12,10))\n",
+ "plt.bar(count_frequency_with_response.index, count_frequency_with_response.values)\n",
+ "plt.xlabel('Number of Messages in Thread (Count)')\n",
+ "plt.ylabel('Number of Threads (Frequency)')\n",
+ "plt.title('Distribution of Thread Message Counts')\n",
+ "plt.xticks(count_frequency_with_response.index) # Show all counts on x-axis if not too many\n",
+ "plt.show()\n",
+ "print(f\"the number of threads is {len(thread_counts_with_response)}\")\n",
+ "print(f\"the number of messages is {thread_counts_with_response.sum()}\")\n",
+ "print(f\" the average number of messages per thread is {thread_counts_with_response.mean()}\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# save the df to box: has permission trouble\n",
+ "# path_to_save = \"/Users/wenyuanchen/Library/CloudStorage/Box-Box/ART_PerMessage_1_17_Updated_dedup_embedding.xlsx\"\n",
+ "# answer_question_paired_data_dedup.to_excel(path_to_save, index=True)\n",
+ "# answer_question_paired_data_dedup.to_excel(\"../data/answer_question_paired_data_dedup.xlsx\", index=True)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 291,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "there are 3791 unique recipient each with average 68.06963861777895 threads\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 291,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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69evQyaT4cMPP0TZsmX1+vvExEQ0bNhQel74Sk7BKzgi+562EasFyWQy3Lx5U3qu63OlWKiUmjRpEslkMrK1taWPP/6YGjRoQLa2tmRkZEQTJkxQiU1ISKCxY8dS586dydfXl8aOHUunTp1SiYmPj6c6deqQkZERyWQykslkZGRkRHXr1qWEhAS9683JyaH58+dTgwYNyNramsqUKUMNGjSgBQsWUHZ2thSXlZVFoaGhVL9+fbK0tCRLS0uqV68ehYaG0qtXr/QuLy0tjUaOHEn29vZkZGRERkZGZG9vT19//TWlpaXp1d7ly5eTubk5yWQyKlu2LMnlcpLJZGRubk7Lly8nIqLg4GChhz5tLSgjI4PWrFlDTZo0IWNjY2rWrBktWrRIr/Li4+OpZs2aUhuVba5ZsyadPHlSitu1axdVqFBBWh/KR4UKFWj37t16x4luM9E4kXoPHz4s9FDaunUrffbZZ1SzZk2qWbMm+fn50datWzVuC30lJSXRxIkTycHBgUxNTfVad4X9888/FBQURBUrViQLCwv67LPPir1cN27coGnTplHlypWpbNmy1KdPH9qxY0ex44raR9/Es2fPaPny5dSgQQMyMjJ66+14G3S1gUj7thU9bkXrFT03FmcfLYl9IDk5mTp16kTGxsbS8hkbG1Pnzp0pOTlZr/beunVL6EFEtG3bNurWrRvVrl2b6tSpQ926daPt27frtexKop+jxVFqkxkiohMnTtDo0aOpY8eO1LFjRxo9ejSdOHFCJWbixIkkk8nIxsaG6tevT/Xq1aMyZcqQkZERTZo0iYiILl26RGXKlKHGjRvTli1b6Ny5c3T27FnavHkzffLJJ2RjY0OXLl0Srvfly5fUrFkzMjIyonbt2tGYMWNo9OjR1K5dOzIyMqIWLVpQZmamcDtFy3vy5AlVr16drK2taejQobR48WJatGgRDRkyhKytralGjRr09OlTofb++OOPZGxsTOPHj6f79+9Ly3L//n0aO3YsmZiY0N69e4u76XQ6cuQI9e/fn8qUKUN169YlY2NjOnr06BuVefbsWYqJiaGYmBg6e/asynvHjh0jU1NT+vzzz+n48eOUlpZGaWlpdOzYMerevTuZmZnR8ePHheNEt5lonGi979rz588pIiKCmjZtSkZGRtS2bVtas2YNPXr0SO82vHz5kqKioqhFixZkampKRkZGtGTJEsrIyNB7uTIzM2njxo3UqlUrMjc3J19fXzI2Nqa///67WHFEb2cfJSL6448/qE+fPmRpaUk1atSgadOmSfvr22jH21BUG4j027ZFHbei9YqeG/XdR0tqH7hz5w45OjpS5cqVKSQkhHbu3Ek7duyguXPnUuXKlcnJyYnu3r2r93ouSl5eHvXo0YNkMhm5u7vTZ599Rn5+flS9enUyMjKinj17Un5+vnAb9P0c1Vep/JlJ1Pr16zF8+HAsWLAAw4YNk37CyMnJwYoVKzB58mSsWrUKe/bsQV5eHn7++We1y2lEhO7du8PU1BTbtm0TqnfGjBlYv3499uzZo7E/h5+fH7766ivhTp2i5T179gx//PEHDh48CEdHR5W41NRUtGvXDm3btsW9e/d0tvfo0aMYNmwY5syZo3GZvv32Wxw5cuSNZnTUZP78+YiMjMTz58/Ru3dv9O3bF/Xr14epqSnOnz9f5HDNN9GpUye4uLhg1apVGt8fNmyY1PlRJO6TTz4R2mb5+flCcQkJCUL1RkdHC7VX25DcgkR+xgFe90k5ceIE1q5di23btsHNzQ19+vTB5MmTceHCBWmbia7j4OBgrF27FjExMahevTr69u2LXr16oXLlyir7gOjyxcbGIjo6Gu7u7lJZ9vb2avvUyJEjheJE91F91t+9e/cQFRWFyMhIvHjxAj169MDKlSuLtXyicSVNpA0JCQlC27ak6w0MDBQ6N169elVoH/Xy8irR89TAgQNx48YN/P7777CwsFB5LzMzEx06dMBHH32EiIgIofbqGvUEABs2bMC6deuwfv16+Pr6qry3e/dufPXVV5g+fbrOWZaVjhw5UqKfo4WVymRGdAr9L774Ar1791YbdaS0aNEiREdHIzk5Gfv27cMnn3yiMe7UqVPo1KkTzpw5I1Svt7c3QkND8fnnn2t8f/v27Zg2bRpycnKEfos0NjYWKi87OxurVq1C+/btNcbFxsZi+PDhePHihc72enh4ICkpCe7u7hpjrl69ik8++QQfffSR0KyjaWlpQm29ffs2Jk+ejNmzZ6uMwCl8kqhWrZpQecrRArosXrwYf/31lzR9emEXLlxAq1atAEAorkKFCkLbDIBQ3KNHj4TqVSgUQsN3lf8WJT8/X2gdu7u74+XLl/D390ffvn2lbVR4m9nZ2Qm1Qdlxcfjw4Sr7X+HyRE6yMpkMMpkMkydPRlBQEGxsbLSWZ2Jiolecrn1UdPnat2+Po0ePwtfXF3369EGHDh1gbGz8xsunK64kderUSbgNIttWdHThyZMnhep1dXUVOjcqFArhfVRkHxDl7OyMbdu2qU3KqvTXX3+hV69e+Pjjj4Xaa2RkpHXUkxIRISIiQuttNyIiIhAWFqZymxNtZDIZMjIyhD5HRfqSaVIqh2aLTqFvbm6Ozz77TGs5Xbt2xfTp05GXl6eWrRfk5OSEjIwM4XpNTEyKnAypSZMmuHPnDubNm6c15tatW1i1ahWysrJgamoqVB4RoXbt2lrj6tSpg9TUVADQ2V4iKrIzrqmpKYhIeDheUZ3YCrb1u+++Q1RUFDZu3IjevXsjICAAderUUfubwMBAofJEp/U2MzMr8mqFXC5HVlYWiEgo7s6dO0LbDIBQnEwmE6pXdFRE4bkvCjp+/DiWLVsGIkJmZqbOsszMzNCrVy+0bt1a49BjpVevXgm1oU2bNoiIiMDDhw8REBCA9u3bazzu8vPzdS4bAGzZsgXr1q1DxYoV0blzZwQEBGicfVX5TVVX3OzZs4X2UdHlMzExwejRozFixIgiJzITXT7RuJK0f/9+oTaIblvR41YmkwnVm5KSInRuFD3ORPcBUU+ePClypNAHH3yAJ0+eCK9nkQlI3d3d4e3trfV9b29vfPPNN0LnAACwsLAQ+hwttmL/QPUeS0xM1Pg4d+4cTZ48mSwtLalChQpkY2NDSUlJWsu5cuUK2djYkLu7O/30009a47Zv307Vq1cXrrdChQp0+vRpreUlJCRQhQoVNL735MkTCgwMJHNzc2rZsiWdOHFCuDxnZ2c6cuSI1ri//vqLnJ2dhdprYWFRZAe2hQsX0qeffqr1fRGa2qp0+PBh6tevH1lbW1O9evWEfosuqrzCzp07R+3btydTU1MaNmwY1atXjyIjI7XGR0REUN26dYXjRLeZaJxovW8iKSmJunbtSsbGxtSvXz+6ffu20N/du3eP5syZQx9++CE5OzvT+PHj6ezZs2RqaqryG7k+bbhz5w7NmjWLXF1dydHRkUaPHk0mJiZ0+fLlYrcvOTmZZsyYQVWqVKHy5cuTkZGRxo6OonHF2Uc1OX78OA0ePJhsbW3p008/pWXLltHDhw/JxMREYx+DkmrH8+fPafr06VS7dm2p43ndunVp1qxZ9OLFC73i9GnDm2zbwsetaL2i50Z9jzORfUBk/bm6ulJsbKzWevft20dVq1bVe18pip2dHZ0/f17r+xcuXCA7Ozvh8kQ/R4urVCYzmhw4cIAaNWpENjY2NHPmTMrIyCAvLy/69ttvtf7NtGnTqFWrVtIBr6lz3IULF6hq1ao0Y8YM4Xp79OhB3bt311pv9+7d6csvv1R57eXLlzRnzhySy+VUv359lc61ouUNHDiQWrZsSVlZWWoxr169olatWtHAgQOF2vvZZ5+RpaUlLV++nHJycqT3c3JyKDw8nCwtLWndunVal6koRbW1sPT0dFqxYgV9+umnZGxsTJ6enrRw4cJil3fz5k3q06cPmZiYUI8ePeiff/4hIqJFixZRuXLlNP7tr7/+Svb29rRo0SLhONFtJhonWm9x/PvvvzR48GAyNTUlX19fab+Ii4sTehRUsEOiTCajiRMn0tWrV4lIfB0Xtn//furVqxdZWFiQm5sbTZkyhc6cOVOs5SMiys/Pp3379tGXX35J5ubmVKlSJRo1alSx47Tto/ou34sXLygiIoKaNWsmdYoNCwuj9PR0jdvtTdoxcuRIatSoEZmbm1PXrl0pKCiIJk+eTH5+fmRmZkZNmjSh7OxsysrKEoorbhu0bdvCtB23ovWKnhuLu49q2wdE19+YMWOobt269PDhQ7WyHzx4QPXq1aMxY8YIt/f27ds6H61bt6bhw4dr3C5ERMOGDaNOnTrR+vXrhR5v8jkqotQnM6dPnyZvb28yNzenr7/+mh48eCC9t2fPHjI2NqaJEydSamqq9HpKSgpNmDCBTExMaM+ePZSZmUlNmzYlY2Nj6tChA40dO5bGjh1L7du3l3bMwqOPiqpX2avbw8ODYmJi6Pz583T+/HnaunUrffrpp1SmTBm6ePEiERHl5ubSihUryMnJiVxdXWnDhg1qPchFy7t79y45OjpSlSpVaN68ebRr1y7atWsXhYaGkouLCzk4ONCdO3eE2zt+/HhpGHqDBg1UhqEHBgYSEVHr1q2FHqJtLcqFCxdozJgx0lUtfcp79OgRffPNN2RmZkZt2rRRGyaYl5dHX3zxBclkMqpRowZ169aNunXrRu7u7mRkZETdu3envLw84TjRbSYaJ1qvckinrgfR6+GckyZNIktLS/L09KS//vpLZZ0UHhKr6aFtuK1yqGijRo1IJpNR3bp1hdugzdOnT2np0qX08ccfS8tU3OVTevLkCS1evJjq1atXInEF99E3Wb4rV67QxIkTycnJiSwsLKhLly4l2g5nZ2dydHSkK1euqMUkJSWRo6MjLV26lMLCwoTi3rQNhbetkq7jVrRe0XPjm+6jRKr7gOj6e/r0Kbm5uZGNjQ2NGDGClixZQkuWLKFhw4aRjY0Nubm50ZMnT4TbW/BYL7ivFX7N1NSUvvzyS4qPjyeFQkHPnj2jEydO0BdffEGmpqZ09OhRaTSwnZ0dlS1bVuPDzs6uWJ+j+ii1ycy1a9eoR48eZGxsTL1796YbN25ojFu6dCmZmZmRkZER2dnZkZ2dHRkZGZGpqSktXrxYisvKyqLvv/9eZc6S+vXrq81ZIlrviRMnqFatWhrnSDh27BgREcXExJCbmxs5ODhQWFiYxm8N+pRH9PobTIcOHdR24vbt29O1a9f0bm/hYehjxoxR+flGJpORq6srff311xQYGKj1oU9bdcnOzhYu7/nz5xQcHEy2trbUsGFD+v3334ssOzo6WmXelc8++0zjvCsicaLbTDROpF7l9pg5cyb98ssvWh/z5s2jcuXKUa1ateiXX37RuC7KlStHVatWpZkzZ9L169fp2bNnGh+6nDt3TuWKgeg6LsqZM2f0Wj6FQqHxQygvL48UCoX0XDROl+zs7BJZf7m5ubRz504pESipdrRs2ZLCw8O11rt06VJq2bKlcJw+bdDlzJkzeh+3IvWKnhuJSmYfzc7O1mv9PX36lIYPH052dnbS8tnZ2dGwYcPo8ePHerXX2NhY2vdOnz6ttYvEjh07pJ8gCz7s7e2ln4xq1apF9vb2NGbMmCJ/liIS/1wpjlI5mkl0Cn2le/fuYfv27bh27RoAoHr16vj888/h4uLyVusFXt+KvWC9Bf9GOU107969i+x0tmjRIqHyCkpLS5PiPvroI5QrV07nshbH/PnzERUVhSdPnqBPnz4YOHCgxo5wom319fXFN998g5MnT6rFKRQKNG3aFCtXrkSrVq2EytuyZUuJTetdXKLbTDSuKKdOnUJkZCSio6NRrVo1DBw4EH369FG7aahye3h7e6vdt0kpPz8fvXv3RmRkJI4cOYJOnTph0KBB6NChg8p6VM6Wqrwbd0Hp6ek4fPgw2rdvD3Nzc6E2XLt2DTNmzMCqVas07gMjRozAnDlzULlyZezcuVPn8u3cuROTJ09GYmKi2u0dXr58iQYNGuCHH35Abm6uUJy1tbXQPurh4SG0fHl5edJdjDXNNH3t2jXUrl0bu3fvLrF2pKam4vjx41o7xV68eBGtW7cG8PpeWbriUlNThdpw8+ZNoW3btGlToeO2du3aQvUW3MdL4tz4559/Cu0D3bt3F1p/BUf4EJH0vEKFCsXaVx49eoT169cjKioKaWlp6Nu3LwYNGqSxg/7Lly/x+++/q5x72rVrp7LvxMfHIzIyEjExMfjoo48waNAg9OnTR2iKh5JSKpMZ0Sn0z549q1e5IlPFF6debVNne3l5CQ19/fPPP4XKK0hkSmyRKbtPnTqFrVu3qsT07t1bbfjdiRMnEBkZiW3btsHd3R0DBw6Ev7+/tLOLtrVMmTJo3bq11uH0S5cuxaFDh4SHehe8aWHhoYoFhygrp/XWdfsGJdE4JZFtJhInWu+rV6/w008/Yd26dTh58iS6dOmCQYMGwcfHBwAwYMAAoSH169atA/D6BoPKOSmysrLQv39/zJo1CyYmJliyZAl2796t9Z5k3t7e6NatG77++muhNgwdOhRly5bF/PnzNZY3efJkpKenY8WKFdJrRS1fu3bt0KNHDwwePFhjecqTNBEJxZmbmwvtowVH5BS1fFFRUQgPD0d8fLxaYpmXlwcPDw8EBgZiw4YNJdaOwYMH4/79+3ByctIYk5KSgqpVq4KIcPfuXZ1xq1evFmrDX3/9JbRtC87zUtRxGxERIVRvwRtqipwbde2jfn5+QvvAr7/+KrT+srOzpdcK3gqgevXqKsPERfeVgu09evQo1q1bh+3bt6NWrVoYNGgQBg0aJDx/TEGZmZnYvn071q1bh4SEBHTt2hWRkZEqX1Te2q1e3ui6zntKnyn0icSmaxaZwlqfekWnzhYlWp7olNgi7RWZPbmwFy9eUFRUFDVu3Jisra31ujRPRFSlSpUiRzUkJSWRi4uLcHn6TOstcvsGfeJEt5lonGi9hd28eZNat25NRkZGWn93F6WprMaNGxd5K4I9e/ZQ48aNhdvg7u5eZN+I06dPax0VoWn5KlasqPYzQkHXrl2jihUrCse9yT6qafmaN29e5E8YMTEx1KJFixJtBwCNnU2VUlNTpX1RJE60DaLbVvS4Fa2XSPzcKLKPiu4DouuPSOxWAPq0V1Ndhfc90VupFBYXF0deXl5kZGRET58+lV4v7u1KRJTKZEaU6HTNJT1VvOjU2SVdnuiU2CLt/fbbb8nCwoKWLVumslNnZ2fTkiVLyMLCgtavX6+2rEeOHKGvvvpK6tT68uVL4XYSEZmbm+s8EVtYWOhVpohff/1V6PYNonGi20w0TrTegu7evUvfffedNGR68uTJKiPTRL169Yo2b95Mbdu2JSsrK/ryyy9p37590vtly5Ytchj37du3qWzZssJtsLCwkBJMTW7dukWWlpbCy2dhYVHkFA2XL18mCwsL4Th991Fdy1ehQoUi771z8+ZNKl++fIm2AwDVrVtX6thf+FG3bl3pQ1UkTp826LNtdRGtV/TcKLqPiu4DoutP9FYAou0t6NixYzRo0CCytbWlxo0b04oVKygvL0/v2+7cu3eP5s6dSx999BFVrFiRJk6cqLKfve1brpTKSfNEhYWF4eDBg9i9e7fW6ZqXLFmC/fv346uvvlKbwrpp06Zo2rQphg0bhu+++w6//fabUL2zZ8+GmZkZbty4oTaJ0OzZs9GuXTvMnj1b6DI/8Lrvgkh5CoUC7u7ualNid+vWDWPHjkWHDh0wc+ZMpKSk6GzvsmXLEBISgm+++UYlxtTUFKNHj0Zubi7Cw8PRr18/3L9/H1FRUYiKikJ6ejr69u2L+Ph4lVkwx40bJ9TWSpUq4e+//9Z6N9wLFy6gYsWKwuUNGDBAKG7+/PkICgpSu31DxYoVsWjRIlhZWUmTHIrENWjQQGibEZFQ3NmzZ4Xq9fb2xs6dOxEREYEjR46gY8eOCAsLQ6dOnVQuK3fv3l3nOnn69Clq1qwp9b8ZMGAAtm3bptbHIDc3F48ePUKVKlU0lvPo0SPk5uYKr2O5XI4bN26gatWqGsu7fv06bG1tkZCQgHXr1ulcPldXV5w+fVrrz8OnT59G1apVIZPJhOJycnKE9lHR5Xvx4gXS09M1lgUAGRkZePnyZYm2w97eXuus00q63i8YN3/+fKE2iG5bken4AfF1N3PmTKFz4/Xr14X2UdHzlMgM5J9//jlmzpwJHx8ftVsBNGjQAL1790b37t0RHBws3N6UlBRp8sS0tDT06dNHrY9UaGgo7t69i3Pnzmm9lcr333+PWrVqYd26dYiLi0P79u2xcOFCdO7cWe1nrjlz5pTo52hhpbLPTIMGDYQSgdzcXAQGBuqcrvnevXtCU1iL3AodeP0hIDJ1drVq1XSWJfv/t1YXKS87O1toSuzMzEyd7a1fvz5u3LiBDz74QGPMzZs3UbduXbRq1QqHDh1Cu3btMHDgQHTu3BkmJuo5tLIzoa621q5dG4cPH8apU6c03qPk008/RevWrfH3338LlXf48GGd03rLZDJYW1vj1KlTOm/fIJPJhOLs7e2FthkAobinT58K1WtmZgYbGxv0798fAQEBcHBw0Bg/ZswYja8XFBUVhapVq6J///5o1KiR1riQkBB069YNkydP1vj+999/j19++QWXL18WakPHjh2Rk5OjdRbYzz77DGZmZvj5559RpUoVncsXHx+PTZs2ISEhQeN9eTw8PKQ+BiJxyk7NuvbR8PBwoeWbMWMGhg8fLu0Phf34449YvXo1OnfuXKLtmDt3rtZl0tfHH38s1Ibq1asLb1uR47Zu3bpC9T58+FDo3Pj8+XOhfXTAgAFC+8DSpUu1Ln9BFSpUELoVQKVKlYTae/nyZTg7O6N///7w8/PTOJt7ly5dsGjRIp23Url+/TqqVKmCPn36FDnD78yZM4U+R9PS0rSWUZRSmczMmjVLKO7777/H1atXtX5jvH37tvTt5cqVK1q/Ldy+fRs1a9bUerIuLCQkBDdu3EDlypU1vn/v3j189NFHePXqlVB55ubmQuURkc64Dz/8EEZGRjrb6+rqiqSkJK3f7q5evYrGjRvj+fPnqFixIhwcHIpM9EQ7Yz948AANGzaEsbExvvnmG7i7u0MmkyEpKQnLly9HXl4ezp49W+RBVbgtImrXro0LFy4Umbwpv72IxOXk5JTYNvvoo49gYmIiVO/Lly+l1zRtDyrU4bkoovcWWrFiBcaNG4fo6Gi1K6B79uxB7969sWjRIowbN06oDUeOHIGnpyd8fX0xadIk6YPlypUrmD9/Pvbu3Yvjx49rPfEXXr5nz57B09MTd+7cQd++fVX2qc2bN8PFxQUnT54EAKG4ly9fCu2jFStWFFq+0NBQzJ8/H3/++afGb8ht27bFpEmTMGLEiBJth3LkWcEOp25ublpH9hUVN3/+fKE2+Pj4CG1bXR3llWJiYoTqnT59utC50dTUVGgfvXHjht7nqaLWn4WFBa5du6Z1hO3du3fh5uaG2bNnC7U3KChIel15HiicChAR7ty5o7NOJycnocEWKSkpQp+jBc9Rein2D1SlgOh0zSU9Vbzo1NklXZ7olNgi7bW2thaaPVnfztgibt26RR07dlTrCNexY8cify9+E59++qnQ7RtE40S3mWicaL2HDx8WepS0Pn36SHPjdO3albp160Y1atQgIyMj6tWrFxGJr2Oi152GK1SooDb/RYUKFWjXrl16L9+zZ89oxIgRVK5cOWmfKleuHI0YMUKlk7VoXEnuo9nZ2eTl5UUmJibUoUMHCgwMpLFjx1KHDh3IxMSEWrVqJfVbK8l2iHQ4FY3Tpw0luW1F6xU9N+qzj4ruAyLrT/RWAKLtFek8bW9vX+zb7mjytm+58j+dzHTq1ElouuaSnipedOrstLQ0+vHHH6X3/P39pRknu3XrRl988QWlpaUJlyc6JbZIewcNGiQ0e7Io0bYW9PTpU0pISKD4+Hi1DtP6lFdwRNXevXul2T937dpFv/76KxERRUVFCd2+QTROdJuJxonWK+r+/fs0depU6XmzZs1UOiZ+8skndO/ePeHyiF6PpPjss8+oVq1a0kRjMTEx0vv6tuHly5e0Y8cOmj9/Ps2bN4927typcs+g4sjPz6eHDx/SgwcPipx9WjSuqH1UH9nZ2TRv3jyqX78+WVlZSZONzZs3T+O+8abtEO1wKhqnbxtEtq3IcStar+i5sTjHWVH7gOj60+dWAPruK9oU57Y7RXmbt1whKqWT5t24cQNz585FZGQkAKBKlSoqtyk3NjbG0aNH8eTJE3h5eaFr166YMGECatSoASJCUlISFi5ciF27duHQoUPw9PREz5498fPPP8Pd3V2aWOjy5cu4du0aunbtiu3btyM5OVmoXmtra3zyyScwNzfH119/Lf1Uc/nyZfz444/IysrC6dOnER0djfPnz2PTpk0AABsbG7Rv3166/HvixAn06tULgwcPFiqvTJky8PDwQGpqKvr27asSt2XLFjg5OeHkyZMoW7asUHuXL1+OCRMmIDc3F3K5HMDrCaGMjY0xf/58tTtXP378GLdu3YJMJoOrq6vKpeIFCxYItTU4OFhoHxAt75NPPsH06dNx7tw5Ke7FixdSOTKZDDExMfjiiy8wYcIELFq0CDY2Nvjwww+lfe358+cYPXo0Fi9eDABCcffu3RPaZjKZTCjOxcVFePmU2+nAgQPS9qhWrRq8vb2leX+mT5+Op0+fYvny5dJ6GThwoNQ5dd++fWjevDl++OEH/Pnnn9ixY4dKWV988QVatmwptK0K0qcNokpy+d6G93H5vvzyS+Tl5al1OAVe//zQvXt3mJqagoiE4rZt21aiy/frr78KH7ci0tLShM6N5cqVK9F9VHQ9b9iwAW3btkV8fDx8fHxUzskHDx7Ep59+ij///FOtf44u165dw65du1T2va5du+KDDz7A5cuX4eHhgdq1a2PcuHEq62Tx4sW4fPkyTp48idq1ayM/Px9RUVEa9+OAgADIZDLk5+cLfa4UZ34boJT2mQkMDISVlRVCQkIAvN7RZ8yYIXV2jImJQZUqVbBy5Urs3LkTQ4cOxdOnT1XKsLOzw6pVq1Q6P8XExGDLli0qMyH26tULvXr10rvemzdv4uuvv8b+/ful3yplMhl8fHwQHh6Ojz76CB4eHpg5cyY6deoklXf+/Hnp99qdO3di9uzZOHfunFB5wOuDdurUqYiJicGzZ88AAGXLlkWPHj0wd+5clQRDV3uB17+b/vTTT0XOnnzp0iWMGDECx44dU1nHrVq1wooVK+Du7i7cVpFO0cDrSa1EynNxccFnn32GQYMGaYybP38+Dh8+LPWwP3nyJLZu3aq2Tpo0aaJSv0ic6DYTjROtd9OmTfjmm2/URj3I5XKsXLkSPXv2xMcff4wFCxZIk+gVXi+///47xo0bhxYtWmD16tWws7ND9erVQUS4du0anj17hpEjR2LZsmVFjq4oSJlI6WqDaKfJ0aNHY/jw4TqXT3TAAP3//kS6uLq6Ci3fjh07hJZPVEm24++//8aJEyd0djgFINQxteAMtkUR3bYHDx7U67gVoc+5Udc+KjIaEACOHDkivP6ys7OxePFiaZLSgvWOHTtWeAZtpdDQUMyYMQP5+flwcHCQZhY2NjZGSEgIJkyYgJMnT2LQoEFISkpS6VtTo0YNrF27Fk2bNgURoUuXLvjtt99Qv359lYsCf//9N/z8/PDLL79I9Yp8rhRHqUxm6tSpg2XLlkkjZArv6HFxcRg8eLC0MkWma34b9QJFT51dvnx5HD9+HNWrVwcAfPLJJ/jll1+kTmrKzmYFr/6ITsWt3HEB9Smx9ZGVlYXc3FxYW1trfD81NRV16tRBhQoVMHz4cGlHv3z5MtasWYMnT57g4sWLqFWrllBbv/zyS6Hl2rNnj1B55cuXx08//SSdTApvs7///htt27bFw4cPi7V+RIhus5KYZv3s2bPw8PBAnz59MHbsWJXtERYWhujoaJw6dQqtWrXC2bNnpfXQvXt3rFixQuqweOvWLalz5qpVq9C/f39pH1J+SxsxYgS2b9+Orl27Frl/kR6djgEIj/JbuHAhevXqpXP5lN/uS8qtW7eE4vz8/ISWr+B7RREZgSbqu+++Q3Jyss7OnwCEOqZaWloKtUF5hbcoym/5IsdtTk6O8AhTpZI4N3711VdCccqESNf6Ex0MYmdnJ7S8P//8M7y9vTF9+nSMGTNGup3J06dPERYWhpCQEPz555/S1cHExESVBKrgrVTWrVuHMWPGYNeuXWqjUv/880907dpVmqbjbSqV88zcvn1b5YQ3ePBglYPE1dUV9+7dA/B6x/3333/h7u6OLl26aBw2nJ+fj4ULF+KXX35BTk4OvL29MWPGDLVLevrUe/v2bezfvx+5ublo2bKlxntzvHz5UmUa69OnT6u8/+LFC+Tn5wuXB7wehrp7927k5uaibdu2aNeuXbHa+/jxY/Tv3x/79+9Hfn4+PDw8sGnTJrVe/osXL0bVqlVx7Ngxlb/v0KEDRowYgebNm2Px4sXCbVVOn6+LlZWVUHmpqakq37gOHTqkcmIpU6YMFAoFXr58iYkTJ6qsk6VLl6J8+fIq5YrGAeLbTHRfEal32bJl6Nq1K6KiolReb9iwITZs2ICXL19iyZIlyM3NhUKhkN7fsWOHSnxaWhry8vIwceJEtbl6jIyMMHDgQFy9ehURERE4dOiQxnYVtw3JyclC5fn5+WHcuHE6l2/Xrl1C5ZU00eULCwsTKk9kzhJRW7duRUJCgtYP2fj4eGnOGpG4qVOnCtUr2gYLCwuh43b16tVC5SmXVde5UXQfFT1PnThxQmj9Aa+HQhesd+jQoWrxovvKypUrMXjwYLWf7cuVK4fZs2cjNTUVK1asQIMGDXDy5Enk5OSgTZs2Gs9jW7duxdSpUzVOr9GmTRsEBQVh8+bN6Nu3r9DnaLEVu7fNe8zW1pbi4+O1vh8fH082NjaUnJxM9erVk3rLV61alc6cOaMWHxISQkZGRuTj40N+fn5kbm5OQ4YMKXa9cXFxZG1trXKb9S1btqjF165dW+MsukqRkZFUq1Yt4fJ27NhBxsbGZG1tTXK5nIyMjFTuDK5PewcPHkyOjo40d+5cWrhwIbm5uZG3t7daWQ0aNFDp5FnY1q1bqUGDBsJtFSVaXsWKFenAgQNa437//XdycnKiCRMmkJWVFQ0ZMoRGjRpF5cuXpy+++EItXjROdJuJxonW6+bmVmR7Dxw4QG5ubtSwYcMi7+a7ZMkSMjU11bm/V6pUSev7xW2DqEqVKpXo8pW0/3r5MjMzacGCBUKxoh1O9emYWpJEj1tRoufGkt5HRdffqlWrSCaTUfXq1aXPrKCgoGLX6+rqKjyaUnnukcvlGte5o6MjnTt3TmtZZ8+eJUdHR+HP0eIqlT8zNW3aFL6+vlq/DXz33XfYt28fXFxckJiYiJkzZ8LCwgILFixAXl4eEhISVOLd3d0xZswYjBw5EsDricq6du2KzMxMlUt6ovWamprC1tYWq1atgqWlJaZMmYK9e/fi7t27KvHTp0/H+vXrkZCQoHYjspSUFHh4eKBfv344cuSIUHmNGzdG/fr1sXLlSpiYmGDOnDkICwvD48eP9W6vsu+P8nfzK1euoE6dOsjMzFSZgKls2bI4ffq01pkwr1+/jk8++QSjRo0Sauv9+/c1llOQTCaDs7OzUHnXr1/Hy5cvsXv3bo1l+fr6wtraGqdPn8bcuXOl33UTEhLQrFkzvHr1SmWmyw8//FAorlWrVkLbTDROtN4yZcrg8uXLWudWunPnDmrWrIng4GB8//33OHTokMb5Ktq0aYP09HTcunVL680z//33X3z00UfIzMzU+H5hom3YsGGDUHlDhw7FjRs3dC5fkyZNhObJyM/PF4rTNo9G4bjNmzcLLZ/o+gNeXzGNj4+Hqakp2rZtC2NjY+Tk5ODHH39EaGgocnNzUbduXZ3tyM/PR05Ojs4OpwBKtGOq6Lb97bffhI7bmJgYofJEz42i+6i2iVgLkslkWL58udD6a9y4Mbp27YrvvvsOwOsJK0eNGoWMjAyh9hVmZWWFf/75p8h5dapWrYpPP/0UCxcuhIWFBWbNmoWrV6/iypUrKrFmZma4ffu21nmT7t+/j2rVqsHV1VXoc7S4SmUys2bNGgQGBmLbtm3o3Lmzynt79uxBr169EBYWhpkzZ2Lr1q1o1aoVgP/bgM+fP1e5g6eFhQX++ecf6QOAiGBhYYGbN2+qnIhE6508eTL++usv1KlTB8DrnzxsbW3x+PFj6bdL4PXU0x4eHrh37x4CAgJQvXp1yGQyXLlyBZs2bUKlSpWQkJCAqlWrCpVna2uL06dPS/1IsrKyYG1tjdTUVJXLhyLtNTExwd27d1V2YCsrKyQlJamczI2NjZGSkqJ1ptkHDx6gUqVK0mgCXW0t6nfXvLw8HDx4EFlZWXj27JlQedevX4enpye6dOmCSZMmSevm6tWrmDdvnjRJV5MmTZCcnKyyvS0tLfHPP/+oXCI2MzMTiitXrpzQNhONE63XyMgIqampRW4PZ2dnvHr1Ct7e3jh+/Dh8fHykSb+uXLmCAwcOwNPTE0ePHsWDBw9QoUKFIssigQ6nMpkMRkZGQm0o2G5N5bx48QK5ubkgIqHlGz16tNby0tPTsXXrVmRlZQnH+fn5aY0ruI+KLl+VKlWE1t/GjRvRuXNnKBQKaRTcunXr0LVrV+Tn50uznU+bNk2oHZmZmUIdTkU6plarVk2oDYUHYhR+X7ltT58+LXTcfv7550L1Pnr0SOjcKHqcdevWTWt9BfeBvLw8ofVnbW2Nv//+W/oZPy8vD5aWlrhz547KlzXR9ZycnKzzPODk5IRTp05J/ZKePHkCBwcHKBQKlClTRoo1NjZGamqqzv3Y1NRU6HO0uEpln5khQ4bgzz//RJcuXVCjRg2VE/HVq1fx+eefY8iQIRg2bJjKDLaVK1eGpaUlHjx4oDIiITs7WyW5kclkMDMzQ1ZWVrHrLbgTWVtbw8rKCs+ePVM5UdvY2ODYsWOYMmUKtm7dqtLD3t/fHyEhIbCxscGzZ8+Eynv+/LnK7ezNzc1haWmJ9PR0lQNWpL1EpNa/yMTEROrDU1BGRobWb2bp6ekgIuG2apvmfNeuXZg6dSrMzc0xY8YM4fIaNGiAmJgYDB48WK1fiJ2dHaKjo9GwYUPk5eXBzMxMrb25ubkqr4nGiW4z0TjReoHXI5G0dbRUridTU1McOHAAixYtQnR0NA4fPgwAcHNzw3fffYexY8fC0tIS06dP19pRXjmTp7ZtBgDHjx/HsmXLQETIzs4WaoO26c5TUlIwa9YsREZGwsfHB/v37xdaPk1DaXNzc7F8+XLMnTsXlSpVwnfffadxtIVoHKC+j06dOlVo+QpPcVDQrVu3sGrVKmRlZWH69Olo3749vv32W0RGRiIsLAy+vr4IDg6Whsfq014zMzNMnjxZ58zmInGibdDWCbzwthU9bkXrJSKhc6PocSZ6ngLE1l9mZqZaAmFubq42W65oewFg7dq1KmUWpLziU/AKrr29PaysrPDo0SOVvyMiDBgwQOtoKmV9op+jxVUqr8woRUdHIzo6Wsp23dzc0Lt3b+lkoymjtLW1xfnz51U68hoZGWHo0KEqJ53ly5ejb9++Kh8KixYtEqrXyMgIf/75p8polKZNm2Lbtm0ql/0KXt4nLT3sHz16BEdHR6HyPv74Y6xfv15lmXv37o2wsDCVabW7du2qs72LFy9G3bp1VRKaCxcuoEaNGioHe2Jiot4jWYpqa+Hs/9ixY5g8eTLOnTuHb775BkFBQWrf3EXKKzyizc3NDe3atZNGaRkZGaFjx44qB+yePXvQpk0blZFcv/zyi3Cc6DYTjROtV4SmpLSwTz75RJq3pyiaOgBfuXIFU6ZMwZ49e9CnTx989913cHV1FWpD4Q+vjIwMzJs3D0uWLEHt2rURGhqK1q1bw8vLS+jydeHl27x5M2bMmIHMzEx8++23GDp0qMaBAaJx2vbR4i4f8HrUyXfffYcVK1bAw8MD8+bNg6+vL+Li4lC7dm28fPkSNjY2iI6O1jkCUFs7RDqcAmIdUzXR1IbCUxxo27ZKuo5b0XqbNm0qfG4szj5a1HlKZP0ZGRlhzpw5KknE5MmTMXHiRJVkS9PVQ03t7dWrl85979atW7h+/bp0jiQiuLi44OjRoypf9kVH0a1fv16vz1F9lepkRpu8vDzs2bMH3bt3h1wuV9moz549g62trcrEPfXq1RO6dKf8DVmkXpmWm6QpXy9qqCoRYd++fVi7di327t0rDT/UVZ7IppbJZGjRooXQji5yx2kvLy+dMQCkn/oKK9xWZRZ/6dIlBAUFITY2Fv369cOsWbO0/v4rUp4m+fn52Lt3LyIiIor8aaM41q9fL7zNROJEhz2KjrLQRqFQYPPmzVi7di3Onz8vPJxa6f79+5g5cybWr1+P9u3bIzQ0VPoJTXQ4q7IN2dnZCA8PR0hICMqXL485c+YIT5KmSWxsLIKCgpCcnIwJEyZg3LhxGj8UReOKu48WJTMzE4sWLcKCBQvg6uqKkJAQqd9a4Z8QbWxscO7cOa391Ypqx+rVqzF8+HC4ubnBwsICFy9exKRJkxAaGqpShmicaBuU3mTbFjxuCybvutadLsU5znTtA6LrT+QmxjLZ65sOi7RXhJGRkcaJ/ArON6PPlAoiybvI56hWJdaV2AAkJSXRxIkTycHBgUxNTSkqKkroUdL1itwX49atW2rl3Lhxg6ZNm0aVK1emsmXLUp8+fWjHjh3FLu99oWkKcW1tvXPnDg0YMIBMTEyoa9eudPnyZaE6tJWnyT///ENBQUFUsWJFsrCwoM8+++xNmqeR6Db7r7dtbm4u7dy5U+31P/74g/z9/cnS0pJq1KhB06ZNo7NnzxZZ1oULF2jMmDFE9PpeQJMmTSJLS0vy9PSkv/76q9jLmJ+fT1FRUVSlShVydnamVatWUW5urt7lKJcvPj6evLy8yMLCggIDA+nRo0ca40XjiruPals+otfbZcWKFeTk5ESurq60YcMGtdsUGBkZ0fXr10mhUNCzZ8/IxsaGzp8/TwqFQuUh0o46deqo3Htt3bp1VKZMmWLHibbhTbattuNWpN6SJroP6LP+RJVEex8/fkxff/31G9/HLS8vj3bv3v1WzqGFlforMy9evEBMTAwiIiJw8uRJtG7dGr169ULXrl01jpl/3+p99eoVfvrpJ6xduxYnT56Ej48P9u3bh8TEROkbrSEiDVdIRNpqZWUFmUyGUaNGoWnTplrL9/Pz02vdZWZmYtu2bdL2ysvLw+LFizFw4ECtvyuXJleuXEFkZCTWr1+PtLQ0ZGdn4969e4iKikJkZCRevHiBHj16YOXKlTh//jxq1aqlsRxlB9KIiAicPn0a9erVg7+/P+bNmwcnJyeEhITgs88+e6NlVd6VeNSoUdKs25ooZxTWtXwXLlyApaUlhg0bVuTsvYGBgUJxQUFBwvuoyPJNnToV3377LRQKBaZOnYoRI0ao9dsA1L9JU6GO11TgKp+udkycOBFJSUk6O5yKdkzdtm2bUBv03ba6jlvRekua6Hmqd+/eQutP1Ju0l4iwf/9+ae4lW1tb4ZmbC7t27ZrK+aR9+/bCP3EXV6lNZk6cOIG1a9di27ZtcHNzQ58+fTB58mRcuHBB64n4fat35MiRiI6Ohru7O/r27YtevXrB3t4epqamRX6gvM9u3rwp7eTPnz9H586d8fnnn+PAgQNCbRW9HDxs2DCh8hISErB27VrExMSgevXqUmzlypUNdh2LKirh7tevH44ePQpfX1/06dMHHTp0gLGxsdZ9Ly4uDhEREfj555/x6tUrTJw4EYMHD8ZHH30EIyMjWFpawtvbW2X4amGF+xloU3Af0HTZmjRc/i5q+UQv4YsOzRaZAVif5VOuv969e2tM0JREk0SRGYVv3bqFBw8eqHQ+LzzLLqB5dJy2OJE2FJz0rahtqzzP6jpuRestbj8NbUTPU0QktP70qVff9t66dQuRkZGIiorCv//+iz59+qBfv35o3bp1kcdrYe/6C2GpHM1Uq1YtvHz5Ev7+/oiPj5d27KCgIIOqd/Xq1Zg8eTKCgoKEOlq+rzRdIUlJSVG5QvLll18KtVWkYyrweoSBSHlNmzbFqFGjkJCQIE3PX9ppSrjj4+OxdOlSaZ/dv38/Ro8ejREjRkjT1heWkpKCdevWSVduevfujbi4OHh6eqJfv35SX41+/fqVyDwSSqIzCosun+jtB0qa6PK1bNkSMpkMN27c0FqWTCYT/kAWaa+RkZHaaJfc3FxERUWpXVkWiRNtg+i2FT1uRestaaLnKdH1XNS0AAWJtjcrKws7duzA2rVrcfz4cXTs2BGLFi1C7969ERQUpNeXOE1fCLdv347KlSvD29v7v7uy/dZ/yHoHTE1NKSAggPbv36/yW6GJiYl0O3pDqHfz5s3k7e1N1tbW1KNHD9qzZw/l5OS89XaUpBEjRpCdnR01adKEwsPD6fHjx0Skvk5Kuq2i5fn4+JCNjQ35+/vTvn37pO1mSOtYHzVr1qSqVavSlClTVNpXuL3Hjx+nwYMHk62tLX366ae0bNkyevjwoUqcubk59e3bl2JjYykvL09rWe/K/9ryxcTEUFZWlvQ8OTlZpb/JixcvaN68eUJlVa1alVxdXYt8VKtWTTiupJWW4/ZdrT97e3tq0aIFrVq1ip4+fSq9Xpz1Z2xsTIGBgXTlyhWV1//rbVEqr8wkJydLN2rLzMxE79690adPn2Jn4Onp6UVesgNe31CrpOv19/eHv78/bt26hXXr1uHrr7/Gy5cvkZ+fj8uXLxvETyCiV5dE26ptxs/ilrd//37cvXsX69atk7Zbz549Abydb2zv2vXr19GrVy+0bt1amm1UE09PT3h6emLJkiWIjo5GZGQkxo0bh/z8fBw4cAAuLi6oWrUqjh49iipVqqBq1aoqcza9DcrRgG3atBGKF10+0Ts1ixK9a3ZJr7/evXurTFBZr149JCYmSj9XZGRkYMqUKUKz8Y4bN074akBJEr3D+vt+3Iqep97VVcG8vDzIZDLIZDK9fkrSpE2bNoiIiMDDhw8REBCA9u3bv5NtUGr7zCj9+eefiIyMxI4dO/Dq1StMmDABgwcPlmZ6FNGyZUvs379f60ng0KFD6NKli8rdq0ui3sKICL///jsiIyOxe/dulC9fHt27dy/xk/GFCxd0xmzevFlo1sby5ctj3bp1OHHiBDp37oyAgAB06NABlpaWRfZJ0dbW8PBwnXVqGi4ouu4OHDiAyMhI/PLLL3BxccEXX3yBL774QmXblgTl3WhLSn5+Pi5duoS6desCeH0juYI32jQ2NsaIESOQkpKCqKgorFu3TiXh9vDwQGJiYpEJsvLGhxs3bsSzZ8/g4+ODyZMnIyIiAtu3b5cuMU+aNAkXLlyQkqXu3bsLtUFbn5nCnZNzc3OF5y46duyYzuUTvQu3yKlS3z4zIss3btw4neUBr/ubFB6aXbDvRcEZhUWWr+Aw3zelTxv0nZcK0H7cbtq0SaheffvM5Ofna+wXk5+fj3v37gkltPoMaxYlup5DQkLw888/S/1bOnbsiL59+6Jnz546zwOaKBNL5XmlZ8+e+PHHH1X2Y5HPFQBqt08RVeqTGSXl/BiRkZE4e/Ys6tSpIzxvwbZt21CtWjX88ssvallsXFwcOnfujMGDB2u8Y6mmeo2NjYUy17Nnz2p978mTJ9i4cSPWrVuncvfYopw7d06o3mfPnqmcvAvPK0BEICKVA1Z5a4OCk4YVPCEqr5BERUXh5cuXePr0KWJiYoS2QcG2nj9/Xqitb1peWloaNm3ahMjISFy4cEFtfgVNCs77oitO27w6mpZDZJtNmDABq1atQlxcHIDXH2Rly5aVtsfjx48RFhaGQYMGSX9T3IRbeYVEmRgCr2eX3rp1KyIjIxEfH49WrVrB398fXbt2xaRJk4TaWnAOnKI6J1+6dEmovILruKjl0zYN+3+pqOXr0aOHUBlxcXFCyUxJf4CK0HRHZU0K38VZG23HT+HjVvRLw+3bt4XiEhMTMXjwYOzZswe2trYYPnw4ZsyYIX0uvK11LHr1RLS9Bfsm3bhxA+vWrcP69evx77//onfv3hgwYAB+/PFHoXNP4S8h2hLLTz75ROfnypskeP8zyUxBiYmJiIyMRHh4OJydneHg4FDkB8+vv/6KFi1awNPTUyXT/+uvv9C5c2cMGDAAy5YtE663YPJBRAgNDcXw4cNVZnkFgJkzZwq1x8jICFWrVkXnzp1VbvJY2Mcff6xS74gRIzB79my1+3MUnOiOiFCnTh389ttvajfQK/hctAf+27669ODBA6xatUqaKrwknD17Fj4+PrCxscGAAQMQEBCgdXj9Bx98IBRnZ2cntM0KTrFe1L5y9OhRDBw4EL179wagvj1WrlyJmJgYjR0sNSXcot+iNElKSpKu4Dx9+hQ5OTnCf1sSowFfvHiBM2fOaD2x67t8d+/excyZMxEZGVkicbr20eKuP02T5hUnmRFtx7uga9sWdPbsWTRs2FCoXOU51N/fX+v9ioDXozFjY2Mxd+5cPHv2DHPmzEGdOnWwY8cOmJmZ4cGDB6hYsaLODsD6nqeUy9e/f380aNBAa9ybTHuQn5+P33//HREREdizZw9kMpl0PgGALVu2oEuXLmrdBbRNxFk4sSx4pU/0c0Uv/0XHnPdFTk4OZWRkSM87duwoTa60a9euIidnun79OlWsWJFGjRpFRERHjhyhMmXK0IgRI/Sut7AyZcrQjRs31F6/du0anT59WuW1gwcPkpeXFzVu3Jjmzp1LRETz5s2jmjVrkoODA40dO1bj7eT1qbc4caJlFfTkyRNavHgx1atXT7ituiQmJpKRkdEblZeZmUlRUVG0fPlyunbtGhERZWVlUXR0NLVr144sLS3p888/p99++01tMirRuJLeZpUqVaLExEStcZcvXyY7Ozud5Z87d45GjRpFJ0+epN9++03lvfXr15OrqytVqFCBhgwZQq9evSqyrJycHPr555911nn58mWqVq2acOdkXZT7gC6iyydaXknHiS7f9evXqXXr1iSTyWjDhg20a9cu2rVrF1lZWdHq1aul5+vXry/R5StJyjboUtSyaTpuReuNiYmhDh06kIWFBXXr1o327Nmj0ilbqUqVKnTo0CHp+ePHj8nDw4PatWtHr169otTU1LeyjhMSEmj48OFUtmxZatCgAS1btkyl464o0fX88OFDWrhwocprxTnHK505c0bttTcpT5NSmczs3buXNmzYoPLanDlzyNzcnIyNjcnHx0faEe7fv08hISFUvXp1cnJyokmTJqn1ylY6f/482dnZUf/+/cnW1paGDh1a7HoL0rZRu3btqjI75M2bN8nS0pLatWtHo0ePpjJlytDixYul9wuOQGncuDGtWLGCFAqF1vX0rpOZgvRtqzbKk4RoeRMmTKDRo0dLcVlZWfTxxx+TqakpyeVysra2puPH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",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "no_outlier = data_sample_sub_cols[data_sample_sub_cols[\"Date Sent\"] != data_sample_sub_cols[\"Date Sent\"].max()]\n",
+ "plt.bar(no_outlier[\"Date Sent\"].value_counts().index, no_outlier[\"Date Sent\"].value_counts().values)\n",
+ "#this means messages span only 3 months"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### embedding starts"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def create_embeddings():\n",
+ " embeddings = HuggingFaceEmbeddings(\n",
+ " model_name=\"sentence-transformers/all-mpnet-base-v2\"\n",
+ " )\n",
+ " return embeddings\n",
+ "embeddings_model = create_embeddings()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Create embeddings for all texts\n",
+ "texts = answer_question_paired_data_dedup[\"Patient Message\"].str.replace(\"<13><10>\", \"\").tolist()\n",
+ "embeddings = embeddings_model.embed_documents(texts)\n",
+ "# Save embeddings\n",
+ "# np.save(\"../data/embeddings.npy\", np.array(embeddings))\n",
+ "answer_question_paired_data_dedup[\"embeddings\"] = embeddings\n",
+ "# Make sure the embeddings column is a list of float64 per row\n",
+ "answer_question_paired_data_dedup[\"embeddings\"] = answer_question_paired_data_dedup[\"embeddings\"].apply(lambda x: [float(val) for val in x])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# dataset_id = \"rag_embedding_R01\"\n",
+ "# dataset_ref = client.dataset(dataset_id)\n",
+ "\n",
+ "# # Create the dataset\n",
+ "# dataset = bigquery.Dataset(dataset_ref)\n",
+ "# dataset.location = \"US\" \n",
+ "\n",
+ "# client.create_dataset(dataset, exists_ok=True)\n",
+ "# print(f\"✅ Created dataset: {dataset_id}\")\n",
+ "\n",
+ "# upload the embedding with meta data to gcp big query\n",
+ "table_id = \"som-nero-phi-jonc101.rag_embedding_R01.messages_with_embeddings\"\n",
+ "\n",
+ "schema = [\n",
+ " bigquery.SchemaField(\"index\", \"INT64\"),\n",
+ " bigquery.SchemaField(\"Thread ID\", \"INT64\"),\n",
+ " bigquery.SchemaField(\"Date Sent\", \"TIMESTAMP\"),\n",
+ " bigquery.SchemaField(\"Subject\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"Patient Message\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"Message Sender\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"Actual Response Sent to Patient\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"Recipient Names\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"Recipient IDs\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"Message Department\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"Department Specialty Title\", \"STRING\")\n",
+ "\n",
+ " bigquery.SchemaField(\"embeddings\", \"FLOAT64\", mode=\"REPEATED\")\n",
+ " \n",
+ "]\n",
+ "\n",
+ "job_config = bigquery.LoadJobConfig(\n",
+ " schema=schema,\n",
+ " write_disposition=\"WRITE_TRUNCATE\",\n",
+ " clustering_fields=[\"Recipient Names\", \"Message Department\", \"Department Specialty Title\"]\n",
+ ")\n",
+ "\n",
+ "job = client.load_table_from_dataframe(answer_question_paired_data_dedup, table_id, job_config=job_config)\n",
+ "job.result()\n",
+ "\n",
+ "print(\"✅ Upload complete with clustering.\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# test query"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "index 341408\n",
+ "Thread ID 252160980\n",
+ "Date Sent 2024-12-04 00:00:00\n",
+ "Subject Scheduling Question\n",
+ "Patient Message Hi Dr. Martin,<13><10>I hope you're well! <13>...\n",
+ "Message Sender APOSTOL, JENNY [ S0333370]\n",
+ "Actual Response Sent to Patient Barbara, <13><10><13><10>No iron needed--the a...\n",
+ "Recipient Names MARTIN, BETH\n",
+ "Recipient IDs S0050381\n",
+ "Message Department HEMATOLOGY\n",
+ "Department Specialty Title Hematology\n",
+ "Name: 161352, dtype: object\n"
+ ]
+ }
+ ],
+ "source": [
+ "import requests\n",
+ "import json\n",
+ "from dotenv import load_dotenv\n",
+ "load_dotenv()\n",
+ "import os\n",
+ "\n",
+ "\n",
+ "my_key = os.getenv(\"HEALTHREX_API_KEY\")\n",
+ "random_idx = np.random.randint(0, len(answer_question_paired_data_dedup))\n",
+ "query_message = answer_question_paired_data_dedup.iloc[random_idx][\"Patient Message\"]\n",
+ "print(answer_question_paired_data_dedup.iloc[random_idx])\n",
+ "my_question = f\"\"\"You are a patient with similar symptoms to the patient who asked this question: \"{query_message}\"\n",
+ "\n",
+ "Please generate a new question that:\n",
+ "1. Covers similar medical concerns but uses different wording and phrasing\n",
+ "2. Includes some personal context or specific details that make it feel more natural\n",
+ "3. May mention different but related symptoms or concerns\n",
+ "4. Uses a more conversational tone\n",
+ "\n",
+ "Your question should sound like it's coming from a different person, not just a rephrasing of the original question. \n",
+ "Focus on the underlying medical concern but express it in your own words.\"\"\"\n",
+ "# Common Headers (Used for all models)\n",
+ "headers = {'Ocp-Apim-Subscription-Key': my_key, 'Content-Type': 'application/json'}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Hi Dr. Martin,\n",
+ "\n",
+ "I wanted to touch base regarding my most recent blood work from earlier this month. I’ve been feeling extra fatigued and short of breath lately, and I’m a bit worried it might be related to my ongoing iron issues. Would you be able to let me know if my latest results suggest it’s time to schedule another iron infusion? Also, since I usually need an ultrasound-guided IV, should I go ahead and book that appointment too?\n",
+ "\n",
+ "Thanks so much for your help!\n",
+ "\n",
+ "Best, \n",
+ "Melissa\n"
+ ]
+ }
+ ],
+ "source": [
+ "url = \"https://apim.stanfordhealthcare.org/openai-eastus2/deployments/gpt-4.1/chat/completions?api-version=2025-01-01-preview\" \n",
+ "payload = json.dumps({\n",
+ " \"model\": \"gpt-4.1\", \n",
+ " \"messages\": [{\"role\": \"user\", \"content\": my_question}]\n",
+ "})\n",
+ "response = requests.request(\"POST\", url, headers=headers, data=payload)\n",
+ "message_content = response.json()[\"choices\"][0][\"message\"][\"content\"]\n",
+ "print(message_content)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## ------------- strictest filter ---------\n",
+ "### all receiver, department and specialty exact match"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Query Parameters:\n",
+ "query_message: Hi Dr. Martin,I wanted to touch base regarding my most recent blood work from earlier this month. I’ve been feeling extra fatigued and short of breath lately, and I’m a bit worried it might be related to my ongoing iron issues. Would you be able to let me know if my latest results suggest it’s time to schedule another iron infusion? Also, since I usually need an ultrasound-guided IV, should I go ahead and book that appointment too?Thanks so much for your help!Best, Melissa\n",
+ "receiver: MARTIN, BETH\n",
+ "department: HEMATOLOGY\n",
+ "specialty: Hematology\n",
+ "\n",
+ "Number of results: 5\n",
+ "################################################################################################################################################################\n",
+ "✅ similarity: 0.8124\n",
+ "Sender: APOSTOL, JENNY [ S0333370] -> the similar message of the whole thread : Hi Dr. Martin,I hope you're well! Did you have an opportunity to review the labs my mom completed on 11/14/24? If so, do you think she's due for an Iron Infusion appointment (and, USGPIV appt preceding Iron Infusion)?Thanks!Barbara\n",
+ "Provider's response to this specific message in the thread: Barbara, No iron needed--the anemia is mild and is due to inflammation, not iron deficiency. I had contacted Dr Haddock about this months ago when this pattern developed--cause is not clear. I hope that her health is otherwise stable, that you're all doing well despite the world's turmoil. Beth \n",
+ "-----------printing the whole thread-------------\n",
+ "Thread ID: 252160980\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 161352\n",
+ "Subject: Scheduling Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-04 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr. Martin,\n",
+ "I hope you're well! \n",
+ "\n",
+ "Did you have an opportunity to review the labs my mom completed on 11/14/24? If so, do you think she's due for an Iron Infusion appointment (and, USGPIV appt preceding Iron Infusion)?\n",
+ "\n",
+ "Thanks!\n",
+ "Barbara\n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Barbara, \n",
+ "\n",
+ "No iron needed--the anemia is mild and is due to inflammation, not iron deficiency. I had contacted Dr Haddock about this months ago when this pattern developed--cause is not clear. \n",
+ "\n",
+ "I hope that her health is otherwise stable, that you're all doing well despite the world's turmoil. \n",
+ "\n",
+ "Beth \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "✅ similarity: 0.8013\n",
+ "Sender: APOSTOL, JENNY [ S0333370] -> the similar message of the whole thread : Hello Dr. Martin,I am following up on our visit on 8/30/2024 where you advised that I receive IV iron to compensate for ongoing bleeding and to assist with heart failure. At that time you stated that you would discuss further with DR. Galatin to coordinate iron infusions at CCSB. To that end, I have never received any contact for the above mentioned iron infusions. Please see the attached progress/clinical notes from our 8/30 visit, page 7 in particular.Some how my iron infusions have \"slipped through the cracks\". I look forward to your response and thank you in advance.Regards,Thomas Obata\n",
+ "Provider's response to this specific message in the thread: Mr Obata, I 'm recommending a change in plan as I see that you have an upcoming liver transplant appt at the end of the month and that you're due to have a fibrinogen level and ATIII level checked. I'm still checking in with Dr Galatin for who will take the lead, but if you are getting transplanted here , then you should have a Stanford based hematologist for potential coagulation issues --and possibly iv iron if needed. If you are being considered at UCSF, then I recommend that you see Dr Cornett as well --or , if you would like an independent opinion from mine, I'm happy to refer you. I see that you prefer Quest labs: I've placed orders there as well. Would you be able to go there or to a Stanford lab any time within a week or earlier of that appt, at least by 1/23? Non fasting. Sincerely, Beth A. Martin, MD with Jenny Apostol, RN Attending Physician Division of Hematology Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "-----------printing the whole thread-------------\n",
+ "Thread ID: 255287111\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 21428\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-14 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Dr. Martin,\n",
+ "\n",
+ "Thank you, I look forward to your pre-op plan. Please understand that I could be getting the call for a liver match any day, therefore time is of the essence. Thank you in advance for your understanding.\n",
+ "\n",
+ "Best regards,\n",
+ "\n",
+ "Thomas\n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 21427\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-14 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Dr. Martin,\n",
+ "I am listed as top priority and in the number one position on the Stanford liver transplant list. The AVMs in my liver are compromising my heart, hence the top priority position.\n",
+ "I just visited Question Diagnostics and completed my blood panel.\n",
+ "Thank you,\n",
+ "Thomas Obata \n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Got it\n",
+ "\n",
+ "I will develop a coag pre op\n",
+ "Plan for you \n",
+ "\n",
+ "Beth \n",
+ "----------------------------------------\n",
+ "idx: 21426\n",
+ "Subject: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-09 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Dr. Martin,\n",
+ "\n",
+ "I am following up on our visit on 8/30/2024 where you advised that I receive IV iron to compensate for ongoing bleeding and to assist with heart failure. At that time you stated that you would discuss further with DR. Galatin to coordinate iron infusions at CCSB. To that end, I have never received any contact for the above mentioned iron infusions. \n",
+ "Please see the attached progress/clinical notes from our 8/30 visit, page 7 in particular.\n",
+ "\n",
+ "Some how my iron infusions have \"slipped through the cracks\". I look forward to your response and thank you in advance.\n",
+ "\n",
+ "Regards,\n",
+ "Thomas Obata\n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Mr Obata, \n",
+ "\n",
+ "I 'm recommending a change in plan as I see that you have an upcoming liver transplant appt at the end of the month and that you're due to have a fibrinogen level and ATIII level checked. \n",
+ "\n",
+ "I'm still checking in with Dr Galatin for who will take the lead, but if you are getting transplanted here , then you should have a Stanford based hematologist for potential coagulation issues --and possibly iv iron if needed. \n",
+ "\n",
+ "If you are being considered at UCSF, then I recommend that you see Dr Cornett as well --or , if you would like an independent opinion from mine, I'm happy to refer you. \n",
+ "\n",
+ "I see that you prefer Quest labs: I've placed orders there as well. Would you be able to go there or to a Stanford lab any time within a week or earlier of that appt, at least by 1/23? Non fasting. \n",
+ "\n",
+ "Sincerely, \n",
+ "\n",
+ "Beth A. Martin, MD with Jenny Apostol, RN \n",
+ "Attending Physician \n",
+ "Division of Hematology \n",
+ "\n",
+ "Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "✅ similarity: 0.7430\n",
+ "Sender: MONTEZ, ANDREA [ S0285483] -> the similar message of the whole thread : Please move the visit to another time -- I'm not sure I will be able to make the 22d at 4:30. It is my last day of work and I do not know when I will be leaving. I am scheduled for my first iron infusion on November 25th -- do I need to see Dr. Martin before I have my first iron infusion?Pat Greene\n",
+ "Provider's response to this specific message in the thread: Ms Greene, Thanks for letting us know. . I'll ask the schedulers to change the appointment to 9:30 on Monday. I can easily see you in the infusion center. Do let me/us know if any questions before the infusion. Sincerely, Beth A. Martin, MD with Jenny Apostol, RN Attending Physician Division of Hematology Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "-----------printing the whole thread-------------\n",
+ "Thread ID: 250924952\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 224536\n",
+ "Subject: RE:follow up\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-11-19 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Please move the visit to another time -- I'm not sure I will be able to make the 22d at 4:30. It is my last day of work and I do not know when I will be leaving. I am scheduled for my first iron infusion on November 25th -- do I need to see Dr. Martin before I have my first iron infusion?\n",
+ "\n",
+ "Pat Greene\n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Ms Greene, \n",
+ "\n",
+ "Thanks for letting us know. . \n",
+ "\n",
+ "I'll ask the schedulers to change the appointment to 9:30 on Monday. I can easily see you in the infusion center. Do let me/us know if any questions before the infusion. \n",
+ "\n",
+ "Sincerely, \n",
+ "\n",
+ "Beth A. Martin, MD with Jenny Apostol, RN \n",
+ "Attending Physician \n",
+ "Division of Hematology \n",
+ "\n",
+ "Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "✅ similarity: 0.6803\n",
+ "Sender: APOSTOL, JENNY [ S0333370] -> the similar message of the whole thread : Hello Dr. Martin,I had another blood test taken on Wednesday. Please let me know your assessment and if we need to schedule a follow up appointment. Thank you,Mandeepak Pujji\n",
+ "Provider's response to this specific message in the thread: Mr Pujji,Your blood counts are a bigImproved , blood cells (“smear” or slide review) still doesn’t provide the answer. Please repeat your cbc diff in 2-3 weeks with a follow up appt , as always, earlier if any new symptoms. Standing orders in. If fever and don’t feel sick or mild infection no fever : weekdays, call in to see if you can be seen in our urgent care. After hours or weekends: go to ER Let us know if questions Beth Martin MD \n",
+ "-----------printing the whole thread-------------\n",
+ "Thread ID: 250501446\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 245872\n",
+ "Subject: RE: repeat labs\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-11-18 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Elizabeth,\n",
+ "\n",
+ "Dev 6 at 8am will be fine. \n",
+ "\n",
+ "Thank you,\n",
+ "Mandeepak Pujji\n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "Thank you for replying \n",
+ "\n",
+ "Have a nice day!\n",
+ "----------------------------------------\n",
+ "idx: 245871\n",
+ "Subject: RE: repeat labs\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-11-15 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Dr. Martin,\n",
+ "\n",
+ "I had another blood test taken on Wednesday. Please let me know your assessment and if we need to schedule a follow up appointment. \n",
+ "\n",
+ "Thank you,\n",
+ "Mandeepak Pujji\n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Mr Pujji,\n",
+ "\n",
+ "Your blood counts are a big\n",
+ "Improved , blood cells (“smear” or slide review) still doesn’t provide the answer. \n",
+ "\n",
+ "Please repeat your cbc diff in 2-3 weeks with a follow up appt , as always, earlier if any new symptoms. Standing orders in. \n",
+ "\n",
+ "If fever and don’t feel sick or mild infection no fever : weekdays, call in to see if you can be seen in our urgent care. After hours or weekends: go to ER \n",
+ "\n",
+ "Let us know if questions \n",
+ "\n",
+ "Beth Martin MD \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "✅ similarity: 0.6622\n",
+ "Sender: APOSTOL, JENNY [ S0333370] -> the similar message of the whole thread : Thank you, Dr. Martin. I’m actually feeling okay and was pretty surprised that hemoglobin was so low again. I haven’t had the symptoms from before: intense nightly chills and feeling cold and feeling tired and out of breath, etc. The only thing I notice is my heart rate has ticked up again, but I was thinking it was due to reducing prednisone to 5mg on Monday.I am still going to Pilates this morning; the weather has been so dreary and wet that I haven’t felt like walking outside. Leo is also very unexcited.\n",
+ "Provider's response to this specific message in the thread: That's a relief. Symptoms are key issue on urgency, of course. Let's not jump through the hoops of another type and screen this weekend: If you notice more symptoms, to repeat it and hct on Tuesday as a just in case , to plan a transfusion for next Friday Otherwise , repeat your labs the following Monday or Tuesday, with transfusion in 2 weeks on a Friday if you're declining further Keep the jakafi taper going Leo looks pretty svelt and perky to me Beth Beth A. Martin, MD with Jenny Apostol, RN Attending Physician Division of Hematology Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "-----------printing the whole thread-------------\n",
+ "Thread ID: 254273588\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 70653\n",
+ "Subject: RE: anemia\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-27 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "I am confused by this message. I am scheduled for a transfusion tomorrow, which is fine with me. Exercising is pretty difficult, so I’m definitely low energy, and the heart rate is what concerns me the most. \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 70652\n",
+ "Subject: RE: anemia\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-27 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Thank you, Dr. Martin. I’m actually feeling okay and was pretty surprised that hemoglobin was so low again. I haven’t had the symptoms from before: intense nightly chills and feeling cold and feeling tired and out of breath, etc. The only thing I notice is my heart rate has ticked up again, but I was thinking it was due to reducing prednisone to 5mg on Monday.\n",
+ "\n",
+ "I am still going to Pilates this morning; the weather has been so dreary and wet that I haven’t felt like walking outside. Leo is also very unexcited.\n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "That's a relief. Symptoms are key issue on urgency, of course. \n",
+ "\n",
+ "Let's not jump through the hoops of another type and screen this weekend: \n",
+ "\n",
+ "If you notice more symptoms, to repeat it and hct on Tuesday as a just in case , to plan a transfusion for next Friday \n",
+ "\n",
+ "Otherwise , repeat your labs the following Monday or Tuesday, with transfusion in 2 weeks on a Friday if you're declining further \n",
+ "\n",
+ "Keep the jakafi taper going \n",
+ "\n",
+ "Leo looks pretty svelt and perky to me \n",
+ "\n",
+ "Beth \n",
+ "\n",
+ "Beth A. Martin, MD with Jenny Apostol, RN \n",
+ "Attending Physician \n",
+ "Division of Hematology \n",
+ "\n",
+ "Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n"
+ ]
+ }
+ ],
+ "source": [
+ "from google.cloud import bigquery\n",
+ "\n",
+ "query_message = message_content.replace(\"\\n\", \"\")\n",
+ "query_vector_literal = query_embedding_func(query_message, embeddings_model)\n",
+ "# query_vector = answer_question_paired_data_dedup.iloc[0][\"embeddings\"]\n",
+ "# Format the vector for BigQuery SQL\n",
+ "# query_vector_literal = str(query_vector).replace(\"[\", \"ARRAY[\").replace(\"]\", \"]\")\n",
+ "\n",
+ "# Filter criteria \n",
+ "receiver = answer_question_paired_data_dedup.iloc[random_idx][\"Recipient Names\"]\n",
+ "department = answer_question_paired_data_dedup.iloc[random_idx][\"Message Department\"]\n",
+ "specialty = answer_question_paired_data_dedup.iloc[random_idx]['Department Specialty Title']\n",
+ "\n",
+ "query = f\"\"\"\n",
+ "WITH input_embedding AS (\n",
+ " SELECT {query_vector_literal} AS input_vec\n",
+ ")\n",
+ "\n",
+ "SELECT\n",
+ " t.`Thread ID`,\n",
+ " t.`Patient Message`,\n",
+ " t.`Message Sender`,\n",
+ " t.`Message Department`,\n",
+ " t.`Department Specialty Title`,\n",
+ " t.`Actual Response Sent to Patient`,\n",
+ " (\n",
+ " SELECT SUM(x * y)\n",
+ " FROM UNNEST(t.embeddings) AS x WITH OFFSET i\n",
+ " JOIN UNNEST(input_vec) AS y WITH OFFSET j\n",
+ " ON i = j\n",
+ " ) /\n",
+ " (\n",
+ " SQRT((SELECT SUM(POW(x, 2)) FROM UNNEST(t.embeddings) AS x)) *\n",
+ " SQRT((SELECT SUM(POW(y, 2)) FROM UNNEST(input_vec) AS y))\n",
+ " ) AS cosine_similarity\n",
+ "FROM `som-nero-phi-jonc101.rag_embedding_R01.messages_with_embeddings` AS t,\n",
+ " input_embedding\n",
+ "WHERE\n",
+ " t.`Recipient Names` = @receiver\n",
+ " AND t.`Message Department` = @department\n",
+ " AND t.`Department Specialty Title` = @specialty\n",
+ "ORDER BY cosine_similarity DESC\n",
+ "LIMIT 5\n",
+ "\"\"\"\n",
+ "\n",
+ "job = client.query(\n",
+ " query,\n",
+ " job_config=bigquery.QueryJobConfig(\n",
+ " query_parameters=[\n",
+ " bigquery.ScalarQueryParameter(\"receiver\", \"STRING\", receiver),\n",
+ " bigquery.ScalarQueryParameter(\"department\", \"STRING\", department),\n",
+ " bigquery.ScalarQueryParameter(\"specialty\", \"STRING\", specialty)\n",
+ " ]\n",
+ " )\n",
+ ")\n",
+ "# Show results\n",
+ "# print(f\"the input message {answer_question_paired_data_dedup.iloc[0][\"Patient Message\"]}\")\n",
+ "\n",
+ "# Debug: Print the query parameters\n",
+ "print(\"Query Parameters:\")\n",
+ "print(f\"query_message: {query_message}\")\n",
+ "print(f\"receiver: {receiver}\")\n",
+ "print(f\"department: {department}\")\n",
+ "print(f\"specialty: {specialty}\")\n",
+ "\n",
+ "# Debug: Try to get results\n",
+ "try:\n",
+ " results = list(job.result())\n",
+ " print(f\"\\nNumber of results: {len(results)}\")\n",
+ " \n",
+ " if len(results) > 0:\n",
+ " for row in results:\n",
+ " print(\"##\" * 80)\n",
+ " print(f\"✅ similarity: {row['cosine_similarity']:.4f}\")\n",
+ " print(f\"Sender: {row['Message Sender']} -> the similar message of the whole thread : {row['Patient Message']}\")\n",
+ " print(f\"Provider's response to this specific message in the thread: {row['Actual Response Sent to Patient']}\")\n",
+ " print(\"-----------printing the whole thread-------------\")\n",
+ " beatiful_print_thread(row[\"Thread ID\"], answer_question_paired_data_dedup)\n",
+ " print(\"##\" * 80)\n",
+ " else:\n",
+ " print(\"No results found matching the criteria\")\n",
+ "except Exception as e:\n",
+ " print(f\"Error getting results: {str(e)}\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## -----------Tiered Retrieval-----------"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from google.cloud import bigquery\n",
+ "\n",
+ "def run_query_bq(filter_field, filter_value, query_vector_literal, client, N, similarity_cutoff=0.7, exclude_threads=None):\n",
+ " exclude_clause = \"\"\n",
+ " params = [\n",
+ " bigquery.ScalarQueryParameter(\"filter_value\", \"STRING\", filter_value),\n",
+ " bigquery.ScalarQueryParameter(\"similarity_cutoff\", \"FLOAT64\", similarity_cutoff),\n",
+ " bigquery.ScalarQueryParameter(\"N\", \"INT64\", N)\n",
+ " ]\n",
+ " if exclude_threads and len(exclude_threads) > 0:\n",
+ " # FIX: Cast to int and use INT64 type\n",
+ " exclude_threads = [int(x) for x in exclude_threads]\n",
+ " exclude_clause = \"AND t.`Thread ID` NOT IN UNNEST(@exclude_threads)\"\n",
+ " params.append(bigquery.ArrayQueryParameter(\"exclude_threads\", \"INT64\", exclude_threads))\n",
+ " \n",
+ " base_query = f\"\"\"\n",
+ " WITH input_embedding AS (\n",
+ " SELECT {query_vector_literal} AS input_vec\n",
+ " ),\n",
+ " scored_messages AS (\n",
+ " SELECT\n",
+ " t.`Thread ID`,\n",
+ " t.`Patient Message`,\n",
+ " t.`Message Sender`,\n",
+ " t.`Message Department`,\n",
+ " t.`Department Specialty Title`,\n",
+ " t.`Actual Response Sent to Patient`,\n",
+ " (\n",
+ " SELECT SUM(x * y)\n",
+ " FROM UNNEST(t.embeddings) AS x WITH OFFSET i\n",
+ " JOIN UNNEST(input_vec) AS y WITH OFFSET j\n",
+ " ON i = j\n",
+ " ) /\n",
+ " (\n",
+ " SQRT((SELECT SUM(POW(x, 2)) FROM UNNEST(t.embeddings) AS x)) *\n",
+ " SQRT((SELECT SUM(POW(y, 2)) FROM UNNEST(input_vec) AS y))\n",
+ " ) AS cosine_similarity\n",
+ " FROM `som-nero-phi-jonc101.rag_embedding_R01.messages_with_embeddings` AS t, input_embedding\n",
+ " WHERE t.`{filter_field}` = @filter_value\n",
+ " {exclude_clause}\n",
+ " )\n",
+ " SELECT *\n",
+ " FROM scored_messages\n",
+ " WHERE cosine_similarity >= @similarity_cutoff\n",
+ " ORDER BY cosine_similarity DESC\n",
+ " LIMIT @N\n",
+ " \"\"\"\n",
+ "\n",
+ " job = client.query(\n",
+ " base_query,\n",
+ " job_config=bigquery.QueryJobConfig(query_parameters=params)\n",
+ " )\n",
+ " return list(job.result())\n",
+ "\n",
+ "\n",
+ "def run_tiered_retrieval(query_vector_literal, receiver, department, specialty, client, target_N=5, similarity_cutoff=0.7):\n",
+ " all_results = []\n",
+ "\n",
+ " # 1. Sender Level\n",
+ " results = run_query_bq(\n",
+ " filter_field=\"Recipient Names\", filter_value=receiver,\n",
+ " query_vector_literal=query_vector_literal,\n",
+ " client=client,\n",
+ " N=target_N,\n",
+ " similarity_cutoff=similarity_cutoff\n",
+ " )\n",
+ " all_results.extend([{**dict(r), \"retrieval_tier\": \"sender\"} for r in results])\n",
+ "\n",
+ " # 2. Department Level\n",
+ " if len(all_results) < target_N:\n",
+ " exclude_threads = [int(r[\"Thread ID\"]) for r in all_results]\n",
+ " results = run_query_bq(\n",
+ " filter_field=\"Message Department\", filter_value=department,\n",
+ " query_vector_literal=query_vector_literal,\n",
+ " client=client,\n",
+ " N=target_N - len(all_results),\n",
+ " similarity_cutoff=similarity_cutoff,\n",
+ " exclude_threads=exclude_threads\n",
+ " )\n",
+ " all_results.extend([{**dict(r), \"retrieval_tier\": \"department\"} for r in results])\n",
+ "\n",
+ " # 3. Specialty Level\n",
+ " if len(all_results) < target_N:\n",
+ " exclude_threads = [int(r[\"Thread ID\"]) for r in all_results]\n",
+ " results = run_query_bq(\n",
+ " filter_field=\"Department Specialty Title\", filter_value=specialty,\n",
+ " query_vector_literal=query_vector_literal,\n",
+ " client=client,\n",
+ " N=target_N - len(all_results),\n",
+ " similarity_cutoff=similarity_cutoff,\n",
+ " exclude_threads=exclude_threads\n",
+ " )\n",
+ " all_results.extend([{**dict(r), \"retrieval_tier\": \"specialty\"} for r in results])\n",
+ "\n",
+ " return all_results[:target_N]\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Query Parameters:\n",
+ "query_message: Hi Dr. Martin,I wanted to touch base regarding my most recent blood work from earlier this month. I’ve been feeling extra fatigued and short of breath lately, and I’m a bit worried it might be related to my ongoing iron issues. Would you be able to let me know if my latest results suggest it’s time to schedule another iron infusion? Also, since I usually need an ultrasound-guided IV, should I go ahead and book that appointment too?Thanks so much for your help!Best, Melissa\n",
+ "receiver: MARTIN, BETH\n",
+ "department: HEMATOLOGY\n",
+ "specialty: Hematology\n",
+ "\n",
+ "Number of results: 10\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8124\n",
+ "➡️ Message by Sender APOSTOL, JENNY [ S0333370]: Hi Dr. Martin,I hope you're well! Did you have an opportunity to review the labs my mom completed on 11/14/24? If so, do you think she's due for an Iron Infusion appointment (and, USGPIV appt preceding Iron Infusion)?Thanks!Barbara\n",
+ "➡️ Provider's response to this specific message is: Barbara, No iron needed--the anemia is mild and is due to inflammation, not iron deficiency. I had contacted Dr Haddock about this months ago when this pattern developed--cause is not clear. I hope that her health is otherwise stable, that you're all doing well despite the world's turmoil. Beth \n",
+ "➡️ This result is from tier: sender\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 252160980\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 161352\n",
+ "Subject: Scheduling Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-04 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr. Martin,\n",
+ "I hope you're well! \n",
+ "\n",
+ "Did you have an opportunity to review the labs my mom completed on 11/14/24? If so, do you think she's due for an Iron Infusion appointment (and, USGPIV appt preceding Iron Infusion)?\n",
+ "\n",
+ "Thanks!\n",
+ "Barbara\n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Barbara, \n",
+ "\n",
+ "No iron needed--the anemia is mild and is due to inflammation, not iron deficiency. I had contacted Dr Haddock about this months ago when this pattern developed--cause is not clear. \n",
+ "\n",
+ "I hope that her health is otherwise stable, that you're all doing well despite the world's turmoil. \n",
+ "\n",
+ "Beth \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8013\n",
+ "➡️ Message by Sender APOSTOL, JENNY [ S0333370]: Hello Dr. Martin,I am following up on our visit on 8/30/2024 where you advised that I receive IV iron to compensate for ongoing bleeding and to assist with heart failure. At that time you stated that you would discuss further with DR. Galatin to coordinate iron infusions at CCSB. To that end, I have never received any contact for the above mentioned iron infusions. Please see the attached progress/clinical notes from our 8/30 visit, page 7 in particular.Some how my iron infusions have \"slipped through the cracks\". I look forward to your response and thank you in advance.Regards,Thomas Obata\n",
+ "➡️ Provider's response to this specific message is: Mr Obata, I 'm recommending a change in plan as I see that you have an upcoming liver transplant appt at the end of the month and that you're due to have a fibrinogen level and ATIII level checked. I'm still checking in with Dr Galatin for who will take the lead, but if you are getting transplanted here , then you should have a Stanford based hematologist for potential coagulation issues --and possibly iv iron if needed. If you are being considered at UCSF, then I recommend that you see Dr Cornett as well --or , if you would like an independent opinion from mine, I'm happy to refer you. I see that you prefer Quest labs: I've placed orders there as well. Would you be able to go there or to a Stanford lab any time within a week or earlier of that appt, at least by 1/23? Non fasting. Sincerely, Beth A. Martin, MD with Jenny Apostol, RN Attending Physician Division of Hematology Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "➡️ This result is from tier: sender\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 255287111\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 21428\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-14 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Dr. Martin,\n",
+ "\n",
+ "Thank you, I look forward to your pre-op plan. Please understand that I could be getting the call for a liver match any day, therefore time is of the essence. Thank you in advance for your understanding.\n",
+ "\n",
+ "Best regards,\n",
+ "\n",
+ "Thomas\n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 21427\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-14 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Dr. Martin,\n",
+ "I am listed as top priority and in the number one position on the Stanford liver transplant list. The AVMs in my liver are compromising my heart, hence the top priority position.\n",
+ "I just visited Question Diagnostics and completed my blood panel.\n",
+ "Thank you,\n",
+ "Thomas Obata \n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Got it\n",
+ "\n",
+ "I will develop a coag pre op\n",
+ "Plan for you \n",
+ "\n",
+ "Beth \n",
+ "----------------------------------------\n",
+ "idx: 21426\n",
+ "Subject: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-09 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Dr. Martin,\n",
+ "\n",
+ "I am following up on our visit on 8/30/2024 where you advised that I receive IV iron to compensate for ongoing bleeding and to assist with heart failure. At that time you stated that you would discuss further with DR. Galatin to coordinate iron infusions at CCSB. To that end, I have never received any contact for the above mentioned iron infusions. \n",
+ "Please see the attached progress/clinical notes from our 8/30 visit, page 7 in particular.\n",
+ "\n",
+ "Some how my iron infusions have \"slipped through the cracks\". I look forward to your response and thank you in advance.\n",
+ "\n",
+ "Regards,\n",
+ "Thomas Obata\n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Mr Obata, \n",
+ "\n",
+ "I 'm recommending a change in plan as I see that you have an upcoming liver transplant appt at the end of the month and that you're due to have a fibrinogen level and ATIII level checked. \n",
+ "\n",
+ "I'm still checking in with Dr Galatin for who will take the lead, but if you are getting transplanted here , then you should have a Stanford based hematologist for potential coagulation issues --and possibly iv iron if needed. \n",
+ "\n",
+ "If you are being considered at UCSF, then I recommend that you see Dr Cornett as well --or , if you would like an independent opinion from mine, I'm happy to refer you. \n",
+ "\n",
+ "I see that you prefer Quest labs: I've placed orders there as well. Would you be able to go there or to a Stanford lab any time within a week or earlier of that appt, at least by 1/23? Non fasting. \n",
+ "\n",
+ "Sincerely, \n",
+ "\n",
+ "Beth A. Martin, MD with Jenny Apostol, RN \n",
+ "Attending Physician \n",
+ "Division of Hematology \n",
+ "\n",
+ "Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.7430\n",
+ "➡️ Message by Sender MONTEZ, ANDREA [ S0285483]: Please move the visit to another time -- I'm not sure I will be able to make the 22d at 4:30. It is my last day of work and I do not know when I will be leaving. I am scheduled for my first iron infusion on November 25th -- do I need to see Dr. Martin before I have my first iron infusion?Pat Greene\n",
+ "➡️ Provider's response to this specific message is: Ms Greene, Thanks for letting us know. . I'll ask the schedulers to change the appointment to 9:30 on Monday. I can easily see you in the infusion center. Do let me/us know if any questions before the infusion. Sincerely, Beth A. Martin, MD with Jenny Apostol, RN Attending Physician Division of Hematology Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "➡️ This result is from tier: sender\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 250924952\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 224536\n",
+ "Subject: RE:follow up\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-11-19 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Please move the visit to another time -- I'm not sure I will be able to make the 22d at 4:30. It is my last day of work and I do not know when I will be leaving. I am scheduled for my first iron infusion on November 25th -- do I need to see Dr. Martin before I have my first iron infusion?\n",
+ "\n",
+ "Pat Greene\n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Ms Greene, \n",
+ "\n",
+ "Thanks for letting us know. . \n",
+ "\n",
+ "I'll ask the schedulers to change the appointment to 9:30 on Monday. I can easily see you in the infusion center. Do let me/us know if any questions before the infusion. \n",
+ "\n",
+ "Sincerely, \n",
+ "\n",
+ "Beth A. Martin, MD with Jenny Apostol, RN \n",
+ "Attending Physician \n",
+ "Division of Hematology \n",
+ "\n",
+ "Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8480\n",
+ "➡️ Message by Sender GOMEZ, ELIZABETH [ S0190535]: Hello Dr Martin Hope all is well, I wanted to reach out to you in regards of my iron deficiency. I know I’m scheduled to see you in March but I’m starting to get the same symptoms as before. I was wondering if we could do some labs to check my iron levels. Thank you for your time Laura Gonzalez \n",
+ "➡️ Provider's response to this specific message is: Hello Laura,What symptoms are you having? You have standing lab orders in place and can go to any of our Stanford lab locations. Please let us know if you have any questions or concerns.Thank you.Jenny, RNBlake Wilbur Lab900 Blake Wilbur Drive1st Floor, Room W1083Palo Alto, CA 94304Hours: Mon-Fri 7:00am - 5:30pm Cancer Center Lab875 Blake Wilbur DriveRoom CC-1104Palo Alto, CA 94304Hours: Mon-Fri 7:00am - 5:30pm Hoover Lab211 Quarry RoadSuite 101Palo Alto, CA 94304Hours: Mon-Fri 7:00am -7:00pm Boswell Lab300 Pasteur DrivePavilion A, Level 1, A12Stanford, CA 94305Hours: Mon-Fri 6:00am -5:30pmSat-Sun 7:00am-3:30pm Redwood City440 Broadway Street, Pavillion B 1st Floor B11Redwood City, California 94063Hours: Monday - Friday 7am - 6pm Blood Draw at Stanford Cancer Center South Bay2589 Samaritan Drive4th Floor, San Jose, CA 95124 Hours: Mon-Fri 7:00am-6:00pm Blood Draw at Stanford Emeryville5800 Hollis StreetFirst Floor, Pavilion BEmeryville, CA 94608Hours: Mon-Fri 7:30am-5:00pm\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 255116564\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 28794\n",
+ "Subject: RE: Ordered Test Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-08 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Shortness of breath when walking short distances. Also is it possible to send the orders closer to home I have a quest here in Fremont \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hello Laura,\n",
+ "\n",
+ "I have placed lab orders for you at Quest. Please let us know once you've done the labs so we know to look for results. We do not get automatic alerts for outside results. If your symptoms should worsen please be evaluated by urgent care, ER, or call for a sick call appt. Thank you and take care.\n",
+ "\n",
+ "Jenny, RN \n",
+ "----------------------------------------\n",
+ "idx: 28793\n",
+ "Subject: Ordered Test Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-08 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Dr Martin \n",
+ "Hope all is well, I wanted to reach out to you in regards of my iron deficiency. I know I’m scheduled to see you in March but I’m starting to get the same symptoms as before. I was wondering if we could do some labs to check my iron levels. \n",
+ "Thank you for your time \n",
+ "Laura Gonzalez \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hello Laura,\n",
+ "\n",
+ "What symptoms are you having? You have standing lab orders in place and can go to any of our Stanford lab locations. Please let us know if you have any questions or concerns.\n",
+ "\n",
+ "Thank you.\n",
+ "\n",
+ "Jenny, RN\n",
+ "\n",
+ "Blake Wilbur Lab\n",
+ "900 Blake Wilbur Drive\n",
+ "1st Floor, Room W1083\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am - 5:30pm\n",
+ " \n",
+ "Cancer Center Lab\n",
+ "875 Blake Wilbur Drive\n",
+ "Room CC-1104\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am - 5:30pm\n",
+ " \n",
+ "Hoover Lab\n",
+ "211 Quarry Road\n",
+ "Suite 101\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am -7:00pm\n",
+ " \n",
+ "Boswell Lab\n",
+ "300 Pasteur Drive\n",
+ "Pavilion A, Level 1, A12\n",
+ "Stanford, CA 94305\n",
+ "Hours: Mon-Fri 6:00am -5:30pm\n",
+ "Sat-Sun 7:00am-3:30pm\n",
+ " \n",
+ "Redwood City\n",
+ "440 Broadway Street, Pavillion B 1st Floor B11\n",
+ "Redwood City, California 94063\n",
+ "Hours: Monday - Friday 7am - 6pm\n",
+ " \n",
+ "Blood Draw at Stanford Cancer Center South Bay\n",
+ "2589 Samaritan Drive\n",
+ "4th Floor, San Jose, CA 95124 \n",
+ "Hours: Mon-Fri 7:00am-6:00pm\n",
+ " \n",
+ "Blood Draw at Stanford Emeryville\n",
+ "5800 Hollis Street\n",
+ "First Floor, Pavilion B\n",
+ "Emeryville, CA 94608\n",
+ "Hours: Mon-Fri 7:30am-5:00pm\n",
+ "\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8438\n",
+ "➡️ Message by Sender ZAMORA, ESMERALDA [ S0352882]: Hi Dr.Berube, I did a full CBC blood draw yesterday at PAMF. Do you have access to that? The nurse from my OBGYN’s office said I am anemic and should take iron supplements. I responded letting her know that I actually have an iron overload and was advised to avoid any supplements with iron. Can you confirm this is correct?I have my anatomy scan at Stanford this morning and can pop into the lab for more blood test if you prefer that. Let me know. Thanks! Brianna \n",
+ "➡️ Provider's response to this specific message is: Hi Brianna, You are correct. You have been diagnosed with compensated hemolytic anemia due to hereditary xerocytosis, and your iron levels are currently being managed through regular phlebotomies. It's essential to understand the implications of your condition and the reason for not taking iron supplements.Key Takeaway:Do not take iron supplements. You are at risk for iron overload due to your hereditary xerocytosis, and adding more iron can worsen your condition. Focus on regular blood checks and maintain a healthy diet.Understanding Your Condition:Hereditary Xerocytosis: This is a rare genetic condition affecting red blood cells (RBCs) that results in increased RBC destruction (hemolysis). Your specific mutation (PIEZO1) causes changes in your blood cells leading to this condition.Iron Overload: Due to your hereditary xerocytosis, you are at risk for iron overload, especially since this condition causes increased RBC turnover. Your recent liver MRI has indicated significant iron overload.Current Treatment:You are receiving phlebotomies (scheduled blood draws to reduce excess iron) to help manage your iron levels. Since starting phlebotomies in June 2023, your ferritin (a marker of iron levels) has been gradually decreasing. Note: since you are pregnant, we have been holding phlebotomy for the remainder of your pregnancy. It's vital to continue avoiding iron supplementation during this time and keep an open line of communication with your healthcare team regarding your health and iron management.Avoiding Iron Supplements:Why Not Take Iron Supplements: Given your diagnosis of iron overload, taking iron supplements can exacerbate the problem. Your body already has excess iron due to the hemolytic anemia, and adding more iron can lead to further complications, including damage to your liver and other organs.Monitor Your Iron Levels: Since your treatment involves phlebotomy to manage iron overload, it's crucial not to introduce additional iron into your system. Always discuss any new supplements or medications with your healthcare provider.Additional Nutritional Guidance:While you need to avoid iron supplements, ensure that you are getting adequate nutrition, particularly folic acid, which is important for blood health. Folic acid can help support your body in producing healthy red blood cells.When to Seek Help:If you experience symptoms such as fatigue, weakness, or any unusual symptoms, contact your healthcare provider promptly. Regular follow-up and monitoring are critical to managing your condition effectively.If you have any additional questions, feel free to ask!Thanks, J Ryan, MSN, RNNurse Coordinator, Hematology\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 255261295\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 22548\n",
+ "Subject: Test Results Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-09 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr.Berube, \n",
+ "\n",
+ "I did a full CBC blood draw yesterday at PAMF. Do you have access to that? The nurse from my OBGYN’s office said I am anemic and should take iron supplements. I responded letting her know that I actually have an iron overload and was advised to avoid any supplements with iron. Can you confirm this is correct?\n",
+ "I have my anatomy scan at Stanford this morning and can pop into the lab for more blood test if you prefer that. Let me know. \n",
+ "\n",
+ "Thanks! \n",
+ "Brianna \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hi Brianna, \n",
+ "\n",
+ "You are correct. You have been diagnosed with compensated hemolytic anemia due to hereditary xerocytosis, and your iron levels are currently being managed through regular phlebotomies. It's essential to understand the implications of your condition and the reason for not taking iron supplements.\n",
+ "\n",
+ "Key Takeaway:\n",
+ "Do not take iron supplements. You are at risk for iron overload due to your hereditary xerocytosis, and adding more iron can worsen your condition. Focus on regular blood checks and maintain a healthy diet.\n",
+ "\n",
+ "Understanding Your Condition:\n",
+ "Hereditary Xerocytosis: This is a rare genetic condition affecting red blood cells (RBCs) that results in increased RBC destruction (hemolysis). Your specific mutation (PIEZO1) causes changes in your blood cells leading to this condition.\n",
+ "Iron Overload: Due to your hereditary xerocytosis, you are at risk for iron overload, especially since this condition causes increased RBC turnover. Your recent liver MRI has indicated significant iron overload.\n",
+ "\n",
+ "Current Treatment:\n",
+ "You are receiving phlebotomies (scheduled blood draws to reduce excess iron) to help manage your iron levels. Since starting phlebotomies in June 2023, your ferritin (a marker of iron levels) has been gradually decreasing. \n",
+ "\n",
+ "Note: since you are pregnant, we have been holding phlebotomy for the remainder of your pregnancy. It's vital to continue avoiding iron supplementation during this time and keep an open line of communication with your healthcare team regarding your health and iron management.\n",
+ "\n",
+ "Avoiding Iron Supplements:\n",
+ "Why Not Take Iron Supplements: Given your diagnosis of iron overload, taking iron supplements can exacerbate the problem. Your body already has excess iron due to the hemolytic anemia, and adding more iron can lead to further complications, including damage to your liver and other organs.\n",
+ "Monitor Your Iron Levels: Since your treatment involves phlebotomy to manage iron overload, it's crucial not to introduce additional iron into your system. Always discuss any new supplements or medications with your healthcare provider.\n",
+ "\n",
+ "Additional Nutritional Guidance:\n",
+ "While you need to avoid iron supplements, ensure that you are getting adequate nutrition, particularly folic acid, which is important for blood health. Folic acid can help support your body in producing healthy red blood cells.\n",
+ "\n",
+ "When to Seek Help:\n",
+ "If you experience symptoms such as fatigue, weakness, or any unusual symptoms, contact your healthcare provider promptly. Regular follow-up and monitoring are critical to managing your condition effectively.\n",
+ "\n",
+ "If you have any additional questions, feel free to ask!\n",
+ "\n",
+ "Thanks, \n",
+ "J Ryan, MSN, RN\n",
+ "Nurse Coordinator, Hematology\n",
+ "\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8340\n",
+ "➡️ Message by Sender GO, LACRISHA [ S0203400]: Hi Dr Brar ,Happy holidays ! I just had labs drawn for the bariatric group that follows me for my vitamin intake and they suggested that I reach out to you and let you know that my iron is a bit low , my last infusion was 2/17/ 21 I believe . Should we do another infusion before it gets any worse ? Please advise? I’m feeling fine and I’m not chewing ice yet lol . Thank you \n",
+ "➡️ Provider's response to this specific message is: Hi ReginaI saw your labs but no CBC was drawn. We will need to see the CBC to discuss IV iron as well. Do you have CBC ordered by your PCP? If so please have this drawnThanksChi, RN\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 253687511\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 96155\n",
+ "Subject: RE: Non-urgent Medical Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-21 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Chi , \n",
+ "I think Dr Brar has standing blood orders for me to check every so often can you order them or do you still want me to ask my PCP . \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 96154\n",
+ "Subject: Non-urgent Medical Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-19 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr Brar ,\n",
+ "\n",
+ "Happy holidays ! \n",
+ "I just had labs drawn for the bariatric group that follows me for my vitamin intake and they suggested that I reach out to you and let you know that my iron is a bit low , my last infusion was 2/17/ 21 I believe . \n",
+ "Should we do another infusion before it gets any worse ? Please advise? I’m feeling fine and I’m not chewing ice yet lol . \n",
+ "\n",
+ "Thank you \n",
+ "----------------------------------------\n",
+ "Provider Response by HOANG, CHI:\n",
+ "Hi Regina\n",
+ "\n",
+ "I saw your labs but no CBC was drawn. We will need to see the CBC to discuss IV iron as well. Do you have CBC ordered by your PCP? If so please have this drawn\n",
+ "\n",
+ "Thanks\n",
+ "Chi, RN\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8236\n",
+ "➡️ Message by Sender MONTEZ, ANDREA [ S0285483]: Hi all,Hope you are doing well!Two quick questions -1. Dr. Berube had me complete a few labs but I haven't heard any follow up. Can you confirm if there is anything she wants me to be aware of with the results? 2. I had my last iron infusion 4 weeks ago - are there labs I should be doing to check on my iron levels?Thank you!Amanda \n",
+ "➡️ Provider's response to this specific message is: Hi Amanda,I believe Dr. Berube has reviewed your labs, she is currently out of town but when she returns I will make sure to see if she any additional instructions. I have placed repeat labs for you to get done 6-8 weeks after your last venofer infusion, which should be around beginning of January.Best,Sharon Lee, BSN, RNNurse coordinator, hematology \n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 253812916\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 90355\n",
+ "Subject: RE:Non-urgent Medical Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-06 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr. Berube,\n",
+ "\n",
+ "Thank you for the response and well wishes! \n",
+ "\n",
+ "Best,\n",
+ "Amanda \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 90354\n",
+ "Subject: RE:Non-urgent Medical Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-02 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Sharon,\n",
+ "\n",
+ "Happy New Year!\n",
+ "\n",
+ "Can you please pass along this note to Dr.Berube? Thank you!\n",
+ "\n",
+ "My egg retrieval procedure is scheduled for January 29th and I have Desmopressin spray to use before the procedure. Does she still feel comfortable with the treatment plan after reviewing the most recent lab work (below)?\n",
+ "\n",
+ "11/07/2024<9>Fibrinogen<9>\n",
+ "11/07/2024<9>Thrombin Time<9>\n",
+ "11/07/2024<9>CBC w/o Diff<9>\n",
+ "11/07/2024<9>Factor Vlll Assay<9>\n",
+ "11/07/2024<9>Von Willebrand Factor Activity<9>\n",
+ "11/07/2024<9>Von Willebrand Ag<9>\n",
+ "\n",
+ "Thanks!\n",
+ "Amanda \n",
+ "----------------------------------------\n",
+ "Provider Response by BERUBE, CAROLINE:\n",
+ "Hi Amanda,\n",
+ "\n",
+ "I reviewed your results. No new issue. I continue to recommend Desmopressin nasal spray prior to your egg retrieval as outlined in my last clinic note. \n",
+ "Good luck with your egg retrieval!\n",
+ "\n",
+ "Sincerely,\n",
+ "Caroline Berube, MD\n",
+ "\n",
+ "----------------------------------------\n",
+ "idx: 90353\n",
+ "Subject: RE: Non-urgent Medical Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-20 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Thanks, Sharon! When will she be back?\n",
+ "\n",
+ "Thanks,\n",
+ "Amanda\n",
+ "----------------------------------------\n",
+ "Provider Response by LEE, SHARON:\n",
+ "Hi Amanda,\n",
+ "\n",
+ "No problem, she will be back about a week and a half.\n",
+ "\n",
+ "Best,\n",
+ "\n",
+ "Sharon Lee, BSN, RN\n",
+ "Nurse coordinator, hematology\n",
+ "\n",
+ "----------------------------------------\n",
+ "idx: 90352\n",
+ "Subject: Non-urgent Medical Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-19 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi all,\n",
+ "\n",
+ "Hope you are doing well!\n",
+ "\n",
+ "Two quick questions -\n",
+ "\n",
+ "1. Dr. Berube had me complete a few labs but I haven't heard any follow up. Can you confirm if there is anything she wants me to be aware of with the results? \n",
+ "\n",
+ "2. I had my last iron infusion 4 weeks ago - are there labs I should be doing to check on my iron levels?\n",
+ "\n",
+ "Thank you!\n",
+ "Amanda \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hi Amanda,\n",
+ "\n",
+ "I believe Dr. Berube has reviewed your labs, she is currently out of town but when she returns I will make sure to see if she any additional instructions. I have placed repeat labs for you to get done 6-8 weeks after your last venofer infusion, which should be around beginning of January.\n",
+ "\n",
+ "Best,\n",
+ "\n",
+ "Sharon Lee, BSN, RN\n",
+ "Nurse coordinator, hematology \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8157\n",
+ "➡️ Message by Sender GOMEZ, ELIZABETH [ S0190535]: Hi Dr Brar,I hope you're having a great holiday season. As we had discussed in our last appointment, I consulted with a gastro (Dr Nguyen) and had a colonoscopy + endoscopy. That procedure did not find anything unusual, and while Dr Nguyen says that there are further steps we could take to investigate possible issues with my iron absorption (\"a specific type of CT scan to evaluate for possible small intestinal problems followed by a possible video capsule endoscopy to take pictures of your small intestine\"), I know that we had discussed trying an iron infusion if the colonoscopy did not find anything conclusive. I think that's the approach I would prefer since it would presumably reveal a potential bone marrow issue (if my blood counts stay low) or higher iron/blood counts don't change how I feel (in which case I don't see any reason to keep investigating unless my current levels are otherwise concerning in and of themselves).Does that seem reasonable to you?Thank you,Isaiah \n",
+ "➡️ Provider's response to this specific message is: Hi IsaiahDr Brar mentioned previously that IV iron was not needed at this time but can consider it if there's a drop in labs. He would like for you to repeat labs in April and we can go from thereI will also let him know of your message. Thanks for the updateThanksChi, RN\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 254403764\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 64479\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-06 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi,\n",
+ "\n",
+ "Unless Dr Brar would advise against it, I would like to try the iron injection for those reasons (I.e. to see if it helps energy levels or, on the other side, shows that my blood counts don’t improve and therefore we might need to check marrow). \n",
+ "\n",
+ "Thanks,\n",
+ "Isaiah \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 64478\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-30 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Ok. I thought we had discussed an iron infusion as the next step after the colonoscopy, but maybe I’m misremembering. \n",
+ "\n",
+ "Thanks,\n",
+ "Isaiah \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 64477\n",
+ "Subject: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-30 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr Brar,\n",
+ "\n",
+ "I hope you're having a great holiday season. As we had discussed in our last appointment, I consulted with a gastro (Dr Nguyen) and had a colonoscopy + endoscopy. That procedure did not find anything unusual, and while Dr Nguyen says that there are further steps we could take to investigate possible issues with my iron absorption (\"a specific type of CT scan to evaluate for possible small intestinal problems followed by a possible video capsule endoscopy to take pictures of your small intestine\"), I know that we had discussed trying an iron infusion if the colonoscopy did not find anything conclusive. I think that's the approach I would prefer since it would presumably reveal a potential bone marrow issue (if my blood counts stay low) or higher iron/blood counts don't change how I feel (in which case I don't see any reason to keep investigating unless my current levels are otherwise concerning in and of themselves).\n",
+ "\n",
+ "Does that seem reasonable to you?\n",
+ "\n",
+ "Thank you,\n",
+ "Isaiah \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hi Isaiah\n",
+ "\n",
+ "Dr Brar mentioned previously that IV iron was not needed at this time but can consider it if there's a drop in labs. He would like for you to repeat labs in April and we can go from there\n",
+ "I will also let him know of your message. Thanks for the update\n",
+ "\n",
+ "Thanks\n",
+ "Chi, RN\n",
+ "----------------------------------------\n",
+ "idx: 64476\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-14 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Ok, thank you. Is any fasting necessary?\n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "Non fasting\n",
+ "\n",
+ "Thanks\n",
+ "Andrea M\n",
+ "\n",
+ "----------------------------------------\n",
+ "idx: 64475\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-10 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi,\n",
+ "\n",
+ "Just following up on this to see what Dr Brar thinks. \n",
+ "\n",
+ "Thank you \n",
+ "----------------------------------------\n",
+ "Provider Response by APOSTOL, JENNY,:\n",
+ "Hello Isaiah,\n",
+ "\n",
+ "We would be happy to set you up for IV iron. Since your last labs are 3 months old (from October), please first obtain an updated CBC/d and ferritin lab. You have orders in place and can go to any of our Stanford lab locations. If you remain in the same range as prior, we will then set up a single dose of IV iron. Please let us know if you have any questions or concerns.\n",
+ "\n",
+ "Thank you.\n",
+ "\n",
+ "Jenny, RN\n",
+ "\n",
+ "Blake Wilbur Lab\n",
+ "900 Blake Wilbur Drive\n",
+ "1st Floor, Room W1083\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am - 5:30pm\n",
+ " \n",
+ "Cancer Center Lab\n",
+ "875 Blake Wilbur Drive\n",
+ "Room CC-1104\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am - 5:30pm\n",
+ " \n",
+ "Hoover Lab\n",
+ "211 Quarry Road\n",
+ "Suite 101\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am -7:00pm\n",
+ " \n",
+ "Boswell Lab\n",
+ "300 Pasteur Drive\n",
+ "Pavilion A, Level 1, A12\n",
+ "Stanford, CA 94305\n",
+ "Hours: Mon-Fri 6:00am -5:30pm\n",
+ "Sat-Sun 7:00am-3:30pm\n",
+ " \n",
+ "Redwood City\n",
+ "440 Broadway Street, Pavillion B 1st Floor B11\n",
+ "Redwood City, California 94063\n",
+ "Hours: Monday - Friday 7am - 6pm\n",
+ " \n",
+ "Blood Draw at Stanford Cancer Center South Bay\n",
+ "2589 Samaritan Drive\n",
+ "4th Floor, San Jose, CA 95124 \n",
+ "Hours: Mon-Fri 7:00am-6:00pm\n",
+ " \n",
+ "Blood Draw at Stanford Emeryville\n",
+ "5800 Hollis Street\n",
+ "First Floor, Pavilion B\n",
+ "Emeryville, CA 94608\n",
+ "Hours: Mon-Fri 7:30am-5:00pm\n",
+ "\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8119\n",
+ "➡️ Message by Sender DIEP, ROBERT [ S0328143]: Hello,Should I be getting an Iron infusion soon while we are waiting for my bone marrow biopsy/copper? My HGB is steadily dropping again. Platelets are also dropping and I don’t know why. Dr Muppidi stopped my Imuran 10 days ago to see if that would give some clarification. Also wanted to mention that I have a lot of fluid retention and painful cramping all over. If we do iron infusion just a reminder that I need a different kind because of the reaction I had the first time.Thank you,Jason\n",
+ "➡️ Provider's response to this specific message is: Hi Jason,Dr Diep has ordered you an IV iron infusion, iron sucrose. (Your received iron dextran previously.) Our infusion team will be reaching out to get this scheduled as well as postpone your bone marrow biopsy by 4-6 weeks to allow optimal time for absorption of the increased TPN copper and the IV iron.Please reach out with any questions,Amy MooreRN Coordinator, HematologyIron Sucrose Injection (IRON SUCROSE - INJECTION)For anemia.Brand Name(s): VenoferGeneric Name: Iron SucroseInstructionsThis medicine is given as an IV injection into a vein.Read and make sure you understand the instructions for measuring your dose and using the syringe before using this medicine.Always inspect the medicine before using.The liquid should be clear and dark brown.Do not use the medicine if it contains any particles or if it has changed color.Keep medicine at room temperature. Protect from light.Speak with your nurse or pharmacist about how long the medicine can be stored safely at room temperature or in the refrigerator before it needs to be discarded.Never use any medicine that has expired.Discard any remaining medicine after your dose is given.If you miss a dose, contact your doctor for instructions.Drug interactions can change how medicines work or increase risk for side effects. Tell your health care providers about all medicines taken. Include prescription and over-the-counter medicines, vitamins, and herbal medicines. Speak with your doctor or pharmacist before starting or stopping any medicine.It is very important that you follow your doctor's instructions for all blood tests.CautionsDuring pregnancy, this medicine should be used only when clearly needed. Talk to your doctor about the risks and benefits.Tell your doctor and pharmacist if you ever had an allergic reaction to a medicine.Do not use the medication any more than instructed.This medicine may cause dizziness or fainting. Do not stand or sit up quickly.This medicine passes into breast milk. Ask your doctor before breastfeeding.Ask your pharmacist how to properly throw away used needles or syringes.Do not share this medicine with anyone who has not been prescribed this medicine.Side EffectsThe following is a list of some common side effects from this medicine. Please speak with your doctor about what you should do if you experience these or other side effects.constipation or diarrheadizzinessswelling of the legs, feet, and handsmuscle crampsnausea and vomitingchanges in taste or unpleasant tasteCall your doctor or get medical help right away if you notice any of these more serious side effects:chest painfaintingsevere or persistent headachefast or irregular heart beatssevere stomach or bowel painblurring or changes of visionA few people may have an allergic reaction to this medicine. Symptoms can include difficulty breathing, skin rash, itching, swelling, or severe dizziness. If you notice any of these symptoms, seek medical help quickly.Please speak with your doctor, nurse, or pharmacist if you have any questions about this medicine.IMPORTANT NOTE: This document tells you briefly how to take your medicine, but it does not tell you all there is to know about it. Your doctor or pharmacist may give you other documents about your medicine. Please talk to them if you have any questions. Always follow their advice.There is a more complete description of this medicine available in English. Scan this code on your smartphone or tablet or use the web address below. You can also ask your pharmacist for a printout. If you have any questions, please ask your pharmacist.The display and use of this drug information is subject to Terms of Use.More information about IRON SUCROSE - INJECTION Copyright(c) 2024 First Databank, Inc.Selected from data included with permission and copyright by First DataBank, Inc. This copyrighted material has been downloaded from a licensed data provider and is not for distribution, except as may be authorized by the applicable terms of use.Conditions of Use: The information in this database is intended to supplement, not substitute for the expertise and judgment of healthcare professionals. The information is not intended to cover all possible uses, directions, precautions, drug interactions or adverse effects nor should it be construed to indicate that use of a particular drug is safe, appropriate or effective for you or anyone else. A healthcare professional should be consulted before taking any drug, changing any diet or commencing or discontinuing any course of treatment. The display and use of this drug information is subject to express Terms of Use.Care instructions adapted under license by your healthcare professional. If you have questions about a medical condition or this instruction, always ask your healthcare professional. Ignite Healthwise, LLC disclaims any warranty or liability for your use of this information.\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 254855364\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 41220\n",
+ "Subject: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-06 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello,\n",
+ "Should I be getting an Iron infusion soon while we are waiting for my bone marrow biopsy/copper? My HGB is steadily dropping again. Platelets are also dropping and I don’t know why. Dr Muppidi stopped my Imuran 10 days ago to see if that would give some clarification. Also wanted to mention that I have a lot of fluid retention and painful cramping all over. \n",
+ "\n",
+ "If we do iron infusion just a reminder that I need a different kind because of the reaction I had the first time.\n",
+ "\n",
+ "Thank you,\n",
+ "Jason\n",
+ "----------------------------------------\n",
+ "Provider Response by MOORE, AMY:\n",
+ "Hi Jason,\n",
+ "\n",
+ "Dr Diep has ordered you an IV iron infusion, iron sucrose. (Your received iron dextran previously.) Our infusion team will be reaching out to get this scheduled as well as postpone your bone marrow biopsy by 4-6 weeks to allow optimal time for absorption of the increased TPN copper and the IV iron.\n",
+ "\n",
+ "Please reach out with any questions,\n",
+ "\n",
+ "Amy Moore\n",
+ "RN Coordinator, Hematology\n",
+ "\n",
+ "Iron Sucrose Injection (IRON SUCROSE - INJECTION)\n",
+ "For anemia.\n",
+ "Brand Name(s): Venofer\n",
+ "Generic Name: Iron Sucrose\n",
+ "Instructions\n",
+ "This medicine is given as an IV injection into a vein.\n",
+ "Read and make sure you understand the instructions for measuring your dose and using the syringe before using this medicine.\n",
+ "Always inspect the medicine before using.\n",
+ "The liquid should be clear and dark brown.\n",
+ "Do not use the medicine if it contains any particles or if it has changed color.\n",
+ "Keep medicine at room temperature. Protect from light.\n",
+ "Speak with your nurse or pharmacist about how long the medicine can be stored safely at room temperature or in the refrigerator before it needs to be discarded.\n",
+ "Never use any medicine that has expired.\n",
+ "Discard any remaining medicine after your dose is given.\n",
+ "If you miss a dose, contact your doctor for instructions.\n",
+ "Drug interactions can change how medicines work or increase risk for side effects. Tell your health care providers about all medicines taken. Include prescription and over-the-counter medicines, vitamins, and herbal medicines. Speak with your doctor or pharmacist before starting or stopping any medicine.\n",
+ "It is very important that you follow your doctor's instructions for all blood tests.\n",
+ "Cautions\n",
+ "During pregnancy, this medicine should be used only when clearly needed. Talk to your doctor about the risks and benefits.\n",
+ "Tell your doctor and pharmacist if you ever had an allergic reaction to a medicine.\n",
+ "Do not use the medication any more than instructed.\n",
+ "This medicine may cause dizziness or fainting. Do not stand or sit up quickly.\n",
+ "This medicine passes into breast milk. Ask your doctor before breastfeeding.\n",
+ "Ask your pharmacist how to properly throw away used needles or syringes.\n",
+ "Do not share this medicine with anyone who has not been prescribed this medicine.\n",
+ "Side Effects\n",
+ "The following is a list of some common side effects from this medicine. Please speak with your doctor about what you should do if you experience these or other side effects.\n",
+ "constipation or diarrhea\n",
+ "dizziness\n",
+ "swelling of the legs, feet, and hands\n",
+ "muscle cramps\n",
+ "nausea and vomiting\n",
+ "changes in taste or unpleasant taste\n",
+ "Call your doctor or get medical help right away if you notice any of these more serious side effects:\n",
+ "chest pain\n",
+ "fainting\n",
+ "severe or persistent headache\n",
+ "fast or irregular heart beats\n",
+ "severe stomach or bowel pain\n",
+ "blurring or changes of vision\n",
+ "A few people may have an allergic reaction to this medicine. Symptoms can include difficulty breathing, skin rash, itching, swelling, or severe dizziness. If you notice any of these symptoms, seek medical help quickly.\n",
+ "Please speak with your doctor, nurse, or pharmacist if you have any questions about this medicine.\n",
+ "IMPORTANT NOTE: This document tells you briefly how to take your medicine, but it does not tell you all there is to know about it. Your doctor or pharmacist may give you other documents about your medicine. Please talk to them if you have any questions. Always follow their advice.\n",
+ "There is a more complete description of this medicine available in English. Scan this code on your smartphone or tablet or use the web address below. You can also ask your pharmacist for a printout. If you have any questions, please ask your pharmacist.\n",
+ "The display and use of this drug information is subject to Terms of Use.\n",
+ "More information about IRON SUCROSE - INJECTION \n",
+ " \n",
+ "Copyright(c) 2024 First Databank, Inc.\n",
+ "Selected from data included with permission and copyright by First DataBank, Inc. This copyrighted material has been downloaded from a licensed data provider and is not for distribution, except as may be authorized by the applicable terms of use.\n",
+ "Conditions of Use: The information in this database is intended to supplement, not substitute for the expertise and judgment of healthcare professionals. The information is not intended to cover all possible uses, directions, precautions, drug interactions or adverse effects nor should it be construed to indicate that use of a particular drug is safe, appropriate or effective for you or anyone else. A healthcare professional should be consulted before taking any drug, changing any diet or commencing or discontinuing any course of treatment. The display and use of this drug information is subject to express Terms of Use.\n",
+ "Care instructions adapted under license by your healthcare professional. If you have questions about a medical condition or this instruction, always ask your healthcare professional. Ignite Healthwise, LLC disclaims any warranty or liability for your use of this information.\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8113\n",
+ "➡️ Message by Sender GOMEZ, ELIZABETH [ S0190535]: Hi Dr. Salmasi,I hope you are doing well. Can you please put in a request for me to do my labs? I want to see if it’s time for me to do another iron infusion as I haven’t had much energy lately.Thanks,Jessica\n",
+ "➡️ Provider's response to this specific message is: Hi Jessica,You have labs placed for you at Stanford! They are available for you to get done every 3 months if you feel worsening fatigue.Best,Sharon Lee, BSN, RNNurse coordinator, hematology\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 250109300\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 266210\n",
+ "Subject: RE:Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-11-08 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Thank you. I will do them by Monday. \n",
+ "----------------------------------------\n",
+ "Provider Response by LEE, SHARON:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 266209\n",
+ "Subject: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-11-08 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr. Salmasi,\n",
+ "\n",
+ "I hope you are doing well. Can you please put in a request for me to do my labs? I want to see if it’s time for me to do another iron infusion as I haven’t had much energy lately.\n",
+ "\n",
+ "Thanks,\n",
+ "Jessica\n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hi Jessica,\n",
+ "\n",
+ "You have labs placed for you at Stanford! They are available for you to get done every 3 months if you feel worsening fatigue.\n",
+ "\n",
+ "Best,\n",
+ "\n",
+ "Sharon Lee, BSN, RN\n",
+ "Nurse coordinator, hematology\n",
+ "\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n"
+ ]
+ }
+ ],
+ "source": [
+ "results = run_tiered_retrieval(\n",
+ " query_vector_literal=query_vector_literal,\n",
+ " receiver=receiver,\n",
+ " department=department,\n",
+ " specialty=specialty,\n",
+ " client=client,\n",
+ " target_N=10, # Number of final results you want\n",
+ " similarity_cutoff=0.7 # The minimum cosine similarity required\n",
+ ")\n",
+ "\n",
+ "\n",
+ "#show results\n",
+ "print(\"Query Parameters:\")\n",
+ "print(f\"query_message: {query_message}\")\n",
+ "print(f\"receiver: {receiver}\")\n",
+ "print(f\"department: {department}\")\n",
+ "print(f\"specialty: {specialty}\")\n",
+ "\n",
+ "try:\n",
+ " print(f\"\\nNumber of results: {len(results)}\")\n",
+ " \n",
+ " if len(results) > 0:\n",
+ " for row in results:\n",
+ " print(\"##\" * 80)\n",
+ " print(f\"➡️ Similarity: {row['cosine_similarity']:.4f}\")\n",
+ " print(f\"➡️ Message by Sender {row['Message Sender']}: {row['Patient Message']}\")\n",
+ " print(f\"➡️ Provider's response to this specific message is: {row['Actual Response Sent to Patient']}\")\n",
+ " print(f\"➡️ This result is from tier: {row['retrieval_tier']}\")\n",
+ " print(\"➡️ -----------printing the whole thread-------------\")\n",
+ " beatiful_print_thread(row[\"Thread ID\"], answer_question_paired_data_dedup)\n",
+ " print(\"##\" * 80)\n",
+ " else:\n",
+ " print(\"No results found matching the criteria\")\n",
+ "except Exception as e:\n",
+ " print(f\"Error getting results: {str(e)}\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## -----------Weighted Retrieval-----------"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def get_personalized_score(row, receiver, department, specialty, \n",
+ " sender_weight=0.2, dept_weight=0.1, spec_weight=0.05):\n",
+ " score = row[\"cosine_similarity\"]\n",
+ " if row[\"Recipient Names\"] == receiver:\n",
+ " score += sender_weight\n",
+ " elif row[\"Message Department\"] == department:\n",
+ " score += dept_weight\n",
+ " elif row[\"Department Specialty Title\"] == specialty:\n",
+ " score += spec_weight\n",
+ " return score\n",
+ "\n",
+ "def weighted_retrieval(query_vector_literal, receiver, department, specialty, client, top_k=100, final_N=5,\n",
+ " sender_weight=0.2, dept_weight=0.1, spec_weight=0.05, similarity_cutoff=0.7):\n",
+ " # Run the broad query\n",
+ " base_query = f\"\"\"\n",
+ " WITH input_embedding AS (\n",
+ " SELECT {query_vector_literal} AS input_vec\n",
+ " )\n",
+ " SELECT\n",
+ " t.`Thread ID`,\n",
+ " t.`Patient Message`,\n",
+ " t.`Message Sender`,\n",
+ " t.`Recipient Names`,\n",
+ " t.`Message Department`,\n",
+ " t.`Department Specialty Title`,\n",
+ " t.`Actual Response Sent to Patient`,\n",
+ " (\n",
+ " SELECT SUM(x * y)\n",
+ " FROM UNNEST(t.embeddings) AS x WITH OFFSET i\n",
+ " JOIN UNNEST(input_vec) AS y WITH OFFSET j\n",
+ " ON i = j\n",
+ " ) /\n",
+ " (\n",
+ " SQRT((SELECT SUM(POW(x, 2)) FROM UNNEST(t.embeddings) AS x)) *\n",
+ " SQRT((SELECT SUM(POW(y, 2)) FROM UNNEST(input_vec) AS y))\n",
+ " ) AS cosine_similarity\n",
+ " FROM `som-nero-phi-jonc101.rag_embedding_R01.messages_with_embeddings` AS t, input_embedding\n",
+ " ORDER BY cosine_similarity DESC\n",
+ " LIMIT @K\n",
+ " \"\"\"\n",
+ " params = [bigquery.ScalarQueryParameter(\"K\", \"INT64\", top_k)]\n",
+ " job = client.query(\n",
+ " base_query,\n",
+ " job_config=bigquery.QueryJobConfig(query_parameters=params)\n",
+ " )\n",
+ " rows = list(job.result())\n",
+ "\n",
+ " # Compute personalized score for each row, filter by similarity_cutoff\n",
+ " scored = []\n",
+ " for r in rows:\n",
+ " row_dict = dict(r)\n",
+ " if row_dict[\"cosine_similarity\"] >= similarity_cutoff:\n",
+ " row_dict[\"personalized_score\"] = get_personalized_score(\n",
+ " row_dict, receiver, department, specialty, \n",
+ " sender_weight, dept_weight, spec_weight\n",
+ " )\n",
+ " # Annotate which tier matched\n",
+ " if row_dict[\"Recipient Names\"] == receiver:\n",
+ " row_dict[\"personalization_tier\"] = \"sender\"\n",
+ " elif row_dict[\"Message Department\"] == department:\n",
+ " row_dict[\"personalization_tier\"] = \"department\"\n",
+ " elif row_dict[\"Department Specialty Title\"] == specialty:\n",
+ " row_dict[\"personalization_tier\"] = \"specialty\"\n",
+ " else:\n",
+ " row_dict[\"personalization_tier\"] = \"none\"\n",
+ " scored.append(row_dict)\n",
+ "\n",
+ " # Sort by personalized_score (descending)\n",
+ " scored = sorted(scored, key=lambda x: x[\"personalized_score\"], reverse=True)\n",
+ "\n",
+ " # Return top N\n",
+ " return scored[:final_N]\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Query Parameters:\n",
+ "query_message: Hi Dr. Martin,I wanted to touch base regarding my most recent blood work from earlier this month. I’ve been feeling extra fatigued and short of breath lately, and I’m a bit worried it might be related to my ongoing iron issues. Would you be able to let me know if my latest results suggest it’s time to schedule another iron infusion? Also, since I usually need an ultrasound-guided IV, should I go ahead and book that appointment too?Thanks so much for your help!Best, Melissa\n",
+ "receiver: MARTIN, BETH\n",
+ "department: HEMATOLOGY\n",
+ "specialty: Hematology\n",
+ "\n",
+ "Number of results: 5\n",
+ "################################################################################################################################################################\n",
+ "[sender] Score: 1.012 (CosSim: 0.812)\n",
+ "➡️ Message by Sender APOSTOL, JENNY [ S0333370]: Hi Dr. Martin,I hope you're well! Did you have an opportunity to review the labs my mom completed on 11/14/24? If so, do you think she's due for an Iron Infusion appointment (and, USGPIV appt preceding Iron Infusion)?Thanks!Barbara\n",
+ "➡️ Provider's response to this specific message is: Barbara, No iron needed--the anemia is mild and is due to inflammation, not iron deficiency. I had contacted Dr Haddock about this months ago when this pattern developed--cause is not clear. I hope that her health is otherwise stable, that you're all doing well despite the world's turmoil. Beth \n",
+ "➡️ This result is from tier: sender\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 252160980\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 161352\n",
+ "Subject: Scheduling Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-04 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr. Martin,\n",
+ "I hope you're well! \n",
+ "\n",
+ "Did you have an opportunity to review the labs my mom completed on 11/14/24? If so, do you think she's due for an Iron Infusion appointment (and, USGPIV appt preceding Iron Infusion)?\n",
+ "\n",
+ "Thanks!\n",
+ "Barbara\n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Barbara, \n",
+ "\n",
+ "No iron needed--the anemia is mild and is due to inflammation, not iron deficiency. I had contacted Dr Haddock about this months ago when this pattern developed--cause is not clear. \n",
+ "\n",
+ "I hope that her health is otherwise stable, that you're all doing well despite the world's turmoil. \n",
+ "\n",
+ "Beth \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "[sender] Score: 1.001 (CosSim: 0.801)\n",
+ "➡️ Message by Sender APOSTOL, JENNY [ S0333370]: Hello Dr. Martin,I am following up on our visit on 8/30/2024 where you advised that I receive IV iron to compensate for ongoing bleeding and to assist with heart failure. At that time you stated that you would discuss further with DR. Galatin to coordinate iron infusions at CCSB. To that end, I have never received any contact for the above mentioned iron infusions. Please see the attached progress/clinical notes from our 8/30 visit, page 7 in particular.Some how my iron infusions have \"slipped through the cracks\". I look forward to your response and thank you in advance.Regards,Thomas Obata\n",
+ "➡️ Provider's response to this specific message is: Mr Obata, I 'm recommending a change in plan as I see that you have an upcoming liver transplant appt at the end of the month and that you're due to have a fibrinogen level and ATIII level checked. I'm still checking in with Dr Galatin for who will take the lead, but if you are getting transplanted here , then you should have a Stanford based hematologist for potential coagulation issues --and possibly iv iron if needed. If you are being considered at UCSF, then I recommend that you see Dr Cornett as well --or , if you would like an independent opinion from mine, I'm happy to refer you. I see that you prefer Quest labs: I've placed orders there as well. Would you be able to go there or to a Stanford lab any time within a week or earlier of that appt, at least by 1/23? Non fasting. Sincerely, Beth A. Martin, MD with Jenny Apostol, RN Attending Physician Division of Hematology Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "➡️ This result is from tier: sender\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 255287111\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 21428\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-14 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Dr. Martin,\n",
+ "\n",
+ "Thank you, I look forward to your pre-op plan. Please understand that I could be getting the call for a liver match any day, therefore time is of the essence. Thank you in advance for your understanding.\n",
+ "\n",
+ "Best regards,\n",
+ "\n",
+ "Thomas\n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 21427\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-14 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Dr. Martin,\n",
+ "I am listed as top priority and in the number one position on the Stanford liver transplant list. The AVMs in my liver are compromising my heart, hence the top priority position.\n",
+ "I just visited Question Diagnostics and completed my blood panel.\n",
+ "Thank you,\n",
+ "Thomas Obata \n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Got it\n",
+ "\n",
+ "I will develop a coag pre op\n",
+ "Plan for you \n",
+ "\n",
+ "Beth \n",
+ "----------------------------------------\n",
+ "idx: 21426\n",
+ "Subject: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-09 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Dr. Martin,\n",
+ "\n",
+ "I am following up on our visit on 8/30/2024 where you advised that I receive IV iron to compensate for ongoing bleeding and to assist with heart failure. At that time you stated that you would discuss further with DR. Galatin to coordinate iron infusions at CCSB. To that end, I have never received any contact for the above mentioned iron infusions. \n",
+ "Please see the attached progress/clinical notes from our 8/30 visit, page 7 in particular.\n",
+ "\n",
+ "Some how my iron infusions have \"slipped through the cracks\". I look forward to your response and thank you in advance.\n",
+ "\n",
+ "Regards,\n",
+ "Thomas Obata\n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Mr Obata, \n",
+ "\n",
+ "I 'm recommending a change in plan as I see that you have an upcoming liver transplant appt at the end of the month and that you're due to have a fibrinogen level and ATIII level checked. \n",
+ "\n",
+ "I'm still checking in with Dr Galatin for who will take the lead, but if you are getting transplanted here , then you should have a Stanford based hematologist for potential coagulation issues --and possibly iv iron if needed. \n",
+ "\n",
+ "If you are being considered at UCSF, then I recommend that you see Dr Cornett as well --or , if you would like an independent opinion from mine, I'm happy to refer you. \n",
+ "\n",
+ "I see that you prefer Quest labs: I've placed orders there as well. Would you be able to go there or to a Stanford lab any time within a week or earlier of that appt, at least by 1/23? Non fasting. \n",
+ "\n",
+ "Sincerely, \n",
+ "\n",
+ "Beth A. Martin, MD with Jenny Apostol, RN \n",
+ "Attending Physician \n",
+ "Division of Hematology \n",
+ "\n",
+ "Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "[department] Score: 0.948 (CosSim: 0.848)\n",
+ "➡️ Message by Sender GOMEZ, ELIZABETH [ S0190535]: Hello Dr Martin Hope all is well, I wanted to reach out to you in regards of my iron deficiency. I know I’m scheduled to see you in March but I’m starting to get the same symptoms as before. I was wondering if we could do some labs to check my iron levels. Thank you for your time Laura Gonzalez \n",
+ "➡️ Provider's response to this specific message is: Hello Laura,What symptoms are you having? You have standing lab orders in place and can go to any of our Stanford lab locations. Please let us know if you have any questions or concerns.Thank you.Jenny, RNBlake Wilbur Lab900 Blake Wilbur Drive1st Floor, Room W1083Palo Alto, CA 94304Hours: Mon-Fri 7:00am - 5:30pm Cancer Center Lab875 Blake Wilbur DriveRoom CC-1104Palo Alto, CA 94304Hours: Mon-Fri 7:00am - 5:30pm Hoover Lab211 Quarry RoadSuite 101Palo Alto, CA 94304Hours: Mon-Fri 7:00am -7:00pm Boswell Lab300 Pasteur DrivePavilion A, Level 1, A12Stanford, CA 94305Hours: Mon-Fri 6:00am -5:30pmSat-Sun 7:00am-3:30pm Redwood City440 Broadway Street, Pavillion B 1st Floor B11Redwood City, California 94063Hours: Monday - Friday 7am - 6pm Blood Draw at Stanford Cancer Center South Bay2589 Samaritan Drive4th Floor, San Jose, CA 95124 Hours: Mon-Fri 7:00am-6:00pm Blood Draw at Stanford Emeryville5800 Hollis StreetFirst Floor, Pavilion BEmeryville, CA 94608Hours: Mon-Fri 7:30am-5:00pm\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 255116564\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 28794\n",
+ "Subject: RE: Ordered Test Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-08 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Shortness of breath when walking short distances. Also is it possible to send the orders closer to home I have a quest here in Fremont \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hello Laura,\n",
+ "\n",
+ "I have placed lab orders for you at Quest. Please let us know once you've done the labs so we know to look for results. We do not get automatic alerts for outside results. If your symptoms should worsen please be evaluated by urgent care, ER, or call for a sick call appt. Thank you and take care.\n",
+ "\n",
+ "Jenny, RN \n",
+ "----------------------------------------\n",
+ "idx: 28793\n",
+ "Subject: Ordered Test Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-08 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Dr Martin \n",
+ "Hope all is well, I wanted to reach out to you in regards of my iron deficiency. I know I’m scheduled to see you in March but I’m starting to get the same symptoms as before. I was wondering if we could do some labs to check my iron levels. \n",
+ "Thank you for your time \n",
+ "Laura Gonzalez \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hello Laura,\n",
+ "\n",
+ "What symptoms are you having? You have standing lab orders in place and can go to any of our Stanford lab locations. Please let us know if you have any questions or concerns.\n",
+ "\n",
+ "Thank you.\n",
+ "\n",
+ "Jenny, RN\n",
+ "\n",
+ "Blake Wilbur Lab\n",
+ "900 Blake Wilbur Drive\n",
+ "1st Floor, Room W1083\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am - 5:30pm\n",
+ " \n",
+ "Cancer Center Lab\n",
+ "875 Blake Wilbur Drive\n",
+ "Room CC-1104\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am - 5:30pm\n",
+ " \n",
+ "Hoover Lab\n",
+ "211 Quarry Road\n",
+ "Suite 101\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am -7:00pm\n",
+ " \n",
+ "Boswell Lab\n",
+ "300 Pasteur Drive\n",
+ "Pavilion A, Level 1, A12\n",
+ "Stanford, CA 94305\n",
+ "Hours: Mon-Fri 6:00am -5:30pm\n",
+ "Sat-Sun 7:00am-3:30pm\n",
+ " \n",
+ "Redwood City\n",
+ "440 Broadway Street, Pavillion B 1st Floor B11\n",
+ "Redwood City, California 94063\n",
+ "Hours: Monday - Friday 7am - 6pm\n",
+ " \n",
+ "Blood Draw at Stanford Cancer Center South Bay\n",
+ "2589 Samaritan Drive\n",
+ "4th Floor, San Jose, CA 95124 \n",
+ "Hours: Mon-Fri 7:00am-6:00pm\n",
+ " \n",
+ "Blood Draw at Stanford Emeryville\n",
+ "5800 Hollis Street\n",
+ "First Floor, Pavilion B\n",
+ "Emeryville, CA 94608\n",
+ "Hours: Mon-Fri 7:30am-5:00pm\n",
+ "\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "[department] Score: 0.944 (CosSim: 0.844)\n",
+ "➡️ Message by Sender ZAMORA, ESMERALDA [ S0352882]: Hi Dr.Berube, I did a full CBC blood draw yesterday at PAMF. Do you have access to that? The nurse from my OBGYN’s office said I am anemic and should take iron supplements. I responded letting her know that I actually have an iron overload and was advised to avoid any supplements with iron. Can you confirm this is correct?I have my anatomy scan at Stanford this morning and can pop into the lab for more blood test if you prefer that. Let me know. Thanks! Brianna \n",
+ "➡️ Provider's response to this specific message is: Hi Brianna, You are correct. You have been diagnosed with compensated hemolytic anemia due to hereditary xerocytosis, and your iron levels are currently being managed through regular phlebotomies. It's essential to understand the implications of your condition and the reason for not taking iron supplements.Key Takeaway:Do not take iron supplements. You are at risk for iron overload due to your hereditary xerocytosis, and adding more iron can worsen your condition. Focus on regular blood checks and maintain a healthy diet.Understanding Your Condition:Hereditary Xerocytosis: This is a rare genetic condition affecting red blood cells (RBCs) that results in increased RBC destruction (hemolysis). Your specific mutation (PIEZO1) causes changes in your blood cells leading to this condition.Iron Overload: Due to your hereditary xerocytosis, you are at risk for iron overload, especially since this condition causes increased RBC turnover. Your recent liver MRI has indicated significant iron overload.Current Treatment:You are receiving phlebotomies (scheduled blood draws to reduce excess iron) to help manage your iron levels. Since starting phlebotomies in June 2023, your ferritin (a marker of iron levels) has been gradually decreasing. Note: since you are pregnant, we have been holding phlebotomy for the remainder of your pregnancy. It's vital to continue avoiding iron supplementation during this time and keep an open line of communication with your healthcare team regarding your health and iron management.Avoiding Iron Supplements:Why Not Take Iron Supplements: Given your diagnosis of iron overload, taking iron supplements can exacerbate the problem. Your body already has excess iron due to the hemolytic anemia, and adding more iron can lead to further complications, including damage to your liver and other organs.Monitor Your Iron Levels: Since your treatment involves phlebotomy to manage iron overload, it's crucial not to introduce additional iron into your system. Always discuss any new supplements or medications with your healthcare provider.Additional Nutritional Guidance:While you need to avoid iron supplements, ensure that you are getting adequate nutrition, particularly folic acid, which is important for blood health. Folic acid can help support your body in producing healthy red blood cells.When to Seek Help:If you experience symptoms such as fatigue, weakness, or any unusual symptoms, contact your healthcare provider promptly. Regular follow-up and monitoring are critical to managing your condition effectively.If you have any additional questions, feel free to ask!Thanks, J Ryan, MSN, RNNurse Coordinator, Hematology\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 255261295\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 22548\n",
+ "Subject: Test Results Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-09 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr.Berube, \n",
+ "\n",
+ "I did a full CBC blood draw yesterday at PAMF. Do you have access to that? The nurse from my OBGYN’s office said I am anemic and should take iron supplements. I responded letting her know that I actually have an iron overload and was advised to avoid any supplements with iron. Can you confirm this is correct?\n",
+ "I have my anatomy scan at Stanford this morning and can pop into the lab for more blood test if you prefer that. Let me know. \n",
+ "\n",
+ "Thanks! \n",
+ "Brianna \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hi Brianna, \n",
+ "\n",
+ "You are correct. You have been diagnosed with compensated hemolytic anemia due to hereditary xerocytosis, and your iron levels are currently being managed through regular phlebotomies. It's essential to understand the implications of your condition and the reason for not taking iron supplements.\n",
+ "\n",
+ "Key Takeaway:\n",
+ "Do not take iron supplements. You are at risk for iron overload due to your hereditary xerocytosis, and adding more iron can worsen your condition. Focus on regular blood checks and maintain a healthy diet.\n",
+ "\n",
+ "Understanding Your Condition:\n",
+ "Hereditary Xerocytosis: This is a rare genetic condition affecting red blood cells (RBCs) that results in increased RBC destruction (hemolysis). Your specific mutation (PIEZO1) causes changes in your blood cells leading to this condition.\n",
+ "Iron Overload: Due to your hereditary xerocytosis, you are at risk for iron overload, especially since this condition causes increased RBC turnover. Your recent liver MRI has indicated significant iron overload.\n",
+ "\n",
+ "Current Treatment:\n",
+ "You are receiving phlebotomies (scheduled blood draws to reduce excess iron) to help manage your iron levels. Since starting phlebotomies in June 2023, your ferritin (a marker of iron levels) has been gradually decreasing. \n",
+ "\n",
+ "Note: since you are pregnant, we have been holding phlebotomy for the remainder of your pregnancy. It's vital to continue avoiding iron supplementation during this time and keep an open line of communication with your healthcare team regarding your health and iron management.\n",
+ "\n",
+ "Avoiding Iron Supplements:\n",
+ "Why Not Take Iron Supplements: Given your diagnosis of iron overload, taking iron supplements can exacerbate the problem. Your body already has excess iron due to the hemolytic anemia, and adding more iron can lead to further complications, including damage to your liver and other organs.\n",
+ "Monitor Your Iron Levels: Since your treatment involves phlebotomy to manage iron overload, it's crucial not to introduce additional iron into your system. Always discuss any new supplements or medications with your healthcare provider.\n",
+ "\n",
+ "Additional Nutritional Guidance:\n",
+ "While you need to avoid iron supplements, ensure that you are getting adequate nutrition, particularly folic acid, which is important for blood health. Folic acid can help support your body in producing healthy red blood cells.\n",
+ "\n",
+ "When to Seek Help:\n",
+ "If you experience symptoms such as fatigue, weakness, or any unusual symptoms, contact your healthcare provider promptly. Regular follow-up and monitoring are critical to managing your condition effectively.\n",
+ "\n",
+ "If you have any additional questions, feel free to ask!\n",
+ "\n",
+ "Thanks, \n",
+ "J Ryan, MSN, RN\n",
+ "Nurse Coordinator, Hematology\n",
+ "\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "[department] Score: 0.934 (CosSim: 0.834)\n",
+ "➡️ Message by Sender GO, LACRISHA [ S0203400]: Hi Dr Brar ,Happy holidays ! I just had labs drawn for the bariatric group that follows me for my vitamin intake and they suggested that I reach out to you and let you know that my iron is a bit low , my last infusion was 2/17/ 21 I believe . Should we do another infusion before it gets any worse ? Please advise? I’m feeling fine and I’m not chewing ice yet lol . Thank you \n",
+ "➡️ Provider's response to this specific message is: Hi ReginaI saw your labs but no CBC was drawn. We will need to see the CBC to discuss IV iron as well. Do you have CBC ordered by your PCP? If so please have this drawnThanksChi, RN\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 253687511\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 96155\n",
+ "Subject: RE: Non-urgent Medical Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-21 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Chi , \n",
+ "I think Dr Brar has standing blood orders for me to check every so often can you order them or do you still want me to ask my PCP . \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 96154\n",
+ "Subject: Non-urgent Medical Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-19 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr Brar ,\n",
+ "\n",
+ "Happy holidays ! \n",
+ "I just had labs drawn for the bariatric group that follows me for my vitamin intake and they suggested that I reach out to you and let you know that my iron is a bit low , my last infusion was 2/17/ 21 I believe . \n",
+ "Should we do another infusion before it gets any worse ? Please advise? I’m feeling fine and I’m not chewing ice yet lol . \n",
+ "\n",
+ "Thank you \n",
+ "----------------------------------------\n",
+ "Provider Response by HOANG, CHI:\n",
+ "Hi Regina\n",
+ "\n",
+ "I saw your labs but no CBC was drawn. We will need to see the CBC to discuss IV iron as well. Do you have CBC ordered by your PCP? If so please have this drawn\n",
+ "\n",
+ "Thanks\n",
+ "Chi, RN\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n"
+ ]
+ }
+ ],
+ "source": [
+ "results = weighted_retrieval(\n",
+ " query_vector_literal=query_vector_literal,\n",
+ " receiver=receiver,\n",
+ " department=department,\n",
+ " specialty=specialty,\n",
+ " client=client,\n",
+ " top_k=100,\n",
+ " final_N=5, # Final results you want\n",
+ " sender_weight=0.2,\n",
+ " dept_weight=0.1,\n",
+ " spec_weight=0.05,\n",
+ " similarity_cutoff=0.7\n",
+ ")\n",
+ "\n",
+ "#show results\n",
+ "print(\"Query Parameters:\")\n",
+ "print(f\"query_message: {query_message}\")\n",
+ "print(f\"receiver: {receiver}\")\n",
+ "print(f\"department: {department}\")\n",
+ "print(f\"specialty: {specialty}\")\n",
+ "\n",
+ "try:\n",
+ " print(f\"\\nNumber of results: {len(results)}\")\n",
+ " \n",
+ " if len(results) > 0:\n",
+ " for row in results:\n",
+ " print(\"##\" * 80)\n",
+ " print(f\"[{row['personalization_tier']}] Score: {row['personalized_score']:.3f} (CosSim: {row['cosine_similarity']:.3f})\")\n",
+ " print(f\"➡️ Message by Sender {row['Message Sender']}: {row['Patient Message']}\")\n",
+ " print(f\"➡️ Provider's response to this specific message is: {row['Actual Response Sent to Patient']}\")\n",
+ " print(f\"➡️ This result is from tier: {row['personalization_tier']}\")\n",
+ " print(\"➡️ -----------printing the whole thread-------------\")\n",
+ " beatiful_print_thread(row[\"Thread ID\"], answer_question_paired_data_dedup)\n",
+ " print(\"##\" * 80)\n",
+ " else:\n",
+ " print(\"No results found matching the criteria\")\n",
+ "except Exception as e:\n",
+ " print(f\"Error getting results: {str(e)}\")\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "sage_recommender",
+ "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.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/data_explore_with_error_checking.ipynb b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/data_explore_with_error_checking.ipynb
new file mode 100644
index 00000000..d5a6e730
--- /dev/null
+++ b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/data_explore_with_error_checking.ipynb
@@ -0,0 +1,20565 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/Users/wenyuanchen/anaconda3/envs/sage_recommender/lib/python3.13/site-packages/google/cloud/bigquery/__init__.py:237: FutureWarning: %load_ext google.cloud.bigquery is deprecated. Install bigquery-magics package and use `%load_ext bigquery_magics`, instead.\n",
+ " warnings.warn(\n"
+ ]
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "from langchain_huggingface import HuggingFaceEmbeddings\n",
+ "import os\n",
+ "os.environ[\"TOKENIZERS_PARALLELISM\"] = \"false\"\n",
+ "import warnings\n",
+ "warnings.filterwarnings(\"ignore\", message=\"Your application has authenticated using end user credentials\")\n",
+ "\n",
+ "\n",
+ "from google.cloud import bigquery;\n",
+ "%load_ext google.cloud.bigquery\n",
+ "\n",
+ "client = bigquery.Client(\"som-nero-phi-jonc101\")\n",
+ "\n",
+ "pd.set_option('display.max_columns', None)\n",
+ "\n",
+ "import requests\n",
+ "import json\n",
+ "from dotenv import load_dotenv\n",
+ "load_dotenv()\n",
+ "import os\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data_path = \"/Users/wenyuanchen/Library/CloudStorage/Box-Box/ART_PerMessage_1_17_Updated.xlsx\"\n",
+ "data_sample = pd.read_excel(data_path) # or whatever number of rows you want # take around 6 minutes to run \n",
+ "# data_sample[\"Patient Message\"] = data_sample[\"Patient Message\"].replace(\"<13><10>\", \"\\n\")\n",
+ "# data_sample[\"Actual Response Sent to Patient\"] = data_sample[\"Actual Response Sent to Patient\"].replace(\"<13><10>\", \"\\n\").fillna(\"No response\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# This notebook only explroes three specilaties: primary care, internal medicine and family medicine. \n",
+ "# Only ncludes threads with response from provider\n",
+ "# Only includes threads with a prompt sent to LLM"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
Source.Name
\n",
+ "
EOW ID
\n",
+ "
Reply to Patient EOW ID
\n",
+ "
WMG ID
\n",
+ "
Thread ID
\n",
+ "
Date Sent
\n",
+ "
Message Department
\n",
+ "
Department Specialty Title
\n",
+ "
Department Specialty Category
\n",
+ "
Reply to Patient Sender
\n",
+ "
Reply to Patient User Template
\n",
+ "
Reply to Patient User Licenses
\n",
+ "
Reply to Patient Provider Type
\n",
+ "
Message Sender
\n",
+ "
Recipient IDs
\n",
+ "
Recipient Names
\n",
+ "
Recipient Licenses
\n",
+ "
LLM Viewer IDs
\n",
+ "
LLM Viewer Names
\n",
+ "
LLM Viewer Licenses
\n",
+ "
Is Response Valid?
\n",
+ "
Prompt Sent to LLM
\n",
+ "
Suggested Response from LLM
\n",
+ "
Response If Used As Draft
\n",
+ "
Actual Response Sent to Patient
\n",
+ "
List of Strings Removed from Draft
\n",
+ "
List of Strings Added to Draft
\n",
+ "
Total Length of Removed Strings
\n",
+ "
Total Length of Added Strings
\n",
+ "
Length of Draft Unchanged
\n",
+ "
Subject
\n",
+ "
Time Spent Responding (sec)
\n",
+ "
Time Spent Reading (sec)
\n",
+ "
Draft Viewed By Pilot User
\n",
+ "
Draft Used By Pilot User
\n",
+ "
Command Executed
\n",
+ "
QuickAction Executed
\n",
+ "
Levenshtein Distance
\n",
+ "
Response Length
\n",
+ "
Draft Length
\n",
+ "
Prompt Length
\n",
+ "
Subject Length
\n",
+ "
Patient Message Length
\n",
+ "
Patient Message
\n",
+ "
LLM Feedback
\n",
+ "
LLM Feedback Deficiencies
\n",
+ "
LLM Feedback Comment
\n",
+ "
LLM Feedback User
\n",
+ "
Clinical Categories added by User
\n",
+ "
Non-Clinical Categories added by User
\n",
+ "
Non-Actionable Categories added by User
\n",
+ "
Clinical Categories added by System
\n",
+ "
Non-Clinical Categories added by System
\n",
+ "
Non-Actionable Categories added by System
\n",
+ "
Age at time of message
\n",
+ "
Sex Title
\n",
+ "
Sex Category
\n",
+ "
Gender Category
\n",
+ "
Gender Title
\n",
+ "
Race Title
\n",
+ "
Race Category
\n",
+ "
Ethnic Background Title
\n",
+ "
Ethnic Background Category
\n",
+ "
Ethnic Group Title
\n",
+ "
Ethnic Group Category
\n",
+ "
Financial Class Title
\n",
+ "
Financial Class Category
\n",
+ "
Active Coverages Title
\n",
+ "
Active Coverages Category
\n",
+ "
Preferred Language Title
\n",
+ "
Preferred Language Category
\n",
+ "
Need Interpreter? Title EPT-840
\n",
+ "
Need Interpreter? Cat EPT-840
\n",
+ "
Patient Has MyChart Proxies?
\n",
+ "
Completed Data Models
\n",
+ "
Message Position in Thread
\n",
+ "
Hours Between Current and Previous Message
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
LLMData_1.csv
\n",
+ "
901410967
\n",
+ "
NaN
\n",
+ "
92586871
\n",
+ "
255729942
\n",
+ "
2025-01-16
\n",
+ "
THORACIC ONCOLOGY
\n",
+ "
Oncology
\n",
+ "
24
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
TRAN, TRI [ S0372371]
\n",
+ "
POOL 10419
\n",
+ "
CC THOR ONC MED CLINICAL
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
1
\n",
+ "
Act as if you are the Healthcare Provider who ...
\n",
+ "
Hi Judy,<10><10>It's great to hear that Adam i...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
RE:Labs
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
10045
\n",
+ "
7
\n",
+ "
298
\n",
+ "
Hi Marilena,<13><10><13><10>I was asking more ...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
[]
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
59.0
\n",
+ "
Male
\n",
+ "
2.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
Asian
\n",
+ "
8
\n",
+ "
Chinese, except Taiwanese
\n",
+ "
11
\n",
+ "
Non-Hispanic/Non-Latino
\n",
+ "
2.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
MANAGED CARE
\n",
+ "
101.0
\n",
+ "
English
\n",
+ "
132.0
\n",
+ "
No
\n",
+ "
2.0
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
1.0
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
LLMData_1.csv
\n",
+ "
901410953
\n",
+ "
NaN
\n",
+ "
92586638
\n",
+ "
255891686
\n",
+ "
2025-01-16
\n",
+ "
STANFORD PRIMARY CARE SANTA CLARA
\n",
+ "
Primary Care
\n",
+ "
125
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
ROGACION, JOSE ANTONIO [ S0294361]
\n",
+ "
POOL 10849
\n",
+ "
SANTA CLARA PRIMARY CARE TASK POOL TEAM 2
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
1
\n",
+ "
Act as if you are the Healthcare Provider who ...
\n",
+ "
Hi Julie,<10><10>Thank you for forwarding the ...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
Scheduling Question
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
3700
\n",
+ "
19
\n",
+ "
697
\n",
+ "
Hi, Dr. Liz; I received the letter below regar...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
[]
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
52.0
\n",
+ "
Female
\n",
+ "
1.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
White
\n",
+ "
6
\n",
+ "
American
\n",
+ "
53
\n",
+ "
Non-Hispanic/Non-Latino
\n",
+ "
2.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
MANAGED CARE
\n",
+ "
101.0
\n",
+ "
English
\n",
+ "
132.0
\n",
+ "
No
\n",
+ "
2.0
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
1.0
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
LLMData_1.csv
\n",
+ "
901410929
\n",
+ "
NaN
\n",
+ "
92588354
\n",
+ "
254845765
\n",
+ "
2025-01-16
\n",
+ "
THORACIC ONCOLOGY
\n",
+ "
Oncology
\n",
+ "
24
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
TRAN, TRI [ S0372371]
\n",
+ "
S0004609
\n",
+ "
OJASCASTRO, LLOYD
\n",
+ "
MA
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
1
\n",
+ "
Act as if you are the Healthcare Provider who ...
\n",
+ "
Rosemary, <10><10>You should follow-up with yo...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
RE: Test Results Question
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
3112
\n",
+ "
25
\n",
+ "
130
\n",
+ "
Great please let me know as soon as possible ....
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
[]
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
64.0
\n",
+ "
Female
\n",
+ "
1.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
Black or African American
\n",
+ "
2
\n",
+ "
African American/Black
\n",
+ "
21
\n",
+ "
Non-Hispanic/Non-Latino
\n",
+ "
2.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
MEDI-CAL
\n",
+ "
300.0
\n",
+ "
English
\n",
+ "
132.0
\n",
+ "
No
\n",
+ "
2.0
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
1.0
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
LLMData_1.csv
\n",
+ "
901410919
\n",
+ "
NaN
\n",
+ "
92589928
\n",
+ "
255900067
\n",
+ "
2025-01-16
\n",
+ "
FAMILY MEDICINE SAMARITAN LOS GATOS
\n",
+ "
Family Medicine
\n",
+ "
9
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
DELGADO, NICOLE [ S0367163]
\n",
+ "
S0100823
\n",
+ "
SHAH, RINA BIREN
\n",
+ "
MD<13><10>MD
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
1
\n",
+ "
Act as if you are the Healthcare Provider who ...
\n",
+ "
Yes, Anne. Please make an appointment to discu...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
RE: ultrasound abdomen
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
9638
\n",
+ "
22
\n",
+ "
48
\n",
+ "
Thank you. Do you mean make an appt to discuss?
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
[]
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
53.0
\n",
+ "
Female
\n",
+ "
1.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
White
\n",
+ "
6
\n",
+ "
European
\n",
+ "
50
\n",
+ "
Declines to State
\n",
+ "
4.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
Blue Cross
\n",
+ "
100.0
\n",
+ "
English
\n",
+ "
132.0
\n",
+ "
No
\n",
+ "
2.0
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
1.0
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
LLMData_1.csv
\n",
+ "
901410918
\n",
+ "
NaN
\n",
+ "
92586189
\n",
+ "
254230222
\n",
+ "
2025-01-16
\n",
+ "
STANFORD PRIMARY CARE SANTA CLARA
\n",
+ "
Primary Care
\n",
+ "
125
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
ROGACION, JOSE ANTONIO [ S0294361]
\n",
+ "
POOL 11020
\n",
+ "
SANTA CLARA PRIMARY CARE TASK POOL TEAM 1
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
1
\n",
+ "
Act as if you are the Healthcare Provider who ...
\n",
+ "
Hi David,<10><10>I will review your request wi...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
RE:Hypertension: Blood Pressure Check
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
4969
\n",
+ "
37
\n",
+ "
308
\n",
+ "
<13><10>January 11, 2025<13><10>124/88 Pulse 8...
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
[]
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
63.0
\n",
+ "
Male
\n",
+ "
2.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
White
\n",
+ "
6
\n",
+ "
Declines to State
\n",
+ "
56
\n",
+ "
Non-Hispanic/Non-Latino
\n",
+ "
2.0
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
MANAGED CARE
\n",
+ "
101.0
\n",
+ "
English
\n",
+ "
132.0
\n",
+ "
No
\n",
+ "
2.0
\n",
+ "
0
\n",
+ "
NaN
\n",
+ "
1.0
\n",
+ "
NaN
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Source.Name EOW ID Reply to Patient EOW ID WMG ID Thread ID \\\n",
+ "0 LLMData_1.csv 901410967 NaN 92586871 255729942 \n",
+ "1 LLMData_1.csv 901410953 NaN 92586638 255891686 \n",
+ "2 LLMData_1.csv 901410929 NaN 92588354 254845765 \n",
+ "3 LLMData_1.csv 901410919 NaN 92589928 255900067 \n",
+ "4 LLMData_1.csv 901410918 NaN 92586189 254230222 \n",
+ "\n",
+ " Date Sent Message Department Department Specialty Title \\\n",
+ "0 2025-01-16 THORACIC ONCOLOGY Oncology \n",
+ "1 2025-01-16 STANFORD PRIMARY CARE SANTA CLARA Primary Care \n",
+ "2 2025-01-16 THORACIC ONCOLOGY Oncology \n",
+ "3 2025-01-16 FAMILY MEDICINE SAMARITAN LOS GATOS Family Medicine \n",
+ "4 2025-01-16 STANFORD PRIMARY CARE SANTA CLARA Primary Care \n",
+ "\n",
+ " Department Specialty Category Reply to Patient Sender \\\n",
+ "0 24 NaN \n",
+ "1 125 NaN \n",
+ "2 24 NaN \n",
+ "3 9 NaN \n",
+ "4 125 NaN \n",
+ "\n",
+ " Reply to Patient User Template Reply to Patient User Licenses \\\n",
+ "0 NaN NaN \n",
+ "1 NaN NaN \n",
+ "2 NaN NaN \n",
+ "3 NaN NaN \n",
+ "4 NaN NaN \n",
+ "\n",
+ " Reply to Patient Provider Type Message Sender \\\n",
+ "0 NaN TRAN, TRI [ S0372371] \n",
+ "1 NaN ROGACION, JOSE ANTONIO [ S0294361] \n",
+ "2 NaN TRAN, TRI [ S0372371] \n",
+ "3 NaN DELGADO, NICOLE [ S0367163] \n",
+ "4 NaN ROGACION, JOSE ANTONIO [ S0294361] \n",
+ "\n",
+ " Recipient IDs Recipient Names Recipient Licenses \\\n",
+ "0 POOL 10419 CC THOR ONC MED CLINICAL NaN \n",
+ "1 POOL 10849 SANTA CLARA PRIMARY CARE TASK POOL TEAM 2 NaN \n",
+ "2 S0004609 OJASCASTRO, LLOYD MA \n",
+ "3 S0100823 SHAH, RINA BIREN MD<13><10>MD \n",
+ "4 POOL 11020 SANTA CLARA PRIMARY CARE TASK POOL TEAM 1 NaN \n",
+ "\n",
+ " LLM Viewer IDs LLM Viewer Names LLM Viewer Licenses Is Response Valid? \\\n",
+ "0 NaN NaN NaN 1 \n",
+ "1 NaN NaN NaN 1 \n",
+ "2 NaN NaN NaN 1 \n",
+ "3 NaN NaN NaN 1 \n",
+ "4 NaN NaN NaN 1 \n",
+ "\n",
+ " Prompt Sent to LLM \\\n",
+ "0 Act as if you are the Healthcare Provider who ... \n",
+ "1 Act as if you are the Healthcare Provider who ... \n",
+ "2 Act as if you are the Healthcare Provider who ... \n",
+ "3 Act as if you are the Healthcare Provider who ... \n",
+ "4 Act as if you are the Healthcare Provider who ... \n",
+ "\n",
+ " Suggested Response from LLM \\\n",
+ "0 Hi Judy,<10><10>It's great to hear that Adam i... \n",
+ "1 Hi Julie,<10><10>Thank you for forwarding the ... \n",
+ "2 Rosemary, <10><10>You should follow-up with yo... \n",
+ "3 Yes, Anne. Please make an appointment to discu... \n",
+ "4 Hi David,<10><10>I will review your request wi... \n",
+ "\n",
+ " Response If Used As Draft Actual Response Sent to Patient \\\n",
+ "0 NaN NaN \n",
+ "1 NaN NaN \n",
+ "2 NaN NaN \n",
+ "3 NaN NaN \n",
+ "4 NaN NaN \n",
+ "\n",
+ " List of Strings Removed from Draft List of Strings Added to Draft \\\n",
+ "0 NaN NaN \n",
+ "1 NaN NaN \n",
+ "2 NaN NaN \n",
+ "3 NaN NaN \n",
+ "4 NaN NaN \n",
+ "\n",
+ " Total Length of Removed Strings Total Length of Added Strings \\\n",
+ "0 NaN NaN \n",
+ "1 NaN NaN \n",
+ "2 NaN NaN \n",
+ "3 NaN NaN \n",
+ "4 NaN NaN \n",
+ "\n",
+ " Length of Draft Unchanged Subject \\\n",
+ "0 NaN RE:Labs \n",
+ "1 NaN Scheduling Question \n",
+ "2 NaN RE: Test Results Question \n",
+ "3 NaN RE: ultrasound abdomen \n",
+ "4 NaN RE:Hypertension: Blood Pressure Check \n",
+ "\n",
+ " Time Spent Responding (sec) Time Spent Reading (sec) \\\n",
+ "0 NaN NaN \n",
+ "1 NaN NaN \n",
+ "2 NaN NaN \n",
+ "3 NaN NaN \n",
+ "4 NaN NaN \n",
+ "\n",
+ " Draft Viewed By Pilot User Draft Used By Pilot User Command Executed \\\n",
+ "0 0 NaN NaN \n",
+ "1 0 NaN NaN \n",
+ "2 0 NaN NaN \n",
+ "3 0 NaN NaN \n",
+ "4 0 NaN NaN \n",
+ "\n",
+ " QuickAction Executed Levenshtein Distance Response Length Draft Length \\\n",
+ "0 NaN NaN NaN NaN \n",
+ "1 NaN NaN NaN NaN \n",
+ "2 NaN NaN NaN NaN \n",
+ "3 NaN NaN NaN NaN \n",
+ "4 NaN NaN NaN NaN \n",
+ "\n",
+ " Prompt Length Subject Length Patient Message Length \\\n",
+ "0 10045 7 298 \n",
+ "1 3700 19 697 \n",
+ "2 3112 25 130 \n",
+ "3 9638 22 48 \n",
+ "4 4969 37 308 \n",
+ "\n",
+ " Patient Message LLM Feedback \\\n",
+ "0 Hi Marilena,<13><10><13><10>I was asking more ... NaN \n",
+ "1 Hi, Dr. Liz; I received the letter below regar... NaN \n",
+ "2 Great please let me know as soon as possible .... NaN \n",
+ "3 Thank you. Do you mean make an appt to discuss? NaN \n",
+ "4 <13><10>January 11, 2025<13><10>124/88 Pulse 8... NaN \n",
+ "\n",
+ " LLM Feedback Deficiencies LLM Feedback Comment LLM Feedback User \\\n",
+ "0 NaN NaN [] \n",
+ "1 NaN NaN [] \n",
+ "2 NaN NaN [] \n",
+ "3 NaN NaN [] \n",
+ "4 NaN NaN [] \n",
+ "\n",
+ " Clinical Categories added by User Non-Clinical Categories added by User \\\n",
+ "0 NaN NaN \n",
+ "1 NaN NaN \n",
+ "2 NaN NaN \n",
+ "3 NaN NaN \n",
+ "4 NaN NaN \n",
+ "\n",
+ " Non-Actionable Categories added by User \\\n",
+ "0 NaN \n",
+ "1 NaN \n",
+ "2 NaN \n",
+ "3 NaN \n",
+ "4 NaN \n",
+ "\n",
+ " Clinical Categories added by System \\\n",
+ "0 NaN \n",
+ "1 NaN \n",
+ "2 NaN \n",
+ "3 NaN \n",
+ "4 NaN \n",
+ "\n",
+ " Non-Clinical Categories added by System \\\n",
+ "0 NaN \n",
+ "1 NaN \n",
+ "2 NaN \n",
+ "3 NaN \n",
+ "4 NaN \n",
+ "\n",
+ " Non-Actionable Categories added by System Age at time of message \\\n",
+ "0 NaN 59.0 \n",
+ "1 NaN 52.0 \n",
+ "2 NaN 64.0 \n",
+ "3 NaN 53.0 \n",
+ "4 NaN 63.0 \n",
+ "\n",
+ " Sex Title Sex Category Gender Category Gender Title \\\n",
+ "0 Male 2.0 NaN NaN \n",
+ "1 Female 1.0 NaN NaN \n",
+ "2 Female 1.0 NaN NaN \n",
+ "3 Female 1.0 NaN NaN \n",
+ "4 Male 2.0 NaN NaN \n",
+ "\n",
+ " Race Title Race Category Ethnic Background Title \\\n",
+ "0 Asian 8 Chinese, except Taiwanese \n",
+ "1 White 6 American \n",
+ "2 Black or African American 2 African American/Black \n",
+ "3 White 6 European \n",
+ "4 White 6 Declines to State \n",
+ "\n",
+ " Ethnic Background Category Ethnic Group Title Ethnic Group Category \\\n",
+ "0 11 Non-Hispanic/Non-Latino 2.0 \n",
+ "1 53 Non-Hispanic/Non-Latino 2.0 \n",
+ "2 21 Non-Hispanic/Non-Latino 2.0 \n",
+ "3 50 Declines to State 4.0 \n",
+ "4 56 Non-Hispanic/Non-Latino 2.0 \n",
+ "\n",
+ " Financial Class Title Financial Class Category Active Coverages Title \\\n",
+ "0 NaN NaN MANAGED CARE \n",
+ "1 NaN NaN MANAGED CARE \n",
+ "2 NaN NaN MEDI-CAL \n",
+ "3 NaN NaN Blue Cross \n",
+ "4 NaN NaN MANAGED CARE \n",
+ "\n",
+ " Active Coverages Category Preferred Language Title \\\n",
+ "0 101.0 English \n",
+ "1 101.0 English \n",
+ "2 300.0 English \n",
+ "3 100.0 English \n",
+ "4 101.0 English \n",
+ "\n",
+ " Preferred Language Category Need Interpreter? Title EPT-840 \\\n",
+ "0 132.0 No \n",
+ "1 132.0 No \n",
+ "2 132.0 No \n",
+ "3 132.0 No \n",
+ "4 132.0 No \n",
+ "\n",
+ " Need Interpreter? Cat EPT-840 Patient Has MyChart Proxies? \\\n",
+ "0 2.0 0 \n",
+ "1 2.0 0 \n",
+ "2 2.0 0 \n",
+ "3 2.0 0 \n",
+ "4 2.0 0 \n",
+ "\n",
+ " Completed Data Models Message Position in Thread \\\n",
+ "0 NaN 1.0 \n",
+ "1 NaN 1.0 \n",
+ "2 NaN 1.0 \n",
+ "3 NaN 1.0 \n",
+ "4 NaN 1.0 \n",
+ "\n",
+ " Hours Between Current and Previous Message \n",
+ "0 NaN \n",
+ "1 NaN \n",
+ "2 NaN \n",
+ "3 NaN \n",
+ "4 NaN "
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data_sample.head(5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'data_sample' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[31m---------------------------------------------------------------------------\u001b[39m",
+ "\u001b[31mNameError\u001b[39m Traceback (most recent call last)",
+ "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[52]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(\u001b[43mdata_sample\u001b[49m.columns) == \u001b[32m77\u001b[39m \n\u001b[32m 2\u001b[39m helpful_cols = [\u001b[33m\"\u001b[39m\u001b[33mThread ID\u001b[39m\u001b[33m\"\u001b[39m,\u001b[33m\"\u001b[39m\u001b[33mDate Sent\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 3\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mSubject\u001b[39m\u001b[33m\"\u001b[39m,\u001b[33m\"\u001b[39m\u001b[33mPatient Message\u001b[39m\u001b[33m\"\u001b[39m, \u001b[33m\"\u001b[39m\u001b[33mMessage Sender\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 4\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mActual Response Sent to Patient\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 5\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mRecipient Names\u001b[39m\u001b[33m\"\u001b[39m,\u001b[33m\"\u001b[39m\u001b[33mRecipient IDs\u001b[39m\u001b[33m\"\u001b[39m, \u001b[33m\"\u001b[39m\u001b[33mMessage Department\u001b[39m\u001b[33m\"\u001b[39m,\u001b[33m\"\u001b[39m\u001b[33mDepartment Specialty Title\u001b[39m\u001b[33m\"\u001b[39m, \u001b[33m\"\u001b[39m\u001b[33mPrompt Sent to LLM\u001b[39m\u001b[33m\"\u001b[39m, \u001b[33m\"\u001b[39m\u001b[33mSuggested Response from LLM\u001b[39m\u001b[33m\"\u001b[39m, \u001b[33m\"\u001b[39m\u001b[33mQuickAction Executed\u001b[39m\u001b[33m\"\u001b[39m]\n\u001b[32m 6\u001b[39m data_sample_sub_cols = data_sample[helpful_cols]\n",
+ "\u001b[31mNameError\u001b[39m: name 'data_sample' is not defined"
+ ]
+ }
+ ],
+ "source": [
+ "assert len(data_sample.columns) == 77 \n",
+ "helpful_cols = [\"Thread ID\",\"Date Sent\",\n",
+ " \"Subject\",\"Patient Message\", \"Message Sender\",\n",
+ " \"Actual Response Sent to Patient\",\n",
+ " \"Recipient Names\",\"Recipient IDs\", \"Message Department\",\"Department Specialty Title\", \"Prompt Sent to LLM\", \"Suggested Response from LLM\", \"QuickAction Executed\"]\n",
+ "data_sample_sub_cols = data_sample[helpful_cols]\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([ nan, 20000., 141061., 113570., 132484., 132043., 126580.,\n",
+ " 153453., 132978., 149534., 155537., 143763., 143635., 133040.,\n",
+ " 141414., 133156., 117735., 120036., 153103., 153017., 152213.,\n",
+ " 138906., 125452., 120069., 119388., 154618., 144700., 129721.,\n",
+ " 118688., 153921., 121582., 112689., 119799., 136018., 133235.,\n",
+ " 138904., 101177., 138909., 113455., 120549., 101176., 112653.,\n",
+ " 143896., 134783., 144699., 132995., 147934., 137981., 120046.,\n",
+ " 127069., 143789., 147554., 143819., 150433., 132958., 126191.,\n",
+ " 112760., 139891., 120042., 154651., 116273., 125087., 121667.,\n",
+ " 119098., 143714., 132297., 138903., 127531., 120070., 120055.,\n",
+ " 147549., 152790., 121224., 155595., 154717., 119099., 113479.,\n",
+ " 132772., 133207., 133243., 131658., 138902., 138908., 133378.,\n",
+ " 153102., 146750., 128070., 118686., 138927., 117858., 138887.,\n",
+ " 152603., 138774., 145095., 138911., 155219., 133043., 130107.,\n",
+ " 143818., 132414., 148661., 124955., 118500., 138991., 153781.,\n",
+ " 138582., 132050., 133958., 133994., 127514., 155960., 136731.,\n",
+ " 135182., 152430., 150215., 137982., 140743., 143820., 134547.,\n",
+ " 130701., 140261., 131453., 134615., 155220., 125439., 139414.,\n",
+ " 128820., 120099., 146167., 141093., 144645., 139321., 145293.,\n",
+ " 120418., 127452., 116597., 116272., 116864., 133293., 120369.,\n",
+ " 141365., 116262., 136847., 155148., 128013., 136622., 137894.,\n",
+ " 138290., 155103., 147563., 128976., 153140., 153061., 155010.,\n",
+ " 136753., 135791., 152216., 134549., 147501., 133527., 109578.,\n",
+ " 141654., 151350., 150461., 145925., 127381., 154524., 154438.,\n",
+ " 154412., 121915., 134548., 151445., 150004., 153870., 137712.,\n",
+ " 150019., 152092., 140362., 132055., 120291., 153611., 133694.,\n",
+ " 132935., 150871., 118884., 138905., 138581., 153452., 153496.,\n",
+ " 137974., 109889., 155581.])"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# To-do:I need the code sheet to understand the quickaction executed\n",
+ "data_sample_sub_cols[\"QuickAction Executed\"].unique()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# # keep only primary care, internal medicine and family medicine\n",
+ "# interested_specialties = [\"Primary Care\", \"Internal Medicine\", \"Family Medicine\"]\n",
+ "# data_sample_sub_cols = data_sample_sub_cols[data_sample_sub_cols[\"Department Specialty Title\"].isin(interested_specialties)]\n",
+ "# assert len(data_sample_sub_cols[\"Department Specialty Title\"].unique()) == 3\n",
+ "# # keep only threads with prompt and response\n",
+ "# data_sample_sub_cols_has_prompt = data_sample_sub_cols[data_sample_sub_cols[\"Prompt Sent to LLM\"].notnull()]\n",
+ "# data_sample_sub_cols_has_prompt_and_response = data_sample_sub_cols_has_prompt[data_sample_sub_cols_has_prompt[\"Actual Response Sent to Patient\"].notnull()]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 116,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def remove_duplicate_messages(threads_to_keep):\n",
+ " # first round of duplicate removal\n",
+ " df = data_sample_sub_cols[data_sample_sub_cols['Thread ID'].isin(threads_to_keep)].reset_index().sort_values(['Thread ID', 'index'], ascending=False).drop_duplicates()\n",
+ " \n",
+ " # Create a boolean column: True if response exists, False otherwise\n",
+ " df['has_response'] = df[\"Actual Response Sent to Patient\"].notnull()\n",
+ "\n",
+ " # Sort so that for each Patient Message, rows with a response come first, then by index (descending or ascending as you prefer)\n",
+ " df = df.sort_values(['Patient Message', 'has_response', 'index'], ascending=[True, False, False])\n",
+ "\n",
+ " # Drop duplicates based on Patient Message, keeping the one with a response if it exists\n",
+ " df_no_dupes = df.drop_duplicates(subset=[\"Patient Message\"], keep='first').sort_values(['Thread ID', 'index'], ascending=False)\n",
+ "\n",
+ " # Optionally, drop the helper column\n",
+ " df_no_dupes = df_no_dupes.drop(columns=['has_response'])\n",
+ " return df_no_dupes\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 117,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/8AAANVCAYAAAAuhU7eAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAflRJREFUeJzs3Xd4FOX+///XEtIJIbSECIQivQtKU0BpKk1QAVGUIuABQRCkHEWKSgcbB8RCURQ8RwELGohSFOkIYgAB6UgoQggQMIHk/v3hN/tjSUJ2kl0S5/N8XFeui8zc8973bO4M+8rMzjqMMUYAAAAAAMC28uV2AwAAAAAAwLsI/wAAAAAA2BzhHwAAAAAAmyP8AwAAAABgc4R/AAAAAABsjvAPAAAAAIDNEf4BAAAAALA5wj8AAAAAADZH+AcAAAAAwOYI/wAASdL8+fPlcDicXwEBAYqIiNC9996riRMn6vTp0+m2GTt2rBwOh6XHuXz5ssaOHas1a9ZY2i6jxypTpozatm1rqU5WPvnkE73xxhsZrnM4HBo7dqxHH8/Tvv/+e9WrV0/BwcFyOBxatmxZujHNmjVz+Vln9pW2rw6HQ88+++yt3ZFscndO9ujRQw6HQyEhIbp06VK69UeOHFG+fPn+ET/z3HDw4EE9++yzqlixogIDAxUUFKRq1arppZde0h9//JHb7UmSvvnmG352AHCd/LndAAAgb5k3b54qV66sq1ev6vTp01q3bp0mT56sadOm6dNPP1WLFi2cY59++mndf//9lupfvnxZ48aNk/R3CHVXdh4rOz755BPFxsZq8ODB6dZt2LBBJUuW9HoP2WWMUefOnVWxYkV9+eWXCg4OVqVKldKNmzVrli5cuOD8fvny5Xr11VedP/s0eXlfPcHX11fXrl3Tp59+qt69e7usmzdvnkJCQlyeJ/zt66+/VteuXVW0aFE9++yzqlOnjhwOh3799VfNnTtXy5cv1/bt23O7TX3zzTf6z3/+wx8AAOD/IfwDAFxUr15d9erVc37/8MMPa8iQIbr77rvVqVMn7d+/X+Hh4ZL+DofeDoiXL19WUFDQLXmsrDRo0CBXHz8rJ06c0Llz59SxY0c1b94803FVq1Z1+f63336TlP5n7wlpP7+8yM/PT+3atdPcuXNdwr8xRvPnz1eXLl303nvv5WKHec+hQ4fUtWtXVaxYUatXr1ZoaKhz3X333adBgwZp6dKludghACAzXPYPAMhS6dKlNX36dF28eFFz5sxxLs/oEutVq1apWbNmKlKkiAIDA1W6dGk9/PDDunz5sg4fPqxixYpJksaNG+e8vLxHjx4u9X7++Wc98sgjCgsLU/ny5TN9rDRLly5VzZo1FRAQoHLlyumtt95yWZ/2lobDhw+7LF+zZo0cDofzLQjNmjXT8uXLdeTIEZfL39NkdAl4bGysOnTooLCwMAUEBKh27dpasGBBho+zaNEivfjii4qMjFTBggXVokUL7d27N/Mn/jrr1q1T8+bNFRISoqCgIDVq1EjLly93rh87dqzzjyMjRoyQw+FQmTJl3Krtro8++khVqlRRUFCQatWqpa+//tpl/c1+fsYYzZo1S7Vr11ZgYKDCwsL0yCOP6ODBgy41YmJi1KFDB5UsWVIBAQG6/fbb1a9fP/3555/p+lm+fLlq164tf39/lS1bVtOmTbO8T7169dL69etdfg7fffedjhw5op49e2a4zcmTJ9WvXz+VLFlSfn5+Klu2rMaNG6dr1665jJs9e7Zq1aqlAgUKKCQkRJUrV9a///1v5/rLly9r2LBhKlu2rAICAlS4cGHVq1dPixYtco7ZunWrunbtqjJlyigwMFBlypTRY489piNHjqTra926dWrYsKECAgJ02223afTo0Xr//fcznPuffvqpGjZsqODgYBUoUECtW7d262z9jBkzlJiYqFmzZrkE/zQOh0OdOnVyWTZ37lzVqlXLuY8dO3bUnj17XMY0a9YswyuBevTo4TKPDx8+LIfDoWnTpmnGjBkqW7asChQooIYNG2rjxo0u2/3nP/9x9pT2lfY8/O9//1P9+vUVGhqqoKAglStXTr169cpy/wHgn4wz/wAAtzz44IPy8fHRDz/8kOmYw4cPq02bNrrnnns0d+5cFSpUSH/88Yeio6OVnJysEiVKKDo6Wvfff7969+6tp59+WpKcfxBI06lTJ3Xt2lXPPPOMEhMTb9rXjh07NHjwYI0dO1YRERH6+OOP9dxzzyk5OVnDhg2ztI+zZs1S3759deDAAbfOXu7du1eNGjVS8eLF9dZbb6lIkSJauHChevTooVOnTmn48OEu4//973+rcePGev/993XhwgWNGDFC7dq10549e+Tj45Pp46xdu1YtW7ZUzZo19cEHH8jf31+zZs1Su3bttGjRInXp0kVPP/20atWqpU6dOmngwIHq1q2b/P39Le3/zSxfvlxbtmzR+PHjVaBAAU2ZMkUdO3bU3r17Va5cOZexGf38+vXrp/nz52vQoEGaPHmyzp07p/Hjx6tRo0b65ZdfnFeTHDhwQA0bNtTTTz+t0NBQHT58WDNmzNDdd9+tX3/9Vb6+vpL+vrdBhw4d1LBhQy1evFgpKSmaMmWKTp06ZWm/WrRooaioKM2dO1eTJ0+WJH3wwQdq0qSJKlSokG78yZMndddddylfvnx6+eWXVb58eW3YsEGvvvqqDh8+rHnz5kmSFi9erP79+2vgwIGaNm2a8uXLp99//127d+921nr++ef10Ucf6dVXX1WdOnWUmJio2NhYnT171jnm8OHDqlSpkrp27arChQsrLi5Os2fP1p133qndu3eraNGikqSdO3eqZcuWqlixohYsWKCgoCC98847WrhwYbp9mDBhgl566SX17NlTL730kpKTkzV16lTdc8892rx5c7orQ663cuVKhYeHu30VzMSJE/Xvf/9bjz32mCZOnKizZ89q7NixatiwobZs2ZLhc+yO//znP6pcubLz/hyjR4/Wgw8+qEOHDik0NFSjR49WYmKiPvvsM23YsMG5XYkSJbRhwwZ16dJFXbp00dixYxUQEKAjR45o1apV2eoFAP4xDAAAxph58+YZSWbLli2ZjgkPDzdVqlRxfj9mzBhz/X8ln332mZFkduzYkWmNM2fOGElmzJgx6dal1Xv55ZczXXe9qKgo43A40j1ey5YtTcGCBU1iYqLLvh06dMhl3OrVq40ks3r1aueyNm3amKioqAx7v7Hvrl27Gn9/f3P06FGXcQ888IAJCgoy58+fd3mcBx980GXcf//7XyPJbNiwIcPHS9OgQQNTvHhxc/HiReeya9eumerVq5uSJUua1NRUY4wxhw4dMpLM1KlTb1rvRln97CWZ8PBwc+HCBeeykydPmnz58pmJEyc6l2X289uwYYORZKZPn+6y/NixYyYwMNAMHz48w8dNTU01V69eNUeOHDGSzBdffOFcV79+fRMZGWmuXLniXHbhwgVTuHDhdPMkI0899ZQJDg529h0REWGuXr1qzp49a/z9/c38+fMznKv9+vUzBQoUMEeOHHGpN23aNCPJ7Nq1yxhjzLPPPmsKFSp00x6qV69uHnrooSx7vd61a9fMpUuXTHBwsHnzzTedyx999FETHBxszpw541yWkpJiqlat6jL3jx49avLnz28GDhzoUvfixYsmIiLCdO7c+aaPHxAQYBo0aOBWr/Hx8SYwMDDdvD969Kjx9/c33bp1cy5r2rSpadq0aboaTz31lMvvY9ocr1Gjhrl27Zpz+ebNm40ks2jRIueyAQMGZDgX0n5Wab+fAPB/BZf9AwDcZoy56fratWvLz89Pffv21YIFC9Jd0u2uhx9+2O2x1apVU61atVyWdevWTRcuXNDPP/+crcd316pVq9S8eXOVKlXKZXmPHj10+fJllzOOktS+fXuX72vWrClJGV7CnSYxMVGbNm3SI488ogIFCjiX+/j4qHv37jp+/Ljbbx3IiXvvvVchISHO78PDw1W8ePEMe7/x5/f111/L4XDoiSee0LVr15xfERERqlWrlssnP5w+fVrPPPOMSpUqpfz588vX11dRUVGS5LxUPDExUVu2bFGnTp0UEBDg3DYkJETt2rWzvG89e/bUqVOn9O233+rjjz+Wn5+fHn300QzHfv3117r33nsVGRnpsi8PPPCApL+v0pCku+66S+fPn9djjz2mL774IsO3Ldx111369ttvNXLkSK1Zs0ZXrlxJN+bSpUsaMWKEbr/9duXPn1/58+dXgQIFlJiY6HLp/Nq1a3Xfffc5rwSQpHz58qlz584u9VasWKFr167pySefdOk/ICBATZs2tfwpHDezYcMGXblyxfm2njSlSpXSfffdp++//z7btdu0aeNytYw7v0tp7rzzTklS586d9d///jfPfDoBAHgb4R8A4JbExESdPXtWkZGRmY4pX768vvvuOxUvXlwDBgxQ+fLlVb58eb355puWHqtEiRJuj42IiMh02fWXT3vD2bNnM+w17Tm68fGLFCni8n3aZfkZhb408fHxMsZYehxvuLF36e/+M+r9xl5PnTolY4zCw8Pl6+vr8rVx40ZnME5NTVWrVq20ZMkSDR8+XN9//702b97sfC932mPFx8crNTX1pj97K6KiotS8eXPNnTtXc+fOVdeuXTO9SeGpU6f01VdfpduPatWqSZJzX7p37665c+fqyJEjevjhh1W8eHHVr19fMTExzlpvvfWWRowYoWXLlunee+9V4cKF9dBDD2n//v3OMd26ddPMmTP19NNPa8WKFdq8ebO2bNmiYsWKuTz3Z8+edb514no3Lkt7W8Sdd96Zbh8+/fTTDP9Icb3SpUvr0KFDNx1zfU9Sxr/PkZGROZq32fldStOkSRMtW7bM+UeQkiVLqnr16i73WgAAO+I9/wAAtyxfvlwpKSlZfjzfPffco3vuuUcpKSnaunWr3n77bQ0ePFjh4eHq2rWrW4/lzue0pzl58mSmy9ICQtrZ4aSkJJdxWQWdrBQpUkRxcXHplp84cUKSXM7CZldYWJjy5cvn9cfxpBt/fkWLFpXD4dCPP/6Y4X0I0pbFxsbql19+0fz58/XUU0851//+++8u48PCwuRwOG76s7eqV69eeuKJJ5SamqrZs2dnOq5o0aKqWbOmXnvttQzXX//HsZ49e6pnz55KTEzUDz/8oDFjxqht27bat2+foqKiFBwcrHHjxmncuHHOKw9Gjhypdu3a6bffflNCQoK+/vprjRkzRiNHjnTWTUpK0rlz51wet0iRIhne7+DG5yNtrnz22WfOKyqsaN26td5++21t3Lgxy/f9p/3+ZTZ3r5+3AQEBSkhISDcup7+jmenQoYM6dOigpKQkbdy4URMnTlS3bt1UpkwZNWzY0CuPCQC5jTP/AIAsHT16VMOGDVNoaKj69evn1jY+Pj6qX7++847baZfgWzlD545du3bpl19+cVn2ySefKCQkRHfccYckOe8WvnPnTpdxX375Zbp6mZ3Nzkjz5s21atUqZwhP8+GHHyooKMgjHw0YHBys+vXra8mSJS59paamauHChSpZsqQqVqyY48fxprZt28oYoz/++EP16tVL91WjRg1J//8fDW78A8H1nzAh/f2c3HXXXVqyZIn++usv5/KLFy/qq6++ylaPHTt2VMeOHdWrV6+b/tzatm2r2NhYlS9fPsN9yejKmODgYD3wwAN68cUXlZycrF27dqUbEx4erh49euixxx7T3r17dfnyZTkcDhlj0j0f77//vlJSUlyWNW3aVKtWrXIJy6mpqfrf//7nMq5169bKnz+/Dhw4kGH/WX3U45AhQxQcHKz+/ftnGNaNMc6bZTZs2FCBgYHpbjp4/Phx51tm0pQpU0b79u1z+QPd2bNntX79+pv2czPuHGv8/f3VtGlT580e3fnEAwD4p+LMPwDARWxsrPN9wKdPn9aPP/6oefPmycfHR0uXLk13Z/7rvfPOO1q1apXatGmj0qVL66+//tLcuXMl/X1Xdenv92VHRUXpiy++UPPmzVW4cGEVLVo02x9LFxkZqfbt22vs2LEqUaKEFi5cqJiYGE2ePNl56fadd96pSpUqadiwYbp27ZrCwsK0dOlSrVu3Ll29GjVqaMmSJZo9e7bq1q2rfPnyZRqIxowZ43wP+Msvv6zChQvr448/1vLlyzVlypQMPwotOyZOnKiWLVvq3nvv1bBhw+Tn56dZs2YpNjZWixYtsnSlRG5o3Lix+vbtq549e2rr1q1q0qSJgoODFRcXp3Xr1qlGjRr617/+pcqVK6t8+fIaOXKkjDEqXLiwvvrqK5dL5dO88soruv/++9WyZUsNHTpUKSkpmjx5soKDg9OdFXdHQECAPvvssyzHjR8/XjExMWrUqJEGDRqkSpUq6a+//tLhw4f1zTff6J133lHJkiXVp08fBQYGqnHjxipRooROnjypiRMnKjQ01Pme8/r166tt27aqWbOmwsLCtGfPHn300Udq2LChc+42adJEU6dOdf6OrF27Vh988IEKFSrk0teLL76or776Ss2bN9eLL76owMBAvfPOO85PW8iX7+/zPWXKlNH48eP14osv6uDBg7r//vsVFhamU6dOafPmzc6rETJTtmxZLV68WF26dFHt2rX17LPPqk6dOpKk3bt3a+7cuTLGqGPHjipUqJBGjx6tf//733ryySf12GOP6ezZsxo3bpwCAgI0ZswYZ93u3btrzpw5euKJJ9SnTx+dPXtWU6ZMUcGCBd3/Id4g7Y9KkydP1gMPPCAfHx/VrFlTr776qo4fP67mzZurZMmSOn/+vN588035+vqqadOm2X48AMjzcu9egwCAvCTtju9pX35+fqZ48eKmadOmZsKECeb06dPptrnxDvwbNmwwHTt2NFFRUcbf398UKVLENG3a1Hz55Zcu23333XemTp06xt/f30gyTz31lEu96+9YntljGfP33f7btGljPvvsM1OtWjXj5+dnypQpY2bMmJFu+3379plWrVqZggULmmLFipmBAwea5cuXp7vb/7lz58wjjzxiChUqZBwOh8tjKoNPKfj1119Nu3btTGhoqPHz8zO1atUy8+bNcxmTdrf///3vfy7L0+5cfuP4jPz444/mvvvuM8HBwSYwMNA0aNDAfPXVVxnW88bd/gcMGJBueVRUlPNnZ8zNf37GGDN37lxTv3595z6UL1/ePPnkk2br1q3OMbt37zYtW7Y0ISEhJiwszDz66KPm6NGjGT73X375palZs6bx8/MzpUuXNpMmTcpwnmTk+rv9ZyazT6Y4c+aMGTRokClbtqzx9fU1hQsXNnXr1jUvvviiuXTpkjHGmAULFph7773XhIeHGz8/PxMZGWk6d+5sdu7c6awzcuRIU69ePRMWFmb8/f1NuXLlzJAhQ8yff/7pHHP8+HHz8MMPm7CwMBMSEmLuv/9+Exsbm+65N+bvOVK/fn3j7+9vIiIizAsvvGAmT56c4Z3tly1bZu69915TsGBB4+/vb6KioswjjzxivvvuuyyfO2OMOXDggOnfv7+5/fbbjb+/vwkMDDRVq1Y1zz//fLpP1Xj//fedP6fQ0FDToUMH56ciXG/BggWmSpUqJiAgwFStWtV8+umnmd7tP6M5fuPPKikpyTz99NOmWLFizt/lQ4cOma+//to88MAD5rbbbnMe5x588EHz448/urXvAPBP5TAmi1s3AwAA4B+pVatWOnz4sPbt25fbrQAAchmX/QMAANjA888/rzp16qhUqVI6d+6cPv74Y8XExOiDDz7I7dYAAHkA4R8AAMAGUlJS9PLLL+vkyZNyOByqWrWqPvroIz3xxBO53RoAIA/gsn8AAAAAAGyOj/oDAAAAAMDmCP8AAAAAANgc4R8AAAAAAJvjhn8elJqaqhMnTigkJEQOhyO32wEAAAAA2JwxRhcvXlRkZKTy5cv8/D7h34NOnDihUqVK5XYbAAAAAID/Y44dO6aSJUtmup7w70EhISGS/n7SCxYsmMvdAAAAAADs7sKFCypVqpQzj2aG8O9BaZf6FyxYkPAPAAAAALhlsnrrOTf8AwAAAADA5gj/AAAAAADYHOEfAAAAAACbI/wDAAAAAGBzhH8AAAAAAGyO8A8AAAAAgM0R/gEAAAAAsDnCPwAAAAAANkf4BwAAAADA5gj/AAAAAADYHOEfAAAAAACbI/wDAAAAAGBzhH8AAAAAAGyO8A8AAAAAgM0R/gEAAAAAsDnCPwAAAAAANkf4BwAAAADA5gj/AAAAAADYHOEfAAAAAACbI/wDAAAAAGBzhH8AAAAAAGyO8A8AAAAAgM0R/gEAAAAAsDnCPwAAAAAANkf4BwAAAADA5gj/AAAAAADYHOEfAAAAAACbI/wDAAAAAGBzhH8AAAAAAGyO8A8AAAAAgM0R/gEAAAAAsDnCPwAAAAAANkf4BwAAAADA5vLndgPIHWVGLs/WdocntfFwJwAAAAAAb+PMPwAAAAAANkf4BwAAAADA5gj/AAAAAADYHOEfAAAAAACbI/wDAAAAAGBzhH8AAAAAAGyO8A8AAAAAgM0R/gEAAAAAsDnCPwAAAAAANkf4BwAAAADA5gj/AAAAAADYHOEfAAAAAACbI/wDAAAAAGBzhH8AAAAAAGyO8A8AAAAAgM0R/gEAAAAAsDnCPwAAAAAANkf4BwAAAADA5gj/AAAAAADYHOEfAAAAAACbI/wDAAAAAGBzhH8AAAAAAGyO8A8AAAAAgM0R/gEAAAAAsDnCPwAAAAAANkf4BwAAAADA5gj/AAAAAADYHOEfAAAAAACbI/wDAAAAAGBzhH8AAAAAAGyO8A8AAAAAgM0R/gEAAAAAsDnCPwAAAAAANkf4BwAAAADA5gj/AAAAAADYHOEfAAAAAACbI/wDAAAAAGBzhH8AAAAAAGyO8A8AAAAAgM0R/gEAAAAAsDnCPwAAAAAANkf4BwAAAADA5gj/AAAAAADYHOEfAAAAAACbI/wDAAAAAGBzhH8AAAAAAGyO8A8AAAAAgM0R/gEAAAAAsDnCPwAAAAAANkf4BwAAAADA5gj/AAAAAADYHOEfAAAAAACbI/wDAAAAAGBzhH8AAAAAAGyO8A8AAAAAgM0R/gEAAAAAsDnCPwAAAAAANkf4BwAAAADA5gj/AAAAAADYHOEfAAAAAACbI/wDAAAAAGBzhH8AAAAAAGyO8A8AAAAAgM3lavi/du2aXnrpJZUtW1aBgYEqV66cxo8fr9TUVOcYY4zGjh2ryMhIBQYGqlmzZtq1a5dLnaSkJA0cOFBFixZVcHCw2rdvr+PHj7uMiY+PV/fu3RUaGqrQ0FB1795d58+fdxlz9OhRtWvXTsHBwSpatKgGDRqk5ORkr+0/AAAAAAC3Qq6G/8mTJ+udd97RzJkztWfPHk2ZMkVTp07V22+/7RwzZcoUzZgxQzNnztSWLVsUERGhli1b6uLFi84xgwcP1tKlS7V48WKtW7dOly5dUtu2bZWSkuIc061bN+3YsUPR0dGKjo7Wjh071L17d+f6lJQUtWnTRomJiVq3bp0WL16szz//XEOHDr01TwYAAAAAAF7iMMaY3Hrwtm3bKjw8XB988IFz2cMPP6ygoCB99NFHMsYoMjJSgwcP1ogRIyT9fZY/PDxckydPVr9+/ZSQkKBixYrpo48+UpcuXSRJJ06cUKlSpfTNN9+odevW2rNnj6pWraqNGzeqfv36kqSNGzeqYcOG+u2331SpUiV9++23atu2rY4dO6bIyEhJ0uLFi9WjRw+dPn1aBQsWzHJ/Lly4oNDQUCUkJLg1PjeVGbk8W9sdntTGw50AAAAAALLL3Ryaq2f+7777bn3//ffat2+fJOmXX37RunXr9OCDD0qSDh06pJMnT6pVq1bObfz9/dW0aVOtX79ekrRt2zZdvXrVZUxkZKSqV6/uHLNhwwaFhoY6g78kNWjQQKGhoS5jqlev7gz+ktS6dWslJSVp27ZtGfaflJSkCxcuuHwBAAAAAJDX5M/NBx8xYoQSEhJUuXJl+fj4KCUlRa+99poee+wxSdLJkyclSeHh4S7bhYeH68iRI84xfn5+CgsLSzcmbfuTJ0+qePHi6R6/ePHiLmNufJywsDD5+fk5x9xo4sSJGjdunNXdBgAAAADglsrVM/+ffvqpFi5cqE8++UQ///yzFixYoGnTpmnBggUu4xwOh8v3xph0y25045iMxmdnzPVGjRqlhIQE59exY8du2hMAAAAAALkhV8/8v/DCCxo5cqS6du0qSapRo4aOHDmiiRMn6qmnnlJERISkv8/KlyhRwrnd6dOnnWfpIyIilJycrPj4eJez/6dPn1ajRo2cY06dOpXu8c+cOeNSZ9OmTS7r4+PjdfXq1XRXBKTx9/eXv79/dncfAAAAAIBbIlfP/F++fFn58rm24OPj4/yov7JlyyoiIkIxMTHO9cnJyVq7dq0z2NetW1e+vr4uY+Li4hQbG+sc07BhQyUkJGjz5s3OMZs2bVJCQoLLmNjYWMXFxTnHrFy5Uv7+/qpbt66H9xwAAAAAgFsnV8/8t2vXTq+99ppKly6tatWqafv27ZoxY4Z69eol6e/L8AcPHqwJEyaoQoUKqlChgiZMmKCgoCB169ZNkhQaGqrevXtr6NChKlKkiAoXLqxhw4apRo0aatGihSSpSpUquv/++9WnTx/NmTNHktS3b1+1bdtWlSpVkiS1atVKVatWVffu3TV16lSdO3dOw4YNU58+ffL8nfsBAAAAALiZXA3/b7/9tkaPHq3+/fvr9OnTioyMVL9+/fTyyy87xwwfPlxXrlxR//79FR8fr/r162vlypUKCQlxjnn99deVP39+de7cWVeuXFHz5s01f/58+fj4OMd8/PHHGjRokPNTAdq3b6+ZM2c61/v4+Gj58uXq37+/GjdurMDAQHXr1k3Tpk27Bc8EAAAAAADe4zDGmNxuwi7c/XzFvKDMyOXZ2u7wpDYe7gQAAAAAkF3u5tBcfc8/AAAAAADwPsI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmcj38//HHH3riiSdUpEgRBQUFqXbt2tq2bZtzvTFGY8eOVWRkpAIDA9WsWTPt2rXLpUZSUpIGDhyookWLKjg4WO3bt9fx48ddxsTHx6t79+4KDQ1VaGiounfvrvPnz7uMOXr0qNq1a6fg4GAVLVpUgwYNUnJystf2HQAAAACAWyFXw398fLwaN24sX19fffvtt9q9e7emT5+uQoUKOcdMmTJFM2bM0MyZM7VlyxZFRESoZcuWunjxonPM4MGDtXTpUi1evFjr1q3TpUuX1LZtW6WkpDjHdOvWTTt27FB0dLSio6O1Y8cOde/e3bk+JSVFbdq0UWJiotatW6fFixfr888/19ChQ2/JcwEAAAAAgLc4jDEmtx585MiR+umnn/Tjjz9muN4Yo8jISA0ePFgjRoyQ9PdZ/vDwcE2ePFn9+vVTQkKCihUrpo8++khdunSRJJ04cUKlSpXSN998o9atW2vPnj2qWrWqNm7cqPr160uSNm7cqIYNG+q3335TpUqV9O2336pt27Y6duyYIiMjJUmLFy9Wjx49dPr0aRUsWDDL/blw4YJCQ0OVkJDg1vjcVGbk8mxtd3hSGw93AgAAAADILndzaK6e+f/yyy9Vr149PfrooypevLjq1Kmj9957z7n+0KFDOnnypFq1auVc5u/vr6ZNm2r9+vWSpG3btunq1asuYyIjI1W9enXnmA0bNig0NNQZ/CWpQYMGCg0NdRlTvXp1Z/CXpNatWyspKcnlbQjXS0pK0oULF1y+AAAAAADIa3I1/B88eFCzZ89WhQoVtGLFCj3zzDMaNGiQPvzwQ0nSyZMnJUnh4eEu24WHhzvXnTx5Un5+fgoLC7vpmOLFi6d7/OLFi7uMufFxwsLC5Ofn5xxzo4kTJzrvIRAaGqpSpUpZfQoAAAAAAPC6XA3/qampuuOOOzRhwgTVqVNH/fr1U58+fTR79myXcQ6Hw+V7Y0y6ZTe6cUxG47Mz5nqjRo1SQkKC8+vYsWM37QkAAAAAgNyQq+G/RIkSqlq1qsuyKlWq6OjRo5KkiIgISUp35v306dPOs/QRERFKTk5WfHz8TcecOnUq3eOfOXPGZcyNjxMfH6+rV6+muyIgjb+/vwoWLOjyBQAAAABAXpOr4b9x48bau3evy7J9+/YpKipKklS2bFlFREQoJibGuT45OVlr165Vo0aNJEl169aVr6+vy5i4uDjFxsY6xzRs2FAJCQnavHmzc8ymTZuUkJDgMiY2NlZxcXHOMStXrpS/v7/q1q3r4T0HAAAAAODWyZ+bDz5kyBA1atRIEyZMUOfOnbV582a9++67evfddyX9fRn+4MGDNWHCBFWoUEEVKlTQhAkTFBQUpG7dukmSQkND1bt3bw0dOlRFihRR4cKFNWzYMNWoUUMtWrSQ9PfVBPfff7/69OmjOXPmSJL69u2rtm3bqlKlSpKkVq1aqWrVqurevbumTp2qc+fOadiwYerTpw9n9AEAAAAA/2i5Gv7vvPNOLV26VKNGjdL48eNVtmxZvfHGG3r88cedY4YPH64rV66of//+io+PV/369bVy5UqFhIQ4x7z++uvKnz+/OnfurCtXrqh58+aaP3++fHx8nGM+/vhjDRo0yPmpAO3bt9fMmTOd6318fLR8+XL1799fjRs3VmBgoLp166Zp06bdgmcCAAAAAADvcRhjTG43YRfufr5iXlBm5PJsbXd4UhsPdwIAAAAAyC53c6ilM/8JCQlaunSpfvzxRx0+fFiXL19WsWLFVKdOHbVu3dr5/nkAAAAAAJB3uHXDv7i4OPXp00clSpTQ+PHjlZiYqNq1a6t58+YqWbKkVq9erZYtW6pq1ar69NNPvd0zAAAAAACwwK0z/7Vq1dKTTz6pzZs3q3r16hmOuXLlipYtW6YZM2bo2LFjGjZsmEcbBQAAAAAA2eNW+N+1a5eKFSt20zGBgYF67LHH9Nhjj+nMmTMeaQ4AAAAAAOScW5f9Xx/8ExMTLY0HAAAAAAC5y63wf73w8HD16tVL69at80Y/AAAAAADAwyyH/0WLFikhIUHNmzdXxYoVNWnSJJ04ccIbvQEAAAAAAA+wHP7btWunzz//XCdOnNC//vUvLVq0SFFRUWrbtq2WLFmia9eueaNPAAAAAACQTZbDf5oiRYpoyJAh+uWXXzRjxgx99913euSRRxQZGamXX35Zly9f9mSfAAAAAAAgm9y6239GTp48qQ8//FDz5s3T0aNH9cgjj6h37946ceKEJk2apI0bN2rlypWe7BUAAAAAAGSD5fC/ZMkSzZs3TytWrFDVqlU1YMAAPfHEEypUqJBzTO3atVWnTh1P9gkAAAAAALLJcvjv2bOnunbtqp9++kl33nlnhmPKlSunF198McfNAQAAAACAnLMc/uPi4hQUFHTTMYGBgRozZky2mwIAAAAAAJ5j+YZ/a9as0YoVK9ItX7Fihb799luPNAUAAAAAADzHcvgfOXKkUlJS0i03xmjkyJEeaQoAAAAAAHiO5fC/f/9+Va1aNd3yypUr6/fff/dIUwAAAAAAwHMsh//Q0FAdPHgw3fLff/9dwcHBHmkKAAAAAAB4juXw3759ew0ePFgHDhxwLvv99981dOhQtW/f3qPNAQAAAACAnLMc/qdOnarg4GBVrlxZZcuWVdmyZVWlShUVKVJE06ZN80aPAAAAAAAgByx/1F9oaKjWr1+vmJgY/fLLLwoMDFTNmjXVpEkTb/QHAAAAAAByyHL4lySHw6FWrVqpVatWnu4HAAAAAAB4WLbC//fff6/vv/9ep0+fVmpqqsu6uXPneqQxAAAAAADgGZbD/7hx4zR+/HjVq1dPJUqUkMPh8EZfAAAAAADAQyyH/3feeUfz589X9+7dvdEPAAAAAADwMMt3+09OTlajRo280QsAAAAAAPACy+H/6aef1ieffOKNXgAAAAAAgBdYvuz/r7/+0rvvvqvvvvtONWvWlK+vr8v6GTNmeKw5AAAAAACQc5bD/86dO1W7dm1JUmxsrMs6bv4HAAAAAEDeYzn8r1692ht9AAAAAAAAL7H8nv80v//+u1asWKErV65IkowxHmsKAAAAAAB4juXwf/bsWTVv3lwVK1bUgw8+qLi4OEl/3whw6NChHm8QAAAAAADkjOXwP2TIEPn6+uro0aMKCgpyLu/SpYuio6M92hwAAAAAAMg5y+/5X7lypVasWKGSJUu6LK9QoYKOHDniscYAAAAAAIBnWD7zn5iY6HLGP82ff/4pf39/jzQFAAAAAAA8x3L4b9KkiT788EPn9w6HQ6mpqZo6daruvfdejzYHAAAAAAByzvJl/1OnTlWzZs20detWJScna/jw4dq1a5fOnTunn376yRs9AgAAAACAHLB85r9q1arauXOn7rrrLrVs2VKJiYnq1KmTtm/frvLly3ujRwAAAAAAkAOWz/xLUkREhMaNG+fpXgAAAAAAgBdYDv8//PDDTdc3adIk280AAAAAAADPsxz+mzVrlm6Zw+Fw/jslJSVHDQEAAAAAAM+y/J7/+Ph4l6/Tp08rOjpad955p1auXOmNHgEAAAAAQA5YPvMfGhqablnLli3l7++vIUOGaNu2bR5pDAAAAAAAeIblM/+ZKVasmPbu3eupcgAAAAAAwEMsn/nfuXOny/fGGMXFxWnSpEmqVauWxxoDAAAAAACeYTn8165dWw6HQ8YYl+UNGjTQ3LlzPdYYAAAAAADwDMvh/9ChQy7f58uXT8WKFVNAQIDHmgIAAAAAAJ5jOfxHRUV5ow8AAAAAAOAllsP/W2+95fbYQYMGWS0PAAAAAAA8zHL4f/3113XmzBldvnxZhQoVkiSdP39eQUFBKlasmHOcw+Eg/AMAAAAAkAdY/qi/1157TbVr19aePXt07tw5nTt3Tnv27NEdd9yhV199VYcOHdKhQ4d08OBBb/QLAAAAAAAsshz+R48erbfffluVKlVyLqtUqZJef/11vfTSSx5tDgAAAAAA5Jzl8B8XF6erV6+mW56SkqJTp055pCkAAAAAAOA5lsN/8+bN1adPH23dulXGGEnS1q1b1a9fP7Vo0cLjDQIAAAAAgJyxHP7nzp2r2267TXfddZcCAgLk7++v+vXrq0SJEnr//fe90SMAAAAAAMgBy3f7L1asmL755hvt27dPv/32m4wxqlKliipWrOiN/gAAAAAAQA5ZDv9pypQpI2OMypcvr/z5s10GAAAAAAB4meXL/i9fvqzevXsrKChI1apV09GjRyVJgwYN0qRJkzzeIAAAAAAAyBnL4X/UqFH65ZdftGbNGgUEBDiXt2jRQp9++qlHmwMAAAAAADln+Xr9ZcuW6dNPP1WDBg3kcDicy6tWraoDBw54tDkAAAAAAJBzls/8nzlzRsWLF0+3PDEx0eWPAQAAAAAAIG+wHP7vvPNOLV++3Pl9WuB/77331LBhQ891BgAAAAAAPMLyZf8TJ07U/fffr927d+vatWt68803tWvXLm3YsEFr1671Ro/Io8qMXJ71oAwcntTGw50AAAAAAG7G8pn/Ro0aaf369bp8+bLKly+vlStXKjw8XBs2bFDdunW90SMAAAAAAMgBS2f+r169qr59+2r06NFasGCBt3oCAAAAAAAeZOnMv6+vr5YuXeqtXgAAAAAAgBdYvuy/Y8eOWrZsmRdaAQAAAAAA3mD5hn+33367XnnlFa1fv15169ZVcHCwy/pBgwZ5rDkAAAAAAJBzlsP/+++/r0KFCmnbtm3atm2byzqHw0H4BwAAAAAgj3E7/Kempipfvnw6dOiQN/sBAAAAAAAe5vZ7/n19fXX69Gnn9y+88ILOnTvnlaYAAAAAAIDnuB3+jTEu38+ZM0fnz5/3dD8AAAAAAMDDLN/tP82NfwwAAAAAAAB5U7bDPwAAAAAA+GewdLf/l19+WUFBQZKk5ORkvfbaawoNDXUZM2PGDM91BwAAAAAAcszt8N+kSRPt3bvX+X2jRo108OBBlzEOh8NznQEAAAAAAI9wO/yvWbPGi20AAAAAAABv4T3/AAAAAADYnFvhf9KkSUpMTHSr4KZNm7R8+fIcNQUAAAAAADzHrfC/e/duRUVF6V//+pe+/fZbnTlzxrnu2rVr2rlzp2bNmqVGjRqpa9euKliwoNcaBgAAAAAA1rj1nv8PP/xQO3fu1H/+8x89/vjjSkhIkI+Pj/z9/XX58mVJUp06ddS3b1899dRT8vf392rTAAAAAADAfW7f8K9mzZqaM2eO3nnnHe3cuVOHDx/WlStXVLRoUdWuXVtFixb1Zp8AAAAAACCb3A7/aRwOh2rVqqVatWp5ox8AAAAAAOBh3O0fAAAAAACbI/wDAAAAAGBzhH8AAAAAAGyO8A8AAAAAgM3lOPxfuHBBy5Yt0549ezzRDwAAAAAA8DDL4b9z586aOXOmJOnKlSuqV6+eOnfurJo1a+rzzz/3eIMAAAAAACBnLIf/H374Qffcc48kaenSpTLG6Pz583rrrbf06quverxBAAAAAACQM5bDf0JCggoXLixJio6O1sMPP6ygoCC1adNG+/fv93iDAAAAAAAgZyyH/1KlSmnDhg1KTExUdHS0WrVqJUmKj49XQECAxxsEAAAAAAA5k9/qBoMHD9bjjz+uAgUKKCoqSs2aNZP099sBatSo4en+AAAAAABADlkO//3799ddd92lY8eOqWXLlsqX7++LB8qVK8d7/gEAAAAAyIMsh39JqlevnurVq+eyrE2bNh5pCAAAAAAAeJZb4f/55593u+CMGTOy3QwAAAAAAPA8t8L/9u3bXb7ftm2bUlJSVKlSJUnSvn375OPjo7p163q+QwAAAAAAkCNuhf/Vq1c7/z1jxgyFhIRowYIFCgsLk/T3nf579uype+65xztdAgAAAACAbLP8UX/Tp0/XxIkTncFfksLCwvTqq69q+vTpHm0OAAAAAADknOXwf+HCBZ06dSrd8tOnT+vixYseaQoAAAAAAHiO5fDfsWNH9ezZU5999pmOHz+u48eP67PPPlPv3r3VqVMnb/QIAAAAAABywPJH/b3zzjsaNmyYnnjiCV29evXvIvnzq3fv3po6darHGwQAAAAAADljOfwHBQVp1qxZmjp1qg4cOCBjjG6//XYFBwd7oz8AAAAAAJBDlsN/muDgYNWsWdOTvQAAAAAAAC/IVvjfsmWL/ve//+no0aNKTk52WbdkyRKPNAYAAAAAADzD8g3/Fi9erMaNG2v37t1aunSprl69qt27d2vVqlUKDQ31Ro8AAAAAACAHLIf/CRMm6PXXX9fXX38tPz8/vfnmm9qzZ486d+6s0qVLe6NHAAAAAACQA5bD/4EDB9SmTRtJkr+/vxITE+VwODRkyBC9++67Hm8QAAAAAADkjOXwX7hwYV28eFGSdNtttyk2NlaSdP78eV2+fNmz3QEAAAAAgByzfMO/e+65RzExMapRo4Y6d+6s5557TqtWrVJMTIyaN2/ujR4BAAAAAEAOWA7/M2fO1F9//SVJGjVqlHx9fbVu3Tp16tRJo0eP9niDAAAAAAAgZyyH/8KFCzv/nS9fPg0fPlzDhw/3aFMAAAAAAMBzLL/nX/r7pn8vvfSSHnvsMZ0+fVqSFB0drV27dnm0OQAAAAAAkHOWw//atWtVo0YNbdq0SUuWLNGlS5ckSTt37tSYMWM83iAAAAAAAMgZy+F/5MiRevXVVxUTEyM/Pz/n8nvvvVcbNmzwaHMAAAAAACDnLIf/X3/9VR07dky3vFixYjp79qxHmgIAAAAAAJ5jOfwXKlRIcXFx6ZZv375dt912m0eaAgAAAAAAnmM5/Hfr1k0jRozQyZMn5XA4lJqaqp9++knDhg3Tk08+6Y0eAQAAAABADlgO/6+99ppKly6t2267TZcuXVLVqlXVpEkTNWrUSC+99JI3egQAAAAAADmQ38pgY4xOnDih9957T6+88op+/vlnpaamqk6dOqpQoYK3egQAAAAAADlgOfxXqFBBu3btUoUKFVSuXDlv9QUAAAAAADzE0mX/+fLlU4UKFbirPwAAAAAA/yCW3/M/ZcoUvfDCC4qNjfVGPwAAAAAAwMMsXfYvSU888YQuX76sWrVqyc/PT4GBgS7rz50757HmAAAAAABAzlkO/2+88YYX2gAAAAAAAN5iOfw/9dRT3ugDAAAAAAB4ieXwL0mpqan6/fffdfr0aaWmprqsa9KkiUcaAwAAAAAAnmE5/G/cuFHdunXTkSNHZIxxWedwOJSSkuKx5gAAAAAAQM5ZDv/PPPOM6tWrp+XLl6tEiRJyOBze6AsAAAAAAHiI5fC/f/9+ffbZZ7r99tu90Q8AAAAAAPCwfFY3qF+/vn7//Xdv9AIAAAAAALzArTP/O3fudP574MCBGjp0qE6ePKkaNWrI19fXZWzNmjU92yEAAAAAAMgRt8J/7dq15XA4XG7w16tXL+e/09Zxwz8AAAAAAPIet8L/oUOHvN0HAAAAAADwErfCf1RUlHr16qU333xTISEh3u4JAAAAAAB4kNs3/FuwYIGuXLnizV4AAAAAAIAXuB3+r3+/PwAAAAAA+Oew9FF/DofDW30AAAAAAAAvces9/2kqVqyY5R8Azp07l6OGAAAAAACAZ1kK/+PGjVNoaKi3egEAAAAAAF5gKfx37dpVxYsX91YvAAAAAADAC9x+zz/v9wcAAAAA4J+Ju/0DAAAAAGBzbl/2n5qa6s0+AAAAAACAl1j6qD8AAAAAAPDPQ/gHAAAAAMDmCP8AAAAAANicW+H/jjvuUHx8vCRp/Pjxunz5slebAgAAAAAAnuNW+N+zZ48SExMlSePGjdOlS5e82hQAAAAAAPAct+72X7t2bfXs2VN33323jDGaNm2aChQokOHYl19+2aMNAgAAAACAnHEr/M+fP19jxozR119/LYfDoW+//Vb586ff1OFwEP4BAAAAAMhj3Ar/lSpV0uLFiyVJ+fLl0/fff6/ixYt7tTEAAAAAAOAZboX/66WmpnqjDwAAAAAA4CWWw78kHThwQG+88Yb27Nkjh8OhKlWq6LnnnlP58uU93R8AAAAAAMght+72f70VK1aoatWq2rx5s2rWrKnq1atr06ZNqlatmmJiYrzRIwAAAAAAyAHLZ/5HjhypIUOGaNKkSemWjxgxQi1btvRYcwAAAAAAIOcsn/nfs2ePevfunW55r169tHv3bo80BQAAAAAAPMdy+C9WrJh27NiRbvmOHTty9AkAEydOlMPh0ODBg53LjDEaO3asIiMjFRgYqGbNmmnXrl0u2yUlJWngwIEqWrSogoOD1b59ex0/ftxlTHx8vLp3767Q0FCFhoaqe/fuOn/+vMuYo0ePql27dgoODlbRokU1aNAgJScnZ3t/AAAAAADIKyyH/z59+qhv376aPHmyfvzxR61bt06TJk1Sv3791Ldv32w1sWXLFr377ruqWbOmy/IpU6ZoxowZmjlzprZs2aKIiAi1bNlSFy9edI4ZPHiwli5dqsWLF2vdunW6dOmS2rZtq5SUFOeYbt26aceOHYqOjlZ0dLR27Nih7t27O9enpKSoTZs2SkxM1Lp167R48WJ9/vnnGjp0aLb2BwAAAACAvMTye/5Hjx6tkJAQTZ8+XaNGjZIkRUZGauzYsRo0aJDlBi5duqTHH39c7733nl599VXncmOM3njjDb344ovq1KmTJGnBggUKDw/XJ598on79+ikhIUEffPCBPvroI7Vo0UKStHDhQpUqVUrfffedWrdurT179ig6OlobN25U/fr1JUnvvfeeGjZsqL1796pSpUpauXKldu/erWPHjikyMlKSNH36dPXo0UOvvfaaChYsaHm/AAAAAADIKyyf+Xc4HBoyZIiOHz+uhIQEJSQk6Pjx43ruuefkcDgsNzBgwAC1adPGGd7THDp0SCdPnlSrVq2cy/z9/dW0aVOtX79ekrRt2zZdvXrVZUxkZKSqV6/uHLNhwwaFhoY6g78kNWjQQKGhoS5jqlev7gz+ktS6dWslJSVp27ZtmfaelJSkCxcuuHwBAAAAAJDXWD7zf72QkJAcPfjixYv1888/a8uWLenWnTx5UpIUHh7usjw8PFxHjhxxjvHz81NYWFi6MWnbnzx5MsN7ERQvXtxlzI2PExYWJj8/P+eYjEycOFHjxo3LajcBAAAAAMhVls/8e8qxY8f03HPPaeHChQoICMh03I1XExhjsrzC4MYxGY3PzpgbjRo1ynn1Q0JCgo4dO3bTvgAAAAAAyA25Fv63bdum06dPq27dusqfP7/y58+vtWvX6q233lL+/PmdZ+JvPPN++vRp57qIiAglJycrPj7+pmNOnTqV7vHPnDnjMubGx4mPj9fVq1fTXRFwPX9/fxUsWNDlCwAAAACAvCbXwn/z5s3166+/aseOHc6vevXq6fHHH9eOHTtUrlw5RUREKCYmxrlNcnKy1q5dq0aNGkmS6tatK19fX5cxcXFxio2NdY5p2LChEhIStHnzZueYTZs2KSEhwWVMbGys4uLinGNWrlwpf39/1a1b16vPAwAAAAAA3mbpPf9pN9ebM2eOKlasmKMHDgkJUfXq1V2WBQcHq0iRIs7lgwcP1oQJE1ShQgVVqFBBEyZMUFBQkLp16yZJCg0NVe/evTV06FAVKVJEhQsX1rBhw1SjRg3nDQSrVKmi+++/X3369NGcOXMkSX379lXbtm1VqVIlSVKrVq1UtWpVde/eXVOnTtW5c+c0bNgw9enTh7P5AAAAAIB/PEvh39fXV7Gxsdm6q392DB8+XFeuXFH//v0VHx+v+vXra+XKlS43Gnz99deVP39+de7cWVeuXFHz5s01f/58+fj4OMd8/PHHGjRokPNTAdq3b6+ZM2c61/v4+Gj58uXq37+/GjdurMDAQHXr1k3Tpk27JfsJAAAAAIA3OYwxxsoGQ4cOla+vryZNmuStnv6xLly4oNDQUCUkJOT5KwbKjFyere0OT2rj0RoAAAAAgOxzN4da/qi/5ORkvf/++4qJiVG9evUUHBzssn7GjBnWuwUAAAAAAF5jOfzHxsbqjjvukCTt27fPZd2tejsAAAAAAABwn+Xwv3r1am/0AQAAAAAAvCTbH/X3+++/a8WKFbpy5YokyeKtAwAAAAAAwC1iOfyfPXtWzZs3V8WKFfXggw8qLi5OkvT0009r6NChHm8QAAAAAADkjOXwP2TIEPn6+uro0aMKCgpyLu/SpYuio6M92hwAAAAAAMg5y+/5X7lypVasWKGSJUu6LK9QoYKOHDniscYAAAAAAIBnWD7zn5iY6HLGP82ff/4pf39/jzQFAAAAAAA8x3L4b9KkiT788EPn9w6HQ6mpqZo6daruvfdejzYHAAAAAAByzvJl/1OnTlWzZs20detWJScna/jw4dq1a5fOnTunn376yRs9AgAAAACAHLB85r9q1arauXOn7rrrLrVs2VKJiYnq1KmTtm/frvLly3ujRwAAAAAAkAOWz/xLUkREhMaNG+fpXgAAAAAAgBdkK/zHx8frgw8+0J49e+RwOFSlShX17NlThQsX9nR/AAAAAAAghyxf9r927VqVLVtWb731luLj43Xu3Dm99dZbKlu2rNauXeuNHgEAAAAAQA5YPvM/YMAAde7cWbNnz5aPj48kKSUlRf3799eAAQMUGxvr8SYBAAAAAED2WT7zf+DAAQ0dOtQZ/CXJx8dHzz//vA4cOODR5gAAAAAAQM5ZDv933HGH9uzZk275nj17VLt2bU/0BAAAAAAAPMity/537tzp/PegQYP03HPP6ffff1eDBg0kSRs3btR//vMfTZo0yTtdAgAAAACAbHMr/NeuXVsOh0PGGOey4cOHpxvXrVs3denSxXPdAQAAAACAHHMr/B86dMjbfQAAAAAAAC9xK/xHRUV5uw8AAAAAAOAllj/qT5L++OMP/fTTTzp9+rRSU1Nd1g0aNMgjjQEAAAAAAM+wHP7nzZunZ555Rn5+fipSpIgcDodzncPhIPwDAAAAAJDHWA7/L7/8sl5++WWNGjVK+fJZ/qRAAAAAAABwi1lO75cvX1bXrl0J/gAAAAAA/ENYTvC9e/fW//73P2/0AgAAAAAAvMDyZf8TJ05U27ZtFR0drRo1asjX19dl/YwZMzzWHAAAAAAAyDnL4X/ChAlasWKFKlWqJEnpbvgHAAAAAADyFsvhf8aMGZo7d6569OjhhXYAAAAAAICnWX7Pv7+/vxo3buyNXgAAAAAAgBdYDv/PPfec3n77bW/0AgAAAAAAvMDyZf+bN2/WqlWr9PXXX6tatWrpbvi3ZMkSjzUHAAAAAAByznL4L1SokDp16uSNXgAAAAAAgBdYDv/z5s3zRh8AAAAAAMBLLL/nHwAAAAAA/LNYPvNftmxZORyOTNcfPHgwRw0BAAAAAADPshz+Bw8e7PL91atXtX37dkVHR+uFF17wVF8AAAAAAMBDLIf/5557LsPl//nPf7R169YcNwQAAAAAADzLY+/5f+CBB/T55597qhwAAAAAAPAQj4X/zz77TIULF/ZUOQAAAAAA4CGWL/uvU6eOyw3/jDE6efKkzpw5o1mzZnm0OQAAAAAAkHOWw/9DDz3k8n2+fPlUrFgxNWvWTJUrV/ZUXwAAAAAAwEMsh/8xY8Z4ow8AAAAAAOAlHnvPPwAAAAAAyJvcPvOfL18+l/f6Z8ThcOjatWs5bgoAAAAAAHiO2+F/6dKlma5bv3693n77bRljPNIUAAAAAADwHLfDf4cOHdIt++233zRq1Ch99dVXevzxx/XKK694tDkAAAAAAJBz2XrP/4kTJ9SnTx/VrFlT165d044dO7RgwQKVLl3a0/0BAAAAAIAcshT+ExISNGLECN1+++3atWuXvv/+e3311VeqXr26t/oDAAAAAAA55PZl/1OmTNHkyZMVERGhRYsWZfg2AAAAAAAAkPe4Hf5HjhypwMBA3X777VqwYIEWLFiQ4bglS5Z4rDkAAAAAAJBzbof/J598MsuP+gMAAAAAAHmP2+F//vz5XmwDAAAAAAB4S7bu9g8AAAAAAP45CP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANhc/txuACgzcrnlbQ5PauOFTgAAAADAnjjzDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2l6vhf+LEibrzzjsVEhKi4sWL66GHHtLevXtdxhhjNHbsWEVGRiowMFDNmjXTrl27XMYkJSVp4MCBKlq0qIKDg9W+fXsdP37cZUx8fLy6d++u0NBQhYaGqnv37jp//rzLmKNHj6pdu3YKDg5W0aJFNWjQICUnJ3tl3wEAAAAAuFVyNfyvXbtWAwYM0MaNGxUTE6Nr166pVatWSkxMdI6ZMmWKZsyYoZkzZ2rLli2KiIhQy5YtdfHiReeYwYMHa+nSpVq8eLHWrVunS5cuqW3btkpJSXGO6datm3bs2KHo6GhFR0drx44d6t69u3N9SkqK2rRpo8TERK1bt06LFy/W559/rqFDh96aJwMAAAAAAC/J1bv9R0dHu3w/b948FS9eXNu2bVOTJk1kjNEbb7yhF198UZ06dZIkLViwQOHh4frkk0/Ur18/JSQk6IMPPtBHH32kFi1aSJIWLlyoUqVK6bvvvlPr1q21Z88eRUdHa+PGjapfv74k6b333lPDhg21d+9eVapUSStXrtTu3bt17NgxRUZGSpKmT5+uHj166LXXXlPBggVv4TMDAAAAAIDn5Kn3/CckJEiSChcuLEk6dOiQTp48qVatWjnH+Pv7q2nTplq/fr0kadu2bbp69arLmMjISFWvXt05ZsOGDQoNDXUGf0lq0KCBQkNDXcZUr17dGfwlqXXr1kpKStK2bdsy7DcpKUkXLlxw+QIAAAAAIK/JM+HfGKPnn39ed999t6pXry5JOnnypCQpPDzcZWx4eLhz3cmTJ+Xn56ewsLCbjilevHi6xyxevLjLmBsfJywsTH5+fs4xN5o4caLzHgKhoaEqVaqU1d0GAAAAAMDr8kz4f/bZZ7Vz504tWrQo3TqHw+HyvTEm3bIb3Tgmo/HZGXO9UaNGKSEhwfl17Nixm/YEAAAAAEBuyBPhf+DAgfryyy+1evVqlSxZ0rk8IiJCktKdeT99+rTzLH1ERISSk5MVHx9/0zGnTp1K97hnzpxxGXPj48THx+vq1avprghI4+/vr4IFC7p8AQAAAACQ1+Rq+DfG6Nlnn9WSJUu0atUqlS1b1mV92bJlFRERoZiYGOey5ORkrV27Vo0aNZIk1a1bV76+vi5j4uLiFBsb6xzTsGFDJSQkaPPmzc4xmzZtUkJCgsuY2NhYxcXFOcesXLlS/v7+qlu3rud3HgAAAACAWyRX7/Y/YMAAffLJJ/riiy8UEhLiPPMeGhqqwMBAORwODR48WBMmTFCFChVUoUIFTZgwQUFBQerWrZtzbO/evTV06FAVKVJEhQsX1rBhw1SjRg3n3f+rVKmi+++/X3369NGcOXMkSX379lXbtm1VqVIlSVKrVq1UtWpVde/eXVOnTtW5c+c0bNgw9enThzP6AAAAAIB/tFwN/7Nnz5YkNWvWzGX5vHnz1KNHD0nS8OHDdeXKFfXv31/x8fGqX7++Vq5cqZCQEOf4119/Xfnz51fnzp115coVNW/eXPPnz5ePj49zzMcff6xBgwY5PxWgffv2mjlzpnO9j4+Pli9frv79+6tx48YKDAxUt27dNG3aNC/tPQAAAAAAt4bDGGNyuwm7uHDhgkJDQ5WQkJDnrxYoM3J5trY7PKmNR2tkt86NNQAAAADg/yJ3c2ieuOEfAAAAAADwHsI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHOEfwAAAAAAbI7wDwAAAACAzRH+AQAAAACwOcI/AAAAAAA2R/gHAAAAAMDmCP8AAAAAANgc4R8AAAAAAJsj/AMAAAAAYHP5c7sBwBPKjFyere0OT2rj4U4AAAAAIO/hzD8AAAAAADZH+AcAAAAAwOYI/wAAAAAA2BzhHwAAAAAAmyP8AwAAAABgc4R/AAAAAABsjvAPAAAAAIDNEf4BAAAAALA5wj8AAAAAADZH+AcAAAAAwOYI/wAAAAAA2BzhHwAAAAAAmyP8AwAAAABgc4R/AAAAAABsjvAPAAAAAIDNEf4BAAAAALA5wj8AAAAAADZH+AcAAAAAwOYI/wAAAAAA2BzhHwAAAAAAmyP8AwAAAABgc4R/AAAAAABsjvAPAAAAAIDNEf4BAAAAALA5wj8AAAAAADZH+AcAAAAAwOYI/wAAAAAA2BzhHwAAAAAAmyP8AwAAAABgc4R/AAAAAABsjvAPAAAAAIDNEf4BAAAAALA5wj8AAAAAADZH+AcAAAAAwOYI/wAAAAAA2BzhHwAAAAAAmyP8AwAAAABgc4R/AAAAAABsjvAPAAAAAIDNEf4BAAAAALA5wj8AAAAAADaXP7cbAPKKMiOXZ2u7w5PaeLgTAAAAAPAszvwDAAAAAGBzhH8AAAAAAGyO8A8AAAAAgM0R/gEAAAAAsDnCPwAAAAAANkf4BwAAAADA5gj/AAAAAADYHOEfAAAAAACbI/wDAAAAAGBzhH8AAAAAAGyO8A8AAAAAgM0R/gEAAAAAsDnCPwAAAAAANkf4BwAAAADA5gj/AAAAAADYHOEfAAAAAACby5/bDQB2U2bkcsvbHJ7UxgudAAAAAMDfOPMPAAAAAIDNEf4BAAAAALA5wj8AAAAAADZH+AcAAAAAwOYI/wAAAAAA2BzhHwAAAAAAmyP8AwAAAABgc4R/AAAAAABsjvAPAAAAAIDN5c/tBgCkV2bk8mxtd3hSGw93AgAAAMAOOPMPAAAAAIDNEf4BAAAAALA5wj8AAAAAADZH+AcAAAAAwOa44R9gU9w0EAAAAEAazvwDAAAAAGBzhH8AAAAAAGyOy/4B3FR23j7AWwcAAACAvIUz/zeYNWuWypYtq4CAANWtW1c//vhjbrcEAAAAAECOcOb/Op9++qkGDx6sWbNmqXHjxpozZ44eeOAB7d69W6VLl87t9oB/LG4+CAAAAOQuwv91ZsyYod69e+vpp5+WJL3xxhtasWKFZs+erYkTJ+Zyd8D/bZ74AwJ/hAAAAMD/VYT//yc5OVnbtm3TyJEjXZa3atVK69evz3CbpKQkJSUlOb9PSEiQJF24cMF7jXpIatLlbG13/b55okZ263iixo112B/P9ZJX98dTz0n1MSuyVSd2XOs8VyOv9eIJeakXAAAAb0t7rWqMuek4h8lqxP8RJ06c0G233aaffvpJjRo1ci6fMGGCFixYoL1796bbZuzYsRo3btytbBMAAAAAgHSOHTumkiVLZrqeM/83cDgcLt8bY9ItSzNq1Cg9//zzzu9TU1N17tw5FSlSJNNt8roLFy6oVKlSOnbsmAoWLJhrNfJSL3mlRl7qhf3J272wP3m7F/Ynb/fC/ni3Tk6xP3m7F/bHu3XsJK88J3mlj5wyxujixYuKjIy86TjC//9TtGhR+fj46OTJky7LT58+rfDw8Ay38ff3l7+/v8uyQoUKeavFW6pgwYI5/gXwRI281EteqZGXemF/8nYv7E/e7oX9ydu9sD/erZNX+rDb/nhCXppvnpCX9icvPS95RV55TvJKHzkRGhqa5Rg+6u//8fPzU926dRUTE+OyPCYmxuVtAAAAAAAA/NNw5v86zz//vLp376569eqpYcOGevfdd3X06FE988wzud0aAAAAAADZRvi/TpcuXXT27FmNHz9ecXFxql69ur755htFRUXldmu3jL+/v8aMGZPu7Qy3ukZe6iWv1MhLvbA/ebsX9idv98L+5O1e2B/v1skp9idv98L+eLeOneSV5ySv9HGrcLd/AAAAAABsjvf8AwAAAABgc4R/AAAAAABsjvAPAAAAAIDNEf4BAAAAALA5wj8kST/88IPatWunyMhIORwOLVu2zHKNiRMn6s4771RISIiKFy+uhx56SHv37rVUY/bs2apZs6YKFiyoggULqmHDhvr2228t93JjXw6HQ4MHD7a03dixY+VwOFy+IiIiLD/+H3/8oSeeeEJFihRRUFCQateurW3btrm9fZkyZdL14XA4NGDAAEt9XLt2TS+99JLKli2rwMBAlStXTuPHj1dqaqqlOhcvXtTgwYMVFRWlwMBANWrUSFu2bMl0fFZzyxijsWPHKjIyUoGBgWrWrJl27dpluc6SJUvUunVrFS1aVA6HQzt27LBU4+rVqxoxYoRq1Kih4OBgRUZG6sknn9SJEycs9TF27FhVrlxZwcHBCgsLU4sWLbRp0ybL+3O9fv36yeFw6I033rBUo0ePHunmTYMGDSz3sWfPHrVv316hoaEKCQlRgwYNdPToUUt1MprDDodDU6dOdbvGpUuX9Oyzz6pkyZIKDAxUlSpVNHv2bEt9nDp1Sj169FBkZKSCgoJ0//33a//+/S5j3DmWZTVv3anhzpzNqo4789adXrKat1aP75nNWXfqZDVv3e3lZvPWnRruzFl36mQ1b92pkdW8zer/TnePs1nVcWfOekJWfbh7nLXymiKzOXsr9kdy7zh7K3px5zibVQ13jrPektFrPqvz9sYa7r4+yKoPd+etnWX0vLhzrL0VfeTmvL2VCP+QJCUmJqpWrVqaOXNmtmusXbtW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3pn+oehmfZw/f96cPn3aGGPMXXfdZfr3759uTGbHMivz1p3joTtzNqs67sxbq8fmjOZtZjWsztns9HLjvM2shpV5604f7szZzOpYmbfu9OLOvE2T9n9ndo+zN9a5Xm685z+r1wJZHWdvrJOd46wnpfWR3eOsN3rJznH2xhrXszJfs8vKa77M5q27NW52nM3ua0935+0/lZXnxd3XB97u41bM29yU3923BwBZMcZo4MCBWrp0qdasWaOyZct6rG7ae3Hc0bx583R35e/Zs6cqV66sESNGyMfHJ1t9JCUlac+ePbrnnnvc3qZx48bpPrJp3759ioqKsvz48+bNU/HixdWmTRvL20p/3602Xz7X23z4+PhY/qi/NMHBwQoODlZ8fLxWrFihKVOmWK5RtmxZRUREKCYmRnXq1JH09/vg1q5dq8mTJ2err5y4evWqOnfurP3792v16tUqUqSIR+pancPdu3dP93601q1bq3v37urZs2e2+zh79qyOHTumEiVKuDXez89Pd955p8fmsCR98MEHqlu3ruX3OF69elVXr1712BwODQ2V9Pd9PbZu3apXXnnFuS6rY5k789ZTx0N36mQ1b7Pby/XzNqsa7s7Z7PRy47zNqoY789ZKHzebs1nVcWfeWunlZvM2o96SkpJyfJy1evzylqz6cLfPtHHeOs66K60Pbxxns9tLTo6zGT3/VuZrdnniNZ87NbI6zma3j7zy++UtVp6X7L4+8HQft2Le5qpb+IcG5GEXL14027dvN9u3bzeSnO87y+xu0Rn517/+ZUJDQ82aNWtMXFyc8+vy5ctu1xg1apT54YcfzKFDh8zOnTvNv//9b5MvXz6zcuXK7OyWU3Yu+x86dKhZs2aNOXjwoNm4caNp27atCQkJMYcPH3a7xubNm03+/PnNa6+9Zvbv328+/vhjExQUZBYuXGipl5SUFFO6dGkzYsQIS9td76mnnjK33Xab+frrr82hQ4fMkiVLTNGiRc3w4cMt1YmOjjbffvutOXjwoFm5cqWpVauWueuuu0xycnKG47OaW5MmTTKhoaFmyZIl5tdffzWPPfaYKVGihLlw4YKlOmfPnjXbt283y5cvN5LM4sWLzfbt201cXJxbNa5evWrat29vSpYsaXbs2OEyh5OSktyqcenSJTNq1CizYcMGc/jwYbNt2zbTu3dv4+/v73IHWXf2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Vq2ann/+eW3cuNE57ujRo+rQoYMKFCigggULqnPnzjp16lS65/l6gwcPVrNmzZzfN2vWTIMGDdLw4cOdz/P18zztd7pjx47prrJo3769li1b5vIHLwBA9hH+AQC3lI+PjyZMmKC3335bx48fz1GtVatW6cSJE/rhhx80Y8YMjR07Vm3btlVYWJg2bdqkZ555Rs8884yOHTvmst0LL7ygoUOHavv27WrUqJHat2+vs2fPSpLi4uLUtGlT1a5dW1u3blV0dLROnTqlzp07u9RYsGCB8ufPr59++klz5szJsL8333xT06dP17Rp07Rz5061bt1a7du31/79+52PVa1aNQ0dOlRxcXEaNmzYTfe3Z8+ezpAuSXPnzlWvXr3SjXvppZc0b948zZ49W7t27dKQIUP0xBNPaO3atZL+fg/47t279e2332rPnj2aPXu2ihYtKkl666239OWXX+q///2v9u7dq4ULF7oEsnz58umtt95SbGysFixYoFWrVmn48OHO9T/99JOeeeYZPffcc9qxY4datmyp1157zaW/FStW6IknntCgQYO0e/duzZkzR/Pnz3eO++yzz/T6669rzpw52r9/v5YtW6YaNWrc9Lm50erVq3XgwAGtXr1aCxYs0Pz58zV//nxLNTIyffp01atXT9u3b1f//v31r3/9S7/99pvLmBEjRmjQoEHas2ePWrdurffee08vvviiXnvtNe3Zs0cTJkzQ6NGjtWDBAuc2ISEhmj9/vnbv3q0333xT7733nl5//XXn+v/+978aM2aMXnvtNW3dulUlSpRI9weEG8XHxys2Nlb16tVzLjt37pyio6M1YMAABQcHp9sm7Y80xhg99NBDOnfunNauXauYmBgdOHBAXbp0sfycLViwQMHBwdq0aZOmTJmi8ePHKyYmRpKcV1XMmzcv3VUW9erV09WrV51XYwAAcsgAAHCLPPXUU6ZDhw7GGGMaNGhgevXqZYwxZunSpeb6/5LGjBljatWq5bLt66+/bqKiolxqRUVFmZSUFOeySpUqmXvuucf5/bVr10xwcLBZtGiRMcaYQ4cOGUn/X3v3H1NV/f8B/MlFAxryQzT5EUMvYvzmDrgigdxS6GqEbk0kRhOKaAgCEaGrBmZYcRXQzSEu2gSMuplFpQQTyBo/Rg6TErnRLAU2a7GktEzrct+fP9o9X44XFdCN7/D52Nju+33Oeb9f55z33eV93u9zjigtLZXW+ffff8WDDz4odDqdEEKIoqIi8dhjj8nqHh4eFgDEwMCAEEIIjUYjVCrVbffX3d1dvPHGG7I8tVotsrKypHRISIjYvn37LcsxH7eRkRFhY2Mjzp8/Ly5cuCBsbW3FyMiIWL9+vUhNTRVCCPHnn38KW1tb0dXVJSsjPT1dJCcnCyGESEhIEM8888yEdeXk5IhVq1YJk8l02/0TQojDhw8LFxcXKZ2UlCTi4+Nl66SkpAhHR0cpvXLlSvHmm2/K1jl06JBwc3MTQghRXl4uli1bJv75559JxXBjezG3DaPRKOUlJiaKpKSk25ZlbiOnT5+2WObl5SWefvppKW0ymcQDDzwgqqqqZNvu3btXtp2np6d47733ZHklJSUiMjLypnHs2rVLhIWFSenIyEiRmZkpWyciIsLiezLe6dOnBQAxNDQk5X399dcCgPj4449vup0QQhw/flxYW1vLtj179qwAIE6ePCmEkH+fzfLy8oRGo5HSGo1GREdHy9ZRq9Vi27ZtUhqAaGhomDAOZ2dnUVNTc8tYiYhocjjyT0REM0Kn06G2thb9/f3TLiMgIAAKxf/9lC1atEg2QmxtbQ0XFxf8+uuvsu0iIyOlz3PmzEF4eDgMBgMA4NSpUzhx4gTs7e2lP19fXwD/3Z9vNn40dSKXL1/GxYsXERUVJcuPioqS6pqqBQsWID4+HrW1tTh48CDi4+OlEXuz/v5+XLt2DXFxcbJ9qKurk+LfvHkz9Ho9VCoVtm7diq6uLmn7tLQ09Pb24qGHHkJubi6OHz8uK//EiROIi4uDh4cH5s2bh02bNuG3337DX3/9BQAYGBjA8uXLZdvcmDbf6jA+voyMDPz888+4evUqEhMT8ffff0OpVCIjIwMNDQ2yWwImIyAgANbW1lLazc3Noh1MR3BwsPTZysoKrq6uFuWObxsjIyMYHh5Genq6bH937twpa09HjhxBdHQ0XF1dYW9vj6KiIgwNDUnLDQaDrN0CsEjfyDxd3tbWVsoTQkix34rBYICnpyc8PT2lPH9/fzg5OU25/Y4/ZsDUzoWdnR2uXr06pfqIiGhic2Y6ACIiujfFxMRAq9XilVdesXhSvUKhkDopZhPdrz137lxZ2srKasI8k8l023jMnSGTyYSEhATodDqLddzc3KTPE02ZvlW5ZkKIO3qzwbPPPostW7YAACorKy2Wm/e1sbERHh4esmU2NjYAgLVr12JwcBCNjY1obW3F6tWrkZ2djbKyMoSGhuL8+fNoampCa2srNm7ciNjYWBw5cgSDg4N4/PHHkZmZiZKSEsyfPx8dHR1IT0+Xzs9E+3fjuTSZTNixYweefPJJi/htbW3h6emJgYEBtLS0oLW1FVlZWdi9eze++uori/N7M9NtB3ej3PFtw7ysuroaERERsvXMFye6u7vx1FNPYceOHdBqtXB0dIRer0d5efkdxWq+MDQ6Oio9t8DHxwdWVlYwGAwW9+uPd7N2Oj7/Tr6nkz0Xly5dkj1zgYiIpo+dfyIimjGlpaVQqVRYtmyZLH/hwoX45ZdfZB2N3t7eu1Zvd3c3YmJiAABGoxGnTp2SOtShoaH46KOPsHjxYsyZM/2fSQcHB7i7u6Ojo0OqCwC6urosRsKnYs2aNdLbBbRarcVyf39/2NjYYGhoCBqN5qblLFy4EGlpaUhLS8PKlStRWFiIsrIyKfakpCQkJSVhw4YNWLNmDS5duoSenh4YjUaUl5dLMy4OHz4sK9fX19fiHu2enh5ZOjQ0FAMDA1i6dOlN47Ozs8O6deuwbt06ZGdnw9fXF2fOnEFoaOgtjs7/P4sWLYKHhwd++uknpKSkTLhOZ2cnvLy88Oqrr0p5g4ODsnX8/PzQ3d2NTZs2SXnjH843EW9vbzg4OKC/v1/6js2fPx9arRaVlZXIzc21uIj1+++/w8nJCf7+/hgaGsLw8LA0+t/f348//vgDfn5+AP5rQ319fbLte3t7J32Bxmzu3LkYGxuzyP/xxx9x7do1iwdaEhHR9LDzT0REMyYoKAgpKSkWr/N65JFHMDIygl27dmHDhg1obm5GU1MTHBwc7kq9lZWV8PHxgZ+fH/bs2YPR0VHpwXnZ2dmorq5GcnIyCgsLsWDBApw7dw56vR7V1dWyqeS3U1hYiO3bt8Pb2xsqlQoHDx5Eb28v6uvrpx27tbW1NO16oljmzZuHl156Cfn5+TCZTIiOjsbly5fR1dUFe3t7pKamori4GGFhYQgICMD169dx7NgxqUO3Z88euLm5QaVSQaFQ4MMPP4SrqyucnJzg7e0No9GIffv2ISEhAZ2dnThw4ICs/pycHMTExKCiogIJCQn44osv0NTUJBtFLi4uxhNPPAFPT08kJiZCoVDgu+++w5kzZ7Bz507U1NRgbGwMERERuP/++3Ho0CHY2dnBy8tr2sdtJr322mvIzc2Fg4MD1q5di+vXr6Onpwejo6N48cUXsXTpUgwNDUGv10OtVqOxsRENDQ2yMvLy8pCamorw8HBER0ejvr4eZ8+ehVKpvGm9CoUCsbGx6OjokI3y79+/Hw8//DCWL1+O119/HcHBwTAajWhpaUFVVRUMBgNiY2MRHByMlJQU7N27F0ajEVlZWdBoNNJtDatWrcLu3btRV1eHyMhIvPvuu+jr65tyZ33x4sVoa2tDVFQUbGxs4OzsDABob2+HUqmEt7f3lMojIqKJ8Z5/IiKaUSUlJRZTh/38/LB//35UVlYiJCQEJ0+evO2T8KeitLQUOp0OISEhaG9vx6effipNkXZ3d0dnZyfGxsag1WoRGBiIvLw8ODo6yp4vMBm5ubkoKChAQUEBgoKC0NzcjM8++ww+Pj53FL+Dg8MtL4SUlJSguLgYb731Fvz8/KDVanH06FEsWbIEAHDffffh5ZdfRnBwMGJiYmBtbQ29Xg8AsLe3h06nQ3h4ONRqNS5cuIDPP/8cCoUCKpUKFRUV0Ol0CAwMRH19vcUrG6OionDgwAFUVFQgJCQEzc3NyM/Pl913rtVqcezYMbS0tECtVmPFihWoqKiQOvdOTk6orq5GVFQUgoOD0dbWhqNHj8LFxeWOjttMee655/DOO++gpqYGQUFB0Gg0qKmpkc7H+vXrkZ+fjy1btkClUqGrqwtFRUWyMpKSklBcXIxt27YhLCwMg4OD2Lx5823rfv7556HX62XT7JcsWYJvvvkGjz76KAoKChAYGIi4uDi0tbWhqqoKwH9T8z/55BM4OzsjJiYGsbGxUCqV+OCDD6RytFotioqKsHXrVqjValy5ckU2M2GyysvL0dLSYvHayvfffx8ZGRlTLo+IiCZmJW78j4uIiIjoLsrIyMD333+P9vb2mQ7lniOEwIoVK/DCCy8gOTl5psOZtL6+PqxevRo//PADHB0dZzocIqJZgSP/REREdFeVlZXh22+/xblz57Bv3z7U1tYiNTV1psO6J1lZWeHtt9+e8tsSZtrFixdRV1fHjj8R0V3EkX8iIiK6qzZu3Igvv/wSV65cgVKpRE5ODjIzM2c6LCIionsaO/9EREREREREsxyn/RMRERERERHNcuz8ExEREREREc1y7PwTERERERERzXLs/BMRERERERHNcuz8ExEREREREc1y7PwTERERERERzXLs/BMRERERERHNcuz8ExEREREREc1y/wNYb64D3/OmdAAAAABJRU5ErkJggg==",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the number of threads is 182698\n",
+ "the number of messages is 375933\n",
+ " the average number of messages per thread is 2.0576744135130105\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Get the count of each Thread ID\n",
+ "# Filter out rows where patient message and actual response are not present\n",
+ "threads_to_keep = data_sample_sub_cols[data_sample_sub_cols[\"Actual Response Sent to Patient\"].notna()][\"Thread ID\"].unique()\n",
+ "answer_question_paired_data_dedup = remove_duplicate_messages(threads_to_keep = threads_to_keep).dropna(subset=[\"Patient Message\"]) # the main df for embedding\n",
+ "answer_question_paired_data_dedup[\"Patient Message\"] = answer_question_paired_data_dedup[\"Patient Message\"].str.replace(\"<13><10>\", \"\")\n",
+ "answer_question_paired_data_dedup[\"Actual Response Sent to Patient\"] = answer_question_paired_data_dedup[\"Actual Response Sent to Patient\"].str.replace(\"<13><10>\", \"\")\n",
+ "thread_counts_with_response = answer_question_paired_data_dedup['Thread ID'].value_counts()\n",
+ "\n",
+ "# Now, get the frequency of each count (i.e., how many threads have count=1, count=2, etc.)\n",
+ "count_frequency_with_response = thread_counts_with_response.value_counts().sort_index()\n",
+ "\n",
+ "# Plot\n",
+ "plt.figure(figsize=(12,10))\n",
+ "plt.bar(count_frequency_with_response.index, count_frequency_with_response.values)\n",
+ "plt.xlabel('Number of Messages in Thread (Count)')\n",
+ "plt.ylabel('Number of Threads (Frequency)')\n",
+ "plt.title('Distribution of Thread Message Counts')\n",
+ "plt.xticks(count_frequency_with_response.index) # Show all counts on x-axis if not too many\n",
+ "plt.show()\n",
+ "print(f\"the number of threads is {len(thread_counts_with_response)}\")\n",
+ "print(f\"the number of messages is {thread_counts_with_response.sum()}\")\n",
+ "print(f\" the average number of messages per thread is {thread_counts_with_response.mean()}\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# save the df to local to avoid re-run the code\n",
+ "# answer_question_paired_data_dedup.to_excel(\"../data/answer_question_paired_data_dedup.xlsx\", index=True)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 101,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# def beautiful_print_thread(thread_id = None, df = answer_question_paired_data_dedup):\n",
+ "# if thread_id is None:\n",
+ "# thread_id =np.random.choice(df[\"Thread ID\"].unique())\n",
+ "# # sort by index is important to make sure the message is in the correct order\n",
+ "# thread_df = df[df[\"Thread ID\"] == thread_id].sort_index(ascending=False)\n",
+ "# print(f\"Thread ID: {thread_id}\")\n",
+ "# print(\"-\" * 80)\n",
+ "# for idx, row in thread_df.iterrows():\n",
+ "# print(f\"idx: {idx}\")\n",
+ "# print(f\"Subject: {row['Subject']}\")\n",
+ "# print(\"-\" * 40)\n",
+ "# print(f\"Date Sent: {row['Date Sent']}\")\n",
+ "# print(\"-\" * 40)\n",
+ "# print(\"Sender Message:\")\n",
+ "# print(row[\"Patient Message\"].replace(\"<13><10>\", \"\\n\"))\n",
+ "# print(\"-\" * 40)\n",
+ "# print(f\"Provider Response by {row[\"Recipient Names\"]}:\")\n",
+ "# try:\n",
+ "# print(row[\"Actual Response Sent to Patient\"].replace(\"<13><10>\", \"\\n\"))\n",
+ "# except:\n",
+ "# print(\"No response\")\n",
+ "# print(\"-\" * 40) # Separator for readability\n",
+ "def beautiful_print_thread(thread_id = None, df = answer_question_paired_data_dedup):\n",
+ " if thread_id is None:\n",
+ " thread_id = np.random.choice(df[\"Thread ID\"].unique())\n",
+ " # sort by index is important to make sure the message is in the correct order\n",
+ " thread_df = df[df[\"Thread ID\"] == thread_id].sort_index(ascending=False)\n",
+ " \n",
+ " # Build the output string instead of printing\n",
+ " output = []\n",
+ " output.append(f\"Thread ID: {thread_id}\")\n",
+ " output.append(\"-\" * 80)\n",
+ " for idx, row in thread_df.iterrows():\n",
+ " output.append(f\"idx: {idx}\")\n",
+ " output.append(f\"Subject: {row['Subject']}\")\n",
+ " output.append(\"-\" * 40)\n",
+ " output.append(f\"Date Sent: {row['Date Sent']}\")\n",
+ " output.append(\"-\" * 40)\n",
+ " output.append(\"Sender Message:\")\n",
+ " output.append(row[\"Patient Message\"].replace(\"<13><10>\", \"\\n\"))\n",
+ " output.append(\"-\" * 40)\n",
+ " output.append(f\"Provider Response by {row['Recipient Names']}:\")\n",
+ " try:\n",
+ " output.append(row[\"Actual Response Sent to Patient\"].replace(\"<13><10>\", \"\\n\"))\n",
+ " except:\n",
+ " output.append(\"No response\")\n",
+ " output.append(\"-\" * 40) # Separator for readability\n",
+ " \n",
+ " # Join all lines with newlines and return\n",
+ " return \"\\n\".join(output)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### embedding starts"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 83,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def create_embeddings():\n",
+ " embeddings = HuggingFaceEmbeddings(\n",
+ " model_name=\"sentence-transformers/all-mpnet-base-v2\"\n",
+ " )\n",
+ " return embeddings\n",
+ "embeddings_model = create_embeddings()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 122,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# # Create embeddings for all texts\n",
+ "# texts = answer_question_paired_data_dedup[\"Patient Message\"].str.replace(\"<13><10>\", \"\").tolist()\n",
+ "# embeddings = embeddings_model.embed_documents(texts)\n",
+ "# # Save embeddings\n",
+ "# np.save(\"../data/embeddings.npy\", np.array(embeddings))\n",
+ "# answer_question_paired_data_dedup[\"embeddings\"] = embeddings\n",
+ "# # Make sure the embeddings column is a list of float64 per row\n",
+ "# answer_question_paired_data_dedup[\"embeddings\"] = answer_question_paired_data_dedup[\"embeddings\"].apply(lambda x: [float(val) for val in x])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "answer_question_paired_data_dedup = pd.read_excel(\"../data/answer_question_paired_data_dedup.xlsx\")\n",
+ "embeddings = np.load(\"../data/embeddings.npy\")\n",
+ "answer_question_paired_data_dedup[\"embeddings\"] = [emb for emb in embeddings]\n",
+ "# # Make sure the embeddings column is a list of float64 per row\n",
+ "answer_question_paired_data_dedup[\"embeddings\"] = answer_question_paired_data_dedup[\"embeddings\"].apply(lambda x: [float(val) for val in x])\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "✅ Uploaded batch 1 of 38\n",
+ "✅ Uploaded batch 2 of 38\n",
+ "✅ Uploaded batch 3 of 38\n",
+ "✅ Uploaded batch 4 of 38\n",
+ "✅ Uploaded batch 5 of 38\n",
+ "✅ Uploaded batch 6 of 38\n",
+ "✅ Uploaded batch 7 of 38\n",
+ "✅ Uploaded batch 8 of 38\n",
+ "✅ Uploaded batch 9 of 38\n",
+ "✅ Uploaded batch 10 of 38\n",
+ "✅ Uploaded batch 11 of 38\n",
+ "✅ Uploaded batch 12 of 38\n",
+ "✅ Uploaded batch 13 of 38\n",
+ "✅ Uploaded batch 14 of 38\n",
+ "✅ Uploaded batch 15 of 38\n",
+ "✅ Uploaded batch 16 of 38\n",
+ "✅ Uploaded batch 17 of 38\n",
+ "✅ Uploaded batch 18 of 38\n",
+ "✅ Uploaded batch 19 of 38\n",
+ "✅ Uploaded batch 20 of 38\n",
+ "✅ Uploaded batch 21 of 38\n",
+ "✅ Uploaded batch 22 of 38\n",
+ "✅ Uploaded batch 23 of 38\n",
+ "✅ Uploaded batch 24 of 38\n",
+ "✅ Uploaded batch 25 of 38\n",
+ "✅ Uploaded batch 26 of 38\n",
+ "✅ Uploaded batch 27 of 38\n",
+ "✅ Uploaded batch 28 of 38\n",
+ "✅ Uploaded batch 29 of 38\n",
+ "✅ Uploaded batch 30 of 38\n",
+ "✅ Uploaded batch 31 of 38\n",
+ "✅ Uploaded batch 32 of 38\n",
+ "✅ Uploaded batch 33 of 38\n",
+ "✅ Uploaded batch 34 of 38\n",
+ "✅ Uploaded batch 35 of 38\n",
+ "✅ Uploaded batch 36 of 38\n",
+ "✅ Uploaded batch 37 of 38\n",
+ "✅ Uploaded batch 38 of 38\n",
+ "✅ All batches uploaded successfully.\n"
+ ]
+ }
+ ],
+ "source": [
+ "# # dataset_id = \"rag_embedding_R01\"\n",
+ "# # dataset_ref = client.dataset(dataset_id)\n",
+ "\n",
+ "# # # Create the dataset\n",
+ "# # dataset = bigquery.Dataset(dataset_ref)\n",
+ "# # dataset.location = \"US\" \n",
+ "\n",
+ "# # client.create_dataset(dataset, exists_ok=True)\n",
+ "# # print(f\"✅ Created dataset: {dataset_id}\")\n",
+ "\n",
+ "# # upload the embedding with meta data to gcp big query\n",
+ "# table_id = \"som-nero-phi-jonc101.rag_embedding_R01.messages_with_embeddings_updated\"\n",
+ "\n",
+ "# schema = [\n",
+ "# bigquery.SchemaField(\"index\", \"INT64\"),\n",
+ "# bigquery.SchemaField(\"Thread ID\", \"INT64\"),\n",
+ "# bigquery.SchemaField(\"Date Sent\", \"TIMESTAMP\"),\n",
+ "# bigquery.SchemaField(\"Subject\", \"STRING\"),\n",
+ "# bigquery.SchemaField(\"Patient Message\", \"STRING\"),\n",
+ "# bigquery.SchemaField(\"Message Sender\", \"STRING\"),\n",
+ "# bigquery.SchemaField(\"Actual Response Sent to Patient\", \"STRING\"),\n",
+ "# bigquery.SchemaField(\"Recipient Names\", \"STRING\"),\n",
+ "# bigquery.SchemaField(\"Recipient IDs\", \"STRING\"),\n",
+ "# bigquery.SchemaField(\"Message Department\", \"STRING\"),\n",
+ "# bigquery.SchemaField(\"Department Specialty Title\", \"STRING\"),\n",
+ "# bigquery.SchemaField(\"Prompt Sent to LLM\", \"STRING\"),\n",
+ "# bigquery.SchemaField(\"Suggested Response from LLM\", \"STRING\"),\n",
+ "# bigquery.SchemaField(\"QuickAction Executed\", \"INT64\"),\n",
+ "\n",
+ "# bigquery.SchemaField(\"embeddings\", \"FLOAT64\", mode=\"REPEATED\")\n",
+ " \n",
+ "# ]\n",
+ "\n",
+ "# job_config = bigquery.LoadJobConfig(\n",
+ "# schema=schema,\n",
+ "# write_disposition=\"WRITE_TRUNCATE\",\n",
+ "# clustering_fields=[\"Recipient Names\", \"Message Department\", \"Department Specialty Title\"]\n",
+ "# )\n",
+ "\n",
+ "# job = client.load_table_from_dataframe(answer_question_paired_data_dedup, table_id, job_config=job_config)\n",
+ "# job.result()\n",
+ "\n",
+ "# print(\"✅ Upload complete with clustering.\")\n",
+ "\n",
+ "# upload the embedding with meta data to gcp big query\n",
+ "table_id = \"som-nero-phi-jonc101.rag_embedding_R01.messages_with_embeddings_updated\"\n",
+ "\n",
+ "schema = [\n",
+ " bigquery.SchemaField(\"index\", \"INT64\"),\n",
+ " bigquery.SchemaField(\"Thread ID\", \"INT64\"),\n",
+ " bigquery.SchemaField(\"Date Sent\", \"TIMESTAMP\"),\n",
+ " bigquery.SchemaField(\"Subject\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"Patient Message\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"Message Sender\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"Actual Response Sent to Patient\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"Recipient Names\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"Recipient IDs\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"Message Department\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"Department Specialty Title\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"Prompt Sent to LLM\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"Suggested Response from LLM\", \"STRING\"),\n",
+ " bigquery.SchemaField(\"QuickAction Executed\", \"INT64\"),\n",
+ " bigquery.SchemaField(\"embeddings\", \"FLOAT64\", mode=\"REPEATED\")\n",
+ "]\n",
+ "\n",
+ "# Define batch size\n",
+ "BATCH_SIZE = 10000 # Adjust this number based on your memory constraints\n",
+ "\n",
+ "# Process in batches\n",
+ "for i in range(0, len(answer_question_paired_data_dedup), BATCH_SIZE):\n",
+ " batch_df = answer_question_paired_data_dedup.iloc[i:i+BATCH_SIZE]\n",
+ " \n",
+ " job_config = bigquery.LoadJobConfig(\n",
+ " schema=schema,\n",
+ " write_disposition=\"WRITE_APPEND\" if i > 0 else \"WRITE_TRUNCATE\", # Append after first batch\n",
+ " clustering_fields=[\"Recipient Names\", \"Message Department\", \"Department Specialty Title\"]\n",
+ " )\n",
+ " \n",
+ " job = client.load_table_from_dataframe(batch_df, table_id, job_config=job_config)\n",
+ " job.result()\n",
+ " print(f\"✅ Uploaded batch {i//BATCH_SIZE + 1} of {(len(answer_question_paired_data_dedup) + BATCH_SIZE - 1)//BATCH_SIZE}\")\n",
+ "\n",
+ "print(\"✅ All batches uploaded successfully.\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# test query"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Department Specialty Title\n",
+ "Primary Care 0.320513\n",
+ "Oncology 0.250174\n",
+ "Family Medicine 0.143820\n",
+ "Internal Medicine 0.124550\n",
+ "Gastroenterology 0.085094\n",
+ "Hematology 0.041538\n",
+ "Radiation Oncology 0.014007\n",
+ "Geriatric Medicine 0.010721\n",
+ "Sports Medicine 0.004801\n",
+ "Express Care 0.003097\n",
+ "Coordinated Care 0.001685\n",
+ "Name: count, dtype: float64"
+ ]
+ },
+ "execution_count": 38,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Calculate the total count for each specialty\n",
+ "# # keep only threads with prompt and response\n",
+ "data_sample_sub_cols_has_prompt = answer_question_paired_data_dedup[answer_question_paired_data_dedup[\"Prompt Sent to LLM\"].notnull()]\n",
+ "data_sample_sub_cols_has_prompt_and_response = data_sample_sub_cols_has_prompt[data_sample_sub_cols_has_prompt[\"Actual Response Sent to Patient\"].notnull()]\n",
+ "specialty_counts = data_sample_sub_cols_has_prompt_and_response.groupby('Thread ID').first()['Department Specialty Title'].value_counts()\n",
+ "total_count = specialty_counts.sum()\n",
+ "\n",
+ "# Calculate sampling ratios\n",
+ "sampling_ratios = specialty_counts / total_count\n",
+ "sampling_ratios"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 202,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/var/folders/r3/mc640yrn2_70d_7zvw5cc3q00000gn/T/ipykernel_61969/2877177806.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
+ " df_to_sample_has_prompt_and_response = df_to_sample_has_response[df_to_sample[\"Prompt Sent to LLM\"].notnull()]\n"
+ ]
+ }
+ ],
+ "source": [
+ "interested_specialties = [\"Primary Care\", \"Internal Medicine\", \"Family Medicine\"]\n",
+ "\n",
+ "df_to_sample = answer_question_paired_data_dedup[answer_question_paired_data_dedup[\"Department Specialty Title\"].isin(interested_specialties)]\n",
+ "df_to_sample_has_response = df_to_sample[df_to_sample[\"Actual Response Sent to Patient\"].notnull()]\n",
+ "df_to_sample_has_prompt_and_response = df_to_sample_has_response[df_to_sample[\"Prompt Sent to LLM\"].notnull()]\n",
+ "df_to_sample_first_message = df_to_sample_has_prompt_and_response.groupby(\"Thread ID\").first().reset_index()\n",
+ "sampled_df= df_to_sample_first_message.sample(n=100, random_state=42) # Sample 100 rows with a fixed random state for reproducibility"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "similarity_df[\"mean_score\"].plot(kind='hist', legend=False)\n",
+ "plt.title(\"Histogram of Mean Similarity Scores\")\n",
+ "plt.xlabel(\"Mean Similarity Score\")\n",
+ "plt.ylabel(\"Frequency\")\n",
+ "plt.show()\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## ------------- strictest filter ---------\n",
+ "### all receiver, department and specialty exact match"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from google.cloud import bigquery\n",
+ "\n",
+ "# Set up logging\n",
+ "logger = setup_logging()\n",
+ "\n",
+ "# query_message = message_content.replace(\"\\n\", \"\")\n",
+ "query_message = sampled_df.iloc[i][\"Patient Message\"]\n",
+ "query_vector_literal = query_embedding_func(query_message, embeddings_model)\n",
+ "\n",
+ "# Filter criteria \n",
+ "receiver = sampled_df.iloc[0][\"Recipient Names\"]\n",
+ "department = sampled_df.iloc[0][\"Message Department\"]\n",
+ "specialty = sampled_df.iloc[0]['Department Specialty Title']\n",
+ "\n",
+ "query = f\"\"\"\n",
+ "WITH input_embedding AS (\n",
+ " SELECT {query_vector_literal} AS input_vec\n",
+ ")\n",
+ "\n",
+ "SELECT\n",
+ " t.`Thread ID`,\n",
+ " t.`Patient Message`,\n",
+ " t.`Message Sender`,\n",
+ " t.`Message Department`,\n",
+ " t.`Department Specialty Title`,\n",
+ " t.`Actual Response Sent to Patient`,\n",
+ " (\n",
+ " SELECT SUM(x * y)\n",
+ " FROM UNNEST(t.embeddings) AS x WITH OFFSET i\n",
+ " JOIN UNNEST(input_vec) AS y WITH OFFSET j\n",
+ " ON i = j\n",
+ " ) /\n",
+ " (\n",
+ " SQRT((SELECT SUM(POW(x, 2)) FROM UNNEST(t.embeddings) AS x)) *\n",
+ " SQRT((SELECT SUM(POW(y, 2)) FROM UNNEST(input_vec) AS y))\n",
+ " ) AS cosine_similarity\n",
+ "FROM `som-nero-phi-jonc101.rag_embedding_R01.messages_with_embeddings_pcp_only` AS t,\n",
+ " input_embedding\n",
+ "WHERE\n",
+ " t.`Recipient Names` = @receiver\n",
+ " AND t.`Message Department` = @department\n",
+ " AND t.`Department Specialty Title` = @specialty\n",
+ "ORDER BY cosine_similarity DESC\n",
+ "LIMIT 5\n",
+ "\"\"\"\n",
+ "\n",
+ "job = client.query(\n",
+ " query,\n",
+ " job_config=bigquery.QueryJobConfig(\n",
+ " query_parameters=[\n",
+ " bigquery.ScalarQueryParameter(\"receiver\", \"STRING\", receiver),\n",
+ " bigquery.ScalarQueryParameter(\"department\", \"STRING\", department),\n",
+ " bigquery.ScalarQueryParameter(\"specialty\", \"STRING\", specialty)\n",
+ " ]\n",
+ " )\n",
+ ")\n",
+ "\n",
+ "# Log query parameters\n",
+ "log_query_parameters(logger, query_message, receiver, department, specialty)\n",
+ "\n",
+ "# Try to get results\n",
+ "try:\n",
+ " results = list(job.result())\n",
+ " log_results(logger, results, beautiful_print_thread, answer_question_paired_data_dedup)\n",
+ "except Exception as e:\n",
+ " log_error(logger, str(e))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## -----------Tiered Retrieval-----------"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from google.cloud import bigquery\n",
+ "\n",
+ "def run_query_bq(filter_field, filter_value, query_vector_literal, client, N, similarity_cutoff=0.7, exclude_threads=None):\n",
+ " exclude_clause = \"\"\n",
+ " params = [\n",
+ " bigquery.ScalarQueryParameter(\"filter_value\", \"STRING\", filter_value),\n",
+ " bigquery.ScalarQueryParameter(\"similarity_cutoff\", \"FLOAT64\", similarity_cutoff),\n",
+ " bigquery.ScalarQueryParameter(\"N\", \"INT64\", N)\n",
+ " ]\n",
+ " if exclude_threads and len(exclude_threads) > 0:\n",
+ " # FIX: Cast to int and use INT64 type\n",
+ " exclude_threads = [int(x) for x in exclude_threads]\n",
+ " exclude_clause = \"AND t.`Thread ID` NOT IN UNNEST(@exclude_threads)\"\n",
+ " params.append(bigquery.ArrayQueryParameter(\"exclude_threads\", \"INT64\", exclude_threads))\n",
+ " \n",
+ " base_query = f\"\"\"\n",
+ " WITH input_embedding AS (\n",
+ " SELECT {query_vector_literal} AS input_vec\n",
+ " ),\n",
+ " scored_messages AS (\n",
+ " SELECT\n",
+ " t.`Thread ID`,\n",
+ " t.`Patient Message`,\n",
+ " t.`Message Sender`,\n",
+ " t.`Message Department`,\n",
+ " t.`Department Specialty Title`,\n",
+ " t.`Actual Response Sent to Patient`,\n",
+ " (\n",
+ " SELECT SUM(x * y)\n",
+ " FROM UNNEST(t.embeddings) AS x WITH OFFSET i\n",
+ " JOIN UNNEST(input_vec) AS y WITH OFFSET j\n",
+ " ON i = j\n",
+ " ) /\n",
+ " (\n",
+ " SQRT((SELECT SUM(POW(x, 2)) FROM UNNEST(t.embeddings) AS x)) *\n",
+ " SQRT((SELECT SUM(POW(y, 2)) FROM UNNEST(input_vec) AS y))\n",
+ " ) AS cosine_similarity\n",
+ " FROM `som-nero-phi-jonc101.rag_embedding_R01.messages_with_embeddings_pcp_only` AS t, input_embedding\n",
+ " WHERE t.`{filter_field}` = @filter_value\n",
+ " {exclude_clause}\n",
+ " )\n",
+ " SELECT *\n",
+ " FROM scored_messages\n",
+ " WHERE cosine_similarity >= @similarity_cutoff\n",
+ " ORDER BY cosine_similarity DESC\n",
+ " LIMIT @N\n",
+ " \"\"\"\n",
+ "\n",
+ " job = client.query(\n",
+ " base_query,\n",
+ " job_config=bigquery.QueryJobConfig(query_parameters=params)\n",
+ " )\n",
+ " return list(job.result())\n",
+ "\n",
+ "\n",
+ "def run_tiered_retrieval(query_vector_literal, receiver, department, specialty, client, target_N=5, similarity_cutoff=0.7):\n",
+ " all_results = []\n",
+ "\n",
+ " # 1. Sender Level\n",
+ " results = run_query_bq(\n",
+ " filter_field=\"Recipient Names\", filter_value=receiver,\n",
+ " query_vector_literal=query_vector_literal,\n",
+ " client=client,\n",
+ " N=target_N,\n",
+ " similarity_cutoff=similarity_cutoff\n",
+ " )\n",
+ " all_results.extend([{**dict(r), \"retrieval_tier\": \"sender\"} for r in results])\n",
+ "\n",
+ " # 2. Department Level\n",
+ " if len(all_results) < target_N:\n",
+ " exclude_threads = [int(r[\"Thread ID\"]) for r in all_results]\n",
+ " results = run_query_bq(\n",
+ " filter_field=\"Message Department\", filter_value=department,\n",
+ " query_vector_literal=query_vector_literal,\n",
+ " client=client,\n",
+ " N=target_N - len(all_results),\n",
+ " similarity_cutoff=similarity_cutoff,\n",
+ " exclude_threads=exclude_threads\n",
+ " )\n",
+ " all_results.extend([{**dict(r), \"retrieval_tier\": \"department\"} for r in results])\n",
+ "\n",
+ " # 3. Specialty Level\n",
+ " if len(all_results) < target_N:\n",
+ " exclude_threads = [int(r[\"Thread ID\"]) for r in all_results]\n",
+ " results = run_query_bq(\n",
+ " filter_field=\"Department Specialty Title\", filter_value=specialty,\n",
+ " query_vector_literal=query_vector_literal,\n",
+ " client=client,\n",
+ " N=target_N - len(all_results),\n",
+ " similarity_cutoff=similarity_cutoff,\n",
+ " exclude_threads=exclude_threads\n",
+ " )\n",
+ " all_results.extend([{**dict(r), \"retrieval_tier\": \"specialty\"} for r in results])\n",
+ "\n",
+ " return all_results[:target_N]\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Query Parameters:\n",
+ "query_message: Hi Dr. Martin,I wanted to touch base regarding my most recent blood work from earlier this month. I’ve been feeling extra fatigued and short of breath lately, and I’m a bit worried it might be related to my ongoing iron issues. Would you be able to let me know if my latest results suggest it’s time to schedule another iron infusion? Also, since I usually need an ultrasound-guided IV, should I go ahead and book that appointment too?Thanks so much for your help!Best, Melissa\n",
+ "receiver: MARTIN, BETH\n",
+ "department: HEMATOLOGY\n",
+ "specialty: Hematology\n",
+ "\n",
+ "Number of results: 10\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8124\n",
+ "➡️ Message by Sender APOSTOL, JENNY [ S0333370]: Hi Dr. Martin,I hope you're well! Did you have an opportunity to review the labs my mom completed on 11/14/24? If so, do you think she's due for an Iron Infusion appointment (and, USGPIV appt preceding Iron Infusion)?Thanks!Barbara\n",
+ "➡️ Provider's response to this specific message is: Barbara, No iron needed--the anemia is mild and is due to inflammation, not iron deficiency. I had contacted Dr Haddock about this months ago when this pattern developed--cause is not clear. I hope that her health is otherwise stable, that you're all doing well despite the world's turmoil. Beth \n",
+ "➡️ This result is from tier: sender\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 252160980\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 161352\n",
+ "Subject: Scheduling Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-04 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr. Martin,\n",
+ "I hope you're well! \n",
+ "\n",
+ "Did you have an opportunity to review the labs my mom completed on 11/14/24? If so, do you think she's due for an Iron Infusion appointment (and, USGPIV appt preceding Iron Infusion)?\n",
+ "\n",
+ "Thanks!\n",
+ "Barbara\n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Barbara, \n",
+ "\n",
+ "No iron needed--the anemia is mild and is due to inflammation, not iron deficiency. I had contacted Dr Haddock about this months ago when this pattern developed--cause is not clear. \n",
+ "\n",
+ "I hope that her health is otherwise stable, that you're all doing well despite the world's turmoil. \n",
+ "\n",
+ "Beth \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8013\n",
+ "➡️ Message by Sender APOSTOL, JENNY [ S0333370]: Hello Dr. Martin,I am following up on our visit on 8/30/2024 where you advised that I receive IV iron to compensate for ongoing bleeding and to assist with heart failure. At that time you stated that you would discuss further with DR. Galatin to coordinate iron infusions at CCSB. To that end, I have never received any contact for the above mentioned iron infusions. Please see the attached progress/clinical notes from our 8/30 visit, page 7 in particular.Some how my iron infusions have \"slipped through the cracks\". I look forward to your response and thank you in advance.Regards,Thomas Obata\n",
+ "➡️ Provider's response to this specific message is: Mr Obata, I 'm recommending a change in plan as I see that you have an upcoming liver transplant appt at the end of the month and that you're due to have a fibrinogen level and ATIII level checked. I'm still checking in with Dr Galatin for who will take the lead, but if you are getting transplanted here , then you should have a Stanford based hematologist for potential coagulation issues --and possibly iv iron if needed. If you are being considered at UCSF, then I recommend that you see Dr Cornett as well --or , if you would like an independent opinion from mine, I'm happy to refer you. I see that you prefer Quest labs: I've placed orders there as well. Would you be able to go there or to a Stanford lab any time within a week or earlier of that appt, at least by 1/23? Non fasting. Sincerely, Beth A. Martin, MD with Jenny Apostol, RN Attending Physician Division of Hematology Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "➡️ This result is from tier: sender\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 255287111\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 21428\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-14 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Dr. Martin,\n",
+ "\n",
+ "Thank you, I look forward to your pre-op plan. Please understand that I could be getting the call for a liver match any day, therefore time is of the essence. Thank you in advance for your understanding.\n",
+ "\n",
+ "Best regards,\n",
+ "\n",
+ "Thomas\n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 21427\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-14 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Dr. Martin,\n",
+ "I am listed as top priority and in the number one position on the Stanford liver transplant list. The AVMs in my liver are compromising my heart, hence the top priority position.\n",
+ "I just visited Question Diagnostics and completed my blood panel.\n",
+ "Thank you,\n",
+ "Thomas Obata \n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Got it\n",
+ "\n",
+ "I will develop a coag pre op\n",
+ "Plan for you \n",
+ "\n",
+ "Beth \n",
+ "----------------------------------------\n",
+ "idx: 21426\n",
+ "Subject: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-09 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Dr. Martin,\n",
+ "\n",
+ "I am following up on our visit on 8/30/2024 where you advised that I receive IV iron to compensate for ongoing bleeding and to assist with heart failure. At that time you stated that you would discuss further with DR. Galatin to coordinate iron infusions at CCSB. To that end, I have never received any contact for the above mentioned iron infusions. \n",
+ "Please see the attached progress/clinical notes from our 8/30 visit, page 7 in particular.\n",
+ "\n",
+ "Some how my iron infusions have \"slipped through the cracks\". I look forward to your response and thank you in advance.\n",
+ "\n",
+ "Regards,\n",
+ "Thomas Obata\n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Mr Obata, \n",
+ "\n",
+ "I 'm recommending a change in plan as I see that you have an upcoming liver transplant appt at the end of the month and that you're due to have a fibrinogen level and ATIII level checked. \n",
+ "\n",
+ "I'm still checking in with Dr Galatin for who will take the lead, but if you are getting transplanted here , then you should have a Stanford based hematologist for potential coagulation issues --and possibly iv iron if needed. \n",
+ "\n",
+ "If you are being considered at UCSF, then I recommend that you see Dr Cornett as well --or , if you would like an independent opinion from mine, I'm happy to refer you. \n",
+ "\n",
+ "I see that you prefer Quest labs: I've placed orders there as well. Would you be able to go there or to a Stanford lab any time within a week or earlier of that appt, at least by 1/23? Non fasting. \n",
+ "\n",
+ "Sincerely, \n",
+ "\n",
+ "Beth A. Martin, MD with Jenny Apostol, RN \n",
+ "Attending Physician \n",
+ "Division of Hematology \n",
+ "\n",
+ "Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.7430\n",
+ "➡️ Message by Sender MONTEZ, ANDREA [ S0285483]: Please move the visit to another time -- I'm not sure I will be able to make the 22d at 4:30. It is my last day of work and I do not know when I will be leaving. I am scheduled for my first iron infusion on November 25th -- do I need to see Dr. Martin before I have my first iron infusion?Pat Greene\n",
+ "➡️ Provider's response to this specific message is: Ms Greene, Thanks for letting us know. . I'll ask the schedulers to change the appointment to 9:30 on Monday. I can easily see you in the infusion center. Do let me/us know if any questions before the infusion. Sincerely, Beth A. Martin, MD with Jenny Apostol, RN Attending Physician Division of Hematology Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "➡️ This result is from tier: sender\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 250924952\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 224536\n",
+ "Subject: RE:follow up\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-11-19 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Please move the visit to another time -- I'm not sure I will be able to make the 22d at 4:30. It is my last day of work and I do not know when I will be leaving. I am scheduled for my first iron infusion on November 25th -- do I need to see Dr. Martin before I have my first iron infusion?\n",
+ "\n",
+ "Pat Greene\n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Ms Greene, \n",
+ "\n",
+ "Thanks for letting us know. . \n",
+ "\n",
+ "I'll ask the schedulers to change the appointment to 9:30 on Monday. I can easily see you in the infusion center. Do let me/us know if any questions before the infusion. \n",
+ "\n",
+ "Sincerely, \n",
+ "\n",
+ "Beth A. Martin, MD with Jenny Apostol, RN \n",
+ "Attending Physician \n",
+ "Division of Hematology \n",
+ "\n",
+ "Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8480\n",
+ "➡️ Message by Sender GOMEZ, ELIZABETH [ S0190535]: Hello Dr Martin Hope all is well, I wanted to reach out to you in regards of my iron deficiency. I know I’m scheduled to see you in March but I’m starting to get the same symptoms as before. I was wondering if we could do some labs to check my iron levels. Thank you for your time Laura Gonzalez \n",
+ "➡️ Provider's response to this specific message is: Hello Laura,What symptoms are you having? You have standing lab orders in place and can go to any of our Stanford lab locations. Please let us know if you have any questions or concerns.Thank you.Jenny, RNBlake Wilbur Lab900 Blake Wilbur Drive1st Floor, Room W1083Palo Alto, CA 94304Hours: Mon-Fri 7:00am - 5:30pm Cancer Center Lab875 Blake Wilbur DriveRoom CC-1104Palo Alto, CA 94304Hours: Mon-Fri 7:00am - 5:30pm Hoover Lab211 Quarry RoadSuite 101Palo Alto, CA 94304Hours: Mon-Fri 7:00am -7:00pm Boswell Lab300 Pasteur DrivePavilion A, Level 1, A12Stanford, CA 94305Hours: Mon-Fri 6:00am -5:30pmSat-Sun 7:00am-3:30pm Redwood City440 Broadway Street, Pavillion B 1st Floor B11Redwood City, California 94063Hours: Monday - Friday 7am - 6pm Blood Draw at Stanford Cancer Center South Bay2589 Samaritan Drive4th Floor, San Jose, CA 95124 Hours: Mon-Fri 7:00am-6:00pm Blood Draw at Stanford Emeryville5800 Hollis StreetFirst Floor, Pavilion BEmeryville, CA 94608Hours: Mon-Fri 7:30am-5:00pm\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 255116564\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 28794\n",
+ "Subject: RE: Ordered Test Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-08 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Shortness of breath when walking short distances. Also is it possible to send the orders closer to home I have a quest here in Fremont \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hello Laura,\n",
+ "\n",
+ "I have placed lab orders for you at Quest. Please let us know once you've done the labs so we know to look for results. We do not get automatic alerts for outside results. If your symptoms should worsen please be evaluated by urgent care, ER, or call for a sick call appt. Thank you and take care.\n",
+ "\n",
+ "Jenny, RN \n",
+ "----------------------------------------\n",
+ "idx: 28793\n",
+ "Subject: Ordered Test Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-08 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Dr Martin \n",
+ "Hope all is well, I wanted to reach out to you in regards of my iron deficiency. I know I’m scheduled to see you in March but I’m starting to get the same symptoms as before. I was wondering if we could do some labs to check my iron levels. \n",
+ "Thank you for your time \n",
+ "Laura Gonzalez \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hello Laura,\n",
+ "\n",
+ "What symptoms are you having? You have standing lab orders in place and can go to any of our Stanford lab locations. Please let us know if you have any questions or concerns.\n",
+ "\n",
+ "Thank you.\n",
+ "\n",
+ "Jenny, RN\n",
+ "\n",
+ "Blake Wilbur Lab\n",
+ "900 Blake Wilbur Drive\n",
+ "1st Floor, Room W1083\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am - 5:30pm\n",
+ " \n",
+ "Cancer Center Lab\n",
+ "875 Blake Wilbur Drive\n",
+ "Room CC-1104\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am - 5:30pm\n",
+ " \n",
+ "Hoover Lab\n",
+ "211 Quarry Road\n",
+ "Suite 101\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am -7:00pm\n",
+ " \n",
+ "Boswell Lab\n",
+ "300 Pasteur Drive\n",
+ "Pavilion A, Level 1, A12\n",
+ "Stanford, CA 94305\n",
+ "Hours: Mon-Fri 6:00am -5:30pm\n",
+ "Sat-Sun 7:00am-3:30pm\n",
+ " \n",
+ "Redwood City\n",
+ "440 Broadway Street, Pavillion B 1st Floor B11\n",
+ "Redwood City, California 94063\n",
+ "Hours: Monday - Friday 7am - 6pm\n",
+ " \n",
+ "Blood Draw at Stanford Cancer Center South Bay\n",
+ "2589 Samaritan Drive\n",
+ "4th Floor, San Jose, CA 95124 \n",
+ "Hours: Mon-Fri 7:00am-6:00pm\n",
+ " \n",
+ "Blood Draw at Stanford Emeryville\n",
+ "5800 Hollis Street\n",
+ "First Floor, Pavilion B\n",
+ "Emeryville, CA 94608\n",
+ "Hours: Mon-Fri 7:30am-5:00pm\n",
+ "\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8438\n",
+ "➡️ Message by Sender ZAMORA, ESMERALDA [ S0352882]: Hi Dr.Berube, I did a full CBC blood draw yesterday at PAMF. Do you have access to that? The nurse from my OBGYN’s office said I am anemic and should take iron supplements. I responded letting her know that I actually have an iron overload and was advised to avoid any supplements with iron. Can you confirm this is correct?I have my anatomy scan at Stanford this morning and can pop into the lab for more blood test if you prefer that. Let me know. Thanks! Brianna \n",
+ "➡️ Provider's response to this specific message is: Hi Brianna, You are correct. You have been diagnosed with compensated hemolytic anemia due to hereditary xerocytosis, and your iron levels are currently being managed through regular phlebotomies. It's essential to understand the implications of your condition and the reason for not taking iron supplements.Key Takeaway:Do not take iron supplements. You are at risk for iron overload due to your hereditary xerocytosis, and adding more iron can worsen your condition. Focus on regular blood checks and maintain a healthy diet.Understanding Your Condition:Hereditary Xerocytosis: This is a rare genetic condition affecting red blood cells (RBCs) that results in increased RBC destruction (hemolysis). Your specific mutation (PIEZO1) causes changes in your blood cells leading to this condition.Iron Overload: Due to your hereditary xerocytosis, you are at risk for iron overload, especially since this condition causes increased RBC turnover. Your recent liver MRI has indicated significant iron overload.Current Treatment:You are receiving phlebotomies (scheduled blood draws to reduce excess iron) to help manage your iron levels. Since starting phlebotomies in June 2023, your ferritin (a marker of iron levels) has been gradually decreasing. Note: since you are pregnant, we have been holding phlebotomy for the remainder of your pregnancy. It's vital to continue avoiding iron supplementation during this time and keep an open line of communication with your healthcare team regarding your health and iron management.Avoiding Iron Supplements:Why Not Take Iron Supplements: Given your diagnosis of iron overload, taking iron supplements can exacerbate the problem. Your body already has excess iron due to the hemolytic anemia, and adding more iron can lead to further complications, including damage to your liver and other organs.Monitor Your Iron Levels: Since your treatment involves phlebotomy to manage iron overload, it's crucial not to introduce additional iron into your system. Always discuss any new supplements or medications with your healthcare provider.Additional Nutritional Guidance:While you need to avoid iron supplements, ensure that you are getting adequate nutrition, particularly folic acid, which is important for blood health. Folic acid can help support your body in producing healthy red blood cells.When to Seek Help:If you experience symptoms such as fatigue, weakness, or any unusual symptoms, contact your healthcare provider promptly. Regular follow-up and monitoring are critical to managing your condition effectively.If you have any additional questions, feel free to ask!Thanks, J Ryan, MSN, RNNurse Coordinator, Hematology\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 255261295\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 22548\n",
+ "Subject: Test Results Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-09 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr.Berube, \n",
+ "\n",
+ "I did a full CBC blood draw yesterday at PAMF. Do you have access to that? The nurse from my OBGYN’s office said I am anemic and should take iron supplements. I responded letting her know that I actually have an iron overload and was advised to avoid any supplements with iron. Can you confirm this is correct?\n",
+ "I have my anatomy scan at Stanford this morning and can pop into the lab for more blood test if you prefer that. Let me know. \n",
+ "\n",
+ "Thanks! \n",
+ "Brianna \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hi Brianna, \n",
+ "\n",
+ "You are correct. You have been diagnosed with compensated hemolytic anemia due to hereditary xerocytosis, and your iron levels are currently being managed through regular phlebotomies. It's essential to understand the implications of your condition and the reason for not taking iron supplements.\n",
+ "\n",
+ "Key Takeaway:\n",
+ "Do not take iron supplements. You are at risk for iron overload due to your hereditary xerocytosis, and adding more iron can worsen your condition. Focus on regular blood checks and maintain a healthy diet.\n",
+ "\n",
+ "Understanding Your Condition:\n",
+ "Hereditary Xerocytosis: This is a rare genetic condition affecting red blood cells (RBCs) that results in increased RBC destruction (hemolysis). Your specific mutation (PIEZO1) causes changes in your blood cells leading to this condition.\n",
+ "Iron Overload: Due to your hereditary xerocytosis, you are at risk for iron overload, especially since this condition causes increased RBC turnover. Your recent liver MRI has indicated significant iron overload.\n",
+ "\n",
+ "Current Treatment:\n",
+ "You are receiving phlebotomies (scheduled blood draws to reduce excess iron) to help manage your iron levels. Since starting phlebotomies in June 2023, your ferritin (a marker of iron levels) has been gradually decreasing. \n",
+ "\n",
+ "Note: since you are pregnant, we have been holding phlebotomy for the remainder of your pregnancy. It's vital to continue avoiding iron supplementation during this time and keep an open line of communication with your healthcare team regarding your health and iron management.\n",
+ "\n",
+ "Avoiding Iron Supplements:\n",
+ "Why Not Take Iron Supplements: Given your diagnosis of iron overload, taking iron supplements can exacerbate the problem. Your body already has excess iron due to the hemolytic anemia, and adding more iron can lead to further complications, including damage to your liver and other organs.\n",
+ "Monitor Your Iron Levels: Since your treatment involves phlebotomy to manage iron overload, it's crucial not to introduce additional iron into your system. Always discuss any new supplements or medications with your healthcare provider.\n",
+ "\n",
+ "Additional Nutritional Guidance:\n",
+ "While you need to avoid iron supplements, ensure that you are getting adequate nutrition, particularly folic acid, which is important for blood health. Folic acid can help support your body in producing healthy red blood cells.\n",
+ "\n",
+ "When to Seek Help:\n",
+ "If you experience symptoms such as fatigue, weakness, or any unusual symptoms, contact your healthcare provider promptly. Regular follow-up and monitoring are critical to managing your condition effectively.\n",
+ "\n",
+ "If you have any additional questions, feel free to ask!\n",
+ "\n",
+ "Thanks, \n",
+ "J Ryan, MSN, RN\n",
+ "Nurse Coordinator, Hematology\n",
+ "\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8340\n",
+ "➡️ Message by Sender GO, LACRISHA [ S0203400]: Hi Dr Brar ,Happy holidays ! I just had labs drawn for the bariatric group that follows me for my vitamin intake and they suggested that I reach out to you and let you know that my iron is a bit low , my last infusion was 2/17/ 21 I believe . Should we do another infusion before it gets any worse ? Please advise? I’m feeling fine and I’m not chewing ice yet lol . Thank you \n",
+ "➡️ Provider's response to this specific message is: Hi ReginaI saw your labs but no CBC was drawn. We will need to see the CBC to discuss IV iron as well. Do you have CBC ordered by your PCP? If so please have this drawnThanksChi, RN\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 253687511\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 96155\n",
+ "Subject: RE: Non-urgent Medical Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-21 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Chi , \n",
+ "I think Dr Brar has standing blood orders for me to check every so often can you order them or do you still want me to ask my PCP . \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 96154\n",
+ "Subject: Non-urgent Medical Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-19 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr Brar ,\n",
+ "\n",
+ "Happy holidays ! \n",
+ "I just had labs drawn for the bariatric group that follows me for my vitamin intake and they suggested that I reach out to you and let you know that my iron is a bit low , my last infusion was 2/17/ 21 I believe . \n",
+ "Should we do another infusion before it gets any worse ? Please advise? I’m feeling fine and I’m not chewing ice yet lol . \n",
+ "\n",
+ "Thank you \n",
+ "----------------------------------------\n",
+ "Provider Response by HOANG, CHI:\n",
+ "Hi Regina\n",
+ "\n",
+ "I saw your labs but no CBC was drawn. We will need to see the CBC to discuss IV iron as well. Do you have CBC ordered by your PCP? If so please have this drawn\n",
+ "\n",
+ "Thanks\n",
+ "Chi, RN\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8236\n",
+ "➡️ Message by Sender MONTEZ, ANDREA [ S0285483]: Hi all,Hope you are doing well!Two quick questions -1. Dr. Berube had me complete a few labs but I haven't heard any follow up. Can you confirm if there is anything she wants me to be aware of with the results? 2. I had my last iron infusion 4 weeks ago - are there labs I should be doing to check on my iron levels?Thank you!Amanda \n",
+ "➡️ Provider's response to this specific message is: Hi Amanda,I believe Dr. Berube has reviewed your labs, she is currently out of town but when she returns I will make sure to see if she any additional instructions. I have placed repeat labs for you to get done 6-8 weeks after your last venofer infusion, which should be around beginning of January.Best,Sharon Lee, BSN, RNNurse coordinator, hematology \n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 253812916\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 90355\n",
+ "Subject: RE:Non-urgent Medical Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-06 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr. Berube,\n",
+ "\n",
+ "Thank you for the response and well wishes! \n",
+ "\n",
+ "Best,\n",
+ "Amanda \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 90354\n",
+ "Subject: RE:Non-urgent Medical Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-02 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Sharon,\n",
+ "\n",
+ "Happy New Year!\n",
+ "\n",
+ "Can you please pass along this note to Dr.Berube? Thank you!\n",
+ "\n",
+ "My egg retrieval procedure is scheduled for January 29th and I have Desmopressin spray to use before the procedure. Does she still feel comfortable with the treatment plan after reviewing the most recent lab work (below)?\n",
+ "\n",
+ "11/07/2024<9>Fibrinogen<9>\n",
+ "11/07/2024<9>Thrombin Time<9>\n",
+ "11/07/2024<9>CBC w/o Diff<9>\n",
+ "11/07/2024<9>Factor Vlll Assay<9>\n",
+ "11/07/2024<9>Von Willebrand Factor Activity<9>\n",
+ "11/07/2024<9>Von Willebrand Ag<9>\n",
+ "\n",
+ "Thanks!\n",
+ "Amanda \n",
+ "----------------------------------------\n",
+ "Provider Response by BERUBE, CAROLINE:\n",
+ "Hi Amanda,\n",
+ "\n",
+ "I reviewed your results. No new issue. I continue to recommend Desmopressin nasal spray prior to your egg retrieval as outlined in my last clinic note. \n",
+ "Good luck with your egg retrieval!\n",
+ "\n",
+ "Sincerely,\n",
+ "Caroline Berube, MD\n",
+ "\n",
+ "----------------------------------------\n",
+ "idx: 90353\n",
+ "Subject: RE: Non-urgent Medical Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-20 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Thanks, Sharon! When will she be back?\n",
+ "\n",
+ "Thanks,\n",
+ "Amanda\n",
+ "----------------------------------------\n",
+ "Provider Response by LEE, SHARON:\n",
+ "Hi Amanda,\n",
+ "\n",
+ "No problem, she will be back about a week and a half.\n",
+ "\n",
+ "Best,\n",
+ "\n",
+ "Sharon Lee, BSN, RN\n",
+ "Nurse coordinator, hematology\n",
+ "\n",
+ "----------------------------------------\n",
+ "idx: 90352\n",
+ "Subject: Non-urgent Medical Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-19 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi all,\n",
+ "\n",
+ "Hope you are doing well!\n",
+ "\n",
+ "Two quick questions -\n",
+ "\n",
+ "1. Dr. Berube had me complete a few labs but I haven't heard any follow up. Can you confirm if there is anything she wants me to be aware of with the results? \n",
+ "\n",
+ "2. I had my last iron infusion 4 weeks ago - are there labs I should be doing to check on my iron levels?\n",
+ "\n",
+ "Thank you!\n",
+ "Amanda \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hi Amanda,\n",
+ "\n",
+ "I believe Dr. Berube has reviewed your labs, she is currently out of town but when she returns I will make sure to see if she any additional instructions. I have placed repeat labs for you to get done 6-8 weeks after your last venofer infusion, which should be around beginning of January.\n",
+ "\n",
+ "Best,\n",
+ "\n",
+ "Sharon Lee, BSN, RN\n",
+ "Nurse coordinator, hematology \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8157\n",
+ "➡️ Message by Sender GOMEZ, ELIZABETH [ S0190535]: Hi Dr Brar,I hope you're having a great holiday season. As we had discussed in our last appointment, I consulted with a gastro (Dr Nguyen) and had a colonoscopy + endoscopy. That procedure did not find anything unusual, and while Dr Nguyen says that there are further steps we could take to investigate possible issues with my iron absorption (\"a specific type of CT scan to evaluate for possible small intestinal problems followed by a possible video capsule endoscopy to take pictures of your small intestine\"), I know that we had discussed trying an iron infusion if the colonoscopy did not find anything conclusive. I think that's the approach I would prefer since it would presumably reveal a potential bone marrow issue (if my blood counts stay low) or higher iron/blood counts don't change how I feel (in which case I don't see any reason to keep investigating unless my current levels are otherwise concerning in and of themselves).Does that seem reasonable to you?Thank you,Isaiah \n",
+ "➡️ Provider's response to this specific message is: Hi IsaiahDr Brar mentioned previously that IV iron was not needed at this time but can consider it if there's a drop in labs. He would like for you to repeat labs in April and we can go from thereI will also let him know of your message. Thanks for the updateThanksChi, RN\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 254403764\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 64479\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-06 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi,\n",
+ "\n",
+ "Unless Dr Brar would advise against it, I would like to try the iron injection for those reasons (I.e. to see if it helps energy levels or, on the other side, shows that my blood counts don’t improve and therefore we might need to check marrow). \n",
+ "\n",
+ "Thanks,\n",
+ "Isaiah \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 64478\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-30 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Ok. I thought we had discussed an iron infusion as the next step after the colonoscopy, but maybe I’m misremembering. \n",
+ "\n",
+ "Thanks,\n",
+ "Isaiah \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 64477\n",
+ "Subject: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-30 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr Brar,\n",
+ "\n",
+ "I hope you're having a great holiday season. As we had discussed in our last appointment, I consulted with a gastro (Dr Nguyen) and had a colonoscopy + endoscopy. That procedure did not find anything unusual, and while Dr Nguyen says that there are further steps we could take to investigate possible issues with my iron absorption (\"a specific type of CT scan to evaluate for possible small intestinal problems followed by a possible video capsule endoscopy to take pictures of your small intestine\"), I know that we had discussed trying an iron infusion if the colonoscopy did not find anything conclusive. I think that's the approach I would prefer since it would presumably reveal a potential bone marrow issue (if my blood counts stay low) or higher iron/blood counts don't change how I feel (in which case I don't see any reason to keep investigating unless my current levels are otherwise concerning in and of themselves).\n",
+ "\n",
+ "Does that seem reasonable to you?\n",
+ "\n",
+ "Thank you,\n",
+ "Isaiah \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hi Isaiah\n",
+ "\n",
+ "Dr Brar mentioned previously that IV iron was not needed at this time but can consider it if there's a drop in labs. He would like for you to repeat labs in April and we can go from there\n",
+ "I will also let him know of your message. Thanks for the update\n",
+ "\n",
+ "Thanks\n",
+ "Chi, RN\n",
+ "----------------------------------------\n",
+ "idx: 64476\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-14 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Ok, thank you. Is any fasting necessary?\n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "Non fasting\n",
+ "\n",
+ "Thanks\n",
+ "Andrea M\n",
+ "\n",
+ "----------------------------------------\n",
+ "idx: 64475\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-10 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi,\n",
+ "\n",
+ "Just following up on this to see what Dr Brar thinks. \n",
+ "\n",
+ "Thank you \n",
+ "----------------------------------------\n",
+ "Provider Response by APOSTOL, JENNY,:\n",
+ "Hello Isaiah,\n",
+ "\n",
+ "We would be happy to set you up for IV iron. Since your last labs are 3 months old (from October), please first obtain an updated CBC/d and ferritin lab. You have orders in place and can go to any of our Stanford lab locations. If you remain in the same range as prior, we will then set up a single dose of IV iron. Please let us know if you have any questions or concerns.\n",
+ "\n",
+ "Thank you.\n",
+ "\n",
+ "Jenny, RN\n",
+ "\n",
+ "Blake Wilbur Lab\n",
+ "900 Blake Wilbur Drive\n",
+ "1st Floor, Room W1083\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am - 5:30pm\n",
+ " \n",
+ "Cancer Center Lab\n",
+ "875 Blake Wilbur Drive\n",
+ "Room CC-1104\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am - 5:30pm\n",
+ " \n",
+ "Hoover Lab\n",
+ "211 Quarry Road\n",
+ "Suite 101\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am -7:00pm\n",
+ " \n",
+ "Boswell Lab\n",
+ "300 Pasteur Drive\n",
+ "Pavilion A, Level 1, A12\n",
+ "Stanford, CA 94305\n",
+ "Hours: Mon-Fri 6:00am -5:30pm\n",
+ "Sat-Sun 7:00am-3:30pm\n",
+ " \n",
+ "Redwood City\n",
+ "440 Broadway Street, Pavillion B 1st Floor B11\n",
+ "Redwood City, California 94063\n",
+ "Hours: Monday - Friday 7am - 6pm\n",
+ " \n",
+ "Blood Draw at Stanford Cancer Center South Bay\n",
+ "2589 Samaritan Drive\n",
+ "4th Floor, San Jose, CA 95124 \n",
+ "Hours: Mon-Fri 7:00am-6:00pm\n",
+ " \n",
+ "Blood Draw at Stanford Emeryville\n",
+ "5800 Hollis Street\n",
+ "First Floor, Pavilion B\n",
+ "Emeryville, CA 94608\n",
+ "Hours: Mon-Fri 7:30am-5:00pm\n",
+ "\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8119\n",
+ "➡️ Message by Sender DIEP, ROBERT [ S0328143]: Hello,Should I be getting an Iron infusion soon while we are waiting for my bone marrow biopsy/copper? My HGB is steadily dropping again. Platelets are also dropping and I don’t know why. Dr Muppidi stopped my Imuran 10 days ago to see if that would give some clarification. Also wanted to mention that I have a lot of fluid retention and painful cramping all over. If we do iron infusion just a reminder that I need a different kind because of the reaction I had the first time.Thank you,Jason\n",
+ "➡️ Provider's response to this specific message is: Hi Jason,Dr Diep has ordered you an IV iron infusion, iron sucrose. (Your received iron dextran previously.) Our infusion team will be reaching out to get this scheduled as well as postpone your bone marrow biopsy by 4-6 weeks to allow optimal time for absorption of the increased TPN copper and the IV iron.Please reach out with any questions,Amy MooreRN Coordinator, HematologyIron Sucrose Injection (IRON SUCROSE - INJECTION)For anemia.Brand Name(s): VenoferGeneric Name: Iron SucroseInstructionsThis medicine is given as an IV injection into a vein.Read and make sure you understand the instructions for measuring your dose and using the syringe before using this medicine.Always inspect the medicine before using.The liquid should be clear and dark brown.Do not use the medicine if it contains any particles or if it has changed color.Keep medicine at room temperature. Protect from light.Speak with your nurse or pharmacist about how long the medicine can be stored safely at room temperature or in the refrigerator before it needs to be discarded.Never use any medicine that has expired.Discard any remaining medicine after your dose is given.If you miss a dose, contact your doctor for instructions.Drug interactions can change how medicines work or increase risk for side effects. Tell your health care providers about all medicines taken. Include prescription and over-the-counter medicines, vitamins, and herbal medicines. Speak with your doctor or pharmacist before starting or stopping any medicine.It is very important that you follow your doctor's instructions for all blood tests.CautionsDuring pregnancy, this medicine should be used only when clearly needed. Talk to your doctor about the risks and benefits.Tell your doctor and pharmacist if you ever had an allergic reaction to a medicine.Do not use the medication any more than instructed.This medicine may cause dizziness or fainting. Do not stand or sit up quickly.This medicine passes into breast milk. Ask your doctor before breastfeeding.Ask your pharmacist how to properly throw away used needles or syringes.Do not share this medicine with anyone who has not been prescribed this medicine.Side EffectsThe following is a list of some common side effects from this medicine. Please speak with your doctor about what you should do if you experience these or other side effects.constipation or diarrheadizzinessswelling of the legs, feet, and handsmuscle crampsnausea and vomitingchanges in taste or unpleasant tasteCall your doctor or get medical help right away if you notice any of these more serious side effects:chest painfaintingsevere or persistent headachefast or irregular heart beatssevere stomach or bowel painblurring or changes of visionA few people may have an allergic reaction to this medicine. Symptoms can include difficulty breathing, skin rash, itching, swelling, or severe dizziness. If you notice any of these symptoms, seek medical help quickly.Please speak with your doctor, nurse, or pharmacist if you have any questions about this medicine.IMPORTANT NOTE: This document tells you briefly how to take your medicine, but it does not tell you all there is to know about it. Your doctor or pharmacist may give you other documents about your medicine. Please talk to them if you have any questions. Always follow their advice.There is a more complete description of this medicine available in English. Scan this code on your smartphone or tablet or use the web address below. You can also ask your pharmacist for a printout. If you have any questions, please ask your pharmacist.The display and use of this drug information is subject to Terms of Use.More information about IRON SUCROSE - INJECTION Copyright(c) 2024 First Databank, Inc.Selected from data included with permission and copyright by First DataBank, Inc. This copyrighted material has been downloaded from a licensed data provider and is not for distribution, except as may be authorized by the applicable terms of use.Conditions of Use: The information in this database is intended to supplement, not substitute for the expertise and judgment of healthcare professionals. The information is not intended to cover all possible uses, directions, precautions, drug interactions or adverse effects nor should it be construed to indicate that use of a particular drug is safe, appropriate or effective for you or anyone else. A healthcare professional should be consulted before taking any drug, changing any diet or commencing or discontinuing any course of treatment. The display and use of this drug information is subject to express Terms of Use.Care instructions adapted under license by your healthcare professional. If you have questions about a medical condition or this instruction, always ask your healthcare professional. Ignite Healthwise, LLC disclaims any warranty or liability for your use of this information.\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 254855364\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 41220\n",
+ "Subject: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-06 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello,\n",
+ "Should I be getting an Iron infusion soon while we are waiting for my bone marrow biopsy/copper? My HGB is steadily dropping again. Platelets are also dropping and I don’t know why. Dr Muppidi stopped my Imuran 10 days ago to see if that would give some clarification. Also wanted to mention that I have a lot of fluid retention and painful cramping all over. \n",
+ "\n",
+ "If we do iron infusion just a reminder that I need a different kind because of the reaction I had the first time.\n",
+ "\n",
+ "Thank you,\n",
+ "Jason\n",
+ "----------------------------------------\n",
+ "Provider Response by MOORE, AMY:\n",
+ "Hi Jason,\n",
+ "\n",
+ "Dr Diep has ordered you an IV iron infusion, iron sucrose. (Your received iron dextran previously.) Our infusion team will be reaching out to get this scheduled as well as postpone your bone marrow biopsy by 4-6 weeks to allow optimal time for absorption of the increased TPN copper and the IV iron.\n",
+ "\n",
+ "Please reach out with any questions,\n",
+ "\n",
+ "Amy Moore\n",
+ "RN Coordinator, Hematology\n",
+ "\n",
+ "Iron Sucrose Injection (IRON SUCROSE - INJECTION)\n",
+ "For anemia.\n",
+ "Brand Name(s): Venofer\n",
+ "Generic Name: Iron Sucrose\n",
+ "Instructions\n",
+ "This medicine is given as an IV injection into a vein.\n",
+ "Read and make sure you understand the instructions for measuring your dose and using the syringe before using this medicine.\n",
+ "Always inspect the medicine before using.\n",
+ "The liquid should be clear and dark brown.\n",
+ "Do not use the medicine if it contains any particles or if it has changed color.\n",
+ "Keep medicine at room temperature. Protect from light.\n",
+ "Speak with your nurse or pharmacist about how long the medicine can be stored safely at room temperature or in the refrigerator before it needs to be discarded.\n",
+ "Never use any medicine that has expired.\n",
+ "Discard any remaining medicine after your dose is given.\n",
+ "If you miss a dose, contact your doctor for instructions.\n",
+ "Drug interactions can change how medicines work or increase risk for side effects. Tell your health care providers about all medicines taken. Include prescription and over-the-counter medicines, vitamins, and herbal medicines. Speak with your doctor or pharmacist before starting or stopping any medicine.\n",
+ "It is very important that you follow your doctor's instructions for all blood tests.\n",
+ "Cautions\n",
+ "During pregnancy, this medicine should be used only when clearly needed. Talk to your doctor about the risks and benefits.\n",
+ "Tell your doctor and pharmacist if you ever had an allergic reaction to a medicine.\n",
+ "Do not use the medication any more than instructed.\n",
+ "This medicine may cause dizziness or fainting. Do not stand or sit up quickly.\n",
+ "This medicine passes into breast milk. Ask your doctor before breastfeeding.\n",
+ "Ask your pharmacist how to properly throw away used needles or syringes.\n",
+ "Do not share this medicine with anyone who has not been prescribed this medicine.\n",
+ "Side Effects\n",
+ "The following is a list of some common side effects from this medicine. Please speak with your doctor about what you should do if you experience these or other side effects.\n",
+ "constipation or diarrhea\n",
+ "dizziness\n",
+ "swelling of the legs, feet, and hands\n",
+ "muscle cramps\n",
+ "nausea and vomiting\n",
+ "changes in taste or unpleasant taste\n",
+ "Call your doctor or get medical help right away if you notice any of these more serious side effects:\n",
+ "chest pain\n",
+ "fainting\n",
+ "severe or persistent headache\n",
+ "fast or irregular heart beats\n",
+ "severe stomach or bowel pain\n",
+ "blurring or changes of vision\n",
+ "A few people may have an allergic reaction to this medicine. Symptoms can include difficulty breathing, skin rash, itching, swelling, or severe dizziness. If you notice any of these symptoms, seek medical help quickly.\n",
+ "Please speak with your doctor, nurse, or pharmacist if you have any questions about this medicine.\n",
+ "IMPORTANT NOTE: This document tells you briefly how to take your medicine, but it does not tell you all there is to know about it. Your doctor or pharmacist may give you other documents about your medicine. Please talk to them if you have any questions. Always follow their advice.\n",
+ "There is a more complete description of this medicine available in English. Scan this code on your smartphone or tablet or use the web address below. You can also ask your pharmacist for a printout. If you have any questions, please ask your pharmacist.\n",
+ "The display and use of this drug information is subject to Terms of Use.\n",
+ "More information about IRON SUCROSE - INJECTION \n",
+ " \n",
+ "Copyright(c) 2024 First Databank, Inc.\n",
+ "Selected from data included with permission and copyright by First DataBank, Inc. This copyrighted material has been downloaded from a licensed data provider and is not for distribution, except as may be authorized by the applicable terms of use.\n",
+ "Conditions of Use: The information in this database is intended to supplement, not substitute for the expertise and judgment of healthcare professionals. The information is not intended to cover all possible uses, directions, precautions, drug interactions or adverse effects nor should it be construed to indicate that use of a particular drug is safe, appropriate or effective for you or anyone else. A healthcare professional should be consulted before taking any drug, changing any diet or commencing or discontinuing any course of treatment. The display and use of this drug information is subject to express Terms of Use.\n",
+ "Care instructions adapted under license by your healthcare professional. If you have questions about a medical condition or this instruction, always ask your healthcare professional. Ignite Healthwise, LLC disclaims any warranty or liability for your use of this information.\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "➡️ Similarity: 0.8113\n",
+ "➡️ Message by Sender GOMEZ, ELIZABETH [ S0190535]: Hi Dr. Salmasi,I hope you are doing well. Can you please put in a request for me to do my labs? I want to see if it’s time for me to do another iron infusion as I haven’t had much energy lately.Thanks,Jessica\n",
+ "➡️ Provider's response to this specific message is: Hi Jessica,You have labs placed for you at Stanford! They are available for you to get done every 3 months if you feel worsening fatigue.Best,Sharon Lee, BSN, RNNurse coordinator, hematology\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 250109300\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 266210\n",
+ "Subject: RE:Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-11-08 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Thank you. I will do them by Monday. \n",
+ "----------------------------------------\n",
+ "Provider Response by LEE, SHARON:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 266209\n",
+ "Subject: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-11-08 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr. Salmasi,\n",
+ "\n",
+ "I hope you are doing well. Can you please put in a request for me to do my labs? I want to see if it’s time for me to do another iron infusion as I haven’t had much energy lately.\n",
+ "\n",
+ "Thanks,\n",
+ "Jessica\n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hi Jessica,\n",
+ "\n",
+ "You have labs placed for you at Stanford! They are available for you to get done every 3 months if you feel worsening fatigue.\n",
+ "\n",
+ "Best,\n",
+ "\n",
+ "Sharon Lee, BSN, RN\n",
+ "Nurse coordinator, hematology\n",
+ "\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n"
+ ]
+ }
+ ],
+ "source": [
+ "results = run_tiered_retrieval(\n",
+ " query_vector_literal=query_vector_literal,\n",
+ " receiver=receiver,\n",
+ " department=department,\n",
+ " specialty=specialty,\n",
+ " client=client,\n",
+ " target_N=10, # Number of final results you want\n",
+ " similarity_cutoff=0.7 # The minimum cosine similarity required\n",
+ ")\n",
+ "\n",
+ "\n",
+ "#show results\n",
+ "print(\"Query Parameters:\")\n",
+ "print(f\"query_message: {query_message}\")\n",
+ "print(f\"receiver: {receiver}\")\n",
+ "print(f\"department: {department}\")\n",
+ "print(f\"specialty: {specialty}\")\n",
+ "\n",
+ "try:\n",
+ " print(f\"\\nNumber of results: {len(results)}\")\n",
+ " \n",
+ " if len(results) > 0:\n",
+ " for row in results:\n",
+ " print(\"##\" * 80)\n",
+ " print(f\"➡️ Similarity: {row['cosine_similarity']:.4f}\")\n",
+ " print(f\"➡️ Message by Sender {row['Message Sender']}: {row['Patient Message']}\")\n",
+ " print(f\"➡️ Provider's response to this specific message is: {row['Actual Response Sent to Patient']}\")\n",
+ " print(f\"➡️ This result is from tier: {row['retrieval_tier']}\")\n",
+ " print(\"➡️ -----------printing the whole thread-------------\")\n",
+ " beautiful_print_thread(row[\"Thread ID\"], answer_question_paired_data_dedup)\n",
+ " print(\"##\" * 80)\n",
+ " else:\n",
+ " print(\"No results found matching the criteria\")\n",
+ "except Exception as e:\n",
+ " print(f\"Error getting results: {str(e)}\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## -----------Weighted Retrieval-----------"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def get_personalized_score(row, receiver, department, specialty, \n",
+ " sender_weight=0.2, dept_weight=0.1, spec_weight=0.05):\n",
+ " score = row[\"cosine_similarity\"]\n",
+ " if row[\"Recipient Names\"] == receiver:\n",
+ " score += sender_weight\n",
+ " elif row[\"Message Department\"] == department:\n",
+ " score += dept_weight\n",
+ " elif row[\"Department Specialty Title\"] == specialty:\n",
+ " score += spec_weight\n",
+ " return score\n",
+ "\n",
+ "def weighted_retrieval(query_vector_literal, receiver, department, specialty, client, top_k=100, final_N=5,\n",
+ " sender_weight=0.2, dept_weight=0.1, spec_weight=0.05, similarity_cutoff=0.7):\n",
+ " # Run the broad query\n",
+ " base_query = f\"\"\"\n",
+ " WITH input_embedding AS (\n",
+ " SELECT {query_vector_literal} AS input_vec\n",
+ " )\n",
+ " SELECT\n",
+ " t.`Thread ID`,\n",
+ " t.`Patient Message`,\n",
+ " t.`Message Sender`,\n",
+ " t.`Recipient Names`,\n",
+ " t.`Message Department`,\n",
+ " t.`Department Specialty Title`,\n",
+ " t.`Actual Response Sent to Patient`,\n",
+ " (\n",
+ " SELECT SUM(x * y)\n",
+ " FROM UNNEST(t.embeddings) AS x WITH OFFSET i\n",
+ " JOIN UNNEST(input_vec) AS y WITH OFFSET j\n",
+ " ON i = j\n",
+ " ) /\n",
+ " (\n",
+ " SQRT((SELECT SUM(POW(x, 2)) FROM UNNEST(t.embeddings) AS x)) *\n",
+ " SQRT((SELECT SUM(POW(y, 2)) FROM UNNEST(input_vec) AS y))\n",
+ " ) AS cosine_similarity\n",
+ " FROM `som-nero-phi-jonc101.rag_embedding_R01.messages_with_embeddings_pcp_only` AS t, input_embedding\n",
+ " ORDER BY cosine_similarity DESC\n",
+ " LIMIT @K\n",
+ " \"\"\"\n",
+ " params = [bigquery.ScalarQueryParameter(\"K\", \"INT64\", top_k)]\n",
+ " job = client.query(\n",
+ " base_query,\n",
+ " job_config=bigquery.QueryJobConfig(query_parameters=params)\n",
+ " )\n",
+ " rows = list(job.result())\n",
+ "\n",
+ " # Compute personalized score for each row, filter by similarity_cutoff\n",
+ " scored = []\n",
+ " for r in rows:\n",
+ " row_dict = dict(r)\n",
+ " if row_dict[\"cosine_similarity\"] >= similarity_cutoff:\n",
+ " row_dict[\"personalized_score\"] = get_personalized_score(\n",
+ " row_dict, receiver, department, specialty, \n",
+ " sender_weight, dept_weight, spec_weight\n",
+ " )\n",
+ " # Annotate which tier matched\n",
+ " if row_dict[\"Recipient Names\"] == receiver:\n",
+ " row_dict[\"personalization_tier\"] = \"sender\"\n",
+ " elif row_dict[\"Message Department\"] == department:\n",
+ " row_dict[\"personalization_tier\"] = \"department\"\n",
+ " elif row_dict[\"Department Specialty Title\"] == specialty:\n",
+ " row_dict[\"personalization_tier\"] = \"specialty\"\n",
+ " else:\n",
+ " row_dict[\"personalization_tier\"] = \"none\"\n",
+ " scored.append(row_dict)\n",
+ "\n",
+ " # Sort by personalized_score (descending)\n",
+ " scored = sorted(scored, key=lambda x: x[\"personalized_score\"], reverse=True)\n",
+ "\n",
+ " # Return top N\n",
+ " return scored[:final_N]\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Query Parameters:\n",
+ "query_message: Hi Dr. Martin,I wanted to touch base regarding my most recent blood work from earlier this month. I’ve been feeling extra fatigued and short of breath lately, and I’m a bit worried it might be related to my ongoing iron issues. Would you be able to let me know if my latest results suggest it’s time to schedule another iron infusion? Also, since I usually need an ultrasound-guided IV, should I go ahead and book that appointment too?Thanks so much for your help!Best, Melissa\n",
+ "receiver: MARTIN, BETH\n",
+ "department: HEMATOLOGY\n",
+ "specialty: Hematology\n",
+ "\n",
+ "Number of results: 5\n",
+ "################################################################################################################################################################\n",
+ "[sender] Score: 1.012 (CosSim: 0.812)\n",
+ "➡️ Message by Sender APOSTOL, JENNY [ S0333370]: Hi Dr. Martin,I hope you're well! Did you have an opportunity to review the labs my mom completed on 11/14/24? If so, do you think she's due for an Iron Infusion appointment (and, USGPIV appt preceding Iron Infusion)?Thanks!Barbara\n",
+ "➡️ Provider's response to this specific message is: Barbara, No iron needed--the anemia is mild and is due to inflammation, not iron deficiency. I had contacted Dr Haddock about this months ago when this pattern developed--cause is not clear. I hope that her health is otherwise stable, that you're all doing well despite the world's turmoil. Beth \n",
+ "➡️ This result is from tier: sender\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 252160980\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 161352\n",
+ "Subject: Scheduling Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-04 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr. Martin,\n",
+ "I hope you're well! \n",
+ "\n",
+ "Did you have an opportunity to review the labs my mom completed on 11/14/24? If so, do you think she's due for an Iron Infusion appointment (and, USGPIV appt preceding Iron Infusion)?\n",
+ "\n",
+ "Thanks!\n",
+ "Barbara\n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Barbara, \n",
+ "\n",
+ "No iron needed--the anemia is mild and is due to inflammation, not iron deficiency. I had contacted Dr Haddock about this months ago when this pattern developed--cause is not clear. \n",
+ "\n",
+ "I hope that her health is otherwise stable, that you're all doing well despite the world's turmoil. \n",
+ "\n",
+ "Beth \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "[sender] Score: 1.001 (CosSim: 0.801)\n",
+ "➡️ Message by Sender APOSTOL, JENNY [ S0333370]: Hello Dr. Martin,I am following up on our visit on 8/30/2024 where you advised that I receive IV iron to compensate for ongoing bleeding and to assist with heart failure. At that time you stated that you would discuss further with DR. Galatin to coordinate iron infusions at CCSB. To that end, I have never received any contact for the above mentioned iron infusions. Please see the attached progress/clinical notes from our 8/30 visit, page 7 in particular.Some how my iron infusions have \"slipped through the cracks\". I look forward to your response and thank you in advance.Regards,Thomas Obata\n",
+ "➡️ Provider's response to this specific message is: Mr Obata, I 'm recommending a change in plan as I see that you have an upcoming liver transplant appt at the end of the month and that you're due to have a fibrinogen level and ATIII level checked. I'm still checking in with Dr Galatin for who will take the lead, but if you are getting transplanted here , then you should have a Stanford based hematologist for potential coagulation issues --and possibly iv iron if needed. If you are being considered at UCSF, then I recommend that you see Dr Cornett as well --or , if you would like an independent opinion from mine, I'm happy to refer you. I see that you prefer Quest labs: I've placed orders there as well. Would you be able to go there or to a Stanford lab any time within a week or earlier of that appt, at least by 1/23? Non fasting. Sincerely, Beth A. Martin, MD with Jenny Apostol, RN Attending Physician Division of Hematology Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "➡️ This result is from tier: sender\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 255287111\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 21428\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-14 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Dr. Martin,\n",
+ "\n",
+ "Thank you, I look forward to your pre-op plan. Please understand that I could be getting the call for a liver match any day, therefore time is of the essence. Thank you in advance for your understanding.\n",
+ "\n",
+ "Best regards,\n",
+ "\n",
+ "Thomas\n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 21427\n",
+ "Subject: RE: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-14 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Dr. Martin,\n",
+ "I am listed as top priority and in the number one position on the Stanford liver transplant list. The AVMs in my liver are compromising my heart, hence the top priority position.\n",
+ "I just visited Question Diagnostics and completed my blood panel.\n",
+ "Thank you,\n",
+ "Thomas Obata \n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Got it\n",
+ "\n",
+ "I will develop a coag pre op\n",
+ "Plan for you \n",
+ "\n",
+ "Beth \n",
+ "----------------------------------------\n",
+ "idx: 21426\n",
+ "Subject: Visit Follow-up Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-09 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Dr. Martin,\n",
+ "\n",
+ "I am following up on our visit on 8/30/2024 where you advised that I receive IV iron to compensate for ongoing bleeding and to assist with heart failure. At that time you stated that you would discuss further with DR. Galatin to coordinate iron infusions at CCSB. To that end, I have never received any contact for the above mentioned iron infusions. \n",
+ "Please see the attached progress/clinical notes from our 8/30 visit, page 7 in particular.\n",
+ "\n",
+ "Some how my iron infusions have \"slipped through the cracks\". I look forward to your response and thank you in advance.\n",
+ "\n",
+ "Regards,\n",
+ "Thomas Obata\n",
+ "----------------------------------------\n",
+ "Provider Response by MARTIN, BETH:\n",
+ "Mr Obata, \n",
+ "\n",
+ "I 'm recommending a change in plan as I see that you have an upcoming liver transplant appt at the end of the month and that you're due to have a fibrinogen level and ATIII level checked. \n",
+ "\n",
+ "I'm still checking in with Dr Galatin for who will take the lead, but if you are getting transplanted here , then you should have a Stanford based hematologist for potential coagulation issues --and possibly iv iron if needed. \n",
+ "\n",
+ "If you are being considered at UCSF, then I recommend that you see Dr Cornett as well --or , if you would like an independent opinion from mine, I'm happy to refer you. \n",
+ "\n",
+ "I see that you prefer Quest labs: I've placed orders there as well. Would you be able to go there or to a Stanford lab any time within a week or earlier of that appt, at least by 1/23? Non fasting. \n",
+ "\n",
+ "Sincerely, \n",
+ "\n",
+ "Beth A. Martin, MD with Jenny Apostol, RN \n",
+ "Attending Physician \n",
+ "Division of Hematology \n",
+ "\n",
+ "Questions, Concerns: 650-498-6000, Option 5 if urgent; or MyHealth message if weekday only, nonurgent (can wait for 2 business days) \n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "[department] Score: 0.948 (CosSim: 0.848)\n",
+ "➡️ Message by Sender GOMEZ, ELIZABETH [ S0190535]: Hello Dr Martin Hope all is well, I wanted to reach out to you in regards of my iron deficiency. I know I’m scheduled to see you in March but I’m starting to get the same symptoms as before. I was wondering if we could do some labs to check my iron levels. Thank you for your time Laura Gonzalez \n",
+ "➡️ Provider's response to this specific message is: Hello Laura,What symptoms are you having? You have standing lab orders in place and can go to any of our Stanford lab locations. Please let us know if you have any questions or concerns.Thank you.Jenny, RNBlake Wilbur Lab900 Blake Wilbur Drive1st Floor, Room W1083Palo Alto, CA 94304Hours: Mon-Fri 7:00am - 5:30pm Cancer Center Lab875 Blake Wilbur DriveRoom CC-1104Palo Alto, CA 94304Hours: Mon-Fri 7:00am - 5:30pm Hoover Lab211 Quarry RoadSuite 101Palo Alto, CA 94304Hours: Mon-Fri 7:00am -7:00pm Boswell Lab300 Pasteur DrivePavilion A, Level 1, A12Stanford, CA 94305Hours: Mon-Fri 6:00am -5:30pmSat-Sun 7:00am-3:30pm Redwood City440 Broadway Street, Pavillion B 1st Floor B11Redwood City, California 94063Hours: Monday - Friday 7am - 6pm Blood Draw at Stanford Cancer Center South Bay2589 Samaritan Drive4th Floor, San Jose, CA 95124 Hours: Mon-Fri 7:00am-6:00pm Blood Draw at Stanford Emeryville5800 Hollis StreetFirst Floor, Pavilion BEmeryville, CA 94608Hours: Mon-Fri 7:30am-5:00pm\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 255116564\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 28794\n",
+ "Subject: RE: Ordered Test Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-08 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Shortness of breath when walking short distances. Also is it possible to send the orders closer to home I have a quest here in Fremont \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hello Laura,\n",
+ "\n",
+ "I have placed lab orders for you at Quest. Please let us know once you've done the labs so we know to look for results. We do not get automatic alerts for outside results. If your symptoms should worsen please be evaluated by urgent care, ER, or call for a sick call appt. Thank you and take care.\n",
+ "\n",
+ "Jenny, RN \n",
+ "----------------------------------------\n",
+ "idx: 28793\n",
+ "Subject: Ordered Test Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-08 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Dr Martin \n",
+ "Hope all is well, I wanted to reach out to you in regards of my iron deficiency. I know I’m scheduled to see you in March but I’m starting to get the same symptoms as before. I was wondering if we could do some labs to check my iron levels. \n",
+ "Thank you for your time \n",
+ "Laura Gonzalez \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hello Laura,\n",
+ "\n",
+ "What symptoms are you having? You have standing lab orders in place and can go to any of our Stanford lab locations. Please let us know if you have any questions or concerns.\n",
+ "\n",
+ "Thank you.\n",
+ "\n",
+ "Jenny, RN\n",
+ "\n",
+ "Blake Wilbur Lab\n",
+ "900 Blake Wilbur Drive\n",
+ "1st Floor, Room W1083\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am - 5:30pm\n",
+ " \n",
+ "Cancer Center Lab\n",
+ "875 Blake Wilbur Drive\n",
+ "Room CC-1104\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am - 5:30pm\n",
+ " \n",
+ "Hoover Lab\n",
+ "211 Quarry Road\n",
+ "Suite 101\n",
+ "Palo Alto, CA 94304\n",
+ "Hours: Mon-Fri 7:00am -7:00pm\n",
+ " \n",
+ "Boswell Lab\n",
+ "300 Pasteur Drive\n",
+ "Pavilion A, Level 1, A12\n",
+ "Stanford, CA 94305\n",
+ "Hours: Mon-Fri 6:00am -5:30pm\n",
+ "Sat-Sun 7:00am-3:30pm\n",
+ " \n",
+ "Redwood City\n",
+ "440 Broadway Street, Pavillion B 1st Floor B11\n",
+ "Redwood City, California 94063\n",
+ "Hours: Monday - Friday 7am - 6pm\n",
+ " \n",
+ "Blood Draw at Stanford Cancer Center South Bay\n",
+ "2589 Samaritan Drive\n",
+ "4th Floor, San Jose, CA 95124 \n",
+ "Hours: Mon-Fri 7:00am-6:00pm\n",
+ " \n",
+ "Blood Draw at Stanford Emeryville\n",
+ "5800 Hollis Street\n",
+ "First Floor, Pavilion B\n",
+ "Emeryville, CA 94608\n",
+ "Hours: Mon-Fri 7:30am-5:00pm\n",
+ "\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "[department] Score: 0.944 (CosSim: 0.844)\n",
+ "➡️ Message by Sender ZAMORA, ESMERALDA [ S0352882]: Hi Dr.Berube, I did a full CBC blood draw yesterday at PAMF. Do you have access to that? The nurse from my OBGYN’s office said I am anemic and should take iron supplements. I responded letting her know that I actually have an iron overload and was advised to avoid any supplements with iron. Can you confirm this is correct?I have my anatomy scan at Stanford this morning and can pop into the lab for more blood test if you prefer that. Let me know. Thanks! Brianna \n",
+ "➡️ Provider's response to this specific message is: Hi Brianna, You are correct. You have been diagnosed with compensated hemolytic anemia due to hereditary xerocytosis, and your iron levels are currently being managed through regular phlebotomies. It's essential to understand the implications of your condition and the reason for not taking iron supplements.Key Takeaway:Do not take iron supplements. You are at risk for iron overload due to your hereditary xerocytosis, and adding more iron can worsen your condition. Focus on regular blood checks and maintain a healthy diet.Understanding Your Condition:Hereditary Xerocytosis: This is a rare genetic condition affecting red blood cells (RBCs) that results in increased RBC destruction (hemolysis). Your specific mutation (PIEZO1) causes changes in your blood cells leading to this condition.Iron Overload: Due to your hereditary xerocytosis, you are at risk for iron overload, especially since this condition causes increased RBC turnover. Your recent liver MRI has indicated significant iron overload.Current Treatment:You are receiving phlebotomies (scheduled blood draws to reduce excess iron) to help manage your iron levels. Since starting phlebotomies in June 2023, your ferritin (a marker of iron levels) has been gradually decreasing. Note: since you are pregnant, we have been holding phlebotomy for the remainder of your pregnancy. It's vital to continue avoiding iron supplementation during this time and keep an open line of communication with your healthcare team regarding your health and iron management.Avoiding Iron Supplements:Why Not Take Iron Supplements: Given your diagnosis of iron overload, taking iron supplements can exacerbate the problem. Your body already has excess iron due to the hemolytic anemia, and adding more iron can lead to further complications, including damage to your liver and other organs.Monitor Your Iron Levels: Since your treatment involves phlebotomy to manage iron overload, it's crucial not to introduce additional iron into your system. Always discuss any new supplements or medications with your healthcare provider.Additional Nutritional Guidance:While you need to avoid iron supplements, ensure that you are getting adequate nutrition, particularly folic acid, which is important for blood health. Folic acid can help support your body in producing healthy red blood cells.When to Seek Help:If you experience symptoms such as fatigue, weakness, or any unusual symptoms, contact your healthcare provider promptly. Regular follow-up and monitoring are critical to managing your condition effectively.If you have any additional questions, feel free to ask!Thanks, J Ryan, MSN, RNNurse Coordinator, Hematology\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 255261295\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 22548\n",
+ "Subject: Test Results Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2025-01-09 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr.Berube, \n",
+ "\n",
+ "I did a full CBC blood draw yesterday at PAMF. Do you have access to that? The nurse from my OBGYN’s office said I am anemic and should take iron supplements. I responded letting her know that I actually have an iron overload and was advised to avoid any supplements with iron. Can you confirm this is correct?\n",
+ "I have my anatomy scan at Stanford this morning and can pop into the lab for more blood test if you prefer that. Let me know. \n",
+ "\n",
+ "Thanks! \n",
+ "Brianna \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME CLINICAL:\n",
+ "Hi Brianna, \n",
+ "\n",
+ "You are correct. You have been diagnosed with compensated hemolytic anemia due to hereditary xerocytosis, and your iron levels are currently being managed through regular phlebotomies. It's essential to understand the implications of your condition and the reason for not taking iron supplements.\n",
+ "\n",
+ "Key Takeaway:\n",
+ "Do not take iron supplements. You are at risk for iron overload due to your hereditary xerocytosis, and adding more iron can worsen your condition. Focus on regular blood checks and maintain a healthy diet.\n",
+ "\n",
+ "Understanding Your Condition:\n",
+ "Hereditary Xerocytosis: This is a rare genetic condition affecting red blood cells (RBCs) that results in increased RBC destruction (hemolysis). Your specific mutation (PIEZO1) causes changes in your blood cells leading to this condition.\n",
+ "Iron Overload: Due to your hereditary xerocytosis, you are at risk for iron overload, especially since this condition causes increased RBC turnover. Your recent liver MRI has indicated significant iron overload.\n",
+ "\n",
+ "Current Treatment:\n",
+ "You are receiving phlebotomies (scheduled blood draws to reduce excess iron) to help manage your iron levels. Since starting phlebotomies in June 2023, your ferritin (a marker of iron levels) has been gradually decreasing. \n",
+ "\n",
+ "Note: since you are pregnant, we have been holding phlebotomy for the remainder of your pregnancy. It's vital to continue avoiding iron supplementation during this time and keep an open line of communication with your healthcare team regarding your health and iron management.\n",
+ "\n",
+ "Avoiding Iron Supplements:\n",
+ "Why Not Take Iron Supplements: Given your diagnosis of iron overload, taking iron supplements can exacerbate the problem. Your body already has excess iron due to the hemolytic anemia, and adding more iron can lead to further complications, including damage to your liver and other organs.\n",
+ "Monitor Your Iron Levels: Since your treatment involves phlebotomy to manage iron overload, it's crucial not to introduce additional iron into your system. Always discuss any new supplements or medications with your healthcare provider.\n",
+ "\n",
+ "Additional Nutritional Guidance:\n",
+ "While you need to avoid iron supplements, ensure that you are getting adequate nutrition, particularly folic acid, which is important for blood health. Folic acid can help support your body in producing healthy red blood cells.\n",
+ "\n",
+ "When to Seek Help:\n",
+ "If you experience symptoms such as fatigue, weakness, or any unusual symptoms, contact your healthcare provider promptly. Regular follow-up and monitoring are critical to managing your condition effectively.\n",
+ "\n",
+ "If you have any additional questions, feel free to ask!\n",
+ "\n",
+ "Thanks, \n",
+ "J Ryan, MSN, RN\n",
+ "Nurse Coordinator, Hematology\n",
+ "\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n",
+ "################################################################################################################################################################\n",
+ "[department] Score: 0.934 (CosSim: 0.834)\n",
+ "➡️ Message by Sender GO, LACRISHA [ S0203400]: Hi Dr Brar ,Happy holidays ! I just had labs drawn for the bariatric group that follows me for my vitamin intake and they suggested that I reach out to you and let you know that my iron is a bit low , my last infusion was 2/17/ 21 I believe . Should we do another infusion before it gets any worse ? Please advise? I’m feeling fine and I’m not chewing ice yet lol . Thank you \n",
+ "➡️ Provider's response to this specific message is: Hi ReginaI saw your labs but no CBC was drawn. We will need to see the CBC to discuss IV iron as well. Do you have CBC ordered by your PCP? If so please have this drawnThanksChi, RN\n",
+ "➡️ This result is from tier: department\n",
+ "➡️ -----------printing the whole thread-------------\n",
+ "Thread ID: 253687511\n",
+ "--------------------------------------------------------------------------------\n",
+ "idx: 96155\n",
+ "Subject: RE: Non-urgent Medical Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-21 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hello Chi , \n",
+ "I think Dr Brar has standing blood orders for me to check every so often can you order them or do you still want me to ask my PCP . \n",
+ "----------------------------------------\n",
+ "Provider Response by CC HEME ADMIN:\n",
+ "No response\n",
+ "----------------------------------------\n",
+ "idx: 96154\n",
+ "Subject: Non-urgent Medical Question\n",
+ "----------------------------------------\n",
+ "Date Sent: 2024-12-19 00:00:00\n",
+ "----------------------------------------\n",
+ "Sender Message:\n",
+ "Hi Dr Brar ,\n",
+ "\n",
+ "Happy holidays ! \n",
+ "I just had labs drawn for the bariatric group that follows me for my vitamin intake and they suggested that I reach out to you and let you know that my iron is a bit low , my last infusion was 2/17/ 21 I believe . \n",
+ "Should we do another infusion before it gets any worse ? Please advise? I’m feeling fine and I’m not chewing ice yet lol . \n",
+ "\n",
+ "Thank you \n",
+ "----------------------------------------\n",
+ "Provider Response by HOANG, CHI:\n",
+ "Hi Regina\n",
+ "\n",
+ "I saw your labs but no CBC was drawn. We will need to see the CBC to discuss IV iron as well. Do you have CBC ordered by your PCP? If so please have this drawn\n",
+ "\n",
+ "Thanks\n",
+ "Chi, RN\n",
+ "----------------------------------------\n",
+ "################################################################################################################################################################\n"
+ ]
+ }
+ ],
+ "source": [
+ "results = weighted_retrieval(\n",
+ " query_vector_literal=query_vector_literal,\n",
+ " receiver=receiver,\n",
+ " department=department,\n",
+ " specialty=specialty,\n",
+ " client=client,\n",
+ " top_k=100,\n",
+ " final_N=5, # Final results you want\n",
+ " sender_weight=0.2,\n",
+ " dept_weight=0.1,\n",
+ " spec_weight=0.05,\n",
+ " similarity_cutoff=0.7\n",
+ ")\n",
+ "\n",
+ "#show results\n",
+ "print(\"Query Parameters:\")\n",
+ "print(f\"query_message: {query_message}\")\n",
+ "print(f\"receiver: {receiver}\")\n",
+ "print(f\"department: {department}\")\n",
+ "print(f\"specialty: {specialty}\")\n",
+ "\n",
+ "try:\n",
+ " print(f\"\\nNumber of results: {len(results)}\")\n",
+ " \n",
+ " if len(results) > 0:\n",
+ " for row in results:\n",
+ " print(\"##\" * 80)\n",
+ " print(f\"[{row['personalization_tier']}] Score: {row['personalized_score']:.3f} (CosSim: {row['cosine_similarity']:.3f})\")\n",
+ " print(f\"➡️ Message by Sender {row['Message Sender']}: {row['Patient Message']}\")\n",
+ " print(f\"➡️ Provider's response to this specific message is: {row['Actual Response Sent to Patient']}\")\n",
+ " print(f\"➡️ This result is from tier: {row['personalization_tier']}\")\n",
+ " print(\"➡️ -----------printing the whole thread-------------\")\n",
+ " beautiful_print_thread(row[\"Thread ID\"], answer_question_paired_data_dedup)\n",
+ " print(\"##\" * 80)\n",
+ " else:\n",
+ " print(\"No results found matching the criteria\")\n",
+ "except Exception as e:\n",
+ " print(f\"Error getting results: {str(e)}\")\n"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "sage_recommender",
+ "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.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/error_analysis.ipynb b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/error_analysis.ipynb
new file mode 100644
index 00000000..6f7222a0
--- /dev/null
+++ b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/error_analysis.ipynb
@@ -0,0 +1,3182 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Libraries imported successfully!\n",
+ "Pandas version: 2.2.3\n",
+ "Matplotlib version: 3.10.1\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Import required libraries\n",
+ "import json\n",
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "from pathlib import Path\n",
+ "import glob\n",
+ "from collections import Counter\n",
+ "import warnings\n",
+ "warnings.filterwarnings('ignore')\n",
+ "\n",
+ "# Set style for better plots\n",
+ "plt.style.use('seaborn-v0_8')\n",
+ "sns.set_palette(\"husl\")\n",
+ "\n",
+ "print(\"Libraries imported successfully!\")\n",
+ "print(f\"Pandas version: {pd.__version__}\")\n",
+ "print(f\"Matplotlib version: {plt.matplotlib.__version__}\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 121,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "raw_data = pd.read_excel(\"../data/sampled_df_with_generated_questions.xlsx\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Looking for files in: /Users/wenyuanchen/Desktop/Stanford/HealthRex/CDSS_aim4/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/../error_checking/automated_outputs/evaluator_outputs\n",
+ "Directory exists: True\n",
+ "Found 100 evaluator output files\n",
+ "Sample files: ['evaluator_row_0001.json', 'evaluator_row_0056.json', 'evaluator_row_0040.json', 'evaluator_row_0017.json', 'evaluator_row_0083.json']\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Define the path to evaluator outputs\n",
+ "output_path = Path(\"../error_checking/automated_outputs/evaluator_outputs\")\n",
+ "print(f\"Looking for files in: {output_path.absolute()}\")\n",
+ "\n",
+ "# Check if directory exists\n",
+ "if not output_path.exists():\n",
+ " print(f\"ERROR: Directory {output_path} does not exist!\")\n",
+ " print(\"Please check the path and make sure the evaluator outputs are available.\")\n",
+ "else:\n",
+ " print(f\"Directory exists: {output_path.exists()}\")\n",
+ " \n",
+ " # List files in directory\n",
+ " files = list(output_path.glob(\"evaluator_row_*.json\"))\n",
+ " print(f\"Found {len(files)} evaluator output files\")\n",
+ " \n",
+ " if len(files) > 0:\n",
+ " print(f\"Sample files: {[f.name for f in files[:5]]}\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 88,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Found 100 evaluator output files\n",
+ "\n",
+ "Successfully loaded 100 records\n",
+ "Failed to load 0 files\n",
+ "\n",
+ "First few records:\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
row_number
\n",
+ "
file_path
\n",
+ "
subject
\n",
+ "
type
\n",
+ "
reasoning
\n",
+ "
clinical_accuracy_score
\n",
+ "
clinical_accuracy_reasoning
\n",
+ "
urgency_recognition_score
\n",
+ "
urgency_recognition_reasoning
\n",
+ "
professional_consultation_guidance_score
\n",
+ "
professional_consultation_guidance_reasoning
\n",
+ "
sensitivity_clarity_score
\n",
+ "
sensitivity_clarity_reasoning
\n",
+ "
num_errors
\n",
+ "
error_types
\n",
+ "
error_severities
\n",
+ "
error_descriptions
\n",
+ "
error_text_excerpts
\n",
+ "
error_in_physician_response
\n",
+ "
reason_for_error_in_physician_response
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
0000
\n",
+ "
../error_checking/automated_outputs/evaluator_...
\n",
+ "
Non-urgent Medical Question
\n",
+ "
Clinical Advice Request
\n",
+ "
The patient's message describes a clinical con...
\n",
+ "
9
\n",
+ "
The response correctly acknowledges the concer...
\n",
+ "
8
\n",
+ "
The response recognizes the 'rapid' progressio...
\n",
+ "
9
\n",
+ "
The guidance to expect a referral and to utili...
\n",
+ "
10
\n",
+ "
The response is empathetic, clear, and support...
\n",
+ "
1
\n",
+ "
[Clinical Error]
\n",
+ "
[2]
\n",
+ "
[The response does not specify the location/pr...
\n",
+ "
[Given the rapid changes you're experiencing, ...
\n",
+ "
[No]
\n",
+ "
[I've ordered this for you to be done at the H...
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
0001
\n",
+ "
../error_checking/automated_outputs/evaluator_...
\n",
+ "
Ordered Test Question
\n",
+ "
Clinical Advice Request
\n",
+ "
The patient is explicitly asking for clinical ...
\n",
+ "
7
\n",
+ "
The guidance on stopping metformin the day of ...
\n",
+ "
8
\n",
+ "
The response adequately recognizes the patient...
\n",
+ "
6
\n",
+ "
The response gives some guidance but does not ...
\n",
+ "
9
\n",
+ "
The tone is warm, clear, and supportive, with ...
\n",
+ "
1
\n",
+ "
[Clinical Error]
\n",
+ "
[3]
\n",
+ "
[Did not advise the patient to contact the off...
\n",
+ "
[You can continue taking your Ozempic as usual...
\n",
+ "
[No]
\n",
+ "
[Please contact the office at 510-521-2300 as ...
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
0002
\n",
+ "
../error_checking/automated_outputs/evaluator_...
\n",
+ "
Prescription Question
\n",
+ "
Medication Request
\n",
+ "
The patient requests prescription refills for ...
\n",
+ "
7
\n",
+ "
The LLM accurately approves omeprazole and giv...
\n",
+ "
8
\n",
+ "
No acute clinical urgency is recognized, which...
\n",
+ "
7
\n",
+ "
The response gives proper process guidance for...
\n",
+ "
9
\n",
+ "
Clear, polite, and supportive language is used...
\n",
+ "
1
\n",
+ "
[Clinical Error]
\n",
+ "
[3]
\n",
+ "
[The response assumes refills are available fo...
\n",
+ "
[Regarding the 7.5 mg buspirone, it seems you ...
\n",
+ "
[No]
\n",
+ "
[Prescription busPIRone 7.5 mg tablet was sent...
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
0003
\n",
+ "
../error_checking/automated_outputs/evaluator_...
\n",
+ "
Non-urgent Medical Question
\n",
+ "
Clinical Advice Request
\n",
+ "
The patient is requesting clinical advice on t...
\n",
+ "
6
\n",
+ "
The response suggests an in-person visit is be...
\n",
+ "
7
\n",
+ "
The response identifies the time-sensitive nat...
\n",
+ "
5
\n",
+ "
The guidance is generic and incomplete, sugges...
\n",
+ "
9
\n",
+ "
The response is warm, clear, and polite in ton...
\n",
+ "
3
\n",
+ "
[Clinical Error, Clinical Error, Non-Clinical ...
\n",
+ "
[3, 3, 2]
\n",
+ "
[Incorrectly implies that all travel vaccinati...
\n",
+ "
[For travel-related vaccinations and medicatio...
\n",
+ "
[No, No, No]
\n",
+ "
[our facility does not operate as a travel vac...
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
0004
\n",
+ "
../error_checking/automated_outputs/evaluator_...
\n",
+ "
Prescription Question
\n",
+ "
Medication Request
\n",
+ "
The patient specifically requests a renewal an...
\n",
+ "
0
\n",
+ "
The LLM-generated response is 'Unknown', which...
\n",
+ "
0
\n",
+ "
The LLM-generated response is 'Unknown', which...
\n",
+ "
0
\n",
+ "
The LLM-generated response is 'Unknown', which...
\n",
+ "
0
\n",
+ "
The LLM-generated response 'Unknown' is unempa...
\n",
+ "
1
\n",
+ "
[Non-Clinical Error]
\n",
+ "
[3]
\n",
+ "
[No response provided to the patient's request...
\n",
+ "
[Unknown]
\n",
+ "
[No]
\n",
+ "
[The physician response directly addresses the...
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " row_number file_path \\\n",
+ "0 0000 ../error_checking/automated_outputs/evaluator_... \n",
+ "1 0001 ../error_checking/automated_outputs/evaluator_... \n",
+ "2 0002 ../error_checking/automated_outputs/evaluator_... \n",
+ "3 0003 ../error_checking/automated_outputs/evaluator_... \n",
+ "4 0004 ../error_checking/automated_outputs/evaluator_... \n",
+ "\n",
+ " subject type \\\n",
+ "0 Non-urgent Medical Question Clinical Advice Request \n",
+ "1 Ordered Test Question Clinical Advice Request \n",
+ "2 Prescription Question Medication Request \n",
+ "3 Non-urgent Medical Question Clinical Advice Request \n",
+ "4 Prescription Question Medication Request \n",
+ "\n",
+ " reasoning clinical_accuracy_score \\\n",
+ "0 The patient's message describes a clinical con... 9 \n",
+ "1 The patient is explicitly asking for clinical ... 7 \n",
+ "2 The patient requests prescription refills for ... 7 \n",
+ "3 The patient is requesting clinical advice on t... 6 \n",
+ "4 The patient specifically requests a renewal an... 0 \n",
+ "\n",
+ " clinical_accuracy_reasoning \\\n",
+ "0 The response correctly acknowledges the concer... \n",
+ "1 The guidance on stopping metformin the day of ... \n",
+ "2 The LLM accurately approves omeprazole and giv... \n",
+ "3 The response suggests an in-person visit is be... \n",
+ "4 The LLM-generated response is 'Unknown', which... \n",
+ "\n",
+ " urgency_recognition_score \\\n",
+ "0 8 \n",
+ "1 8 \n",
+ "2 8 \n",
+ "3 7 \n",
+ "4 0 \n",
+ "\n",
+ " urgency_recognition_reasoning \\\n",
+ "0 The response recognizes the 'rapid' progressio... \n",
+ "1 The response adequately recognizes the patient... \n",
+ "2 No acute clinical urgency is recognized, which... \n",
+ "3 The response identifies the time-sensitive nat... \n",
+ "4 The LLM-generated response is 'Unknown', which... \n",
+ "\n",
+ " professional_consultation_guidance_score \\\n",
+ "0 9 \n",
+ "1 6 \n",
+ "2 7 \n",
+ "3 5 \n",
+ "4 0 \n",
+ "\n",
+ " professional_consultation_guidance_reasoning \\\n",
+ "0 The guidance to expect a referral and to utili... \n",
+ "1 The response gives some guidance but does not ... \n",
+ "2 The response gives proper process guidance for... \n",
+ "3 The guidance is generic and incomplete, sugges... \n",
+ "4 The LLM-generated response is 'Unknown', which... \n",
+ "\n",
+ " sensitivity_clarity_score \\\n",
+ "0 10 \n",
+ "1 9 \n",
+ "2 9 \n",
+ "3 9 \n",
+ "4 0 \n",
+ "\n",
+ " sensitivity_clarity_reasoning num_errors \\\n",
+ "0 The response is empathetic, clear, and support... 1 \n",
+ "1 The tone is warm, clear, and supportive, with ... 1 \n",
+ "2 Clear, polite, and supportive language is used... 1 \n",
+ "3 The response is warm, clear, and polite in ton... 3 \n",
+ "4 The LLM-generated response 'Unknown' is unempa... 1 \n",
+ "\n",
+ " error_types error_severities \\\n",
+ "0 [Clinical Error] [2] \n",
+ "1 [Clinical Error] [3] \n",
+ "2 [Clinical Error] [3] \n",
+ "3 [Clinical Error, Clinical Error, Non-Clinical ... [3, 3, 2] \n",
+ "4 [Non-Clinical Error] [3] \n",
+ "\n",
+ " error_descriptions \\\n",
+ "0 [The response does not specify the location/pr... \n",
+ "1 [Did not advise the patient to contact the off... \n",
+ "2 [The response assumes refills are available fo... \n",
+ "3 [Incorrectly implies that all travel vaccinati... \n",
+ "4 [No response provided to the patient's request... \n",
+ "\n",
+ " error_text_excerpts \\\n",
+ "0 [Given the rapid changes you're experiencing, ... \n",
+ "1 [You can continue taking your Ozempic as usual... \n",
+ "2 [Regarding the 7.5 mg buspirone, it seems you ... \n",
+ "3 [For travel-related vaccinations and medicatio... \n",
+ "4 [Unknown] \n",
+ "\n",
+ " error_in_physician_response \\\n",
+ "0 [No] \n",
+ "1 [No] \n",
+ "2 [No] \n",
+ "3 [No, No, No] \n",
+ "4 [No] \n",
+ "\n",
+ " reason_for_error_in_physician_response \n",
+ "0 [I've ordered this for you to be done at the H... \n",
+ "1 [Please contact the office at 510-521-2300 as ... \n",
+ "2 [Prescription busPIRone 7.5 mg tablet was sent... \n",
+ "3 [our facility does not operate as a travel vac... \n",
+ "4 [The physician response directly addresses the... "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Columns in the dataframe:\n",
+ "['row_number', 'file_path', 'subject', 'type', 'reasoning', 'clinical_accuracy_score', 'clinical_accuracy_reasoning', 'urgency_recognition_score', 'urgency_recognition_reasoning', 'professional_consultation_guidance_score', 'professional_consultation_guidance_reasoning', 'sensitivity_clarity_score', 'sensitivity_clarity_reasoning', 'num_errors', 'error_types', 'error_severities', 'error_descriptions', 'error_text_excerpts', 'error_in_physician_response', 'reason_for_error_in_physician_response']\n"
+ ]
+ }
+ ],
+ "source": [
+ "import re\n",
+ "import json\n",
+ "\n",
+ "# Load all JSON files\n",
+ "json_files = glob.glob(str(output_path / \"evaluator_row_*.json\"))\n",
+ "print(f\"Found {len(json_files)} evaluator output files\")\n",
+ "\n",
+ "# Process each file\n",
+ "data = []\n",
+ "errors_loading = []\n",
+ "\n",
+ "def fix_json_string(json_str):\n",
+ " \"\"\"Fix common JSON string issues\"\"\"\n",
+ " # Remove any trailing commas before closing braces/brackets\n",
+ " json_str = re.sub(r',(\\s*[}\\]])', r'\\1', json_str)\n",
+ " \n",
+ " # Fix unescaped quotes in reason_for_error_in_physician_response\n",
+ " # Look for the problematic field and escape quotes within it\n",
+ " pattern = r'(\"reason_for_error_in_physician_response\":\\s*\")([^\"]*(?:[^\"]*\"[^\"]*)*?)(\")'\n",
+ " \n",
+ " def escape_quotes(match):\n",
+ " prefix = match.group(1)\n",
+ " content = match.group(2)\n",
+ " suffix = match.group(3)\n",
+ " # Escape quotes in the content\n",
+ " content = content.replace('\"', '\\\\\"')\n",
+ " return prefix + content + suffix\n",
+ " \n",
+ " json_str = re.sub(pattern, escape_quotes, json_str)\n",
+ " \n",
+ " return json_str\n",
+ "\n",
+ "for file_path in sorted(json_files):\n",
+ " try:\n",
+ " with open(file_path, 'r') as f:\n",
+ " file_data = json.load(f)\n",
+ " \n",
+ " # Get the evaluator_output string\n",
+ " evaluator_output_str = file_data.get('evaluator_output', '{}')\n",
+ " \n",
+ " # Try to fix common JSON issues\n",
+ " try:\n",
+ " evaluator_output = json.loads(evaluator_output_str)\n",
+ " except json.JSONDecodeError as e:\n",
+ " print(f\"Attempting to fix JSON in {Path(file_path).name}...\")\n",
+ " # Try to fix the JSON string\n",
+ " fixed_json_str = fix_json_string(evaluator_output_str)\n",
+ " try:\n",
+ " evaluator_output = json.loads(fixed_json_str)\n",
+ " print(f\" Successfully fixed JSON in {Path(file_path).name}\")\n",
+ " except json.JSONDecodeError as e2:\n",
+ " print(f\" Failed to fix JSON in {Path(file_path).name}: {e2}\")\n",
+ " # Try a more aggressive approach - extract what we can\n",
+ " evaluator_output = {}\n",
+ " try:\n",
+ " # Try to extract basic fields using regex\n",
+ " subject_match = re.search(r'\"subject\":\\s*\"([^\"]*)\"', evaluator_output_str)\n",
+ " type_match = re.search(r'\"type\":\\s*\"([^\"]*)\"', evaluator_output_str)\n",
+ " \n",
+ " if subject_match and type_match:\n",
+ " evaluator_output = {\n",
+ " 'message_categorization': {\n",
+ " 'subject': subject_match.group(1),\n",
+ " 'type': type_match.group(1),\n",
+ " 'reasoning': ''\n",
+ " },\n",
+ " 'response_evaluation': {},\n",
+ " 'errors_identified': []\n",
+ " }\n",
+ " print(f\" Extracted basic info from {Path(file_path).name}\")\n",
+ " else:\n",
+ " raise e2\n",
+ " except:\n",
+ " print(f\" Could not extract any data from {Path(file_path).name}\")\n",
+ " errors_loading.append(f\"Failed to parse {file_path}: {e}\")\n",
+ " continue\n",
+ " \n",
+ " # Extract row number from filename\n",
+ " row_num = Path(file_path).stem.split('_')[-1]\n",
+ " \n",
+ " # Flatten the data structure\n",
+ " flat_data = {\n",
+ " 'row_number': row_num,\n",
+ " 'file_path': file_path,\n",
+ " 'subject': evaluator_output.get('message_categorization', {}).get('subject', ''),\n",
+ " 'type': evaluator_output.get('message_categorization', {}).get('type', ''),\n",
+ " 'reasoning': evaluator_output.get('message_categorization', {}).get('reasoning', ''),\n",
+ " }\n",
+ " \n",
+ " # Extract evaluation scores\n",
+ " response_eval = evaluator_output.get('response_evaluation', {})\n",
+ " for metric, details in response_eval.items():\n",
+ " if isinstance(details, dict):\n",
+ " flat_data[f'{metric}_score'] = details.get('score', '')\n",
+ " flat_data[f'{metric}_reasoning'] = details.get('reasoning', '')\n",
+ " \n",
+ " # Extract error information - ALL FIELDS\n",
+ " errors = evaluator_output.get('errors_identified', [])\n",
+ " flat_data['num_errors'] = len(errors)\n",
+ " flat_data['error_types'] = [error.get('type', '') for error in errors]\n",
+ " flat_data['error_severities'] = [error.get('severity', '') for error in errors]\n",
+ " flat_data['error_descriptions'] = [error.get('description', '') for error in errors]\n",
+ " flat_data['error_text_excerpts'] = [error.get('text_excerpt', '') for error in errors]\n",
+ " flat_data['error_in_physician_response'] = [error.get('error_in_physician_response', '') for error in errors]\n",
+ " flat_data['reason_for_error_in_physician_response'] = [error.get('reason_for_error_in_physician_response', '') for error in errors]\n",
+ " \n",
+ " data.append(flat_data)\n",
+ " \n",
+ " except Exception as e:\n",
+ " error_msg = f\"Error loading {file_path}: {e}\"\n",
+ " print(error_msg)\n",
+ " errors_loading.append(error_msg)\n",
+ "\n",
+ "# Convert to DataFrame\n",
+ "df = pd.DataFrame(data)\n",
+ "print(f\"\\nSuccessfully loaded {len(df)} records\")\n",
+ "print(f\"Failed to load {len(errors_loading)} files\")\n",
+ "\n",
+ "if len(df) > 0:\n",
+ " print(\"\\nFirst few records:\")\n",
+ " display(df.head())\n",
+ " \n",
+ " # Show the columns we have\n",
+ " print(\"\\nColumns in the dataframe:\")\n",
+ " print(df.columns.tolist())\n",
+ " \n",
+ " # Show which files had issues\n",
+ " if errors_loading:\n",
+ " print(\"\\nFiles with loading issues:\")\n",
+ " for error in errors_loading:\n",
+ " print(f\" {error}\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 99,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['row_number', 'file_path', 'subject', 'type', 'reasoning',\n",
+ " 'clinical_accuracy_score', 'clinical_accuracy_reasoning',\n",
+ " 'urgency_recognition_score', 'urgency_recognition_reasoning',\n",
+ " 'professional_consultation_guidance_score',\n",
+ " 'professional_consultation_guidance_reasoning',\n",
+ " 'sensitivity_clarity_score', 'sensitivity_clarity_reasoning',\n",
+ " 'num_errors', 'error_types', 'error_severities', 'error_descriptions',\n",
+ " 'error_text_excerpts', 'error_in_physician_response',\n",
+ " 'reason_for_error_in_physician_response'],\n",
+ " dtype='object')"
+ ]
+ },
+ "execution_count": 99,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.columns"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 101,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Data types after conversion:\n",
+ "clinical_accuracy_score int64\n",
+ "urgency_recognition_score int64\n",
+ "professional_consultation_guidance_score int64\n",
+ "sensitivity_clarity_score int64\n",
+ "num_errors int64\n",
+ "dtype: object\n",
+ "\n",
+ "Sample of converted data:\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.figure(figsize=(8,4))\n",
+ "type_avg_severity.plot(kind='bar', color='skyblue')\n",
+ "plt.ylabel(\"Average Error Severity\")\n",
+ "plt.title(\"Average Error Severity by Message Type\")\n",
+ "plt.xticks(rotation=30, ha='right')\n",
+ "plt.tight_layout()\n",
+ "plt.show()\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 5.1 Case Study"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### a. No Error"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 233,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "hi can you call in my estring prescription renewal?thanks!\n"
+ ]
+ }
+ ],
+ "source": [
+ "### a. No Error\n",
+ "raw_message_26 = raw_data.loc[26]\n",
+ "print(raw_message_26[\"Patient Message\"].replace(\"<10>\", \"\\n\"))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 234,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Hello,Your prescription has been approved and sent to the pharmacy.Take care \n"
+ ]
+ }
+ ],
+ "source": [
+ "print(raw_message_26[\"Actual Response Sent to Patient\"])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 235,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Hi Mia,<10><10>I will reorder your Estring prescription and send it to Amazon Pharmacy Home Delivery in Austin, TX. It will be available once processed by the pharmacy.<10><10>Take care!\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(raw_message_26[\"Suggested Response from LLM\"])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 269,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "row_number 0026\n",
+ "file_path ../error_checking/automated_outputs/evaluator_...\n",
+ "subject Visit Follow-up Question\n",
+ "type Medication Request\n",
+ "reasoning The patient's message is a straightforward req...\n",
+ "clinical_accuracy_score 10\n",
+ "clinical_accuracy_reasoning The response confirms the prescription renewal...\n",
+ "urgency_recognition_score 10\n",
+ "urgency_recognition_reasoning The request is not urgent. The response correc...\n",
+ "professional_consultation_guidance_score 10\n",
+ "professional_consultation_guidance_reasoning The response clearly states that the prescript...\n",
+ "sensitivity_clarity_score 10\n",
+ "sensitivity_clarity_reasoning The message is polite, clear, and uses support...\n",
+ "num_errors 0\n",
+ "error_types []\n",
+ "error_severities []\n",
+ "error_descriptions []\n",
+ "error_text_excerpts []\n",
+ "error_in_physician_response []\n",
+ "reason_for_error_in_physician_response []\n",
+ "has_error False\n",
+ "avg_error_severity 0.0\n",
+ "has_LLM_response True\n",
+ "shared_error False\n",
+ "Name: 26, dtype: object"
+ ]
+ },
+ "execution_count": 269,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "with_LLM_response_df.loc[26]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### b. High scoring with a minor error"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 220,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "I received a text message from Lilly Direct about the prescription placed yesterday and this is what it said:The prescription we received from your physician cannot yet be processed due to invalid or missing information. We have notified your physician of the issues and what information to correct. We will contact you as soon as we receive an updated prescription. You may also reach out to your physician directly. Here are the reasons for the rejection:- The prescribed medication or form is invalid\n"
+ ]
+ }
+ ],
+ "source": [
+ "raw_message_57 = raw_data.loc[57]\n",
+ "print(raw_message_57[\"Patient Message\"].replace(\"<10>\", \"\\n\"))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 224,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Hello Morgan S Stacey,My name is Stephanie , MA and I work closely with your primary care provider as a medical assistant. Thank you. We did receive the form and have Dr.Khuddus review it. Thank you for your time,Stephanie Hernandez , MA Please note: It may take up to 48 hours to respond to your myhealth message. If you have any urgent concerns, please call. Calls/Messages sent after 5pm will not be addressed until the following business day. Office Hours: Monday - Friday 8:00am - 5:00pm. Saturday/Sunday: CLOSED\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(raw_message[\"Actual Response Sent to Patient\"])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 225,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Thank you for letting me know, Morgan. I will review the prescription details and correct any issues. Once updated, the prescription will be resent to Lilly Direct. I appreciate your patience.\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(raw_message[\"Suggested Response from LLM\"])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 226,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sample_57 = with_LLM_response_df[with_LLM_response_df[\"avg_error_severity\"] < 2].loc[57]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 229,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "row_number 0057\n",
+ "file_path ../error_checking/automated_outputs/evaluator_...\n",
+ "subject Prescription Question\n",
+ "type Medication Request\n",
+ "reasoning The patient is inquiring about an issue with a...\n",
+ "clinical_accuracy_score 9\n",
+ "clinical_accuracy_reasoning The LLM response appropriately acknowledges th...\n",
+ "urgency_recognition_score 7\n",
+ "urgency_recognition_reasoning The response recognizes that a correction is n...\n",
+ "professional_consultation_guidance_score 7\n",
+ "professional_consultation_guidance_reasoning Instructions are generally appropriate—provide...\n",
+ "sensitivity_clarity_score 10\n",
+ "sensitivity_clarity_reasoning The tone is polite, clear, and appreciative of...\n",
+ "num_errors 2\n",
+ "error_types [Non-Clinical Error, Non-Clinical Error]\n",
+ "error_severities [2, 1]\n",
+ "error_descriptions [Lack of timeframe or instructions for urgent ...\n",
+ "error_text_excerpts [Once updated, the prescription will be resent...\n",
+ "error_in_physician_response [No, Yes]\n",
+ "reason_for_error_in_physician_response [The physician response includes expected resp...\n",
+ "has_error True\n",
+ "avg_error_severity 1.5\n",
+ "has_LLM_response True\n",
+ "shared_error True\n",
+ "Name: 57, dtype: object"
+ ]
+ },
+ "execution_count": 229,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sample_57"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 231,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['Lack of timeframe or instructions for urgent needs. The response does not specify how long the correction will take, or what to do if the patient needs the medication urgently.',\n",
+ " 'Does not restate medication name or specific issue as reported by patient, which could lead to minor confusion.']"
+ ]
+ },
+ "execution_count": 231,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sample_57[\"error_descriptions\"] # i think second question might make sense"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### c. Md scoring with a moderate error"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 237,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sample_63 = with_LLM_response_df[with_LLM_response_df[\"avg_error_severity\"] ==3].loc[63]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 239,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Hi Zhi: Since my appointment two weeks ago I went off the amlodipine to see my BP levels unmedicated. The last date I took the amlodipine 10 mg was 11/20, and since then I've taken my BP right after I wake up and then again in the afternoon or evening. In the two weeks my BP is typically ~135/88. A few times the systolic was above 140 (but not above 145), and would typically be under that threshold when I took it again a minute later. More commonly the diastolic was the one out of the desired range (but not above 93) but that too would come down. Do you think I still need medication and should start the Micardis you prescribed?\n",
+ "Hi Haley,Thanks for the update. It sounds like your blood pressures are at the borderline level between lifestyle modification or medication. There is a debate of blood pressure goal of <140/90 for in-office readings or <135/85 for at home readings. It would be based off your preference at this point and we can revisit annually.It's interesting that you were on such a high dose of amlodipine without much blood pressure change. If you'd like to be on a blood pressure medicine for the kidney protective aspect, after seeing your readings off medication, a lower dose of telmisartan 20 mg or lisinopril 5 mg may be more appropriate.Best,Zhi-Fang Tsun, PA-CPhysician AssistantStanford Primary Care Portola Valley\n",
+ "Hi Haley,<10><10>Thank you for providing your blood pressure readings. Based on the values you mentioned, it seems that your blood pressure is still slightly elevated without medication. Given your history of hypertension and the readings you've shared, I would recommend starting the Micardis (telmisartan) as prescribed to help manage your blood pressure effectively.<10><10>Please continue to monitor your blood pressure regularly and let me know if you experience any side effects or have any concerns.<10><10>Best regards,\n"
+ ]
+ }
+ ],
+ "source": [
+ "raw_message_63 = raw_data.loc[63]\n",
+ "print(raw_message_63[\"Patient Message\"].replace(\"<10>\", \"\\n\"))\n",
+ "print(raw_message_63[\"Actual Response Sent to Patient\"])\n",
+ "print(raw_message_63[\"Suggested Response from LLM\"])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 241,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "row_number 0063\n",
+ "file_path ../error_checking/automated_outputs/evaluator_...\n",
+ "subject Visit Follow-up Question\n",
+ "type Clinical Advice Request\n",
+ "reasoning The patient is requesting advice regarding whe...\n",
+ "clinical_accuracy_score 6\n",
+ "clinical_accuracy_reasoning The response correctly notes that BP is elevat...\n",
+ "urgency_recognition_score 8\n",
+ "urgency_recognition_reasoning The reply appropriately does not suggest urgen...\n",
+ "professional_consultation_guidance_score 6\n",
+ "professional_consultation_guidance_reasoning While the guidance to continue monitoring BP a...\n",
+ "sensitivity_clarity_score 8\n",
+ "sensitivity_clarity_reasoning The response is polite, clear, and supportive ...\n",
+ "num_errors 1\n",
+ "error_types [Clinical Error]\n",
+ "error_severities [3]\n",
+ "error_descriptions [Omission of shared decision-making and nuance...\n",
+ "error_text_excerpts [Based on the values you mentioned, it seems t...\n",
+ "error_in_physician_response [No]\n",
+ "reason_for_error_in_physician_response [It would be based off your preference at this...\n",
+ "has_error True\n",
+ "avg_error_severity 3.0\n",
+ "has_LLM_response True\n",
+ "shared_error False\n",
+ "Name: 63, dtype: object"
+ ]
+ },
+ "execution_count": 241,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sample_63"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 242,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\"The response correctly notes that BP is elevated and recommends starting telmisartan as prescribed, which is reasonable given the patient's history and readings. However, it oversimplifies management, omitting shared decision-making regarding medication initiation, discussion of BP goals, the appropriateness of dose, or consideration of lifestyle management versus immediate medication restart. It does not comment on possible dose adjustment despite readings being borderline, nor on the potential renal-protective rationale. Thus, it's somewhat incomplete.\""
+ ]
+ },
+ "execution_count": 242,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sample_63[\"clinical_accuracy_reasoning\"]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### d. Low-scoring with severe error"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 244,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Hi Dr. Tim, I hope you are doing well. I received a text message from Quest that said “Your healthcare provider ordered your testing.” Is this true. My next appointment with you is June 3, 2025. Kind regards,Diana Kay\n",
+ "Hello Diana, this is Julia Fellows PA-C responding to your message on behalf of your primary care provider. I am helping Dr. Tim with her messages today.I see that Dr. Dolezol may have sent some orders to Quest yesterday, but then changed it to the Emeryville lab. That is probably why you got a notification from Quest. I do not see anything ordered by Dr. Tim at this time. No need for you to do anything on your end!Julia Fellows \n",
+ "Hi Diana,<10><10>Yes, that is correct. I have ordered your blood work to be done at Quest Lab in 6 months. Please make sure to fast for at least 8-10 hours prior to your appointment (water is okay). <10><10>If you have any other questions or concerns, feel free to reach out.<10><10>Kind regards,\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "['Incorrectly confirms that a blood work order at Quest in 6 months is active; encourages unnecessary fasting and gives misleading instructions when the order may not exist or may be set for a different lab.']"
+ ]
+ },
+ "execution_count": 244,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "raw_message_30 = raw_data.loc[30]\n",
+ "print(raw_message_30[\"Patient Message\"].replace(\"<10>\", \"\\n\"))\n",
+ "print(raw_message_30[\"Actual Response Sent to Patient\"])\n",
+ "print(raw_message_30[\"Suggested Response from LLM\"])\n",
+ "sample_30 = with_LLM_response_df[with_LLM_response_df[\"avg_error_severity\"] > 3].loc[30]\n",
+ "sample_30\n",
+ "sample_30[\"error_descriptions\"]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 243,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
row_number
\n",
+ "
file_path
\n",
+ "
subject
\n",
+ "
type
\n",
+ "
reasoning
\n",
+ "
clinical_accuracy_score
\n",
+ "
clinical_accuracy_reasoning
\n",
+ "
urgency_recognition_score
\n",
+ "
urgency_recognition_reasoning
\n",
+ "
professional_consultation_guidance_score
\n",
+ "
...
\n",
+ "
error_types
\n",
+ "
error_severities
\n",
+ "
error_descriptions
\n",
+ "
error_text_excerpts
\n",
+ "
error_in_physician_response
\n",
+ "
reason_for_error_in_physician_response
\n",
+ "
has_error
\n",
+ "
avg_error_severity
\n",
+ "
has_LLM_response
\n",
+ "
shared_error
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
8
\n",
+ "
0008
\n",
+ "
../error_checking/automated_outputs/evaluator_...
\n",
+ "
Prescription Question
\n",
+ "
Medication Request
\n",
+ "
The patient's message is primarily a request f...
\n",
+ "
4
\n",
+ "
The LLM-generated response agrees to prescribe...
\n",
+ "
5
\n",
+ "
The response acknowledges flu symptoms and kno...
\n",
+ "
3
\n",
+ "
...
\n",
+ "
[Clinical Error, Clinical Error]
\n",
+ "
[4, 3]
\n",
+ "
[Tamiflu was prescribed without prior clinical...
\n",
+ "
[I will send the prescription to the CVS pharm...
\n",
+ "
[Yes, Yes]
\n",
+ "
[Given that your wife has been diagnosed with ...
\n",
+ "
True
\n",
+ "
3.5
\n",
+ "
True
\n",
+ "
True
\n",
+ "
\n",
+ "
\n",
+ "
29
\n",
+ "
0029
\n",
+ "
../error_checking/automated_outputs/evaluator_...
\n",
+ "
Non-urgent Medical Question
\n",
+ "
Referral Request
\n",
+ "
The patient's message explicitly requests a re...
\n",
+ "
0
\n",
+ "
The LLM-generated response does not address th...
\n",
+ "
0
\n",
+ "
The response fails to recognize or address the...
\n",
+ "
0
\n",
+ "
...
\n",
+ "
[Clinical Error]
\n",
+ "
[4]
\n",
+ "
[Omission of response to the patient's direct ...
\n",
+ "
[You're welcome, Kashifa! If you have any furt...
\n",
+ "
[No]
\n",
+ "
[Hi Kashifa,Thank you for reaching out. Sex th...
\n",
+ "
True
\n",
+ "
4.0
\n",
+ "
True
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
30
\n",
+ "
0030
\n",
+ "
../error_checking/automated_outputs/evaluator_...
\n",
+ "
Ordered Test Question
\n",
+ "
Test Result Inquiry
\n",
+ "
The patient's message asks whether a test orde...
\n",
+ "
2
\n",
+ "
The LLM response incorrectly affirms that a bl...
\n",
+ "
5
\n",
+ "
The response treats the inquiry as routine and...
\n",
+ "
3
\n",
+ "
...
\n",
+ "
[Clinical Error]
\n",
+ "
[4]
\n",
+ "
[Incorrectly confirms that a blood work order ...
\n",
+ "
[Yes, that is correct. I have ordered your blo...
\n",
+ "
[No]
\n",
+ "
[I do not see anything ordered by Dr. Tim at t...
\n",
+ "
True
\n",
+ "
4.0
\n",
+ "
True
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
34
\n",
+ "
0034
\n",
+ "
../error_checking/automated_outputs/evaluator_...
\n",
+ "
Update Health Information
\n",
+ "
Clinical Advice Request
\n",
+ "
The patient is asking if her prior cardiac Hol...
\n",
+ "
1
\n",
+ "
The response does not address any of the patie...
\n",
+ "
0
\n",
+ "
Potentially urgent concerns about cardiovascul...
\n",
+ "
2
\n",
+ "
...
\n",
+ "
[Clinical Error, Non-Clinical Error]
\n",
+ "
[4, 3]
\n",
+ "
[Completely fails to address the patient's cli...
\n",
+ "
[Thank you for letting me know. Please feel fr...
\n",
+ "
[No, No]
\n",
+ "
[The physician response proactively arranges a...
\n",
+ "
True
\n",
+ "
3.5
\n",
+ "
True
\n",
+ "
False
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
4 rows × 24 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " row_number file_path \\\n",
+ "8 0008 ../error_checking/automated_outputs/evaluator_... \n",
+ "29 0029 ../error_checking/automated_outputs/evaluator_... \n",
+ "30 0030 ../error_checking/automated_outputs/evaluator_... \n",
+ "34 0034 ../error_checking/automated_outputs/evaluator_... \n",
+ "\n",
+ " subject type \\\n",
+ "8 Prescription Question Medication Request \n",
+ "29 Non-urgent Medical Question Referral Request \n",
+ "30 Ordered Test Question Test Result Inquiry \n",
+ "34 Update Health Information Clinical Advice Request \n",
+ "\n",
+ " reasoning \\\n",
+ "8 The patient's message is primarily a request f... \n",
+ "29 The patient's message explicitly requests a re... \n",
+ "30 The patient's message asks whether a test orde... \n",
+ "34 The patient is asking if her prior cardiac Hol... \n",
+ "\n",
+ " clinical_accuracy_score \\\n",
+ "8 4 \n",
+ "29 0 \n",
+ "30 2 \n",
+ "34 1 \n",
+ "\n",
+ " clinical_accuracy_reasoning \\\n",
+ "8 The LLM-generated response agrees to prescribe... \n",
+ "29 The LLM-generated response does not address th... \n",
+ "30 The LLM response incorrectly affirms that a bl... \n",
+ "34 The response does not address any of the patie... \n",
+ "\n",
+ " urgency_recognition_score \\\n",
+ "8 5 \n",
+ "29 0 \n",
+ "30 5 \n",
+ "34 0 \n",
+ "\n",
+ " urgency_recognition_reasoning \\\n",
+ "8 The response acknowledges flu symptoms and kno... \n",
+ "29 The response fails to recognize or address the... \n",
+ "30 The response treats the inquiry as routine and... \n",
+ "34 Potentially urgent concerns about cardiovascul... \n",
+ "\n",
+ " professional_consultation_guidance_score ... \\\n",
+ "8 3 ... \n",
+ "29 0 ... \n",
+ "30 3 ... \n",
+ "34 2 ... \n",
+ "\n",
+ " error_types error_severities \\\n",
+ "8 [Clinical Error, Clinical Error] [4, 3] \n",
+ "29 [Clinical Error] [4] \n",
+ "30 [Clinical Error] [4] \n",
+ "34 [Clinical Error, Non-Clinical Error] [4, 3] \n",
+ "\n",
+ " error_descriptions \\\n",
+ "8 [Tamiflu was prescribed without prior clinical... \n",
+ "29 [Omission of response to the patient's direct ... \n",
+ "30 [Incorrectly confirms that a blood work order ... \n",
+ "34 [Completely fails to address the patient's cli... \n",
+ "\n",
+ " error_text_excerpts \\\n",
+ "8 [I will send the prescription to the CVS pharm... \n",
+ "29 [You're welcome, Kashifa! If you have any furt... \n",
+ "30 [Yes, that is correct. I have ordered your blo... \n",
+ "34 [Thank you for letting me know. Please feel fr... \n",
+ "\n",
+ " error_in_physician_response \\\n",
+ "8 [Yes, Yes] \n",
+ "29 [No] \n",
+ "30 [No] \n",
+ "34 [No, No] \n",
+ "\n",
+ " reason_for_error_in_physician_response has_error \\\n",
+ "8 [Given that your wife has been diagnosed with ... True \n",
+ "29 [Hi Kashifa,Thank you for reaching out. Sex th... True \n",
+ "30 [I do not see anything ordered by Dr. Tim at t... True \n",
+ "34 [The physician response proactively arranges a... True \n",
+ "\n",
+ " avg_error_severity has_LLM_response shared_error \n",
+ "8 3.5 True True \n",
+ "29 4.0 True False \n",
+ "30 4.0 True False \n",
+ "34 3.5 True False \n",
+ "\n",
+ "[4 rows x 24 columns]"
+ ]
+ },
+ "execution_count": 243,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "with_LLM_response_df[with_LLM_response_df[\"avg_error_severity\"] > 3]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### e. shared errors"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 249,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Hello Doctor, I am having flu like symptoms. My wife diagnosed with Influenza A. And she is taking Tamiflu. So wondering if it is possible to prescribe it for me on the CVS pharmacy on the file. Please let me know.Thanks,Keshav \n",
+ "Hello Keshav,I'm sorry to hear that you are experiencing flu-like symptoms. Given that your wife has been diagnosed with Influenza A and you are showing similar symptoms, it would be reasonable to start Tamiflu. I will send the prescription to the CVS pharmacy on file for you.If your symptoms worsen or you have any concerns, please don't hesitate to reach out or schedule an appointment through the Stanford MyHealth app.Take care and feel better soon.Jesse Amanda Rokicki Parashar, MD\n",
+ "Hello Keshav,<10><10>I'm sorry to hear that you are experiencing flu-like symptoms. Given that your wife has been diagnosed with Influenza A and you are showing similar symptoms, it would be reasonable to start Tamiflu. I will send the prescription to the CVS pharmacy on file for you.<10><10>If your symptoms worsen or you have any concerns, please don't hesitate to reach out or schedule an appointment through the Stanford MyHealth app.<10><10>Take care and feel better soon.\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "['Tamiflu was prescribed without prior clinical assessment or confirmation of timing of symptom onset, contrary to standard practice and safety protocol.',\n",
+ " 'The response does not include appropriate safety netting for severe symptoms (e.g., chest pain, difficulty breathing, high fever, or inability to keep down fluids), potentially delaying recognition of serious illness.']"
+ ]
+ },
+ "execution_count": 249,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "raw_message_8 = raw_data.loc[8]\n",
+ "print(raw_message_8[\"Patient Message\"].replace(\"<10>\", \"\\n\"))\n",
+ "print(raw_message_8[\"Actual Response Sent to Patient\"])\n",
+ "print(raw_message_8[\"Suggested Response from LLM\"])\n",
+ "sample_8 = shared_errors_df[shared_errors_df[\"avg_error_severity\"] > 3].loc[8]\n",
+ "sample_8[\"error_descriptions\"]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 270,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "row_number 0008\n",
+ "file_path ../error_checking/automated_outputs/evaluator_...\n",
+ "subject Prescription Question\n",
+ "type Medication Request\n",
+ "reasoning The patient's message is primarily a request f...\n",
+ "clinical_accuracy_score 4\n",
+ "clinical_accuracy_reasoning The LLM-generated response agrees to prescribe...\n",
+ "urgency_recognition_score 5\n",
+ "urgency_recognition_reasoning The response acknowledges flu symptoms and kno...\n",
+ "professional_consultation_guidance_score 3\n",
+ "professional_consultation_guidance_reasoning The response does not direct the patient to sc...\n",
+ "sensitivity_clarity_score 9\n",
+ "sensitivity_clarity_reasoning The response is empathetic, clear, and support...\n",
+ "num_errors 2\n",
+ "error_types [Clinical Error, Clinical Error]\n",
+ "error_severities [4, 3]\n",
+ "error_descriptions [Tamiflu was prescribed without prior clinical...\n",
+ "error_text_excerpts [I will send the prescription to the CVS pharm...\n",
+ "error_in_physician_response [Yes, Yes]\n",
+ "reason_for_error_in_physician_response [Given that your wife has been diagnosed with ...\n",
+ "has_error True\n",
+ "avg_error_severity 3.5\n",
+ "has_LLM_response True\n",
+ "shared_error True\n",
+ "Name: 8, dtype: object"
+ ]
+ },
+ "execution_count": 270,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "shared_errors_df.loc[8]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 260,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
row_number
\n",
+ "
file_path
\n",
+ "
subject
\n",
+ "
type
\n",
+ "
reasoning
\n",
+ "
clinical_accuracy_score
\n",
+ "
clinical_accuracy_reasoning
\n",
+ "
urgency_recognition_score
\n",
+ "
urgency_recognition_reasoning
\n",
+ "
professional_consultation_guidance_score
\n",
+ "
...
\n",
+ "
error_types
\n",
+ "
error_severities
\n",
+ "
error_descriptions
\n",
+ "
error_text_excerpts
\n",
+ "
error_in_physician_response
\n",
+ "
reason_for_error_in_physician_response
\n",
+ "
has_error
\n",
+ "
avg_error_severity
\n",
+ "
has_LLM_response
\n",
+ "
shared_error
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
20
\n",
+ "
0020
\n",
+ "
../error_checking/automated_outputs/evaluator_...
\n",
+ "
Prescription Question
\n",
+ "
Medication Request
\n",
+ "
The patient is asking about adjustment of her ...
\n",
+ "
6
\n",
+ "
The response appropriately assesses the patien...
\n",
+ "
10
\n",
+ "
The LLM recognizes that the patient is current...
\n",
+ "
7
\n",
+ "
...
\n",
+ "
[Clinical Error]
\n",
+ "
[3]
\n",
+ "
[Prescribing hydroxyzine as a safety medicatio...
\n",
+ "
[Regarding the hydroxyzine tablet, I will pres...
\n",
+ "
[Yes]
\n",
+ "
[At this time, I am not able to prescribe hydr...
\n",
+ "
True
\n",
+ "
3.0
\n",
+ "
True
\n",
+ "
True
\n",
+ "
\n",
+ "
\n",
+ "
25
\n",
+ "
0025
\n",
+ "
../error_checking/automated_outputs/evaluator_...
\n",
+ "
Visit Follow-up Question
\n",
+ "
Administrative Request
\n",
+ "
The patient is requesting support in having a ...
\n",
+ "
7
\n",
+ "
The LLM response offers to facilitate the re-s...
\n",
+ "
10
\n",
+ "
The LLM correctly treats this as a non-urgent,...
\n",
+ "
7
\n",
+ "
...
\n",
+ "
[Non-Clinical Error]
\n",
+ "
[3]
\n",
+ "
[Incorrectly states the provider's office can ...
\n",
+ "
[I will contact Dr. Sun’s office to have the q...
\n",
+ "
[Yes]
\n",
+ "
[Unfortunately, we do not handle any pre scree...
\n",
+ "
True
\n",
+ "
3.0
\n",
+ "
True
\n",
+ "
True
\n",
+ "
\n",
+ "
\n",
+ "
51
\n",
+ "
0051
\n",
+ "
../error_checking/automated_outputs/evaluator_...
\n",
+ "
Non-urgent Medical Question
\n",
+ "
Appointment Request
\n",
+ "
The message is from a guardian requesting avai...
\n",
+ "
10
\n",
+ "
The response gives accurate instructions on ho...
\n",
+ "
10
\n",
+ "
The message is handled appropriately as a rout...
\n",
+ "
8
\n",
+ "
...
\n",
+ "
[Non-Clinical Error]
\n",
+ "
[3]
\n",
+ "
[Omission of tailored appointment guidance and...
\n",
+ "
[please use the Stanford MyHealth app to view ...
\n",
+ "
[Yes]
\n",
+ "
[Are you available for a visit on a Friday aft...
\n",
+ "
True
\n",
+ "
3.0
\n",
+ "
True
\n",
+ "
True
\n",
+ "
\n",
+ "
\n",
+ "
66
\n",
+ "
0066
\n",
+ "
../error_checking/automated_outputs/evaluator_...
\n",
+ "
Prescription Question
\n",
+ "
Medication Request
\n",
+ "
The patient's message is specifically requesti...
\n",
+ "
10
\n",
+ "
The LLM's response accurately confirms the req...
\n",
+ "
6
\n",
+ "
The response completes the requested action bu...
\n",
+ "
7
\n",
+ "
...
\n",
+ "
[Non-Clinical Error]
\n",
+ "
[3]
\n",
+ "
[Omission of information about what to do if t...
\n",
+ "
[It should be available once processed by the ...
\n",
+ "
[Yes]
\n",
+ "
[Reminder:For urgent issues, call 650-498-9000...
\n",
+ "
True
\n",
+ "
3.0
\n",
+ "
True
\n",
+ "
True
\n",
+ "
\n",
+ "
\n",
+ "
72
\n",
+ "
0072
\n",
+ "
../error_checking/automated_outputs/evaluator_...
\n",
+ "
Prescription Question
\n",
+ "
Medication Request
\n",
+ "
The patient's message is about being out of Am...
\n",
+ "
10
\n",
+ "
The response correctly addresses the medicatio...
\n",
+ "
7
\n",
+ "
The response addresses the issue efficiently a...
\n",
+ "
7
\n",
+ "
...
\n",
+ "
[Clinical Error]
\n",
+ "
[3]
\n",
+ "
[Does not acknowledge potential clinical conce...
\n",
+ "
[I will reorder the medication for you and sen...
\n",
+ "
[Yes]
\n",
+ "
[The actual physician response also does not e...
\n",
+ "
True
\n",
+ "
3.0
\n",
+ "
True
\n",
+ "
True
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 24 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " row_number file_path \\\n",
+ "20 0020 ../error_checking/automated_outputs/evaluator_... \n",
+ "25 0025 ../error_checking/automated_outputs/evaluator_... \n",
+ "51 0051 ../error_checking/automated_outputs/evaluator_... \n",
+ "66 0066 ../error_checking/automated_outputs/evaluator_... \n",
+ "72 0072 ../error_checking/automated_outputs/evaluator_... \n",
+ "\n",
+ " subject type \\\n",
+ "20 Prescription Question Medication Request \n",
+ "25 Visit Follow-up Question Administrative Request \n",
+ "51 Non-urgent Medical Question Appointment Request \n",
+ "66 Prescription Question Medication Request \n",
+ "72 Prescription Question Medication Request \n",
+ "\n",
+ " reasoning \\\n",
+ "20 The patient is asking about adjustment of her ... \n",
+ "25 The patient is requesting support in having a ... \n",
+ "51 The message is from a guardian requesting avai... \n",
+ "66 The patient's message is specifically requesti... \n",
+ "72 The patient's message is about being out of Am... \n",
+ "\n",
+ " clinical_accuracy_score \\\n",
+ "20 6 \n",
+ "25 7 \n",
+ "51 10 \n",
+ "66 10 \n",
+ "72 10 \n",
+ "\n",
+ " clinical_accuracy_reasoning \\\n",
+ "20 The response appropriately assesses the patien... \n",
+ "25 The LLM response offers to facilitate the re-s... \n",
+ "51 The response gives accurate instructions on ho... \n",
+ "66 The LLM's response accurately confirms the req... \n",
+ "72 The response correctly addresses the medicatio... \n",
+ "\n",
+ " urgency_recognition_score \\\n",
+ "20 10 \n",
+ "25 10 \n",
+ "51 10 \n",
+ "66 6 \n",
+ "72 7 \n",
+ "\n",
+ " urgency_recognition_reasoning \\\n",
+ "20 The LLM recognizes that the patient is current... \n",
+ "25 The LLM correctly treats this as a non-urgent,... \n",
+ "51 The message is handled appropriately as a rout... \n",
+ "66 The response completes the requested action bu... \n",
+ "72 The response addresses the issue efficiently a... \n",
+ "\n",
+ " professional_consultation_guidance_score ... error_types \\\n",
+ "20 7 ... [Clinical Error] \n",
+ "25 7 ... [Non-Clinical Error] \n",
+ "51 8 ... [Non-Clinical Error] \n",
+ "66 7 ... [Non-Clinical Error] \n",
+ "72 7 ... [Clinical Error] \n",
+ "\n",
+ " error_severities error_descriptions \\\n",
+ "20 [3] [Prescribing hydroxyzine as a safety medicatio... \n",
+ "25 [3] [Incorrectly states the provider's office can ... \n",
+ "51 [3] [Omission of tailored appointment guidance and... \n",
+ "66 [3] [Omission of information about what to do if t... \n",
+ "72 [3] [Does not acknowledge potential clinical conce... \n",
+ "\n",
+ " error_text_excerpts \\\n",
+ "20 [Regarding the hydroxyzine tablet, I will pres... \n",
+ "25 [I will contact Dr. Sun’s office to have the q... \n",
+ "51 [please use the Stanford MyHealth app to view ... \n",
+ "66 [It should be available once processed by the ... \n",
+ "72 [I will reorder the medication for you and sen... \n",
+ "\n",
+ " error_in_physician_response \\\n",
+ "20 [Yes] \n",
+ "25 [Yes] \n",
+ "51 [Yes] \n",
+ "66 [Yes] \n",
+ "72 [Yes] \n",
+ "\n",
+ " reason_for_error_in_physician_response has_error \\\n",
+ "20 [At this time, I am not able to prescribe hydr... True \n",
+ "25 [Unfortunately, we do not handle any pre scree... True \n",
+ "51 [Are you available for a visit on a Friday aft... True \n",
+ "66 [Reminder:For urgent issues, call 650-498-9000... True \n",
+ "72 [The actual physician response also does not e... True \n",
+ "\n",
+ " avg_error_severity has_LLM_response shared_error \n",
+ "20 3.0 True True \n",
+ "25 3.0 True True \n",
+ "51 3.0 True True \n",
+ "66 3.0 True True \n",
+ "72 3.0 True True \n",
+ "\n",
+ "[5 rows x 24 columns]"
+ ]
+ },
+ "execution_count": 260,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "shared_errors_df[shared_errors_df[\"avg_error_severity\"] == 3]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 264,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Good morning, Dr. Baule,Hope you had a nice Thanksgiving. At our last appointment, we discussed scheduling a colonoscopy. I received a questionnaire, from Dr. Sun’s office, however, it expired and I’m unable to complete the pre screening process. Can the questionnaire, be resent. Thank you,Marco \n",
+ "Hi Marco,Unfortunately, we do not handle any pre screening questionnaires that are sent by Dr. Sun's office. Please give them a call in regards to the questionnaire, if they are able to resend it or maybe do it over the phone with you. Let us know. Thank you.Best,Family Medicine Samaritan Los GatosPlease note: It may take up to 48 hours to respond to your myhealth message. If you have any urgent concerns, please call. Calls/Messages sent after 5pm will not be addressed until the following business day. Office Hours: Monday - Friday 8:00am - 5:00pm. Saturday/Sunday: CLOSED\n",
+ "Good morning, Marco,<10><10>I hope you had a nice Thanksgiving as well.<10><10>I will contact Dr. Sun’s office to have the questionnaire resent to you. You should receive it shortly. If you encounter any further issues, please let me know.<10><10>Best regards,\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "[\"Incorrectly states the provider's office can contact Dr. Sun's office and have the questionnaire resent, which does not align with actual office workflow.\"]"
+ ]
+ },
+ "execution_count": 264,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "shared_errors_df[shared_errors_df[\"avg_error_severity\"] == 3].loc[25]\n",
+ "raw_message_25 = raw_data.loc[25]\n",
+ "print(raw_message_25[\"Patient Message\"].replace(\"<10>\", \"\\n\"))\n",
+ "print(raw_message_25[\"Actual Response Sent to Patient\"])\n",
+ "print(raw_message_25[\"Suggested Response from LLM\"])\n",
+ "sample_25 = shared_errors_df[shared_errors_df[\"avg_error_severity\"] == 3].loc[25]\n",
+ "sample_25[\"error_descriptions\"]"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "sage_recommender",
+ "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.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/evaluator_analysis_notebook.ipynb b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/evaluator_analysis_notebook.ipynb
new file mode 100644
index 00000000..0519ecba
--- /dev/null
+++ b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/evaluator_analysis_notebook.ipynb
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/example_config_usage.py b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/example_config_usage.py
new file mode 100644
index 00000000..85867c4d
--- /dev/null
+++ b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/example_config_usage.py
@@ -0,0 +1,213 @@
+#!/usr/bin/env python3
+"""
+Example script showing how to use config.py with the automated error checking system.
+
+This demonstrates different ways to use the configuration system.
+"""
+
+from automated_error_checking import AutomatedErrorChecker
+import config
+
+def example_1_basic_usage():
+ """Example 1: Use all default config values"""
+ print("=== Example 1: Basic Usage (All Defaults) ===")
+
+ try:
+ # This uses all values from config.py automatically
+ processor = AutomatedErrorChecker()
+ print(f"Using Excel file: {processor.excel_path}")
+ print(f"Output directory: {processor.output_dir}")
+ print(f"Model: {config.MODEL}")
+ print(f"Delay: {config.DELAY_BETWEEN_CALLS}s")
+ print("✅ Successfully initialized AutomatedErrorChecker")
+ except ValueError as e:
+ if "HEALTHREX_API_KEY" in str(e):
+ print("⚠️ API Key not set - this is expected for demonstration")
+ print(" To run actual processing, create a .env file with:")
+ print(" HEALTHREX_API_KEY=your_api_key_here")
+ print(" Install python-dotenv if not already installed: pip install python-dotenv")
+ else:
+ print(f"❌ Error: {e}")
+ except Exception as e:
+ print(f"❌ Unexpected error: {e}")
+ print()
+
+def example_2_override_some_config():
+ """Example 2: Override some config values"""
+ print("=== Example 2: Override Some Config Values ===")
+
+ try:
+ # Override some values while keeping others from config
+ processor = AutomatedErrorChecker(
+ excel_path="../data/sampled_df_with_generated_questions.xlsx",
+ output_dir="../custom_outputs"
+ )
+
+ print(f"✅ Successfully created processor with custom paths")
+ print(f" Excel: {processor.excel_path}")
+ print(f" Output: {processor.output_dir}")
+
+ # Note: We don't actually call process_all_data here to avoid API calls
+ print(" (Skipping actual processing to avoid API calls)")
+
+ except ValueError as e:
+ if "HEALTHREX_API_KEY" in str(e):
+ print("⚠️ API Key not set - this is expected for demonstration")
+ print(" To run actual processing, create a .env file with:")
+ print(" HEALTHREX_API_KEY=your_api_key_here")
+ print(" Install python-dotenv if not already installed: pip install python-dotenv")
+ else:
+ print(f"❌ Error: {e}")
+ except Exception as e:
+ print(f"❌ Unexpected error: {e}")
+ print()
+
+def example_3_modify_config_programmatically():
+ """Example 3: Modify config values programmatically"""
+ print("=== Example 3: Modify Config Programmatically ===")
+
+ try:
+ # Temporarily modify config values
+ original_model = config.MODEL
+ original_delay = config.DELAY_BETWEEN_CALLS
+
+ # Change config for this run
+ config.MODEL = "gemini-2.5-pro"
+ config.DELAY_BETWEEN_CALLS = 0.5
+
+ processor = AutomatedErrorChecker()
+ print(f"✅ Successfully created processor with modified config")
+ print(f" Model: {config.MODEL}")
+ print(f" Delay: {config.DELAY_BETWEEN_CALLS}s")
+
+ # Restore original values
+ config.MODEL = original_model
+ config.DELAY_BETWEEN_CALLS = original_delay
+
+ except ValueError as e:
+ if "HEALTHREX_API_KEY" in str(e):
+ print("⚠️ API Key not set - this is expected for demonstration")
+ print(" To run actual processing, create a .env file with:")
+ print(" HEALTHREX_API_KEY=your_api_key_here")
+ print(" Install python-dotenv if not already installed: pip install python-dotenv")
+ else:
+ print(f"❌ Error: {e}")
+ except Exception as e:
+ print(f"❌ Unexpected error: {e}")
+ print()
+
+def example_4_selective_saving():
+ """Example 4: Use selective saving options"""
+ print("=== Example 4: Selective Saving ===")
+
+ try:
+ # Temporarily disable some saving options
+ original_save_inputs = config.SAVE_INPUTS
+ original_save_parser = config.SAVE_PARSER_OUTPUTS
+
+ config.SAVE_INPUTS = False # Don't save input files
+ config.SAVE_PARSER_OUTPUTS = False # Don't save parser outputs
+
+ processor = AutomatedErrorChecker()
+ print(f"✅ Successfully created processor with selective saving")
+ print(f" Save inputs: {config.SAVE_INPUTS}")
+ print(f" Save parser outputs: {config.SAVE_PARSER_OUTPUTS}")
+ print(f" Save evaluator outputs: {config.SAVE_EVALUATOR_OUTPUTS}")
+ print(f" Save summary: {config.SAVE_SUMMARY}")
+
+ # Restore original values
+ config.SAVE_INPUTS = original_save_inputs
+ config.SAVE_PARSER_OUTPUTS = original_save_parser
+
+ except ValueError as e:
+ if "HEALTHREX_API_KEY" in str(e):
+ print("⚠️ API Key not set - this is expected for demonstration")
+ print(" To run actual processing, create a .env file with:")
+ print(" HEALTHREX_API_KEY=your_api_key_here")
+ print(" Install python-dotenv if not already installed: pip install python-dotenv")
+ else:
+ print(f"❌ Error: {e}")
+ except Exception as e:
+ print(f"❌ Unexpected error: {e}")
+ print()
+
+def example_5_batch_processing():
+ """Example 5: Batch processing with different configs"""
+ print("=== Example 5: Batch Processing ===")
+
+ try:
+ # Process in batches with different settings
+ batches = [
+ {"start": 0, "end": 10, "model": "gpt-4.1", "delay": 1.0},
+ {"start": 10, "end": 20, "model": "gemini-2.5-pro", "delay": 0.5},
+ ]
+
+ for i, batch in enumerate(batches):
+ print(f"Processing batch {i+1}: rows {batch['start']}-{batch['end']}")
+
+ # Temporarily set config for this batch
+ original_model = config.MODEL
+ original_delay = config.DELAY_BETWEEN_CALLS
+
+ config.MODEL = batch["model"]
+ config.DELAY_BETWEEN_CALLS = batch["delay"]
+
+ processor = AutomatedErrorChecker()
+ print(f" ✅ Created processor for batch {i+1}")
+ print(f" Model: {config.MODEL}, Delay: {config.DELAY_BETWEEN_CALLS}s")
+
+ # Note: We don't actually call process_all_data here to avoid API calls
+ print(f" (Skipping actual processing to avoid API calls)")
+
+ # Restore original config
+ config.MODEL = original_model
+ config.DELAY_BETWEEN_CALLS = original_delay
+
+ except ValueError as e:
+ if "HEALTHREX_API_KEY" in str(e):
+ print("⚠️ API Key not set - this is expected for demonstration")
+ print(" To run actual processing, create a .env file with:")
+ print(" HEALTHREX_API_KEY=your_api_key_here")
+ print(" Install python-dotenv if not already installed: pip install python-dotenv")
+ else:
+ print(f"❌ Error: {e}")
+ except Exception as e:
+ print(f"❌ Unexpected error: {e}")
+ print()
+
+def show_current_config():
+ """Show current configuration values"""
+ print("=== Current Configuration ===")
+ print(f"Excel Path: {config.EXCEL_PATH}")
+ print(f"Output Directory: {config.OUTPUT_DIR}")
+ print(f"Start Row: {config.START_ROW}")
+ print(f"End Row: {config.END_ROW}")
+ print(f"Model: {config.MODEL}")
+ print(f"Delay Between Calls: {config.DELAY_BETWEEN_CALLS}s")
+ print(f"Log Level: {config.LOG_LEVEL}")
+ print(f"Save Inputs: {config.SAVE_INPUTS}")
+ print(f"Save Parser Outputs: {config.SAVE_PARSER_OUTPUTS}")
+ print(f"Save Evaluator Outputs: {config.SAVE_EVALUATOR_OUTPUTS}")
+ print(f"Save Summary: {config.SAVE_SUMMARY}")
+ print(f"Create Analysis DF: {config.CREATE_ANALYSIS_DF}")
+ print()
+
+if __name__ == "__main__":
+ print("Config.py Usage Examples")
+ print("=" * 50)
+
+ # Show current config
+ show_current_config()
+
+ # Run all examples (they now handle missing API key gracefully)
+ example_1_basic_usage()
+ # example_2_override_some_config()
+ # example_3_modify_config_programmatically()
+ # example_4_selective_saving()
+ # example_5_batch_processing()
+
+ print("Examples completed successfully!")
+ print("\n📝 Note: To run actual processing with API calls:")
+ print(" 1. Create a .env file with: HEALTHREX_API_KEY=your_api_key_here")
+ print(" 2. Install python-dotenv if not already installed: pip install python-dotenv")
+ print(" 3. Then run: python automated_error_checking.py")
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/huggingface_embedding.ipynb b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/huggingface_embedding.ipynb
new file mode 100644
index 00000000..54ebebf8
--- /dev/null
+++ b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/notebook/huggingface_embedding.ipynb
@@ -0,0 +1,893 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "True"
+ ]
+ },
+ "execution_count": 1,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "import os\n",
+ "import traceback\n",
+ "import pandas as pd\n",
+ "pd.set_option('display.max_columns', None)\n",
+ "from typing import Tuple, Dict, List\n",
+ "\n",
+ "from langchain_huggingface import HuggingFaceEmbeddings\n",
+ "from langchain.text_splitter import RecursiveCharacterTextSplitter\n",
+ "from sklearn.metrics.pairwise import cosine_similarity\n",
+ "import numpy as np\n",
+ "import marshal\n",
+ "\n",
+ "\n",
+ "from pinecone import Pinecone, ServerlessSpec\n",
+ "from dotenv import load_dotenv\n",
+ "load_dotenv()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "pc = Pinecone(api_key=os.getenv(\"PINECONE_API_KEY\"))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data_path = \"/Users/wenyuanchen/Library/CloudStorage/Box-Box/ART_PerMessage_1_17_Updated.xlsx\"\n",
+ "data_sample = pd.read_excel(data_path, nrows=100) # or whatever number of rows you want"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([1])"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data_sample[\"Message Position in Thread\"].unique()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Find Thread_IDs that appear once now\n",
+ "thread_counts = data_sample['Thread ID'].value_counts()\n",
+ "threads_to_keep = thread_counts[thread_counts == 1].index\n",
+ "\n",
+ "# Filter the dataframe to keep only rows with those Thread_IDs\n",
+ "filtered_data = data_sample[data_sample['Thread ID'].isin(threads_to_keep)].sort_values('Thread ID')\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2674"
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Filter out rows where patient message and actual response are not present\n",
+ "condition =(filtered_data[\"Patient Message\"].notna()) & (filtered_data[\"Actual Response Sent to Patient\"].notna())\n",
+ "filtered_data = filtered_data[condition]\n",
+ "filtered_data[\"Thread ID\"].nunique() # only 2674 threads left\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "question_answer_pairs = filtered_data[[\"Thread ID\",\"Patient Message\", \"Actual Response Sent to Patient\"]]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/var/folders/r3/mc640yrn2_70d_7zvw5cc3q00000gn/T/ipykernel_97824/3905878187.py:1: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " question_answer_pairs[\"_id\"] = question_answer_pairs[\"Thread ID\"].astype(str)\n",
+ "/var/folders/r3/mc640yrn2_70d_7zvw5cc3q00000gn/T/ipykernel_97824/3905878187.py:2: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " question_answer_pairs[\"chunk_text\"] = question_answer_pairs[\"Patient Message\"]\n",
+ "/var/folders/r3/mc640yrn2_70d_7zvw5cc3q00000gn/T/ipykernel_97824/3905878187.py:3: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " question_answer_pairs.drop(columns=[\"Patient Message\",\"Thread ID\"], inplace=True)\n"
+ ]
+ }
+ ],
+ "source": [
+ "question_answer_pairs[\"_id\"] = question_answer_pairs[\"Thread ID\"].astype(str)\n",
+ "question_answer_pairs[\"chunk_text\"] = question_answer_pairs[\"Patient Message\"]\n",
+ "question_answer_pairs.drop(columns=[\"Patient Message\",\"Thread ID\"], inplace=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "records = question_answer_pairs.to_dict('records')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def create_embeddings():\n",
+ " embeddings = HuggingFaceEmbeddings(\n",
+ " model_name=\"sentence-transformers/all-mpnet-base-v2\"\n",
+ " )\n",
+ " return embeddings\n",
+ "embeddings_model = create_embeddings()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/8AAANVCAYAAAAuhU7eAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAoNNJREFUeJzs3XlclXX+///nkeUICEdQAUlcMjUJt7QQnVxyLdAma9QoyjS10SRMx3TasCkxtzbLbHEpK5pKm0kSlyzL3G2oULPNNUEcRVB0QOH6/dGX6+cRNI6cI3R9Hvfb7dxunvf7da7rdZ1zoJ5cm80wDEMAAAAAAMCyalV3AwAAAAAAwLMI/wAAAAAAWBzhHwAAAAAAiyP8AwAAAABgcYR/AAAAAAAsjvAPAAAAAIDFEf4BAAAAALA4wj8AAAAAABZH+AcAAAAAwOII/wAASdKiRYtks9nMR+3atRUeHq6ePXsqNTVVubm55V6TkpIim83m0npOnTqllJQUff755y69rqJ1NW3aVPHx8S4t5/e88847eu655yqcs9lsSklJcev63O3TTz9Vp06dFBAQIJvNpo8++qhcTY8ePZw+6ws9yrbVZrPpgQceuLwbcokq+50cNmyYbDabAgMDdfLkyXLz+/btU61atf4Qn3l1+OWXX/TAAw+oZcuW8vPzk7+/v6655ho9+uij+vXXX6u7PUnSJ598wmcHAOfwru4GAAA1y8KFC3X11VfrzJkzys3N1fr16/XMM89o1qxZeu+999S7d2+z9r777lP//v1dWv6pU6c0depUSb+F0Mq6lHVdinfeeUdZWVlKTk4uN7dx40Y1atTI4z1cKsMwNHjwYLVs2VL//ve/FRAQoFatWpWre/nll1VQUGA+T09P11NPPWV+9mVq8ra6g4+Pj86ePav33ntPI0aMcJpbuHChAgMDnd4n/Gb58uUaOnSo6tevrwceeEAdOnSQzWbTd999pwULFig9PV3/+c9/qrtNffLJJ3rppZf4AwAA/D+EfwCAk+joaHXq1Ml8ftttt2n8+PH605/+pEGDBunHH39UWFiYpN/CoacD4qlTp+Tv739Z1vV7OnfuXK3r/z2HDh3SsWPHdOutt6pXr14XrIuKinJ6/v3330sq/9m7Q9nnVxP5+vpqwIABWrBggVP4NwxDixYt0pAhQ/Taa69VY4c1z549ezR06FC1bNlSn332mRwOhzl34403KikpScuWLavGDgEAF8Jh/wCA39W4cWPNnj1bJ06c0Pz5883xig6xXrt2rXr06KF69erJz89PjRs31m233aZTp05p7969atCggSRp6tSp5uHlw4YNc1re119/rdtvv13BwcFq3rz5BddVZtmyZWrbtq1q166tK6+8Ui+88ILTfNkpDXv37nUa//zzz2Wz2cxTEHr06KH09HTt27fP6fD3MhUdAp6VlaVbbrlFwcHBql27ttq3b6/FixdXuJ53331XjzzyiCIiIhQUFKTevXtr9+7dF37jz7F+/Xr16tVLgYGB8vf3V5cuXZSenm7Op6SkmH8cefjhh2Wz2dS0adNKLbuy3nrrLbVu3Vr+/v5q166dli9f7jR/sc/PMAy9/PLLat++vfz8/BQcHKzbb79dv/zyi9MyVq9erVtuuUWNGjVS7dq1ddVVV2n06NH673//W66f9PR0tW/fXna7Xc2aNdOsWbNc3qbhw4drw4YNTp/DmjVrtG/fPt17770VviYnJ0ejR49Wo0aN5Ovrq2bNmmnq1Kk6e/asU928efPUrl071alTR4GBgbr66qv197//3Zw/deqUJk6cqGbNmql27doKCQlRp06d9O6775o127Zt09ChQ9W0aVP5+fmpadOmuuOOO7Rv375yfa1fv16xsbGqXbu2rrjiCj322GN6/fXXK/zuv/fee4qNjVVAQIDq1Kmjfv36VWpv/Zw5c1RYWKiXX37ZKfiXsdlsGjRokNPYggUL1K5dO3Mbb731Vu3atcuppkePHhUeCTRs2DCn7/HevXtls9k0a9YszZkzR82aNVOdOnUUGxurTZs2Ob3upZdeMnsqe5S9D++//75iYmLkcDjk7++vK6+8UsOHD//d7QeAPzL2/AMAKuXmm2+Wl5eXvvjiiwvW7N27V3Fxcbrhhhu0YMEC1a1bV7/++qsyMjJUXFyshg0bKiMjQ/3799eIESN03333SZL5B4EygwYN0tChQ3X//fersLDwon1lZmYqOTlZKSkpCg8P19tvv60HH3xQxcXFmjhxokvb+PLLL2vUqFH6+eefK7X3cvfu3erSpYtCQ0P1wgsvqF69elqyZImGDRumw4cPa9KkSU71f//739W1a1e9/vrrKigo0MMPP6wBAwZo165d8vLyuuB61q1bpz59+qht27Z64403ZLfb9fLLL2vAgAF69913NWTIEN13331q166dBg0apHHjxikhIUF2u92l7b+Y9PR0bd26VU8++aTq1KmjGTNm6NZbb9Xu3bt15ZVXOtVW9PmNHj1aixYtUlJSkp555hkdO3ZMTz75pLp06aJvvvnGPJrk559/VmxsrO677z45HA7t3btXc+bM0Z/+9Cd999138vHxkfTbtQ1uueUWxcbGKi0tTSUlJZoxY4YOHz7s0nb17t1bTZo00YIFC/TMM89Ikt544w1169ZNLVq0KFefk5Oj66+/XrVq1dLjjz+u5s2ba+PGjXrqqae0d+9eLVy4UJKUlpamMWPGaNy4cZo1a5Zq1aqln376STt37jSX9dBDD+mtt97SU089pQ4dOqiwsFBZWVk6evSoWbN37161atVKQ4cOVUhIiLKzszVv3jxdd9112rlzp+rXry9J+vbbb9WnTx+1bNlSixcvlr+/v1555RUtWbKk3DZMmzZNjz76qO699149+uijKi4u1syZM3XDDTdoy5Yt5Y4MOdeqVasUFhZW6aNgUlNT9fe//1133HGHUlNTdfToUaWkpCg2NlZbt26t8D2ujJdeeklXX321eX2Oxx57TDfffLP27Nkjh8Ohxx57TIWFhfrggw+0ceNG83UNGzbUxo0bNWTIEA0ZMkQpKSmqXbu29u3bp7Vr115SLwDwh2EAAGAYxsKFCw1JxtatWy9YExYWZrRu3dp8/sQTTxjn/qfkgw8+MCQZmZmZF1zGkSNHDEnGE088UW6ubHmPP/74BefO1aRJE8Nms5VbX58+fYygoCCjsLDQadv27NnjVPfZZ58ZkozPPvvMHIuLizOaNGlSYe/n9z106FDDbrcb+/fvd6q76aabDH9/f+P48eNO67n55pud6v75z38akoyNGzdWuL4ynTt3NkJDQ40TJ06YY2fPnjWio6ONRo0aGaWlpYZhGMaePXsMScbMmTMvurzz/d5nL8kICwszCgoKzLGcnByjVq1aRmpqqjl2oc9v48aNhiRj9uzZTuMHDhww/Pz8jEmTJlW43tLSUuPMmTPGvn37DEnGv/71L3MuJibGiIiIME6fPm2OFRQUGCEhIeW+JxW55557jICAALPv8PBw48yZM8bRo0cNu91uLFq0qMLv6ujRo406deoY+/btc1rerFmzDEnGjh07DMMwjAceeMCoW7fuRXuIjo42/vznP/9ur+c6e/ascfLkSSMgIMB4/vnnzfG//OUvRkBAgHHkyBFzrKSkxIiKinL67u/fv9/w9vY2xo0b57TcEydOGOHh4cbgwYMvuv7atWsbnTt3rlSveXl5hp+fX7nv/f79+w273W4kJCSYY927dze6d+9ebhn33HOP089j2Xe8TZs2xtmzZ83xLVu2GJKMd9991xwbO3Zshd+Fss+q7OcTAP6v4LB/AEClGYZx0fn27dvL19dXo0aN0uLFi8sd0l1Zt912W6Vrr7nmGrVr185pLCEhQQUFBfr6668vaf2VtXbtWvXq1UuRkZFO48OGDdOpU6ec9jhK0sCBA52et23bVpIqPIS7TGFhoTZv3qzbb79dderUMce9vLyUmJiogwcPVvrUgaro2bOnAgMDzedhYWEKDQ2tsPfzP7/ly5fLZrPprrvu0tmzZ81HeHi42rVr53Tnh9zcXN1///2KjIyUt7e3fHx81KRJE0kyDxUvLCzU1q1bNWjQINWuXdt8bWBgoAYMGODytt177706fPiwVqxYobffflu+vr76y1/+UmHt8uXL1bNnT0VERDhty0033STpt6M0JOn666/X8ePHdccdd+hf//pXhactXH/99VqxYoUmT56szz//XKdPny5Xc/LkST388MO66qqr5O3tLW9vb9WpU0eFhYVOh86vW7dON954o3kkgCTVqlVLgwcPdlreypUrdfbsWd19991O/deuXVvdu3d3+S4cF7Nx40adPn3aPK2nTGRkpG688UZ9+umnl7zsuLg4p6NlKvOzVOa6666TJA0ePFj//Oc/a8zdCQDA0wj/AIBKKSws1NGjRxUREXHBmubNm2vNmjUKDQ3V2LFj1bx5czVv3lzPP/+8S+tq2LBhpWvDw8MvOHbu4dOecPTo0Qp7LXuPzl9/vXr1nJ6XHZZfUegrk5eXJ8MwXFqPJ5zfu/Rb/xX1fn6vhw8flmEYCgsLk4+Pj9Nj06ZNZjAuLS1V3759tXTpUk2aNEmffvqptmzZYp7LXbauvLw8lZaWXvSzd0WTJk3Uq1cvLViwQAsWLNDQoUMveJHCw4cP6+OPPy63Hddcc40kmduSmJioBQsWaN++fbrtttsUGhqqmJgYrV692lzWCy+8oIcfflgfffSRevbsqZCQEP35z3/Wjz/+aNYkJCRo7ty5uu+++7Ry5Upt2bJFW7duVYMGDZze+6NHj5qnTpzr/LGy0yKuu+66ctvw3nvvVfhHinM1btxYe/bsuWjNuT1JFf88R0REVOl7eyk/S2W6deumjz76yPwjSKNGjRQdHe10rQUAsCLO+QcAVEp6erpKSkp+9/Z8N9xwg2644QaVlJRo27ZtevHFF5WcnKywsDANHTq0UuuqzH3ay+Tk5FxwrCwglO0dLioqcqr7vaDze+rVq6fs7Oxy44cOHZIkp72wlyo4OFi1atXy+Hrc6fzPr379+rLZbPryyy8rvA5B2VhWVpa++eYbLVq0SPfcc485/9NPPznVBwcHy2azXfSzd9Xw4cN11113qbS0VPPmzbtgXf369dW2bVs9/fTTFc6f+8exe++9V/fee68KCwv1xRdf6IknnlB8fLx++OEHNWnSRAEBAZo6daqmTp1qHnkwefJkDRgwQN9//73y8/O1fPlyPfHEE5o8ebK53KKiIh07dsxpvfXq1avwegfnvx9l35UPPvjAPKLCFf369dOLL76oTZs2/e55/2U/fxf67p77va1du7by8/PL1VX1Z/RCbrnlFt1yyy0qKirSpk2blJqaqoSEBDVt2lSxsbEeWScAVDf2/AMAftf+/fs1ceJEORwOjR49ulKv8fLyUkxMjHnF7bJD8F3ZQ1cZO3bs0DfffOM09s477ygwMFDXXnutJJlXC//222+d6v7973+XW96F9mZXpFevXlq7dq0Zwsu8+eab8vf3d8utAQMCAhQTE6OlS5c69VVaWqolS5aoUaNGatmyZZXX40nx8fEyDEO//vqrOnXqVO7Rpk0bSf//Hw3O/wPBuXeYkH57T66//notXbpU//vf/8zxEydO6OOPP76kHm+99VbdeuutGj58+EU/t/j4eGVlZal58+YVbktFR8YEBATopptu0iOPPKLi4mLt2LGjXE1YWJiGDRumO+64Q7t379apU6dks9lkGEa59+P1119XSUmJ01j37t21du1ap7BcWlqq999/36muX79+8vb21s8//1xh/793q8fx48crICBAY8aMqTCsG4ZhXiwzNjZWfn5+5S46ePDgQfOUmTJNmzbVDz/84PQHuqNHj2rDhg0X7ediKvO7xm63q3v37ubFHitzxwMA+KNizz8AwElWVpZ5HnBubq6+/PJLLVy4UF5eXlq2bFm5K/Of65VXXtHatWsVFxenxo0b63//+58WLFgg6berqku/nZfdpEkT/etf/1KvXr0UEhKi+vXrX/Jt6SIiIjRw4EClpKSoYcOGWrJkiVavXq1nnnnGPHT7uuuuU6tWrTRx4kSdPXtWwcHBWrZsmdavX19ueW3atNHSpUs1b948dezYUbVq1bpgIHriiSfMc8Aff/xxhYSE6O2331Z6erpmzJhR4a3QLkVqaqr69Omjnj17auLEifL19dXLL7+srKwsvfvuuy4dKVEdunbtqlGjRunee+/Vtm3b1K1bNwUEBCg7O1vr169XmzZt9Ne//lVXX321mjdvrsmTJ8swDIWEhOjjjz92OlS+zD/+8Q/1799fffr00YQJE1RSUqJnnnlGAQEB5faKV0bt2rX1wQcf/G7dk08+qdWrV6tLly5KSkpSq1at9L///U979+7VJ598oldeeUWNGjXSyJEj5efnp65du6phw4bKyclRamqqHA6Hec55TEyM4uPj1bZtWwUHB2vXrl166623FBsba353u3XrppkzZ5o/I+vWrdMbb7yhunXrOvX1yCOP6OOPP1avXr30yCOPyM/PT6+88op5t4VatX7b39O0aVM9+eSTeuSRR/TLL7+of//+Cg4O1uHDh7VlyxbzaIQLadasmdLS0jRkyBC1b99eDzzwgDp06CBJ2rlzpxYsWCDDMHTrrbeqbt26euyxx/T3v/9dd999t+644w4dPXpUU6dOVe3atfXEE0+Yy01MTNT8+fN11113aeTIkTp69KhmzJihoKCgyn+I5yn7o9Izzzyjm266SV5eXmrbtq2eeuopHTx4UL169VKjRo10/PhxPf/88/Lx8VH37t0veX0AUONV37UGAQA1SdkV38sevr6+RmhoqNG9e3dj2rRpRm5ubrnXnH8F/o0bNxq33nqr0aRJE8Nutxv16tUzunfvbvz73/92et2aNWuMDh06GHa73ZBk3HPPPU7LO/eK5Rdal2H8drX/uLg444MPPjCuueYaw9fX12jatKkxZ86ccq//4YcfjL59+xpBQUFGgwYNjHHjxhnp6enlrvZ/7Ngx4/bbbzfq1q1r2Gw2p3WqgrsUfPfdd8aAAQMMh8Nh+Pr6Gu3atTMWLlzoVFN2tf/333/fabzsyuXn11fkyy+/NG688UYjICDA8PPzMzp37mx8/PHHFS7PE1f7Hzt2bLnxJk2amJ+dYVz88zMMw1iw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TwYOHCiHw6HAwEDze+KqC/03a+zYsU4/NxEREfLz8zP/m+Nuv9fH7/3cXMoyL/Q9OXv27AX/e33uXNnvLh8fH3Xr1k2jR49Ws2bNZLfb5e/vb36PMjMznX6XBAQEKCIiwvzv8KW4WI/nctf35GLK/v+lSZMm8vPzU5cuXbR161Zzvuz3a/369c33A0DlXCj7SKr075XRo0erefPm8vPzU4MGDXTLLbfo+++/v8xbUjWE//+jCgsL1a5dOzOwlFm3bp3Gjh2rTZs2afXq1Tp79qz69u2rwsJCNWrUSNOnT9e2bdu0bds23XjjjbrlllvK/c/L1q1b9eqrr6pt27bm2DXXXKPs7Gzz8d1330mS8vLy1LVrV/n4+GjFihXauXOnZs+erbp162rr1q1Or1m9erWk335AX3nlFc2dO1e7du3SjBkzNHPmTL344ouSpPvuu0+rV6/WhAkTNHr0aN16662SpKNHjzptf2Fhoc6ePStJmjlzpsLDw9WnTx8dOXJEV1xxhf785z+Xe9+OHTumkpISJSUlSZIefvhh/fDDDxo4cKAKCwvVunVrPfLII5J+CytNmzZV3759dejQIaf3+4cfflBERITZS3BwsNq3by9JWrBggbKzs/XJJ5+osLBQjRs31unTpyVJTz31lL755hsNGTJEbdq00euvv+70mgULFkiS+T/20m9hdPz48Ro3bpzef/99nThxQm3bttWbb76pG264QZmZmbrxxhu1du1ajR07ViNHjpQkRUdHq169ejp16pQOHjyoTz/9VJMmTVJwcLBq1frtV8fXX3+t4cOHq2PHjpo2bZr+9Kc/ycvLS7t27dLLL7+ssWPH6h//+IdeeukldevWTXXq1NEVV1yhV199VXfffbf5PTt48KCWLVum8PBw/fzzzxo7dqxuvvlmdenSRb1799YVV1yhn3/+WS1bttTYsWP1z3/+U2fPnlVAQIACAwO1ceNGhYaGasSIEfr888+1Zs0a83VlQWXcuHHq16+f6tWrp/bt26t+/foaM2aM/vnPf+qWW25R8+bN1bZtW915550yDEPBwcE6duyY7r33Xvn4+GjAgAEyDEN+fn566aWXNHDgQI0ZM0ZPPvmkJGn8+PHasWOH6tevryuuuEKzZ8/WihUrlJCQoM8++0x9+vRRo0aNdM899+iNN97QmjVrNHz4cH333Xfq1auXAgMDzZ+v1NRU8zuXnZ2tRo0a6dprr9UNN9yg9evXKykpST4+PpozZ44aNWqkBx98UN7e3rrnnnt0zz33qKSkRHfffbcaN26sJUuWaP369ebrvLy8zO9S//79FR4ersGDB0v67XanDzzwgLp3765ffvlFqampCgsLU0hIiJYuXarCwkJJMn/m/Pz81LJlS/n7+6tPnz46ceKECgsL1bRpU/n5+Tn97Jw6dUpff/217rjjDoWGhuqqq67S8ePHNXDgQElSy5YtNW7cOIWFhally5YKCgpS3759deTIEfN3StOmTZWTk2P+7EhSbGysIiMjFRUVpfvuu0+ffPKJJOnnn39W586dlZ2drRYtWujOO+/UY489ptq1ays7O1srVqwwX1f2h7TbbrtN48eP10cffSR/f39dffXV6tChg1l77bXXKiYmRp988ok2bNigJk2a6M0331RoaKgCAgL0+uuv67PPPtPNN9+sPn36qKioSFdccYUmTpyoWbNmSZL++c9/mr/HAgICNH/+fH355Zdavny5oqKizPejUaNGeu+997Rp0yZ9/vnnuv32283fxWW/TxcsWKCoqCiFhYWZ70fdunXVs2dPffPNN/rmm2/03Xff6c4779Q111yjjRs3qm7duvrrX/+qNWvW6JtvvlG3bt101VVXmfXffPONnnvuOaf3IyMjQ0uWLNGuXbvM3yVvv/32BX93l/1e//7772Wz2fT/tXfm8TVd6///nCE5J7OIzBMhpiAhMUQiSUsEEVpFEERNr5iiKG65aiaGxNwYrqL0Sl1CYwpCaFFCGwRBzHOrqBpjyOf3h9/ePTsnJ4Zqfa+73q/XfiV7PXut/exnP+tZe+211j6pqalYuHAhXF1d0bhxYzRs2BAk0a1bN9nXbWxscPv2bYSFheH27dsYN24csrKykJKSgitXrqBFixYICQmBvb09Zs2ahV27dsk+IfmJxLp167B//364uLhg9uzZJeoocebMGYSGhqJq1arYuXMnDh8+LPvJq2KqzWrXrp1cb1JSUjB37lwcOHBAbnPu3r37yuf6M3oAQLNmzRTHSPXmdcs05SfdunUz2V5PmTIF8+fPR0REBHQ6HQYNGgRzc3OcPn0aixYtwtSpUzF58mTExMQoOuJSLBk1ahR++uknpKeny+3w6yDpYeqZAnizflIa0vPL8uXLkZeXh6ZNm6JJ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",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the number of threads is 246588\n",
+ "the number of messages is 848790\n",
+ " the average number of messages per thread is 3.4421383035670834\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Get the count of each Thread ID\n",
+ "thread_counts = data_sample['Thread ID'].value_counts()\n",
+ "# Now, get the frequency of each count (i.e., how many threads have count=1, count=2, etc.)\n",
+ "count_frequency = thread_counts.value_counts().sort_index()\n",
+ "\n",
+ "# Plot\n",
+ "plt.figure(figsize=(12,10))\n",
+ "plt.bar(count_frequency.index, count_frequency.values)\n",
+ "plt.xlabel('Number of Messages in Thread (Count)')\n",
+ "plt.ylabel('Number of Threads (Frequency)')\n",
+ "plt.title('Distribution of Thread Message Counts')\n",
+ "plt.xticks(count_frequency.index) # Show all counts on x-axis if not too many\n",
+ "plt.show()\n",
+ "print(f\"the number of threads is {len(thread_counts)}\")\n",
+ "print(f\"the number of messages is {thread_counts.sum()}\")\n",
+ "print(f\" the average number of messages per thread is {thread_counts.mean()}\")\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "------------------finished embedding---------------\n",
+ "Processed batch 1, vectors 0 to 100\n",
+ "Processed batch 2, vectors 100 to 200\n",
+ "Processed batch 3, vectors 200 to 300\n",
+ "Processed batch 4, vectors 300 to 400\n",
+ "Processed batch 5, vectors 400 to 500\n",
+ "Processed batch 6, vectors 500 to 600\n",
+ "Processed batch 7, vectors 600 to 700\n",
+ "Processed batch 8, vectors 700 to 800\n",
+ "Processed batch 9, vectors 800 to 900\n",
+ "Processed batch 10, vectors 900 to 1000\n",
+ "Processed batch 11, vectors 1000 to 1100\n",
+ "Processed batch 12, vectors 1100 to 1200\n",
+ "Processed batch 13, vectors 1200 to 1300\n",
+ "Processed batch 14, vectors 1300 to 1400\n",
+ "Processed batch 15, vectors 1400 to 1500\n",
+ "Processed batch 16, vectors 1500 to 1600\n",
+ "Processed batch 17, vectors 1600 to 1700\n",
+ "Processed batch 18, vectors 1700 to 1800\n",
+ "Processed batch 19, vectors 1800 to 1900\n",
+ "Processed batch 20, vectors 1900 to 2000\n",
+ "Processed batch 21, vectors 2000 to 2100\n",
+ "Processed batch 22, vectors 2100 to 2200\n",
+ "Processed batch 23, vectors 2200 to 2300\n",
+ "Processed batch 24, vectors 2300 to 2400\n",
+ "Processed batch 25, vectors 2400 to 2500\n",
+ "Processed batch 26, vectors 2500 to 2600\n",
+ "Processed batch 27, vectors 2600 to 2674\n",
+ "Successfully saved all 2674 embeddings to Pinecone using Thread IDs as identifiers\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Create embeddings for all texts\n",
+ "texts = question_answer_pairs[\"chunk_text\"].tolist()\n",
+ "thread_ids = question_answer_pairs[\"_id\"].tolist()\n",
+ "actual_responses = question_answer_pairs[\"Actual Response Sent to Patient\"].tolist()\n",
+ "embeddings = embeddings_model.embed_documents(texts)\n",
+ "\n",
+ "\n",
+ "print(\"------------------finished embedding---------------\")\n",
+ "# Initialize Pinecone index if not exists\n",
+ "index_name = \"question-answer-pairs\"\n",
+ "if not pc.has_index(index_name):\n",
+ " pc.create_index(\n",
+ " name=index_name,\n",
+ " dimension=len(embeddings[0]),\n",
+ " metric=\"cosine\",\n",
+ " spec=ServerlessSpec(\n",
+ " cloud=\"aws\",\n",
+ " region=\"us-east-1\"\n",
+ " )\n",
+ " )\n",
+ "\n",
+ "# Get the index\n",
+ "index = pc.Index(index_name)\n",
+ "\n",
+ "# Process in batches of 100\n",
+ "batch_size = 100\n",
+ "for i in range(0, len(texts), batch_size):\n",
+ " # Get the current batch\n",
+ " batch_end = min(i + batch_size, len(texts))\n",
+ " batch_vectors = []\n",
+ " \n",
+ " # Prepare vectors for the current batch\n",
+ " for j in range(i, batch_end):\n",
+ " batch_vectors.append({\n",
+ " \"id\": str(thread_ids[j]),\n",
+ " \"values\": embeddings[j],\n",
+ " \"metadata\": {\n",
+ " \"text\": texts[j],\n",
+ " \"thread_id\": str(thread_ids[j]),\n",
+ " \"response\": actual_responses[j], # Added the actual response\n",
+ " \"model\": \"sentence-transformers/all-mpnet-base-v2\"\n",
+ " }\n",
+ " })\n",
+ " \n",
+ " # Upsert the batch\n",
+ " index.upsert(vectors=batch_vectors, namespace=\"subsample-space\")\n",
+ " print(f\"Processed batch {i//batch_size + 1}, vectors {i} to {batch_end}\")\n",
+ "\n",
+ "print(f\"Successfully saved all {len(texts)} embeddings to Pinecone using Thread IDs as identifiers\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "{'matches': [{'id': '254764934',\n",
+ " 'metadata': {'model': 'sentence-transformers/all-mpnet-base-v2',\n",
+ " 'response': 'The refill has been sent for Trulicity '\n",
+ " '1.5 mg per week <13><10>Let me know '\n",
+ " \"how you feel in 3 months and we'll \"\n",
+ " 'check your labs again at that '\n",
+ " 'point.<13><10><13><10>Katy Young-Lee '\n",
+ " 'M.D.<13><10>',\n",
+ " 'text': \"No side effects noted so far. It's been \"\n",
+ " 'easy to tolerate this drug while Ozempic '\n",
+ " 'just destroyed me.I had all kinds of side '\n",
+ " 'effects with that one, but Trulicity has '\n",
+ " 'been just fine. Thx. ',\n",
+ " 'thread_id': '254764934'},\n",
+ " 'score': 0.813580036,\n",
+ " 'values': []},\n",
+ " {'id': '255093088',\n",
+ " 'metadata': {'model': 'sentence-transformers/all-mpnet-base-v2',\n",
+ " 'response': 'No problem, sent to: CVS/pharmacy '\n",
+ " '#0550 - San Carlos, CA - 1324 San '\n",
+ " 'Carlos Ave 650-591-7659<13><10> '\n",
+ " '<13><10>William Hui, MD, 1/8/2025, '\n",
+ " '12:37 PM<13><10>',\n",
+ " 'text': 'Hello thank you. No bad side effects. We '\n",
+ " 'can increase to 5 mg now. thank you!',\n",
+ " 'thread_id': '255093088'},\n",
+ " 'score': 0.571994,\n",
+ " 'values': []},\n",
+ " {'id': '254397598',\n",
+ " 'metadata': {'model': 'sentence-transformers/all-mpnet-base-v2',\n",
+ " 'response': 'Hi Jana,<13><10>Thank you for your '\n",
+ " 'message. <13><10>Minoxidil tablets can '\n",
+ " 'sometimes cause changes in blood '\n",
+ " 'pressure and heart rate, which may '\n",
+ " 'interact with your current '\n",
+ " 'medications, flecainide and nadolol. '\n",
+ " '<13><10>I recommend discussing this '\n",
+ " 'with your cardiologist to ensure it '\n",
+ " 'is safe for you to start minoxidil '\n",
+ " 'tablets.<13><10>Please let me know if '\n",
+ " 'you have any other questions or '\n",
+ " 'concerns.<13><10><13><10>Best '\n",
+ " 'regards,<13><10><13><10>Umme Hani '\n",
+ " 'Khuddus, MD',\n",
+ " 'text': 'I have a really quick question. I have '\n",
+ " 'started ozempic as you k ow and would like '\n",
+ " 'to start taking minoxidil tablets for hair '\n",
+ " 'loss. Could you please let me know if that '\n",
+ " 'would be a problem?<13><10><13><10>I am '\n",
+ " 'currently on flecanide 100mg twice a day '\n",
+ " 'and nadalol 10mg once a '\n",
+ " 'day.<13><10><13><10>Thank '\n",
+ " 'you,<13><10><13><10>Jana',\n",
+ " 'thread_id': '254397598'},\n",
+ " 'score': 0.54825455,\n",
+ " 'values': []},\n",
+ " {'id': '254823624',\n",
+ " 'metadata': {'model': 'sentence-transformers/all-mpnet-base-v2',\n",
+ " 'response': 'Hi Dar-Der,<13><10><13><10>Thank you '\n",
+ " \"for reaching out. It's important to be \"\n",
+ " 'aware of potential side effects of any '\n",
+ " 'medication. Atorvastatin, like all '\n",
+ " 'medications, can have side effects. '\n",
+ " 'Common side effects may include muscle '\n",
+ " 'pain, fatigue, and digestive issues. '\n",
+ " 'If you experience any severe or '\n",
+ " 'persistent side effects, please let me '\n",
+ " 'know immediately. <13><10><13><10>If '\n",
+ " 'you have any specific concerns or '\n",
+ " 'questions about the message from CVS, '\n",
+ " 'feel free to reply to them for more '\n",
+ " 'information or schedule an appointment '\n",
+ " 'with me through the Stanford MyHealth '\n",
+ " 'app to discuss '\n",
+ " 'further.<13><10><13><10>Best '\n",
+ " 'regards,<13><10>Dr Hung',\n",
+ " 'text': 'Hi Dr. Hung,<13><10>CVS sent me a message '\n",
+ " 'regarding the side effects of Atorvastatin '\n",
+ " 'as the following,<13><10>“CVS Pharmacy: Hi '\n",
+ " 'Dar-der, help manage potential side '\n",
+ " 'effects of your prescription ATO. Reply M '\n",
+ " 'for more info.”',\n",
+ " 'thread_id': '254823624'},\n",
+ " 'score': 0.523793101,\n",
+ " 'values': []},\n",
+ " {'id': '254848035',\n",
+ " 'metadata': {'model': 'sentence-transformers/all-mpnet-base-v2',\n",
+ " 'response': \"Hi Lindsay,<13><10><13><10>I'm glad to \"\n",
+ " 'hear that you have been tolerating the '\n",
+ " '1 mg dose of Ozempic well. Since you '\n",
+ " 'have been doing great on the current '\n",
+ " 'dose, we can consider increasing it. '\n",
+ " 'However, I would like to review your '\n",
+ " 'progress and discuss the next steps in '\n",
+ " 'detail. <13><10><13><10>Please '\n",
+ " 'schedule an appointment with me '\n",
+ " 'through the Stanford MyHealth app so '\n",
+ " 'we can evaluate and make any necessary '\n",
+ " 'adjustments to your '\n",
+ " 'prescription.<13><10><13><10>Thank '\n",
+ " 'you,<13><10><13><10>Ebony Yvonne '\n",
+ " 'Tinsley, PA-C',\n",
+ " 'text': 'Hi Ebony,<13><10><13><10>I was wondering '\n",
+ " 'if we are able to increase dose of '\n",
+ " 'ozempic? I think at our last appointment '\n",
+ " 'you wanted me to be on the 1 mg for 4 '\n",
+ " 'weeks to make sure I tolerated okay before '\n",
+ " 'increasing, and I’ve been great on the '\n",
+ " '1mg. <13><10>Do I need another appointment '\n",
+ " 'with you or can the prescription be '\n",
+ " 'changed?<13><10><13><10>Thank '\n",
+ " 'you,<13><10>Lindsay ',\n",
+ " 'thread_id': '254848035'},\n",
+ " 'score': 0.507808626,\n",
+ " 'values': []},\n",
+ " {'id': '253971943',\n",
+ " 'metadata': {'model': 'sentence-transformers/all-mpnet-base-v2',\n",
+ " 'response': 'Good Morning Kavya,<13><10><13><10>My '\n",
+ " \"name is Johnson and I'm one of the \"\n",
+ " 'nurses supporting Dr. '\n",
+ " 'Kim.<13><10><13><10>Your message was '\n",
+ " 'forwarded to our team. Are you back '\n",
+ " 'from India or are you still '\n",
+ " 'traveling?<13><10><13><10>Can you '\n",
+ " 'confirm the medication you completed '\n",
+ " 'was the rifaximin for 14 '\n",
+ " 'days?<13><10><13><10>I was reviewing '\n",
+ " 'your last visit with Naomi and she '\n",
+ " 'thinks some of your underlying '\n",
+ " 'symptoms are related to constipation '\n",
+ " 'and incomplete evacuation. How are '\n",
+ " 'your bowel movements now? Are you '\n",
+ " 'having daily bowel movements? Hard, '\n",
+ " 'soft, loose? <13><10><13><10>Naomi had '\n",
+ " 'also recommended introducing foods '\n",
+ " 'with prebiotics (high fiber fruits, '\n",
+ " 'vegetables, whole grains, reducing '\n",
+ " 'processed foods, fermented foods such '\n",
+ " 'as yogurt, kimchi, sauerkraut. A high '\n",
+ " 'fiber diet with plenty of fluids (up '\n",
+ " 'to 8 glasses of water daily). You can '\n",
+ " 'also try adding 1 TBS of metamucil '\n",
+ " 'once or twice daily to keep your '\n",
+ " 'bowels regular if '\n",
+ " 'needed.<13><10><13><10>I have also '\n",
+ " 'attached some additional educational '\n",
+ " 'information below to help minimize '\n",
+ " 'some of the symptoms you are '\n",
+ " 'experiencing.<13><10><13><10>Thank '\n",
+ " 'you,<13><10><13><10>Johnson, '\n",
+ " 'RN<13><10><13><10><13><10><13><10> '\n",
+ " 'Digestive Health '\n",
+ " 'Center<13><10>Nutrition Services '\n",
+ " '<13><10><13><10>Nutrition Tips to '\n",
+ " 'Reduce Excessive Gas and '\n",
+ " 'Bloating<13><10><13><10>The Basics of '\n",
+ " 'Gas<13><10><13><10>Is normal to '\n",
+ " 'have.<13><10>Is produced <13><10>when '\n",
+ " 'we swallow, which brings air as a form '\n",
+ " 'of gas into the body <13><10>when '\n",
+ " 'bacteria in the digestive tract '\n",
+ " 'ferments on foods that do not digest '\n",
+ " 'well<13><10>We get rid of gas by '\n",
+ " 'belching (burping) and as flatus (gas '\n",
+ " 'passed from the '\n",
+ " 'rectum).<13><10><13><10>When gas is '\n",
+ " 'excessive, then the belching and/or '\n",
+ " 'flatus may '\n",
+ " 'increase.<13><10><13><10>Bloating '\n",
+ " '(trapped air) may occur when gas '\n",
+ " 'remains and collects in the body. '\n",
+ " 'This may cause abdominal pain and a '\n",
+ " 'feeling of '\n",
+ " 'fullness.<13><10><13><10>General '\n",
+ " 'Guidelines<13><10><13><10>Try these '\n",
+ " 'general nutrition tips one by one to '\n",
+ " 'see whether it would help you feel '\n",
+ " 'better. Start with what is easy to '\n",
+ " 'do.<13><10><13><10>However, the '\n",
+ " 'treatment of gas and bloating may '\n",
+ " 'change depending on the cause. Work '\n",
+ " 'with your doctor to help you find the '\n",
+ " 'cause and resolve your '\n",
+ " 'symptoms.<13><10><13><10>Reduce '\n",
+ " 'Swallowed Air<13><10><13><10>This form '\n",
+ " 'of gas normally passes from the '\n",
+ " 'stomach into the small intestine where '\n",
+ " 'part of it is absorbed. The rest '\n",
+ " 'enters the colon to be passed as '\n",
+ " 'flatus.<13><10><13><10>When we swallow '\n",
+ " 'excess air, the air may get expelled '\n",
+ " 'frequently by '\n",
+ " 'belching.<13><10><13><10>Tips<13><10>Limit '\n",
+ " 'carbonated sodas and sparkling water. '\n",
+ " '<13><10>Make sure your dentures fit '\n",
+ " 'properly.<13><10>Do not chew '\n",
+ " 'gum.<13><10>Do not suck on hard '\n",
+ " 'candies or mints.<13><10>Do not use '\n",
+ " 'straws.<13><10>Do not '\n",
+ " 'smoke.<13><10><13><10><13><10><13><10><13><10><13><10>Limit '\n",
+ " 'Foods That Do Not Digest '\n",
+ " 'Well<13><10><13><10>How well you '\n",
+ " 'tolerate these foods depends on the '\n",
+ " 'type and the amount you '\n",
+ " 'eat.<13><10><13><10>When these foods '\n",
+ " 'are eaten in large amounts, gas and/or '\n",
+ " 'bloating may '\n",
+ " 'increase.<13><10><13><10>It may help '\n",
+ " 'to try to eat less of these foods as a '\n",
+ " 'start. There is no need to avoid any '\n",
+ " 'food unless that food absolutely '\n",
+ " 'bothers you.<13><10><13><10>Artificial '\n",
+ " 'Sweeteners<13><10>Some artificial '\n",
+ " 'sweeteners if made with sugar alcohols '\n",
+ " 'do not absorb '\n",
+ " 'well.<13><10><13><10>Tips<13><10>Limit '\n",
+ " 'sugar free foods made with sorbitol, '\n",
+ " 'mannitol, xylitol and maltitol. '\n",
+ " '<13><10>Read food labels to find out '\n",
+ " 'if these sweeteners are used as '\n",
+ " 'ingredients.<13><10><13><10>Lactose '\n",
+ " '<13><10>Lactose is the milk sugar '\n",
+ " 'found mainly in '\n",
+ " 'dairy.<13><10><13><10>A gradual '\n",
+ " 'decrease over time in lactase levels '\n",
+ " '(the intestinal enzyme that digests '\n",
+ " 'lactose) is the most common cause of '\n",
+ " 'not being able to digest lactose '\n",
+ " 'well.<13><10><13><10>Tips<13><10>Limit '\n",
+ " 'dairy with high amounts of lactose '\n",
+ " 'such as ice cream and regular cow’s '\n",
+ " 'milk. <13><10>Eat small amounts of low '\n",
+ " 'lactose and lactose free dairy '\n",
+ " '<13><10>½ cup of greek yogurt, 1 TBSP '\n",
+ " 'of cream cheese, a slice of hard '\n",
+ " 'cheese (cheddar, colby, parmesan, '\n",
+ " 'swiss), 1 cup of lactose free cow’s '\n",
+ " 'milk, etc<13><10>Avoid eating multiple '\n",
+ " 'sources of dairy at the same '\n",
+ " 'meal.<13><10>Take lactase enzyme pills '\n",
+ " 'before you eat '\n",
+ " 'dairy.<13><10><13><10>Fiber<13><10>Fiber '\n",
+ " 'is found only in plant based foods '\n",
+ " 'such as beans, fruits, vegetables and '\n",
+ " 'grains.<13><10><13><10>Tips<13><10>Pay '\n",
+ " 'attention to how many foods with fiber '\n",
+ " 'are coming into each meal. If you are '\n",
+ " 'having symptoms, put less on your '\n",
+ " 'plate next time. <13><10>Limit high '\n",
+ " 'fiber foods (>4 grams fiber / ½ cup) '\n",
+ " 'to a few TBSP to ½ '\n",
+ " 'cup<13><10>artichokes, beans, '\n",
+ " 'blackberries, bran, bulgur, chickpeas, '\n",
+ " 'lentils, multi-grain breads, quinoa, '\n",
+ " 'raspberries, split peas and '\n",
+ " 'soybeans<13><10>Do not combine high '\n",
+ " 'fiber foods together at the same '\n",
+ " 'meal. <13><10>Drink plenty of water '\n",
+ " 'throughout the '\n",
+ " 'day.<13><10><13><10>Raffinose<13><10>Raffinose '\n",
+ " 'is a sugar found only in plant based '\n",
+ " 'foods such as asparagus, beans, '\n",
+ " 'broccoli, brussel sprouts, cabbage, '\n",
+ " 'cauliflower, chickpeas and '\n",
+ " 'lentils.<13><10><13><10>Tips<13><10>Do '\n",
+ " 'not eat daily.<13><10>Limit serving '\n",
+ " 'sizes to a few TBSP to ½ '\n",
+ " 'cup.<13><10>As raffinose is water '\n",
+ " 'soluble (means it leaches into water), '\n",
+ " 'soak beans/lentils overnight and then '\n",
+ " 'remove the water the next day. Cook '\n",
+ " 'the beans/lentils with fresh water. '\n",
+ " '<13><10><13><10>Fructose<13><10>Fructose '\n",
+ " 'is a sugar found mainly in fruits, '\n",
+ " 'vegetables, honey, wheat, garlic and '\n",
+ " 'onion. It is also used as a sweetener '\n",
+ " '(high fructose corn syrup). '\n",
+ " '<13><10><13><10>Tips<13><10>Eat fruits '\n",
+ " 'and vegetables with low amounts of '\n",
+ " 'fructose (see list).<13><10>Limit '\n",
+ " 'major sources of wheat such as breads, '\n",
+ " 'cereals and pastas. Try gluten free '\n",
+ " 'versions of these foods as they do not '\n",
+ " 'have wheat in them. <13><10>Reduce '\n",
+ " 'honey. <13><10>Do not use garlic and '\n",
+ " 'onion (including powders). Can use '\n",
+ " 'garlic and onion infused oils. '\n",
+ " '<13><10>Limit foods and beverages made '\n",
+ " 'with high fructose corn syrup. Read '\n",
+ " 'food labels. <13><10>Eat (keep '\n",
+ " 'serving sizes to ½ cup) Limit '\n",
+ " '<13><10>Fruits: banana, berries, '\n",
+ " 'cantaloupe, grapes, guava, honeydew, '\n",
+ " 'kiwi, lemon, lime, orange, papaya, '\n",
+ " 'pineapple, rhubarb, juices made from '\n",
+ " 'allowed '\n",
+ " 'fruits<13><10><13><10>Vegetables: bell '\n",
+ " 'peppers, bok choy, cabbage (common), '\n",
+ " 'carrots, celery, corn, cucumbers, '\n",
+ " 'eggplant, green beans, kale, lettuce, '\n",
+ " 'okra, pumpkin, potatoes, sweet '\n",
+ " 'potatoes, squash, spinach, tomatoes, '\n",
+ " 'yam, juices made from allowed '\n",
+ " 'vegetables Fruits: apple, apricot, '\n",
+ " 'boysenberries, cherries, dried fruit, '\n",
+ " 'figs, grapefruit, mango, nectarine, '\n",
+ " 'pear, peach, persimmon, plum, '\n",
+ " 'pomegranate, prunes, watermelon, '\n",
+ " 'juices made from fruits to '\n",
+ " 'limit<13><10><13><10>Vegetables: '\n",
+ " 'artichokes, asparagus, beets, '\n",
+ " 'broccoli, brussel sprouts, '\n",
+ " 'cauliflower, garlic, leeks, mushrooms, '\n",
+ " 'onions, peas (green, snow, sugar '\n",
+ " 'snap), juices made from vegetables to '\n",
+ " 'limit '\n",
+ " '<13><10><13><10><13><10>References<13><10>“Living '\n",
+ " 'with Gas in the Digestive Tract” '\n",
+ " 'brochure American Gastroenterological '\n",
+ " 'Association<13><10><13><10>McCray, S. '\n",
+ " '(2003). Lactose intolerance: '\n",
+ " 'considerations for the clinician. '\n",
+ " 'Practical Gastroenterology, 27(2), '\n",
+ " '21-42.<13><10><13><10>Gibson, P. R., & '\n",
+ " 'Shepherd, S. J. (2010). Evidence?based '\n",
+ " 'dietary management of functional '\n",
+ " 'gastrointestinal symptoms: The FODMAP '\n",
+ " 'approach. Journal of gastroenterology '\n",
+ " 'and hepatology, 25(2), '\n",
+ " '252-258.<13><10><13><10>Not for '\n",
+ " 'reproduction or publication without '\n",
+ " 'permission<13><10>Direct inquiries to '\n",
+ " 'Digestive Health Center (Stanford '\n",
+ " 'Health Care) NDS '\n",
+ " '(dietitian) 7/2015 <13><10><13><10>',\n",
+ " 'text': 'Hi! <13><10><13><10>I completed my course '\n",
+ " 'of medication, but wanted to note that I '\n",
+ " 'felt gassiness, more than normal belching '\n",
+ " 'and bloating, and occasional nausea '\n",
+ " 'throughout the course of medication. '\n",
+ " '<13><10><13><10>Those symptoms have '\n",
+ " 'subsided since completing the course, but '\n",
+ " 'thought I should report that it didn’t get '\n",
+ " 'better throughout the 14 days. '\n",
+ " '<13><10><13><10>Is there any cause for '\n",
+ " 'concern or anything I should be looking '\n",
+ " 'out for going forward? ',\n",
+ " 'thread_id': '253971943'},\n",
+ " 'score': 0.49942109,\n",
+ " 'values': []},\n",
+ " {'id': '254979364',\n",
+ " 'metadata': {'model': 'sentence-transformers/all-mpnet-base-v2',\n",
+ " 'response': 'Hello Denita,<13><10><13><10>A in '\n",
+ " 'office visit to needed to chart weight '\n",
+ " 'and height, that are required by '\n",
+ " 'insurances and for the doctor to '\n",
+ " 'discuss weight loss options. '\n",
+ " '<13><10>Please give out office a call '\n",
+ " 'to schedule an in office appointment. '\n",
+ " '<13><10><13><10>Thank '\n",
+ " 'you,<13><10>Angela M ,MA',\n",
+ " 'text': 'Hi Dr. Alper, <13><10><13><10>I am '\n",
+ " 'concerned about my recent weight regain '\n",
+ " 'that currently puts me at 235 lbs - post '\n",
+ " 'gastric sleeve done June 2016. '\n",
+ " '<13><10><13><10>I am very fearful of this '\n",
+ " 'regain and I am requesting a prescription '\n",
+ " 'for the weight loss drug Ozempic. '\n",
+ " '<13><10><13><10>Please kindly me know the '\n",
+ " 'next steps and or your thoughts on moving '\n",
+ " 'forward with my request. '\n",
+ " '<13><10><13><10>Thank you, <13><10>Denita '\n",
+ " 'Canton',\n",
+ " 'thread_id': '254979364'},\n",
+ " 'score': 0.494397163,\n",
+ " 'values': []},\n",
+ " {'id': '254798955',\n",
+ " 'metadata': {'model': 'sentence-transformers/all-mpnet-base-v2',\n",
+ " 'response': 'Hello Linda, '\n",
+ " '<13><10><13><10><13><10><13><10>We do '\n",
+ " 'not recommend you use expired '\n",
+ " 'medications. Please discard. Are the '\n",
+ " 'doses '\n",
+ " 'different?<13><10><13><10><13><10><13><10> '\n",
+ " 'Best Regards,<13><10><13><10>Perla '\n",
+ " 'Lara, MA, 1/6/2025, 8:17 '\n",
+ " 'AM<13><10><13><10>Samaritan Internal '\n",
+ " 'Medicine<13><10>2410 Samaritan Dr. '\n",
+ " 'Suite 201<13><10>San Jose, CA '\n",
+ " '95124<13><10>PH. 408-371-9010 '\n",
+ " '<13><10><13><10><13><10>',\n",
+ " 'text': 'Hello Dr Gubbala. Happy new year. Last '\n",
+ " 'year before I went to the hospital for my '\n",
+ " 'knee surgery I ordered Ozempic. I have '\n",
+ " 'that one but it expired last month. Is it '\n",
+ " 'safe to use or should I throw away and use '\n",
+ " 'the one just ordered. Thank '\n",
+ " 'you<13><10>Linda',\n",
+ " 'thread_id': '254798955'},\n",
+ " 'score': 0.483372629,\n",
+ " 'values': []},\n",
+ " {'id': '255065763',\n",
+ " 'metadata': {'model': 'sentence-transformers/all-mpnet-base-v2',\n",
+ " 'response': 'Hi Luis,<13><10><13><10>My name is '\n",
+ " 'Christian Martinez, MPA, PA-C. I am a '\n",
+ " 'covering clinician for your primary '\n",
+ " 'care doctor, Tsai, Jennifer. '\n",
+ " '<13><10><13><10>Thank you for reaching '\n",
+ " 'out. Ozempic (semaglutide) is a '\n",
+ " 'medication that can be used for weight '\n",
+ " 'loss in certain cases. It is primarily '\n",
+ " 'used to manage type 2 diabetes, but it '\n",
+ " 'has also been shown to help with '\n",
+ " 'weight loss. <13><10><13><10>To '\n",
+ " 'determine if Ozempic is a suitable '\n",
+ " 'option for you, we would need to '\n",
+ " 'review your medical history, current '\n",
+ " 'health status, and any potential '\n",
+ " 'contraindications. I recommend '\n",
+ " 'scheduling an appointment so you can '\n",
+ " 'discuss this in more detail and '\n",
+ " 'evaluate if it is appropriate for you. '\n",
+ " 'You can use the Stanford MyHealth app '\n",
+ " 'to schedule the '\n",
+ " 'appointment.<13><10><13><10>Best,<13><10><13><10>Christian '\n",
+ " 'Eloy Martinez, PA',\n",
+ " 'text': 'Hi Dr Tsai, <13><10>I forgot to mention at '\n",
+ " 'my last visit that i also wanted to '\n",
+ " 'discuss the use of ozempic for weight '\n",
+ " 'loss. I wanted to see if that was an '\n",
+ " 'option for me. ',\n",
+ " 'thread_id': '255065763'},\n",
+ " 'score': 0.478905529,\n",
+ " 'values': []},\n",
+ " {'id': '253858581',\n",
+ " 'metadata': {'model': 'sentence-transformers/all-mpnet-base-v2',\n",
+ " 'response': 'Good Morning Mr. '\n",
+ " 'Shaw,<13><10><13><10>My name is '\n",
+ " 'Norris, Medical Assistant here in '\n",
+ " 'Stanford family medicine (Pleasanton). '\n",
+ " 'I believe it would be beneficial for '\n",
+ " 'you to touch base with the Doctor to '\n",
+ " 'go over any potential interactions and '\n",
+ " 'care plans before starting the '\n",
+ " 'medication. The appointment could be '\n",
+ " 'done via Video visit for your '\n",
+ " 'convenience. You may reach out to our '\n",
+ " 'schedulers at 925-534-6500 or via the '\n",
+ " 'MyHealth app if you are comfortable '\n",
+ " 'using that '\n",
+ " 'instead.<13><10><13><10>Thank you so '\n",
+ " 'much for your time.<13><10>-Norris, MA',\n",
+ " 'text': 'Hi Dr Luong,<13><10><13><10>I read up side '\n",
+ " 'effects, there was mention of interactions '\n",
+ " '- high blood pressure, (active) stomach '\n",
+ " 'ulcers.<13><10><13><10>Would there be any '\n",
+ " 'concerns with these interactions taking '\n",
+ " 'tadalafil?<13><10><13><10>Thank you.',\n",
+ " 'thread_id': '253858581'},\n",
+ " 'score': 0.47121942,\n",
+ " 'values': []}],\n",
+ " 'namespace': 'subsample-space',\n",
+ " 'usage': {'read_units': 6}}\n"
+ ]
+ }
+ ],
+ "source": [
+ "vector = embeddings_model.embed_query(\"No side effects noted so far. It's been easy to tolerate this drug while Ozempic\")\n",
+ "response = index.query(\n",
+ " namespace=\"subsample-space\",\n",
+ " vector=vector,\n",
+ " top_k=10,\n",
+ " include_values=False,\n",
+ " include_metadata=True\n",
+ ")\n",
+ " \n",
+ "print(response)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# evaluation:\n",
+ "focus on one provider's response to see the similarity among patients\n",
+ "closest response from the same provider "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# index_name = \"quickstart-py\"\n",
+ "# if not pc.has_index(index_name):\n",
+ "# pc.create_index_for_model(\n",
+ "# name=index_name,\n",
+ "# cloud=\"aws\",\n",
+ "# region=\"us-east-1\",\n",
+ "# embed={\n",
+ "# \"model\":\"llama-text-embed-v2\",\n",
+ "# \"field_map\":{\"text\": \"chunk_text\"}\n",
+ "# }\n",
+ "# )\n",
+ "# # Target the index\n",
+ "# dense_index = pc.Index(index_name)\n",
+ "\n",
+ "# # Upsert the records in batches\n",
+ "# BATCH_SIZE = 96\n",
+ "# for i in range(0, len(records), BATCH_SIZE):\n",
+ "# batch = records[i:i + BATCH_SIZE]\n",
+ "# dense_index.upsert_records(\"example-namespace\", batch)\n",
+ "# # Small delay between batches\n",
+ "# time.sleep(1)\n",
+ "\n",
+ "# # Wait for the upserted vectors to be indexed\n",
+ "# import time\n",
+ "# time.sleep(10)\n",
+ "# # View stats for the index\n",
+ "# stats = dense_index.describe_index_stats()\n",
+ "# print(stats)\n",
+ "# # Search the dense index and rerank results\n",
+ "# query = \"Chiang\"\n",
+ "# reranked_results = dense_index.search(\n",
+ "# namespace=\"example-namespace\",\n",
+ "# query={\n",
+ "# \"top_k\": 10,\n",
+ "# \"inputs\": {\n",
+ "# 'text': query\n",
+ "# }\n",
+ "# },\n",
+ "# rerank={\n",
+ "# \"model\": \"bge-reranker-v2-m3\",\n",
+ "# \"top_n\": 10,\n",
+ "# \"rank_fields\": [\"chunk_text\"]\n",
+ "# } \n",
+ "# )\n",
+ "\n",
+ "# # Print the reranked results\n",
+ "# for hit in reranked_results['result']['hits']:\n",
+ "# print(f\"id: {hit['_id']}, score: {round(hit['_score'], 2)}, text: {hit['fields']['chunk_text']}, Actual Response Sent to Patient: {hit['fields']['Actual Response Sent to Patient']}\")"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "sage_recommender",
+ "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.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/script/export_from_bigquery.py b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/script/export_from_bigquery.py
new file mode 100644
index 00000000..ceb3d50b
--- /dev/null
+++ b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/script/export_from_bigquery.py
@@ -0,0 +1,41 @@
+from google.cloud import bigquery
+import json
+import os
+
+def export_bigquery_to_json(output_file="messages_with_embeddings_export.json"):
+ client = bigquery.Client()
+
+ query = """
+ SELECT `index`, `Thread ID`, `Date Sent`, Subject, `Patient Message`, `Message Sender`,
+ `Actual Response Sent to Patient`, `Recipient Names`, `Recipient IDs`,
+ `Message Department`, `Department Specialty Title`, `embeddings`
+ FROM `som-nero-phi-jonc101.rag_embedding_R01.messages_with_embeddings`
+ """
+
+ query_job = client.query(query)
+ results = query_job.result()
+
+ data = []
+ for row in results:
+ data.append({
+ "id": row["index"],
+ "thread_id": row["Thread ID"],
+ "date_sent": str(row["Date Sent"]), # convert timestamp to string
+ "subject": row["Subject"],
+ "patient_message": row["Patient Message"],
+ "message_sender": row["Message Sender"],
+ "actual_response": row["Actual Response Sent to Patient"],
+ "recipient_names": row["Recipient Names"],
+ "recipient_ids": row["Recipient IDs"],
+ "message_department": row["Message Department"],
+ "department_specialty_title": row["Department Specialty Title"],
+ "embedding": row["embeddings"]
+ })
+
+ with open(output_file, "w") as f:
+ json.dump(data, f)
+
+ print(f"Exported {len(data)} records to {output_file}")
+
+if __name__ == "__main__":
+ export_bigquery_to_json()
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/script/query_logger.py b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/script/query_logger.py
new file mode 100644
index 00000000..886368ff
--- /dev/null
+++ b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/script/query_logger.py
@@ -0,0 +1,87 @@
+import logging
+from datetime import datetime
+import os
+
+def setup_logging(method = "strictest", run = "generated_question_set_1"):
+ """
+ Set up logging configuration to write to both file and console.
+ Returns the logger instance.
+ """
+ # Create data directory if it doesn't exist
+ os.makedirs(f"../{method}/{run}/logs", exist_ok=True)
+
+ # Create log filename with timestamp
+ log_filename = f"../{method}/{run}/logs/query_log_{datetime.now().strftime('%Y%m%d_%H%M%S')}.txt"
+
+ # Configure logging
+ logger = logging.getLogger('query_logger')
+ logger.setLevel(logging.INFO)
+
+ # Remove any existing handlers to prevent duplicates
+ if logger.handlers:
+ logger.handlers.clear()
+
+ # Create formatters
+ formatter = logging.Formatter('%(asctime)s - %(message)s')
+
+ # File handler
+ file_handler = logging.FileHandler(log_filename)
+ file_handler.setFormatter(formatter)
+ logger.addHandler(file_handler)
+
+ # Console handler
+ console_handler = logging.StreamHandler()
+ console_handler.setFormatter(formatter)
+ logger.addHandler(console_handler)
+
+ # Prevent propagation to root logger to avoid duplicate messages
+ logger.propagate = False
+
+ return logger
+
+def log_original_message(logger, original_query_message):
+ """Log original message"""
+ logger.info("Original Message:")
+ logger.info(f"original_query_message: {original_query_message}")
+
+def log_query_parameters(logger, query_message, receiver, department, specialty):
+ """Log query parameters"""
+ logger.info("Query Parameters:")
+ logger.info(f"query_message: {query_message}")
+ logger.info(f"receiver: {receiver}")
+ logger.info(f"department: {department}")
+ logger.info(f"specialty: {specialty}")
+
+def log_results(logger, results, beautiful_print_thread_func, answer_question_paired_data_dedup):
+ """Log query results"""
+ logger.info(f"\nNumber of results: {len(results)}")
+
+ if len(results) > 0:
+ for row in results:
+ logger.info("##" * 40 + "START" + "##" * 40)
+ # Log personalization information if available
+ if 'personalization_tier' in row and 'personalized_score' in row:
+ logger.info(f"[{row['personalization_tier']}] Score: {row['personalized_score']:.3f} (CosSim: {row['cosine_similarity']:.3f})")
+ else:
+ logger.info(f"✅ similarity: {row['cosine_similarity']:.4f}")
+
+ logger.info(f"Sender: {row['Message Sender']} -> the retrieved similar message : {row['Patient Message']}")
+ logger.info(f"Provider's response to this similar message: {row['Actual Response Sent to Patient']}")
+
+ # Log tier information if available (either retrieval_tier or personalization_tier)
+ if 'retrieval_tier' in row:
+ logger.info(f"This result is from tier: {row['retrieval_tier']}")
+ elif 'personalization_tier' in row:
+ logger.info(f"This result is from tier: {row['personalization_tier']}")
+
+ logger.info("-----------printing the whole thread-------------")
+ # Get the thread output as a string and log it
+ thread_output = beautiful_print_thread_func(row["Thread ID"], answer_question_paired_data_dedup)
+ logger.info(thread_output)
+ logger.info("##" * 40 + "END" + "##" * 40)
+ else:
+ logger.info("No results found matching the criteria")
+
+def log_error(logger, error_message):
+ """Log error messages"""
+ logger.error(f"Error getting results: {str(error_message)}")
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/script/update_ssh_ip.sh b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/script/update_ssh_ip.sh
new file mode 100755
index 00000000..3ff0ca7b
--- /dev/null
+++ b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Embedding_Pilot_Exp/script/update_ssh_ip.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+# Check if host and IP were provided
+if [ $# -ne 2 ]; then
+ echo "Usage: ./update_ssh_ip.sh "
+ exit 1
+fi
+
+HOST_NAME="$1"
+NEW_IP="$2"
+CONFIG_FILE="$HOME/.ssh/config"
+BACKUP_FILE="$CONFIG_FILE.bak"
+
+echo "Updating SSH config for host: $HOST_NAME with IP: $NEW_IP"
+echo "Backing up config file to: $BACKUP_FILE"
+
+# Backup existing config
+cp "$CONFIG_FILE" "$BACKUP_FILE"
+
+# Function to generate the new block
+generate_block() {
+ IDENTITY_FILE="~/.ssh/$HOST_NAME"
+ USER=$(grep -A2 "^Host $HOST_NAME" "$BACKUP_FILE" | grep "User " | awk '{print $2}')
+ if [ -z "$USER" ]; then
+ USER="$USER_NAME" # default fallback
+ fi
+ cat < "$CONFIG_FILE.tmp"
+
+mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
+
+# Append the new block
+echo "" >> "$CONFIG_FILE"
+generate_block >> "$CONFIG_FILE"
+
+echo "Done. Updated SSH block for $HOST_NAME:"
+grep -A3 "^Host $HOST_NAME" "$CONFIG_FILE"
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Notebook/Adult_ED_Cohort_no_allergy_debug.ipynb b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Notebook/Adult_ED_Cohort_no_allergy_debug.ipynb
index e8a159bf..c16ef2a6 100644
--- a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Notebook/Adult_ED_Cohort_no_allergy_debug.ipynb
+++ b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Notebook/Adult_ED_Cohort_no_allergy_debug.ipynb
@@ -128,7 +128,7 @@
},
{
"cell_type": "code",
- "execution_count": 167,
+ "execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
@@ -280,13 +280,13 @@
},
{
"cell_type": "code",
- "execution_count": 473,
+ "execution_count": 83,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "61579f243f884a839a1fc4767b7a53f6",
+ "model_id": "f6b5837f047a4dab9e4ea1a33a373156",
"version_major": 2,
"version_minor": 0
},
@@ -300,7 +300,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "f36be6f47e204624a9dcd1d0b6eeaba5",
+ "model_id": "ca71b14dbe814acb949e297416b341c0",
"version_major": 2,
"version_minor": 0
},
@@ -371,7 +371,7 @@
" USING\n",
" (anon_id)\n",
" WHERE\n",
- " DATE_DIFF(CAST(mc.order_time_jittered_utc as DATE), demo.BIRTH_DATE_JITTERED, YEAR) >= 18\n",
+ " DATE_DIFF(CAST(mc.order_time_jittered_utc as DATE), demo.BIRTH_DATE_JITTERED, YEAR) >= 0 # include all patients\n",
" \n",
")\n",
"\n",
@@ -410,14 +410,14 @@
},
{
"cell_type": "code",
- "execution_count": 474,
+ "execution_count": 84,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the unique order number for all urine culture is 480007\n"
+ "the unique order number for all urine culture is 544776\n"
]
}
],
@@ -435,13 +435,13 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "f1e97cf7b8eb4099aa632a8424a2640f",
+ "model_id": "f7c6f3471d1942de961cd80dedf87485",
"version_major": 2,
"version_minor": 0
},
@@ -455,7 +455,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "843625a734264eccbf909eb7efeedac7",
+ "model_id": "e524f1228c0a421eaf45ffd5000f5b34",
"version_major": 2,
"version_minor": 0
},
@@ -500,7 +500,7 @@
" op.order_proc_id_coded = lr.order_id_coded\n",
" WHERE\n",
" op.order_type LIKE \"Microbiology%\"\n",
- " # AND op.ordering_mode LIKE \"Inpatient\"\n",
+ " AND op.ordering_mode LIKE \"Inpatient\"\n",
" AND (op.description LIKE \"%URINE%\")\n",
"), # Only keep urine culture\n",
"\n",
@@ -787,61 +787,357 @@
},
{
"cell_type": "code",
- "execution_count": 230,
+ "execution_count": 85,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the unique order number for adult urine only culture is 479615\n",
- "the unique patient encounter number for adult urine only culture is 439923\n"
+ "the unique order number for adult urine only culture is 228223\n"
]
}
],
"source": [
- "condition = (starting_cohort['was_positive'] == 1) & (starting_cohort[\"organism\"].isnull())\n",
- "print(\"the unique order number for adult urine only culture is {}\".format(find_unique_orders(starting_cohort[~condition])))\n",
- "print(\"the unique patient encounter number for adult urine only culture is {}\".format(find_unique_patient_encounter(starting_cohort[~condition])))"
+ "print(\"the unique order number for adult urine only culture is {}\".format(find_unique_orders(starting_cohort)))"
]
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the unique order number for adult urine only culture is 480007\n"
+ "the unique order number for adult urine only culture is 228223\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/var/folders/r3/mc640yrn2_70d_7zvw5cc3q00000gn/T/ipykernel_95596/1511061011.py:4: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
+ " print(\"the unique patient encounter number for adult urine only culture is {}\".format(find_unique_patient_encounter(starting_cohort[~condition])))\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the unique patient encounter number for adult urine only culture is 201105\n"
]
}
],
"source": [
- "print(\"the unique order number for adult urine only culture is {}\".format(find_unique_orders(starting_cohort)))"
+ "condition = (starting_cohort['was_positive'] == 1) & (starting_cohort[\"organism\"].isnull())\n",
+ "print(\"the unique order number for adult urine only culture is {}\".format(find_unique_orders(starting_cohort[~condition])))\n",
+ "# starting_cohort = starting_cohort[~condition]\n",
+ "print(\"the unique patient encounter number for adult urine only culture is {}\".format(find_unique_patient_encounter(starting_cohort[~condition])))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
"
- ],
- "text/plain": [
- " anon_id pat_enc_csn_id_coded order_proc_id_coded \\\n",
- "0 JC1000013 15196628 325085592 \n",
- "1 JC1000013 15196628 325085592 \n",
- "2 JC1000013 15196628 325085592 \n",
- "3 JC1000013 15196628 325085592 \n",
- "4 JC1000013 15196628 325085592 \n",
- "5 JC1000013 15196628 325085592 \n",
- "6 JC1000013 15196628 325085592 \n",
- "7 JC1000013 15196628 325085592 \n",
- "8 JC1000013 15196628 325085592 \n",
- "9 JC1000013 15196628 325085592 \n",
- "\n",
- " order_time_jittered_utc result_time_jittered_utc ordering_mode \\\n",
- "0 2008-04-16 04:30:00+00:00 2008-04-17 01:22:00+00:00 Inpatient \n",
- "1 2008-04-16 04:30:00+00:00 2008-04-17 01:22:00+00:00 Inpatient \n",
- "2 2008-04-16 04:30:00+00:00 2008-04-17 01:22:00+00:00 Inpatient \n",
- "3 2008-04-16 04:30:00+00:00 2008-04-17 01:22:00+00:00 Inpatient \n",
- "4 2008-04-16 04:30:00+00:00 2008-04-17 01:22:00+00:00 Inpatient \n",
- "5 2008-04-16 04:30:00+00:00 2008-04-17 01:22:00+00:00 Inpatient \n",
- "6 2008-04-16 04:30:00+00:00 2008-04-17 01:22:00+00:00 Inpatient \n",
- "7 2008-04-16 04:30:00+00:00 2008-04-17 01:22:00+00:00 Inpatient \n",
- "8 2008-04-16 04:30:00+00:00 2008-04-17 01:22:00+00:00 Inpatient \n",
- "9 2008-04-16 04:30:00+00:00 2008-04-17 01:22:00+00:00 Inpatient \n",
- "\n",
- " medication_time medication_name \\\n",
- "0 2008-04-22 12:10:00+00:00 HYDROCODONE-ACETAMINOPHEN 5-500 MG PO TABS \n",
- "1 2008-04-22 15:00:00+00:00 ENOXAPARIN 30 MG/0.3 ML SC SYRG \n",
- "2 2008-04-22 15:00:00+00:00 FERROUS SULFATE 325 MG (65 MG IRON) PO TABS \n",
- "3 2008-04-22 16:27:00+00:00 HYDROCODONE-ACETAMINOPHEN 5-500 MG PO TABS \n",
- "4 2008-04-22 22:04:00+00:00 HYDROCODONE-ACETAMINOPHEN 5-500 MG PO TABS \n",
- "5 2008-04-23 02:42:24+00:00 HYDROCODONE-ACETAMINOPHEN 5-500 MG PO TABS \n",
- "6 2008-04-23 03:05:30+00:00 ENOXAPARIN 30 MG/0.3 ML SC SYRG \n",
- "7 2008-04-23 07:09:32+00:00 HYDROCODONE-ACETAMINOPHEN 5-500 MG PO TABS \n",
- "8 2008-04-23 13:24:20+00:00 HYDROCODONE-ACETAMINOPHEN 5-500 MG PO TABS \n",
- "9 2008-04-23 15:09:28+00:00 FERROUS SULFATE 325 MG (65 MG IRON) PO TABS \n",
- "\n",
- " order_med_id_coded medication_action \n",
- "0 325234169 Given \n",
- "1 325234165 Given \n",
- "2 325234166 Given \n",
- "3 325234169 Given \n",
- "4 325234169 Given \n",
- "5 325234169 Given \n",
- "6 325234165 Given \n",
- "7 325234169 Given \n",
- "8 325234169 Given \n",
- "9 325234166 Given "
- ]
- },
- "execution_count": 18,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "current_med_original_no_mapped_with_12_hours_inpatient_temp.head(10)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 19,
+ "execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the number of unique orders for current_med_original_no_mapped_with_12_hours_inpatient_temp is 228555\n",
- "the number of unique patient encounters for current_med_original_no_mapped_with_12_hours_inpatient_temp is 201213\n"
+ "the number of unique orders for current_med_original_no_mapped_with_12_hours_inpatient_temp is 228223\n",
+ "the number of unique patient encounters for current_med_original_no_mapped_with_12_hours_inpatient_temp is 201105\n"
]
}
],
@@ -2296,7 +2025,7 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
@@ -2308,18 +2037,18 @@
},
{
"cell_type": "code",
- "execution_count": 232,
+ "execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the unique patient encounter number with current medication is 152546\n",
- "the percentage of unique patient encounter with any medication (out of all inpatients) is 75.81%\n",
+ "the unique patient encounter number with current medication is 152445\n",
+ "the percentage of unique patient encounter with any medication (out of all inpatients) is 75.80%\n",
"----------------------------------------------------------\n",
- "the unique culture order with current medication is 178984\n",
- "the percentage of unique culture order with any medication (out of all inpatients) is 78.31%\n"
+ "the unique culture order with current medication is 178663\n",
+ "the percentage of unique culture order with any medication (out of all inpatients) is 78.28%\n"
]
}
],
@@ -2350,18 +2079,18 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the unique patient encounter number with current abx medication is 108872\n",
- "the percentage of unique patient encounter with current abx medication(out of any med) is 71.37%\n",
+ "the unique patient encounter number with current abx medication is 108783\n",
+ "the percentage of unique patient encounter with current abx medication(out of any med) is 71.36%\n",
"----------------------------------------------------------\n",
- "the unique culture order with current abx medication is 134150\n",
- "the percentage of unique culture order with current abx medication (out of any med) is 74.95%\n"
+ "the unique culture order with current abx medication is 133842\n",
+ "the percentage of unique culture order with current abx medication (out of any med) is 74.91%\n"
]
}
],
@@ -2407,9 +2136,38 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 31,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "ba8659eefe614caf8b058134d6b71560",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Query is running: 0%| |"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "c60209d6cbc04bb98d29fc2e4322439a",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Downloading: 0%| |"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"%%bigquery --use_rest_api df_hosp_ward_info\n",
"WITH\n",
@@ -2634,7 +2392,7 @@
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
@@ -2643,18 +2401,18 @@
},
{
"cell_type": "code",
- "execution_count": 27,
+ "execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the unique patient encounter number with ED order is 119737\n",
+ "the unique patient encounter number with ED order is 119676\n",
"the percentage of unique patient encounter with ED order (out of all inpatients) is 59.51%\n",
"----------------------------------------------------------\n",
- "the unique culture order with ED order is 132026\n",
- "the percentage of unique culture order with ED order (out of all inpatients) is 57.77%\n"
+ "the unique culture order with ED order is 131878\n",
+ "the percentage of unique culture order with ED order (out of all inpatients) is 57.78%\n"
]
}
],
@@ -2680,20 +2438,20 @@
},
{
"cell_type": "code",
- "execution_count": 28,
+ "execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the unique patient encounter number with ED order and any medication is 108095\n",
- "the percentage of unique patient encounter with ED order and any medication (out of all ED inpatients) is 90.28%\n",
+ "the unique patient encounter number with ED order and any medication is 108034\n",
+ "the percentage of unique patient encounter with ED order and any medication (out of all ED inpatients) is 90.27%\n",
"----------------------------------------------------------\n",
- "the unique culture order with ED order and any medication is 120310\n",
- "the percentage of unique culture order with ED order and any medication (out of all ED inpatients) is 91.13%\n",
+ "the unique culture order with ED order and any medication is 120162\n",
+ "the percentage of unique culture order with ED order and any medication (out of all ED inpatients) is 91.12%\n",
"----------------------------------------------------------\n",
- "the percentage of unique patient encounter with ED order and any medication (out of all inpatients with any med) is 70.86%\n"
+ "the percentage of unique patient encounter with ED order and any medication (out of all inpatients with any med) is 70.87%\n"
]
}
],
@@ -2718,20 +2476,20 @@
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": 35,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the unique patient encounter number with ED order and abx medication is 74797\n",
- "the percentage of unique patient encounter with ED order and abx medication (out of all ED inpatients) is 62.47%\n",
+ "the unique patient encounter number with ED order and abx medication is 74743\n",
+ "the percentage of unique patient encounter with ED order and abx medication (out of all ED inpatients) is 62.45%\n",
"----------------------------------------------------------\n",
- "the unique culture order with ED order and abx medication is 86254\n",
- "the percentage of unique culture order with ED order and abx medication (out of all ED inpatients) is 65.33%\n",
+ "the unique culture order with ED order and abx medication is 86113\n",
+ "the percentage of unique culture order with ED order and abx medication (out of all ED inpatients) is 65.30%\n",
"----------------------------------------------------------\n",
- "the percentage of unique patient encounter with ED order and abx medication (out of all inpatients with abx med) is 68.70%\n"
+ "the percentage of unique patient encounter with ED order and abx medication (out of all inpatients with abx med) is 68.71%\n"
]
}
],
@@ -2754,86 +2512,6 @@
"print(\"the percentage of unique patient encounter with ED order and abx medication (out of all inpatients with abx med) is {:.2f}%\".format(percentage))"
]
},
- {
- "cell_type": "code",
- "execution_count": 31,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "86254"
- ]
- },
- "execution_count": 31,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "abx_med_inp_ed_order_cnt"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 32,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "134150"
- ]
- },
- "execution_count": 32,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "abx_med_inp_order_cnt"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 30,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "0.6429668281774134"
- ]
- },
- "execution_count": 30,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "abx_med_inp_ed_order_cnt/abx_med_inp_order_cnt"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 207,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "0.6689215125950063"
- ]
- },
- "execution_count": 207,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "78417/117229"
- ]
- },
{
"cell_type": "markdown",
"metadata": {},
@@ -2852,7 +2530,7 @@
},
{
"cell_type": "code",
- "execution_count": 33,
+ "execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
@@ -2882,17 +2560,17 @@
},
{
"cell_type": "code",
- "execution_count": 41,
+ "execution_count": 37,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the unique patient encounter number with ED order and abx medication empirical is 73286\n",
+ "the unique patient encounter number with ED order and abx medication empirical is 73228\n",
"the percentage of unique patient encounter with ED order and empirical abx medication \n",
"(out of all ED inpatients with abx med) \n",
- "is 97.98%\n"
+ "is 97.97%\n"
]
}
],
@@ -2905,14 +2583,14 @@
},
{
"cell_type": "code",
- "execution_count": 35,
+ "execution_count": 38,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the unique order number with ED order and abx medication empirical is 83383\n",
+ "the unique order number with ED order and abx medication empirical is 83245\n",
"the percentage of unique order with ED order and empirical abx medication \n",
"(out of all ED inpatients with abx med) \n",
"is 96.67%\n"
@@ -2928,7 +2606,7 @@
},
{
"cell_type": "code",
- "execution_count": 36,
+ "execution_count": null,
"metadata": {},
"outputs": [
{
@@ -2940,29 +2618,29 @@
}
],
"source": [
- "# Define table ID\n",
- "table_id = \"som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.step_5_abx_med_inp_ed_empirical\"\n",
+ "# # Define table ID\n",
+ "# table_id = \"som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.step_5_abx_med_inp_ed_empirical\"\n",
"\n",
- "# Define job config with WRITE_TRUNCATE to replace the table\n",
- "job_config = bigquery.LoadJobConfig(\n",
- " write_disposition=\"WRITE_TRUNCATE\", # This replaces the table\n",
- " autodetect=True, # Automatically detect schema\n",
- " source_format=bigquery.SourceFormat.PARQUET\n",
- ")\n",
+ "# # Define job config with WRITE_TRUNCATE to replace the table\n",
+ "# job_config = bigquery.LoadJobConfig(\n",
+ "# write_disposition=\"WRITE_TRUNCATE\", # This replaces the table\n",
+ "# autodetect=True, # Automatically detect schema\n",
+ "# source_format=bigquery.SourceFormat.PARQUET\n",
+ "# )\n",
"\n",
- "# Upload DataFrame to BigQuery\n",
- "job = client.load_table_from_dataframe(\n",
- " abx_med_inp_ed_empirical, table_id, job_config=job_config\n",
- ")\n",
+ "# # Upload DataFrame to BigQuery\n",
+ "# job = client.load_table_from_dataframe(\n",
+ "# abx_med_inp_ed_empirical, table_id, job_config=job_config\n",
+ "# )\n",
"\n",
- "job.result() # Wait for the job to complete\n",
+ "# job.result() # Wait for the job to complete\n",
"\n",
- "print(f\"Table {table_id} replaced with new data from CSV.\")"
+ "# print(f\"Table {table_id} replaced with new data from CSV.\")"
]
},
{
"cell_type": "code",
- "execution_count": 37,
+ "execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
@@ -2986,13 +2664,13 @@
},
{
"cell_type": "code",
- "execution_count": 233,
+ "execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "f2f6df1c6eb541129ec68adf551c0843",
+ "model_id": "97338a812e50469f9cb2e94caf02db74",
"version_major": 2,
"version_minor": 0
},
@@ -3006,7 +2684,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "803517437f904c309dc1e71bf53b743b",
+ "model_id": "e4f935df839845618a2b2886f4d8febf",
"version_major": 2,
"version_minor": 0
},
@@ -3081,18 +2759,18 @@
},
{
"cell_type": "code",
- "execution_count": 234,
+ "execution_count": 42,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the unique patient encounter number for final cohort is 55250\n",
- "the percentage of unique patient encounter for final cohort (out of all ED inpatients with empirical abx med) is 75.39%\n",
+ "the unique patient encounter number for final cohort is 55225\n",
+ "the percentage of unique patient encounter for final cohort (out of all ED inpatients with empirical abx med) is 75.42%\n",
"----------------------------------------------------------\n",
- "the unique order number for final cohort is 57182\n",
- "the percentage of unique culture order for final cohort (out of all ED inpatients with empirical abx med) is 68.58%\n"
+ "the unique order number for final cohort is 57154\n",
+ "the percentage of unique culture order for final cohort (out of all ED inpatients with empirical abx med) is 68.66%\n"
]
}
],
@@ -3123,15 +2801,15 @@
},
{
"cell_type": "code",
- "execution_count": 235,
+ "execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the unique patient encounter number with valid given medication is 47048\n",
- "the unique order number with valid given medication is 48737\n"
+ "the unique patient encounter number with valid given medication is 47028\n",
+ "the unique order number with valid given medication is 48714\n"
]
}
],
@@ -3148,372 +2826,27 @@
},
{
"cell_type": "code",
- "execution_count": 50,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
"
- ],
- "text/plain": [
- " Year unique_order_starting_cohort unique_order_inp_cohort_merged diff\n",
- "0 1999 85 85 0\n",
- "1 2000 2943 2943 0\n",
- "2 2001 2888 2888 0\n",
- "3 2002 2426 2426 0\n",
- "4 2003 2335 2335 0\n",
- "5 2004 2294 2294 0\n",
- "6 2005 2206 2206 0\n",
- "7 2006 2015 2015 0\n",
- "8 2007 1 1 0\n",
- "9 2008 16122 6311 9811\n",
- "10 2009 19489 6764 12725\n",
- "11 2010 18549 6083 12466\n",
- "12 2011 18155 3944 14211\n",
- "13 2012 18334 2663 15671\n",
- "14 2013 19024 2854 16170\n",
- "15 2014 19759 3460 16299\n",
- "16 2015 25299 12193 13106\n",
- "17 2016 32936 20028 12908\n",
- "18 2017 34957 22556 12401\n",
- "19 2018 39314 24457 14857\n",
- "20 2019 39048 24105 14943\n",
- "21 2020 33811 20561 13250\n",
- "22 2021 38240 23041 15199\n",
- "23 2022 41856 24124 17732\n",
- "24 2023 46894 25481 21413\n",
- "25 2024 1027 522 505"
- ]
- },
- "execution_count": 14,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# # unique_order_starting_cohort[\"order_time_jittered_utc\"].dt.year.value_counts().sort_index()\n",
- "# # Combine the value_counts from both dataframes\n",
- "# combined_counts = pd.DataFrame({\n",
- "# \"unique_order_starting_cohort\": unique_order_starting_cohort[\"order_time_jittered_utc\"].dt.year.value_counts().sort_index(),\n",
- "# \"unique_order_inp_cohort_merged\": unique_order_inp_cohort_merged[\"order_time_jittered_utc\"].dt.year.value_counts().sort_index()\n",
- "# }).reset_index()\n",
- "\n",
- "# # Rename the columns for clarity\n",
- "# combined_counts.columns = [\"Year\", \"unique_order_starting_cohort\", \"unique_order_inp_cohort_merged\"]\n",
- "\n",
- "# # Display the combined dataframe\n",
- "# combined_counts[\"diff\"] = combined_counts[\"unique_order_starting_cohort\"] - combined_counts[\"unique_order_inp_cohort_merged\"]\n",
- "# combined_counts\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "current_med_original_no_mapped_with_12_hours_inpatient_temp"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "When medication_name is null, medication_action is always null.\n"
- ]
- }
- ],
- "source": [
- "# # Check if there are rows where medication_name is null but medication_action is not null\n",
- "# condition = current_med_original_no_mapped_with_12_hours_inpatient_temp[\n",
- "# current_med_original_no_mapped_with_12_hours_inpatient_temp[\"medication_name\"].isnull() &\n",
- "# current_med_original_no_mapped_with_12_hours_inpatient_temp[\"medication_action\"].notnull()\n",
- "# ]\n",
- "\n",
- "# # If the condition is empty, it means the combination is not possible\n",
- "# if condition.empty:\n",
- "# print(\"When medication_name is null, medication_action is always null.\")\n",
- "# else:\n",
- "# print(\"There are cases where medication_name is null but medication_action is not null.\")\n",
- "# print(condition)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 42,
+ "execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the number of unique orders for current_med_original_no_mapped_with_12_hours_inpatient_temp is 246340\n",
- "the number of unique patient encounters for current_med_original_no_mapped_with_12_hours_inpatient_temp is 233909\n"
+ "the number of unique orders for current_med_original_no_mapped_with_12_hours_inpatient_temp is 246280\n",
+ "the number of unique patient encounters for current_med_original_no_mapped_with_12_hours_inpatient_temp is 233852\n"
]
}
],
@@ -1797,7 +1110,7 @@
},
{
"cell_type": "code",
- "execution_count": 43,
+ "execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
@@ -1809,18 +1122,18 @@
},
{
"cell_type": "code",
- "execution_count": 44,
+ "execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the unique patient encounter number with current medication is 107419\n",
- "the percentage of unique patient encounter with any medication (out of all outpatients) is 45.92%\n",
+ "the unique patient encounter number with current medication is 107373\n",
+ "the percentage of unique patient encounter with any medication (out of all outpatients) is 45.91%\n",
"----------------------------------------------------------\n",
- "the unique culture order with current medication is 108704\n",
- "the percentage of unique culture order with any medication (out of all outpatients) is 44.13%\n"
+ "the unique culture order with current medication is 108657\n",
+ "the percentage of unique culture order with any medication (out of all outpatients) is 44.12%\n"
]
}
],
@@ -1841,28 +1154,20 @@
"print(\"the percentage of unique culture order with any medication (out of all outpatients) is {:.2f}%\".format(percentage))"
]
},
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### The above code shows that out of all inpatient encounter (**`N = 201213`**), `74.58%` (`n = 150068`) has medication (abx or non-abx)\n",
- "201213 --> 150068"
- ]
- },
{
"cell_type": "code",
- "execution_count": 56,
+ "execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the unique patient encounter number with current abx medication is 70936\n",
- "the percentage of unique patient encounter with current abx medication(out of any med) is 66.04%\n",
+ "the unique patient encounter number with current abx medication is 70917\n",
+ "the percentage of unique patient encounter with current abx medication(out of any med) is 66.05%\n",
"----------------------------------------------------------\n",
- "the unique culture order with current abx medication is 71683\n",
- "the percentage of unique culture order with current abx medication (out of any med) is 65.94%\n"
+ "the unique culture order with current abx medication is 71664\n",
+ "the percentage of unique culture order with current abx medication (out of any med) is 65.95%\n"
]
}
],
@@ -1885,641 +1190,75 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### The above code shows that out of all inpatient encounter with any medication `n = 150068`, `64.95%` (`n = 97468`) has abx medication\n",
- "201213 --> 150068 --> 97468"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# ------------------------ ED Inpatient Only --------------------"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Refactor Fateme's code for ward info in order to select ED order\n",
- "Reference: https://github.com/HealthRex/CDSS/blob/master/scripts/antibiotic-susceptibility/sql/queries/microbiology_cultures_ward_info.sql"
+ "# ----------- Empirical Med for Outpatient Only -----------"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
- "%%bigquery --use_rest_api df_hosp_ward_info\n",
- "WITH\n",
- "-- Step 1: Extract ER and ICU Information from adt Table\n",
- "temp_er_icu_info_adt AS (\n",
- " SELECT\n",
- " anon_id,\n",
- " pat_enc_csn_id_coded,\n",
- " CASE \n",
- " WHEN pat_class = 'Emergency' OR pat_class = 'Emergency Services' THEN 1\n",
- " ELSE 0\n",
- " END AS hosp_ward_ER,\n",
- " CASE \n",
- " WHEN pat_class = 'Intensive Care (IC)' THEN 1\n",
- " ELSE 0\n",
- " END AS hosp_ward_ICU,\n",
- " CASE \n",
- " WHEN pat_lv_of_care LIKE \"%Critical Care\" THEN 1\n",
- " ELSE 0\n",
- " END AS hosp_ward_Critical_Care\n",
- " FROM\n",
- " `som-nero-phi-jonc101.shc_core_2023.adt`\n",
- "),\n",
- "\n",
- "-- Step 2: Extract ER Information from order_proc Table\n",
- "temp_er_info_order_proc AS (\n",
- " SELECT\n",
- " anon_id,\n",
- " pat_enc_csn_id_coded,\n",
- " order_proc_id_coded,\n",
- " CASE \n",
- " WHEN proc_pat_class = 'Emergency' OR proc_pat_class = 'Emergency Services' THEN 1\n",
- " ELSE 0\n",
- " END AS hosp_ward_ER_order_proc\n",
- " FROM\n",
- " `som-nero-phi-jonc101.shc_core_2023.order_proc`\n",
- "),\n",
- "\n",
- "-- Step 3: Combine ER and ICU Information\n",
- "temp_combined_er_icu_info AS (\n",
- " SELECT\n",
- " adt.anon_id,\n",
- " adt.pat_enc_csn_id_coded,\n",
- " adt.hosp_ward_ER,\n",
- " adt.hosp_ward_ICU,\n",
- " adt.hosp_ward_Critical_Care,\n",
- " er.order_proc_id_coded,\n",
- " er.hosp_ward_ER_order_proc\n",
- " FROM\n",
- " temp_er_icu_info_adt adt\n",
- " LEFT JOIN\n",
- " temp_er_info_order_proc er\n",
- " ON\n",
- " adt.pat_enc_csn_id_coded = er.pat_enc_csn_id_coded\n",
- "),\n",
- "\n",
- "-- Step 4: Extract IP and OP Information from order_proc Table\n",
- "temp_ip_op_info AS (\n",
- " SELECT\n",
- " anon_id,\n",
- " pat_enc_csn_id_coded,\n",
- " order_proc_id_coded,\n",
- " order_time_jittered_utc,\n",
- " CASE \n",
- " WHEN ordering_mode = 'Inpatient' THEN 1\n",
- " ELSE 0\n",
- " END AS hosp_ward_IP,\n",
- " CASE \n",
- " WHEN ordering_mode = 'Outpatient' THEN 1\n",
- " ELSE 0\n",
- " END AS hosp_ward_OP\n",
- " FROM\n",
- " `som-nero-phi-jonc101.shc_core_2023.order_proc`\n",
- "),\n",
- "\n",
- "-- Step 5: Combine All Information into One Temporary Table\n",
- "temp_combined_hosp_ward_info AS (\n",
- " SELECT\n",
- " ipop.anon_id,\n",
- " ipop.pat_enc_csn_id_coded,\n",
- " ipop.order_proc_id_coded,\n",
- " ipop.order_time_jittered_utc,\n",
- " ipop.hosp_ward_IP,\n",
- " ipop.hosp_ward_OP,\n",
- " COALESCE(icu.hosp_ward_ER, 0) AS hosp_ward_ER_adt,\n",
- " COALESCE(icu.hosp_ward_ER_order_proc, 0) AS hosp_ward_ER_order_proc,\n",
- " COALESCE(icu.hosp_ward_ICU, 0) AS hosp_ward_ICU,\n",
- " COALESCE(icu.hosp_ward_Critical_Care, 0) AS hosp_ward_Critical_Care\n",
- " FROM\n",
- " temp_ip_op_info ipop\n",
- " LEFT JOIN\n",
- " temp_combined_er_icu_info icu\n",
- " ON\n",
- " ipop.pat_enc_csn_id_coded = icu.pat_enc_csn_id_coded AND ipop.order_proc_id_coded = icu.order_proc_id_coded\n",
- "),\n",
- "\n",
- "-- Step 6: Extract ICU stay based on transfer orders\n",
- "temp_cohortOfInterest AS (\n",
- " SELECT DISTINCT\n",
- " pat_enc_csn_id_coded,\n",
- " hosp_disch_time_jittered_utc\n",
- " FROM `som-nero-phi-jonc101.shc_core_2023.encounter`\n",
- " WHERE hosp_disch_time_jittered_utc IS NOT NULL\n",
- "),\n",
- "\n",
- "temp_ordersTransfer AS (\n",
- " SELECT DISTINCT\n",
- " pat_enc_csn_id_coded,\n",
- " description,\n",
- " level_of_care,\n",
- " service,\n",
- " order_inst_jittered_utc\n",
- " FROM `som-nero-phi-jonc101.shc_core_2023.order_proc` AS procedures\n",
- " WHERE (description LIKE \"CHANGE LEVEL OF CARE/TRANSFER PATIENT\" OR description LIKE \"ADMIT TO INPATIENT\") AND level_of_care IS NOT NULL\n",
- "),\n",
+ "# Group by the specified columns\n",
+ "grouped = abx_med_inp.groupby(['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc'])\n",
"\n",
- "temp_icuTransferCount AS (\n",
- " SELECT\n",
- " mc.pat_enc_csn_id_coded,\n",
- " COUNT(CASE WHEN level_of_care LIKE \"Critical Care\" THEN 1 END) AS numICUTransfers\n",
- " FROM\n",
- " `som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.microbiology_urine_cultures_cohort` mc # only change this to the starting cohort above\n",
- " LEFT JOIN\n",
- " temp_ordersTransfer ot\n",
- " ON\n",
- " mc.pat_enc_csn_id_coded = ot.pat_enc_csn_id_coded\n",
- " GROUP BY\n",
- " mc.pat_enc_csn_id_coded\n",
- "),\n",
+ "# Function to filter each group\n",
+ "def filter_group(group):\n",
+ " # Keep rows where:\n",
+ " # 1. medication_time is greater than culture order time but smaller than result time, OR\n",
+ " # 2. medication_time is within 6 hours before the culture order time\n",
+ " condition = (\n",
+ " ((group['medication_time'] > group['order_time_jittered_utc']) & \n",
+ " (group['medication_time'] < group['result_time_jittered_utc'])) | \n",
+ " ((group['medication_time'] >= (group['order_time_jittered_utc'] - pd.Timedelta(hours=12))) & \n",
+ " (group['medication_time'] <= group['order_time_jittered_utc'])\n",
+ " ))\n",
+ " return group[condition]\n",
"\n",
- "microbiology_cultures_with_icu_flag AS (\n",
- " SELECT DISTINCT\n",
- " mc.anon_id,\n",
- " mc.pat_enc_csn_id_coded,\n",
- " mc.order_proc_id_coded,\n",
- " mc.order_time_jittered_utc,\n",
- " CASE WHEN itc.numICUTransfers > 0 THEN 1 ELSE 0 END AS icu_flag\n",
- " FROM\n",
- " `som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.microbiology_urine_cultures_cohort` mc\n",
- " LEFT JOIN\n",
- " temp_icuTransferCount itc\n",
- " ON\n",
- " mc.pat_enc_csn_id_coded = itc.pat_enc_csn_id_coded\n",
- ")\n",
+ "# Apply the filter to each group\n",
+ "filtered_groups = [filter_group(group) for _, group in grouped]\n",
"\n",
- "-- Step 7: Create the Final Table with Correct Binary Indicators for Each Hospital Ward and ICU Flag\n",
- "SELECT\n",
- " mc.anon_id,\n",
- " mc.pat_enc_csn_id_coded,\n",
- " mc.order_proc_id_coded,\n",
- " mc.order_time_jittered_utc,\n",
- " MAX(CASE WHEN chwi.hosp_ward_IP = 1 THEN 1 ELSE 0 END) AS hosp_ward_IP,\n",
- " MAX(CASE WHEN chwi.hosp_ward_OP = 1 THEN 1 ELSE 0 END) AS hosp_ward_OP,\n",
- " MAX(CASE WHEN chwi.hosp_ward_ER_adt = 1 OR chwi.hosp_ward_ER_order_proc = 1 THEN 1 ELSE 0 END) AS hosp_ward_ER,\n",
- " MAX(\n",
- " CASE \n",
- " WHEN chwi.hosp_ward_ICU = 1 THEN 1 \n",
- " WHEN icu_flag.icu_flag = 1 THEN 1 \n",
- " WHEN chwi.hosp_ward_Critical_Care = 1 THEN 1\n",
- " ELSE 0 \n",
- " END\n",
- " ) AS hosp_ward_ICU\n",
- "FROM\n",
- " `som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.microbiology_urine_cultures_cohort` mc\n",
- "LEFT JOIN\n",
- " temp_combined_hosp_ward_info chwi\n",
- "ON\n",
- " mc.anon_id = chwi.anon_id \n",
- " AND mc.pat_enc_csn_id_coded = chwi.pat_enc_csn_id_coded \n",
- " AND mc.order_proc_id_coded = chwi.order_proc_id_coded\n",
- "LEFT JOIN\n",
- " microbiology_cultures_with_icu_flag icu_flag\n",
- "ON\n",
- " mc.anon_id = icu_flag.anon_id \n",
- " AND mc.pat_enc_csn_id_coded = icu_flag.pat_enc_csn_id_coded \n",
- " AND mc.order_proc_id_coded = icu_flag.order_proc_id_coded\n",
- "GROUP BY\n",
- " mc.anon_id, \n",
- " mc.pat_enc_csn_id_coded, \n",
- " mc.order_proc_id_coded, \n",
- " mc.order_time_jittered_utc;"
+ "# Combine the filtered groups into a new DataFrame\n",
+ "abx_med_inp_ed_empirical = pd.concat([group for group in filtered_groups if group is not None])\n",
+ "\n"
]
},
{
"cell_type": "code",
- "execution_count": 52,
+ "execution_count": 25,
"metadata": {},
"outputs": [
{
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "dbb602813af5489daeb3e737eb30b526",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "Query is running: 0%| |"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "af09a62dad014953a1efc2adee9291bc",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "Downloading: 0%| |"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the unique patient encounter number with ED order and abx medication empirical is 42264\n",
+ "the percentage of unique patient encounter with order and empirical abx medication \n",
+ "(out of all outpatient with abx med) \n",
+ "is 59.60%\n",
+ "----------------------------------------------------------\n",
+ "the unique culture order with ED order and abx medication empirical is 42607\n",
+ "the percentage of unique culture order with ED order and abx medication empirical \n",
+ "(out of all outpatient with abx med) \n",
+ "is 59.45%\n"
+ ]
}
],
"source": [
- "%%bigquery --use_rest_api df_hosp_ward_info\n",
- "select * from som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.microbiology_urine_cultures_ward_info"
+ "abx_med_inp_ed_empirical_pat_enc_cnt = find_unique_patient_encounter(abx_med_inp_ed_empirical)\n",
+ "print(\"the unique patient encounter number with ED order and abx medication empirical is {}\".format(abx_med_inp_ed_empirical_pat_enc_cnt))\n",
+ "percentage = abx_med_inp_ed_empirical_pat_enc_cnt/ find_unique_patient_encounter(abx_med_inp) *100\n",
+ "print(\"the percentage of unique patient encounter with order and empirical abx medication \\n(out of all outpatient with abx med) \\nis {:.2f}%\".format(percentage))\n",
+ "print(\"----------------------------------------------------------\")\n",
+ "abx_med_inp_ed_empirical_order_cnt = find_unique_orders(abx_med_inp_ed_empirical)\n",
+ "print(\"the unique culture order with ED order and abx medication empirical is {}\".format(abx_med_inp_ed_empirical_order_cnt))\n",
+ "percentage = abx_med_inp_ed_empirical_order_cnt/ find_unique_orders(abx_med_inp) *100\n",
+ "print(\"the percentage of unique culture order with ED order and abx medication empirical \\n(out of all outpatient with abx med) \\nis {:.2f}%\".format(percentage))\n"
]
},
{
"cell_type": "code",
- "execution_count": 73,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- "
\n",
- "
\n",
- "
anon_id
\n",
- "
pat_enc_csn_id_coded
\n",
- "
order_proc_id_coded
\n",
- "
order_time_jittered_utc
\n",
- "
hosp_ward_IP
\n",
- "
hosp_ward_OP
\n",
- "
hosp_ward_ER
\n",
- "
hosp_ward_ICU
\n",
- "
\n",
- " \n",
- " \n",
- "
\n",
- "
0
\n",
- "
JC2055777
\n",
- "
131309498304
\n",
- "
721666932
\n",
- "
2021-05-20 23:43:00+00:00
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
1
\n",
- "
JC534608
\n",
- "
131318154218
\n",
- "
748548113
\n",
- "
2021-10-12 19:20:00+00:00
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
2
\n",
- "
JC6208181
\n",
- "
131329400697
\n",
- "
788424782
\n",
- "
2022-04-09 15:47:00+00:00
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
3
\n",
- "
JC1727182
\n",
- "
131053483881
\n",
- "
449511163
\n",
- "
2014-11-11 00:28:00+00:00
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
4
\n",
- "
JC649475
\n",
- "
131008760841
\n",
- "
364712898
\n",
- "
2010-03-17 22:00:00+00:00
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
\n",
- "
\n",
- "
480002
\n",
- "
JC2143867
\n",
- "
131238038042
\n",
- "
535254472
\n",
- "
2017-08-19 04:25:00+00:00
\n",
- "
1
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
480003
\n",
- "
JC1439242
\n",
- "
131329694828
\n",
- "
784504068
\n",
- "
2022-03-15 20:44:00+00:00
\n",
- "
1
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
480004
\n",
- "
JC1223382
\n",
- "
131266712701
\n",
- "
606111847
\n",
- "
2019-04-06 07:18:00+00:00
\n",
- "
1
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
480005
\n",
- "
JC6202033
\n",
- "
131358850960
\n",
- "
892678574
\n",
- "
2023-08-14 02:50:00+00:00
\n",
- "
1
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
480006
\n",
- "
JC2587547
\n",
- "
131332186211
\n",
- "
792394073
\n",
- "
2022-05-27 21:42:00+00:00
\n",
- "
1
\n",
- "
0
\n",
- "
1
\n",
- "
1
\n",
- "
\n",
- " \n",
- "
\n",
- "
480007 rows × 8 columns
\n",
- "
"
- ],
- "text/plain": [
- " anon_id pat_enc_csn_id_coded order_proc_id_coded \\\n",
- "0 JC2055777 131309498304 721666932 \n",
- "1 JC534608 131318154218 748548113 \n",
- "2 JC6208181 131329400697 788424782 \n",
- "3 JC1727182 131053483881 449511163 \n",
- "4 JC649475 131008760841 364712898 \n",
- "... ... ... ... \n",
- "480002 JC2143867 131238038042 535254472 \n",
- "480003 JC1439242 131329694828 784504068 \n",
- "480004 JC1223382 131266712701 606111847 \n",
- "480005 JC6202033 131358850960 892678574 \n",
- "480006 JC2587547 131332186211 792394073 \n",
- "\n",
- " order_time_jittered_utc hosp_ward_IP hosp_ward_OP hosp_ward_ER \\\n",
- "0 2021-05-20 23:43:00+00:00 0 1 0 \n",
- "1 2021-10-12 19:20:00+00:00 0 1 0 \n",
- "2 2022-04-09 15:47:00+00:00 0 1 0 \n",
- "3 2014-11-11 00:28:00+00:00 0 1 0 \n",
- "4 2010-03-17 22:00:00+00:00 0 1 0 \n",
- "... ... ... ... ... \n",
- "480002 2017-08-19 04:25:00+00:00 1 0 1 \n",
- "480003 2022-03-15 20:44:00+00:00 1 0 1 \n",
- "480004 2019-04-06 07:18:00+00:00 1 0 1 \n",
- "480005 2023-08-14 02:50:00+00:00 1 0 1 \n",
- "480006 2022-05-27 21:42:00+00:00 1 0 1 \n",
- "\n",
- " hosp_ward_ICU \n",
- "0 0 \n",
- "1 0 \n",
- "2 0 \n",
- "3 0 \n",
- "4 0 \n",
- "... ... \n",
- "480002 0 \n",
- "480003 0 \n",
- "480004 0 \n",
- "480005 0 \n",
- "480006 1 \n",
- "\n",
- "[480007 rows x 8 columns]"
- ]
- },
- "execution_count": 73,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df_hosp_ward_info"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 74,
- "metadata": {},
- "outputs": [],
- "source": [
- "# ED_order = df_hosp_ward_info[df_hosp_ward_info['hosp_ward_OP'] == 1]\n",
- "# ED_order = df_hosp_ward_info"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 75,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "the unique patient encounter number with ED order is 233909\n",
- "the percentage of unique patient encounter with ED order (out of all inpatients) is 100.00%\n",
- "----------------------------------------------------------\n",
- "the unique culture order with ED order is 246340\n",
- "the percentage of unique culture order with ED order (out of all inpatients) is 100.00%\n"
- ]
- }
- ],
- "source": [
- "# All_ED_inp= current_med_original_no_mapped_with_12_hours_inpatient_temp.merge(ED_order, on=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc'], how='inner')\n",
- "# All_ED_inp_pat_enc_cnt = find_unique_patient_encounter(All_ED_inp)\n",
- "# print(\"the unique patient encounter number with ED order is {}\".format(All_ED_inp_pat_enc_cnt))\n",
- "# percentage = All_ED_inp_pat_enc_cnt/total_inp_pat_enc_cnt *100\n",
- "# print(\"the percentage of unique patient encounter with ED order (out of all inpatients) is {:.2f}%\".format(percentage))\n",
- "# print(\"----------------------------------------------------------\")\n",
- "# All_ED_inp_order_cnt = find_unique_orders(All_ED_inp)\n",
- "# print(\"the unique culture order with ED order is {}\".format(All_ED_inp_order_cnt))\n",
- "# percentage = All_ED_inp_order_cnt/total_inp_order_cnt *100\n",
- "# print(\"the percentage of unique culture order with ED order (out of all inpatients) is {:.2f}%\".format(percentage))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### The above code shows that out of all inpatient encounter `n = 201213`, `59.51%` (`n = 119737`) is from ED \n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 76,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "the unique patient encounter number with ED order and abx medication is 70936\n",
- "the percentage of unique patient encounter with ED order and abx medication (out of all ED inpatients) is 30.33%\n",
- "----------------------------------------------------------\n",
- "the unique culture order with ED order and abx medication is 71683\n",
- "the percentage of unique culture order with ED order and abx medication (out of all ED inpatients) is 29.10%\n",
- "----------------------------------------------------------\n",
- "the percentage of unique patient encounter with ED order and abx medication (out of all inpatients with abx med) is 101.05%\n"
- ]
- }
- ],
- "source": [
- "# abx_med_inp_ed = abx_med_inp.merge(ED_order, \\\n",
- "# on=['anon_id','pat_enc_csn_id_coded', \n",
- "# 'order_proc_id_coded', 'order_time_jittered_utc'],\n",
- "# how='inner')\n",
- "# abx_med_inp_ed_pat_enc_cnt = find_unique_patient_encounter(abx_med_inp_ed)\n",
- "# print(\"the unique patient encounter number with ED order and abx medication is {}\".format(abx_med_inp_ed_pat_enc_cnt))\n",
- "# percentage = abx_med_inp_ed_pat_enc_cnt/All_ED_inp_pat_enc_cnt *100\n",
- "# print(\"the percentage of unique patient encounter with ED order and abx medication (out of all ED inpatients) is {:.2f}%\".format(percentage))\n",
- "# print(\"----------------------------------------------------------\")\n",
- "# abx_med_inp_ed_order_cnt = find_unique_orders(abx_med_inp_ed)\n",
- "# print(\"the unique culture order with ED order and abx medication is {}\".format(abx_med_inp_ed_order_cnt))\n",
- "# percentage = abx_med_inp_ed_order_cnt/All_ED_inp_order_cnt *100\n",
- "# print(\"the percentage of unique culture order with ED order and abx medication (out of all ED inpatients) is {:.2f}%\".format(percentage))\n",
- "# print(\"----------------------------------------------------------\")\n",
- "# percentage = abx_med_inp_ed_order_cnt/ abx_med_inp_pat_enc_cnt *100\n",
- "# print(\"the percentage of unique patient encounter with ED order and abx medication (out of all inpatients with abx med) is {:.2f}%\".format(percentage))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### The above code shows that out of all inpatient ED encounter `n = 119737`, `57.93%` (`n = 69366`) has abx medication\n",
- "### Also shows that out of all inpatient encouter with current abx med `n= 97468`, `80.45%` (`n = 69366`) is ED\n",
- "201213 --> 150068 --> 97468 --> 69366"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# ----------- Empirical Med for Outpatient Only -----------"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 77,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Group by the specified columns\n",
- "grouped = abx_med_inp.groupby(['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc'])\n",
- "\n",
- "# Function to filter each group\n",
- "def filter_group(group):\n",
- " # Keep rows where:\n",
- " # 1. medication_time is greater than culture order time but smaller than result time, OR\n",
- " # 2. medication_time is within 6 hours before the culture order time\n",
- " condition = (\n",
- " ((group['medication_time'] > group['order_time_jittered_utc']) & \n",
- " (group['medication_time'] < group['result_time_jittered_utc'])) | \n",
- " ((group['medication_time'] >= (group['order_time_jittered_utc'] - pd.Timedelta(hours=12))) & \n",
- " (group['medication_time'] <= group['order_time_jittered_utc'])\n",
- " ))\n",
- " return group[condition]\n",
- "\n",
- "# Apply the filter to each group\n",
- "filtered_groups = [filter_group(group) for _, group in grouped]\n",
- "\n",
- "# Combine the filtered groups into a new DataFrame\n",
- "abx_med_inp_ed_empirical = pd.concat([group for group in filtered_groups if group is not None])\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 79,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "the unique patient encounter number with ED order and abx medication empirical is 42280\n",
- "the percentage of unique patient encounter with order and empirical abx medication \n",
- "(out of all outpatient with abx med) \n",
- "is 59.60%\n",
- "----------------------------------------------------------\n",
- "the unique culture order with ED order and abx medication empirical is 42623\n",
- "the percentage of unique culture order with ED order and abx medication empirical \n",
- "(out of all outpatient with abx med) \n",
- "is 59.46%\n"
- ]
- }
- ],
- "source": [
- "abx_med_inp_ed_empirical_pat_enc_cnt = find_unique_patient_encounter(abx_med_inp_ed_empirical)\n",
- "print(\"the unique patient encounter number with ED order and abx medication empirical is {}\".format(abx_med_inp_ed_empirical_pat_enc_cnt))\n",
- "percentage = abx_med_inp_ed_empirical_pat_enc_cnt/ find_unique_patient_encounter(abx_med_inp) *100\n",
- "print(\"the percentage of unique patient encounter with order and empirical abx medication \\n(out of all outpatient with abx med) \\nis {:.2f}%\".format(percentage))\n",
- "print(\"----------------------------------------------------------\")\n",
- "abx_med_inp_ed_empirical_order_cnt = find_unique_orders(abx_med_inp_ed_empirical)\n",
- "print(\"the unique culture order with ED order and abx medication empirical is {}\".format(abx_med_inp_ed_empirical_order_cnt))\n",
- "percentage = abx_med_inp_ed_empirical_order_cnt/ find_unique_orders(abx_med_inp) *100\n",
- "print(\"the percentage of unique culture order with ED order and abx medication empirical \\n(out of all outpatient with abx med) \\nis {:.2f}%\".format(percentage))\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": 78,
+ "execution_count": 27,
"metadata": {},
"outputs": [
{
@@ -2553,7 +1292,7 @@
},
{
"cell_type": "code",
- "execution_count": 60,
+ "execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
@@ -2572,18 +1311,18 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# ----------- Filtering out Prior Abx exposure for Empirical Med for ED Inpatient Only -----------"
+ "# ----------- Filtering out Prior Abx exposure for Empirical Med for Outpatient Only -----------"
]
},
{
"cell_type": "code",
- "execution_count": 418,
+ "execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "3879f2e7bf9b4abb9434dfd82cfe5821",
+ "model_id": "2832758f7f8846b9a0fac9ad3d5ff150",
"version_major": 2,
"version_minor": 0
},
@@ -2597,7 +1336,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "962d4c92523d4dfbb5b23587dde97593",
+ "model_id": "32d71e6fda404b52935c3328424eed58",
"version_major": 2,
"version_minor": 0
},
@@ -2672,18 +1411,18 @@
},
{
"cell_type": "code",
- "execution_count": 62,
+ "execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the unique patient encounter number for final cohort is 40040\n",
- "the percentage of unique patient encounter for final cohort (out of all ED inpatients with empirical abx med) is 94.70%\n",
+ "the unique patient encounter number for final cohort is 40031\n",
+ "the percentage of unique patient encounter for final cohort (out of all ED inpatients with empirical abx med) is 94.72%\n",
"----------------------------------------------------------\n",
- "the unique order number for final cohort is 40344\n",
- "the percentage of unique culture order for final cohort (out of all ED inpatients with empirical abx med) is 95.42%\n"
+ "the unique order number for final cohort is 40335\n",
+ "the percentage of unique culture order for final cohort (out of all ED inpatients with empirical abx med) is 95.44%\n"
]
}
],
@@ -2697,1790 +1436,562 @@
"print(\"the percentage of unique culture order for final cohort (out of all ED inpatients with empirical abx med) is {:.2f}%\".format(percentage))"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### The above code shows that out of all inpatient ED encounter `n = 69320` with empirical abx_med, `75.05%` (`n = 52024`) is included as final cohort\n",
+ "201213 --> 150068 --> 97468 --> 69366 --> 69320 --> 52024"
+ ]
+ },
{
"cell_type": "code",
- "execution_count": 82,
+ "execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "(0.9465312155409051, 2279)"
+ ""
]
},
- "execution_count": 82,
+ "execution_count": 32,
"metadata": {},
"output_type": "execute_result"
- }
- ],
- "source": [
- "40344/42623, 42623 - 40344"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 424,
- "metadata": {},
- "outputs": [
+ },
{
"data": {
- "text/html": [
- "
"
]
},
- "execution_count": 424,
"metadata": {},
- "output_type": "execute_result"
+ "output_type": "display_data"
}
],
"source": [
- "final_cohort_inp_ed_only"
+ "nique_given_final_cohort_inp_ed_only = final_cohort_inp_ed_only.drop_duplicates(subset=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc'])\n",
+ "nique_given_final_cohort_inp_ed_only[\"order_time_jittered_utc\"].dt.year.value_counts().sort_index().plot(kind='bar', title='Number of Unique Urine Culture Orders with Given Abx Med per Year', xlabel='Year', ylabel='Number of Orders', figsize=(10, 6))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### The above code shows that out of all inpatient ED encounter `n = 69320` with empirical abx_med, `75.05%` (`n = 52024`) is included as final cohort\n",
- "201213 --> 150068 --> 97468 --> 69366 --> 69320 --> 52024"
+ "## ⏳ Cleaning the medication name"
]
},
{
- "cell_type": "markdown",
+ "cell_type": "code",
+ "execution_count": 35,
"metadata": {},
+ "outputs": [],
"source": [
- "# ----Expore the given aspect for the final inpatient ED Cohort ----"
+ "\n",
+ "def convert_to_list_and_keep_longest(value):\n",
+ " try:\n",
+ " # Convert numpy arrays to lists\n",
+ " if isinstance(value, np.ndarray):\n",
+ " value = value.tolist()\n",
+ "\n",
+ " # Already a list? Great.\n",
+ " if isinstance(value, list) and len(value) > 0:\n",
+ " str_items = [str(v) for v in value if v not in [None, \"\"]]\n",
+ " if str_items:\n",
+ " return max(str_items, key=len)\n",
+ "\n",
+ " # Fallback — just return original\n",
+ " return value\n",
+ " \n",
+ " except Exception as e:\n",
+ " print(f\"⚠️ Error: {e} — value: {value}\")\n",
+ " raise\n",
+ "\n",
+ "# Apply the function to your column\n",
+ "given_final_cohort_inp_ed_only = final_cohort_inp_ed_only.copy()\n",
+ "given_final_cohort_inp_ed_only[\"final_antibiotic\"] = given_final_cohort_inp_ed_only[\"cleaned_antibiotic\"].apply(convert_to_list_and_keep_longest).replace(cleaning_mapping)\n",
+ "given_final_cohort_inp_ed_only = given_final_cohort_inp_ed_only\\\n",
+ " .drop_duplicates(\n",
+ " subset=['anon_id', \n",
+ " 'pat_enc_csn_id_coded',\n",
+ " 'order_proc_id_coded', \n",
+ " 'order_time_jittered_utc',\n",
+ " \"result_time_jittered_utc\", \n",
+ " \"final_antibiotic\"])"
]
},
{
"cell_type": "code",
- "execution_count": 92,
+ "execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
- "# condition = final_cohort_inp_ed_only[\"medication_action\"] == \"Given\"\n",
- "# given_final_cohort_inp_ed_only = final_cohort_inp_ed_only[condition]\n",
- "# given_final_cohort_inp_ed_only_pat_enc_cnt = find_unique_patient_encounter(given_final_cohort_inp_ed_only)\n",
- "# given_final_cohort_inp_ed_only_order_cnt = find_unique_orders(given_final_cohort_inp_ed_only)\n",
- "# print(\"the unique patient encounter number with valid given medication is {}\".format(given_final_cohort_inp_ed_only_pat_enc_cnt))\n",
- "# print(\"the unique order number with valid given medication is {}\".format(given_final_cohort_inp_ed_only_order_cnt))\n",
- "# # percentage = given_final_cohort_inp_ed_only_pat_enc_cnt/find_unique_patient_encounter(final_cohort_inp_ed_only) *100\n",
- "# # print(\"the percentage of unique patient encounter with given medication (out of all inpatients) is {:.2f}%\".format(percentage))\n",
- "\n"
+ "# given_final_cohort_inp_ed_only.to_csv('../csv_folder/final_cohort_for_analysis_adult_outpatient.csv', index=False)"
]
},
{
"cell_type": "code",
- "execution_count": 426,
+ "execution_count": 37,
"metadata": {},
"outputs": [
{
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 426,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1sAAAI3CAYAAABtfUGQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABcjklEQVR4nO3de3zO9eP/8ee184zNNrYZw0IOIadoJCpziJT6pFILiT4oOcfHp0wHxxLROaHo8JH4RDWHHPrIadQqklLODDFzaIbt9fvDb9fXZRu72HvX3jzut9tuN9f7/dr7er6vXbvennu/r9flMMYYAQAAAAAKlZenAwAAAADA1YiyBQAAAAAWoGwBAAAAgAUoWwAAAABgAcoWAAAAAFiAsgUAAAAAFqBsAQAAAIAFKFsAAAAAYAHKFgAAAABYgLIFW5sxY4YcDocCAgK0c+fOXOtbtmyp2rVreyCZtGLFCjkcDn322WceuX937dixQ+3bt1dYWJgcDof69++f71iHw6Enn3wyz3WfffaZHA6HVqxYcVkZHA6HZsyY4fb3FqXC3P+WLVuqZcuWhRfOTceOHdNLL72kRo0aKTg4WP7+/qpcubIee+wxff/995e1zcqVK6tbt27O2/v27VNiYqJSUlIKJ7QFDh8+rOHDh6tWrVoqUaKEgoODdfPNN+v111/XmTNnrnj7iYmJcjgchZDUc/L6/Vy9erUSExN19OjRXOMrV66sDh06XNF9Hjt2TGPHjlWTJk1UunRp+fr6KjIyUm3bttVHH32kzMzMi+YrzgYOHCiHw5HvY1RUx5Cc42h+r1vGGFWtWlUOh6PQX6sufK0ojubMmSOHw6EpU6bkub5Xr17y9/fXTz/9VMTJYBc+ng4AFIbMzEz9+9//1ocffujpKLY1YMAArVu3Tu+//76ioqJUrly5Is9Qrlw5rVmzRlWqVCny+/aUN954w2P3/ccff6h169Y6ePCg/vnPf2rUqFEqWbKkduzYof/85z9q2LChjh49qpCQkCu6n3379mnUqFGqXLmy6tWrVzjhC9Gvv/6q1q1b68SJExo0aJCaNm2qjIwMLVy4UE8//bTmzJmjr776SiVKlPB0VI/K6/dz9erVGjVqlLp166bSpUsX6v39/vvvatu2rQ4ePKhevXppxIgRCg0N1f79+7Vo0SI99thj2rJli1544YV88xVXZ86c0axZsyRJSUlJ2rt3r8qXL+/RTKVKldK0adNyFaqVK1fqjz/+UKlSpTwTzMPuv/9+denSRcOGDVO7du1UtWpV57rFixfr3Xff1ZgxY1S3bl0PpkRxRtnCVSHnr5yDBw/WjTfe6Ok4RSojI0MBAQFX/FfzTZs2qXHjxrrnnnsKJ9hl8Pf318033+yx+y9Kf//9t0qUKKFatWp55P6zsrLUqVMn/fXXX1qzZo3LGeAWLVqoa9eu+vrrr+Xr6+uRfAWRlZWls2fPyt/f/4q2cd999+nYsWNav369rr/+eue6O++8Uy1atNCDDz6ogQMH6q233rI0iztynj9FqSh/P8+ePat77rlHR44c0fr161WzZk2X9Z07d9Zzzz2nH374wSP5rtR///tfHTp0SO3bt9eXX36pmTNn6l//+pdHMz3wwAOaPXu2Xn/9dQUHBzuXT5s2TXFxcTp27JgH01nvzJkzcjgc8vHJ/V/jqVOnasWKFerWrZu+/fZbeXl56dixY3r88ccVFxenIUOGFElGT/ze48pxGSGuCkOHDlV4eLieeeaZi4672GUmDodDiYmJzts5l/389NNPuv/++xUSEqKwsDANHDhQZ8+e1datW9W2bVuVKlVKlStX1vjx4/O8z1OnTmngwIGKiopSYGCgWrRo4fIfhBwbNmxQx44dFRYWpoCAANWvX1//+c9/XMbkXO6xePFiPfbYYypbtqxKlCjhcinNhXbt2qVHHnlEERER8vf3V82aNfXKK68oOztb0v9dqrJt2zZ9/fXXzstJduzYcdHH0h05l3MmJyerefPmKlGihK677jqNHTvWmUPK/+fz5Zdfql69evL391dsbKxefvnlXJdlufOzlc791bxLly4uj8vrr79eaPt8vpz9//bbb9W0aVOVKFFCjz32mHPd+X9JztmPl19+WRMnTlRsbKxKliypuLg4rV27Nte2C/K8ycv8+fP1888/a/jw4fleatuuXTvngb1bt26qXLlyrjGXujxuxYoVuummmyRJ3bt3dz6/cn4e+V1GeeH95Twu48eP14svvqjY2Fj5+/tr+fLlV/Q4zJs3T7/88ouGDRvmUrRyPPDAA2rdurWmTZum1NTUAmXJ6/maF2OM3njjDdWrV0+BgYEKDQ3VP/7xD/35558u4y72/Fm2bJlatmyp8PBwBQYGqmLFirrvvvv0999/57vPQ4YMUUhIiLKyspzLnnrqKTkcDk2YMMG57PDhw/Ly8nJePnXh71hiYqLzP5mxsbH5XoqWlJSkBg0aKDAwUDVq1ND777+fb7YcOT+XESNG5CpaOSpVquTyx6EL882fP18Oh0PffPNNru998803na/vOdx5DV6+fLl69+6tMmXKKDw8XPfee6/27dt3yf3KMW3aNPn5+Wn69OmKiYnR9OnTZYzJc+yljiF//fWXYmJi1LRpU5dLXn/55RcFBQUpISGhQJkeeughSdLHH3/sXJaenq65c+c6n28XOn36tF588UXVqFFD/v7+Klu2rLp3765Dhw65jDtz5oyGDh2qqKgolShRQrfccovWr19foFzn/7699NJLqlixogICAtSoUaM8f7YFeW3POe59+OGHGjRokMqXLy9/f39t27YtzwyhoaGaNm2avvvuO7366quSzl0NcvjwYc2cOVPe3t46duyYBg8erNjYWPn5+al8+fLq37+/Tp486bKt119/XbfeeqsiIiIUFBSkOnXqaPz48bkuV77Y7z1sxgA2Nn36dCPJJCcnm8mTJxtJ5ptvvnGub9Gihbnhhhuct7dv324kmenTp+faliQzcuRI5+2RI0caSaZ69ermhRdeMEuWLDFDhw41ksyTTz5patSoYV577TWzZMkS0717dyPJzJ071/n9y5cvN5JMTEyMufvuu82CBQvMrFmzTNWqVU1wcLD5448/nGOXLVtm/Pz8TPPmzc2nn35qkpKSTLdu3XJlzdnf8uXLm169epmvv/7afPbZZ+bs2bN5Pj4HDx405cuXN2XLljVvvfWWSUpKMk8++aSRZHr37m2MMSY9Pd2sWbPGREVFmWbNmpk1a9aYNWvWmFOnTuX7uEsyffv2zXPdnDlzjCSzfPlyl59DeHi4qVatmnnrrbfMkiVLTJ8+fYwkM3PmzIv+fJYuXWq8vb3NLbfcYj7//HMzZ84cc9NNN5mKFSua81/C3PnZbt682YSEhJg6deqYDz74wCxevNgMGjTIeHl5mcTExHz3+0r2PywszMTExJgpU6aY5cuXm5UrVzrXtWjRItd+VK5c2bRt29bMnz/fzJ8/39SpU8eEhoaao0ePOscW9HmTl169ehlJZsuWLZfcX2OM6dq1q6lUqVKu5Tm/J+erVKmS6dq1qzHm3PMr53n773//2/n82r17d577n9/95Twu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OnLkiLZs2aLvv/9ec+bMuaz7HjBggD744AO1b99ezz//vCpVqqQvv/xSb7zxhnr37p3nVNcF8dxzz2nBggVq0qSJhg0bpmrVqik1NVXvvvuukpOTC/U9cy+88ILatm2r+Ph4DRo0SFlZWRo3bpyCgoJ05MgR5zh3fraTJ0/WLbfcoubNm6t3796qXLmyjh8/rm3btmnBggWXfC9bUe7/xVzJ88bb21vz5s1T69atFRcXp969e+u2225TUFCQdu7cqc8++0wLFixQWlqapHNToD/33HN68MEHNWTIEJ06dUqvvfZavpdTnq9KlSoKDAzU7NmzVbNmTZUsWVLR0dGKjo5WQkKC3n77bT3yyCPq2bOnDh8+rPHjxxeoaBXW4zB37lzFx8crLi5OgwYNUlxcnDIzM7VgwQK98847atGihV555ZUCZSno87VZs2bq1auXunfvrg0bNujWW29VUFCQ9u/fr1WrVqlOnTrq3bv3Re/rrbfe0rJly9S+fXtVrFhRp06dcv5l/VKX/3l7e6tFixZasGCBYmNjnR8E3KxZM/n7++ubb75Rv379Lrm/Oe8Jmjx5srp27SpfX19Vr179ij8A19vbW/Pnz1ebNm3UuHFj9ezZUy1btlRoaKiOHj2qdevW6ccff8x3WvjzlS5dWp06ddKMGTN09OhRDR48WF5eru+isOo1+HyzZ8/WqVOn1K9fvzw/7iA8PFyzZ8/WtGnTnNOLSwU7howcOVL/+9//tHjxYkVFRWnQoEFauXKlevToofr161/ybP2Fxo4de8kxDz74oGbPnq0777xTTz/9tBo3bixfX1/t2bNHy5cv1913361OnTqpZs2aeuSRRzRp0iT5+vqqVatW2rRpk15++WW3fs+9vb0VHx+vgQMHKjs7W+PGjdOxY8c0atQo55grfW2/XP3799fcuXN16623asCAAapbt66ys7O1a9cuLV68WIMGDVKTJk0UHx8vPz8/PfTQQxo6dKhOnTqlN9980/k6i6uU5+bmAK7c+bMoXahLly5GkstshMacm4r68ccfN5GRkSYoKMjcddddZseOHfnORnjo0CGX7+/atasJCgrKdX8XznyYM9vRhx9+aPr162fKli1r/P39TfPmzc2GDRtyff+PP/5oOnfubCIiIoyvr6+Jiooyt99+u3nrrbcKtL/52blzp+nSpYsJDw83vr6+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AMCu3H7P1uLFi7Vo0SJVqFDBZXm1atW0c+fOQgsGAAAAAHbm9pmtkydPupzRyvHXX3/J39+/UEIBAAAAgN25XbZuvfVWffDBB87bDodD2dnZmjBhgm677bZCDQcAAAAAduX2ZYQTJkxQy5YttWHDBp0+fVpDhw7V5s2bdeTIEX333XdWZAQAAAAA23H7zFatWrX0008/qXHjxoqPj9fJkyd177336ocfflCVKlWsyAgAAAAAtuP2mS1JioqK0qhRowo7CwAAAABcNS6rbKWlpWnatGnasmWLHA6Hatasqe7duyssLKyw8wEAAACALbl9GeHKlSsVGxur1157TWlpaTpy5Ihee+01xcbGauXKlVZkBAAAAADbcfvMVt++fdW5c2e9+eab8vb2liRlZWWpT58+6tu3rzZt2lToIQEAAADAbtw+s/XHH39o0KBBzqIlSd7e3ho4cKD++OOPQg0HAAAAAHbldtlq0KCBtmzZkmv5li1bVK9evcLIBAAAAAC2V6DLCH/66Sfnv/v166enn35a27Zt08033yxJWrt2rV5//XWNHTvWmpQAAAAAYDMFKlv16tWTw+GQMca5bOjQobnGdenSRQ888EDhpQMAAAAAmypQ2dq+fbvVOQAAAADgqlKgslWpUiWrcwAAAADAVeWyPtR47969+u6773Tw4EFlZ2e7rOvXr1+hBAMAAAAAO3O7bE2fPl3//Oc/5efnp/DwcDkcDuc6h8NB2QIAAAAAXUbZeu655/Tcc89p+PDh8vJye+Z4AAAAALgmuN2W/v77bz344IOFUrTGjBmjm266SaVKlVJERITuuecebd261WWMMUaJiYmKjo5WYGCgWrZsqc2bN7uMyczM1FNPPaUyZcooKChIHTt21J49e1zGpKWlKSEhQSEhIQoJCVFCQoKOHj16xfsAAAAAAHlxuzH16NFDc+bMKZQ7X7lypfr27au1a9dqyZIlOnv2rFq3bq2TJ086x4wfP14TJ07U1KlTlZycrKioKMXHx+v48ePOMf3799e8efP0ySefaNWqVTpx4oQ6dOigrKws55guXbooJSVFSUlJSkpKUkpKihISEgplPwAAAADgQm5fRjhmzBh16NBBSUlJqlOnjnx9fV3WT5w4scDbSkpKcrk9ffp0RUREaOPGjbr11ltljNGkSZM0YsQI3XvvvZKkmTNnKjIyUh999JGeeOIJpaena9q0afrwww/VqlUrSdKsWbMUExOjpUuXqk2bNtqyZYuSkpK0du1aNWnSRJL07rvvKi4uTlu3blX16tXdfRgAAAAA4KLcLlujR4/WokWLnAXlwgkyrkR6erokKSwsTNK5z/dKTU1V69atnWP8/f3VokULrV69Wk888YQ2btyoM2fOuIyJjo5W7dq1tXr1arVp00Zr1qxRSEiIs2hJ0s0336yQkBCtXr2asgUAAACg0LldtiZOnKj3339f3bp1K9QgxhgNHDhQt9xyi2rXri1JSk1NlSRFRka6jI2MjNTOnTudY/z8/BQaGpprTM73p6amKiIiItd9RkREOMdcKDMzU5mZmc7bx44du8w9AwAAAHAtcvs9W/7+/mrWrFmhB3nyySf1008/6eOPP8617sIzZsaYS55Fu3BMXuMvtp0xY8Y4J9MICQlRTExMQXYDAAAAACRdRtl6+umnNWXKlEIN8dRTT+mLL77Q8uXLVaFCBefyqKgoScp19ungwYPOs11RUVE6ffq00tLSLjrmwIEDue730KFDuc6a5Rg+fLjS09OdX7t37778HQQAAABwzXH7MsL169dr2bJlWrhwoW644YZcE2R8/vnnBd6WMUZPPfWU5s2bpxUrVig2NtZlfWxsrKKiorRkyRLVr19fknT69GmtXLlS48aNkyQ1bNhQvr6+WrJkiTp37ixJ2r9/vzZt2qTx48dLkuLi4pSenq7169ercePGkqR169YpPT1dTZs2zTObv7+//P39C7wvAAAAAHA+t8tW6dKlnTMDXqm+ffvqo48+0n//+1+VKlXKeQYrJCREgYGBcjgc6t+/v0aPHq1q1aqpWrVqGj16tEqUKKEuXbo4x/bo0UODBg1SeHi4wsLCNHjwYNWpU8c5O2HNmjXVtm1b9ezZU2+//bYkqVevXurQoQOTYwAAAACwhNtla/r06YV252+++aYkqWXLlrnuI2cCjqFDhyojI0N9+vRRWlqamjRposWLF6tUqVLO8a+++qp8fHzUuXNnZWRk6I477tCMGTPk7e3tHDN79mz169fPOWthx44dNXXq1ELbFwAAAAA4n9tlqzAZYy45xuFwKDExUYmJifmOCQgI0JQpUy76XrKwsDDNmjXrcmICAAAAgNvcLluxsbEXnQnwzz//vKJAAAD7qjzsS8u2vWNse8u2DQCAFdwu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i44dj43GFN/jI+/ZKmJ+fn46deqUJOn06dPKzs523pakjIyMYncd7NmzZ12uOy9ZsqTOnj2rkydPqkSJEmrdurUGDx7swYT5czgcl7XOUzIzM9W7d+9835uwc+dOjRo1qohTXdrevXtVu3Zt5+0qVapoxYoVuv3225WQkKDx48d7MF3+0tLSVL58eUlSWFiYSpQooUqVKjnXV6lSRfv37/dUvDytX79eQ4cO1X333adZs2apfv36znXR0dEu+YubnN+53bt3q3Hjxi7rGjdurJ07d3oiVr7q1q2rZcuWqUqVKoqKitLOnTtdHu+dO3cqMDDQgwkvzsfHR/fdd5/uu+8+7d27V++//75mzJihl19+Wc2aNdO3337r6YhOdjw2ShwfixLHx6Jjx2OjVIyPj0Ve765xd999t+nQoYNZtWqV6dWrl2nUqJFp3769OXHihDl58qT5xz/+Ydq2bevpmC7i4+NdThdPmDDBlCtXznn7+++/N2XKlPFEtIt65JFHTN26dU1ycnKudcnJyaZevXomISHBA8ny17RpUzNp0qR81xfXyyRiY2Nd/uqVY+/eveb66683rVq1Kpa5K1asaNatW+e8/cwzz5jDhw87b6ekpBTL57Yxxnz11VemQoUKZvTo0SYrK8v4+PiYzZs3ezpWvhwOh3nppZfM5MmTTXR0tPn2229d1qekpJjQ0FAPpcvbwoULTVhYmJk+fbqZPn26qVy5snnvvffMd999Z95//30TExNjhgwZ4umYuZx/yWZeli5darp06VKEiS7NjsdGYzg+FiWOj0XHzsdGY4rf8ZGyVcR+++03U7VqVeNwOMwNN9xg9u7dazp27Gh8fHyMj4+PKVu2rNm4caOnY7rYuHGjCQsLM1FRUaZixYrGz8/PfPzxx871U6dOLZbXdqelpZm2bdsah8NhQkNDTfXq1U2NGjVMaGio8fLyMu3atTNpaWmejunipZdeMomJifmu37Vrl+nWrVsRJiqYHj16mMceeyzPdXv27DFVq1YtdgcTY4zp2LHjRQ/eU6dONbfffnsRJnJPamqqadeunbnllls8fjC5lEqVKpnKlSs7vy583F999VVz8803eyhd/j777DNToUKFXO8DCAgIMP379y+W74M6/5JNu7DjsdEYjo9FieNj0bH7sdGY4nV8dBhjjGfOqV3bDh8+rPDwcOftb775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",
- "text/plain": [
- "
"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the unique order number for final_cohort is 40335\n",
+ "the unique order number from final cohort that has more than one medication is 5359\n"
+ ]
}
],
"source": [
- "nique_given_final_cohort_inp_ed_only = final_cohort_inp_ed_only.drop_duplicates(subset=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc'])\n",
- "nique_given_final_cohort_inp_ed_only[\"order_time_jittered_utc\"].dt.year.value_counts().sort_index().plot(kind='bar', title='Number of Unique Urine Culture Orders with Given Abx Med per Year', xlabel='Year', ylabel='Number of Orders', figsize=(10, 6))"
+ "group_counts = given_final_cohort_inp_ed_only.groupby(\n",
+ " ['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc']\n",
+ ")['final_antibiotic'].transform('count')\n",
+ "\n",
+ "# Filter rows where group count is greater than 1\n",
+ "group_counts_df= given_final_cohort_inp_ed_only[group_counts > 1]\n",
+ "sorted_group_counts_df = group_counts_df.sort_values(by=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc'])\n",
+ "\n",
+ "print(\"the unique order number for final_cohort is {}\".format(find_unique_orders(given_final_cohort_inp_ed_only)))\n",
+ "print(\"the unique order number from final cohort that has more than one medication is {}\".format(find_unique_orders(sorted_group_counts_df)))"
]
},
{
- "cell_type": "markdown",
+ "cell_type": "code",
+ "execution_count": 38,
"metadata": {},
+ "outputs": [],
"source": [
- "## ⏳ Cleaning the medication name"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 428,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
"
- ],
- "text/plain": [
- " Year unique_order_starting_cohort unique_order_inp_cohort_merged diff\n",
- "0 1999 10 NaN NaN\n",
- "1 2000 407 NaN NaN\n",
- "2 2001 472 NaN NaN\n",
- "3 2002 384 NaN NaN\n",
- "4 2003 454 NaN NaN\n",
- "5 2004 462 NaN NaN\n",
- "6 2005 561 NaN NaN\n",
- "7 2006 427 NaN NaN\n",
- "8 2008 1651 1252.0 399.0\n",
- "9 2009 2495 2083.0 412.0\n",
- "10 2010 2286 1954.0 332.0\n",
- "11 2011 2214 1921.0 293.0\n",
- "12 2012 2378 2005.0 373.0\n",
- "13 2013 2324 2013.0 311.0\n",
- "14 2014 2036 1802.0 234.0\n",
- "15 2015 4877 1536.0 3341.0\n",
- "16 2016 5207 1399.0 3808.0\n",
- "17 2017 5396 1699.0 3697.0\n",
- "18 2018 5651 2288.0 3363.0\n",
- "19 2019 5561 2651.0 2910.0\n",
- "20 2020 4540 1981.0 2559.0\n",
- "21 2021 4925 2356.0 2569.0\n",
- "22 2022 5184 2695.0 2489.0\n",
- "23 2023 4755 2324.0 2431.0\n",
- "24 2024 115 47.0 68.0"
- ]
- },
- "execution_count": 30,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# unique_order_starting_cohort[\"order_time_jittered_utc\"].dt.year.value_counts().sort_index()\n",
- "# Combine the value_counts from both dataframes\n",
- "combined_counts = pd.DataFrame({\n",
- " \"unique_order_starting_cohort\": unique_order_starting_cohort[\"order_time_jittered_utc\"].dt.year.value_counts().sort_index(),\n",
- " \"unique_order_inp_cohort_merged\": unique_order_inp_cohort_merged[\"order_time_jittered_utc\"].dt.year.value_counts().sort_index()\n",
- "}).reset_index()\n",
- "\n",
- "# Rename the columns for clarity\n",
- "combined_counts.columns = [\"Year\", \"unique_order_starting_cohort\", \"unique_order_inp_cohort_merged\"]\n",
+ "%%bigquery --use_rest_api df_hosp_ward_info\n",
+ "WITH\n",
+ "-- Step 1: Extract ER and ICU Information from adt Table\n",
+ "temp_er_icu_info_adt AS (\n",
+ " SELECT\n",
+ " anon_id,\n",
+ " pat_enc_csn_id_coded,\n",
+ " CASE \n",
+ " WHEN pat_class = 'Emergency' OR pat_class = 'Emergency Services' THEN 1\n",
+ " ELSE 0\n",
+ " END AS hosp_ward_ER,\n",
+ " CASE \n",
+ " WHEN pat_class = 'Intensive Care (IC)' THEN 1\n",
+ " ELSE 0\n",
+ " END AS hosp_ward_ICU,\n",
+ " CASE \n",
+ " WHEN pat_lv_of_care LIKE \"%Critical Care\" THEN 1\n",
+ " ELSE 0\n",
+ " END AS hosp_ward_Critical_Care\n",
+ " FROM\n",
+ " `som-nero-phi-jonc101.shc_core_2023.adt`\n",
+ "),\n",
"\n",
- "# Display the combined dataframe\n",
- "combined_counts[\"diff\"] = combined_counts[\"unique_order_starting_cohort\"] - combined_counts[\"unique_order_inp_cohort_merged\"]\n",
- "combined_counts\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 18,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "When medication_name is null, medication_action is always null.\n"
- ]
- }
- ],
- "source": [
- "# # Check if there are rows where medication_name is null but medication_action is not null\n",
- "# condition = current_med_original_no_mapped_with_12_hours_inpatient_temp[\n",
- "# current_med_original_no_mapped_with_12_hours_inpatient_temp[\"medication_name\"].isnull() &\n",
- "# current_med_original_no_mapped_with_12_hours_inpatient_temp[\"medication_action\"].notnull()\n",
- "# ]\n",
+ "-- Step 2: Extract ER Information from order_proc Table\n",
+ "temp_er_info_order_proc AS (\n",
+ " SELECT\n",
+ " anon_id,\n",
+ " pat_enc_csn_id_coded,\n",
+ " order_proc_id_coded,\n",
+ " CASE \n",
+ " WHEN proc_pat_class = 'Emergency' OR proc_pat_class = 'Emergency Services' THEN 1\n",
+ " ELSE 0\n",
+ " END AS hosp_ward_ER_order_proc\n",
+ " FROM\n",
+ " `som-nero-phi-jonc101.shc_core_2023.order_proc`\n",
+ "),\n",
"\n",
- "# # If the condition is empty, it means the combination is not possible\n",
- "# if condition.empty:\n",
- "# print(\"When medication_name is null, medication_action is always null.\")\n",
- "# else:\n",
- "# print(\"There are cases where medication_name is null but medication_action is not null.\")\n",
- "# print(condition)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 31,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- "
\n",
- "
\n",
- "
anon_id
\n",
- "
pat_enc_csn_id_coded
\n",
- "
order_proc_id_coded
\n",
- "
order_time_jittered_utc
\n",
- "
result_time_jittered_utc
\n",
- "
ordering_mode
\n",
- "
medication_time
\n",
- "
medication_name
\n",
- "
order_med_id_coded
\n",
- "
medication_action
\n",
- "
\n",
- " \n",
- " \n",
- "
\n",
- "
0
\n",
- "
JC1000898
\n",
- "
131015172022
\n",
- "
388760549
\n",
- "
2011-08-16 12:17:00+00:00
\n",
- "
2011-08-19 13:48:00+00:00
\n",
- "
Inpatient
\n",
- "
NaT
\n",
- "
None
\n",
- "
<NA>
\n",
- "
None
\n",
- "
\n",
- "
\n",
- "
1
\n",
- "
JC1000905
\n",
- "
131006970519
\n",
- "
357542204
\n",
- "
2009-09-27 18:43:00+00:00
\n",
- "
2009-09-29 23:43:00+00:00
\n",
- "
Inpatient
\n",
- "
2009-09-27 19:45:00+00:00
\n",
- "
ACETAMINOPHEN 100 MG/ML PO DROP
\n",
- "
357545020
\n",
- "
Given
\n",
- "
\n",
- "
\n",
- "
2
\n",
- "
JC1000905
\n",
- "
131006970519
\n",
- "
357542204
\n",
- "
2009-09-27 18:43:00+00:00
\n",
- "
2009-09-29 23:43:00+00:00
\n",
- "
Inpatient
\n",
- "
2009-09-27 19:45:02+00:00
\n",
- "
IBUPROFEN 100 MG/5 ML PO SUSP
\n",
- "
357545024
\n",
- "
Given
\n",
- "
\n",
- "
\n",
- "
3
\n",
- "
JC1000924
\n",
- "
131014644911
\n",
- "
387581858
\n",
- "
2011-07-25 05:14:00+00:00
\n",
- "
2011-07-27 02:24:00+00:00
\n",
- "
Inpatient
\n",
- "
2011-07-25 03:39:00+00:00
\n",
- "
ACETAMINOPHEN 80 MG/0.8 ML PO DRPS
\n",
- "
387579939
\n",
- "
Given
\n",
- "
\n",
- "
\n",
- "
4
\n",
- "
JC1000924
\n",
- "
131014644911
\n",
- "
387581858
\n",
- "
2011-07-25 05:14:00+00:00
\n",
- "
2011-07-27 02:24:00+00:00
\n",
- "
Inpatient
\n",
- "
2011-07-25 03:39:00+00:00
\n",
- "
ACETAMINOPHEN 80 MG/0.8 ML PO DRPS
\n",
- "
387579950
\n",
- "
Given
\n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " anon_id pat_enc_csn_id_coded order_proc_id_coded \\\n",
- "0 JC1000898 131015172022 388760549 \n",
- "1 JC1000905 131006970519 357542204 \n",
- "2 JC1000905 131006970519 357542204 \n",
- "3 JC1000924 131014644911 387581858 \n",
- "4 JC1000924 131014644911 387581858 \n",
- "\n",
- " order_time_jittered_utc result_time_jittered_utc ordering_mode \\\n",
- "0 2011-08-16 12:17:00+00:00 2011-08-19 13:48:00+00:00 Inpatient \n",
- "1 2009-09-27 18:43:00+00:00 2009-09-29 23:43:00+00:00 Inpatient \n",
- "2 2009-09-27 18:43:00+00:00 2009-09-29 23:43:00+00:00 Inpatient \n",
- "3 2011-07-25 05:14:00+00:00 2011-07-27 02:24:00+00:00 Inpatient \n",
- "4 2011-07-25 05:14:00+00:00 2011-07-27 02:24:00+00:00 Inpatient \n",
- "\n",
- " medication_time medication_name \\\n",
- "0 NaT None \n",
- "1 2009-09-27 19:45:00+00:00 ACETAMINOPHEN 100 MG/ML PO DROP \n",
- "2 2009-09-27 19:45:02+00:00 IBUPROFEN 100 MG/5 ML PO SUSP \n",
- "3 2011-07-25 03:39:00+00:00 ACETAMINOPHEN 80 MG/0.8 ML PO DRPS \n",
- "4 2011-07-25 03:39:00+00:00 ACETAMINOPHEN 80 MG/0.8 ML PO DRPS \n",
- "\n",
- " order_med_id_coded medication_action \n",
- "0 None \n",
- "1 357545020 Given \n",
- "2 357545024 Given \n",
- "3 387579939 Given \n",
- "4 387579950 Given "
- ]
- },
- "execution_count": 31,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "current_med_original_no_mapped_with_12_hours_inpatient_temp.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 113,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "the number of unique orders for current_med_original_no_mapped_with_12_hours_inpatient_temp is 32006\n",
- "the number of unique patient encounters for current_med_original_no_mapped_with_12_hours_inpatient_temp is 31734\n"
- ]
- }
- ],
- "source": [
- "print(\"the number of unique orders for current_med_original_no_mapped_with_12_hours_inpatient_temp is {}\".format(find_unique_orders(current_med_original_no_mapped_with_12_hours_inpatient_temp)))\n",
- "print(\"the number of unique patient encounters for current_med_original_no_mapped_with_12_hours_inpatient_temp is {}\".format(find_unique_patient_encounter(current_med_original_no_mapped_with_12_hours_inpatient_temp)))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 114,
- "metadata": {},
- "outputs": [],
- "source": [
- "# classify the medication name into antibiotic or not\n",
- "current_med_original_no_mapped_with_12_hours_inpatient_temp[\"cleaned_antibiotic\"] = current_med_original_no_mapped_with_12_hours_inpatient_temp[\"medication_name\"].apply(\n",
- " lambda x: find_antibiotics(x, antibiotic_list)\n",
- ")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 115,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "the unique patient encounter number with current medication is 25892\n",
- "the percentage of unique patient encounter with any medication (out of all inpatients) is 81.59%\n",
- "----------------------------------------------------------\n",
- "the unique culture order with current medication is 26128\n",
- "the percentage of unique culture order with any medication (out of all inpatients) is 81.63%\n"
- ]
- }
- ],
- "source": [
- "# check how many patient encounter given any medication\n",
- "condition = current_med_original_no_mapped_with_12_hours_inpatient_temp[\"medication_name\"].notna() \n",
- "any_med_inp= current_med_original_no_mapped_with_12_hours_inpatient_temp[condition]\n",
- "any_med_inp_pat_enc_cnt = find_unique_patient_encounter(any_med_inp)\n",
- "total_inp_pat_enc_cnt = find_unique_patient_encounter(current_med_original_no_mapped_with_12_hours_inpatient_temp)\n",
- "print(\"the unique patient encounter number with current medication is {}\".format(any_med_inp_pat_enc_cnt))\n",
- "percentage = any_med_inp_pat_enc_cnt/total_inp_pat_enc_cnt *100\n",
- "print(\"the percentage of unique patient encounter with any medication (out of all inpatients) is {:.2f}%\".format(percentage))\n",
- "print(\"----------------------------------------------------------\")\n",
- "any_med_inp_order_cnt = find_unique_orders(any_med_inp)\n",
- "total_inp_order_cnt = find_unique_orders(current_med_original_no_mapped_with_12_hours_inpatient_temp)\n",
- "print(\"the unique culture order with current medication is {}\".format(any_med_inp_order_cnt))\n",
- "percentage = any_med_inp_order_cnt/total_inp_order_cnt *100\n",
- "print(\"the percentage of unique culture order with any medication (out of all inpatients) is {:.2f}%\".format(percentage))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### The above code shows that out of all inpatient encounter (**`N = 31734`**), `81.59%` (`n = 25892`) has medication (abx or non-abx)\n",
- "31734 --> 25892"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 116,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "medication_name\n",
- "IBUPROFEN 100 MG/5 ML PO SUSP 8327\n",
- "NS IV BOLUS 8256\n",
- "LIDOCAINE 4 % TP CREA 7643\n",
- "NS IV BOLUS - 30 ML/KG 7522\n",
- "ACETAMINOPHEN 160 MG/5 ML (5 ML) PO SUSP (PED) 6620\n",
- "ONDANSETRON 4 MG PO TBDL 4227\n",
- "ACETAMINOPHEN 650 MG/20.3 ML PO SOLN 3454\n",
- "ONDANSETRON HCL (PF) 4 MG/2 ML INJ SOLN 3354\n",
- "FENTANYL CITRATE (PF) 50 MCG/ML INJ SOLN 3045\n",
- "PHENYLEPHRINE IV INFUSION 2665\n",
- "D5 % AND 0.9 % SODIUM CHLORIDE IV SOLP 2229\n",
- "ACETAMINOPHEN 325 MG PO TABS 2149\n",
- "ACETAMINOPHEN 80 MG/0.8 ML PO DRPS 1993\n",
- "ACETAMINOPHEN 325 MG/10.15 ML PO SOLN 1936\n",
- "ACETAMINOPHEN 120 MG PR SUPP 1610\n",
- "NEONATAL FEEDING (VC) 1594\n",
- "OXYCODONE 5 MG PO TABS 1569\n",
- "NS IV BOLUS - 1000 ML 1426\n",
- "PROPOFOL 10 MG/ML IV EMUL 1304\n",
- "FENTANYL (PF) 50 MCG/ML INJECTION 1107\n",
- "ZZZ IMS TEMPLATE 1084\n",
- "MORPHINE 2 MG/ML INJ SYRG 1048\n",
- "ACETAMINOPHEN 100 MG/ML PO DROP 979\n",
- "HEPARIN, PORCINE (PF) 100 UNIT/ML IV SYRG 971\n",
- "LIDOCAINE 5 %(700 MG/PATCH) TP PTMD 953\n",
- "DEXMEDETOMIDINE IN 0.9 % NACL 400 MCG/100 ML (4 MCG/ML) IV SOLN 875\n",
- "POTASSIUM CHLORIDE IV SCALE 848\n",
- "LORAZEPAM 2 MG/ML INJ SOLN 833\n",
- "NS WITH POTASSIUM CHLORIDE 20 MEQ/L IV SOLP 833\n",
- "SODIUM CHLORIDE 0.9 % 0.9 % IV SOLP 798\n",
- "ACETAMINOPHEN 500 MG PO TABS 795\n",
- "GABAPENTIN 300 MG PO CAPS 786\n",
- "NS WITH POTASSIUM CHLORIDE 40 MEQ/L IV SOLP 715\n",
- "MIDAZOLAM IV INFUSION 711\n",
- "ACETAMINOPHEN 160 MG/5 ML PO SOLN 659\n",
- "HYDROMORPHONE 1 MG/ML IV PCA 652\n",
- "PROPOFOL 10 MG/ML IV INFUSION 650\n",
- "DOCUSATE SODIUM 100 MG PO CAPS 646\n",
- "POTASSIUM CHLORIDE-D5-0.9%NACL 20 MEQ/L IV SOLP 634\n",
- "D5 %-0.45 % SODIUM CHLORIDE IV SOLP 595\n",
- "LIDOCAINE 1000 MG IN 100 ML IV INFUSION 592\n",
- "HYDROMORPHONE 10 MG IN 100 ML IV INFUSION (SHC) 579\n",
- "ACETAMINOPHEN 325 MG PR SUPP 568\n",
- "POLYETHYLENE GLYCOL 3350 17 GRAM PO PWPK 535\n",
- "INSULIN REGULAR HUMAN 100 UNIT/ML INJ SOLN 524\n",
- "D5-1/2 NS & POTASSIUM CHLORIDE 20 MEQ/L IV SOLP 518\n",
- "PENTOBARBITAL IV INFUSION 516\n",
- "MIDAZOLAM 200 MG IN D5W 100 ML IV INFUSION 514\n",
- "DIPHENHYDRAMINE HCL 50 MG/ML INJ SOLN 473\n",
- "ALBUTEROL SULFATE 2.5 MG /3 ML (0.083 %) INH NEBU 472\n",
- "Name: count, dtype: int64"
- ]
- },
- "execution_count": 116,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "any_med_inp[any_med_inp[\"cleaned_antibiotic\"] == \"No Match\"][\"medication_name\"].value_counts().head(50)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 117,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "the unique patient encounter number with current abx medication is 9741\n",
- "the percentage of unique patient encounter with current abx medication(out of any med) is 37.62%\n",
- "----------------------------------------------------------\n",
- "the unique culture order with current abx medication is 9885\n",
- "the percentage of unique culture order with current abx medication (out of any med) is 37.83%\n"
- ]
- }
- ],
- "source": [
- "# check how many orders given any antibiotic out of all medication order\n",
- "condition = any_med_inp[\"cleaned_antibiotic\"] != \"No Match\"\n",
- "abx_med_inp = any_med_inp[condition]\n",
- "abx_med_inp_pat_enc_cnt= find_unique_patient_encounter(abx_med_inp)\n",
- "print(\"the unique patient encounter number with current abx medication is {}\".format(abx_med_inp_pat_enc_cnt))\n",
- "percentage = abx_med_inp_pat_enc_cnt/any_med_inp_pat_enc_cnt *100\n",
- "print(\"the percentage of unique patient encounter with current abx medication(out of any med) is {:.2f}%\".format(percentage))\n",
- "print(\"----------------------------------------------------------\")\n",
- "abx_med_inp_order_cnt = find_unique_orders(abx_med_inp)\n",
- "print(\"the unique culture order with current abx medication is {}\".format(abx_med_inp_order_cnt))\n",
- "percentage = abx_med_inp_order_cnt/any_med_inp_order_cnt *100\n",
- "print(\"the percentage of unique culture order with current abx medication (out of any med) is {:.2f}%\".format(percentage))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### The above code shows that out of all inpatient encounter with any medication `n = 25892`, `37.62%` (`n = 9,741`) has abx medication\n",
- "31734 --> 25759 --> 9741"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# ------------------------ ED Inpatient Only --------------------"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Refactor Fateme's code for ward info in order to select ED order\n",
- "Reference: https://github.com/HealthRex/CDSS/blob/master/scripts/antibiotic-susceptibility/sql/queries/microbiology_cultures_ward_info.sql"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 51,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "986e887a948f435483a6582bf61446db",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "Query is running: 0%| |"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "c0252ef209584bb5805edd7b7c9454fe",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "Downloading: 0%| |"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "%%bigquery --use_rest_api df_hosp_ward_info\n",
- "WITH\n",
- "-- Step 1: Extract ER and ICU Information from adt Table\n",
- "temp_er_icu_info_adt AS (\n",
- " SELECT\n",
- " anon_id,\n",
- " pat_enc_csn_id_coded,\n",
- " CASE \n",
- " WHEN pat_class = 'Emergency' OR pat_class = 'Emergency Services' THEN 1\n",
- " ELSE 0\n",
- " END AS hosp_ward_ER,\n",
- " CASE \n",
- " WHEN pat_class = 'Intensive Care (IC)' THEN 1\n",
- " ELSE 0\n",
- " END AS hosp_ward_ICU,\n",
- " CASE \n",
- " WHEN pat_lv_of_care LIKE \"%Critical Care\" THEN 1\n",
- " ELSE 0\n",
- " END AS hosp_ward_Critical_Care\n",
- " FROM\n",
- " `som-nero-phi-jonc101.shc_core_2023.adt`\n",
- "),\n",
- "\n",
- "-- Step 2: Extract ER Information from order_proc Table\n",
- "temp_er_info_order_proc AS (\n",
- " SELECT\n",
- " anon_id,\n",
- " pat_enc_csn_id_coded,\n",
- " order_proc_id_coded,\n",
- " CASE \n",
- " WHEN proc_pat_class = 'Emergency' OR proc_pat_class = 'Emergency Services' THEN 1\n",
- " ELSE 0\n",
- " END AS hosp_ward_ER_order_proc\n",
- " FROM\n",
- " `som-nero-phi-jonc101.shc_core_2023.order_proc`\n",
- "),\n",
- "\n",
- "-- Step 3: Combine ER and ICU Information\n",
- "temp_combined_er_icu_info AS (\n",
+ "-- Step 3: Combine ER and ICU Information\n",
+ "temp_combined_er_icu_info AS (\n",
" SELECT\n",
" adt.anon_id,\n",
" adt.pat_enc_csn_id_coded,\n",
" adt.hosp_ward_ER,\n",
" adt.hosp_ward_ICU,\n",
- " adt.hosp_ward_Critical_Care,\n",
- " er.order_proc_id_coded,\n",
- " er.hosp_ward_ER_order_proc\n",
- " FROM\n",
- " temp_er_icu_info_adt adt\n",
- " LEFT JOIN\n",
- " temp_er_info_order_proc er\n",
- " ON\n",
- " adt.pat_enc_csn_id_coded = er.pat_enc_csn_id_coded\n",
- "),\n",
- "\n",
- "-- Step 4: Extract IP and OP Information from order_proc Table\n",
- "temp_ip_op_info AS (\n",
- " SELECT\n",
- " anon_id,\n",
- " pat_enc_csn_id_coded,\n",
- " order_proc_id_coded,\n",
- " order_time_jittered_utc,\n",
- " CASE \n",
- " WHEN ordering_mode = 'Inpatient' THEN 1\n",
- " ELSE 0\n",
- " END AS hosp_ward_IP,\n",
- " CASE \n",
- " WHEN ordering_mode = 'Outpatient' THEN 1\n",
- " ELSE 0\n",
- " END AS hosp_ward_OP\n",
- " FROM\n",
- " `som-nero-phi-jonc101.shc_core_2023.order_proc`\n",
- "),\n",
- "\n",
- "-- Step 5: Combine All Information into One Temporary Table\n",
- "temp_combined_hosp_ward_info AS (\n",
- " SELECT\n",
- " ipop.anon_id,\n",
- " ipop.pat_enc_csn_id_coded,\n",
- " ipop.order_proc_id_coded,\n",
- " ipop.order_time_jittered_utc,\n",
- " ipop.hosp_ward_IP,\n",
- " ipop.hosp_ward_OP,\n",
- " COALESCE(icu.hosp_ward_ER, 0) AS hosp_ward_ER_adt,\n",
- " COALESCE(icu.hosp_ward_ER_order_proc, 0) AS hosp_ward_ER_order_proc,\n",
- " COALESCE(icu.hosp_ward_ICU, 0) AS hosp_ward_ICU,\n",
- " COALESCE(icu.hosp_ward_Critical_Care, 0) AS hosp_ward_Critical_Care\n",
- " FROM\n",
- " temp_ip_op_info ipop\n",
- " LEFT JOIN\n",
- " temp_combined_er_icu_info icu\n",
- " ON\n",
- " ipop.pat_enc_csn_id_coded = icu.pat_enc_csn_id_coded AND ipop.order_proc_id_coded = icu.order_proc_id_coded\n",
- "),\n",
- "\n",
- "-- Step 6: Extract ICU stay based on transfer orders\n",
- "temp_cohortOfInterest AS (\n",
- " SELECT DISTINCT\n",
- " pat_enc_csn_id_coded,\n",
- " hosp_disch_time_jittered_utc\n",
- " FROM `som-nero-phi-jonc101.shc_core_2023.encounter`\n",
- " WHERE hosp_disch_time_jittered_utc IS NOT NULL\n",
- "),\n",
- "\n",
- "temp_ordersTransfer AS (\n",
- " SELECT DISTINCT\n",
- " pat_enc_csn_id_coded,\n",
- " description,\n",
- " level_of_care,\n",
- " service,\n",
- " order_inst_jittered_utc\n",
- " FROM `som-nero-phi-jonc101.shc_core_2023.order_proc` AS procedures\n",
- " WHERE (description LIKE \"CHANGE LEVEL OF CARE/TRANSFER PATIENT\" OR description LIKE \"ADMIT TO INPATIENT\") AND level_of_care IS NOT NULL\n",
- "),\n",
- "\n",
- "temp_icuTransferCount AS (\n",
- " SELECT\n",
- " mc.pat_enc_csn_id_coded,\n",
- " COUNT(CASE WHEN level_of_care LIKE \"Critical Care\" THEN 1 END) AS numICUTransfers\n",
- " FROM\n",
- " `som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.microbiology_urine_cultures_peds_cohort` mc # only change this to the starting cohort above\n",
- " LEFT JOIN\n",
- " temp_ordersTransfer ot\n",
- " ON\n",
- " mc.pat_enc_csn_id_coded = ot.pat_enc_csn_id_coded\n",
- " GROUP BY\n",
- " mc.pat_enc_csn_id_coded\n",
- "),\n",
- "\n",
- "microbiology_cultures_with_icu_flag AS (\n",
- " SELECT DISTINCT\n",
- " mc.anon_id,\n",
- " mc.pat_enc_csn_id_coded,\n",
- " mc.order_proc_id_coded,\n",
- " mc.order_time_jittered_utc,\n",
- " CASE WHEN itc.numICUTransfers > 0 THEN 1 ELSE 0 END AS icu_flag\n",
- " FROM\n",
- " `som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.microbiology_urine_cultures_peds_cohort` mc\n",
- " LEFT JOIN\n",
- " temp_icuTransferCount itc\n",
- " ON\n",
- " mc.pat_enc_csn_id_coded = itc.pat_enc_csn_id_coded\n",
- ")\n",
- "\n",
- "-- Step 7: Create the Final Table with Correct Binary Indicators for Each Hospital Ward and ICU Flag\n",
- "SELECT\n",
- " mc.anon_id,\n",
- " mc.pat_enc_csn_id_coded,\n",
- " mc.order_proc_id_coded,\n",
- " mc.order_time_jittered_utc,\n",
- " MAX(CASE WHEN chwi.hosp_ward_IP = 1 THEN 1 ELSE 0 END) AS hosp_ward_IP,\n",
- " MAX(CASE WHEN chwi.hosp_ward_OP = 1 THEN 1 ELSE 0 END) AS hosp_ward_OP,\n",
- " MAX(CASE WHEN chwi.hosp_ward_ER_adt = 1 OR chwi.hosp_ward_ER_order_proc = 1 THEN 1 ELSE 0 END) AS hosp_ward_ER,\n",
- " MAX(\n",
- " CASE \n",
- " WHEN chwi.hosp_ward_ICU = 1 THEN 1 \n",
- " WHEN icu_flag.icu_flag = 1 THEN 1 \n",
- " WHEN chwi.hosp_ward_Critical_Care = 1 THEN 1\n",
- " ELSE 0 \n",
- " END\n",
- " ) AS hosp_ward_ICU\n",
- "FROM\n",
- " `som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.microbiology_urine_cultures_peds_cohort` mc\n",
- "LEFT JOIN\n",
- " temp_combined_hosp_ward_info chwi\n",
- "ON\n",
- " mc.anon_id = chwi.anon_id \n",
- " AND mc.pat_enc_csn_id_coded = chwi.pat_enc_csn_id_coded \n",
- " AND mc.order_proc_id_coded = chwi.order_proc_id_coded\n",
- "LEFT JOIN\n",
- " microbiology_cultures_with_icu_flag icu_flag\n",
- "ON\n",
- " mc.anon_id = icu_flag.anon_id \n",
- " AND mc.pat_enc_csn_id_coded = icu_flag.pat_enc_csn_id_coded \n",
- " AND mc.order_proc_id_coded = icu_flag.order_proc_id_coded\n",
- "GROUP BY\n",
- " mc.anon_id, \n",
- " mc.pat_enc_csn_id_coded, \n",
- " mc.order_proc_id_coded, \n",
- " mc.order_time_jittered_utc;"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 29,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "c4f5ae6727e64b399e1ee70841f60911",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "Query is running: 0%| |"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "1e976236ae0941149d9e56239385f022",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "Downloading: 0%| |"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "%%bigquery --use_rest_api df_hosp_ward_info\n",
- "select * from som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.microbiology_urine_cultures_ward_info_peds"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 30,
- "metadata": {},
- "outputs": [],
- "source": [
- "ED_order = df_hosp_ward_info[df_hosp_ward_info['hosp_ward_ER'] == 1]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 31,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- "
\n",
- "
\n",
- "
anon_id
\n",
- "
pat_enc_csn_id_coded
\n",
- "
order_proc_id_coded
\n",
- "
order_time_jittered_utc
\n",
- "
hosp_ward_IP
\n",
- "
hosp_ward_OP
\n",
- "
hosp_ward_ER
\n",
- "
hosp_ward_ICU
\n",
- "
\n",
- " \n",
- " \n",
- "
\n",
- "
36068
\n",
- "
JC1932576
\n",
- "
131279239451
\n",
- "
639040838
\n",
- "
2019-11-07 03:10:00+00:00
\n",
- "
1
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
36069
\n",
- "
JC2220573
\n",
- "
131016859772
\n",
- "
394579181
\n",
- "
2012-01-15 05:44:00+00:00
\n",
- "
1
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
36070
\n",
- "
JC2358655
\n",
- "
131199129875
\n",
- "
504906619
\n",
- "
2016-09-10 21:28:00+00:00
\n",
- "
1
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
36071
\n",
- "
JC1661636
\n",
- "
131074939470
\n",
- "
459218546
\n",
- "
2015-03-24 10:57:00+00:00
\n",
- "
1
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
36072
\n",
- "
JC1538536
\n",
- "
131021441709
\n",
- "
409639461
\n",
- "
2012-10-24 22:09:00+00:00
\n",
- "
1
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
\n",
- "
\n",
- "
64767
\n",
- "
JC2263331
\n",
- "
131025616133
\n",
- "
422678524
\n",
- "
2013-07-16 22:31:00+00:00
\n",
- "
1
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
64768
\n",
- "
JC2366695
\n",
- "
131218131840
\n",
- "
517952594
\n",
- "
2017-03-21 06:00:00+00:00
\n",
- "
1
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
64769
\n",
- "
JC6166585
\n",
- "
131332640470
\n",
- "
793868984
\n",
- "
2022-04-19 20:53:00+00:00
\n",
- "
1
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
64770
\n",
- "
JC2252517
\n",
- "
131309981909
\n",
- "
723144888
\n",
- "
2021-05-23 02:38:00+00:00
\n",
- "
1
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
64771
\n",
- "
JC2325047
\n",
- "
131275614104
\n",
- "
629203668
\n",
- "
2019-09-03 17:36:00+00:00
\n",
- "
1
\n",
- "
0
\n",
- "
1
\n",
- "
0
\n",
- "
\n",
- " \n",
- "
\n",
- "
28704 rows × 8 columns
\n",
- "
"
- ],
- "text/plain": [
- " anon_id pat_enc_csn_id_coded order_proc_id_coded \\\n",
- "36068 JC1932576 131279239451 639040838 \n",
- "36069 JC2220573 131016859772 394579181 \n",
- "36070 JC2358655 131199129875 504906619 \n",
- "36071 JC1661636 131074939470 459218546 \n",
- "36072 JC1538536 131021441709 409639461 \n",
- "... ... ... ... \n",
- "64767 JC2263331 131025616133 422678524 \n",
- "64768 JC2366695 131218131840 517952594 \n",
- "64769 JC6166585 131332640470 793868984 \n",
- "64770 JC2252517 131309981909 723144888 \n",
- "64771 JC2325047 131275614104 629203668 \n",
- "\n",
- " order_time_jittered_utc hosp_ward_IP hosp_ward_OP hosp_ward_ER \\\n",
- "36068 2019-11-07 03:10:00+00:00 1 0 1 \n",
- "36069 2012-01-15 05:44:00+00:00 1 0 1 \n",
- "36070 2016-09-10 21:28:00+00:00 1 0 1 \n",
- "36071 2015-03-24 10:57:00+00:00 1 0 1 \n",
- "36072 2012-10-24 22:09:00+00:00 1 0 1 \n",
- "... ... ... ... ... \n",
- "64767 2013-07-16 22:31:00+00:00 1 0 1 \n",
- "64768 2017-03-21 06:00:00+00:00 1 0 1 \n",
- "64769 2022-04-19 20:53:00+00:00 1 0 1 \n",
- "64770 2021-05-23 02:38:00+00:00 1 0 1 \n",
- "64771 2019-09-03 17:36:00+00:00 1 0 1 \n",
- "\n",
- " hosp_ward_ICU \n",
- "36068 0 \n",
- "36069 0 \n",
- "36070 0 \n",
- "36071 0 \n",
- "36072 0 \n",
- "... ... \n",
- "64767 0 \n",
- "64768 0 \n",
- "64769 0 \n",
- "64770 0 \n",
- "64771 0 \n",
- "\n",
- "[28704 rows x 8 columns]"
- ]
- },
- "execution_count": 31,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "ED_order"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 118,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "the unique patient encounter number with ED order is 28466\n",
- "the percentage of unique patient encounter with ED order (out of all inpatients) is 89.70%\n",
- "----------------------------------------------------------\n",
- "the unique culture order with ED order is 28704\n",
- "the percentage of unique culture order with ED order (out of all inpatients) is 89.68%\n"
- ]
- }
- ],
- "source": [
- "All_ED_inp= current_med_original_no_mapped_with_12_hours_inpatient_temp.merge(ED_order, on=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc'], how='inner')\n",
- "All_ED_inp_pat_enc_cnt = find_unique_patient_encounter(All_ED_inp)\n",
- "print(\"the unique patient encounter number with ED order is {}\".format(All_ED_inp_pat_enc_cnt))\n",
- "percentage = All_ED_inp_pat_enc_cnt/total_inp_pat_enc_cnt *100\n",
- "print(\"the percentage of unique patient encounter with ED order (out of all inpatients) is {:.2f}%\".format(percentage))\n",
- "print(\"----------------------------------------------------------\")\n",
- "All_ED_inp_order_cnt = find_unique_orders(All_ED_inp)\n",
- "print(\"the unique culture order with ED order is {}\".format(All_ED_inp_order_cnt))\n",
- "percentage = All_ED_inp_order_cnt/total_inp_order_cnt *100\n",
- "print(\"the percentage of unique culture order with ED order (out of all inpatients) is {:.2f}%\".format(percentage))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### The above code shows that out of all inpatient encounter `n = 31734`, `89.70%` (`n = 28466`) is from ED \n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 119,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "the unique patient encounter number with ED order and any medication is 23904\n",
- "the percentage of unique patient encounter with ED order and any medication (out of all ED inpatients) is 83.97%\n",
- "----------------------------------------------------------\n",
- "the unique culture order with ED order and any medication is 24112\n",
- "the percentage of unique culture order with ED order and any medication (out of all ED inpatients) is 84.00%\n",
- "----------------------------------------------------------\n",
- "the percentage of unique patient encounter with ED order and any medication (out of all inpatients with any med) is 92.32%\n",
- "----------------------------------------------------------\n",
- "the percentage of unique culture order with ED order and any medication (out of all inpatients with any med) is 92.28%\n"
- ]
- }
- ],
- "source": [
- "any_med_inp_ed = any_med_inp.merge(ED_order, \\\n",
- " on=['anon_id','pat_enc_csn_id_coded', \n",
- " 'order_proc_id_coded', 'order_time_jittered_utc'],\n",
- " how='inner')\n",
- "any_med_inp_ed_pat_enc_cnt = find_unique_patient_encounter(any_med_inp_ed)\n",
- "print(\"the unique patient encounter number with ED order and any medication is {}\".format(any_med_inp_ed_pat_enc_cnt))\n",
- "percentage = any_med_inp_ed_pat_enc_cnt/All_ED_inp_pat_enc_cnt *100\n",
- "print(\"the percentage of unique patient encounter with ED order and any medication (out of all ED inpatients) is {:.2f}%\".format(percentage))\n",
- "print(\"----------------------------------------------------------\")\n",
- "any_med_inp_ed_order_cnt = find_unique_orders(any_med_inp_ed)\n",
- "print(\"the unique culture order with ED order and any medication is {}\".format(any_med_inp_ed_order_cnt))\n",
- "percentage = any_med_inp_ed_order_cnt/All_ED_inp_order_cnt *100\n",
- "print(\"the percentage of unique culture order with ED order and any medication (out of all ED inpatients) is {:.2f}%\".format(percentage))\n",
- "print(\"----------------------------------------------------------\")\n",
- "percentage = any_med_inp_ed_pat_enc_cnt/ any_med_inp_pat_enc_cnt *100\n",
- "print(\"the percentage of unique patient encounter with ED order and any medication (out of all inpatients with any med) is {:.2f}%\".format(percentage))\n",
- "print(\"----------------------------------------------------------\")\n",
- "percentage = any_med_inp_ed_order_cnt/ any_med_inp_order_cnt *100\n",
- "print(\"the percentage of unique culture order with ED order and any medication (out of all inpatients with any med) is {:.2f}%\".format(percentage))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 120,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "the unique patient encounter number with ED order and abx medication is 8961\n",
- "the percentage of unique patient encounter with ED order and abx medication (out of all ED inpatients) is 31.48%\n",
- "----------------------------------------------------------\n",
- "the unique culture order with ED order and abx medication is 9086\n",
- "the percentage of unique culture order with ED order and abx medication (out of all ED inpatients) is 31.65%\n",
- "----------------------------------------------------------\n",
- "the percentage of unique patient encounter with ED order and abx medication (out of all inpatients with abx med) is 91.99%\n",
- "----------------------------------------------------------\n",
- "the percentage of unique culture order with ED order and abx medication (out of all inpatients with abx med) is 91.92%\n"
- ]
- }
- ],
- "source": [
- "abx_med_inp_ed = abx_med_inp.merge(ED_order, \\\n",
- " on=['anon_id','pat_enc_csn_id_coded', \n",
- " 'order_proc_id_coded', 'order_time_jittered_utc'],\n",
- " how='inner')\n",
- "abx_med_inp_ed_pat_enc_cnt = find_unique_patient_encounter(abx_med_inp_ed)\n",
- "print(\"the unique patient encounter number with ED order and abx medication is {}\".format(abx_med_inp_ed_pat_enc_cnt))\n",
- "percentage = abx_med_inp_ed_pat_enc_cnt/All_ED_inp_pat_enc_cnt *100\n",
- "print(\"the percentage of unique patient encounter with ED order and abx medication (out of all ED inpatients) is {:.2f}%\".format(percentage))\n",
- "print(\"----------------------------------------------------------\")\n",
- "abx_med_inp_ed_order_cnt = find_unique_orders(abx_med_inp_ed)\n",
- "print(\"the unique culture order with ED order and abx medication is {}\".format(abx_med_inp_ed_order_cnt))\n",
- "percentage = abx_med_inp_ed_order_cnt/All_ED_inp_order_cnt *100\n",
- "print(\"the percentage of unique culture order with ED order and abx medication (out of all ED inpatients) is {:.2f}%\".format(percentage))\n",
- "print(\"----------------------------------------------------------\")\n",
- "percentage = abx_med_inp_ed_pat_enc_cnt/ abx_med_inp_pat_enc_cnt *100\n",
- "print(\"the percentage of unique patient encounter with ED order and abx medication (out of all inpatients with abx med) is {:.2f}%\".format(percentage))\n",
- "print(\"----------------------------------------------------------\")\n",
- "percentage = abx_med_inp_ed_order_cnt/ abx_med_inp_order_cnt *100\n",
- "print(\"the percentage of unique culture order with ED order and abx medication (out of all inpatients with abx med) is {:.2f}%\".format(percentage))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 121,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "0.9191704602933738"
- ]
- },
- "execution_count": 121,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "abx_med_inp_ed_order_cnt/abx_med_inp_order_cnt"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### The above code shows that out of all inpatient ED encounter `n = 28466`, `57.93%` (`n = 8743`) has abx medication\n",
- "### Also shows that out of all inpatient encouter with current abx med `n= 9480`, `92.23%` (`n = 8743`) is ED\n",
- "\n",
- "31734 --> 25759 --> 9480 --> 8743"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# ----------- Empirical Med for ED Inpatient Only -----------"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 131,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Group by the specified columns\n",
- "grouped = abx_med_inp_ed.groupby(['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc'])\n",
- "\n",
- "# Function to filter each group\n",
- "def filter_group(group):\n",
- " # Keep rows where:\n",
- " # 1. medication_time is greater than culture order time but smaller than result time, OR\n",
- " # 2. medication_time is within 6 hours before the culture order time\n",
- " condition = (\n",
- " ((group['medication_time'] > group['order_time_jittered_utc']) & \n",
- " (group['medication_time'] < group['result_time_jittered_utc'])) | \n",
- " ((group['medication_time'] >= (group['order_time_jittered_utc'] - pd.Timedelta(hours=12))) & \n",
- " (group['medication_time'] <= group['order_time_jittered_utc'])\n",
- " ))\n",
- " return group[condition]\n",
- "\n",
- "# Apply the filter to each group\n",
- "filtered_groups = [filter_group(group) for _, group in grouped]\n",
- "\n",
- "# Combine the filtered groups into a new DataFrame\n",
- "abx_med_inp_ed_empirical = pd.concat([group for group in filtered_groups if group is not None])\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 127,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "the unique patient encounter number with ED order and abx medication empirical is 8943\n",
- "the percentage of unique patient encounter with ED order and empirical abx medication \n",
- "(out of all ED inpatients with abx med) \n",
- "is 99.80%\n"
- ]
- }
- ],
- "source": [
- "abx_med_inp_ed_empirical_pat_enc_cnt = find_unique_patient_encounter(abx_med_inp_ed_empirical)\n",
- "print(\"the unique patient encounter number with ED order and abx medication empirical is {}\".format(abx_med_inp_ed_empirical_pat_enc_cnt))\n",
- "percentage = abx_med_inp_ed_empirical_pat_enc_cnt/ abx_med_inp_ed_pat_enc_cnt *100\n",
- "print(\"the percentage of unique patient encounter with ED order and empirical abx medication \\n(out of all ED inpatients with abx med) \\nis {:.2f}%\".format(percentage))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 130,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "the unique order number with ED order and abx medication empirical is 9067\n",
- "the percentage of unique order with ED order and empirical abx medication \n",
- "(out of all ED inpatients with abx med) \n",
- "is 99.79%\n"
- ]
- }
- ],
- "source": [
- "abx_med_inp_ed_empirical_order_cnt = find_unique_orders(abx_med_inp_ed_empirical)\n",
- "print(\"the unique order number with ED order and abx medication empirical is {}\".format(abx_med_inp_ed_empirical_order_cnt))\n",
- "percentage = abx_med_inp_ed_empirical_order_cnt/ abx_med_inp_ed_order_cnt *100\n",
- "print(\"the percentage of unique order with ED order and empirical abx medication \\n(out of all ED inpatients with abx med) \\nis {:.2f}%\".format(percentage))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 132,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Table som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.step_5_abx_med_inp_ed_empirical_peds replaced with new data from CSV.\n"
- ]
- }
- ],
- "source": [
- "# Define table ID\n",
- "table_id = \"som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.step_5_abx_med_inp_ed_empirical_peds\"\n",
- "\n",
- "# Define job config with WRITE_TRUNCATE to replace the table\n",
- "job_config = bigquery.LoadJobConfig(\n",
- " write_disposition=\"WRITE_TRUNCATE\", # This replaces the table\n",
- " autodetect=True, # Automatically detect schema\n",
- " source_format=bigquery.SourceFormat.PARQUET\n",
- ")\n",
- "\n",
- "# Upload DataFrame to BigQuery\n",
- "job = client.load_table_from_dataframe(\n",
- " abx_med_inp_ed_empirical, table_id, job_config=job_config\n",
- ")\n",
- "\n",
- "job.result() # Wait for the job to complete\n",
- "\n",
- "print(f\"Table {table_id} replaced with new data from CSV.\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 133,
- "metadata": {},
- "outputs": [],
- "source": [
- "abx_med_inp_ed_empirical.to_csv('../csv_folder/step_5_abx_med_inp_ed_empirical_peds.csv', index=False)\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### The above code shows that out of all inpatient ED encounter `n = 8743` with abx_med, `99.98%` (`n = 8741`) is empirical\n",
- "31734 --> 25759 --> 9480 --> 8743 --> 8741"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# ----------- Filtering out Prior Abx exposure for Empirical Med for ED Inpatient Only -----------"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 215,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "b2bf20a114a245a99f6176bfc491af1a",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "Query is running: 0%| |"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "7078079756b74318849c07d8cb4b4287",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "Downloading: 0%| |"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "%%bigquery --use_rest_api final_cohort_inp_ed_only\n",
- "\n",
- "WITH exclusion AS (\n",
- " SELECT\n",
- " distinct\n",
- " anon_id,\n",
- " pat_enc_csn_id_coded,\n",
- " order_proc_id_coded,\n",
- " order_time_jittered_utc\n",
- " FROM\n",
- " `som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.all_med_new_med_time_peds` al\n",
- " INNER JOIN \n",
- " `som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.step_5_abx_med_inp_ed_empirical_peds` m\n",
- " USING\n",
- " (anon_id, pat_enc_csn_id_coded, order_proc_id_coded, order_time_jittered_utc)\n",
- " WHERE\n",
- " al.medication_time IS NOT NULL\n",
- " AND ARRAY_LENGTH(al.cleaned_antibiotic) > 0 \n",
- " # AND al.medication_action like \"Given\" # remove \"given\" for now\n",
- " AND TIMESTAMP_DIFF(al.medication_time, al.order_time_jittered_utc, HOUR) > -720\n",
- " AND TIMESTAMP_DIFF(al.medication_time, al.order_time_jittered_utc, HOUR) < -12 # change to 12 to be consistent\n",
- "),\n",
- "\n",
- "filtered_groups AS (\n",
- " SELECT\n",
- " m.*\n",
- " FROM\n",
- " `som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.step_5_abx_med_inp_ed_empirical_peds` m\n",
- " WHERE\n",
- " -- Disregard groups where any medication_time is between 12 and 720 hours before order_time_jittered_utc\n",
- " NOT EXISTS (\n",
- " SELECT 1\n",
- " FROM exclusion ex\n",
- " WHERE\n",
- " ex.anon_id = m.anon_id\n",
- " AND ex.pat_enc_csn_id_coded = m.pat_enc_csn_id_coded\n",
- " AND ex.order_proc_id_coded = m.order_proc_id_coded\n",
- " AND ex.order_time_jittered_utc = m.order_time_jittered_utc\n",
- " )\n",
- ")\n",
- "SELECT \n",
- "*\n",
- " -- distinct\n",
- " -- anon_id,\n",
- " -- pat_enc_csn_id_coded,\n",
- " -- order_proc_id_coded,\n",
- " -- order_time_jittered_utc\n",
- " -- -- medication_time,\n",
- " -- -- result_time_jittered_utc\n",
- " -- -- medication_name,\n",
- "\n",
- "FROM\n",
- " filtered_groups\n",
- "ORDER BY\n",
- " anon_id,\n",
- " pat_enc_csn_id_coded,\n",
- " order_proc_id_coded,\n",
- " order_time_jittered_utc"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 216,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "the unique patient encounter number for final cohort is 8363\n",
- "the percentage of unique patient encounter for final cohort (out of all ED inpatients with empirical abx med) is 93.51%\n",
- "----------------------------------------------------------\n",
- "the unique order number for final cohort is 8478\n",
- "the percentage of unique culture order for final cohort (out of all ED inpatients with empirical abx med) is 93.50%\n"
- ]
- }
- ],
- "source": [
- "print(\"the unique patient encounter number for final cohort is {}\".format(find_unique_patient_encounter(final_cohort_inp_ed_only)))\n",
- "percentage = find_unique_patient_encounter(final_cohort_inp_ed_only)/abx_med_inp_ed_empirical_pat_enc_cnt * 100\n",
- "print(\"the percentage of unique patient encounter for final cohort (out of all ED inpatients with empirical abx med) is {:.2f}%\".format(percentage))\n",
- "print(\"----------------------------------------------------------\")\n",
- "percentage = find_unique_orders(final_cohort_inp_ed_only)/abx_med_inp_ed_empirical_order_cnt * 100\n",
- "print(\"the unique order number for final cohort is {}\".format(find_unique_orders(final_cohort_inp_ed_only)))\n",
- "print(\"the percentage of unique culture order for final cohort (out of all ED inpatients with empirical abx med) is {:.2f}%\".format(percentage))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### The above code shows that out of all inpatient ED encounter `n = 8943` with empirical abx_med, `93.51%` (`n = 8363`) is included as final cohort\n",
- "31734 --> 25759 --> 9480 --> 8743 --> 8943 -->8363"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# ----Expore the given aspect for the final inpatient ED Cohort ----"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 217,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "the unique patient encounter number with valid given medication is 6361\n",
- "the unique order number with valid given medication is 6466\n"
- ]
- }
- ],
- "source": [
- "condition = final_cohort_inp_ed_only[\"medication_action\"] == \"Given\"\n",
- "given_final_cohort_inp_ed_only = final_cohort_inp_ed_only[condition]\n",
- "given_final_cohort_inp_ed_only_pat_enc_cnt = find_unique_patient_encounter(given_final_cohort_inp_ed_only)\n",
- "given_final_cohort_inp_ed_only_order_cnt = find_unique_orders(given_final_cohort_inp_ed_only)\n",
- "print(\"the unique patient encounter number with valid given medication is {}\".format(given_final_cohort_inp_ed_only_pat_enc_cnt))\n",
- "print(\"the unique order number with valid given medication is {}\".format(given_final_cohort_inp_ed_only_order_cnt))\n",
- "# percentage = given_final_cohort_inp_ed_only_pat_enc_cnt/find_unique_patient_encounter(final_cohort_inp_ed_only) *100\n",
- "# print(\"the percentage of unique patient encounter with given medication (out of all inpatients) is {:.2f}%\".format(percentage))\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 141,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "nique_given_final_cohort_inp_ed_only = given_final_cohort_inp_ed_only.drop_duplicates(subset=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc'])\n",
- "nique_given_final_cohort_inp_ed_only[\"order_time_jittered_utc\"].dt.year.value_counts().sort_index().plot(kind='bar', title='Number of Unique Urine Culture Orders with Given Abx Med per Year', xlabel='Year', ylabel='Number of Orders', figsize=(10, 6))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## ⏳ Cleaning the medication name"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 220,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/var/folders/r3/mc640yrn2_70d_7zvw5cc3q00000gn/T/ipykernel_1420/657774021.py:42: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " given_final_cohort_inp_ed_only.drop(columns=['hosp_ward_IP', 'hosp_ward_OP', 'hosp_ward_ER', 'hosp_ward_ICU'], inplace=True)\n",
- "/var/folders/r3/mc640yrn2_70d_7zvw5cc3q00000gn/T/ipykernel_1420/657774021.py:43: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " given_final_cohort_inp_ed_only[\"final_antibiotic\"] = given_final_cohort_inp_ed_only[\"cleaned_antibiotic\"].apply(convert_to_list_and_keep_longest).replace(cleaning_mapping)\n"
- ]
- }
- ],
- "source": [
- "import ast\n",
- "# def convert_to_list_and_keep_longest(value):\n",
- "# # 1) Convert string -> list if possible\n",
- "# if isinstance(value, str):\n",
- "# try:\n",
- "# value = ast.literal_eval(value)\n",
- "# except:\n",
- "# # If parsing fails, just keep the original value\n",
- "# pass\n",
- "\n",
- "# # 2) If the value is now a non-empty list, return the longest item\n",
- "# if isinstance(value, list) and value:\n",
- "\n",
- "# return max(value, key=len)\n",
- " \n",
- "# # Otherwise, return the value as-is\n",
- "# return value\n",
- "\n",
- "import numpy as np\n",
- "\n",
- "def convert_to_list_and_keep_longest(value):\n",
- " try:\n",
- " # Convert numpy arrays to lists\n",
- " if isinstance(value, np.ndarray):\n",
- " value = value.tolist()\n",
- "\n",
- " # Already a list? Great.\n",
- " if isinstance(value, list) and len(value) > 0:\n",
- " str_items = [str(v) for v in value if v not in [None, \"\"]]\n",
- " if str_items:\n",
- " return max(str_items, key=len)\n",
- "\n",
- " # Fallback — just return original\n",
- " return value\n",
- " \n",
- " except Exception as e:\n",
- " print(f\"⚠️ Error: {e} — value: {value}\")\n",
- " raise\n",
- "\n",
- "\n",
- "# Apply the function to your column\n",
- "given_final_cohort_inp_ed_only.drop(columns=['hosp_ward_IP', 'hosp_ward_OP', 'hosp_ward_ER', 'hosp_ward_ICU'], inplace=True)\n",
- "given_final_cohort_inp_ed_only[\"final_antibiotic\"] = given_final_cohort_inp_ed_only[\"cleaned_antibiotic\"].apply(convert_to_list_and_keep_longest).replace(cleaning_mapping)"
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "1e976236ae0941149d9e56239385f022",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Downloading: 0%| |"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "%%bigquery --use_rest_api df_hosp_ward_info\n",
+ "select * from som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.microbiology_urine_cultures_ward_info_peds"
]
},
{
"cell_type": "code",
- "execution_count": 121,
+ "execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
- "# final_cohort.to_csv('../csv_folder/final_cohort.csv', index=False)"
+ "ED_order = df_hosp_ward_info[df_hosp_ward_info['hosp_ward_ER'] == 1]"
]
},
{
"cell_type": "code",
- "execution_count": 222,
+ "execution_count": 29,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the unique patient encounter number with ED order is 28463\n",
+ "the percentage of unique patient encounter with ED order (out of all inpatients) is 89.70%\n",
+ "----------------------------------------------------------\n",
+ "the unique culture order with ED order is 28701\n",
+ "the percentage of unique culture order with ED order (out of all inpatients) is 89.69%\n"
+ ]
+ }
+ ],
"source": [
- "given_final_cohort_inp_ed_only = given_final_cohort_inp_ed_only.drop_duplicates(subset=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc',\"result_time_jittered_utc\", \"final_antibiotic\"])"
+ "All_ED_inp= current_med_original_no_mapped_with_12_hours_inpatient_temp.merge(ED_order, on=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc'], how='inner')\n",
+ "All_ED_inp_pat_enc_cnt = find_unique_patient_encounter(All_ED_inp)\n",
+ "print(\"the unique patient encounter number with ED order is {}\".format(All_ED_inp_pat_enc_cnt))\n",
+ "percentage = All_ED_inp_pat_enc_cnt/total_inp_pat_enc_cnt *100\n",
+ "print(\"the percentage of unique patient encounter with ED order (out of all inpatients) is {:.2f}%\".format(percentage))\n",
+ "print(\"----------------------------------------------------------\")\n",
+ "All_ED_inp_order_cnt = find_unique_orders(All_ED_inp)\n",
+ "print(\"the unique culture order with ED order is {}\".format(All_ED_inp_order_cnt))\n",
+ "percentage = All_ED_inp_order_cnt/total_inp_order_cnt *100\n",
+ "print(\"the percentage of unique culture order with ED order (out of all inpatients) is {:.2f}%\".format(percentage))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### The above code shows that out of all inpatient encounter `n = 31734`, `89.70%` (`n = 28466`) is from ED \n",
+ "\n"
]
},
{
"cell_type": "code",
- "execution_count": 223,
+ "execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "the unique order number for final_cohort is 6466\n",
- "the unique order number from final cohort that has more than one medication is 698\n"
+ "the unique patient encounter number with ED order and any medication is 23902\n",
+ "the percentage of unique patient encounter with ED order and any medication (out of all ED inpatients) is 83.98%\n",
+ "----------------------------------------------------------\n",
+ "the unique culture order with ED order and any medication is 24110\n",
+ "the percentage of unique culture order with ED order and any medication (out of all ED inpatients) is 84.00%\n",
+ "----------------------------------------------------------\n",
+ "the percentage of unique patient encounter with ED order and any medication (out of all inpatients with any med) is 92.32%\n",
+ "----------------------------------------------------------\n",
+ "the percentage of unique culture order with ED order and any medication (out of all inpatients with any med) is 92.28%\n"
]
}
],
"source": [
- "group_counts = given_final_cohort_inp_ed_only.groupby(\n",
- " ['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc']\n",
- ")['final_antibiotic'].transform('count')\n",
- "\n",
- "# Filter rows where group count is greater than 1\n",
- "group_counts_df= given_final_cohort_inp_ed_only[group_counts > 1]\n",
- "sorted_group_counts_df = group_counts_df.sort_values(by=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc'])\n",
- "\n",
- "print(\"the unique order number for final_cohort is {}\".format(find_unique_orders(given_final_cohort_inp_ed_only)))\n",
- "print(\"the unique order number from final cohort that has more than one medication is {}\".format(find_unique_orders(sorted_group_counts_df)))"
+ "any_med_inp_ed = any_med_inp.merge(ED_order, \\\n",
+ " on=['anon_id','pat_enc_csn_id_coded', \n",
+ " 'order_proc_id_coded', 'order_time_jittered_utc'],\n",
+ " how='inner')\n",
+ "any_med_inp_ed_pat_enc_cnt = find_unique_patient_encounter(any_med_inp_ed)\n",
+ "print(\"the unique patient encounter number with ED order and any medication is {}\".format(any_med_inp_ed_pat_enc_cnt))\n",
+ "percentage = any_med_inp_ed_pat_enc_cnt/All_ED_inp_pat_enc_cnt *100\n",
+ "print(\"the percentage of unique patient encounter with ED order and any medication (out of all ED inpatients) is {:.2f}%\".format(percentage))\n",
+ "print(\"----------------------------------------------------------\")\n",
+ "any_med_inp_ed_order_cnt = find_unique_orders(any_med_inp_ed)\n",
+ "print(\"the unique culture order with ED order and any medication is {}\".format(any_med_inp_ed_order_cnt))\n",
+ "percentage = any_med_inp_ed_order_cnt/All_ED_inp_order_cnt *100\n",
+ "print(\"the percentage of unique culture order with ED order and any medication (out of all ED inpatients) is {:.2f}%\".format(percentage))\n",
+ "print(\"----------------------------------------------------------\")\n",
+ "percentage = any_med_inp_ed_pat_enc_cnt/ any_med_inp_pat_enc_cnt *100\n",
+ "print(\"the percentage of unique patient encounter with ED order and any medication (out of all inpatients with any med) is {:.2f}%\".format(percentage))\n",
+ "print(\"----------------------------------------------------------\")\n",
+ "percentage = any_med_inp_ed_order_cnt/ any_med_inp_order_cnt *100\n",
+ "print(\"the percentage of unique culture order with ED order and any medication (out of all inpatients with any med) is {:.2f}%\".format(percentage))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the unique patient encounter number with ED order and abx medication is 8959\n",
+ "the percentage of unique patient encounter with ED order and abx medication (out of all ED inpatients) is 31.48%\n",
+ "----------------------------------------------------------\n",
+ "the unique culture order with ED order and abx medication is 9084\n",
+ "the percentage of unique culture order with ED order and abx medication (out of all ED inpatients) is 31.65%\n",
+ "----------------------------------------------------------\n",
+ "the percentage of unique patient encounter with ED order and abx medication (out of all inpatients with abx med) is 91.99%\n",
+ "----------------------------------------------------------\n",
+ "the percentage of unique culture order with ED order and abx medication (out of all inpatients with abx med) is 91.92%\n"
+ ]
+ }
+ ],
+ "source": [
+ "abx_med_inp_ed = abx_med_inp.merge(ED_order, \\\n",
+ " on=['anon_id','pat_enc_csn_id_coded', \n",
+ " 'order_proc_id_coded', 'order_time_jittered_utc'],\n",
+ " how='inner')\n",
+ "abx_med_inp_ed_pat_enc_cnt = find_unique_patient_encounter(abx_med_inp_ed)\n",
+ "print(\"the unique patient encounter number with ED order and abx medication is {}\".format(abx_med_inp_ed_pat_enc_cnt))\n",
+ "percentage = abx_med_inp_ed_pat_enc_cnt/All_ED_inp_pat_enc_cnt *100\n",
+ "print(\"the percentage of unique patient encounter with ED order and abx medication (out of all ED inpatients) is {:.2f}%\".format(percentage))\n",
+ "print(\"----------------------------------------------------------\")\n",
+ "abx_med_inp_ed_order_cnt = find_unique_orders(abx_med_inp_ed)\n",
+ "print(\"the unique culture order with ED order and abx medication is {}\".format(abx_med_inp_ed_order_cnt))\n",
+ "percentage = abx_med_inp_ed_order_cnt/All_ED_inp_order_cnt *100\n",
+ "print(\"the percentage of unique culture order with ED order and abx medication (out of all ED inpatients) is {:.2f}%\".format(percentage))\n",
+ "print(\"----------------------------------------------------------\")\n",
+ "percentage = abx_med_inp_ed_pat_enc_cnt/ abx_med_inp_pat_enc_cnt *100\n",
+ "print(\"the percentage of unique patient encounter with ED order and abx medication (out of all inpatients with abx med) is {:.2f}%\".format(percentage))\n",
+ "print(\"----------------------------------------------------------\")\n",
+ "percentage = abx_med_inp_ed_order_cnt/ abx_med_inp_order_cnt *100\n",
+ "print(\"the percentage of unique culture order with ED order and abx medication (out of all inpatients with abx med) is {:.2f}%\".format(percentage))"
]
},
{
"cell_type": "code",
- "execution_count": 224,
+ "execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- "
\n",
- "
\n",
- "
anon_id
\n",
- "
pat_enc_csn_id_coded
\n",
- "
order_proc_id_coded
\n",
- "
order_time_jittered_utc
\n",
- "
result_time_jittered_utc
\n",
- "
ordering_mode
\n",
- "
medication_time
\n",
- "
medication_name
\n",
- "
order_med_id_coded
\n",
- "
medication_action
\n",
- "
cleaned_antibiotic
\n",
- "
final_antibiotic
\n",
- "
\n",
- " \n",
- " \n",
- "
\n",
- "
0
\n",
- "
JC1000924
\n",
- "
131014644911
\n",
- "
387581858
\n",
- "
2011-07-25 05:14:00+00:00
\n",
- "
2011-07-27 02:24:00+00:00
\n",
- "
Inpatient
\n",
- "
2011-07-25 08:20:00+00:00
\n",
- "
CEPHALEXIN 250 MG PO CAPS
\n",
- "
387591109
\n",
- "
Given
\n",
- "
[Cephalexin]
\n",
- "
Cephalexin/Cephalothin
\n",
- "
\n",
- "
\n",
- "
1
\n",
- "
JC1000924
\n",
- "
131014644911
\n",
- "
387581858
\n",
- "
2011-07-25 05:14:00+00:00
\n",
- "
2011-07-27 02:24:00+00:00
\n",
- "
Inpatient
\n",
- "
2011-07-25 09:23:00+00:00
\n",
- "
SULFAMETHOXAZOLE-TRIMETHOPRIM 400-80 MG PO TABS
\n",
- "
387591245
\n",
- "
Given
\n",
- "
[Sulfamethoxazole-Trimethoprim, Trimethoprim]
\n",
- "
Trimethoprim/Sulfamethoxazole
\n",
- "
\n",
- "
\n",
- "
2
\n",
- "
JC1001971
\n",
- "
131007652469
\n",
- "
359619675
\n",
- "
2009-11-09 22:23:00+00:00
\n",
- "
2009-11-11 19:30:00+00:00
\n",
- "
Inpatient
\n",
- "
2009-11-10 00:18:23+00:00
\n",
- "
CEFTRIAXONE PEDIATRIC IM INJECTION
\n",
- "
359621059
\n",
- "
Given
\n",
- "
[Ceftriaxone]
\n",
- "
Ceftriaxone
\n",
- "
\n",
- "
\n",
- "
3
\n",
- "
JC1001971
\n",
- "
131011493486
\n",
- "
375107375
\n",
- "
2010-10-28 06:49:00+00:00
\n",
- "
2010-10-30 05:01:00+00:00
\n",
- "
Inpatient
\n",
- "
2010-10-28 08:00:00+00:00
\n",
- "
SULFAMETHOXAZOLE-TRIMETHOPRIM 200-40 MG/5 ML P...
\n",
- "
375117174
\n",
- "
Given
\n",
- "
[Sulfamethoxazole-Trimethoprim, Trimethoprim]
\n",
- "
Trimethoprim/Sulfamethoxazole
\n",
- "
\n",
- "
\n",
- "
4
\n",
- "
JC1002179
\n",
- "
131072441287
\n",
- "
457316754
\n",
- "
2015-01-25 11:53:00+00:00
\n",
- "
2015-01-27 16:14:00+00:00
\n",
- "
Inpatient
\n",
- "
2015-01-25 13:13:00+00:00
\n",
- "
AZITHROMYCIN 200 MG/5 ML PO SUSR
\n",
- "
457317321
\n",
- "
Given
\n",
- "
[Azithromycin]
\n",
- "
Azithromycin
\n",
- "
\n",
- "
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
...
\n",
- "
\n",
- "
\n",
- "
15393
\n",
- "
JC995127
\n",
- "
131086840366
\n",
- "
464568221
\n",
- "
2015-06-09 20:06:00+00:00
\n",
- "
2015-06-11 21:13:00+00:00
\n",
- "
Inpatient
\n",
- "
2015-06-09 22:52:00+00:00
\n",
- "
CEFTRIAXONE 1 GRAM/50 ML MINI-BAG PLUS
\n",
- "
464581655
\n",
- "
Given
\n",
- "
[Ceftriaxone]
\n",
- "
Ceftriaxone
\n",
- "
\n",
- "
\n",
- "
15394
\n",
- "
JC996640
\n",
- "
131012081959
\n",
- "
377617902
\n",
- "
2011-01-22 04:42:00+00:00
\n",
- "
2011-02-06 01:21:00+00:00
\n",
- "
Inpatient
\n",
- "
2011-01-22 01:36:50+00:00
\n",
- "
CEFTRIAXONE PEDIATRIC IV INFUSION
\n",
- "
377610820
\n",
- "
Given
\n",
- "
[Ceftriaxone]
\n",
- "
Ceftriaxone
\n",
- "
\n",
- "
\n",
- "
15395
\n",
- "
JC996650
\n",
- "
131012247916
\n",
- "
378293871
\n",
- "
2011-01-31 10:14:00+00:00
\n",
- "
2011-02-02 16:40:00+00:00
\n",
- "
Inpatient
\n",
- "
2011-01-31 11:48:37+00:00
\n",
- "
CEPHALEXIN 250 MG/5 ML PO SUSR
\n",
- "
378294668
\n",
- "
Given
\n",
- "
[Cephalexin]
\n",
- "
Cephalexin/Cephalothin
\n",
- "
\n",
- "
\n",
- "
15409
\n",
- "
JC999518
\n",
- "
131008782853
\n",
- "
364618856
\n",
- "
2010-04-15 04:56:00+00:00
\n",
- "
2010-04-18 15:47:00+00:00
\n",
- "
Inpatient
\n",
- "
2010-04-15 06:23:22+00:00
\n",
- "
CEPHALEXIN 250 MG/5 ML PO SUSR
\n",
- "
364620837
\n",
- "
Given
\n",
- "
[Cephalexin]
\n",
- "
Cephalexin/Cephalothin
\n",
- "
\n",
- "
\n",
- "
15412
\n",
- "
JC999859
\n",
- "
131038386282
\n",
- "
443088092
\n",
- "
2014-08-04 20:55:00+00:00
\n",
- "
2014-08-07 00:58:00+00:00
\n",
- "
Inpatient
\n",
- "
2014-08-04 22:21:00+00:00
\n",
- "
PIPERACILLIN-TAZOBACTAM 4.5 GRAM/100 ML MINI-B...
\n",
- "
443088906
\n",
- "
Given
\n",
- "
[Piperacillin-Tazobactam]
\n",
- "
Piperacillin/Tazobactam
\n",
- "
\n",
- " \n",
- "
\n",
- "
7217 rows × 12 columns
\n",
- "
"
- ],
"text/plain": [
- " anon_id pat_enc_csn_id_coded order_proc_id_coded \\\n",
- "0 JC1000924 131014644911 387581858 \n",
- "1 JC1000924 131014644911 387581858 \n",
- "2 JC1001971 131007652469 359619675 \n",
- "3 JC1001971 131011493486 375107375 \n",
- "4 JC1002179 131072441287 457316754 \n",
- "... ... ... ... \n",
- "15393 JC995127 131086840366 464568221 \n",
- "15394 JC996640 131012081959 377617902 \n",
- "15395 JC996650 131012247916 378293871 \n",
- "15409 JC999518 131008782853 364618856 \n",
- "15412 JC999859 131038386282 443088092 \n",
- "\n",
- " order_time_jittered_utc result_time_jittered_utc ordering_mode \\\n",
- "0 2011-07-25 05:14:00+00:00 2011-07-27 02:24:00+00:00 Inpatient \n",
- "1 2011-07-25 05:14:00+00:00 2011-07-27 02:24:00+00:00 Inpatient \n",
- "2 2009-11-09 22:23:00+00:00 2009-11-11 19:30:00+00:00 Inpatient \n",
- "3 2010-10-28 06:49:00+00:00 2010-10-30 05:01:00+00:00 Inpatient \n",
- "4 2015-01-25 11:53:00+00:00 2015-01-27 16:14:00+00:00 Inpatient \n",
- "... ... ... ... \n",
- "15393 2015-06-09 20:06:00+00:00 2015-06-11 21:13:00+00:00 Inpatient \n",
- "15394 2011-01-22 04:42:00+00:00 2011-02-06 01:21:00+00:00 Inpatient \n",
- "15395 2011-01-31 10:14:00+00:00 2011-02-02 16:40:00+00:00 Inpatient \n",
- "15409 2010-04-15 04:56:00+00:00 2010-04-18 15:47:00+00:00 Inpatient \n",
- "15412 2014-08-04 20:55:00+00:00 2014-08-07 00:58:00+00:00 Inpatient \n",
- "\n",
- " medication_time \\\n",
- "0 2011-07-25 08:20:00+00:00 \n",
- "1 2011-07-25 09:23:00+00:00 \n",
- "2 2009-11-10 00:18:23+00:00 \n",
- "3 2010-10-28 08:00:00+00:00 \n",
- "4 2015-01-25 13:13:00+00:00 \n",
- "... ... \n",
- "15393 2015-06-09 22:52:00+00:00 \n",
- "15394 2011-01-22 01:36:50+00:00 \n",
- "15395 2011-01-31 11:48:37+00:00 \n",
- "15409 2010-04-15 06:23:22+00:00 \n",
- "15412 2014-08-04 22:21:00+00:00 \n",
- "\n",
- " medication_name order_med_id_coded \\\n",
- "0 CEPHALEXIN 250 MG PO CAPS 387591109 \n",
- "1 SULFAMETHOXAZOLE-TRIMETHOPRIM 400-80 MG PO TABS 387591245 \n",
- "2 CEFTRIAXONE PEDIATRIC IM INJECTION 359621059 \n",
- "3 SULFAMETHOXAZOLE-TRIMETHOPRIM 200-40 MG/5 ML P... 375117174 \n",
- "4 AZITHROMYCIN 200 MG/5 ML PO SUSR 457317321 \n",
- "... ... ... \n",
- "15393 CEFTRIAXONE 1 GRAM/50 ML MINI-BAG PLUS 464581655 \n",
- "15394 CEFTRIAXONE PEDIATRIC IV INFUSION 377610820 \n",
- "15395 CEPHALEXIN 250 MG/5 ML PO SUSR 378294668 \n",
- "15409 CEPHALEXIN 250 MG/5 ML PO SUSR 364620837 \n",
- "15412 PIPERACILLIN-TAZOBACTAM 4.5 GRAM/100 ML MINI-B... 443088906 \n",
- "\n",
- " medication_action cleaned_antibiotic \\\n",
- "0 Given [Cephalexin] \n",
- "1 Given [Sulfamethoxazole-Trimethoprim, Trimethoprim] \n",
- "2 Given [Ceftriaxone] \n",
- "3 Given [Sulfamethoxazole-Trimethoprim, Trimethoprim] \n",
- "4 Given [Azithromycin] \n",
- "... ... ... \n",
- "15393 Given [Ceftriaxone] \n",
- "15394 Given [Ceftriaxone] \n",
- "15395 Given [Cephalexin] \n",
- "15409 Given [Cephalexin] \n",
- "15412 Given [Piperacillin-Tazobactam] \n",
- "\n",
- " final_antibiotic \n",
- "0 Cephalexin/Cephalothin \n",
- "1 Trimethoprim/Sulfamethoxazole \n",
- "2 Ceftriaxone \n",
- "3 Trimethoprim/Sulfamethoxazole \n",
- "4 Azithromycin \n",
- "... ... \n",
- "15393 Ceftriaxone \n",
- "15394 Ceftriaxone \n",
- "15395 Cephalexin/Cephalothin \n",
- "15409 Cephalexin/Cephalothin \n",
- "15412 Piperacillin/Tazobactam \n",
- "\n",
- "[7217 rows x 12 columns]"
+ "0.9191541030051604"
]
},
- "execution_count": 224,
+ "execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "given_final_cohort_inp_ed_only"
+ "abx_med_inp_ed_order_cnt/abx_med_inp_order_cnt"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### The above code shows that out of all inpatient ED encounter `n = 28466`, `57.93%` (`n = 8743`) has abx medication\n",
+ "### Also shows that out of all inpatient encouter with current abx med `n= 9480`, `92.23%` (`n = 8743`) is ED\n",
+ "\n",
+ "31734 --> 25759 --> 9480 --> 8743"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# ----------- Empirical Med for ED Inpatient Only -----------"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Group by the specified columns\n",
+ "grouped = abx_med_inp_ed.groupby(['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc'])\n",
+ "\n",
+ "# Function to filter each group\n",
+ "def filter_group(group):\n",
+ " # Keep rows where:\n",
+ " # 1. medication_time is greater than culture order time but smaller than result time, OR\n",
+ " # 2. medication_time is within 6 hours before the culture order time\n",
+ " condition = (\n",
+ " ((group['medication_time'] > group['order_time_jittered_utc']) & \n",
+ " (group['medication_time'] < group['result_time_jittered_utc'])) | \n",
+ " ((group['medication_time'] >= (group['order_time_jittered_utc'] - pd.Timedelta(hours=12))) & \n",
+ " (group['medication_time'] <= group['order_time_jittered_utc'])\n",
+ " ))\n",
+ " return group[condition]\n",
+ "\n",
+ "# Apply the filter to each group\n",
+ "filtered_groups = [filter_group(group) for _, group in grouped]\n",
+ "\n",
+ "# Combine the filtered groups into a new DataFrame\n",
+ "abx_med_inp_ed_empirical = pd.concat([group for group in filtered_groups if group is not None])\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the unique patient encounter number with ED order and abx medication empirical is 8941\n",
+ "the percentage of unique patient encounter with ED order and empirical abx medication \n",
+ "(out of all ED inpatients with abx med) \n",
+ "is 99.80%\n"
+ ]
+ }
+ ],
+ "source": [
+ "abx_med_inp_ed_empirical_pat_enc_cnt = find_unique_patient_encounter(abx_med_inp_ed_empirical)\n",
+ "print(\"the unique patient encounter number with ED order and abx medication empirical is {}\".format(abx_med_inp_ed_empirical_pat_enc_cnt))\n",
+ "percentage = abx_med_inp_ed_empirical_pat_enc_cnt/ abx_med_inp_ed_pat_enc_cnt *100\n",
+ "print(\"the percentage of unique patient encounter with ED order and empirical abx medication \\n(out of all ED inpatients with abx med) \\nis {:.2f}%\".format(percentage))"
]
},
{
"cell_type": "code",
- "execution_count": 277,
+ "execution_count": 35,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the unique order number with ED order and abx medication empirical is 9065\n",
+ "the percentage of unique order with ED order and empirical abx medication \n",
+ "(out of all ED inpatients with abx med) \n",
+ "is 99.79%\n"
+ ]
+ }
+ ],
"source": [
- "# read impliced_susceptibility rules\n",
- "implied_suspectibility = pd.read_csv('../csv_folder/implied_susceptibility_rules.csv')"
+ "abx_med_inp_ed_empirical_order_cnt = find_unique_orders(abx_med_inp_ed_empirical)\n",
+ "print(\"the unique order number with ED order and abx medication empirical is {}\".format(abx_med_inp_ed_empirical_order_cnt))\n",
+ "percentage = abx_med_inp_ed_empirical_order_cnt/ abx_med_inp_ed_order_cnt *100\n",
+ "print(\"the percentage of unique order with ED order and empirical abx medication \\n(out of all ED inpatients with abx med) \\nis {:.2f}%\".format(percentage))"
]
},
{
- "cell_type": "markdown",
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Table som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.step_5_abx_med_inp_ed_empirical_peds replaced with new data from CSV.\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Define table ID\n",
+ "table_id = \"som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.step_5_abx_med_inp_ed_empirical_peds\"\n",
+ "\n",
+ "# Define job config with WRITE_TRUNCATE to replace the table\n",
+ "job_config = bigquery.LoadJobConfig(\n",
+ " write_disposition=\"WRITE_TRUNCATE\", # This replaces the table\n",
+ " autodetect=True, # Automatically detect schema\n",
+ " source_format=bigquery.SourceFormat.PARQUET\n",
+ ")\n",
+ "\n",
+ "# Upload DataFrame to BigQuery\n",
+ "job = client.load_table_from_dataframe(\n",
+ " abx_med_inp_ed_empirical, table_id, job_config=job_config\n",
+ ")\n",
+ "\n",
+ "job.result() # Wait for the job to complete\n",
+ "\n",
+ "print(f\"Table {table_id} replaced with new data from CSV.\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
"metadata": {},
+ "outputs": [],
"source": [
- "# Include implied-susceptibility rules"
+ "abx_med_inp_ed_empirical.to_csv('../csv_folder/step_5_abx_med_inp_ed_empirical_peds.csv', index=False)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "Step 1: Check for inherent resistance"
+ "### The above code shows that out of all inpatient ED encounter `n = 8743` with abx_med, `99.98%` (`n = 8741`) is empirical\n",
+ "31734 --> 25759 --> 9480 --> 8743 --> 8741"
]
},
{
- "cell_type": "code",
- "execution_count": 278,
+ "cell_type": "markdown",
"metadata": {},
- "outputs": [],
"source": [
- "import re\n",
- "with_implied_susceptibility_starting_cohort = starting_cohort.copy()\n",
- "with_implied_susceptibility_starting_cohort[\"susceptibility_source\"] = \"original\"\n",
- "# Get unique organisms from implied_susceptibility\n",
- "bacteria = implied_suspectibility[\"Organism\"].dropna().unique().tolist()\n",
- "\n",
- "# Create regex pattern and find matches\n",
- "pattern = '|'.join([re.escape(org) for org in bacteria])\n",
- "matches = with_implied_susceptibility_starting_cohort[\"organism\"].str.contains(pattern, case=False, na=False)\n",
- "\n",
- "# Add a new column showing WHICH organism was matched\n",
- "def find_matched_organism(org_name):\n",
- " org_name = str(org_name).upper()\n",
- " for bact in bacteria:\n",
- " if re.search(re.escape(bact), org_name, re.IGNORECASE):\n",
- " return bact\n",
- " return None\n",
- "\n",
- "with_implied_susceptibility_starting_cohort['matched_organism'] \\\n",
- " = with_implied_susceptibility_starting_cohort['organism'].apply(find_matched_organism)\n"
+ "# ----------- Filtering out Prior Abx exposure for Empirical Med for ED Inpatient Only -----------"
]
},
{
"cell_type": "code",
- "execution_count": 279,
+ "execution_count": 38,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "4e29fa76836047c683be2aad1b44f4d3",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Query is running: 0%| |"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "829f30574f1c47dcb8e578abab25e6d5",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Downloading: 0%| |"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
- "inherent_resistance = implied_suspectibility[\n",
- " implied_suspectibility['Implied_Agent'].isna()\n",
- "][['Organism', 'Antibiotic']].drop_duplicates()\n",
- "resistant_to_add = pd.merge(\n",
- " with_implied_susceptibility_starting_cohort[['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded',\n",
- " 'order_time_jittered_utc', 'result_time_jittered_utc', 'ordering_mode',\n",
- " 'culture_description', 'was_positive', 'organism', \"matched_organism\"]].drop_duplicates(),\n",
- " inherent_resistance,\n",
- " left_on='matched_organism',\n",
- " right_on='Organism',\n",
- " how='inner'\n",
+ "%%bigquery --use_rest_api final_cohort_inp_ed_only\n",
+ "\n",
+ "WITH exclusion AS (\n",
+ " SELECT\n",
+ " distinct\n",
+ " anon_id,\n",
+ " pat_enc_csn_id_coded,\n",
+ " order_proc_id_coded,\n",
+ " order_time_jittered_utc\n",
+ " FROM\n",
+ " `som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.all_med_new_med_time_peds` al\n",
+ " INNER JOIN \n",
+ " `som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.step_5_abx_med_inp_ed_empirical_peds` m\n",
+ " USING\n",
+ " (anon_id, pat_enc_csn_id_coded, order_proc_id_coded, order_time_jittered_utc)\n",
+ " WHERE\n",
+ " al.medication_time IS NOT NULL\n",
+ " AND ARRAY_LENGTH(al.cleaned_antibiotic) > 0 \n",
+ " # AND al.medication_action like \"Given\" # remove \"given\" for now\n",
+ " AND TIMESTAMP_DIFF(al.medication_time, al.order_time_jittered_utc, HOUR) > -720\n",
+ " AND TIMESTAMP_DIFF(al.medication_time, al.order_time_jittered_utc, HOUR) < -12 # change to 12 to be consistent\n",
+ "),\n",
+ "\n",
+ "filtered_groups AS (\n",
+ " SELECT\n",
+ " m.*\n",
+ " FROM\n",
+ " `som-nero-phi-jonc101.antimicrobial_stewardship_sandy_refactor.step_5_abx_med_inp_ed_empirical_peds` m\n",
+ " WHERE\n",
+ " -- Disregard groups where any medication_time is between 12 and 720 hours before order_time_jittered_utc\n",
+ " NOT EXISTS (\n",
+ " SELECT 1\n",
+ " FROM exclusion ex\n",
+ " WHERE\n",
+ " ex.anon_id = m.anon_id\n",
+ " AND ex.pat_enc_csn_id_coded = m.pat_enc_csn_id_coded\n",
+ " AND ex.order_proc_id_coded = m.order_proc_id_coded\n",
+ " AND ex.order_time_jittered_utc = m.order_time_jittered_utc\n",
+ " )\n",
")\n",
- "resistant_to_add = resistant_to_add.rename(columns={'Antibiotic': 'antibiotic'})\n",
- "resistant_to_add['susceptibility'] = 'Resistant'\n",
- "resistant_to_add['susceptibility_source'] = 'inherent_resistance'\n",
- "cols_to_keep = with_implied_susceptibility_starting_cohort.columns\n",
- "added_resistant_cohort = (pd.concat([\n",
- " with_implied_susceptibility_starting_cohort,\n",
- " resistant_to_add[cols_to_keep]\n",
- "], ignore_index=True))\\\n",
- " .drop_duplicates(subset=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', \n",
- " 'organism', 'antibiotic', 'susceptibility'], keep='first')\\\n",
- " .sort_values(by=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc'])# Keeps our new resistant records if duplicates exist"
+ "SELECT \n",
+ "*\n",
+ " -- distinct\n",
+ " -- anon_id,\n",
+ " -- pat_enc_csn_id_coded,\n",
+ " -- order_proc_id_coded,\n",
+ " -- order_time_jittered_utc\n",
+ " -- -- medication_time,\n",
+ " -- -- result_time_jittered_utc\n",
+ " -- -- medication_name,\n",
+ "\n",
+ "FROM\n",
+ " filtered_groups\n",
+ "ORDER BY\n",
+ " anon_id,\n",
+ " pat_enc_csn_id_coded,\n",
+ " order_proc_id_coded,\n",
+ " order_time_jittered_utc"
]
},
{
"cell_type": "code",
- "execution_count": 236,
+ "execution_count": 39,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the unique patient encounter number for final cohort is 8362\n",
+ "the percentage of unique patient encounter for final cohort (out of all ED inpatients with empirical abx med) is 93.52%\n",
+ "----------------------------------------------------------\n",
+ "the unique order number for final cohort is 8477\n",
+ "the percentage of unique culture order for final cohort (out of all ED inpatients with empirical abx med) is 93.51%\n"
+ ]
+ }
+ ],
"source": [
- "# duplicate_check = added_resistant_cohort.duplicated(\n",
- "# subset=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', \n",
- "# 'organism', 'antibiotic', 'susceptibility'],\n",
- "# keep=False # Mark all duplicates as True\n",
- "# )\n",
- "\n",
- "# # Step 2: Create a separate dataframe with just duplicates\n",
- "# duplicates_df = added_resistant_cohort[duplicate_check].sort_values(\n",
- "# by=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', \n",
- "# 'organism', 'antibiotic', 'susceptibility']\n",
- "# )"
+ "print(\"the unique patient encounter number for final cohort is {}\".format(find_unique_patient_encounter(final_cohort_inp_ed_only)))\n",
+ "percentage = find_unique_patient_encounter(final_cohort_inp_ed_only)/abx_med_inp_ed_empirical_pat_enc_cnt * 100\n",
+ "print(\"the percentage of unique patient encounter for final cohort (out of all ED inpatients with empirical abx med) is {:.2f}%\".format(percentage))\n",
+ "print(\"----------------------------------------------------------\")\n",
+ "percentage = find_unique_orders(final_cohort_inp_ed_only)/abx_med_inp_ed_empirical_order_cnt * 100\n",
+ "print(\"the unique order number for final cohort is {}\".format(find_unique_orders(final_cohort_inp_ed_only)))\n",
+ "print(\"the percentage of unique culture order for final cohort (out of all ED inpatients with empirical abx med) is {:.2f}%\".format(percentage))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "Step 2: Check for implied susceptibility"
+ "### The above code shows that out of all inpatient ED encounter `n = 8943` with empirical abx_med, `93.51%` (`n = 8363`) is included as final cohort\n",
+ "31734 --> 25759 --> 9480 --> 8743 --> 8943 -->8363"
]
},
{
- "cell_type": "code",
- "execution_count": 280,
+ "cell_type": "markdown",
"metadata": {},
- "outputs": [],
"source": [
- "implied_agent_rules = implied_suspectibility[\n",
- " implied_suspectibility['Implied_Agent'].notna()\n",
- "][['Organism', 'Antibiotic', 'Implied_Agent']].drop_duplicates()\n",
- "implied_to_process = pd.merge(\n",
- " added_resistant_cohort.drop(columns = ['susceptibility_source']),\n",
- " implied_agent_rules,\n",
- " left_on=['matched_organism', 'antibiotic'],\n",
- " right_on=['Organism', 'Implied_Agent'],\n",
- " how='inner'\n",
- ").rename(columns={'antibiotic': 'antibiotic_to_drop', 'Antibiotic': 'antibiotic'}).drop(columns =['antibiotic_to_drop', 'Organism', 'Implied_Agent'])\n",
- "implied_to_process['susceptibility_source'] = 'implied'\n",
- "cols_to_keep = added_resistant_cohort.columns\n",
- "final_implied_cohort = (pd.concat([\n",
- " added_resistant_cohort,\n",
- " implied_to_process[cols_to_keep]\n",
- "], ignore_index=True)).sort_values(by=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc'])\\\n",
- " .drop_duplicates(subset=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', \n",
- " 'organism', 'antibiotic', 'susceptibility'], keep='first')"
+ "# ----Expore the given aspect for the final inpatient ED Cohort ----"
]
},
{
"cell_type": "code",
- "execution_count": 284,
+ "execution_count": 40,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the unique patient encounter number with valid given medication is 6360\n",
+ "the unique order number with valid given medication is 6465\n"
+ ]
+ }
+ ],
"source": [
- "condition = (final_implied_cohort[\"was_positive\"] == 1) & (final_implied_cohort[\"organism\"].isna())\n",
- "final_implied_cohort = final_implied_cohort[~condition]"
+ "condition = final_cohort_inp_ed_only[\"medication_action\"] == \"Given\"\n",
+ "given_final_cohort_inp_ed_only = final_cohort_inp_ed_only[condition]\n",
+ "given_final_cohort_inp_ed_only_pat_enc_cnt = find_unique_patient_encounter(given_final_cohort_inp_ed_only)\n",
+ "given_final_cohort_inp_ed_only_order_cnt = find_unique_orders(given_final_cohort_inp_ed_only)\n",
+ "print(\"the unique patient encounter number with valid given medication is {}\".format(given_final_cohort_inp_ed_only_pat_enc_cnt))\n",
+ "print(\"the unique order number with valid given medication is {}\".format(given_final_cohort_inp_ed_only_order_cnt))\n",
+ "# percentage = given_final_cohort_inp_ed_only_pat_enc_cnt/find_unique_patient_encounter(final_cohort_inp_ed_only) *100\n",
+ "# print(\"the percentage of unique patient encounter with given medication (out of all inpatients) is {:.2f}%\".format(percentage))\n"
]
},
{
"cell_type": "code",
- "execution_count": 285,
+ "execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "64750"
+ ""
]
},
- "execution_count": 285,
+ "execution_count": 41,
"metadata": {},
"output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAI3CAYAAACRaGpaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABel0lEQVR4nO3deZzN9f////uZfWHGzGDGMJhQ9mwREsVYIr3pnUoJCW+02BIf7zJUYysRLe9KlpDeZXmnhSFLCYVSWVIy9pkUYwaNGWaevz/85nwdM8O8NOOcF7fr5XIuF+f1ep7X6/E428t9XstxGGOMAAAAAACF5uXuAgAAAADAbghSAAAAAGARQQoAAAAALCJIAQAAAIBFBCkAAAAAsIggBQAAAAAWEaQAAAAAwCKCFAAAAABYRJACAAAAAIsIUvBYs2fPlsPhUEBAgPbv359nfqtWrVS7dm03VCatXbtWDodDH330kVvWb9W+ffvUsWNHhYeHy+FwaPDgwQWOdTgcevzxx/Od99FHH8nhcGjt2rVXVIPD4dDs2bMtP/ZqKsr+W7VqpVatWhVdcRalp6frxRdfVKNGjRQSEiJ/f39VrlxZjz76qL777rsrWmblypXVq1cv5/0jR44oPj5e27ZtK5qii8GxY8c0atQo1axZU0FBQQoJCdGtt96q1157TWfPnv3by4+Pj5fD4SiCSt0nv8/nhg0bFB8frxMnTuQZX7lyZXXq1OlvrTM9PV0TJkxQkyZNVKpUKfn6+ioyMlLt27fXggULlJmZecn6PNnQoUPlcDgKfI6u1jYkdzta0PeWMUZVq1aVw+Eo8u+qi78rPNGHH34oh8Oh6dOn5zu/X79+8vf3148//niVK4Nd+Li7AOByMjMz9e9//1vvvfeeu0uxrSFDhuibb77Ru+++q6ioKJUrV+6q11CuXDlt3LhRVapUuerrdpfXX3/dbev+7bff1LZtWx09elT/+te/NHbsWJUoUUL79u3Tf//7XzVs2FAnTpxQaGjo31rPkSNHNHbsWFWuXFn16tUrmuKL0M8//6y2bdvq1KlTGjZsmJo1a6aMjAx98skneuqpp/Thhx/qs88+U1BQkLtLdav8Pp8bNmzQ2LFj1atXL5UqVapI1/frr7+qffv2Onr0qPr166fRo0crLCxMycnJWrFihR599FHt2rVLzz//fIH1eaqzZ89q3rx5kqTly5fr8OHDKl++vFtrKlmypGbOnJknLK1bt06//fabSpYs6Z7C3Oy+++5T9+7dNXLkSHXo0EFVq1Z1zktMTNTbb7+t8ePHq27dum6sEp6MIAWPl/vXyeHDh+vmm292dzlXVUZGhgICAv72X7u3b9+uxo0b6x//+EfRFHYF/P39deutt7pt/VfTX3/9paCgINWsWdMt68/OzlaXLl30559/auPGjS57blu2bKmePXvq888/l6+vr1vqK4zs7GydO3dO/v7+f2sZ9957r9LT0/Xtt9/qxhtvdM6766671LJlSz3wwAMaOnSo3nzzzWKtxYrc98/VdDU/n+fOndM//vEPHT9+XN9++61q1KjhMr9bt2567rnn9P3337ulvr/rf//7n/744w917NhRn376qebMmaP/+7//c2tN999/v+bPn6/XXntNISEhzukzZ85U06ZNlZ6e7sbqit/Zs2flcDjk45P3v70zZszQ2rVr1atXL3355Zfy8vJSenq6HnvsMTVt2lRPP/30VanRHZ97/H0c2gePN2LECEVEROiZZ5655LhLHfrhcDgUHx/vvJ97KM6PP/6o++67T6GhoQoPD9fQoUN17tw57d69W+3bt1fJkiVVuXJlTZo0Kd91njlzRkOHDlVUVJQCAwPVsmVLl41/ri1btqhz584KDw9XQECA6tevr//+978uY3IPwUhMTNSjjz6qMmXKKCgoyOXwlosdOHBADz/8sMqWLSt/f3/VqFFDL7/8snJyciT9v8NH9uzZo88//9x5iMe+ffsu+VxakXuI5ebNm9WiRQsFBQXphhtu0IQJE5x1SAW/Pp9++qnq1asnf39/xcbG6qWXXspzqJSV11Y6/9fu7t27uzwvr732WpH1fKHc/r/88ks1a9ZMQUFBevTRR53zLvwLcG4fL730kqZMmaLY2FiVKFFCTZs21aZNm/IsuzDvm/wsXbpUP/30k0aNGlXg4a8dOnRwbrR79eqlypUr5xlzuUPW1q5dq1tuuUWS1Lt3b+f7K/f1KOjQxovXl/u8TJo0SS+88IJiY2Pl7++vNWvW/K3nYcmSJdq5c6dGjhzpEqJy3X///Wrbtq1mzpyplJSUQtWS3/s1P8YYvf7666pXr54CAwMVFhamf/7zn9q7d6/LuEu9f1avXq1WrVopIiJCgYGBqlixou6991799ddfBfb89NNPKzQ0VNnZ2c5pTzzxhBwOhyZPnuycduzYMXl5eTkPabr4MxYfH+/8D2RsbGyBh4ctX75cDRo0UGBgoKpXr6533323wNpy5b4uo0ePzhOiclWqVMnlDz8X17d06VI5HA598cUXeR77xhtvOL/fc1n5Dl6zZo0GDBig0qVLKyIiQl27dtWRI0cu21eumTNnys/PT7NmzVJMTIxmzZolY0y+Yy+3Dfnzzz8VExOjZs2auRyGunPnTgUHB6tHjx6FqunBBx+UJL3//vvOaWlpaVq0aJHz/XaxrKwsvfDCC6pevbr8/f1VpkwZ9e7dW3/88YfLuLNnz2rEiBGKiopSUFCQbrvtNn377beFquvCz9uLL76oihUrKiAgQI0aNcr3tS3Md3vudu+9997TsGHDVL58efn7+2vPnj351hAWFqaZM2fq66+/1iuvvCLp/FEcx44d05w5c+Tt7a309HQNHz5csbGx8vPzU/ny5TV48GCdPn3aZVmvvfaabr/9dpUtW1bBwcGqU6eOJk2alOcQ4kt97mEzBvBQs2bNMpLM5s2bzbRp04wk88UXXzjnt2zZ0tSqVct5PykpyUgys2bNyrMsSWbMmDHO+2PGjDGSzE033WSef/55s3LlSjNixAgjyTz++OOmevXq5tVXXzUrV640vXv3NpLMokWLnI9fs2aNkWRiYmLMPffcY5YtW2bmzZtnqlatakJCQsxvv/3mHLt69Wrj5+dnWrRoYT744AOzfPly06tXrzy15vZbvnx5069fP/P555+bjz76yJw7dy7f5+fo0aOmfPnypkyZMubNN980y5cvN48//riRZAYMGGCMMSYtLc1s3LjRREVFmebNm5uNGzeajRs3mjNnzhT4vEsygwYNynfehx9+aCSZNWvWuLwOERERplq1aubNN980K1euNAMHDjSSzJw5cy75+qxatcp4e3ub2267zSxevNh8+OGH5pZbbjEVK1Y0F349WXltd+zYYUJDQ02dOnXM3LlzTWJiohk2bJjx8vIy8fHxBfb9d/oPDw83MTExZvr06WbNmjVm3bp1znktW7bM00flypVN+/btzdKlS83SpUtNnTp1TFhYmDlx4oRzbGHfN/np16+fkWR27dp12X6NMaZnz56mUqVKeabnfk4uVKlSJdOzZ09jzPn3V+779t///rfz/XXw4MF8+y9ofbnPS/ny5c0dd9xhPvroI5OYmGiSkpKK/Xl4/fXXjSTz/vvvX7aWwr5fjTGmb9++xtfX1wwbNswsX77cLFiwwFSvXt1ERkaalJQU57iC3j9JSUkmICDAxMXFmaVLl5q1a9ea+fPnmx49epjU1NQC+1m+fLmRZDZs2OCcVr16dRMYGGji4uKc0z744AMjyezcudOl79zn9ODBg+aJJ54wkszixYudr21aWpox5vz7oEKFCqZmzZpm7ty5ZsWKFea+++4zkpzv/4L07dvXSDK7d+++5LgLXVzf2bNnTdmyZc1DDz2UZ2zjxo1NgwYNnPetfgffcMMN5oknnjArVqww77zzjgkLCzN33HFHoeo8ePCg8fLyMvfdd58xxph///vfRpJZu3atyzgr25D169cbHx8fM2TIEGOMMadPnzY1a9Y01atXN6dOnbpkPRduR3v06GEaN27snPfGG2+Y4OBgk56ebmrVquXyWc3Ozjbt27c3wcHBZuzYsWblypXmnXfeMeXLlzc1a9Y0f/31l3Nsz549jcPhME8//bRJTEw0U6ZMMeXLlzchISHO74qC5L6uMTEx5rbbbjOLFi1yfq58fX1d3seF/W7PfW7Lly9v/vnPf5qPP/7YfPLJJ+bYsWOXrKV///4mICDATJkyxUgyM2bMcD7f9erVM6VLlzZTpkwxq1atMtOmTTOhoaHmzjvvNDk5Oc5lDBkyxLzxxhtm+fLlZvXq1eaVV14xpUuXNr1793ZZ16W2G7AXghQ81oUbgMzMTHPDDTeYRo0aOb+0iiJIvfzyyy7j6tWr5/yPQ66zZ8+aMmXKmK5duzqn5X5RN2jQwOVLdN++fcbX19c89thjzmnVq1c39evXN2fPnnVZV6dOnUy5cuVMdna2S7+PPPJIoZ6fkSNHGknmm2++cZk+YMAA43A4XP6TUqlSJdOxY8dCLfdKgkR+ddSsWdO0a9fOeT+/16dJkyYmOjraZGRkOKelp6eb8PDwKw5S7dq1MxUqVHD+hy/X448/bgICAszx48cv1f4V939hyL9wXn5Bqk6dOi4B+dtvv3X5z7wxhX/f5Kd9+/ZG0iUD84WuNEgZY8zmzZsLfG2sBqkqVaqYrKwsl7HF/Tx8/vnnRpKZOHHiZWsp7Pt148aN+X6/HDx40AQGBpoRI0Y4pxX0/vnoo4+MJLNt27YCa8/P6dOnjZ+fnxk3bpwxxphDhw4ZSeaZZ54xgYGBzueib9++Jjo62vm4/D5jkydPNpJMUlJSnvVUqlTJBAQEmP379zunZWRkmPDwcNO/f/9L1ljQ65KTk2POnj3rvF34GcmvvqFDh5rAwECXP0Ds3LnTSDLTp093TrP6HTxw4ECXcZMmTTKSTHJy8iX7MsaYcePGGUlm+fLlxhhj9u7daxwOh+nRo4fLOCvbEGOMmThxopFklixZYnr27GkCAwPNjz/+eNl6LtyO5q5z+/btxhhjbrnlFtOrVy9jjMkTpN5///08f0A05v993l9//XVjjDG7du0ykpwhL9f8+fONpEIHqYI+V23atHFOK+x3e26ft99++2WfnwudPHnS3HDDDUaSadOmjfN1GT9+vPHy8jKbN292GZ/7Gf3ss8/yXV52drY5e/asmTt3rvH29nbZ9lxquwF74dA+2IKfn59eeOEFbdmypVCH9BTWxVdUqlGjhhwOhzp06OCc5uPjo6pVq+Z75cDu3bu7HPpUqVIlNWvWzHkY0J49e/Tzzz/roYceknT+3IDc21133aXk5GTt3r3bZZn33ntvoWpfvXq1atasqcaNG7tM79Wrl4wxWr16daGWUxSioqLy1FG3bt18n7Ncp0+f1ubNm9W1a1cFBAQ4p5csWVJ33333FdVx5swZffHFF+rSpYuCgoLyPN9nzpzJ9xC6vyssLEx33nlnocd37NhR3t7ezvu5JzLnPl9X8r65FnTu3NnlvK2r8TyY//+Qq4sPYby4Fivv108++UQOh0MPP/ywS81RUVG6+eab8xwel9/7p169evLz81O/fv00Z86cPIcEFiQoKEhNmzbVqlWrJEkrV65UqVKl9PTTTysrK0vr16+XJK1atUpt2rQp1DILUq9ePVWsWNF5PyAgQDfeeOMlP/eXMm3aNPn6+jpvlzsn9tFHH1VGRoY++OAD57RZs2bJ399f3bt3l3Rl76HOnTu73L/481kQY4zzcL64uDhJ5w+LbNWqlRYtWpTveUiX24bkevrpp9WxY0c9+OCDmjNnjqZPn646depcsp6LtWzZUlWqVNG7776rn376SZs3by7wcLJPPvlEpUqV0t133+3ynNWrV09RUVHO93BunbnPb65u3brlez5SQQr6XH355ZfKzs6+ou/2wm5Lc5UoUUIjRoyQJI0dO9b5unzyySeqXbu26tWr57Ledu3a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9eunvXv3qlmzZnI4HFq/fr0mTpyoYcOGFUeNAAAAAOBRLAepZ599ViVLltTLL7+sUaNGSZKio6MVHx+vJ598ssgLBAAAAABPYzlIORwODRkyREOGDNHJkyclSSVLlizywgAAAADAU13R70jlIkABAAAAuB5ZvtgEAAAAAFzvCFIAAAAAYBFBCgAAAAAsshSkzp49qzvuuEO//PJLcdUDAAAAAB7PUpDy9fXV9u3b5XA4iqseAAAAAPB4lq/a98gjj2jmzJmaMGFCcdQDAAAAG6k88tNiXf6+CR2LdfnAlbIcpLKysvTOO+9o5cqVatSokYKDg13mT5kypciKAwAAAABPZDlIbd++XQ0aNJCkPOdKccgfAAAAgOuB5SC1Zs2a4qgDAAAAAGzjii9/vmfPHq1YsUIZGRmSJGNMkRUFAAAAAJ7McpA6duyYWrdurRtvvFF33XWXkpOTJUmPPfaYhg0bVuQFAgAAAICnsRykhgwZIl9fXx04cEBBQUHO6ffff7+WL19epMUBAAAAgCeyfI5UYmKiVqxYoQoVKrhMr1atmvbv319khQEAAACAp7K8R+r06dMue6Jy/fnnn/L39y+SogAAAADAk1kOUrfffrvmzp3rvO9wOJSTk6PJkyfrjjvuKNLiAAAAAMATWT60b/LkyWrVqpW2bNmirKwsjRgxQjt27NDx48f19ddfF0eNAAAAAOBRLO+Rqlmzpn788Uc1btxYcXFxOn36tLp27arvv/9eVapUsbSsN954Q3Xr1lVISIhCQkLUtGlTff755875xhjFx8crOjpagYGBatWqlXbs2OGyjMzMTD3xxBMqXbq0goOD1blzZx06dMhqWwAAAABQaJb3SElSVFSUxo4d+7dXXqFCBU2YMEFVq1aVJM2ZM0f33HOPvv/+e9WqVUuTJk3SlClTNHv2bN1444164YUXFBcXp927d6tkyZKSpMGDB2vZsmVauHChIiIiNGzYMHXq1Elbt26Vt7f3364RAAAAAC52RUEqNTVVM2fO1K5du+RwOFSjRg317t1b4eHhlpZz9913u9x/8cUX9cYbb2jTpk2qWbOmpk6dqtGjR6tr166SzgetyMhILViwQP3791daWppmzpyp9957T23atJEkzZs3TzExMVq1apXatWt3Je0BAAAAwCVZPrRv3bp1io2N1auvvqrU1FQdP35cr776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",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
}
],
"source": [
- "find_unique_orders(final_implied_cohort)"
+ "nique_given_final_cohort_inp_ed_only = given_final_cohort_inp_ed_only.drop_duplicates(subset=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc'])\n",
+ "nique_given_final_cohort_inp_ed_only[\"order_time_jittered_utc\"].dt.year.value_counts().sort_index().plot(kind='bar', title='Number of Unique Urine Culture Orders with Given Abx Med per Year', xlabel='Year', ylabel='Number of Orders', figsize=(10, 6))"
]
},
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## ⏳ Cleaning the medication name"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/var/folders/r3/mc640yrn2_70d_7zvw5cc3q00000gn/T/ipykernel_50557/657774021.py:42: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " given_final_cohort_inp_ed_only.drop(columns=['hosp_ward_IP', 'hosp_ward_OP', 'hosp_ward_ER', 'hosp_ward_ICU'], inplace=True)\n",
+ "/var/folders/r3/mc640yrn2_70d_7zvw5cc3q00000gn/T/ipykernel_50557/657774021.py:43: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " given_final_cohort_inp_ed_only[\"final_antibiotic\"] = given_final_cohort_inp_ed_only[\"cleaned_antibiotic\"].apply(convert_to_list_and_keep_longest).replace(cleaning_mapping)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import ast\n",
+ "# def convert_to_list_and_keep_longest(value):\n",
+ "# # 1) Convert string -> list if possible\n",
+ "# if isinstance(value, str):\n",
+ "# try:\n",
+ "# value = ast.literal_eval(value)\n",
+ "# except:\n",
+ "# # If parsing fails, just keep the original value\n",
+ "# pass\n",
+ "\n",
+ "# # 2) If the value is now a non-empty list, return the longest item\n",
+ "# if isinstance(value, list) and value:\n",
+ "\n",
+ "# return max(value, key=len)\n",
+ " \n",
+ "# # Otherwise, return the value as-is\n",
+ "# return value\n",
+ "\n",
+ "import numpy as np\n",
+ "\n",
+ "def convert_to_list_and_keep_longest(value):\n",
+ " try:\n",
+ " # Convert numpy arrays to lists\n",
+ " if isinstance(value, np.ndarray):\n",
+ " value = value.tolist()\n",
+ "\n",
+ " # Already a list? Great.\n",
+ " if isinstance(value, list) and len(value) > 0:\n",
+ " str_items = [str(v) for v in value if v not in [None, \"\"]]\n",
+ " if str_items:\n",
+ " return max(str_items, key=len)\n",
+ "\n",
+ " # Fallback — just return original\n",
+ " return value\n",
+ " \n",
+ " except Exception as e:\n",
+ " print(f\"⚠️ Error: {e} — value: {value}\")\n",
+ " raise\n",
+ "\n",
+ "\n",
+ "# Apply the function to your column\n",
+ "given_final_cohort_inp_ed_only.drop(columns=['hosp_ward_IP', 'hosp_ward_OP', 'hosp_ward_ER', 'hosp_ward_ICU'], inplace=True)\n",
+ "given_final_cohort_inp_ed_only[\"final_antibiotic\"] = given_final_cohort_inp_ed_only[\"cleaned_antibiotic\"].apply(convert_to_list_and_keep_longest).replace(cleaning_mapping)\n",
+ "given_final_cohort_inp_ed_only = given_final_cohort_inp_ed_only.drop_duplicates(subset=['anon_id', 'pat_enc_csn_id_coded', 'order_proc_id_coded', 'order_time_jittered_utc',\"result_time_jittered_utc\", \"final_antibiotic\"])"
+ ]
},
{
"cell_type": "code",
- "execution_count": 286,
+ "execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
- "final_implied_cohort.to_csv('../csv_folder/final_implied_cohort_peds.csv', index=False)"
+ "given_final_cohort_inp_ed_only.to_csv('../csv_folder/final_cohort_for_analysis_peds_ed.csv', index=False)"
]
},
{
"cell_type": "code",
- "execution_count": 263,
+ "execution_count": 48,
"metadata": {},
"outputs": [
{
- "data": {
- "text/html": [
- "
\n",
" \n",
"\n",
@@ -6352,103 +3623,111 @@
],
"text/plain": [
" anon_id pat_enc_csn_id_coded order_proc_id_coded \\\n",
- "3995 JC1518716 131020094223 405328509 \n",
- "3996 JC1518716 131020094223 405328509 \n",
- "3997 JC1518716 131020094223 405328509 \n",
- "3998 JC1518716 131020094223 405328509 \n",
- "3999 JC1518716 131020094223 405328509 \n",
- "4000 JC1518716 131020094223 405328509 \n",
- "4001 JC1518716 131020094223 405328509 \n",
- "4002 JC1518716 131020094223 405328509 \n",
- "4003 JC1518716 131020094223 405328509 \n",
- "4004 JC1518716 131020094223 405328509 \n",
+ "8329 JC2190949 131010248351 370355140 \n",
+ "8330 JC2190949 131010248351 370355140 \n",
+ "8331 JC2190949 131010248351 370355140 \n",
+ "8332 JC2190949 131010248351 370355140 \n",
+ "8333 JC2190949 131010248351 370355140 \n",
+ "8334 JC2190949 131010248351 370355140 \n",
+ "8335 JC2190949 131010248351 370355140 \n",
+ "8336 JC2190949 131010248351 370355140 \n",
+ "8337 JC2190949 131010248351 370355140 \n",
+ "8338 JC2190949 131010248351 370355140 \n",
+ "8339 JC2190949 131010248351 370355140 \n",
"\n",
" order_time_jittered_utc result_time_jittered_utc \\\n",
- "3995 2012-07-12 19:45:00+00:00 2012-07-14 17:20:00+00:00 \n",
- "3996 2012-07-12 19:45:00+00:00 2012-07-14 17:20:00+00:00 \n",
- "3997 2012-07-12 19:45:00+00:00 2012-07-14 17:20:00+00:00 \n",
- "3998 2012-07-12 19:45:00+00:00 2012-07-14 17:20:00+00:00 \n",
- "3999 2012-07-12 19:45:00+00:00 2012-07-14 17:20:00+00:00 \n",
- "4000 2012-07-12 19:45:00+00:00 2012-07-14 17:20:00+00:00 \n",
- "4001 2012-07-12 19:45:00+00:00 2012-07-14 17:20:00+00:00 \n",
- "4002 2012-07-12 19:45:00+00:00 2012-07-14 17:20:00+00:00 \n",
- "4003 2012-07-12 19:45:00+00:00 2012-07-14 17:20:00+00:00 \n",
- "4004 2012-07-12 19:45:00+00:00 2012-07-14 17:20:00+00:00 \n",
- "\n",
- " medication_time medication_name \\\n",
- "3995 2012-07-12 22:05:00+00:00 PIPERACILLIN-TAZOBACTAM PEDIATRIC IV INFUSION \n",
- "3996 2012-07-12 22:05:00+00:00 PIPERACILLIN-TAZOBACTAM PEDIATRIC IV INFUSION \n",
- "3997 2012-07-12 22:05:00+00:00 PIPERACILLIN-TAZOBACTAM PEDIATRIC IV INFUSION \n",
- "3998 2012-07-12 22:05:00+00:00 PIPERACILLIN-TAZOBACTAM PEDIATRIC IV INFUSION \n",
- "3999 2012-07-12 22:05:00+00:00 PIPERACILLIN-TAZOBACTAM PEDIATRIC IV INFUSION \n",
- "4000 2012-07-12 22:05:00+00:00 PIPERACILLIN-TAZOBACTAM PEDIATRIC IV INFUSION \n",
- "4001 2012-07-12 22:05:00+00:00 PIPERACILLIN-TAZOBACTAM PEDIATRIC IV INFUSION \n",
- "4002 2012-07-12 22:05:00+00:00 PIPERACILLIN-TAZOBACTAM PEDIATRIC IV INFUSION \n",
- "4003 2012-07-12 22:05:00+00:00 PIPERACILLIN-TAZOBACTAM PEDIATRIC IV INFUSION \n",
- "4004 2012-07-12 22:05:00+00:00 PIPERACILLIN-TAZOBACTAM PEDIATRIC IV INFUSION \n",
- "\n",
- " order_med_id_coded final_antibiotic was_positive \\\n",
- "3995 405335391 Piperacillin/Tazobactam 1 \n",
- "3996 405335391 Piperacillin/Tazobactam 1 \n",
- "3997 405335391 Piperacillin/Tazobactam 1 \n",
- "3998 405335391 Piperacillin/Tazobactam 1 \n",
- "3999 405335391 Piperacillin/Tazobactam 1 \n",
- "4000 405335391 Piperacillin/Tazobactam 1 \n",
- "4001 405335391 Piperacillin/Tazobactam 1 \n",
- "4002 405335391 Piperacillin/Tazobactam 1 \n",
- "4003 405335391 Piperacillin/Tazobactam 1 \n",
- "4004 405335391 Piperacillin/Tazobactam 1 \n",
- "\n",
- " organism antibiotic susceptibility \\\n",
- "3995 ESCHERICHIA COLI Nitrofurantoin Susceptible \n",
- "3996 ESCHERICHIA COLI Gentamicin Resistant \n",
- "3997 ESCHERICHIA COLI Amoxicillin/Clavulanic Acid Susceptible \n",
- "3998 ESCHERICHIA COLI Ciprofloxacin Resistant \n",
- "3999 ESCHERICHIA COLI Levofloxacin Resistant \n",
- "4000 ESCHERICHIA COLI Cephalexin/Cephalothin Intermediate \n",
- "4001 ESCHERICHIA COLI Ampicillin Resistant \n",
- "4002 ESCHERICHIA COLI Trimethoprim/Sulfamethoxazole Resistant \n",
- "4003 ESCHERICHIA COLI Tobramycin Intermediate \n",
- "4004 ESCHERICHIA COLI Vancomycin Resistant \n",
- "\n",
- " susceptibility_source matched_organism presciribed_antibiotic_rank \\\n",
- "3995 original ESCHERICHIA COLI 4 \n",
- "3996 original ESCHERICHIA COLI 4 \n",
- "3997 original ESCHERICHIA COLI 4 \n",
- "3998 original ESCHERICHIA COLI 4 \n",
- "3999 original ESCHERICHIA COLI 4 \n",
- "4000 original ESCHERICHIA COLI 4 \n",
- "4001 original ESCHERICHIA COLI 4 \n",
- "4002 original ESCHERICHIA COLI 4 \n",
- "4003 original ESCHERICHIA COLI 4 \n",
- "4004 inherent_resistance ESCHERICHIA COLI 4 \n",
- "\n",
- " tested_antibiotic_rank scenario ranking_diff \\\n",
- "3995 2 not_performed NaN \n",
- "3996 2 not_performed NaN \n",
- "3997 2 not_performed NaN \n",
- "3998 3 not_performed NaN \n",
- "3999 3 not_performed NaN \n",
- "4000 1 not_performed NaN \n",
- "4001 1 not_performed NaN \n",
- "4002 2 not_performed NaN \n",
- "4003 5 not_performed NaN \n",
- "4004 5 not_performed NaN \n",
- "\n",
- " min_susceptible_test_rank \n",
- "3995 2 \n",
- "3996 2 \n",
- "3997 2 \n",
- "3998 2 \n",
- "3999 2 \n",
- "4000 2 \n",
- "4001 2 \n",
- "4002 2 \n",
- "4003 2 \n",
- "4004 2 "
+ "8329 2010-07-13 20:18:00+00:00 2010-08-22 15:44:00+00:00 \n",
+ "8330 2010-07-13 20:18:00+00:00 2010-08-22 15:44:00+00:00 \n",
+ "8331 2010-07-13 20:18:00+00:00 2010-08-22 15:44:00+00:00 \n",
+ "8332 2010-07-13 20:18:00+00:00 2010-08-22 15:44:00+00:00 \n",
+ "8333 2010-07-13 20:18:00+00:00 2010-08-22 15:44:00+00:00 \n",
+ "8334 2010-07-13 20:18:00+00:00 2010-08-22 15:44:00+00:00 \n",
+ "8335 2010-07-13 20:18:00+00:00 2010-08-22 15:44:00+00:00 \n",
+ "8336 2010-07-13 20:18:00+00:00 2010-08-22 15:44:00+00:00 \n",
+ "8337 2010-07-13 20:18:00+00:00 2010-08-22 15:44:00+00:00 \n",
+ "8338 2010-07-13 20:18:00+00:00 2010-08-22 15:44:00+00:00 \n",
+ "8339 2010-07-13 20:18:00+00:00 2010-08-22 15:44:00+00:00 \n",
+ "\n",
+ " medication_time medication_name \\\n",
+ "8329 2010-07-13 22:21:00+00:00 CEFTRIAXONE PEDIATRIC IM INJECTION \n",
+ "8330 2010-07-13 22:21:00+00:00 CEFTRIAXONE PEDIATRIC IM INJECTION \n",
+ "8331 2010-07-13 22:21:00+00:00 CEFTRIAXONE PEDIATRIC IM INJECTION \n",
+ "8332 2010-07-13 22:21:00+00:00 CEFTRIAXONE PEDIATRIC IM INJECTION \n",
+ "8333 2010-07-13 22:21:00+00:00 CEFTRIAXONE PEDIATRIC IM INJECTION \n",
+ "8334 2010-07-13 22:21:00+00:00 CEFTRIAXONE PEDIATRIC IM INJECTION \n",
+ "8335 2010-07-13 22:21:00+00:00 CEFTRIAXONE PEDIATRIC IM INJECTION \n",
+ "8336 2010-07-13 22:21:00+00:00 CEFTRIAXONE PEDIATRIC IM INJECTION \n",
+ "8337 2010-07-13 22:21:00+00:00 CEFTRIAXONE PEDIATRIC IM INJECTION \n",
+ "8338 2010-07-13 22:21:00+00:00 CEFTRIAXONE PEDIATRIC IM INJECTION \n",
+ "8339 2010-07-13 22:21:00+00:00 CEFTRIAXONE PEDIATRIC IM INJECTION \n",
+ "\n",
+ " medication_action final_antibiotic organism \\\n",
+ "8329 Given Ceftriaxone PROTEUS MIRABILIS \n",
+ "8330 Given Ceftriaxone PROTEUS MIRABILIS \n",
+ "8331 Given Ceftriaxone PROTEUS MIRABILIS \n",
+ "8332 Given Ceftriaxone PROTEUS MIRABILIS \n",
+ "8333 Given Ceftriaxone PROTEUS MIRABILIS \n",
+ "8334 Given Ceftriaxone PROTEUS MIRABILIS \n",
+ "8335 Given Ceftriaxone PROTEUS MIRABILIS \n",
+ "8336 Given Ceftriaxone PROTEUS MIRABILIS \n",
+ "8337 Given Ceftriaxone PROTEUS MIRABILIS \n",
+ "8338 Given Ceftriaxone PROTEUS MIRABILIS \n",
+ "8339 Given Ceftriaxone PROTEUS MIRABILIS \n",
+ "\n",
+ " antibiotic susceptibility susceptibility_source \\\n",
+ "8329 Nitrofurantoin Resistant original \n",
+ "8330 Ampicillin Susceptible original \n",
+ "8331 Cephalexin/Cephalothin Susceptible original \n",
+ "8332 Ciprofloxacin Susceptible original \n",
+ "8333 Levofloxacin Susceptible original \n",
+ "8334 Trimethoprim/Sulfamethoxazole Resistant original \n",
+ "8335 Gentamicin Susceptible original \n",
+ "8336 Cefazolin Susceptible original \n",
+ "8337 Piperacillin/Tazobactam Susceptible original \n",
+ "8338 Amoxicillin/Clavulanic Acid Susceptible original \n",
+ "8339 Doxycycline Resistant inherent_resistance \n",
+ "\n",
+ " matched_organism presciribed_antibiotic_rank tested_antibiotic_rank \\\n",
+ "8329 PROTEUS MIRABILIS 3 2 \n",
+ "8330 PROTEUS MIRABILIS 3 1 \n",
+ "8331 PROTEUS MIRABILIS 3 1 \n",
+ "8332 PROTEUS MIRABILIS 3 3 \n",
+ "8333 PROTEUS MIRABILIS 3 3 \n",
+ "8334 PROTEUS MIRABILIS 3 2 \n",
+ "8335 PROTEUS MIRABILIS 3 2 \n",
+ "8336 PROTEUS MIRABILIS 3 1 \n",
+ "8337 PROTEUS MIRABILIS 3 4 \n",
+ "8338 PROTEUS MIRABILIS 3 2 \n",
+ "8339 PROTEUS MIRABILIS 3 2 \n",
+ "\n",
+ " scenario ranking_diff min_susceptible_test_rank \\\n",
+ "8329 not_performed N/A 1 \n",
+ "8330 not_performed N/A 1 \n",
+ "8331 not_performed N/A 1 \n",
+ "8332 not_performed N/A 1 \n",
+ "8333 not_performed N/A 1 \n",
+ "8334 not_performed N/A 1 \n",
+ "8335 not_performed N/A 1 \n",
+ "8336 not_performed N/A 1 \n",
+ "8337 not_performed N/A 1 \n",
+ "8338 not_performed N/A 1 \n",
+ "8339 not_performed N/A 1 \n",
+ "\n",
+ " min_tested_susceptible_abx prescribed_rank \n",
+ "8329 Ampicillin 3 \n",
+ "8330 Ampicillin 3 \n",
+ "8331 Ampicillin 3 \n",
+ "8332 Ampicillin 3 \n",
+ "8333 Ampicillin 3 \n",
+ "8334 Ampicillin 3 \n",
+ "8335 Ampicillin 3 \n",
+ "8336 Ampicillin 3 \n",
+ "8337 Ampicillin 3 \n",
+ "8338 Ampicillin 3 \n",
+ "8339 Ampicillin 3 "
]
},
- "execution_count": 245,
+ "execution_count": 87,
"metadata": {},
"output_type": "execute_result"
}
@@ -6567,21 +3846,21 @@
},
{
"cell_type": "code",
- "execution_count": 274,
+ "execution_count": 90,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"ranking_diff\n",
- "1.0 228\n",
- "2.0 497\n",
- "3.0 28\n",
- "4.0 3\n",
+ "1 228\n",
+ "2 497\n",
+ "3 28\n",
+ "4 3\n",
"Name: count, dtype: int64"
]
},
- "execution_count": 274,
+ "execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/.env b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/.env
deleted file mode 100644
index 64ad5ac7..00000000
--- a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/.env
+++ /dev/null
@@ -1 +0,0 @@
-GROQ_API_KEY = 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
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/.gitignore b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/.gitignore
deleted file mode 100644
index 37d97a55..00000000
--- a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/.gitignore
+++ /dev/null
@@ -1,52 +0,0 @@
-# Python
-__pycache__/
-*.py[cod]
-*$py.class
-*.so
-.Python
-build/
-develop-eggs/
-dist/
-downloads/
-eggs/
-.eggs/
-lib/
-lib64/
-parts/
-sdist/
-var/
-wheels/
-*.egg-info/
-.installed.cfg
-*.egg
-
-# Virtual Environment
-venv/
-env/
-ENV/
-
-# IDE
-.idea/
-.vscode/
-*.swp
-*.swo
-
-# Project specific
-csv_output/
-*.csv
-*.log
-Recommender_API/api/
-*.log
-
-Recommender_API/Notebook/
-*.log
-
-
-# Jupyter Notebook
-.ipynb_checkpoints
-*.log
-*.ipynb
-
-# OS specific
-.DS_Store
-Thumbs.db
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/Notebook/clinical_workflow b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/Notebook/clinical_workflow
deleted file mode 100644
index bb5b9b0d..00000000
--- a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/Notebook/clinical_workflow
+++ /dev/null
@@ -1,15 +0,0 @@
-// Clinical Workflow
-digraph {
- rankdir=LR
- extract_patient_info [label="Extract Patient Info"]
- match_icd10_code [label="Match ICD-10 Code"]
- validate_icd10_code_exists [label="Validate Code Exists"]
- validate_icd10_clinical_match [label="Validate Clinical Match"]
- end [label=END]
- extract_patient_info -> match_icd10_code
- match_icd10_code -> validate_icd10_code_exists
- validate_icd10_code_exists -> match_icd10_code [label="if error"]
- validate_icd10_code_exists -> validate_icd10_clinical_match [label="if no error"]
- validate_icd10_clinical_match -> match_icd10_code [label="if error"]
- validate_icd10_clinical_match -> end [label="if no error"]
-}
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/README.md b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/README.md
deleted file mode 100644
index 6f3e593f..00000000
--- a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/README.md
+++ /dev/null
@@ -1,138 +0,0 @@
-# Medical Recommender API
-
-A FastAPI-based API that processes clinical cases and recommends medical procedures or medications based on ICD-10 codes.
-
-## Setup
-
-1. Install required packages:
-```bash
-pip install fastapi uvicorn requests google-cloud-bigquery pandas langchain-groq langgraph
-```
-
-2. Set up Google Cloud credentials:
- - Make sure you have the Google Cloud SDK installed
- - Authenticate using `gcloud auth application-default login`
- - The application uses the project "som-nero-phi-jonc101"
-
-## Running the API
-
-1. Start the FastAPI server:
-```bash
-cd Recommender_API
-uvicorn api.fastapi_app:app --reload --port 8002
-```
-
-The API will be available at `http://localhost:8002`
-
-## API Endpoints
-
-### 1. Process Clinical Case
-Processes clinical notes to extract patient information and determine the appropriate ICD-10 code.
-
-**Endpoint:** `POST /process_clinical_case`
-
-**Request Body:**
-```json
-{
- "clinical_question": "Could this patient have stable angina?",
- "clinical_notes": "55-year-old male presents with chest pain on exertion..."
-}
-```
-
-**Response:**
-```json
-{
- "patient_age": 55,
- "patient_gender": "male",
- "icd10_code": "I25.10",
- "rationale": "Patient presents with typical symptoms of stable angina...",
- "error": null
-}
-```
-
-### 2. Get Orders
-Retrieves recommended procedures or medications based on the ICD-10 code and patient information.
-
-**Endpoint:** `POST /get_orders`
-
-**Request Body:**
-```json
-{
- "icd10_code": "I25.10",
- "patient_age": 55,
- "patient_gender": "male",
- "result_type": "proc", // or "med"
- "limit": 10,
- "min_patients_for_non_rare_items": 10,
- "year": 2024
-}
-```
-
-**Response:**
-```json
-{
- "icd10_code": "I25.10",
- "result_type": "proc",
- "patient_age": 55,
- "patient_gender": "male",
- "data": [
- {
- "itemId": "PROC123",
- "description": "Cardiac Stress Test",
- "patientRate": 45.5,
- "encounterRate": 30.2,
- "nPatientscohortItem": 150,
- "nEncounterscohortItem": 75,
- "nPatientsCohortTotal": 330,
- "nEncountersCohortTotal": 248
- }
- // ... more items
- ]
-}
-```
-
-## Example Usage
-
-You can use the provided example script to test the API:
-
-```bash
-cd Recommender_API/api
-python example_usage.py
-```
-
-Or use curl commands:
-
-```bash
-# Process clinical case
-curl -X POST "http://localhost:8002/process_clinical_case" \
- -H "Content-Type: application/json" \
- -d '{
- "clinical_question": "Could this patient have stable angina?",
- "clinical_notes": "55-year-old male with chest pain on exertion..."
- }'
-
-# Get orders
-curl -X POST "http://localhost:8002/get_orders" \
- -H "Content-Type: application/json" \
- -d '{
- "icd10_code": "I25.10",
- "patient_age": 55,
- "patient_gender": "male",
- "result_type": "proc",
- "limit": 10
- }'
-```
-
-## API Documentation
-
-Once the server is running, you can access the interactive API documentation at:
-- Swagger UI: `http://localhost:8002/docs`
-- ReDoc: `http://localhost:8002/redoc`
-
-## Logging
-
-The API logs its operations to `clinical_workflow.log` in the directory where the server is started. You can monitor the logs in real-time using:
-
-```bash
-tail -f clinical_workflow.log
-```
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/api/__init__.py b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/api/__init__.py
deleted file mode 100644
index b751d11e..00000000
--- a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/api/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# This file makes the api directory a Python package
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/api/bigquery_api.py b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/api/bigquery_api.py
deleted file mode 100644
index a6a13c2c..00000000
--- a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/api/bigquery_api.py
+++ /dev/null
@@ -1,217 +0,0 @@
-from google.cloud import bigquery
-import pandas as pd
-from typing import List, Optional, Union, Dict
-import logging
-
-logger = logging.getLogger(__name__)
-
-class BigQueryAPI:
- def __init__(self, project_id: str = "som-nero-phi-jonc101"):
- """Initialize the BigQuery API client.
-
- Args:
- project_id (str): Google Cloud project ID
- """
- try:
- self.client = bigquery.Client(project_id)
- logger.info(f"Successfully initialized BigQuery client for project {project_id}")
- except Exception as e:
- logger.error(f"Failed to initialize BigQuery client: {str(e)}")
- raise Exception(f"Failed to initialize BigQuery client. Please ensure you have valid Google Cloud credentials set up. Error: {str(e)}")
-
- def get_orders(
- self,
- params: Dict[str, Union[str, int, None]],
- min_patients_for_non_rare_items: int = 10,
- result_type: str = "med", # Options: "proc", "med"
- limit: int = 100,
- year: int = 2024 # Default to 2024 if not specified
- ) -> pd.DataFrame:
- """Get common orders based on patient parameters and filters.
-
- Args:
- params (Dict): Dictionary containing patient parameters:
- - patient_age (Optional[int]): Patient age
- - patient_gender (Optional[str]): Patient gender
- - icd10_code (Optional[str]): ICD-10 diagnosis code
- min_patients_for_non_rare_items (int): Minimum number of patients for non-rare items
- result_type (str): Type of results to return ("proc" or "med")
- limit (int): Maximum number of results to return
- year (int): Year of the dataset to use (2022-2024)
-
- Returns:
- pd.DataFrame: Results showing most common orders
- """
- try:
- # Validate year
- if year not in [2022, 2023, 2024]:
- raise ValueError("Year must be between 2022 and 2024")
-
- # Extract parameters
- patient_age = params.get('patient_age')
- patient_gender = params.get('patient_gender')
- icd10_code = params.get('icd10_code')
-
- # Build age filter if provided
- age_filter = ""
- # if patient_age is not None:
- # age_filter = f"AND DATE_DIFF(DATE(appt_when_jittered_utc), DATE(birth_date_jittered_utc), YEAR) = {patient_age}"
- if patient_age is not None:
- # Map single age to age group
- if patient_age < 18:
- age_filter = "AND DATE_DIFF(DATE(appt_when_jittered_utc), DATE(birth_date_jittered_utc), YEAR) >= 0 AND DATE_DIFF(DATE(appt_when_jittered_utc), DATE(birth_date_jittered_utc), YEAR) <= 17"
- elif patient_age < 45:
- age_filter = "AND DATE_DIFF(DATE(appt_when_jittered_utc), DATE(birth_date_jittered_utc), YEAR) >= 18 AND DATE_DIFF(DATE(appt_when_jittered_utc), DATE(birth_date_jittered_utc), YEAR) <= 44"
- elif patient_age < 65:
- age_filter = "AND DATE_DIFF(DATE(appt_when_jittered_utc), DATE(birth_date_jittered_utc), YEAR) >= 45 AND DATE_DIFF(DATE(appt_when_jittered_utc), DATE(birth_date_jittered_utc), YEAR) <= 64"
- else:
- age_filter = "AND DATE_DIFF(DATE(appt_when_jittered_utc), DATE(birth_date_jittered_utc), YEAR) >= 65"
-
- # Build gender filter if provided
- gender_filter = ""
- if patient_gender is not None:
- gender_filter = f"AND LOWER(demogx.gender) = LOWER('{patient_gender}')"
-
- # Build diagnosis filter if provided
- diagnosis_filter = ""
- if icd10_code is not None:
- diagnosis_filter = f"AND dx.icd10 = '{icd10_code}'"
-
- logger.info(f"Building query for params={params}, type={result_type}, year={year}")
-
- query = f"""
- WITH query_params AS (
- select
- ['3'] as excludeMedOrderClass,
- {min_patients_for_non_rare_items} as minPatientsForNonRareItems
- ),
-
- cohortEncounter AS (
- select distinct
- enc.anon_id,
- demogx.birth_date_jittered_utc as birthDateTime,
- demogx.gender as gender,
- pat_enc_csn_id_coded as encounterId,
- appt_when_jittered_utc as encounterDateTime,
- dx.icd9, dx.icd10, dx_name,
- DATE_DIFF(DATE(appt_when_jittered_utc), DATE(birth_date_jittered_utc), YEAR) as age_when_encountered
- from `shc_core_{year}.encounter` as enc
- join `shc_core_{year}.diagnosis` as dx on enc.pat_enc_csn_id_coded = dx.pat_enc_csn_id_jittered
- left join `shc_core_{year}.demographic` as demogx on demogx.anon_id = enc.anon_id
- where visit_type like 'NEW PATIENT%'
- and appt_status = 'Completed'
- {diagnosis_filter}
- {gender_filter}
- {age_filter}
- ),
-
- cohortEncounterCount AS (
- select count(distinct anon_id) as nPatients, count(distinct encounterId) as nEncounters
- from cohortEncounter
- )"""
-
- if result_type == "proc":
- query += f"""
- ,cohortEncounterProc AS (
- select
- op.proc_code, op.description,
- count(distinct cohortEnc.anon_id) as nPatients,
- count(distinct cohortEnc.encounterId) as nEncounters
- from cohortEncounter as cohortEnc
- join `shc_core_{year}.order_proc` as op on cohortEnc.encounterId = op.pat_enc_csn_id_coded
- group by op.proc_code, op.description
- )
- SELECT
- proc_code as itemId,
- description,
- round(p.nPatients/c.nPatients *100,2) as patientRate,
- round(p.nEncounters/c.nEncounters * 100,2) as encounterRate,
- p.nPatients as nPatientscohortItem,
- p.nEncounters as nEncounterscohortItem,
- c.nPatients as nPatientsCohortTotal,
- c.nEncounters as nEncountersCohortTotal
- FROM cohortEncounterProc p
- CROSS JOIN cohortEncounterCount c
- CROSS JOIN query_params qp
- WHERE p.nPatients > qp.minPatientsForNonRareItems
- ORDER BY p.nPatients DESC
- """
- elif result_type == "med":
- query += f"""
- ,cohortEncounterMed AS (
- select
- om.medication_id,
- om.med_description,
- count(distinct cohortEnc.anon_id) as nPatients,
- count(distinct cohortEnc.encounterId) as nEncounters
- from cohortEncounter as cohortEnc
- join `shc_core_{year}.order_med` as om on cohortEnc.encounterId = om.pat_enc_csn_id_coded
- cross join query_params qp
- where om.order_class_c not in UNNEST(qp.excludeMedOrderClass)
- group by om.medication_id, om.med_description
- )
- SELECT
- medication_id as itemId,
- med_description as description,
- round(m.nPatients/c.nPatients *100,2) as patientRate,
- round(m.nEncounters/c.nEncounters * 100,2) as encounterRate,
- m.nPatients as nPatientscohortItem,
- m.nEncounters as nEncounterscohortItem,
- c.nPatients as nPatientsCohortTotal,
- c.nEncounters as nEncountersCohortTotal
- FROM cohortEncounterMed m
- CROSS JOIN cohortEncounterCount c
- CROSS JOIN query_params qp
- WHERE m.nPatients > qp.minPatientsForNonRareItems
- ORDER BY m.nPatients DESC
- """
-
- query += f" LIMIT {limit}"
-
- logger.info("Executing BigQuery query...")
- query_job = self.client.query(query)
- results = query_job.to_dataframe()
- logger.info(f"Query completed successfully. Returned {len(results)} rows.")
- return results
-
- except Exception as e:
- logger.error(f"Error in get_orders: {str(e)}", exc_info=True)
- raise Exception(f"Failed to execute BigQuery query: {str(e)}")
-
-if __name__ == "__main__":
- # Initialize the API
- api = BigQueryAPI()
-
- # Example with all parameters
- params = {
- 'patient_age': 55,
- 'patient_gender': 'male',
- 'icd10_code': 'I10'
- }
-
- # Get medication orders
- med_results = api.get_orders(
- params=params,
- result_type='med',
- limit=100
- )
-
- # Get procedure orders
- proc_results = api.get_orders(
- params=params,
- result_type='proc',
- limit=100
- )
-
- # Example with partial parameters
- partial_params = {
- 'patient_age': 55,
- 'patient_gender': None, # No gender restriction
- 'icd10_code': None # No diagnosis restriction
- }
-
- # Print results
- print("\nMedication Results:")
- print(med_results)
- print("\nProcedure Results:")
- print(proc_results)
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/api/bigquery_api_original.py b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/api/bigquery_api_original.py
deleted file mode 100644
index cade114c..00000000
--- a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/api/bigquery_api_original.py
+++ /dev/null
@@ -1,159 +0,0 @@
-from google.cloud import bigquery
-import pandas as pd
-from typing import List, Optional, Union
-import logging
-
-logger = logging.getLogger(__name__)
-
-class BigQueryAPI:
- def __init__(self, project_id: str = "som-nero-phi-jonc101"):
- """Initialize the BigQuery API client.
-
- Args:
- project_id (str): Google Cloud project ID
- """
- try:
- self.client = bigquery.Client(project_id)
- logger.info(f"Successfully initialized BigQuery client for project {project_id}")
- except Exception as e:
- logger.error(f"Failed to initialize BigQuery client: {str(e)}")
- raise Exception(f"Failed to initialize BigQuery client. Please ensure you have valid Google Cloud credentials set up. Error: {str(e)}")
-
- def get_immediate_orders(
- self,
- diagnosis_codes: List[str],
- patient_gender: Optional[str] = None,
- min_patients_for_non_rare_items: int = 10,
- result_type: str = "med", # Options: "proc", "med"
- limit: int = 10,
- year: int = 2021 # Default to 2021 if not specified
- ) -> pd.DataFrame:
- """Get common immediate orders based on diagnosis/complaint and patient gender.
-
- Args:
- diagnosis_codes (List[str]): List of diagnosis codes to analyze
- patient_gender (Optional[str]): Patient gender to filter by (e.g. 'Male', 'Female')
- min_patients_for_non_rare_items (int): Minimum number of patients for non-rare items
- result_type (str): Type of results to return ("proc" or "med")
- limit (int): Maximum number of results to return
- year (int): Year of the dataset to use (2021-2024)
-
- Returns:
- pd.DataFrame: Results showing most common immediate orders
- """
- try:
- # Validate year
- if year not in [2021, 2022, 2023, 2024]:
- raise ValueError("Year must be between 2021 and 2024")
-
- # Format parameters for the query
- gender_param = f"'{patient_gender}'" if patient_gender else "NULL"
-
- logger.info(f"Building query for diagnosis_codes={diagnosis_codes}, gender={patient_gender}, type={result_type}, year={year}")
-
- query = f"""
- WITH
- params AS
- (
- select
- {min_patients_for_non_rare_items} as minPatientsForNonRareItems,
- {gender_param} as targetGender
- ),
-
- targetEncounters AS
- (
- select distinct
- enc.anon_id,
- enc.pat_enc_csn_id_coded as encounterId,
- enc.appt_when_jittered as encounterDateTime,
- demo.gender
- from `shc_core_{year}.encounter` as enc
- join shc_core_{year}.diagnosis as dx on enc.pat_enc_csn_id_coded = dx.pat_enc_csn_id_jittered
- join `shc_core_{year}.demographic` as demo on enc.anon_id = demo.anon_id,
- params
- where visit_type like 'NEW PATIENT%'
- and appt_status = 'Completed'
- and dx.icd10 in ({','.join([f"'{code}'" for code in diagnosis_codes])})
- and (params.targetGender is NULL or demo.gender = params.targetGender)
- ),
-
- encounterCount AS
- (
- select count(distinct anon_id) as totalPatients, count(distinct encounterId) as totalEncounters
- from targetEncounters
- )
- """
-
- if result_type == "proc":
- query += f"""
- SELECT * FROM (
- WITH
- encounterProc AS
- (
- select
- op.proc_code, op.description,
- count(distinct enc.anon_id) as itemPatients,
- count(distinct enc.encounterId) as itemEncounters
- from targetEncounters as enc
- join `shc_core_{year}.order_proc` as op on enc.encounterId = op.pat_enc_csn_id_coded
- group by proc_code, description
- )
- SELECT
- proc_code as itemId,
- description,
- (itemEncounters / totalEncounters) as encounterRate,
- itemEncounters as nEncounters,
- totalEncounters,
- itemPatients as nPatients,
- totalPatients
- FROM encounterProc, encounterCount, params
- WHERE itemPatients > params.minPatientsForNonRareItems
- ORDER BY itemEncounters DESC, itemId, description
- )
- """
- elif result_type == "med":
- # Handle different year schemas for order_class_c
- if year == 2021:
- order_class_filter = "where order_class_c != 3" # For 2021, order_class_c is an integer
- else:
- order_class_filter = "where order_class_c != '3'" # For 2022+, order_class_c is a string
-
- query += f"""
- SELECT * FROM (
- WITH
- encounterMed AS
- (
- select
- om.medication_id, om.med_description,
- count(distinct enc.anon_id) as itemPatients,
- count(distinct enc.encounterId) as itemEncounters
- from targetEncounters as enc
- join `shc_core_{year}.order_med` as om on enc.encounterId = om.pat_enc_csn_id_coded
- {order_class_filter} -- Exclude historical medications
- group by medication_id, med_description
- )
- SELECT
- medication_id as itemId,
- med_description as description,
- (itemEncounters / totalEncounters) as encounterRate,
- itemEncounters as nEncounters,
- totalEncounters,
- itemPatients as nPatients,
- totalPatients
- FROM encounterMed, encounterCount, params
- WHERE itemPatients > params.minPatientsForNonRareItems
- ORDER BY itemEncounters DESC, itemId, description
- )
- """
-
- query += f" LIMIT {limit}"
-
- logger.info("Executing BigQuery query...")
- query_job = self.client.query(query)
- results = query_job.to_dataframe()
- logger.info(f"Query completed successfully. Returned {len(results)} rows.")
- return results
-
- except Exception as e:
- logger.error(f"Error in get_immediate_orders: {str(e)}", exc_info=True)
- raise Exception(f"Failed to execute BigQuery query: {str(e)}")
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/api/example_usage.py b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/api/example_usage.py
deleted file mode 100644
index 30f07d6c..00000000
--- a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/api/example_usage.py
+++ /dev/null
@@ -1,86 +0,0 @@
-import requests
-import json
-
-def process_clinical_case_and_get_orders(
- clinical_question: str,
- clinical_notes: str,
- result_type: str = "proc",
- limit: int = 100
-):
- """
- Process a clinical case and get orders in one flow.
-
- Args:
- clinical_question: The clinical question to answer
- clinical_notes: The clinical notes to analyze
- result_type: Either "proc" for procedures or "med" for medications
- limit: Maximum number of results to return
-
- Returns:
- dict: The orders data
- """
- # Base URL for the API
- base_url = "http://localhost:8000"
-
- # Step 1: Process the clinical case
- clinical_case_url = f"{base_url}/process_clinical_case"
- clinical_case_data = {
- "clinical_question": clinical_question,
- "clinical_notes": clinical_notes
- }
-
- print("Processing clinical case...")
- clinical_response = requests.post(clinical_case_url, json=clinical_case_data)
- clinical_response.raise_for_status() # Raise an exception for bad status codes
- clinical_result = clinical_response.json()
-
- print("\nClinical Case Result:")
- print(json.dumps(clinical_result, indent=2))
-
- # Step 2: Get orders using the clinical result
- orders_url = f"{base_url}/get_orders"
- orders_data = {
- "icd10_code": clinical_result["icd10_code"],
- "patient_age": clinical_result["patient_age"],
- "patient_gender": clinical_result["patient_gender"],
- "result_type": result_type,
- "limit": limit
- }
-
- print("\nGetting orders...")
- orders_response = requests.post(orders_url, json=orders_data)
- orders_response.raise_for_status()
- orders_result = orders_response.json()
-
- print("\nOrders Result:")
- print(json.dumps(orders_result, indent=2))
-
- return orders_result
-
-if __name__ == "__main__":
- # Example usage
- clinical_question = "Could this patient have stable angina?"
- clinical_notes = """
- 55-year-old male presents with chest pain on exertion for the past 2 weeks.
- Pain is substernal, radiates to left arm, and is relieved with rest.
- No associated symptoms. Past medical history includes hypertension.
- No family history of CAD. Smokes 1 pack per day for 20 years.
- """
-
- # Get procedures
- print("Getting procedures...")
- proc_results = process_clinical_case_and_get_orders(
- clinical_question=clinical_question,
- clinical_notes=clinical_notes,
- result_type="proc",
- limit=10
- )
-
- # Get medications
- print("\nGetting medications...")
- med_results = process_clinical_case_and_get_orders(
- clinical_question=clinical_question,
- clinical_notes=clinical_notes,
- result_type="med",
- limit=10
- )
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/api/fastapi_app.py b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/api/fastapi_app.py
deleted file mode 100644
index ce2d245a..00000000
--- a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/api/fastapi_app.py
+++ /dev/null
@@ -1,405 +0,0 @@
-from fastapi import FastAPI, HTTPException
-from pydantic import BaseModel
-from typing import Optional, List, Dict, Any
-from google.cloud import bigquery
-import pandas as pd
-import json
-import logging
-import datetime
-from typing import TypedDict
-from langgraph.graph import StateGraph, END
-from langchain_core.messages import HumanMessage
-from langchain_groq import ChatGroq
-from langchain_core.runnables import RunnableLambda
-import re
-import sys
-import os
-from dotenv import load_dotenv
-
-load_dotenv()
-api_key = os.getenv("GROQ_API_KEY")
-
-# Add the parent directory to Python path
-sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
-from api.bigquery_api import BigQueryAPI
-
-app = FastAPI(title="Medical Recommender API")
-
-# Initialize BigQuery client and API
-client = bigquery.Client("som-nero-phi-jonc101")
-api = BigQueryAPI()
-
-# Set up logging
-logging.basicConfig(
- level=logging.INFO,
- format='%(asctime)s - %(levelname)s - %(message)s',
- handlers=[
- logging.FileHandler(f'clinical_workflow_{datetime.datetime.now().strftime("%Y%m%d_%H%M%S")}.log'),
- logging.StreamHandler()
- ]
-)
-
-class ClinicalState(TypedDict):
- clinical_question: str
- clinical_notes: str
- icd10_codes: pd.DataFrame
- patient_age: int | None
- patient_gender: str | None
- icd10_code: str | None
- rationale: str | None
- error: str | None
-
-class QueryRequest(BaseModel):
- result_type: str = "icd10" # Default to icd10
- limit: int = 100 # Default limit
- query_params: Optional[Dict[str, Any]] = None
-
-class ClinicalCaseRequest(BaseModel):
- clinical_question: str
- clinical_notes: str
-
-class OrderRequest(BaseModel):
- icd10_code: str
- patient_age: Optional[int] = None
- patient_gender: Optional[str] = None
- result_type: str = "proc" # Default to proc, can be "proc" or "med"
- limit: int = 100 # Default limit
- min_patients_for_non_rare_items: int = 10
- year: int = 2024
-
- @classmethod
- def from_clinical_result(cls, clinical_result: dict, result_type: str = "proc", limit: int = 100):
- """Create an OrderRequest from the output of process_clinical_case."""
- return cls(
- icd10_code=clinical_result["icd10_code"],
- patient_age=clinical_result["patient_age"],
- patient_gender=clinical_result["patient_gender"],
- result_type=result_type,
- limit=limit
- )
-
-def clean_output(output):
- """Clean up the output by removing content wrapped in tags and extracting only the actual response."""
- if isinstance(output, pd.DataFrame):
- return output
-
- cleaned_output = re.sub(r'.*?', '', output, flags=re.DOTALL)
- cleaned_output = cleaned_output.strip()
-
- return cleaned_output
-
-def log_stage(stage_name: str, input_data: dict, output_data: dict):
- """Log the input and output of each stage."""
- input_copy = input_data.copy()
- output_copy = output_data.copy()
-
- if 'icd10_codes' in input_copy and isinstance(input_copy['icd10_codes'], pd.DataFrame):
- input_copy['icd10_codes'] = input_copy['icd10_codes'].to_string()
- if 'icd10_codes' in output_copy and isinstance(output_copy['icd10_codes'], pd.DataFrame):
- output_copy['icd10_codes'] = output_copy['icd10_codes'].to_string()
-
- logging.info(f"\n{'='*50}")
- logging.info(f"Stage: {stage_name}")
- logging.info(f"Input: {json.dumps(input_copy, indent=2)}")
- logging.info(f"Output: {json.dumps(output_copy, indent=2)}")
- logging.info(f"{'='*50}\n")
-
-def extract_patient_info(state: dict) -> dict:
- """Extract patient age and gender from clinical notes."""
- input_state = state.copy()
-
- llm = ChatGroq(
- model_name="Deepseek-R1-Distill-Llama-70b",
- temperature=0.3,
- api_key= api_key
-
- )
-
- prompt = f"""
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with {{ and end with }}.
-
- Example of expected format:
- {{"age": 55, "gender": "male"}}
-
- Clinical Notes: {state.get('clinical_notes')}
- """
- logging.info(f"LLM Prompt for extract_patient_info:\n{prompt}")
-
- response = llm.invoke([HumanMessage(content=prompt)])
- logging.info(f"LLM Response for extract_patient_info:\n{response.content}")
-
- try:
- content = clean_output(response.content)
- info = json.loads(content)
- state['patient_age'] = info['age']
- state['patient_gender'] = info['gender']
- except Exception as e:
- state['error'] = f"Failed to extract patient information: {str(e)}"
-
- log_stage("extract_patient_info", input_state, state)
- return state
-
-def match_icd10_code(state: dict) -> dict:
- """Match clinical information to ICD-10 code."""
- state['error'] = None
- input_state = state.copy()
-
- llm = ChatGroq(
- model="Deepseek-R1-Distill-Llama-70b",
- api_key= api_key
- )
-
- prompt = f"""
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with {{ and end with }}.
-
- Example of expected format:
- {{"icd10_code": "xxx", "rationale": "xxxxx"}}
-
-
- Clinical Question: {state.get('clinical_question')}
- Clinical Notes: {state.get('clinical_notes')}
- Patient Age: {state.get('patient_age')}
- Patient Gender: {state.get('patient_gender')}
-
- Available ICD-10 Codes:
- {state.get('icd10_codes')}
- """
- logging.info(f"LLM Prompt for match_icd10_code:\n{prompt}")
- response = llm.invoke([HumanMessage(content=prompt)])
- logging.info(f"LLM Response for match_icd10_code:\n{response.content}")
- try:
- output = clean_output(response.content)
- match = json.loads(output)
- state['icd10_code'] = match['icd10_code']
- state['rationale'] = match['rationale']
- except:
- state['error'] = "Failed to match ICD-10 code"
- log_stage("match_icd10_code", input_state, state)
- return state
-
-def validate_icd10_code_exists(state: dict) -> dict:
- """Validate if the ICD-10 code exists in the provided list."""
- input_state = state.copy()
- valid_codes = state['icd10_codes']['icd10'].tolist()
- if state.get('icd10_code') not in valid_codes:
- logging.warning(f"Invalid code {state.get('icd10_code')}, will rerun matching...")
- state['error'] = f"Invalid code {state.get('icd10_code')}, not in provided list"
- state['icd10_code'] = None
- state['rationale'] = None
- else:
- state['error'] = None
- log_stage("validate_icd10_code_exists", input_state, state)
- return state
-
-def validate_icd10_clinical_match(state: dict) -> dict:
- """Validate if the matched ICD-10 code is clinically appropriate."""
- input_state = state.copy()
- llm = ChatGroq(
- model_name="Deepseek-R1-Distill-Llama-70b",
- temperature=0.3,
- api_key= api_key
- )
-
- prompt = f"""
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {{"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}}
- or
- {{"is_valid": false, "reason": "The code I10 is too general for this specific case"}}
-
- Current Match:
- ICD-10 Code: {state.get('icd10_code')}
- Rationale: {state.get('rationale')}
-
- Clinical Question: {state.get('clinical_question')}
- Clinical Notes: {state.get('clinical_notes')}
- Patient Age: {state.get('patient_age')}
- Patient Gender: {state.get('patient_gender')}
-
- Available ICD-10 Codes:
- {state['icd10_codes'].to_string()}
- """
- logging.info(f"LLM Prompt for validate_icd10_clinical_match:\n{prompt}")
-
- response = llm.invoke([HumanMessage(content=prompt)])
- logging.info(f"LLM Response for validate_icd10_clinical_match:\n{response.content}")
- try:
- output = clean_output(response.content)
- validation = json.loads(output)
- logging.info(f"Validation result: {validation}")
-
- if not validation['is_valid']:
- state['error'] = f"Invalid match: {validation['reason']}"
- state['icd10_code'] = None
- state['rationale'] = None
- return state
- else:
- state['error'] = None
- except Exception as e:
- logging.error(f"Validation error: {str(e)}")
- state['error'] = f"Failed to validate ICD-10 code: {str(e)}"
- return state
-
- log_stage("validate_icd10_clinical_match", input_state, state)
- return state
-
-def create_clinical_graph() -> StateGraph:
- workflow = StateGraph(dict)
-
- # Add nodes
- workflow.add_node("extract_patient_info", RunnableLambda(extract_patient_info))
- workflow.add_node("match_icd10_code", RunnableLambda(match_icd10_code))
- workflow.add_node("validate_icd10_code_exists", RunnableLambda(validate_icd10_code_exists))
- workflow.add_node("validate_icd10_clinical_match", RunnableLambda(validate_icd10_clinical_match))
-
- # Add basic edges
- workflow.add_edge("extract_patient_info", "match_icd10_code")
- workflow.add_edge("match_icd10_code", "validate_icd10_code_exists")
-
- # Define conditional edges
- workflow.add_conditional_edges(
- "validate_icd10_code_exists",
- lambda x: "match_icd10_code" if x.get("error") else "validate_icd10_clinical_match",
- {
- "match_icd10_code": "match_icd10_code",
- "validate_icd10_clinical_match": "validate_icd10_clinical_match"
- }
- )
-
- workflow.add_conditional_edges(
- "validate_icd10_clinical_match",
- lambda x: "match_icd10_code" if x.get("error") else END,
- {
- "match_icd10_code": "match_icd10_code",
- END: END
- }
- )
-
- workflow.set_entry_point("extract_patient_info")
-
- return workflow.compile()
-
-@app.post("/query")
-async def query_data(request: QueryRequest):
- try:
- if request.result_type == "icd10":
- # Query for ICD10 codes
- query = """
- select distinct icd10, count(icd10) as count
- from som-nero-phi-jonc101.shc_core_2024.diagnosis
- group by icd10
- order by count desc
- limit @limit
- """
- job_config = bigquery.QueryJobConfig(
- query_parameters=[
- bigquery.ScalarQueryParameter("limit", "INT64", request.limit)
- ]
- )
- else:
- raise HTTPException(status_code=400, detail="Invalid result_type. Must be 'icd10' ")
-
- # Execute the query
- query_job = client.query(query, job_config=job_config)
- results = query_job.result()
-
- # Convert to DataFrame and then to dict for JSON response
- df = results.to_dataframe()
- return {"data": df.to_dict(orient="records")}
-
- except Exception as e:
- raise HTTPException(status_code=500, detail=str(e))
-
-@app.post("/process_clinical_case")
-async def process_clinical_case(request: ClinicalCaseRequest):
- try:
- # Get ICD10 codes
- query = """
- select distinct icd10, count(icd10) as count
- from som-nero-phi-jonc101.shc_core_2024.diagnosis
- group by icd10
- order by count desc
- limit 400
- """
- query_job = client.query(query)
- results = query_job.result()
- icd10_codes_df = results.to_dataframe()
-
- # Create the graph
- graph = create_clinical_graph()
-
- # Initialize state
- initial_state = {
- "clinical_question": request.clinical_question,
- "clinical_notes": request.clinical_notes,
- "icd10_codes": icd10_codes_df,
- "patient_age": None,
- "patient_gender": None,
- "icd10_code": None,
- "rationale": None,
- "error": None
- }
-
- # Run the graph
- config = {"recursion_limit": 100}
- result = graph.invoke(initial_state, config=config)
-
- # Clean up the result
- clean_result = {
- "patient_age": result.get("patient_age"),
- "patient_gender": result.get("patient_gender"),
- "icd10_code": result.get("icd10_code"),
- "rationale": result.get("rationale"),
- "error": result.get("error")
- }
-
- return clean_result
-
- except Exception as e:
- raise HTTPException(status_code=500, detail=str(e))
-
-@app.post("/get_orders")
-async def get_orders(request: OrderRequest):
- try:
- if request.result_type not in ["proc", "med"]:
- raise HTTPException(status_code=400, detail="Invalid result_type. Must be 'proc' or 'med'")
-
- # Prepare parameters for the BigQueryAPI
- params = {
- 'patient_age': request.patient_age,
- 'patient_gender': request.patient_gender,
- 'icd10_code': request.icd10_code
- }
-
- # Use the existing BigQueryAPI to get orders
- results = api.get_orders(
- params=params,
- min_patients_for_non_rare_items=request.min_patients_for_non_rare_items,
- result_type=request.result_type,
- limit=request.limit,
- year=request.year
- )
-
- return {
- "icd10_code": request.icd10_code,
- "result_type": request.result_type,
- "patient_age": request.patient_age,
- "patient_gender": request.patient_gender,
- "data": results.to_dict(orient="records")
- }
-
- except Exception as e:
- raise HTTPException(status_code=500, detail=str(e))
-
-if __name__ == "__main__":
- import uvicorn
- uvicorn.run(app, host="0.0.0.0", port=8000)
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/main.py b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/main.py
deleted file mode 100644
index cdb7b261..00000000
--- a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/main.py
+++ /dev/null
@@ -1,67 +0,0 @@
-from fastapi import FastAPI, Query
-from typing import List, Optional
-import pandas as pd
-from pydantic import BaseModel
-import os
-import sys
-from pathlib import Path
-
-# Add the project root directory to Python path
-project_root = str(Path(__file__).parent)
-sys.path.append(project_root)
-
-from api.bigquery_api import BigQueryAPI
-
-app = FastAPI(title="Antibiotic Susceptibility API")
-
-class ResponseModel(BaseModel):
- descriptions: List[str]
-
-@app.get("/query", response_model=ResponseModel)
-async def query_data(
- diagnosis: str = Query(..., description="Diagnosis code (e.g., J01.90)"),
- gender: str = Query(..., description="Patient gender (Male/Female)"),
- type: str = Query(..., description="Type of results (med/proc)"),
- limit: int = Query(10, description="Maximum number of results to return"),
- year: int = Query(2021, description="Year of the dataset to use (2021-2024)")
-):
- """
- Query the antibiotic susceptibility data based on diagnosis, gender, type, limit, and year.
- Returns a list of descriptions from BigQuery.
- """
- # Validate year
- if year not in [2021, 2022, 2023, 2024]:
- raise ValueError("Year must be between 2021 and 2024")
-
- # Validate gender
- if gender not in ["Male", "Female"]:
- raise ValueError("Gender must be either 'Male' or 'Female'")
-
- # Validate type
- if type not in ["med", "proc"]:
- raise ValueError("Type must be either 'med' or 'proc'")
-
- try:
- # Initialize BigQuery API
- api = BigQueryAPI()
-
- # Get results directly from BigQuery
- results = api.get_immediate_orders(
- diagnosis_codes=[diagnosis],
- patient_gender=gender,
- result_type=type,
- limit=limit,
- year=year
- )
-
- # Extract descriptions
- descriptions = results['description'].tolist()
-
- return ResponseModel(descriptions=descriptions)
-
- except Exception as e:
- raise Exception(f"Error querying BigQuery: {str(e)}")
-
-if __name__ == "__main__":
- import uvicorn
- uvicorn.run(app, host="0.0.0.0", port=8000)
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/requirements.txt b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/requirements.txt
deleted file mode 100644
index 70866320..00000000
--- a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/requirements.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-google-cloud-bigquery>=3.11.4
-fastapi==0.104.1
-uvicorn==0.24.0
-pandas==2.1.4
-pydantic==2.5.2
-python-dotenv==1.0.0
\ No newline at end of file
diff --git a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/scripts/run_api.py b/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/scripts/run_api.py
deleted file mode 100644
index bb1790e2..00000000
--- a/scripts/antibiotic-susceptibility/sql/queries/aim_4/AIM4/Recommender_API/scripts/run_api.py
+++ /dev/null
@@ -1,113 +0,0 @@
-import warnings
-warnings.filterwarnings('ignore', category=UserWarning) # Suppress all UserWarnings
-warnings.filterwarnings('ignore', category=FutureWarning) # Suppress FutureWarnings
-
-import argparse
-import os
-import sys
-from pathlib import Path
-import pandas as pd
-from datetime import datetime
-
-# Add the project root directory to Python path
-project_root = str(Path(__file__).parent.parent)
-sys.path.append(project_root)
-
-from api.bigquery_api import BigQueryAPI
-
-def validate_year(year):
- """Validate that the year is within the allowed range."""
- if year not in [2021, 2022, 2023, 2024]:
- raise ValueError(f"Year must be between 2021 and 2024, got {year}")
- return year
-
-def create_output_filename(diagnosis_codes, gender, result_type, year, limit):
- """Create a standardized output filename."""
- gender_str = gender if gender else 'all'
- diagnosis_str = '_'.join(diagnosis_codes)
- return f"{diagnosis_str}_{gender_str}_{result_type}_year{year}_limit{limit}.csv"
-
-def main():
- parser = argparse.ArgumentParser(
- description='Query BigQuery for common immediate orders based on diagnosis and patient characteristics'
- )
-
- # Required arguments
- parser.add_argument('--diagnosis',
- required=True,
- nargs='+',
- help='Diagnosis codes (e.g., J01.90)')
-
- # Optional arguments
- parser.add_argument('--gender',
- default=None,
- choices=['Male', 'Female'],
- help='Patient gender to filter by')
-
- parser.add_argument('--type',
- default='med',
- choices=['med', 'proc'],
- help='Type of results to return (medications or procedures)')
-
- parser.add_argument('--limit',
- type=int,
- default=10,
- help='Maximum number of results to return')
-
- parser.add_argument('--year',
- type=int,
- default=2022,
- help='Year of the dataset to use (2021-2024)')
-
- parser.add_argument('--output-dir',
- default='csv_output',
- help='Directory to save output files')
-
- args = parser.parse_args()
-
- try:
- # Validate year
- year = validate_year(args.year)
-
- # Initialize API
- api = BigQueryAPI()
-
- # Get results
- print(f"Querying data for year {year}...")
- results = api.get_immediate_orders(
- diagnosis_codes=args.diagnosis,
- patient_gender=args.gender,
- result_type=args.type,
- limit=args.limit,
- year=year
- )
-
- # Create output directory if it doesn't exist
- os.makedirs(args.output_dir, exist_ok=True)
-
- # Generate output filename
- output_filename = create_output_filename(
- args.diagnosis,
- args.gender,
- args.type,
- year,
- args.limit
- )
- output_path = os.path.join(args.output_dir, output_filename)
-
- # Save results
- results.to_csv(output_path, index=False)
- print(f"\nResults saved to: {output_path}")
- print(f"\nQuery Summary:")
- print(f"- Diagnosis codes: {', '.join(args.diagnosis)}")
- print(f"- Gender: {args.gender if args.gender else 'All'}")
- print(f"- Result type: {args.type}")
- print(f"- Year: {year}")
- print(f"- Number of results: {len(results)}")
-
- except Exception as e:
- print(f"Error: {str(e)}")
- sys.exit(1)
-
-if __name__ == '__main__':
- main()
\ No newline at end of file
diff --git a/scripts/critical_care_billing/bigquery.sql b/scripts/critical_care_billing/bigquery.sql
new file mode 100644
index 00000000..9d0fbd4e
--- /dev/null
+++ b/scripts/critical_care_billing/bigquery.sql
@@ -0,0 +1,93 @@
+WITH
+
+med7_csn AS (
+ SELECT DISTINCT
+ ANY_VALUE(anon_id) AS anon_id,
+ pat_enc_csn_id_coded,
+ ANY_VALUE(prov_name) AS prov_name,
+ MIN(DATE(trtmnt_tm_begin_dt_jittered)) AS med7_start_date,
+ FROM `som-nero-phi-jonc101.shc_core_2024.treatment_team`
+ WHERE (
+ prov_name LIKE '%MED UNIV 7%'
+ OR prov_name LIKE '%MED UNIV HOSP MED%'
+ OR prov_name LIKE '%MED UNIV LOLA%'
+ OR prov_name LIKE '%MED UNIV SURGE%'
+ )
+ AND trtmnt_tm_begin_dt_jittered BETWEEN DATE('2022-01-01') AND DATE('2023-12-31')
+ GROUP BY pat_enc_csn_id_coded
+),
+
+med7_notes AS (
+ SELECT
+ med7_csn.pat_enc_csn_id_coded,
+ med7_csn.prov_name,
+ DATE(notes.jittered_note_date) AS note_date,
+ notes.note_type_desc,
+ notes.author_prov_map_id,
+ prov_map.prov_type,
+ prov_map.specialty_or_dept,
+ dep_map.department_name
+ FROM `som-nero-phi-jonc101-secure.Deid_Notes_Jchen.Deid_Notes_SHC_JChen` as notes
+ INNER JOIN med7_csn
+ ON med7_csn.pat_enc_csn_id_coded = notes.offest_csn
+ INNER JOIN `som-nero-phi-jonc101.shc_core_2024.dep_map` as dep_map
+ ON notes.effective_dept_id = dep_map.department_id
+ INNER JOIN `som-nero-phi-jonc101.shc_core_2024.prov_map` as prov_map
+ ON SUBSTR(notes.author_prov_map_id, 2) = prov_map.shc_prov_id
+),
+
+med7_cpt AS (
+ SELECT
+ cpt.pat_enc_csn_id_coded,
+ DATE(cpt.start_date_jittered) AS cpt_date,
+ cpt.code,
+ prov_map.prov_type,
+ prov_map.specialty_or_dept
+ FROM `som-nero-phi-jonc101.shc_core_2024.procedure` as cpt
+ INNER JOIN med7_csn
+ ON med7_csn.pat_enc_csn_id_coded = cpt.pat_enc_csn_id_coded
+ INNER JOIN `som-nero-phi-jonc101.shc_core_2024.prov_map` as prov_map
+ ON SUBSTR(cpt.billing_prov_map_id, 2) = prov_map.shc_prov_id
+
+),
+
+code_blue_notes AS (
+ SELECT
+ med7_notes.pat_enc_csn_id_coded,
+ note_date,
+ prov_name AS note_writer,
+ med7_notes.prov_type AS note_writer_type,
+ med7_notes.specialty_or_dept as note_writer_dept,
+ department_name,
+ med7_cpt.code,
+ med7_cpt.prov_type AS billing_type,
+ med7_cpt.specialty_or_dept as billing_dept
+ FROM med7_notes
+ LEFT JOIN med7_cpt
+ ON med7_notes.pat_enc_csn_id_coded = med7_cpt.pat_enc_csn_id_coded
+ AND med7_notes.note_date = med7_cpt.cpt_date
+ AND (med7_cpt.code = '99291' OR med7_cpt.code = '92950')
+ WHERE lower(note_type_desc) LIKE '%code%'
+ GROUP BY pat_enc_csn_id_coded, note_date, prov_name, department_name, note_writer_type, note_writer_dept, code, billing_type, billing_dept
+),
+
+acp_notes AS (
+ SELECT
+ med7_notes.pat_enc_csn_id_coded,
+ note_date,
+ prov_name AS note_writer,
+ med7_notes.prov_type AS note_writer_type,
+ med7_notes.specialty_or_dept as note_writer_dept,
+ department_name,
+ med7_cpt.prov_type AS billing_type,
+ med7_cpt.specialty_or_dept as billing_dept
+ FROM med7_notes
+ LEFT JOIN med7_cpt
+ ON med7_notes.pat_enc_csn_id_coded = med7_cpt.pat_enc_csn_id_coded
+ AND med7_notes.note_date = med7_cpt.cpt_date
+ AND med7_cpt.code = '99497'
+ WHERE lower(note_type_desc) LIKE '%goals%'
+ GROUP BY pat_enc_csn_id_coded, note_date, prov_name, department_name, note_writer_type, note_writer_dept, billing_type, billing_dept
+)
+
+SELECT * FROM acp_notes
diff --git a/scripts/eConsult/Recommender/phase_1/.gitignore b/scripts/eConsult/Recommender/phase_1/.gitignore
index 2eea525d..1f6066a3 100644
--- a/scripts/eConsult/Recommender/phase_1/.gitignore
+++ b/scripts/eConsult/Recommender/phase_1/.gitignore
@@ -1 +1,3 @@
-.env
\ No newline at end of file
+.env
+logs/*
+real_data/*
\ No newline at end of file
diff --git a/scripts/eConsult/Recommender/phase_1/Notebook/logs/clinical_workflow_20250604.log b/scripts/eConsult/Recommender/phase_1/Notebook/logs/clinical_workflow_20250604.log
deleted file mode 100644
index 1cb1a642..00000000
--- a/scripts/eConsult/Recommender/phase_1/Notebook/logs/clinical_workflow_20250604.log
+++ /dev/null
@@ -1,12854 +0,0 @@
-2025-06-04 01:18:54,056 - INFO -
-==================================================
-2025-06-04 01:18:54,093 - INFO - Starting new clinical case processing
-2025-06-04 01:18:54,094 - INFO - Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
-2025-06-04 01:18:54,095 - INFO - Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-2025-06-04 01:18:54,096 - INFO - ==================================================
-
-2025-06-04 01:19:44,525 - INFO -
-==================================================
-2025-06-04 01:19:44,527 - INFO - Starting new clinical case processing
-2025-06-04 01:19:44,528 - INFO - Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
-2025-06-04 01:19:44,528 - INFO - Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-2025-06-04 01:19:44,529 - INFO - ==================================================
-
-2025-06-04 01:19:44,568 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 01:19:45,731 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 01:19:45,736 - INFO -
-==================================================
-2025-06-04 01:19:45,736 - INFO - Stage: extract_patient_info
-2025-06-04 01:19:45,737 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:19:45,737 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": "Failed to extract patient information: 'str' object has no attribute 'content'"
-}
-2025-06-04 01:19:45,738 - INFO - ==================================================
-
-2025-06-04 01:19:45,739 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:19:47,892 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation is concerning for an opportunistic infection due to immunosuppression. Of the provided codes, B20 (HIV disease) is the only code in the list related to infectious or immunosuppressive conditions. While the patient does not have a documented HIV diagnosis, none of the other codes pertain to disseminated mycobacterial or fungal infections. B20 is most thematically appropriate from the choices, as it encompasses opportunistic infections in immunocompromised states."}
-2025-06-04 01:19:47,894 - INFO -
-==================================================
-2025-06-04 01:19:47,894 - INFO - Stage: match_icd10_code
-2025-06-04 01:19:47,895 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:19:47,895 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The patient's presentation is concerning for an opportunistic infection due to immunosuppression. Of the provided codes, B20 (HIV disease) is the only code in the list related to infectious or immunosuppressive conditions. While the patient does not have a documented HIV diagnosis, none of the other codes pertain to disseminated mycobacterial or fungal infections. B20 is most thematically appropriate from the choices, as it encompasses opportunistic infections in immunocompromised states.",
- "error": null
-}
-2025-06-04 01:19:47,895 - INFO - ==================================================
-
-2025-06-04 01:19:47,899 - INFO -
-==================================================
-2025-06-04 01:19:47,899 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:19:47,900 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The patient's presentation is concerning for an opportunistic infection due to immunosuppression. Of the provided codes, B20 (HIV disease) is the only code in the list related to infectious or immunosuppressive conditions. While the patient does not have a documented HIV diagnosis, none of the other codes pertain to disseminated mycobacterial or fungal infections. B20 is most thematically appropriate from the choices, as it encompasses opportunistic infections in immunocompromised states.",
- "error": null
-}
-2025-06-04 01:19:47,901 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The patient's presentation is concerning for an opportunistic infection due to immunosuppression. Of the provided codes, B20 (HIV disease) is the only code in the list related to infectious or immunosuppressive conditions. While the patient does not have a documented HIV diagnosis, none of the other codes pertain to disseminated mycobacterial or fungal infections. B20 is most thematically appropriate from the choices, as it encompasses opportunistic infections in immunocompromised states.",
- "error": null
-}
-2025-06-04 01:19:47,901 - INFO - ==================================================
-
-2025-06-04 01:19:47,903 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation is concerning for an opportunistic infection due to immunosuppression. Of the provided codes, B20 (HIV disease) is the only code in the list related to infectious or immunosuppressive conditions. While the patient does not have a documented HIV diagnosis, none of the other codes pertain to disseminated mycobacterial or fungal infections. B20 is most thematically appropriate from the choices, as it encompasses opportunistic infections in immunocompromised states.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:19:49,646 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 specifies HIV disease, but the patient does not have HIV; her immunosuppression is due to methotrexate and prednisone for rheumatoid arthritis. A more appropriate code would relate to immunosuppression or secondary infection, but B20 is not valid for this case."}
-2025-06-04 01:19:49,646 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 specifies HIV disease, but the patient does not have HIV; her immunosuppression is due to methotrexate and prednisone for rheumatoid arthritis. A more appropriate code would relate to immunosuppression or secondary infection, but B20 is not valid for this case.'}
-2025-06-04 01:19:49,648 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:19:52,326 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The clinical picture of fever, weight loss, night sweats, nodular pulmonary and hepatosplenic lesions, and opportunistic infectious differential (disseminated mycobacterial or fungal infection) suggests immunocompromise. Of the available codes, B20 (HIV disease) is the closest match to the syndrome of immunosuppression and serious opportunistic infections, even though this patient is on immunosuppressive medications rather than diagnosed HIV—no other code fits infectious or immunodeficiency states."}
-2025-06-04 01:19:52,328 - INFO -
-==================================================
-2025-06-04 01:19:52,329 - INFO - Stage: match_icd10_code
-2025-06-04 01:19:52,329 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:19:52,330 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical picture of fever, weight loss, night sweats, nodular pulmonary and hepatosplenic lesions, and opportunistic infectious differential (disseminated mycobacterial or fungal infection) suggests immunocompromise. Of the available codes, B20 (HIV disease) is the closest match to the syndrome of immunosuppression and serious opportunistic infections, even though this patient is on immunosuppressive medications rather than diagnosed HIV\u2014no other code fits infectious or immunodeficiency states.",
- "error": null
-}
-2025-06-04 01:19:52,330 - INFO - ==================================================
-
-2025-06-04 01:19:52,333 - INFO -
-==================================================
-2025-06-04 01:19:52,333 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:19:52,334 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical picture of fever, weight loss, night sweats, nodular pulmonary and hepatosplenic lesions, and opportunistic infectious differential (disseminated mycobacterial or fungal infection) suggests immunocompromise. Of the available codes, B20 (HIV disease) is the closest match to the syndrome of immunosuppression and serious opportunistic infections, even though this patient is on immunosuppressive medications rather than diagnosed HIV\u2014no other code fits infectious or immunodeficiency states.",
- "error": null
-}
-2025-06-04 01:19:52,335 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical picture of fever, weight loss, night sweats, nodular pulmonary and hepatosplenic lesions, and opportunistic infectious differential (disseminated mycobacterial or fungal infection) suggests immunocompromise. Of the available codes, B20 (HIV disease) is the closest match to the syndrome of immunosuppression and serious opportunistic infections, even though this patient is on immunosuppressive medications rather than diagnosed HIV\u2014no other code fits infectious or immunodeficiency states.",
- "error": null
-}
-2025-06-04 01:19:52,336 - INFO - ==================================================
-
-2025-06-04 01:19:52,338 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The clinical picture of fever, weight loss, night sweats, nodular pulmonary and hepatosplenic lesions, and opportunistic infectious differential (disseminated mycobacterial or fungal infection) suggests immunocompromise. Of the available codes, B20 (HIV disease) is the closest match to the syndrome of immunosuppression and serious opportunistic infections, even though this patient is on immunosuppressive medications rather than diagnosed HIV—no other code fits infectious or immunodeficiency states.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:19:53,841 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 refers specifically to HIV disease. The patient is immunosuppressed due to medications for rheumatoid arthritis, not HIV infection, so B20 is not appropriate."}
-2025-06-04 01:19:53,842 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 refers specifically to HIV disease. The patient is immunosuppressed due to medications for rheumatoid arthritis, not HIV infection, so B20 is not appropriate.'}
-2025-06-04 01:19:53,848 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:19:56,727 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation fits a severe systemic infectious process (disseminated mycobacterial or fungal infection) in an immunocompromised host. Among the provided codes, B20 (HIV disease) is the only infectious disease code, and though the patient is immunosuppressed due to medication rather than HIV, it is the closest match given the differential diagnosis and context. None of the other codes (osteoporosis, medication use, diabetes, hypothyroidism, hyperlipidemia, hypertension, vitamin D deficiency, organ transplant) fit the clinical scenario as primary diagnoses."}
-2025-06-04 01:19:56,730 - INFO -
-==================================================
-2025-06-04 01:19:56,731 - INFO - Stage: match_icd10_code
-2025-06-04 01:19:56,732 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:19:56,733 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The patient's presentation fits a severe systemic infectious process (disseminated mycobacterial or fungal infection) in an immunocompromised host. Among the provided codes, B20 (HIV disease) is the only infectious disease code, and though the patient is immunosuppressed due to medication rather than HIV, it is the closest match given the differential diagnosis and context. None of the other codes (osteoporosis, medication use, diabetes, hypothyroidism, hyperlipidemia, hypertension, vitamin D deficiency, organ transplant) fit the clinical scenario as primary diagnoses.",
- "error": null
-}
-2025-06-04 01:19:56,734 - INFO - ==================================================
-
-2025-06-04 01:19:56,736 - INFO -
-==================================================
-2025-06-04 01:19:56,737 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:19:56,738 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The patient's presentation fits a severe systemic infectious process (disseminated mycobacterial or fungal infection) in an immunocompromised host. Among the provided codes, B20 (HIV disease) is the only infectious disease code, and though the patient is immunosuppressed due to medication rather than HIV, it is the closest match given the differential diagnosis and context. None of the other codes (osteoporosis, medication use, diabetes, hypothyroidism, hyperlipidemia, hypertension, vitamin D deficiency, organ transplant) fit the clinical scenario as primary diagnoses.",
- "error": null
-}
-2025-06-04 01:19:56,738 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The patient's presentation fits a severe systemic infectious process (disseminated mycobacterial or fungal infection) in an immunocompromised host. Among the provided codes, B20 (HIV disease) is the only infectious disease code, and though the patient is immunosuppressed due to medication rather than HIV, it is the closest match given the differential diagnosis and context. None of the other codes (osteoporosis, medication use, diabetes, hypothyroidism, hyperlipidemia, hypertension, vitamin D deficiency, organ transplant) fit the clinical scenario as primary diagnoses.",
- "error": null
-}
-2025-06-04 01:19:56,739 - INFO - ==================================================
-
-2025-06-04 01:19:56,740 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation fits a severe systemic infectious process (disseminated mycobacterial or fungal infection) in an immunocompromised host. Among the provided codes, B20 (HIV disease) is the only infectious disease code, and though the patient is immunosuppressed due to medication rather than HIV, it is the closest match given the differential diagnosis and context. None of the other codes (osteoporosis, medication use, diabetes, hypothyroidism, hyperlipidemia, hypertension, vitamin D deficiency, organ transplant) fit the clinical scenario as primary diagnoses.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:19:58,427 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 refers specifically to HIV disease, but this patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV infection. The matched ICD-10 code is not appropriate."}
-2025-06-04 01:19:58,428 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 refers specifically to HIV disease, but this patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV infection. The matched ICD-10 code is not appropriate.'}
-2025-06-04 01:19:58,430 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:00,745 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation with persistent fever, night sweats, weight loss, and findings of multiple pulmonary nodules and hepatosplenic lesions in the setting of immunosuppression is concerning for opportunistic infection. Of the provided codes, B20 (HIV disease) is most closely aligned with the diagnostic concern for serious opportunistic infections, although the patient is not confirmed HIV positive. No other code in the list represents disseminated mycobacterial or fungal infection. B20 is the most appropriate available code in the context of serious systemic infection in an immunosuppressed host."}
-2025-06-04 01:20:00,746 - INFO -
-==================================================
-2025-06-04 01:20:00,746 - INFO - Stage: match_icd10_code
-2025-06-04 01:20:00,747 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:20:00,747 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The patient's presentation with persistent fever, night sweats, weight loss, and findings of multiple pulmonary nodules and hepatosplenic lesions in the setting of immunosuppression is concerning for opportunistic infection. Of the provided codes, B20 (HIV disease) is most closely aligned with the diagnostic concern for serious opportunistic infections, although the patient is not confirmed HIV positive. No other code in the list represents disseminated mycobacterial or fungal infection. B20 is the most appropriate available code in the context of serious systemic infection in an immunosuppressed host.",
- "error": null
-}
-2025-06-04 01:20:00,748 - INFO - ==================================================
-
-2025-06-04 01:20:00,750 - INFO -
-==================================================
-2025-06-04 01:20:00,751 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:20:00,751 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The patient's presentation with persistent fever, night sweats, weight loss, and findings of multiple pulmonary nodules and hepatosplenic lesions in the setting of immunosuppression is concerning for opportunistic infection. Of the provided codes, B20 (HIV disease) is most closely aligned with the diagnostic concern for serious opportunistic infections, although the patient is not confirmed HIV positive. No other code in the list represents disseminated mycobacterial or fungal infection. B20 is the most appropriate available code in the context of serious systemic infection in an immunosuppressed host.",
- "error": null
-}
-2025-06-04 01:20:00,753 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The patient's presentation with persistent fever, night sweats, weight loss, and findings of multiple pulmonary nodules and hepatosplenic lesions in the setting of immunosuppression is concerning for opportunistic infection. Of the provided codes, B20 (HIV disease) is most closely aligned with the diagnostic concern for serious opportunistic infections, although the patient is not confirmed HIV positive. No other code in the list represents disseminated mycobacterial or fungal infection. B20 is the most appropriate available code in the context of serious systemic infection in an immunosuppressed host.",
- "error": null
-}
-2025-06-04 01:20:00,753 - INFO - ==================================================
-
-2025-06-04 01:20:00,755 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation with persistent fever, night sweats, weight loss, and findings of multiple pulmonary nodules and hepatosplenic lesions in the setting of immunosuppression is concerning for opportunistic infection. Of the provided codes, B20 (HIV disease) is most closely aligned with the diagnostic concern for serious opportunistic infections, although the patient is not confirmed HIV positive. No other code in the list represents disseminated mycobacterial or fungal infection. B20 is the most appropriate available code in the context of serious systemic infection in an immunosuppressed host.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:02,321 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is for confirmed HIV disease, whereas this patient has immunosuppression from rheumatoid arthritis therapy without evidence or diagnosis of HIV infection."}
-2025-06-04 01:20:02,322 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is for confirmed HIV disease, whereas this patient has immunosuppression from rheumatoid arthritis therapy without evidence or diagnosis of HIV infection.'}
-2025-06-04 01:20:02,323 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:04,441 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "B20 is used for immunodeficiency due to HIV, but in ICD-10, infectious and certain parasitic diseases codes (A00-B99) also include other disseminated infections; among the given codes, B20 is the only one relevant to severe, disseminated infectious processes in an immunosuppressed host, matching the context of possible disseminated mycobacterial or fungal infection."}
-2025-06-04 01:20:04,444 - INFO -
-==================================================
-2025-06-04 01:20:04,444 - INFO - Stage: match_icd10_code
-2025-06-04 01:20:04,445 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:20:04,446 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "B20 is used for immunodeficiency due to HIV, but in ICD-10, infectious and certain parasitic diseases codes (A00-B99) also include other disseminated infections; among the given codes, B20 is the only one relevant to severe, disseminated infectious processes in an immunosuppressed host, matching the context of possible disseminated mycobacterial or fungal infection.",
- "error": null
-}
-2025-06-04 01:20:04,446 - INFO - ==================================================
-
-2025-06-04 01:20:04,449 - INFO -
-==================================================
-2025-06-04 01:20:04,449 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:20:04,450 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "B20 is used for immunodeficiency due to HIV, but in ICD-10, infectious and certain parasitic diseases codes (A00-B99) also include other disseminated infections; among the given codes, B20 is the only one relevant to severe, disseminated infectious processes in an immunosuppressed host, matching the context of possible disseminated mycobacterial or fungal infection.",
- "error": null
-}
-2025-06-04 01:20:04,451 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "B20 is used for immunodeficiency due to HIV, but in ICD-10, infectious and certain parasitic diseases codes (A00-B99) also include other disseminated infections; among the given codes, B20 is the only one relevant to severe, disseminated infectious processes in an immunosuppressed host, matching the context of possible disseminated mycobacterial or fungal infection.",
- "error": null
-}
-2025-06-04 01:20:04,451 - INFO - ==================================================
-
-2025-06-04 01:20:04,453 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: B20 is used for immunodeficiency due to HIV, but in ICD-10, infectious and certain parasitic diseases codes (A00-B99) also include other disseminated infections; among the given codes, B20 is the only one relevant to severe, disseminated infectious processes in an immunosuppressed host, matching the context of possible disseminated mycobacterial or fungal infection.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:06,630 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "B20 is specific for HIV disease resulting in infectious and parasitic diseases; the patient has immunosuppression due to rheumatoid arthritis treatment, not HIV, so this code does not accurately reflect her condition."}
-2025-06-04 01:20:06,630 - INFO - Validation result: {'is_valid': False, 'reason': 'B20 is specific for HIV disease resulting in infectious and parasitic diseases; the patient has immunosuppression due to rheumatoid arthritis treatment, not HIV, so this code does not accurately reflect her condition.'}
-2025-06-04 01:20:06,634 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:08,710 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation is consistent with an opportunistic infectious process in an immunocompromised host. While B20 is the ICD-10 code for HIV disease, it is the closest match in the provided list for severe opportunistic infections; the other codes do not pertain to disseminated infections or immunosuppression. None of the other options fit for disseminated mycobacterial or fungal disease, nor for immunosuppression due to medications."}
-2025-06-04 01:20:08,712 - INFO -
-==================================================
-2025-06-04 01:20:08,713 - INFO - Stage: match_icd10_code
-2025-06-04 01:20:08,714 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:20:08,715 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The patient's presentation is consistent with an opportunistic infectious process in an immunocompromised host. While B20 is the ICD-10 code for HIV disease, it is the closest match in the provided list for severe opportunistic infections; the other codes do not pertain to disseminated infections or immunosuppression. None of the other options fit for disseminated mycobacterial or fungal disease, nor for immunosuppression due to medications.",
- "error": null
-}
-2025-06-04 01:20:08,716 - INFO - ==================================================
-
-2025-06-04 01:20:08,719 - INFO -
-==================================================
-2025-06-04 01:20:08,719 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:20:08,720 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The patient's presentation is consistent with an opportunistic infectious process in an immunocompromised host. While B20 is the ICD-10 code for HIV disease, it is the closest match in the provided list for severe opportunistic infections; the other codes do not pertain to disseminated infections or immunosuppression. None of the other options fit for disseminated mycobacterial or fungal disease, nor for immunosuppression due to medications.",
- "error": null
-}
-2025-06-04 01:20:08,720 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The patient's presentation is consistent with an opportunistic infectious process in an immunocompromised host. While B20 is the ICD-10 code for HIV disease, it is the closest match in the provided list for severe opportunistic infections; the other codes do not pertain to disseminated infections or immunosuppression. None of the other options fit for disseminated mycobacterial or fungal disease, nor for immunosuppression due to medications.",
- "error": null
-}
-2025-06-04 01:20:08,721 - INFO - ==================================================
-
-2025-06-04 01:20:08,723 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation is consistent with an opportunistic infectious process in an immunocompromised host. While B20 is the ICD-10 code for HIV disease, it is the closest match in the provided list for severe opportunistic infections; the other codes do not pertain to disseminated infections or immunosuppression. None of the other options fit for disseminated mycobacterial or fungal disease, nor for immunosuppression due to medications.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:10,614 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 refers to HIV disease, but the patient is immunosuppressed due to rheumatoid arthritis medications, not HIV. A code for immunosuppression due to medication would be more appropriate, but is not available in the provided list."}
-2025-06-04 01:20:10,615 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 refers to HIV disease, but the patient is immunosuppressed due to rheumatoid arthritis medications, not HIV. A code for immunosuppression due to medication would be more appropriate, but is not available in the provided list.'}
-2025-06-04 01:20:10,617 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:13,257 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "B20 is the ICD-10 code for HIV disease, which is used broadly for immunocompromised states leading to opportunistic infections. In this case, none of the other codes fit disseminated mycobacterial infection or histoplasmosis directly, but B20 is the closest for severe systemic infections in immunocompromised hosts such as this patient on immunosuppressive therapy."}
-2025-06-04 01:20:13,258 - INFO -
-==================================================
-2025-06-04 01:20:13,259 - INFO - Stage: match_icd10_code
-2025-06-04 01:20:13,259 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:20:13,260 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease, which is used broadly for immunocompromised states leading to opportunistic infections. In this case, none of the other codes fit disseminated mycobacterial infection or histoplasmosis directly, but B20 is the closest for severe systemic infections in immunocompromised hosts such as this patient on immunosuppressive therapy.",
- "error": null
-}
-2025-06-04 01:20:13,261 - INFO - ==================================================
-
-2025-06-04 01:20:13,262 - INFO -
-==================================================
-2025-06-04 01:20:13,263 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:20:13,263 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease, which is used broadly for immunocompromised states leading to opportunistic infections. In this case, none of the other codes fit disseminated mycobacterial infection or histoplasmosis directly, but B20 is the closest for severe systemic infections in immunocompromised hosts such as this patient on immunosuppressive therapy.",
- "error": null
-}
-2025-06-04 01:20:13,264 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease, which is used broadly for immunocompromised states leading to opportunistic infections. In this case, none of the other codes fit disseminated mycobacterial infection or histoplasmosis directly, but B20 is the closest for severe systemic infections in immunocompromised hosts such as this patient on immunosuppressive therapy.",
- "error": null
-}
-2025-06-04 01:20:13,264 - INFO - ==================================================
-
-2025-06-04 01:20:13,266 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: B20 is the ICD-10 code for HIV disease, which is used broadly for immunocompromised states leading to opportunistic infections. In this case, none of the other codes fit disseminated mycobacterial infection or histoplasmosis directly, but B20 is the closest for severe systemic infections in immunocompromised hosts such as this patient on immunosuppressive therapy.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:14,806 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "B20 is specific for HIV disease, but this patient is immunocompromised due to immunosuppressive therapy for rheumatoid arthritis, not HIV infection."}
-2025-06-04 01:20:14,807 - INFO - Validation result: {'is_valid': False, 'reason': 'B20 is specific for HIV disease, but this patient is immunocompromised due to immunosuppressive therapy for rheumatoid arthritis, not HIV infection.'}
-2025-06-04 01:20:14,809 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:16,940 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The clinical picture suggests a serious, disseminated opportunistic infection (suspected disseminated non-tuberculous mycobacterial or fungal infection) in an immunosuppressed host. Of the available codes, B20 (HIV disease) is most aligned with severe infections as seen in immunocompromised states, though not a perfect fit; none of the other codes represent disseminated infection or immunosuppression itself."}
-2025-06-04 01:20:16,942 - INFO -
-==================================================
-2025-06-04 01:20:16,943 - INFO - Stage: match_icd10_code
-2025-06-04 01:20:16,943 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:20:16,944 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical picture suggests a serious, disseminated opportunistic infection (suspected disseminated non-tuberculous mycobacterial or fungal infection) in an immunosuppressed host. Of the available codes, B20 (HIV disease) is most aligned with severe infections as seen in immunocompromised states, though not a perfect fit; none of the other codes represent disseminated infection or immunosuppression itself.",
- "error": null
-}
-2025-06-04 01:20:16,945 - INFO - ==================================================
-
-2025-06-04 01:20:16,946 - INFO -
-==================================================
-2025-06-04 01:20:16,947 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:20:16,948 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical picture suggests a serious, disseminated opportunistic infection (suspected disseminated non-tuberculous mycobacterial or fungal infection) in an immunosuppressed host. Of the available codes, B20 (HIV disease) is most aligned with severe infections as seen in immunocompromised states, though not a perfect fit; none of the other codes represent disseminated infection or immunosuppression itself.",
- "error": null
-}
-2025-06-04 01:20:16,948 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical picture suggests a serious, disseminated opportunistic infection (suspected disseminated non-tuberculous mycobacterial or fungal infection) in an immunosuppressed host. Of the available codes, B20 (HIV disease) is most aligned with severe infections as seen in immunocompromised states, though not a perfect fit; none of the other codes represent disseminated infection or immunosuppression itself.",
- "error": null
-}
-2025-06-04 01:20:16,949 - INFO - ==================================================
-
-2025-06-04 01:20:16,950 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The clinical picture suggests a serious, disseminated opportunistic infection (suspected disseminated non-tuberculous mycobacterial or fungal infection) in an immunosuppressed host. Of the available codes, B20 (HIV disease) is most aligned with severe infections as seen in immunocompromised states, though not a perfect fit; none of the other codes represent disseminated infection or immunosuppression itself.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:18,568 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 indicates HIV disease, but there is no evidence or mention of HIV infection; the patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV."}
-2025-06-04 01:20:18,569 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 indicates HIV disease, but there is no evidence or mention of HIV infection; the patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV.'}
-2025-06-04 01:20:18,570 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:21,373 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "B20 is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases, but in the absence of a code specifically for disseminated non-tuberculous mycobacterial or fungal infections, B20 best matches the clinical scenario of a serious opportunistic infection in an immunosuppressed host. The other codes are related to unrelated conditions such as osteoporosis (M81.0), diabetes (E11.65), thyroid disorders (E03.9), lipid disorders (E78.5), hypertension (I10), vitamin deficiency (E55.9), long-term drug therapy (Z79.4), and transplant status (Z94.81), none of which directly apply."}
-2025-06-04 01:20:21,375 - INFO -
-==================================================
-2025-06-04 01:20:21,375 - INFO - Stage: match_icd10_code
-2025-06-04 01:20:21,376 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:20:21,377 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases, but in the absence of a code specifically for disseminated non-tuberculous mycobacterial or fungal infections, B20 best matches the clinical scenario of a serious opportunistic infection in an immunosuppressed host. The other codes are related to unrelated conditions such as osteoporosis (M81.0), diabetes (E11.65), thyroid disorders (E03.9), lipid disorders (E78.5), hypertension (I10), vitamin deficiency (E55.9), long-term drug therapy (Z79.4), and transplant status (Z94.81), none of which directly apply.",
- "error": null
-}
-2025-06-04 01:20:21,378 - INFO - ==================================================
-
-2025-06-04 01:20:21,380 - INFO -
-==================================================
-2025-06-04 01:20:21,380 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:20:21,381 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases, but in the absence of a code specifically for disseminated non-tuberculous mycobacterial or fungal infections, B20 best matches the clinical scenario of a serious opportunistic infection in an immunosuppressed host. The other codes are related to unrelated conditions such as osteoporosis (M81.0), diabetes (E11.65), thyroid disorders (E03.9), lipid disorders (E78.5), hypertension (I10), vitamin deficiency (E55.9), long-term drug therapy (Z79.4), and transplant status (Z94.81), none of which directly apply.",
- "error": null
-}
-2025-06-04 01:20:21,381 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases, but in the absence of a code specifically for disseminated non-tuberculous mycobacterial or fungal infections, B20 best matches the clinical scenario of a serious opportunistic infection in an immunosuppressed host. The other codes are related to unrelated conditions such as osteoporosis (M81.0), diabetes (E11.65), thyroid disorders (E03.9), lipid disorders (E78.5), hypertension (I10), vitamin deficiency (E55.9), long-term drug therapy (Z79.4), and transplant status (Z94.81), none of which directly apply.",
- "error": null
-}
-2025-06-04 01:20:21,382 - INFO - ==================================================
-
-2025-06-04 01:20:21,384 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: B20 is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases, but in the absence of a code specifically for disseminated non-tuberculous mycobacterial or fungal infections, B20 best matches the clinical scenario of a serious opportunistic infection in an immunosuppressed host. The other codes are related to unrelated conditions such as osteoporosis (M81.0), diabetes (E11.65), thyroid disorders (E03.9), lipid disorders (E78.5), hypertension (I10), vitamin deficiency (E55.9), long-term drug therapy (Z79.4), and transplant status (Z94.81), none of which directly apply.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:23,167 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "B20 is specifically for HIV disease resulting in infectious and parasitic diseases, but there is no evidence of HIV infection in this patient. The clinical case describes immunosuppression due to methotrexate and prednisone for rheumatoid arthritis, not HIV."}
-2025-06-04 01:20:23,167 - INFO - Validation result: {'is_valid': False, 'reason': 'B20 is specifically for HIV disease resulting in infectious and parasitic diseases, but there is no evidence of HIV infection in this patient. The clinical case describes immunosuppression due to methotrexate and prednisone for rheumatoid arthritis, not HIV.'}
-2025-06-04 01:20:23,170 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:26,414 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The clinical scenario describes severe immunosuppression with unexplained fever, night sweats, weight loss, and multiple organ involvement (lungs, liver, spleen) in a patient on immunosuppressive therapy. Among the provided codes, B20 ('Human immunodeficiency virus [HIV] disease') best fits, as it encompasses disseminated opportunistic infections seen in immunocompromised patients, such as non-tuberculous mycobacterial or fungal infections. Although the patient is not documented as HIV-positive, none of the other codes correspond to disseminated infectious etiologies, and B20 is used when coding the presence of opportunistic infections in immunocompromised states."}
-2025-06-04 01:20:26,417 - INFO -
-==================================================
-2025-06-04 01:20:26,417 - INFO - Stage: match_icd10_code
-2025-06-04 01:20:26,418 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:20:26,420 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes severe immunosuppression with unexplained fever, night sweats, weight loss, and multiple organ involvement (lungs, liver, spleen) in a patient on immunosuppressive therapy. Among the provided codes, B20 ('Human immunodeficiency virus [HIV] disease') best fits, as it encompasses disseminated opportunistic infections seen in immunocompromised patients, such as non-tuberculous mycobacterial or fungal infections. Although the patient is not documented as HIV-positive, none of the other codes correspond to disseminated infectious etiologies, and B20 is used when coding the presence of opportunistic infections in immunocompromised states.",
- "error": null
-}
-2025-06-04 01:20:26,420 - INFO - ==================================================
-
-2025-06-04 01:20:26,423 - INFO -
-==================================================
-2025-06-04 01:20:26,423 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:20:26,424 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes severe immunosuppression with unexplained fever, night sweats, weight loss, and multiple organ involvement (lungs, liver, spleen) in a patient on immunosuppressive therapy. Among the provided codes, B20 ('Human immunodeficiency virus [HIV] disease') best fits, as it encompasses disseminated opportunistic infections seen in immunocompromised patients, such as non-tuberculous mycobacterial or fungal infections. Although the patient is not documented as HIV-positive, none of the other codes correspond to disseminated infectious etiologies, and B20 is used when coding the presence of opportunistic infections in immunocompromised states.",
- "error": null
-}
-2025-06-04 01:20:26,425 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes severe immunosuppression with unexplained fever, night sweats, weight loss, and multiple organ involvement (lungs, liver, spleen) in a patient on immunosuppressive therapy. Among the provided codes, B20 ('Human immunodeficiency virus [HIV] disease') best fits, as it encompasses disseminated opportunistic infections seen in immunocompromised patients, such as non-tuberculous mycobacterial or fungal infections. Although the patient is not documented as HIV-positive, none of the other codes correspond to disseminated infectious etiologies, and B20 is used when coding the presence of opportunistic infections in immunocompromised states.",
- "error": null
-}
-2025-06-04 01:20:26,427 - INFO - ==================================================
-
-2025-06-04 01:20:26,429 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The clinical scenario describes severe immunosuppression with unexplained fever, night sweats, weight loss, and multiple organ involvement (lungs, liver, spleen) in a patient on immunosuppressive therapy. Among the provided codes, B20 ('Human immunodeficiency virus [HIV] disease') best fits, as it encompasses disseminated opportunistic infections seen in immunocompromised patients, such as non-tuberculous mycobacterial or fungal infections. Although the patient is not documented as HIV-positive, none of the other codes correspond to disseminated infectious etiologies, and B20 is used when coding the presence of opportunistic infections in immunocompromised states.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:28,036 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specifically for HIV-related disease and opportunistic infections due to HIV; this patient has immunosuppression from medications, not HIV, making B20 inappropriate."}
-2025-06-04 01:20:28,037 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specifically for HIV-related disease and opportunistic infections due to HIV; this patient has immunosuppression from medications, not HIV, making B20 inappropriate.'}
-2025-06-04 01:20:28,042 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:30,320 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "Z79.4", "rationale": "The patient is on long-term use of immunosuppressive medications (methotrexate and prednisone), which is most accurately captured by ICD-10 code Z79.4 (Long term (current) use of anti-inflammatory drugs). The patient's presentation and workup are directly related to her immunosuppressed state, increasing risk of disseminated infections."}
-2025-06-04 01:20:30,324 - INFO -
-==================================================
-2025-06-04 01:20:30,325 - INFO - Stage: match_icd10_code
-2025-06-04 01:20:30,325 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:20:30,326 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "Z79.4",
- "rationale": "The patient is on long-term use of immunosuppressive medications (methotrexate and prednisone), which is most accurately captured by ICD-10 code Z79.4 (Long term (current) use of anti-inflammatory drugs). The patient's presentation and workup are directly related to her immunosuppressed state, increasing risk of disseminated infections.",
- "error": null
-}
-2025-06-04 01:20:30,328 - INFO - ==================================================
-
-2025-06-04 01:20:30,332 - INFO -
-==================================================
-2025-06-04 01:20:30,333 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:20:30,333 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "Z79.4",
- "rationale": "The patient is on long-term use of immunosuppressive medications (methotrexate and prednisone), which is most accurately captured by ICD-10 code Z79.4 (Long term (current) use of anti-inflammatory drugs). The patient's presentation and workup are directly related to her immunosuppressed state, increasing risk of disseminated infections.",
- "error": null
-}
-2025-06-04 01:20:30,335 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "Z79.4",
- "rationale": "The patient is on long-term use of immunosuppressive medications (methotrexate and prednisone), which is most accurately captured by ICD-10 code Z79.4 (Long term (current) use of anti-inflammatory drugs). The patient's presentation and workup are directly related to her immunosuppressed state, increasing risk of disseminated infections.",
- "error": null
-}
-2025-06-04 01:20:30,335 - INFO - ==================================================
-
-2025-06-04 01:20:30,337 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: Z79.4
- Rationale: The patient is on long-term use of immunosuppressive medications (methotrexate and prednisone), which is most accurately captured by ICD-10 code Z79.4 (Long term (current) use of anti-inflammatory drugs). The patient's presentation and workup are directly related to her immunosuppressed state, increasing risk of disseminated infections.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:32,146 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "Z79.4 is defined as 'Long term (current) use of anti-inflammatory drugs,' which refers primarily to NSAIDs, not immunosuppressive therapies like methotrexate and prednisone; therefore, this code does not specifically capture the patient's use of immunosuppressive medications."}
-2025-06-04 01:20:32,147 - INFO - Validation result: {'is_valid': False, 'reason': "Z79.4 is defined as 'Long term (current) use of anti-inflammatory drugs,' which refers primarily to NSAIDs, not immunosuppressive therapies like methotrexate and prednisone; therefore, this code does not specifically capture the patient's use of immunosuppressive medications."}
-2025-06-04 01:20:32,149 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:34,519 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "Although the patient is at risk for opportunistic infections due to immunosuppression from rheumatoid arthritis therapy, the most appropriate ICD-10 code from the provided list is B20 (HIV disease) because it encompasses unexplained systemic symptoms in the immunocompromised host with concern for opportunistic infections such as disseminated mycobacterial or fungal infection, as the other codes do not pertain to infectious etiologies."}
-2025-06-04 01:20:34,521 - INFO -
-==================================================
-2025-06-04 01:20:34,521 - INFO - Stage: match_icd10_code
-2025-06-04 01:20:34,522 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:20:34,522 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "Although the patient is at risk for opportunistic infections due to immunosuppression from rheumatoid arthritis therapy, the most appropriate ICD-10 code from the provided list is B20 (HIV disease) because it encompasses unexplained systemic symptoms in the immunocompromised host with concern for opportunistic infections such as disseminated mycobacterial or fungal infection, as the other codes do not pertain to infectious etiologies.",
- "error": null
-}
-2025-06-04 01:20:34,523 - INFO - ==================================================
-
-2025-06-04 01:20:34,526 - INFO -
-==================================================
-2025-06-04 01:20:34,526 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:20:34,527 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "Although the patient is at risk for opportunistic infections due to immunosuppression from rheumatoid arthritis therapy, the most appropriate ICD-10 code from the provided list is B20 (HIV disease) because it encompasses unexplained systemic symptoms in the immunocompromised host with concern for opportunistic infections such as disseminated mycobacterial or fungal infection, as the other codes do not pertain to infectious etiologies.",
- "error": null
-}
-2025-06-04 01:20:34,527 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "Although the patient is at risk for opportunistic infections due to immunosuppression from rheumatoid arthritis therapy, the most appropriate ICD-10 code from the provided list is B20 (HIV disease) because it encompasses unexplained systemic symptoms in the immunocompromised host with concern for opportunistic infections such as disseminated mycobacterial or fungal infection, as the other codes do not pertain to infectious etiologies.",
- "error": null
-}
-2025-06-04 01:20:34,528 - INFO - ==================================================
-
-2025-06-04 01:20:34,530 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: Although the patient is at risk for opportunistic infections due to immunosuppression from rheumatoid arthritis therapy, the most appropriate ICD-10 code from the provided list is B20 (HIV disease) because it encompasses unexplained systemic symptoms in the immunocompromised host with concern for opportunistic infections such as disseminated mycobacterial or fungal infection, as the other codes do not pertain to infectious etiologies.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:36,406 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is for HIV disease, but the patient does not have HIV and is immunosuppressed due to rheumatoid arthritis therapy; a more accurate code is not available from the provided list."}
-2025-06-04 01:20:36,407 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is for HIV disease, but the patient does not have HIV and is immunosuppressed due to rheumatoid arthritis therapy; a more accurate code is not available from the provided list.'}
-2025-06-04 01:20:36,412 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:39,244 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The clinical scenario describes a patient with prolonged fever, night sweats, weight loss, and imaging suggesting disseminated infection, in the context of immunosuppression. The most appropriate ICD-10 code from the provided list is B20 (Human immunodeficiency virus [HIV] disease), as B20 is often used broadly for immunocompromised states with complex infections when no other infection code matches. While the specific diagnosis here is not yet clear, none of the other codes fit infectious or immunocompromised circumstances; therefore, B20 best captures the nature of the case presented."}
-2025-06-04 01:20:39,246 - INFO -
-==================================================
-2025-06-04 01:20:39,247 - INFO - Stage: match_icd10_code
-2025-06-04 01:20:39,247 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:20:39,248 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes a patient with prolonged fever, night sweats, weight loss, and imaging suggesting disseminated infection, in the context of immunosuppression. The most appropriate ICD-10 code from the provided list is B20 (Human immunodeficiency virus [HIV] disease), as B20 is often used broadly for immunocompromised states with complex infections when no other infection code matches. While the specific diagnosis here is not yet clear, none of the other codes fit infectious or immunocompromised circumstances; therefore, B20 best captures the nature of the case presented.",
- "error": null
-}
-2025-06-04 01:20:39,250 - INFO - ==================================================
-
-2025-06-04 01:20:39,254 - INFO -
-==================================================
-2025-06-04 01:20:39,255 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:20:39,256 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes a patient with prolonged fever, night sweats, weight loss, and imaging suggesting disseminated infection, in the context of immunosuppression. The most appropriate ICD-10 code from the provided list is B20 (Human immunodeficiency virus [HIV] disease), as B20 is often used broadly for immunocompromised states with complex infections when no other infection code matches. While the specific diagnosis here is not yet clear, none of the other codes fit infectious or immunocompromised circumstances; therefore, B20 best captures the nature of the case presented.",
- "error": null
-}
-2025-06-04 01:20:39,256 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes a patient with prolonged fever, night sweats, weight loss, and imaging suggesting disseminated infection, in the context of immunosuppression. The most appropriate ICD-10 code from the provided list is B20 (Human immunodeficiency virus [HIV] disease), as B20 is often used broadly for immunocompromised states with complex infections when no other infection code matches. While the specific diagnosis here is not yet clear, none of the other codes fit infectious or immunocompromised circumstances; therefore, B20 best captures the nature of the case presented.",
- "error": null
-}
-2025-06-04 01:20:39,257 - INFO - ==================================================
-
-2025-06-04 01:20:39,259 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The clinical scenario describes a patient with prolonged fever, night sweats, weight loss, and imaging suggesting disseminated infection, in the context of immunosuppression. The most appropriate ICD-10 code from the provided list is B20 (Human immunodeficiency virus [HIV] disease), as B20 is often used broadly for immunocompromised states with complex infections when no other infection code matches. While the specific diagnosis here is not yet clear, none of the other codes fit infectious or immunocompromised circumstances; therefore, B20 best captures the nature of the case presented.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:40,617 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 indicates HIV disease, but the patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV infection."}
-2025-06-04 01:20:40,617 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 indicates HIV disease, but the patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV infection.'}
-2025-06-04 01:20:40,620 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:42,971 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The clinical picture is consistent with a severe immunocompromised state and atypical infections, which falls under 'B20: Human immunodeficiency virus [HIV] disease' by exclusion, as none of the other codes relate to disseminated mycobacterial or fungal infections or immunodeficiency; 'B20' is the only infectious disease code available and often encompasses AIDS-defining opportunistic infections in the ICD-10 framework."}
-2025-06-04 01:20:42,975 - INFO -
-==================================================
-2025-06-04 01:20:42,976 - INFO - Stage: match_icd10_code
-2025-06-04 01:20:42,976 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:20:42,977 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical picture is consistent with a severe immunocompromised state and atypical infections, which falls under 'B20: Human immunodeficiency virus [HIV] disease' by exclusion, as none of the other codes relate to disseminated mycobacterial or fungal infections or immunodeficiency; 'B20' is the only infectious disease code available and often encompasses AIDS-defining opportunistic infections in the ICD-10 framework.",
- "error": null
-}
-2025-06-04 01:20:42,977 - INFO - ==================================================
-
-2025-06-04 01:20:42,979 - INFO -
-==================================================
-2025-06-04 01:20:42,980 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:20:42,980 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical picture is consistent with a severe immunocompromised state and atypical infections, which falls under 'B20: Human immunodeficiency virus [HIV] disease' by exclusion, as none of the other codes relate to disseminated mycobacterial or fungal infections or immunodeficiency; 'B20' is the only infectious disease code available and often encompasses AIDS-defining opportunistic infections in the ICD-10 framework.",
- "error": null
-}
-2025-06-04 01:20:42,981 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical picture is consistent with a severe immunocompromised state and atypical infections, which falls under 'B20: Human immunodeficiency virus [HIV] disease' by exclusion, as none of the other codes relate to disseminated mycobacterial or fungal infections or immunodeficiency; 'B20' is the only infectious disease code available and often encompasses AIDS-defining opportunistic infections in the ICD-10 framework.",
- "error": null
-}
-2025-06-04 01:20:42,981 - INFO - ==================================================
-
-2025-06-04 01:20:42,984 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The clinical picture is consistent with a severe immunocompromised state and atypical infections, which falls under 'B20: Human immunodeficiency virus [HIV] disease' by exclusion, as none of the other codes relate to disseminated mycobacterial or fungal infections or immunodeficiency; 'B20' is the only infectious disease code available and often encompasses AIDS-defining opportunistic infections in the ICD-10 framework.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:44,830 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 refers specifically to HIV disease, but there is no evidence or mention of HIV infection in the clinical case; the patient's immunosuppressed state is due to immunosuppressive therapy for rheumatoid arthritis, not HIV."}
-2025-06-04 01:20:44,831 - INFO - Validation result: {'is_valid': False, 'reason': "The code B20 refers specifically to HIV disease, but there is no evidence or mention of HIV infection in the clinical case; the patient's immunosuppressed state is due to immunosuppressive therapy for rheumatoid arthritis, not HIV."}
-2025-06-04 01:20:44,837 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:47,149 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "Z79.4", "rationale": "The patient's persistent symptoms and immunosuppression are due to chronic use of immunosuppressive drugs (methotrexate, prednisone), which is captured by Z79.4 (Long-term [current] use of insulin and other drugs). None of the other listed codes are specific for mycobacterial or fungal infections; Z79.4 is most directly relevant to this patient's immunosuppressed state leading to susceptibility."}
-2025-06-04 01:20:47,152 - INFO -
-==================================================
-2025-06-04 01:20:47,152 - INFO - Stage: match_icd10_code
-2025-06-04 01:20:47,152 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:20:47,153 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "Z79.4",
- "rationale": "The patient's persistent symptoms and immunosuppression are due to chronic use of immunosuppressive drugs (methotrexate, prednisone), which is captured by Z79.4 (Long-term [current] use of insulin and other drugs). None of the other listed codes are specific for mycobacterial or fungal infections; Z79.4 is most directly relevant to this patient's immunosuppressed state leading to susceptibility.",
- "error": null
-}
-2025-06-04 01:20:47,153 - INFO - ==================================================
-
-2025-06-04 01:20:47,156 - INFO -
-==================================================
-2025-06-04 01:20:47,157 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:20:47,157 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "Z79.4",
- "rationale": "The patient's persistent symptoms and immunosuppression are due to chronic use of immunosuppressive drugs (methotrexate, prednisone), which is captured by Z79.4 (Long-term [current] use of insulin and other drugs). None of the other listed codes are specific for mycobacterial or fungal infections; Z79.4 is most directly relevant to this patient's immunosuppressed state leading to susceptibility.",
- "error": null
-}
-2025-06-04 01:20:47,158 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "Z79.4",
- "rationale": "The patient's persistent symptoms and immunosuppression are due to chronic use of immunosuppressive drugs (methotrexate, prednisone), which is captured by Z79.4 (Long-term [current] use of insulin and other drugs). None of the other listed codes are specific for mycobacterial or fungal infections; Z79.4 is most directly relevant to this patient's immunosuppressed state leading to susceptibility.",
- "error": null
-}
-2025-06-04 01:20:47,159 - INFO - ==================================================
-
-2025-06-04 01:20:47,161 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: Z79.4
- Rationale: The patient's persistent symptoms and immunosuppression are due to chronic use of immunosuppressive drugs (methotrexate, prednisone), which is captured by Z79.4 (Long-term [current] use of insulin and other drugs). None of the other listed codes are specific for mycobacterial or fungal infections; Z79.4 is most directly relevant to this patient's immunosuppressed state leading to susceptibility.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:48,609 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": true, "reason": "The code Z79.4 is appropriate because it specifies long-term use of immunosuppressive drugs, which is the underlying factor contributing to the patient's increased risk for disseminated infections."}
-2025-06-04 01:20:48,610 - INFO - Validation result: {'is_valid': True, 'reason': "The code Z79.4 is appropriate because it specifies long-term use of immunosuppressive drugs, which is the underlying factor contributing to the patient's increased risk for disseminated infections."}
-2025-06-04 01:20:48,611 - INFO -
-==================================================
-2025-06-04 01:20:48,611 - INFO - Stage: validate_icd10_clinical_match
-2025-06-04 01:20:48,612 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "Z79.4",
- "rationale": "The patient's persistent symptoms and immunosuppression are due to chronic use of immunosuppressive drugs (methotrexate, prednisone), which is captured by Z79.4 (Long-term [current] use of insulin and other drugs). None of the other listed codes are specific for mycobacterial or fungal infections; Z79.4 is most directly relevant to this patient's immunosuppressed state leading to susceptibility.",
- "error": null
-}
-2025-06-04 01:20:48,612 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "Z79.4",
- "rationale": "The patient's persistent symptoms and immunosuppression are due to chronic use of immunosuppressive drugs (methotrexate, prednisone), which is captured by Z79.4 (Long-term [current] use of insulin and other drugs). None of the other listed codes are specific for mycobacterial or fungal infections; Z79.4 is most directly relevant to this patient's immunosuppressed state leading to susceptibility.",
- "error": null
-}
-2025-06-04 01:20:48,613 - INFO - ==================================================
-
-2025-06-04 01:20:48,615 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 01:20:49,736 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 01:20:49,740 - INFO -
-==================================================
-2025-06-04 01:20:49,741 - INFO - Stage: extract_patient_info
-2025-06-04 01:20:49,741 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "Z79.4",
- "rationale": "The patient's persistent symptoms and immunosuppression are due to chronic use of immunosuppressive drugs (methotrexate, prednisone), which is captured by Z79.4 (Long-term [current] use of insulin and other drugs). None of the other listed codes are specific for mycobacterial or fungal infections; Z79.4 is most directly relevant to this patient's immunosuppressed state leading to susceptibility.",
- "error": null
-}
-2025-06-04 01:20:49,742 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "Z79.4",
- "rationale": "The patient's persistent symptoms and immunosuppression are due to chronic use of immunosuppressive drugs (methotrexate, prednisone), which is captured by Z79.4 (Long-term [current] use of insulin and other drugs). None of the other listed codes are specific for mycobacterial or fungal infections; Z79.4 is most directly relevant to this patient's immunosuppressed state leading to susceptibility.",
- "error": "Failed to extract patient information: 'str' object has no attribute 'content'"
-}
-2025-06-04 01:20:49,743 - INFO - ==================================================
-
-2025-06-04 01:20:49,744 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:51,780 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The clinical scenario involves a patient with suspected disseminated infection (possible mycobacterial or fungal), immunosuppression, and systemic symptoms. Among the listed codes, B20 (HIV disease) is the only infectious disease code, and while not a perfect match, it is closest to a severe immunocompromised state predisposing to such infections, as the other codes pertain to non-infectious or unrelated conditions."}
-2025-06-04 01:20:51,782 - INFO -
-==================================================
-2025-06-04 01:20:51,783 - INFO - Stage: match_icd10_code
-2025-06-04 01:20:51,784 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "Z79.4",
- "rationale": "The patient's persistent symptoms and immunosuppression are due to chronic use of immunosuppressive drugs (methotrexate, prednisone), which is captured by Z79.4 (Long-term [current] use of insulin and other drugs). None of the other listed codes are specific for mycobacterial or fungal infections; Z79.4 is most directly relevant to this patient's immunosuppressed state leading to susceptibility.",
- "error": null
-}
-2025-06-04 01:20:51,784 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical scenario involves a patient with suspected disseminated infection (possible mycobacterial or fungal), immunosuppression, and systemic symptoms. Among the listed codes, B20 (HIV disease) is the only infectious disease code, and while not a perfect match, it is closest to a severe immunocompromised state predisposing to such infections, as the other codes pertain to non-infectious or unrelated conditions.",
- "error": null
-}
-2025-06-04 01:20:51,786 - INFO - ==================================================
-
-2025-06-04 01:20:51,788 - INFO -
-==================================================
-2025-06-04 01:20:51,788 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:20:51,789 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical scenario involves a patient with suspected disseminated infection (possible mycobacterial or fungal), immunosuppression, and systemic symptoms. Among the listed codes, B20 (HIV disease) is the only infectious disease code, and while not a perfect match, it is closest to a severe immunocompromised state predisposing to such infections, as the other codes pertain to non-infectious or unrelated conditions.",
- "error": null
-}
-2025-06-04 01:20:51,789 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical scenario involves a patient with suspected disseminated infection (possible mycobacterial or fungal), immunosuppression, and systemic symptoms. Among the listed codes, B20 (HIV disease) is the only infectious disease code, and while not a perfect match, it is closest to a severe immunocompromised state predisposing to such infections, as the other codes pertain to non-infectious or unrelated conditions.",
- "error": null
-}
-2025-06-04 01:20:51,790 - INFO - ==================================================
-
-2025-06-04 01:20:51,791 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The clinical scenario involves a patient with suspected disseminated infection (possible mycobacterial or fungal), immunosuppression, and systemic symptoms. Among the listed codes, B20 (HIV disease) is the only infectious disease code, and while not a perfect match, it is closest to a severe immunocompromised state predisposing to such infections, as the other codes pertain to non-infectious or unrelated conditions.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:53,227 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 (HIV disease) is not appropriate, as the patient’s immunosuppression is due to medications for rheumatoid arthritis, not HIV infection."}
-2025-06-04 01:20:53,228 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 (HIV disease) is not appropriate, as the patient’s immunosuppression is due to medications for rheumatoid arthritis, not HIV infection.'}
-2025-06-04 01:20:53,232 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:55,246 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient is immunosuppressed and presenting with symptoms suggestive of a disseminated opportunistic infection (e.g., non-tuberculous mycobacteria or histoplasmosis), which are often associated with immunodeficiency states such as HIV/AIDS and covered under ICD-10 code B20 for immunodeficiency with opportunistic infections."}
-2025-06-04 01:20:55,250 - INFO -
-==================================================
-2025-06-04 01:20:55,251 - INFO - Stage: match_icd10_code
-2025-06-04 01:20:55,253 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:20:55,254 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The patient is immunosuppressed and presenting with symptoms suggestive of a disseminated opportunistic infection (e.g., non-tuberculous mycobacteria or histoplasmosis), which are often associated with immunodeficiency states such as HIV/AIDS and covered under ICD-10 code B20 for immunodeficiency with opportunistic infections.",
- "error": null
-}
-2025-06-04 01:20:55,255 - INFO - ==================================================
-
-2025-06-04 01:20:55,257 - INFO -
-==================================================
-2025-06-04 01:20:55,258 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:20:55,259 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The patient is immunosuppressed and presenting with symptoms suggestive of a disseminated opportunistic infection (e.g., non-tuberculous mycobacteria or histoplasmosis), which are often associated with immunodeficiency states such as HIV/AIDS and covered under ICD-10 code B20 for immunodeficiency with opportunistic infections.",
- "error": null
-}
-2025-06-04 01:20:55,259 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The patient is immunosuppressed and presenting with symptoms suggestive of a disseminated opportunistic infection (e.g., non-tuberculous mycobacteria or histoplasmosis), which are often associated with immunodeficiency states such as HIV/AIDS and covered under ICD-10 code B20 for immunodeficiency with opportunistic infections.",
- "error": null
-}
-2025-06-04 01:20:55,260 - INFO - ==================================================
-
-2025-06-04 01:20:55,263 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient is immunosuppressed and presenting with symptoms suggestive of a disseminated opportunistic infection (e.g., non-tuberculous mycobacteria or histoplasmosis), which are often associated with immunodeficiency states such as HIV/AIDS and covered under ICD-10 code B20 for immunodeficiency with opportunistic infections.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:56,873 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is for HIV disease with associated opportunistic infections, but there is no evidence or mention of HIV infection or AIDS in this patient's history; immunosuppression is due to medications for rheumatoid arthritis."}
-2025-06-04 01:20:56,875 - INFO - Validation result: {'is_valid': False, 'reason': "The code B20 is for HIV disease with associated opportunistic infections, but there is no evidence or mention of HIV infection or AIDS in this patient's history; immunosuppression is due to medications for rheumatoid arthritis."}
-2025-06-04 01:20:56,878 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:20:59,705 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "B20 is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases. While the case does not specify HIV infection, B20 is commonly used for immunocompromised states presenting with unusual infections (e.g., disseminated mycobacterial or fungal infections) in ICD-10 coding, particularly when other codes are unrelated. None of the other codes in the list (osteoporosis, medication use, diabetes, hypothyroidism, hyperlipidemia, hypertension, vitamin D deficiency, organ transplant status) fit the clinical scenario as closely as B20 for a patient with immunosuppression and serious opportunistic infection."}
-2025-06-04 01:20:59,708 - INFO -
-==================================================
-2025-06-04 01:20:59,709 - INFO - Stage: match_icd10_code
-2025-06-04 01:20:59,710 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:20:59,711 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases. While the case does not specify HIV infection, B20 is commonly used for immunocompromised states presenting with unusual infections (e.g., disseminated mycobacterial or fungal infections) in ICD-10 coding, particularly when other codes are unrelated. None of the other codes in the list (osteoporosis, medication use, diabetes, hypothyroidism, hyperlipidemia, hypertension, vitamin D deficiency, organ transplant status) fit the clinical scenario as closely as B20 for a patient with immunosuppression and serious opportunistic infection.",
- "error": null
-}
-2025-06-04 01:20:59,711 - INFO - ==================================================
-
-2025-06-04 01:20:59,714 - INFO -
-==================================================
-2025-06-04 01:20:59,715 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:20:59,716 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases. While the case does not specify HIV infection, B20 is commonly used for immunocompromised states presenting with unusual infections (e.g., disseminated mycobacterial or fungal infections) in ICD-10 coding, particularly when other codes are unrelated. None of the other codes in the list (osteoporosis, medication use, diabetes, hypothyroidism, hyperlipidemia, hypertension, vitamin D deficiency, organ transplant status) fit the clinical scenario as closely as B20 for a patient with immunosuppression and serious opportunistic infection.",
- "error": null
-}
-2025-06-04 01:20:59,717 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases. While the case does not specify HIV infection, B20 is commonly used for immunocompromised states presenting with unusual infections (e.g., disseminated mycobacterial or fungal infections) in ICD-10 coding, particularly when other codes are unrelated. None of the other codes in the list (osteoporosis, medication use, diabetes, hypothyroidism, hyperlipidemia, hypertension, vitamin D deficiency, organ transplant status) fit the clinical scenario as closely as B20 for a patient with immunosuppression and serious opportunistic infection.",
- "error": null
-}
-2025-06-04 01:20:59,717 - INFO - ==================================================
-
-2025-06-04 01:20:59,719 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: B20 is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases. While the case does not specify HIV infection, B20 is commonly used for immunocompromised states presenting with unusual infections (e.g., disseminated mycobacterial or fungal infections) in ICD-10 coding, particularly when other codes are unrelated. None of the other codes in the list (osteoporosis, medication use, diabetes, hypothyroidism, hyperlipidemia, hypertension, vitamin D deficiency, organ transplant status) fit the clinical scenario as closely as B20 for a patient with immunosuppression and serious opportunistic infection.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:21:01,565 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "B20 is specifically for HIV disease, but this patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV, so B20 is not appropriate."}
-2025-06-04 01:21:01,568 - INFO - Validation result: {'is_valid': False, 'reason': 'B20 is specifically for HIV disease, but this patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV, so B20 is not appropriate.'}
-2025-06-04 01:21:01,573 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:21:04,050 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The clinical scenario describes immunosuppression, systemic symptoms, and opportunistic infection considerations (disseminated mycobacterial infection or histoplasmosis). Of the provided codes, B20 represents HIV disease causing infectious and parasitic diseases, the most closely matching code for immunocompromised states with complex infections. Although the patient has rheumatoid arthritis and is immunosuppressed due to medication and there is no documentation of HIV, none of the other codes reflect disseminated infection or immunosuppression; B20 is the most appropriate fit from the list."}
-2025-06-04 01:21:04,053 - INFO -
-==================================================
-2025-06-04 01:21:04,054 - INFO - Stage: match_icd10_code
-2025-06-04 01:21:04,055 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:21:04,056 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes immunosuppression, systemic symptoms, and opportunistic infection considerations (disseminated mycobacterial infection or histoplasmosis). Of the provided codes, B20 represents HIV disease causing infectious and parasitic diseases, the most closely matching code for immunocompromised states with complex infections. Although the patient has rheumatoid arthritis and is immunosuppressed due to medication and there is no documentation of HIV, none of the other codes reflect disseminated infection or immunosuppression; B20 is the most appropriate fit from the list.",
- "error": null
-}
-2025-06-04 01:21:04,057 - INFO - ==================================================
-
-2025-06-04 01:21:04,060 - INFO -
-==================================================
-2025-06-04 01:21:04,061 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:21:04,063 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes immunosuppression, systemic symptoms, and opportunistic infection considerations (disseminated mycobacterial infection or histoplasmosis). Of the provided codes, B20 represents HIV disease causing infectious and parasitic diseases, the most closely matching code for immunocompromised states with complex infections. Although the patient has rheumatoid arthritis and is immunosuppressed due to medication and there is no documentation of HIV, none of the other codes reflect disseminated infection or immunosuppression; B20 is the most appropriate fit from the list.",
- "error": null
-}
-2025-06-04 01:21:04,063 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes immunosuppression, systemic symptoms, and opportunistic infection considerations (disseminated mycobacterial infection or histoplasmosis). Of the provided codes, B20 represents HIV disease causing infectious and parasitic diseases, the most closely matching code for immunocompromised states with complex infections. Although the patient has rheumatoid arthritis and is immunosuppressed due to medication and there is no documentation of HIV, none of the other codes reflect disseminated infection or immunosuppression; B20 is the most appropriate fit from the list.",
- "error": null
-}
-2025-06-04 01:21:04,064 - INFO - ==================================================
-
-2025-06-04 01:21:04,066 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The clinical scenario describes immunosuppression, systemic symptoms, and opportunistic infection considerations (disseminated mycobacterial infection or histoplasmosis). Of the provided codes, B20 represents HIV disease causing infectious and parasitic diseases, the most closely matching code for immunocompromised states with complex infections. Although the patient has rheumatoid arthritis and is immunosuppressed due to medication and there is no documentation of HIV, none of the other codes reflect disseminated infection or immunosuppression; B20 is the most appropriate fit from the list.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:21:05,627 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 specifies HIV disease causing infections, but there is no evidence of HIV in this patient. The immunosuppression is due to medication, not HIV."}
-2025-06-04 01:21:05,627 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 specifies HIV disease causing infections, but there is no evidence of HIV in this patient. The immunosuppression is due to medication, not HIV.'}
-2025-06-04 01:21:05,629 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: None
- Patient Gender: None
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:27:17,784 - INFO -
-==================================================
-2025-06-04 01:27:17,786 - INFO - Starting new clinical case processing
-2025-06-04 01:27:17,786 - INFO - Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
-2025-06-04 01:27:17,787 - INFO - Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-2025-06-04 01:27:17,787 - INFO - ==================================================
-
-2025-06-04 01:27:17,795 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 01:27:19,033 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 01:27:19,037 - INFO -
-==================================================
-2025-06-04 01:27:19,037 - INFO - Stage: extract_patient_info
-2025-06-04 01:27:19,037 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:27:19,038 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:27:19,038 - INFO - ==================================================
-
-2025-06-04 01:27:19,042 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:27:21,219 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The most appropriate code from the provided list is B20, which is used for HIV disease resulting in infectious and parasitic diseases. While the case does not explicitly mention HIV, B20 is the only code that covers disseminated infectious processes such as mycobacterial or fungal infections in immunocompromised patients, and none of the other listed codes are relevant to infectious etiologies. This matches the clinical suspicion of disseminated non-tuberculous mycobacteria or histoplasmosis in an immunosuppressed host."}
-2025-06-04 01:27:21,220 - INFO -
-==================================================
-2025-06-04 01:27:21,221 - INFO - Stage: match_icd10_code
-2025-06-04 01:27:21,221 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:27:21,223 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The most appropriate code from the provided list is B20, which is used for HIV disease resulting in infectious and parasitic diseases. While the case does not explicitly mention HIV, B20 is the only code that covers disseminated infectious processes such as mycobacterial or fungal infections in immunocompromised patients, and none of the other listed codes are relevant to infectious etiologies. This matches the clinical suspicion of disseminated non-tuberculous mycobacteria or histoplasmosis in an immunosuppressed host.",
- "error": null
-}
-2025-06-04 01:27:21,223 - INFO - ==================================================
-
-2025-06-04 01:27:21,225 - INFO -
-==================================================
-2025-06-04 01:27:21,225 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:27:21,226 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The most appropriate code from the provided list is B20, which is used for HIV disease resulting in infectious and parasitic diseases. While the case does not explicitly mention HIV, B20 is the only code that covers disseminated infectious processes such as mycobacterial or fungal infections in immunocompromised patients, and none of the other listed codes are relevant to infectious etiologies. This matches the clinical suspicion of disseminated non-tuberculous mycobacteria or histoplasmosis in an immunosuppressed host.",
- "error": null
-}
-2025-06-04 01:27:21,226 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The most appropriate code from the provided list is B20, which is used for HIV disease resulting in infectious and parasitic diseases. While the case does not explicitly mention HIV, B20 is the only code that covers disseminated infectious processes such as mycobacterial or fungal infections in immunocompromised patients, and none of the other listed codes are relevant to infectious etiologies. This matches the clinical suspicion of disseminated non-tuberculous mycobacteria or histoplasmosis in an immunosuppressed host.",
- "error": null
-}
-2025-06-04 01:27:21,227 - INFO - ==================================================
-
-2025-06-04 01:27:21,228 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The most appropriate code from the provided list is B20, which is used for HIV disease resulting in infectious and parasitic diseases. While the case does not explicitly mention HIV, B20 is the only code that covers disseminated infectious processes such as mycobacterial or fungal infections in immunocompromised patients, and none of the other listed codes are relevant to infectious etiologies. This matches the clinical suspicion of disseminated non-tuberculous mycobacteria or histoplasmosis in an immunosuppressed host.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:27:22,749 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease causing infections; the case does not mention HIV, so B20 is inappropriate for this immunosuppressed, non-HIV patient."}
-2025-06-04 01:27:22,750 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease causing infections; the case does not mention HIV, so B20 is inappropriate for this immunosuppressed, non-HIV patient.'}
-2025-06-04 01:27:22,753 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:27:24,646 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "Z79.4", "rationale": "The patient has rheumatoid arthritis and is currently on long-term low-dose prednisone therapy, which is an immunosuppressive corticosteroid. Z79.4 denotes long-term (current) use of corticosteroids and is the most appropriate code from the provided list for billing and clinical documentation, given the immunosuppression-related infectious concerns described in the case."}
-2025-06-04 01:27:24,647 - INFO -
-==================================================
-2025-06-04 01:27:24,648 - INFO - Stage: match_icd10_code
-2025-06-04 01:27:24,648 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:27:24,649 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient has rheumatoid arthritis and is currently on long-term low-dose prednisone therapy, which is an immunosuppressive corticosteroid. Z79.4 denotes long-term (current) use of corticosteroids and is the most appropriate code from the provided list for billing and clinical documentation, given the immunosuppression-related infectious concerns described in the case.",
- "error": null
-}
-2025-06-04 01:27:24,649 - INFO - ==================================================
-
-2025-06-04 01:27:24,651 - INFO -
-==================================================
-2025-06-04 01:27:24,652 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:27:24,652 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient has rheumatoid arthritis and is currently on long-term low-dose prednisone therapy, which is an immunosuppressive corticosteroid. Z79.4 denotes long-term (current) use of corticosteroids and is the most appropriate code from the provided list for billing and clinical documentation, given the immunosuppression-related infectious concerns described in the case.",
- "error": null
-}
-2025-06-04 01:27:24,653 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient has rheumatoid arthritis and is currently on long-term low-dose prednisone therapy, which is an immunosuppressive corticosteroid. Z79.4 denotes long-term (current) use of corticosteroids and is the most appropriate code from the provided list for billing and clinical documentation, given the immunosuppression-related infectious concerns described in the case.",
- "error": null
-}
-2025-06-04 01:27:24,653 - INFO - ==================================================
-
-2025-06-04 01:27:24,655 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: Z79.4
- Rationale: The patient has rheumatoid arthritis and is currently on long-term low-dose prednisone therapy, which is an immunosuppressive corticosteroid. Z79.4 denotes long-term (current) use of corticosteroids and is the most appropriate code from the provided list for billing and clinical documentation, given the immunosuppression-related infectious concerns described in the case.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:27:26,133 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": true, "reason": "The code Z79.4 is appropriate because the patient is on long-term corticosteroid therapy with prednisone, which is relevant to her immunosuppressed status and risk for atypical infections."}
-2025-06-04 01:27:26,134 - INFO - Validation result: {'is_valid': True, 'reason': 'The code Z79.4 is appropriate because the patient is on long-term corticosteroid therapy with prednisone, which is relevant to her immunosuppressed status and risk for atypical infections.'}
-2025-06-04 01:27:26,136 - INFO -
-==================================================
-2025-06-04 01:27:26,137 - INFO - Stage: validate_icd10_clinical_match
-2025-06-04 01:27:26,138 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient has rheumatoid arthritis and is currently on long-term low-dose prednisone therapy, which is an immunosuppressive corticosteroid. Z79.4 denotes long-term (current) use of corticosteroids and is the most appropriate code from the provided list for billing and clinical documentation, given the immunosuppression-related infectious concerns described in the case.",
- "error": null
-}
-2025-06-04 01:27:26,138 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient has rheumatoid arthritis and is currently on long-term low-dose prednisone therapy, which is an immunosuppressive corticosteroid. Z79.4 denotes long-term (current) use of corticosteroids and is the most appropriate code from the provided list for billing and clinical documentation, given the immunosuppression-related infectious concerns described in the case.",
- "error": null
-}
-2025-06-04 01:27:26,139 - INFO - ==================================================
-
-2025-06-04 01:27:26,141 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 01:27:27,300 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 01:27:27,302 - INFO -
-==================================================
-2025-06-04 01:27:27,303 - INFO - Stage: extract_patient_info
-2025-06-04 01:27:27,304 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient has rheumatoid arthritis and is currently on long-term low-dose prednisone therapy, which is an immunosuppressive corticosteroid. Z79.4 denotes long-term (current) use of corticosteroids and is the most appropriate code from the provided list for billing and clinical documentation, given the immunosuppression-related infectious concerns described in the case.",
- "error": null
-}
-2025-06-04 01:27:27,305 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient has rheumatoid arthritis and is currently on long-term low-dose prednisone therapy, which is an immunosuppressive corticosteroid. Z79.4 denotes long-term (current) use of corticosteroids and is the most appropriate code from the provided list for billing and clinical documentation, given the immunosuppression-related infectious concerns described in the case.",
- "error": null
-}
-2025-06-04 01:27:27,306 - INFO - ==================================================
-
-2025-06-04 01:27:27,309 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:27:29,719 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's immunosuppressed state and prolonged systemic symptoms with concern for atypical infections (e.g., disseminated mycobacterial or fungal infections) align with opportunistic infections typically seen in HIV disease, which is what code B20 (HIV disease resulting in infectious and parasitic diseases) encompasses. While HIV is not confirmed in the case, this is the most applicable code from the provided options, as none directly specify mycobacterial or fungal infections nor immunosuppression due to other causes."}
-2025-06-04 01:27:29,723 - INFO -
-==================================================
-2025-06-04 01:27:29,724 - INFO - Stage: match_icd10_code
-2025-06-04 01:27:29,725 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient has rheumatoid arthritis and is currently on long-term low-dose prednisone therapy, which is an immunosuppressive corticosteroid. Z79.4 denotes long-term (current) use of corticosteroids and is the most appropriate code from the provided list for billing and clinical documentation, given the immunosuppression-related infectious concerns described in the case.",
- "error": null
-}
-2025-06-04 01:27:29,726 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's immunosuppressed state and prolonged systemic symptoms with concern for atypical infections (e.g., disseminated mycobacterial or fungal infections) align with opportunistic infections typically seen in HIV disease, which is what code B20 (HIV disease resulting in infectious and parasitic diseases) encompasses. While HIV is not confirmed in the case, this is the most applicable code from the provided options, as none directly specify mycobacterial or fungal infections nor immunosuppression due to other causes.",
- "error": null
-}
-2025-06-04 01:27:29,727 - INFO - ==================================================
-
-2025-06-04 01:27:29,731 - INFO -
-==================================================
-2025-06-04 01:27:29,732 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:27:29,732 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's immunosuppressed state and prolonged systemic symptoms with concern for atypical infections (e.g., disseminated mycobacterial or fungal infections) align with opportunistic infections typically seen in HIV disease, which is what code B20 (HIV disease resulting in infectious and parasitic diseases) encompasses. While HIV is not confirmed in the case, this is the most applicable code from the provided options, as none directly specify mycobacterial or fungal infections nor immunosuppression due to other causes.",
- "error": null
-}
-2025-06-04 01:27:29,733 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's immunosuppressed state and prolonged systemic symptoms with concern for atypical infections (e.g., disseminated mycobacterial or fungal infections) align with opportunistic infections typically seen in HIV disease, which is what code B20 (HIV disease resulting in infectious and parasitic diseases) encompasses. While HIV is not confirmed in the case, this is the most applicable code from the provided options, as none directly specify mycobacterial or fungal infections nor immunosuppression due to other causes.",
- "error": null
-}
-2025-06-04 01:27:29,734 - INFO - ==================================================
-
-2025-06-04 01:27:29,737 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's immunosuppressed state and prolonged systemic symptoms with concern for atypical infections (e.g., disseminated mycobacterial or fungal infections) align with opportunistic infections typically seen in HIV disease, which is what code B20 (HIV disease resulting in infectious and parasitic diseases) encompasses. While HIV is not confirmed in the case, this is the most applicable code from the provided options, as none directly specify mycobacterial or fungal infections nor immunosuppression due to other causes.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:27:31,343 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 requires a confirmed diagnosis of HIV infection, which is not present in this case. The patient's immunosuppression is due to methotrexate and prednisone for rheumatoid arthritis, not HIV disease."}
-2025-06-04 01:27:31,344 - INFO - Validation result: {'is_valid': False, 'reason': "The code B20 requires a confirmed diagnosis of HIV infection, which is not present in this case. The patient's immunosuppression is due to methotrexate and prednisone for rheumatoid arthritis, not HIV disease."}
-2025-06-04 01:27:31,346 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:27:33,568 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "B20 is the ICD-10 code for HIV disease, which can be associated with opportunistic infections like disseminated mycobacterial or atypical fungal infections, as described in the clinical scenario. While the patient does not have a confirmed HIV diagnosis, this is the only code among the options that relates to immunosuppression and infections of this nature; the others correspond to unrelated conditions such as osteoporosis, diabetes, hypothyroidism, or hypertension."}
-2025-06-04 01:27:33,570 - INFO -
-==================================================
-2025-06-04 01:27:33,571 - INFO - Stage: match_icd10_code
-2025-06-04 01:27:33,571 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:27:33,571 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease, which can be associated with opportunistic infections like disseminated mycobacterial or atypical fungal infections, as described in the clinical scenario. While the patient does not have a confirmed HIV diagnosis, this is the only code among the options that relates to immunosuppression and infections of this nature; the others correspond to unrelated conditions such as osteoporosis, diabetes, hypothyroidism, or hypertension.",
- "error": null
-}
-2025-06-04 01:27:33,572 - INFO - ==================================================
-
-2025-06-04 01:27:33,574 - INFO -
-==================================================
-2025-06-04 01:27:33,574 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:27:33,575 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease, which can be associated with opportunistic infections like disseminated mycobacterial or atypical fungal infections, as described in the clinical scenario. While the patient does not have a confirmed HIV diagnosis, this is the only code among the options that relates to immunosuppression and infections of this nature; the others correspond to unrelated conditions such as osteoporosis, diabetes, hypothyroidism, or hypertension.",
- "error": null
-}
-2025-06-04 01:27:33,575 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease, which can be associated with opportunistic infections like disseminated mycobacterial or atypical fungal infections, as described in the clinical scenario. While the patient does not have a confirmed HIV diagnosis, this is the only code among the options that relates to immunosuppression and infections of this nature; the others correspond to unrelated conditions such as osteoporosis, diabetes, hypothyroidism, or hypertension.",
- "error": null
-}
-2025-06-04 01:27:33,576 - INFO - ==================================================
-
-2025-06-04 01:27:33,578 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: B20 is the ICD-10 code for HIV disease, which can be associated with opportunistic infections like disseminated mycobacterial or atypical fungal infections, as described in the clinical scenario. While the patient does not have a confirmed HIV diagnosis, this is the only code among the options that relates to immunosuppression and infections of this nature; the others correspond to unrelated conditions such as osteoporosis, diabetes, hypothyroidism, or hypertension.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:27:35,367 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is for confirmed HIV infection, but the patient has no clinical or laboratory evidence of HIV; her immunosuppression is due to RA treatment. B20 is not appropriate for this case."}
-2025-06-04 01:27:35,367 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is for confirmed HIV infection, but the patient has no clinical or laboratory evidence of HIV; her immunosuppression is due to RA treatment. B20 is not appropriate for this case.'}
-2025-06-04 01:27:35,370 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:27:37,598 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's persistent fevers, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions while on immunosuppression are most concerning for a systemic opportunistic infection. While B20 specifically denotes HIV disease with infectious or parasitic complications, it is the closest available code among those provided that pertains to disseminated infectious processes in immunocompromised hosts. The other codes do not reflect infectious or immunodeficiency-related diagnoses."}
-2025-06-04 01:27:37,600 - INFO -
-==================================================
-2025-06-04 01:27:37,601 - INFO - Stage: match_icd10_code
-2025-06-04 01:27:37,601 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:27:37,602 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's persistent fevers, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions while on immunosuppression are most concerning for a systemic opportunistic infection. While B20 specifically denotes HIV disease with infectious or parasitic complications, it is the closest available code among those provided that pertains to disseminated infectious processes in immunocompromised hosts. The other codes do not reflect infectious or immunodeficiency-related diagnoses.",
- "error": null
-}
-2025-06-04 01:27:37,604 - INFO - ==================================================
-
-2025-06-04 01:27:37,607 - INFO -
-==================================================
-2025-06-04 01:27:37,607 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:27:37,608 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's persistent fevers, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions while on immunosuppression are most concerning for a systemic opportunistic infection. While B20 specifically denotes HIV disease with infectious or parasitic complications, it is the closest available code among those provided that pertains to disseminated infectious processes in immunocompromised hosts. The other codes do not reflect infectious or immunodeficiency-related diagnoses.",
- "error": null
-}
-2025-06-04 01:27:37,609 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's persistent fevers, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions while on immunosuppression are most concerning for a systemic opportunistic infection. While B20 specifically denotes HIV disease with infectious or parasitic complications, it is the closest available code among those provided that pertains to disseminated infectious processes in immunocompromised hosts. The other codes do not reflect infectious or immunodeficiency-related diagnoses.",
- "error": null
-}
-2025-06-04 01:27:37,609 - INFO - ==================================================
-
-2025-06-04 01:27:37,612 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's persistent fevers, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions while on immunosuppression are most concerning for a systemic opportunistic infection. While B20 specifically denotes HIV disease with infectious or parasitic complications, it is the closest available code among those provided that pertains to disseminated infectious processes in immunocompromised hosts. The other codes do not reflect infectious or immunodeficiency-related diagnoses.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:27:39,270 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 specifically refers to HIV disease with associated infectious or parasitic complications, but this patient has no history or evidence of HIV; the presenting immunosuppression is due to methotrexate and prednisone for rheumatoid arthritis."}
-2025-06-04 01:27:39,271 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 specifically refers to HIV disease with associated infectious or parasitic complications, but this patient has no history or evidence of HIV; the presenting immunosuppression is due to methotrexate and prednisone for rheumatoid arthritis.'}
-2025-06-04 01:27:39,274 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:27:41,956 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "Z79.4", "rationale": "This patient with rheumatoid arthritis is on long-term immunosuppressive therapy (methotrexate and low-dose prednisone), making her more susceptible to infections like disseminated mycobacterial or fungal disease. Z79.4 denotes 'Long term (current) use of corticosteroids', which explains her immunosuppressed status and associated infectious risk seen in the clinical presentation."}
-2025-06-04 01:27:41,960 - INFO -
-==================================================
-2025-06-04 01:27:41,961 - INFO - Stage: match_icd10_code
-2025-06-04 01:27:41,961 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:27:41,962 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This patient with rheumatoid arthritis is on long-term immunosuppressive therapy (methotrexate and low-dose prednisone), making her more susceptible to infections like disseminated mycobacterial or fungal disease. Z79.4 denotes 'Long term (current) use of corticosteroids', which explains her immunosuppressed status and associated infectious risk seen in the clinical presentation.",
- "error": null
-}
-2025-06-04 01:27:41,963 - INFO - ==================================================
-
-2025-06-04 01:27:41,965 - INFO -
-==================================================
-2025-06-04 01:27:41,966 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:27:41,967 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This patient with rheumatoid arthritis is on long-term immunosuppressive therapy (methotrexate and low-dose prednisone), making her more susceptible to infections like disseminated mycobacterial or fungal disease. Z79.4 denotes 'Long term (current) use of corticosteroids', which explains her immunosuppressed status and associated infectious risk seen in the clinical presentation.",
- "error": null
-}
-2025-06-04 01:27:41,967 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This patient with rheumatoid arthritis is on long-term immunosuppressive therapy (methotrexate and low-dose prednisone), making her more susceptible to infections like disseminated mycobacterial or fungal disease. Z79.4 denotes 'Long term (current) use of corticosteroids', which explains her immunosuppressed status and associated infectious risk seen in the clinical presentation.",
- "error": null
-}
-2025-06-04 01:27:41,968 - INFO - ==================================================
-
-2025-06-04 01:27:41,971 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: Z79.4
- Rationale: This patient with rheumatoid arthritis is on long-term immunosuppressive therapy (methotrexate and low-dose prednisone), making her more susceptible to infections like disseminated mycobacterial or fungal disease. Z79.4 denotes 'Long term (current) use of corticosteroids', which explains her immunosuppressed status and associated infectious risk seen in the clinical presentation.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:27:43,623 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": true, "reason": "The code Z79.4 is appropriate since the patient is on long-term corticosteroid therapy (prednisone), which is relevant to her immunosuppressed state and increased risk for infections."}
-2025-06-04 01:27:43,624 - INFO - Validation result: {'is_valid': True, 'reason': 'The code Z79.4 is appropriate since the patient is on long-term corticosteroid therapy (prednisone), which is relevant to her immunosuppressed state and increased risk for infections.'}
-2025-06-04 01:27:43,626 - INFO -
-==================================================
-2025-06-04 01:27:43,627 - INFO - Stage: validate_icd10_clinical_match
-2025-06-04 01:27:43,628 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This patient with rheumatoid arthritis is on long-term immunosuppressive therapy (methotrexate and low-dose prednisone), making her more susceptible to infections like disseminated mycobacterial or fungal disease. Z79.4 denotes 'Long term (current) use of corticosteroids', which explains her immunosuppressed status and associated infectious risk seen in the clinical presentation.",
- "error": null
-}
-2025-06-04 01:27:43,629 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This patient with rheumatoid arthritis is on long-term immunosuppressive therapy (methotrexate and low-dose prednisone), making her more susceptible to infections like disseminated mycobacterial or fungal disease. Z79.4 denotes 'Long term (current) use of corticosteroids', which explains her immunosuppressed status and associated infectious risk seen in the clinical presentation.",
- "error": null
-}
-2025-06-04 01:27:43,629 - INFO - ==================================================
-
-2025-06-04 01:27:43,631 - INFO -
-==================================================
-2025-06-04 01:27:43,631 - INFO - Final Result:
-2025-06-04 01:27:43,632 - INFO - {
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This patient with rheumatoid arthritis is on long-term immunosuppressive therapy (methotrexate and low-dose prednisone), making her more susceptible to infections like disseminated mycobacterial or fungal disease. Z79.4 denotes 'Long term (current) use of corticosteroids', which explains her immunosuppressed status and associated infectious risk seen in the clinical presentation.",
- "error": null
-}
-2025-06-04 01:27:43,632 - INFO - ==================================================
-
-2025-06-04 01:28:54,600 - INFO -
-==================================================
-2025-06-04 01:28:54,607 - INFO - Starting new clinical case processing
-2025-06-04 01:28:54,609 - INFO - Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
-2025-06-04 01:28:54,610 - INFO - Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-2025-06-04 01:28:54,610 - INFO - ==================================================
-
-2025-06-04 01:28:54,624 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 01:28:55,762 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 01:28:55,765 - INFO -
-==================================================
-2025-06-04 01:28:55,766 - INFO - Stage: extract_patient_info
-2025-06-04 01:28:55,766 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:28:55,767 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:28:55,767 - INFO - ==================================================
-
-2025-06-04 01:28:55,769 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:28:58,691 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The clinical scenario describes a patient with immunosuppression and symptoms/signs suggestive of a possible opportunistic infection such as disseminated mycobacterial or fungal disease. ICD-10 code B20 refers to HIV disease resulting in infectious and parasitic diseases, including opportunistic infections, and while the patient is not explicitly stated to have HIV, this is the most closely related code for severe opportunistic infections among those provided. None of the other codes pertain to disseminated mycobacterial or fungal infections."}
-2025-06-04 01:28:58,692 - INFO -
-==================================================
-2025-06-04 01:28:58,693 - INFO - Stage: match_icd10_code
-2025-06-04 01:28:58,694 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:28:58,695 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes a patient with immunosuppression and symptoms/signs suggestive of a possible opportunistic infection such as disseminated mycobacterial or fungal disease. ICD-10 code B20 refers to HIV disease resulting in infectious and parasitic diseases, including opportunistic infections, and while the patient is not explicitly stated to have HIV, this is the most closely related code for severe opportunistic infections among those provided. None of the other codes pertain to disseminated mycobacterial or fungal infections.",
- "error": null
-}
-2025-06-04 01:28:58,696 - INFO - ==================================================
-
-2025-06-04 01:28:58,697 - INFO -
-==================================================
-2025-06-04 01:28:58,698 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:28:58,699 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes a patient with immunosuppression and symptoms/signs suggestive of a possible opportunistic infection such as disseminated mycobacterial or fungal disease. ICD-10 code B20 refers to HIV disease resulting in infectious and parasitic diseases, including opportunistic infections, and while the patient is not explicitly stated to have HIV, this is the most closely related code for severe opportunistic infections among those provided. None of the other codes pertain to disseminated mycobacterial or fungal infections.",
- "error": null
-}
-2025-06-04 01:28:58,701 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes a patient with immunosuppression and symptoms/signs suggestive of a possible opportunistic infection such as disseminated mycobacterial or fungal disease. ICD-10 code B20 refers to HIV disease resulting in infectious and parasitic diseases, including opportunistic infections, and while the patient is not explicitly stated to have HIV, this is the most closely related code for severe opportunistic infections among those provided. None of the other codes pertain to disseminated mycobacterial or fungal infections.",
- "error": null
-}
-2025-06-04 01:28:58,702 - INFO - ==================================================
-
-2025-06-04 01:28:58,703 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The clinical scenario describes a patient with immunosuppression and symptoms/signs suggestive of a possible opportunistic infection such as disseminated mycobacterial or fungal disease. ICD-10 code B20 refers to HIV disease resulting in infectious and parasitic diseases, including opportunistic infections, and while the patient is not explicitly stated to have HIV, this is the most closely related code for severe opportunistic infections among those provided. None of the other codes pertain to disseminated mycobacterial or fungal infections.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:00,374 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "B20 is specific for HIV disease resulting in infectious and parasitic diseases; the patient has immunosuppression due to immunosuppressive therapy for rheumatoid arthritis, not HIV, so this code is inappropriate."}
-2025-06-04 01:29:00,376 - INFO - Validation result: {'is_valid': False, 'reason': 'B20 is specific for HIV disease resulting in infectious and parasitic diseases; the patient has immunosuppression due to immunosuppressive therapy for rheumatoid arthritis, not HIV, so this code is inappropriate.'}
-2025-06-04 01:29:00,378 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:03,132 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation is consistent with a possible opportunistic disseminated infection in the setting of immunosuppression. ICD-10 code B20 covers human immunodeficiency virus [HIV] disease resulting in infectious and parasitic diseases, but it is also commonly used for serious systemic opportunistic infections in immunosuppressed patients when more specific codes are unavailable. None of the other codes on the list relate to disseminated mycobacterial or fungal infections, and B20 is the closest fit to the clinical scenario."}
-2025-06-04 01:29:03,137 - INFO -
-==================================================
-2025-06-04 01:29:03,137 - INFO - Stage: match_icd10_code
-2025-06-04 01:29:03,138 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:29:03,138 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is consistent with a possible opportunistic disseminated infection in the setting of immunosuppression. ICD-10 code B20 covers human immunodeficiency virus [HIV] disease resulting in infectious and parasitic diseases, but it is also commonly used for serious systemic opportunistic infections in immunosuppressed patients when more specific codes are unavailable. None of the other codes on the list relate to disseminated mycobacterial or fungal infections, and B20 is the closest fit to the clinical scenario.",
- "error": null
-}
-2025-06-04 01:29:03,139 - INFO - ==================================================
-
-2025-06-04 01:29:03,142 - INFO -
-==================================================
-2025-06-04 01:29:03,143 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:29:03,144 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is consistent with a possible opportunistic disseminated infection in the setting of immunosuppression. ICD-10 code B20 covers human immunodeficiency virus [HIV] disease resulting in infectious and parasitic diseases, but it is also commonly used for serious systemic opportunistic infections in immunosuppressed patients when more specific codes are unavailable. None of the other codes on the list relate to disseminated mycobacterial or fungal infections, and B20 is the closest fit to the clinical scenario.",
- "error": null
-}
-2025-06-04 01:29:03,144 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is consistent with a possible opportunistic disseminated infection in the setting of immunosuppression. ICD-10 code B20 covers human immunodeficiency virus [HIV] disease resulting in infectious and parasitic diseases, but it is also commonly used for serious systemic opportunistic infections in immunosuppressed patients when more specific codes are unavailable. None of the other codes on the list relate to disseminated mycobacterial or fungal infections, and B20 is the closest fit to the clinical scenario.",
- "error": null
-}
-2025-06-04 01:29:03,145 - INFO - ==================================================
-
-2025-06-04 01:29:03,147 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation is consistent with a possible opportunistic disseminated infection in the setting of immunosuppression. ICD-10 code B20 covers human immunodeficiency virus [HIV] disease resulting in infectious and parasitic diseases, but it is also commonly used for serious systemic opportunistic infections in immunosuppressed patients when more specific codes are unavailable. None of the other codes on the list relate to disseminated mycobacterial or fungal infections, and B20 is the closest fit to the clinical scenario.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:04,639 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease with associated infections; the patient has immunosuppression from rheumatoid arthritis treatment but no evidence or mention of HIV infection."}
-2025-06-04 01:29:04,640 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease with associated infections; the patient has immunosuppression from rheumatoid arthritis treatment but no evidence or mention of HIV infection.'}
-2025-06-04 01:29:04,644 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:07,589 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The case describes an immunosuppressed patient (on methotrexate and prednisone for rheumatoid arthritis) with systemic symptoms and imaging findings highly suggestive of an opportunistic infection (disseminated non-tuberculous mycobacteria vs. histoplasmosis). Of the codes provided, B20 (HIV disease) is the most appropriate to capture an opportunistic infectious process, as there are no codes specifically for disseminated mycobacterial or fungal diseases among the options; while the patient is not documented to have HIV, B20 is conventionally used for opportunistic infections in the absence of a more specific code from the provided list."}
-2025-06-04 01:29:07,591 - INFO -
-==================================================
-2025-06-04 01:29:07,591 - INFO - Stage: match_icd10_code
-2025-06-04 01:29:07,592 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:29:07,593 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The case describes an immunosuppressed patient (on methotrexate and prednisone for rheumatoid arthritis) with systemic symptoms and imaging findings highly suggestive of an opportunistic infection (disseminated non-tuberculous mycobacteria vs. histoplasmosis). Of the codes provided, B20 (HIV disease) is the most appropriate to capture an opportunistic infectious process, as there are no codes specifically for disseminated mycobacterial or fungal diseases among the options; while the patient is not documented to have HIV, B20 is conventionally used for opportunistic infections in the absence of a more specific code from the provided list.",
- "error": null
-}
-2025-06-04 01:29:07,594 - INFO - ==================================================
-
-2025-06-04 01:29:07,596 - INFO -
-==================================================
-2025-06-04 01:29:07,597 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:29:07,598 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The case describes an immunosuppressed patient (on methotrexate and prednisone for rheumatoid arthritis) with systemic symptoms and imaging findings highly suggestive of an opportunistic infection (disseminated non-tuberculous mycobacteria vs. histoplasmosis). Of the codes provided, B20 (HIV disease) is the most appropriate to capture an opportunistic infectious process, as there are no codes specifically for disseminated mycobacterial or fungal diseases among the options; while the patient is not documented to have HIV, B20 is conventionally used for opportunistic infections in the absence of a more specific code from the provided list.",
- "error": null
-}
-2025-06-04 01:29:07,599 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The case describes an immunosuppressed patient (on methotrexate and prednisone for rheumatoid arthritis) with systemic symptoms and imaging findings highly suggestive of an opportunistic infection (disseminated non-tuberculous mycobacteria vs. histoplasmosis). Of the codes provided, B20 (HIV disease) is the most appropriate to capture an opportunistic infectious process, as there are no codes specifically for disseminated mycobacterial or fungal diseases among the options; while the patient is not documented to have HIV, B20 is conventionally used for opportunistic infections in the absence of a more specific code from the provided list.",
- "error": null
-}
-2025-06-04 01:29:07,600 - INFO - ==================================================
-
-2025-06-04 01:29:07,603 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The case describes an immunosuppressed patient (on methotrexate and prednisone for rheumatoid arthritis) with systemic symptoms and imaging findings highly suggestive of an opportunistic infection (disseminated non-tuberculous mycobacteria vs. histoplasmosis). Of the codes provided, B20 (HIV disease) is the most appropriate to capture an opportunistic infectious process, as there are no codes specifically for disseminated mycobacterial or fungal diseases among the options; while the patient is not documented to have HIV, B20 is conventionally used for opportunistic infections in the absence of a more specific code from the provided list.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:09,811 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease, but the patient is immunosuppressed due to immunosuppressive therapy for rheumatoid arthritis, not HIV. None of the provided codes specifically represent disseminated mycobacterial or fungal infection in this immunosuppressed patient."}
-2025-06-04 01:29:09,812 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease, but the patient is immunosuppressed due to immunosuppressive therapy for rheumatoid arthritis, not HIV. None of the provided codes specifically represent disseminated mycobacterial or fungal infection in this immunosuppressed patient.'}
-2025-06-04 01:29:09,813 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:12,309 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's clinical scenario involves persistent fever, night sweats, weight loss, and imaging showing pulmonary and hepatosplenic lesions in an immunosuppressed host, which raises suspicion for opportunistic infections—commonly seen in immunodeficiency states such as HIV/AIDS, which is coded as B20. Although her history does not state HIV, B20 is the closest available code for complex immunocompromised infection. None of the other codes reflect opportunistic infections or disseminated mycobacterial/fungal processes."}
-2025-06-04 01:29:12,312 - INFO -
-==================================================
-2025-06-04 01:29:12,312 - INFO - Stage: match_icd10_code
-2025-06-04 01:29:12,313 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:29:12,314 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's clinical scenario involves persistent fever, night sweats, weight loss, and imaging showing pulmonary and hepatosplenic lesions in an immunosuppressed host, which raises suspicion for opportunistic infections\u2014commonly seen in immunodeficiency states such as HIV/AIDS, which is coded as B20. Although her history does not state HIV, B20 is the closest available code for complex immunocompromised infection. None of the other codes reflect opportunistic infections or disseminated mycobacterial/fungal processes.",
- "error": null
-}
-2025-06-04 01:29:12,314 - INFO - ==================================================
-
-2025-06-04 01:29:12,316 - INFO -
-==================================================
-2025-06-04 01:29:12,316 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:29:12,317 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's clinical scenario involves persistent fever, night sweats, weight loss, and imaging showing pulmonary and hepatosplenic lesions in an immunosuppressed host, which raises suspicion for opportunistic infections\u2014commonly seen in immunodeficiency states such as HIV/AIDS, which is coded as B20. Although her history does not state HIV, B20 is the closest available code for complex immunocompromised infection. None of the other codes reflect opportunistic infections or disseminated mycobacterial/fungal processes.",
- "error": null
-}
-2025-06-04 01:29:12,317 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's clinical scenario involves persistent fever, night sweats, weight loss, and imaging showing pulmonary and hepatosplenic lesions in an immunosuppressed host, which raises suspicion for opportunistic infections\u2014commonly seen in immunodeficiency states such as HIV/AIDS, which is coded as B20. Although her history does not state HIV, B20 is the closest available code for complex immunocompromised infection. None of the other codes reflect opportunistic infections or disseminated mycobacterial/fungal processes.",
- "error": null
-}
-2025-06-04 01:29:12,318 - INFO - ==================================================
-
-2025-06-04 01:29:12,320 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's clinical scenario involves persistent fever, night sweats, weight loss, and imaging showing pulmonary and hepatosplenic lesions in an immunosuppressed host, which raises suspicion for opportunistic infections—commonly seen in immunodeficiency states such as HIV/AIDS, which is coded as B20. Although her history does not state HIV, B20 is the closest available code for complex immunocompromised infection. None of the other codes reflect opportunistic infections or disseminated mycobacterial/fungal processes.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:13,926 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 corresponds specifically to HIV disease, but the patient has no documented HIV infection; her immunosuppression is due to rheumatoid arthritis treatment, making B20 inappropriate for this scenario."}
-2025-06-04 01:29:13,927 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 corresponds specifically to HIV disease, but the patient has no documented HIV infection; her immunosuppression is due to rheumatoid arthritis treatment, making B20 inappropriate for this scenario.'}
-2025-06-04 01:29:13,930 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:16,492 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation is most consistent with a disseminated infection in the setting of immunosuppression. Of the codes provided, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest fit for serious opportunistic infections—even though the patient has iatrogenic immunosuppression from rheumatoid arthritis treatment, not HIV. No other provided codes pertain to disseminated infections or immunocompromise. The rest refer to metabolic, endocrine, or unrelated transplant/osteoporosis diagnoses."}
-2025-06-04 01:29:16,500 - INFO -
-==================================================
-2025-06-04 01:29:16,501 - INFO - Stage: match_icd10_code
-2025-06-04 01:29:16,502 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:29:16,504 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is most consistent with a disseminated infection in the setting of immunosuppression. Of the codes provided, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest fit for serious opportunistic infections\u2014even though the patient has iatrogenic immunosuppression from rheumatoid arthritis treatment, not HIV. No other provided codes pertain to disseminated infections or immunocompromise. The rest refer to metabolic, endocrine, or unrelated transplant/osteoporosis diagnoses.",
- "error": null
-}
-2025-06-04 01:29:16,505 - INFO - ==================================================
-
-2025-06-04 01:29:16,510 - INFO -
-==================================================
-2025-06-04 01:29:16,511 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:29:16,512 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is most consistent with a disseminated infection in the setting of immunosuppression. Of the codes provided, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest fit for serious opportunistic infections\u2014even though the patient has iatrogenic immunosuppression from rheumatoid arthritis treatment, not HIV. No other provided codes pertain to disseminated infections or immunocompromise. The rest refer to metabolic, endocrine, or unrelated transplant/osteoporosis diagnoses.",
- "error": null
-}
-2025-06-04 01:29:16,512 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is most consistent with a disseminated infection in the setting of immunosuppression. Of the codes provided, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest fit for serious opportunistic infections\u2014even though the patient has iatrogenic immunosuppression from rheumatoid arthritis treatment, not HIV. No other provided codes pertain to disseminated infections or immunocompromise. The rest refer to metabolic, endocrine, or unrelated transplant/osteoporosis diagnoses.",
- "error": null
-}
-2025-06-04 01:29:16,513 - INFO - ==================================================
-
-2025-06-04 01:29:16,516 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation is most consistent with a disseminated infection in the setting of immunosuppression. Of the codes provided, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest fit for serious opportunistic infections—even though the patient has iatrogenic immunosuppression from rheumatoid arthritis treatment, not HIV. No other provided codes pertain to disseminated infections or immunocompromise. The rest refer to metabolic, endocrine, or unrelated transplant/osteoporosis diagnoses.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:17,923 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 denotes HIV disease resulting in infectious and parasitic diseases, but this patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV, making B20 inappropriate."}
-2025-06-04 01:29:17,923 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 denotes HIV disease resulting in infectious and parasitic diseases, but this patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV, making B20 inappropriate.'}
-2025-06-04 01:29:17,926 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:20,769 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient is immunosuppressed and presenting with systemic symptoms and organ involvement suspicious for serious opportunistic infection (e.g., disseminated mycobacterial or fungal infection), which aligns most closely with the code B20 (HIV disease resulting in infectious and parasitic diseases). Although the patient is not known to have HIV, B20 is commonly used in ICD-10 for immunosuppressed states with opportunistic infections when a more specific immunodeficiency code is not available in the list. None of the other codes pertain to disseminated infectious disease in an immunosuppressed host."}
-2025-06-04 01:29:20,772 - INFO -
-==================================================
-2025-06-04 01:29:20,772 - INFO - Stage: match_icd10_code
-2025-06-04 01:29:20,773 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:29:20,774 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient is immunosuppressed and presenting with systemic symptoms and organ involvement suspicious for serious opportunistic infection (e.g., disseminated mycobacterial or fungal infection), which aligns most closely with the code B20 (HIV disease resulting in infectious and parasitic diseases). Although the patient is not known to have HIV, B20 is commonly used in ICD-10 for immunosuppressed states with opportunistic infections when a more specific immunodeficiency code is not available in the list. None of the other codes pertain to disseminated infectious disease in an immunosuppressed host.",
- "error": null
-}
-2025-06-04 01:29:20,774 - INFO - ==================================================
-
-2025-06-04 01:29:20,776 - INFO -
-==================================================
-2025-06-04 01:29:20,777 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:29:20,778 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient is immunosuppressed and presenting with systemic symptoms and organ involvement suspicious for serious opportunistic infection (e.g., disseminated mycobacterial or fungal infection), which aligns most closely with the code B20 (HIV disease resulting in infectious and parasitic diseases). Although the patient is not known to have HIV, B20 is commonly used in ICD-10 for immunosuppressed states with opportunistic infections when a more specific immunodeficiency code is not available in the list. None of the other codes pertain to disseminated infectious disease in an immunosuppressed host.",
- "error": null
-}
-2025-06-04 01:29:20,778 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient is immunosuppressed and presenting with systemic symptoms and organ involvement suspicious for serious opportunistic infection (e.g., disseminated mycobacterial or fungal infection), which aligns most closely with the code B20 (HIV disease resulting in infectious and parasitic diseases). Although the patient is not known to have HIV, B20 is commonly used in ICD-10 for immunosuppressed states with opportunistic infections when a more specific immunodeficiency code is not available in the list. None of the other codes pertain to disseminated infectious disease in an immunosuppressed host.",
- "error": null
-}
-2025-06-04 01:29:20,779 - INFO - ==================================================
-
-2025-06-04 01:29:20,781 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient is immunosuppressed and presenting with systemic symptoms and organ involvement suspicious for serious opportunistic infection (e.g., disseminated mycobacterial or fungal infection), which aligns most closely with the code B20 (HIV disease resulting in infectious and parasitic diseases). Although the patient is not known to have HIV, B20 is commonly used in ICD-10 for immunosuppressed states with opportunistic infections when a more specific immunodeficiency code is not available in the list. None of the other codes pertain to disseminated infectious disease in an immunosuppressed host.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:22,308 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 specifically denotes HIV disease with resulting infections; the patient has immunosuppression due to methotrexate and prednisone, not HIV, so B20 is not appropriate for this case."}
-2025-06-04 01:29:22,308 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 specifically denotes HIV disease with resulting infections; the patient has immunosuppression due to methotrexate and prednisone, not HIV, so B20 is not appropriate for this case.'}
-2025-06-04 01:29:22,313 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:24,642 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "B20 is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases, but among the options, it is the most appropriate for severe disseminated infections in an immunosuppressed patient (even though this patient is not explicitly HIV-positive), as none of the provided codes specifically correspond to disseminated mycobacterial or fungal infection. The other codes either relate to metabolic, endocrine, or unrelated chronic conditions."}
-2025-06-04 01:29:24,643 - INFO -
-==================================================
-2025-06-04 01:29:24,644 - INFO - Stage: match_icd10_code
-2025-06-04 01:29:24,645 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:29:24,646 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases, but among the options, it is the most appropriate for severe disseminated infections in an immunosuppressed patient (even though this patient is not explicitly HIV-positive), as none of the provided codes specifically correspond to disseminated mycobacterial or fungal infection. The other codes either relate to metabolic, endocrine, or unrelated chronic conditions.",
- "error": null
-}
-2025-06-04 01:29:24,646 - INFO - ==================================================
-
-2025-06-04 01:29:24,648 - INFO -
-==================================================
-2025-06-04 01:29:24,648 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:29:24,648 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases, but among the options, it is the most appropriate for severe disseminated infections in an immunosuppressed patient (even though this patient is not explicitly HIV-positive), as none of the provided codes specifically correspond to disseminated mycobacterial or fungal infection. The other codes either relate to metabolic, endocrine, or unrelated chronic conditions.",
- "error": null
-}
-2025-06-04 01:29:24,649 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases, but among the options, it is the most appropriate for severe disseminated infections in an immunosuppressed patient (even though this patient is not explicitly HIV-positive), as none of the provided codes specifically correspond to disseminated mycobacterial or fungal infection. The other codes either relate to metabolic, endocrine, or unrelated chronic conditions.",
- "error": null
-}
-2025-06-04 01:29:24,649 - INFO - ==================================================
-
-2025-06-04 01:29:24,650 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: B20 is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases, but among the options, it is the most appropriate for severe disseminated infections in an immunosuppressed patient (even though this patient is not explicitly HIV-positive), as none of the provided codes specifically correspond to disseminated mycobacterial or fungal infection. The other codes either relate to metabolic, endocrine, or unrelated chronic conditions.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:26,378 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease, but the patient is not HIV-positive. A code directly reflecting disseminated mycobacterial or fungal infection would be more appropriate, but B20 does not accurately represent this immunosuppressed patient's condition."}
-2025-06-04 01:29:26,379 - INFO - Validation result: {'is_valid': False, 'reason': "The code B20 is specific for HIV disease, but the patient is not HIV-positive. A code directly reflecting disseminated mycobacterial or fungal infection would be more appropriate, but B20 does not accurately represent this immunosuppressed patient's condition."}
-2025-06-04 01:29:26,381 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:29,236 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation with persistent fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions while immunosuppressed (on methotrexate and prednisone for rheumatoid arthritis) is highly suggestive of an opportunistic infection, particularly disseminated non-tuberculous mycobacterial infection or histoplasmosis. Of the available codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely aligns with the clinical scenario of serious opportunistic infectious complications in an immunocompromised host and is the only code directly related to complex infectious processes. The other codes pertain to bone density, medication use, diabetes, hypothyroidism, lipid disorders, hypertension, vitamin D deficiency, and organ transplant, none of which match the active infectious disease context."}
-2025-06-04 01:29:29,238 - INFO -
-==================================================
-2025-06-04 01:29:29,239 - INFO - Stage: match_icd10_code
-2025-06-04 01:29:29,239 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:29:29,240 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation with persistent fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions while immunosuppressed (on methotrexate and prednisone for rheumatoid arthritis) is highly suggestive of an opportunistic infection, particularly disseminated non-tuberculous mycobacterial infection or histoplasmosis. Of the available codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely aligns with the clinical scenario of serious opportunistic infectious complications in an immunocompromised host and is the only code directly related to complex infectious processes. The other codes pertain to bone density, medication use, diabetes, hypothyroidism, lipid disorders, hypertension, vitamin D deficiency, and organ transplant, none of which match the active infectious disease context.",
- "error": null
-}
-2025-06-04 01:29:29,241 - INFO - ==================================================
-
-2025-06-04 01:29:29,243 - INFO -
-==================================================
-2025-06-04 01:29:29,244 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:29:29,244 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation with persistent fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions while immunosuppressed (on methotrexate and prednisone for rheumatoid arthritis) is highly suggestive of an opportunistic infection, particularly disseminated non-tuberculous mycobacterial infection or histoplasmosis. Of the available codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely aligns with the clinical scenario of serious opportunistic infectious complications in an immunocompromised host and is the only code directly related to complex infectious processes. The other codes pertain to bone density, medication use, diabetes, hypothyroidism, lipid disorders, hypertension, vitamin D deficiency, and organ transplant, none of which match the active infectious disease context.",
- "error": null
-}
-2025-06-04 01:29:29,245 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation with persistent fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions while immunosuppressed (on methotrexate and prednisone for rheumatoid arthritis) is highly suggestive of an opportunistic infection, particularly disseminated non-tuberculous mycobacterial infection or histoplasmosis. Of the available codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely aligns with the clinical scenario of serious opportunistic infectious complications in an immunocompromised host and is the only code directly related to complex infectious processes. The other codes pertain to bone density, medication use, diabetes, hypothyroidism, lipid disorders, hypertension, vitamin D deficiency, and organ transplant, none of which match the active infectious disease context.",
- "error": null
-}
-2025-06-04 01:29:29,246 - INFO - ==================================================
-
-2025-06-04 01:29:29,247 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation with persistent fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions while immunosuppressed (on methotrexate and prednisone for rheumatoid arthritis) is highly suggestive of an opportunistic infection, particularly disseminated non-tuberculous mycobacterial infection or histoplasmosis. Of the available codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely aligns with the clinical scenario of serious opportunistic infectious complications in an immunocompromised host and is the only code directly related to complex infectious processes. The other codes pertain to bone density, medication use, diabetes, hypothyroidism, lipid disorders, hypertension, vitamin D deficiency, and organ transplant, none of which match the active infectious disease context.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:31,215 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 specifically refers to HIV disease with resulting infections, but there is no evidence or mention of HIV infection in this patient; a more appropriate code would be needed for disseminated mycobacterial or fungal infections in an immunosuppressed, HIV-negative patient."}
-2025-06-04 01:29:31,216 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 specifically refers to HIV disease with resulting infections, but there is no evidence or mention of HIV infection in this patient; a more appropriate code would be needed for disseminated mycobacterial or fungal infections in an immunosuppressed, HIV-negative patient.'}
-2025-06-04 01:29:31,217 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:33,498 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation of persistent fevers, weight loss, and night sweats with imaging findings of pulmonary nodules and hepatosplenic lesions is most consistent with a systemic infectious process; B20 is the only code in the provided list that represents an infectious disease (HIV disease), which is an immunocompromised state that increases risk for disseminated mycobacterial and fungal infections, closely matching the described scenario of concern for opportunistic infection in an immunosuppressed patient."}
-2025-06-04 01:29:33,499 - INFO -
-==================================================
-2025-06-04 01:29:33,500 - INFO - Stage: match_icd10_code
-2025-06-04 01:29:33,500 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:29:33,501 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fevers, weight loss, and night sweats with imaging findings of pulmonary nodules and hepatosplenic lesions is most consistent with a systemic infectious process; B20 is the only code in the provided list that represents an infectious disease (HIV disease), which is an immunocompromised state that increases risk for disseminated mycobacterial and fungal infections, closely matching the described scenario of concern for opportunistic infection in an immunosuppressed patient.",
- "error": null
-}
-2025-06-04 01:29:33,502 - INFO - ==================================================
-
-2025-06-04 01:29:33,503 - INFO -
-==================================================
-2025-06-04 01:29:33,504 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:29:33,504 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fevers, weight loss, and night sweats with imaging findings of pulmonary nodules and hepatosplenic lesions is most consistent with a systemic infectious process; B20 is the only code in the provided list that represents an infectious disease (HIV disease), which is an immunocompromised state that increases risk for disseminated mycobacterial and fungal infections, closely matching the described scenario of concern for opportunistic infection in an immunosuppressed patient.",
- "error": null
-}
-2025-06-04 01:29:33,505 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fevers, weight loss, and night sweats with imaging findings of pulmonary nodules and hepatosplenic lesions is most consistent with a systemic infectious process; B20 is the only code in the provided list that represents an infectious disease (HIV disease), which is an immunocompromised state that increases risk for disseminated mycobacterial and fungal infections, closely matching the described scenario of concern for opportunistic infection in an immunosuppressed patient.",
- "error": null
-}
-2025-06-04 01:29:33,506 - INFO - ==================================================
-
-2025-06-04 01:29:33,508 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation of persistent fevers, weight loss, and night sweats with imaging findings of pulmonary nodules and hepatosplenic lesions is most consistent with a systemic infectious process; B20 is the only code in the provided list that represents an infectious disease (HIV disease), which is an immunocompromised state that increases risk for disseminated mycobacterial and fungal infections, closely matching the described scenario of concern for opportunistic infection in an immunosuppressed patient.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:35,053 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 refers specifically to HIV disease, but the patient has immunosuppression from rheumatoid arthritis treatment, not HIV; thus, B20 is inappropriate for this case."}
-2025-06-04 01:29:35,054 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 refers specifically to HIV disease, but the patient has immunosuppression from rheumatoid arthritis treatment, not HIV; thus, B20 is inappropriate for this case.'}
-2025-06-04 01:29:35,058 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:37,212 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The clinical scenario describes an immunocompromised patient with prolonged fever, night sweats, weight loss, and organ involvement raising concern for disseminated infection. Of the provided codes, 'B20' represents 'Human immunodeficiency virus [HIV] disease,' which is used in ICD-10 to classify immunodeficiency states associated with increased risk for opportunistic infections such as disseminated mycobacterial or fungal disease; this is the closest fit among given options."}
-2025-06-04 01:29:37,214 - INFO -
-==================================================
-2025-06-04 01:29:37,216 - INFO - Stage: match_icd10_code
-2025-06-04 01:29:37,217 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:29:37,218 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes an immunocompromised patient with prolonged fever, night sweats, weight loss, and organ involvement raising concern for disseminated infection. Of the provided codes, 'B20' represents 'Human immunodeficiency virus [HIV] disease,' which is used in ICD-10 to classify immunodeficiency states associated with increased risk for opportunistic infections such as disseminated mycobacterial or fungal disease; this is the closest fit among given options.",
- "error": null
-}
-2025-06-04 01:29:37,219 - INFO - ==================================================
-
-2025-06-04 01:29:37,222 - INFO -
-==================================================
-2025-06-04 01:29:37,223 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:29:37,224 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes an immunocompromised patient with prolonged fever, night sweats, weight loss, and organ involvement raising concern for disseminated infection. Of the provided codes, 'B20' represents 'Human immunodeficiency virus [HIV] disease,' which is used in ICD-10 to classify immunodeficiency states associated with increased risk for opportunistic infections such as disseminated mycobacterial or fungal disease; this is the closest fit among given options.",
- "error": null
-}
-2025-06-04 01:29:37,225 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes an immunocompromised patient with prolonged fever, night sweats, weight loss, and organ involvement raising concern for disseminated infection. Of the provided codes, 'B20' represents 'Human immunodeficiency virus [HIV] disease,' which is used in ICD-10 to classify immunodeficiency states associated with increased risk for opportunistic infections such as disseminated mycobacterial or fungal disease; this is the closest fit among given options.",
- "error": null
-}
-2025-06-04 01:29:37,226 - INFO - ==================================================
-
-2025-06-04 01:29:37,229 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The clinical scenario describes an immunocompromised patient with prolonged fever, night sweats, weight loss, and organ involvement raising concern for disseminated infection. Of the provided codes, 'B20' represents 'Human immunodeficiency virus [HIV] disease,' which is used in ICD-10 to classify immunodeficiency states associated with increased risk for opportunistic infections such as disseminated mycobacterial or fungal disease; this is the closest fit among given options.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:38,636 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is for HIV disease, but the patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV."}
-2025-06-04 01:29:38,637 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is for HIV disease, but the patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV.'}
-2025-06-04 01:29:38,641 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:41,973 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's case is characterized by persistent fever, night sweats, weight loss, and multisystem involvement (pulmonary nodules, hepatosplenic lesions) while on chronic immunosuppression, which are findings highly suspicious for a disseminated opportunistic infection typically classified under B20 (HIV disease resulting in infectious and parasitic diseases). While the patient is not known to have HIV, B20 is often used when documenting severe opportunistic infections suggesting underlying immunodeficiency. Among the available codes, it is the closest match for a disseminated infectious process in an immunocompromised host."}
-2025-06-04 01:29:41,975 - INFO -
-==================================================
-2025-06-04 01:29:41,975 - INFO - Stage: match_icd10_code
-2025-06-04 01:29:41,975 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:29:41,976 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's case is characterized by persistent fever, night sweats, weight loss, and multisystem involvement (pulmonary nodules, hepatosplenic lesions) while on chronic immunosuppression, which are findings highly suspicious for a disseminated opportunistic infection typically classified under B20 (HIV disease resulting in infectious and parasitic diseases). While the patient is not known to have HIV, B20 is often used when documenting severe opportunistic infections suggesting underlying immunodeficiency. Among the available codes, it is the closest match for a disseminated infectious process in an immunocompromised host.",
- "error": null
-}
-2025-06-04 01:29:41,977 - INFO - ==================================================
-
-2025-06-04 01:29:41,979 - INFO -
-==================================================
-2025-06-04 01:29:41,980 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:29:41,980 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's case is characterized by persistent fever, night sweats, weight loss, and multisystem involvement (pulmonary nodules, hepatosplenic lesions) while on chronic immunosuppression, which are findings highly suspicious for a disseminated opportunistic infection typically classified under B20 (HIV disease resulting in infectious and parasitic diseases). While the patient is not known to have HIV, B20 is often used when documenting severe opportunistic infections suggesting underlying immunodeficiency. Among the available codes, it is the closest match for a disseminated infectious process in an immunocompromised host.",
- "error": null
-}
-2025-06-04 01:29:41,981 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's case is characterized by persistent fever, night sweats, weight loss, and multisystem involvement (pulmonary nodules, hepatosplenic lesions) while on chronic immunosuppression, which are findings highly suspicious for a disseminated opportunistic infection typically classified under B20 (HIV disease resulting in infectious and parasitic diseases). While the patient is not known to have HIV, B20 is often used when documenting severe opportunistic infections suggesting underlying immunodeficiency. Among the available codes, it is the closest match for a disseminated infectious process in an immunocompromised host.",
- "error": null
-}
-2025-06-04 01:29:41,981 - INFO - ==================================================
-
-2025-06-04 01:29:41,983 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's case is characterized by persistent fever, night sweats, weight loss, and multisystem involvement (pulmonary nodules, hepatosplenic lesions) while on chronic immunosuppression, which are findings highly suspicious for a disseminated opportunistic infection typically classified under B20 (HIV disease resulting in infectious and parasitic diseases). While the patient is not known to have HIV, B20 is often used when documenting severe opportunistic infections suggesting underlying immunodeficiency. Among the available codes, it is the closest match for a disseminated infectious process in an immunocompromised host.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:43,548 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, but the patient is not known to have HIV; thus, this code is inappropriate for this immunocompromised non-HIV case."}
-2025-06-04 01:29:43,548 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, but the patient is not known to have HIV; thus, this code is inappropriate for this immunocompromised non-HIV case.'}
-2025-06-04 01:29:43,550 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:45,829 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation with prolonged fever, weight loss, night sweats, and multiple organ involvement is highly suggestive of disseminated infection, which is classically seen in immunocompromised states. Among the listed codes, B20 (HIV disease) best fits as these symptoms commonly prompt investigation for underlying immunodeficiency such as HIV/AIDS, which predisposes to opportunistic infections like disseminated mycobacteria or histoplasmosis."}
-2025-06-04 01:29:45,830 - INFO -
-==================================================
-2025-06-04 01:29:45,830 - INFO - Stage: match_icd10_code
-2025-06-04 01:29:45,831 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:29:45,831 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation with prolonged fever, weight loss, night sweats, and multiple organ involvement is highly suggestive of disseminated infection, which is classically seen in immunocompromised states. Among the listed codes, B20 (HIV disease) best fits as these symptoms commonly prompt investigation for underlying immunodeficiency such as HIV/AIDS, which predisposes to opportunistic infections like disseminated mycobacteria or histoplasmosis.",
- "error": null
-}
-2025-06-04 01:29:45,832 - INFO - ==================================================
-
-2025-06-04 01:29:45,834 - INFO -
-==================================================
-2025-06-04 01:29:45,835 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:29:45,835 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation with prolonged fever, weight loss, night sweats, and multiple organ involvement is highly suggestive of disseminated infection, which is classically seen in immunocompromised states. Among the listed codes, B20 (HIV disease) best fits as these symptoms commonly prompt investigation for underlying immunodeficiency such as HIV/AIDS, which predisposes to opportunistic infections like disseminated mycobacteria or histoplasmosis.",
- "error": null
-}
-2025-06-04 01:29:45,836 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation with prolonged fever, weight loss, night sweats, and multiple organ involvement is highly suggestive of disseminated infection, which is classically seen in immunocompromised states. Among the listed codes, B20 (HIV disease) best fits as these symptoms commonly prompt investigation for underlying immunodeficiency such as HIV/AIDS, which predisposes to opportunistic infections like disseminated mycobacteria or histoplasmosis.",
- "error": null
-}
-2025-06-04 01:29:45,836 - INFO - ==================================================
-
-2025-06-04 01:29:45,838 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation with prolonged fever, weight loss, night sweats, and multiple organ involvement is highly suggestive of disseminated infection, which is classically seen in immunocompromised states. Among the listed codes, B20 (HIV disease) best fits as these symptoms commonly prompt investigation for underlying immunodeficiency such as HIV/AIDS, which predisposes to opportunistic infections like disseminated mycobacteria or histoplasmosis.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:47,377 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 (HIV disease) is not appropriate, as there is no evidence the patient has HIV; her immunocompromise is due to immunosuppressive medications for rheumatoid arthritis."}
-2025-06-04 01:29:47,378 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 (HIV disease) is not appropriate, as there is no evidence the patient has HIV; her immunocompromise is due to immunosuppressive medications for rheumatoid arthritis.'}
-2025-06-04 01:29:47,379 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:49,512 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "Z79.4", "rationale": "The most appropriate code from the provided list is Z79.4 (Long term (current) use of corticosteroids), as the patient's clinical scenario centers on immunosuppression (due to methotrexate and prednisone use) leading to possible atypical infections; none of the available codes reflect infection or its complications, but Z79.4 best captures a key risk factor central to the case."}
-2025-06-04 01:29:49,515 - INFO -
-==================================================
-2025-06-04 01:29:49,516 - INFO - Stage: match_icd10_code
-2025-06-04 01:29:49,517 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:29:49,518 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The most appropriate code from the provided list is Z79.4 (Long term (current) use of corticosteroids), as the patient's clinical scenario centers on immunosuppression (due to methotrexate and prednisone use) leading to possible atypical infections; none of the available codes reflect infection or its complications, but Z79.4 best captures a key risk factor central to the case.",
- "error": null
-}
-2025-06-04 01:29:49,519 - INFO - ==================================================
-
-2025-06-04 01:29:49,521 - INFO -
-==================================================
-2025-06-04 01:29:49,522 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:29:49,523 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The most appropriate code from the provided list is Z79.4 (Long term (current) use of corticosteroids), as the patient's clinical scenario centers on immunosuppression (due to methotrexate and prednisone use) leading to possible atypical infections; none of the available codes reflect infection or its complications, but Z79.4 best captures a key risk factor central to the case.",
- "error": null
-}
-2025-06-04 01:29:49,523 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The most appropriate code from the provided list is Z79.4 (Long term (current) use of corticosteroids), as the patient's clinical scenario centers on immunosuppression (due to methotrexate and prednisone use) leading to possible atypical infections; none of the available codes reflect infection or its complications, but Z79.4 best captures a key risk factor central to the case.",
- "error": null
-}
-2025-06-04 01:29:49,524 - INFO - ==================================================
-
-2025-06-04 01:29:49,526 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: Z79.4
- Rationale: The most appropriate code from the provided list is Z79.4 (Long term (current) use of corticosteroids), as the patient's clinical scenario centers on immunosuppression (due to methotrexate and prednisone use) leading to possible atypical infections; none of the available codes reflect infection or its complications, but Z79.4 best captures a key risk factor central to the case.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:51,156 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": true, "reason": "The code Z79.4 is appropriate because the patient's current immunosuppressed state due to corticosteroid use is central to her risk for atypical infections, which is the main focus of the clinical case."}
-2025-06-04 01:29:51,157 - INFO - Validation result: {'is_valid': True, 'reason': "The code Z79.4 is appropriate because the patient's current immunosuppressed state due to corticosteroid use is central to her risk for atypical infections, which is the main focus of the clinical case."}
-2025-06-04 01:29:51,159 - INFO -
-==================================================
-2025-06-04 01:29:51,161 - INFO - Stage: validate_icd10_clinical_match
-2025-06-04 01:29:51,162 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The most appropriate code from the provided list is Z79.4 (Long term (current) use of corticosteroids), as the patient's clinical scenario centers on immunosuppression (due to methotrexate and prednisone use) leading to possible atypical infections; none of the available codes reflect infection or its complications, but Z79.4 best captures a key risk factor central to the case.",
- "error": null
-}
-2025-06-04 01:29:51,162 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The most appropriate code from the provided list is Z79.4 (Long term (current) use of corticosteroids), as the patient's clinical scenario centers on immunosuppression (due to methotrexate and prednisone use) leading to possible atypical infections; none of the available codes reflect infection or its complications, but Z79.4 best captures a key risk factor central to the case.",
- "error": null
-}
-2025-06-04 01:29:51,163 - INFO - ==================================================
-
-2025-06-04 01:29:51,168 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 01:29:52,985 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 01:29:52,987 - INFO -
-==================================================
-2025-06-04 01:29:52,988 - INFO - Stage: extract_patient_info
-2025-06-04 01:29:52,989 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The most appropriate code from the provided list is Z79.4 (Long term (current) use of corticosteroids), as the patient's clinical scenario centers on immunosuppression (due to methotrexate and prednisone use) leading to possible atypical infections; none of the available codes reflect infection or its complications, but Z79.4 best captures a key risk factor central to the case.",
- "error": null
-}
-2025-06-04 01:29:52,989 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The most appropriate code from the provided list is Z79.4 (Long term (current) use of corticosteroids), as the patient's clinical scenario centers on immunosuppression (due to methotrexate and prednisone use) leading to possible atypical infections; none of the available codes reflect infection or its complications, but Z79.4 best captures a key risk factor central to the case.",
- "error": null
-}
-2025-06-04 01:29:52,990 - INFO - ==================================================
-
-2025-06-04 01:29:52,993 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:55,457 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation of persistent fevers, night sweats, weight loss, multiple pulmonary nodules, and hepatosplenic lesions despite broad-spectrum antibiotics is highly suggestive of a disseminated opportunistic infection, a hallmark of immunosuppression. The ICD-10 code B20 is for HIV disease resulting in infectious and parasitic diseases, which best matches the scenario involving suspicion for disseminated mycobacterial or fungal infection in an immunocompromised patient. Although HIV is not stated, B20 is used in ICD-10 to broadly capture serious opportunistic infectious conditions in immunocompromised individuals; the other codes do not match this setting."}
-2025-06-04 01:29:55,460 - INFO -
-==================================================
-2025-06-04 01:29:55,461 - INFO - Stage: match_icd10_code
-2025-06-04 01:29:55,462 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The most appropriate code from the provided list is Z79.4 (Long term (current) use of corticosteroids), as the patient's clinical scenario centers on immunosuppression (due to methotrexate and prednisone use) leading to possible atypical infections; none of the available codes reflect infection or its complications, but Z79.4 best captures a key risk factor central to the case.",
- "error": null
-}
-2025-06-04 01:29:55,463 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fevers, night sweats, weight loss, multiple pulmonary nodules, and hepatosplenic lesions despite broad-spectrum antibiotics is highly suggestive of a disseminated opportunistic infection, a hallmark of immunosuppression. The ICD-10 code B20 is for HIV disease resulting in infectious and parasitic diseases, which best matches the scenario involving suspicion for disseminated mycobacterial or fungal infection in an immunocompromised patient. Although HIV is not stated, B20 is used in ICD-10 to broadly capture serious opportunistic infectious conditions in immunocompromised individuals; the other codes do not match this setting.",
- "error": null
-}
-2025-06-04 01:29:55,463 - INFO - ==================================================
-
-2025-06-04 01:29:55,466 - INFO -
-==================================================
-2025-06-04 01:29:55,467 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:29:55,467 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fevers, night sweats, weight loss, multiple pulmonary nodules, and hepatosplenic lesions despite broad-spectrum antibiotics is highly suggestive of a disseminated opportunistic infection, a hallmark of immunosuppression. The ICD-10 code B20 is for HIV disease resulting in infectious and parasitic diseases, which best matches the scenario involving suspicion for disseminated mycobacterial or fungal infection in an immunocompromised patient. Although HIV is not stated, B20 is used in ICD-10 to broadly capture serious opportunistic infectious conditions in immunocompromised individuals; the other codes do not match this setting.",
- "error": null
-}
-2025-06-04 01:29:55,468 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fevers, night sweats, weight loss, multiple pulmonary nodules, and hepatosplenic lesions despite broad-spectrum antibiotics is highly suggestive of a disseminated opportunistic infection, a hallmark of immunosuppression. The ICD-10 code B20 is for HIV disease resulting in infectious and parasitic diseases, which best matches the scenario involving suspicion for disseminated mycobacterial or fungal infection in an immunocompromised patient. Although HIV is not stated, B20 is used in ICD-10 to broadly capture serious opportunistic infectious conditions in immunocompromised individuals; the other codes do not match this setting.",
- "error": null
-}
-2025-06-04 01:29:55,469 - INFO - ==================================================
-
-2025-06-04 01:29:55,470 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation of persistent fevers, night sweats, weight loss, multiple pulmonary nodules, and hepatosplenic lesions despite broad-spectrum antibiotics is highly suggestive of a disseminated opportunistic infection, a hallmark of immunosuppression. The ICD-10 code B20 is for HIV disease resulting in infectious and parasitic diseases, which best matches the scenario involving suspicion for disseminated mycobacterial or fungal infection in an immunocompromised patient. Although HIV is not stated, B20 is used in ICD-10 to broadly capture serious opportunistic infectious conditions in immunocompromised individuals; the other codes do not match this setting.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:57,320 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, but the patient has immunosuppression due to methotrexate and prednisone for rheumatoid arthritis, not due to HIV. Therefore, B20 is not appropriate for this case."}
-2025-06-04 01:29:57,321 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, but the patient has immunosuppression due to methotrexate and prednisone for rheumatoid arthritis, not due to HIV. Therefore, B20 is not appropriate for this case.'}
-2025-06-04 01:29:57,328 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:29:59,648 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The clinical scenario describes an immunocompromised patient with systemic symptoms and findings concerning for disseminated opportunistic infections. Of the provided codes, B20 (HIV disease) best aligns with serious immunocompromise and opportunistic infection risk, paralleling the patient's severe infection profile. No codes directly reflect non-tuberculous mycobacteria or histoplasmosis, and B20 is most appropriate given the context."}
-2025-06-04 01:29:59,651 - INFO -
-==================================================
-2025-06-04 01:29:59,652 - INFO - Stage: match_icd10_code
-2025-06-04 01:29:59,653 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:29:59,654 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes an immunocompromised patient with systemic symptoms and findings concerning for disseminated opportunistic infections. Of the provided codes, B20 (HIV disease) best aligns with serious immunocompromise and opportunistic infection risk, paralleling the patient's severe infection profile. No codes directly reflect non-tuberculous mycobacteria or histoplasmosis, and B20 is most appropriate given the context.",
- "error": null
-}
-2025-06-04 01:29:59,656 - INFO - ==================================================
-
-2025-06-04 01:29:59,660 - INFO -
-==================================================
-2025-06-04 01:29:59,661 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:29:59,662 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes an immunocompromised patient with systemic symptoms and findings concerning for disseminated opportunistic infections. Of the provided codes, B20 (HIV disease) best aligns with serious immunocompromise and opportunistic infection risk, paralleling the patient's severe infection profile. No codes directly reflect non-tuberculous mycobacteria or histoplasmosis, and B20 is most appropriate given the context.",
- "error": null
-}
-2025-06-04 01:29:59,663 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes an immunocompromised patient with systemic symptoms and findings concerning for disseminated opportunistic infections. Of the provided codes, B20 (HIV disease) best aligns with serious immunocompromise and opportunistic infection risk, paralleling the patient's severe infection profile. No codes directly reflect non-tuberculous mycobacteria or histoplasmosis, and B20 is most appropriate given the context.",
- "error": null
-}
-2025-06-04 01:29:59,664 - INFO - ==================================================
-
-2025-06-04 01:29:59,667 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The clinical scenario describes an immunocompromised patient with systemic symptoms and findings concerning for disseminated opportunistic infections. Of the provided codes, B20 (HIV disease) best aligns with serious immunocompromise and opportunistic infection risk, paralleling the patient's severe infection profile. No codes directly reflect non-tuberculous mycobacteria or histoplasmosis, and B20 is most appropriate given the context.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:30:01,563 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 refers to HIV disease, but the patient is immunocompromised due to rheumatoid arthritis treatment and there is no evidence of HIV infection in the case."}
-2025-06-04 01:30:01,565 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 refers to HIV disease, but the patient is immunocompromised due to rheumatoid arthritis treatment and there is no evidence of HIV infection in the case.'}
-2025-06-04 01:30:01,567 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:30:04,558 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's immunosuppression (due to methotrexate and prednisone) and presentation with prolonged fever, night sweats, weight loss, and possible disseminated infection with atypical mycobacteria or fungi fit the context of an opportunistic infection often seen in immunocompromised states. Among the available codes, B20 (Human immunodeficiency virus [HIV] disease) is the only infectious disease code related to immunosuppression and opportunistic infections, which most closely matches the scenario involving concern for disseminated infections in the immunocompromised host."}
-2025-06-04 01:30:04,560 - INFO -
-==================================================
-2025-06-04 01:30:04,561 - INFO - Stage: match_icd10_code
-2025-06-04 01:30:04,561 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:30:04,562 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's immunosuppression (due to methotrexate and prednisone) and presentation with prolonged fever, night sweats, weight loss, and possible disseminated infection with atypical mycobacteria or fungi fit the context of an opportunistic infection often seen in immunocompromised states. Among the available codes, B20 (Human immunodeficiency virus [HIV] disease) is the only infectious disease code related to immunosuppression and opportunistic infections, which most closely matches the scenario involving concern for disseminated infections in the immunocompromised host.",
- "error": null
-}
-2025-06-04 01:30:04,563 - INFO - ==================================================
-
-2025-06-04 01:30:04,566 - INFO -
-==================================================
-2025-06-04 01:30:04,566 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:30:04,567 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's immunosuppression (due to methotrexate and prednisone) and presentation with prolonged fever, night sweats, weight loss, and possible disseminated infection with atypical mycobacteria or fungi fit the context of an opportunistic infection often seen in immunocompromised states. Among the available codes, B20 (Human immunodeficiency virus [HIV] disease) is the only infectious disease code related to immunosuppression and opportunistic infections, which most closely matches the scenario involving concern for disseminated infections in the immunocompromised host.",
- "error": null
-}
-2025-06-04 01:30:04,568 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's immunosuppression (due to methotrexate and prednisone) and presentation with prolonged fever, night sweats, weight loss, and possible disseminated infection with atypical mycobacteria or fungi fit the context of an opportunistic infection often seen in immunocompromised states. Among the available codes, B20 (Human immunodeficiency virus [HIV] disease) is the only infectious disease code related to immunosuppression and opportunistic infections, which most closely matches the scenario involving concern for disseminated infections in the immunocompromised host.",
- "error": null
-}
-2025-06-04 01:30:04,569 - INFO - ==================================================
-
-2025-06-04 01:30:04,571 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's immunosuppression (due to methotrexate and prednisone) and presentation with prolonged fever, night sweats, weight loss, and possible disseminated infection with atypical mycobacteria or fungi fit the context of an opportunistic infection often seen in immunocompromised states. Among the available codes, B20 (Human immunodeficiency virus [HIV] disease) is the only infectious disease code related to immunosuppression and opportunistic infections, which most closely matches the scenario involving concern for disseminated infections in the immunocompromised host.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:30:06,060 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 refers specifically to HIV disease, but the patient does not have HIV; her immunosuppression is due to medications for rheumatoid arthritis."}
-2025-06-04 01:30:06,062 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 refers specifically to HIV disease, but the patient does not have HIV; her immunosuppression is due to medications for rheumatoid arthritis.'}
-2025-06-04 01:30:06,066 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:30:08,407 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's history of persistent fever, weight loss, night sweats, and disseminated nodular lesions with immune suppression raises concern for disseminated mycobacterial or fungal infection, which can be opportunistic infections seen in immunocompromised hosts such as those with HIV (B20). The other codes are not relevant to infectious etiologies or immunocompromised states. B20 is most appropriate given the context of possible disseminated opportunistic infection."}
-2025-06-04 01:30:08,409 - INFO -
-==================================================
-2025-06-04 01:30:08,410 - INFO - Stage: match_icd10_code
-2025-06-04 01:30:08,411 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:30:08,411 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's history of persistent fever, weight loss, night sweats, and disseminated nodular lesions with immune suppression raises concern for disseminated mycobacterial or fungal infection, which can be opportunistic infections seen in immunocompromised hosts such as those with HIV (B20). The other codes are not relevant to infectious etiologies or immunocompromised states. B20 is most appropriate given the context of possible disseminated opportunistic infection.",
- "error": null
-}
-2025-06-04 01:30:08,412 - INFO - ==================================================
-
-2025-06-04 01:30:08,414 - INFO -
-==================================================
-2025-06-04 01:30:08,415 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:30:08,416 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's history of persistent fever, weight loss, night sweats, and disseminated nodular lesions with immune suppression raises concern for disseminated mycobacterial or fungal infection, which can be opportunistic infections seen in immunocompromised hosts such as those with HIV (B20). The other codes are not relevant to infectious etiologies or immunocompromised states. B20 is most appropriate given the context of possible disseminated opportunistic infection.",
- "error": null
-}
-2025-06-04 01:30:08,417 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's history of persistent fever, weight loss, night sweats, and disseminated nodular lesions with immune suppression raises concern for disseminated mycobacterial or fungal infection, which can be opportunistic infections seen in immunocompromised hosts such as those with HIV (B20). The other codes are not relevant to infectious etiologies or immunocompromised states. B20 is most appropriate given the context of possible disseminated opportunistic infection.",
- "error": null
-}
-2025-06-04 01:30:08,418 - INFO - ==================================================
-
-2025-06-04 01:30:08,420 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's history of persistent fever, weight loss, night sweats, and disseminated nodular lesions with immune suppression raises concern for disseminated mycobacterial or fungal infection, which can be opportunistic infections seen in immunocompromised hosts such as those with HIV (B20). The other codes are not relevant to infectious etiologies or immunocompromised states. B20 is most appropriate given the context of possible disseminated opportunistic infection.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:30:10,231 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 refers specifically to HIV disease, whereas the patient is immunosuppressed due to methotrexate and prednisone for rheumatoid arthritis, not HIV; thus, B20 is not appropriate for this clinical case."}
-2025-06-04 01:30:10,233 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 refers specifically to HIV disease, whereas the patient is immunosuppressed due to methotrexate and prednisone for rheumatoid arthritis, not HIV; thus, B20 is not appropriate for this clinical case.'}
-2025-06-04 01:30:10,239 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:30:12,308 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "Z79.4", "rationale": "Z79.4 indicates long term (current) use of immunosuppressive drugs, which is highly relevant as the patient's immunosuppression (methotrexate and prednisone) is central to her risk for disseminated infections such as mycobacterial or fungal disease. None of the other codes capture the clinical problem more appropriately."}
-2025-06-04 01:30:12,310 - INFO -
-==================================================
-2025-06-04 01:30:12,311 - INFO - Stage: match_icd10_code
-2025-06-04 01:30:12,312 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null
-}
-2025-06-04 01:30:12,313 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 indicates long term (current) use of immunosuppressive drugs, which is highly relevant as the patient's immunosuppression (methotrexate and prednisone) is central to her risk for disseminated infections such as mycobacterial or fungal disease. None of the other codes capture the clinical problem more appropriately.",
- "error": null
-}
-2025-06-04 01:30:12,313 - INFO - ==================================================
-
-2025-06-04 01:30:12,315 - INFO -
-==================================================
-2025-06-04 01:30:12,316 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:30:12,317 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 indicates long term (current) use of immunosuppressive drugs, which is highly relevant as the patient's immunosuppression (methotrexate and prednisone) is central to her risk for disseminated infections such as mycobacterial or fungal disease. None of the other codes capture the clinical problem more appropriately.",
- "error": null
-}
-2025-06-04 01:30:12,317 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 indicates long term (current) use of immunosuppressive drugs, which is highly relevant as the patient's immunosuppression (methotrexate and prednisone) is central to her risk for disseminated infections such as mycobacterial or fungal disease. None of the other codes capture the clinical problem more appropriately.",
- "error": null
-}
-2025-06-04 01:30:12,318 - INFO - ==================================================
-
-2025-06-04 01:30:12,320 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: Z79.4
- Rationale: Z79.4 indicates long term (current) use of immunosuppressive drugs, which is highly relevant as the patient's immunosuppression (methotrexate and prednisone) is central to her risk for disseminated infections such as mycobacterial or fungal disease. None of the other codes capture the clinical problem more appropriately.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:30:13,899 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": true, "reason": "The code Z79.4 accurately reflects the patient's long-term use of immunosuppressive drugs, which is central to her current immunosuppressed state and risk for disseminated infection."}
-2025-06-04 01:30:13,900 - INFO - Validation result: {'is_valid': True, 'reason': "The code Z79.4 accurately reflects the patient's long-term use of immunosuppressive drugs, which is central to her current immunosuppressed state and risk for disseminated infection."}
-2025-06-04 01:30:13,902 - INFO -
-==================================================
-2025-06-04 01:30:13,902 - INFO - Stage: validate_icd10_clinical_match
-2025-06-04 01:30:13,903 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 indicates long term (current) use of immunosuppressive drugs, which is highly relevant as the patient's immunosuppression (methotrexate and prednisone) is central to her risk for disseminated infections such as mycobacterial or fungal disease. None of the other codes capture the clinical problem more appropriately.",
- "error": null
-}
-2025-06-04 01:30:13,903 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 indicates long term (current) use of immunosuppressive drugs, which is highly relevant as the patient's immunosuppression (methotrexate and prednisone) is central to her risk for disseminated infections such as mycobacterial or fungal disease. None of the other codes capture the clinical problem more appropriately.",
- "error": null
-}
-2025-06-04 01:30:13,904 - INFO - ==================================================
-
-2025-06-04 01:30:13,906 - INFO -
-==================================================
-2025-06-04 01:30:13,906 - INFO - Final Result:
-2025-06-04 01:30:13,907 - INFO - {
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 indicates long term (current) use of immunosuppressive drugs, which is highly relevant as the patient's immunosuppression (methotrexate and prednisone) is central to her risk for disseminated infections such as mycobacterial or fungal disease. None of the other codes capture the clinical problem more appropriately.",
- "error": null
-}
-2025-06-04 01:30:13,907 - INFO - ==================================================
-
-2025-06-04 01:44:50,735 - INFO -
-==================================================
-2025-06-04 01:44:50,738 - INFO - Starting new clinical case processing
-2025-06-04 01:44:50,738 - INFO - Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
-2025-06-04 01:44:50,739 - INFO - Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-2025-06-04 01:44:50,739 - INFO - ==================================================
-
-2025-06-04 01:44:50,746 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 01:44:51,895 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 01:44:51,901 - INFO -
-==================================================
-2025-06-04 01:44:51,902 - INFO - Stage: extract_patient_info
-2025-06-04 01:44:51,902 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:44:51,902 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:44:51,904 - INFO - ==================================================
-
-2025-06-04 01:44:51,905 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:44:54,257 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "Z79.4", "rationale": "The clinical scenario describes a patient on long-term low-dose prednisone (a corticosteroid), represented by code Z79.4 (Long term (current) use of steroids), which is the most directly relevant ICD-10 code from the provided list. None of the other codes specifically address infectious or mycobacterial processes, so Z79.4 best matches the clinical information."}
-2025-06-04 01:44:54,258 - INFO -
-==================================================
-2025-06-04 01:44:54,259 - INFO - Stage: match_icd10_code
-2025-06-04 01:44:54,259 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:44:54,260 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The clinical scenario describes a patient on long-term low-dose prednisone (a corticosteroid), represented by code Z79.4 (Long term (current) use of steroids), which is the most directly relevant ICD-10 code from the provided list. None of the other codes specifically address infectious or mycobacterial processes, so Z79.4 best matches the clinical information.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:44:54,262 - INFO - ==================================================
-
-2025-06-04 01:44:54,265 - INFO -
-==================================================
-2025-06-04 01:44:54,265 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:44:54,266 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The clinical scenario describes a patient on long-term low-dose prednisone (a corticosteroid), represented by code Z79.4 (Long term (current) use of steroids), which is the most directly relevant ICD-10 code from the provided list. None of the other codes specifically address infectious or mycobacterial processes, so Z79.4 best matches the clinical information.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:44:54,268 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The clinical scenario describes a patient on long-term low-dose prednisone (a corticosteroid), represented by code Z79.4 (Long term (current) use of steroids), which is the most directly relevant ICD-10 code from the provided list. None of the other codes specifically address infectious or mycobacterial processes, so Z79.4 best matches the clinical information.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:44:54,269 - INFO - ==================================================
-
-2025-06-04 01:44:54,272 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: Z79.4
- Rationale: The clinical scenario describes a patient on long-term low-dose prednisone (a corticosteroid), represented by code Z79.4 (Long term (current) use of steroids), which is the most directly relevant ICD-10 code from the provided list. None of the other codes specifically address infectious or mycobacterial processes, so Z79.4 best matches the clinical information.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:44:55,991 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": true, "reason": "The code Z79.4 reflects the patient's long-term use of corticosteroids (prednisone), which is relevant to immunosuppression and the increased risk of disseminated infection described in the case."}
-2025-06-04 01:44:55,992 - INFO - Validation result: {'is_valid': True, 'reason': "The code Z79.4 reflects the patient's long-term use of corticosteroids (prednisone), which is relevant to immunosuppression and the increased risk of disseminated infection described in the case."}
-2025-06-04 01:44:55,994 - INFO -
-==================================================
-2025-06-04 01:44:55,995 - INFO - Stage: validate_icd10_clinical_match
-2025-06-04 01:44:55,996 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The clinical scenario describes a patient on long-term low-dose prednisone (a corticosteroid), represented by code Z79.4 (Long term (current) use of steroids), which is the most directly relevant ICD-10 code from the provided list. None of the other codes specifically address infectious or mycobacterial processes, so Z79.4 best matches the clinical information.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:44:55,997 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The clinical scenario describes a patient on long-term low-dose prednisone (a corticosteroid), represented by code Z79.4 (Long term (current) use of steroids), which is the most directly relevant ICD-10 code from the provided list. None of the other codes specifically address infectious or mycobacterial processes, so Z79.4 best matches the clinical information.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:44:55,997 - INFO - ==================================================
-
-2025-06-04 01:44:55,999 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 01:44:57,215 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 01:44:57,218 - INFO -
-==================================================
-2025-06-04 01:44:57,219 - INFO - Stage: extract_patient_info
-2025-06-04 01:44:57,222 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The clinical scenario describes a patient on long-term low-dose prednisone (a corticosteroid), represented by code Z79.4 (Long term (current) use of steroids), which is the most directly relevant ICD-10 code from the provided list. None of the other codes specifically address infectious or mycobacterial processes, so Z79.4 best matches the clinical information.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:44:57,225 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The clinical scenario describes a patient on long-term low-dose prednisone (a corticosteroid), represented by code Z79.4 (Long term (current) use of steroids), which is the most directly relevant ICD-10 code from the provided list. None of the other codes specifically address infectious or mycobacterial processes, so Z79.4 best matches the clinical information.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:44:57,225 - INFO - ==================================================
-
-2025-06-04 01:44:57,228 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:45:00,926 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, and imaging findings of disseminated pulmonary and hepatosplenic lesions in the context of immunosuppression is most consistent with an opportunistic infection, which fits under ICD-10 code B20 (HIV disease resulting in infectious and parasitic diseases). While the case does not state an HIV diagnosis specifically, among the provided codes, B20 is the only one addressing disseminated infections in immunocompromised states. The other codes address unrelated medical conditions such as osteoporosis, diabetes, hypertension, or hypothyroidism."}
-2025-06-04 01:45:00,928 - INFO -
-==================================================
-2025-06-04 01:45:00,928 - INFO - Stage: match_icd10_code
-2025-06-04 01:45:00,929 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The clinical scenario describes a patient on long-term low-dose prednisone (a corticosteroid), represented by code Z79.4 (Long term (current) use of steroids), which is the most directly relevant ICD-10 code from the provided list. None of the other codes specifically address infectious or mycobacterial processes, so Z79.4 best matches the clinical information.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:45:00,930 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, and imaging findings of disseminated pulmonary and hepatosplenic lesions in the context of immunosuppression is most consistent with an opportunistic infection, which fits under ICD-10 code B20 (HIV disease resulting in infectious and parasitic diseases). While the case does not state an HIV diagnosis specifically, among the provided codes, B20 is the only one addressing disseminated infections in immunocompromised states. The other codes address unrelated medical conditions such as osteoporosis, diabetes, hypertension, or hypothyroidism.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:45:00,931 - INFO - ==================================================
-
-2025-06-04 01:45:00,933 - INFO -
-==================================================
-2025-06-04 01:45:00,934 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:45:00,934 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, and imaging findings of disseminated pulmonary and hepatosplenic lesions in the context of immunosuppression is most consistent with an opportunistic infection, which fits under ICD-10 code B20 (HIV disease resulting in infectious and parasitic diseases). While the case does not state an HIV diagnosis specifically, among the provided codes, B20 is the only one addressing disseminated infections in immunocompromised states. The other codes address unrelated medical conditions such as osteoporosis, diabetes, hypertension, or hypothyroidism.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:45:00,935 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, and imaging findings of disseminated pulmonary and hepatosplenic lesions in the context of immunosuppression is most consistent with an opportunistic infection, which fits under ICD-10 code B20 (HIV disease resulting in infectious and parasitic diseases). While the case does not state an HIV diagnosis specifically, among the provided codes, B20 is the only one addressing disseminated infections in immunocompromised states. The other codes address unrelated medical conditions such as osteoporosis, diabetes, hypertension, or hypothyroidism.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:45:00,935 - INFO - ==================================================
-
-2025-06-04 01:45:00,937 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation of persistent fever, night sweats, weight loss, and imaging findings of disseminated pulmonary and hepatosplenic lesions in the context of immunosuppression is most consistent with an opportunistic infection, which fits under ICD-10 code B20 (HIV disease resulting in infectious and parasitic diseases). While the case does not state an HIV diagnosis specifically, among the provided codes, B20 is the only one addressing disseminated infections in immunocompromised states. The other codes address unrelated medical conditions such as osteoporosis, diabetes, hypertension, or hypothyroidism.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:45:02,435 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "B20 is specific to HIV disease with opportunistic infections; this patient has immunosuppression from rheumatoid arthritis therapy, not HIV, so B20 is not appropriate."}
-2025-06-04 01:45:02,435 - INFO - Validation result: {'is_valid': False, 'reason': 'B20 is specific to HIV disease with opportunistic infections; this patient has immunosuppression from rheumatoid arthritis therapy, not HIV, so B20 is not appropriate.'}
-2025-06-04 01:45:02,437 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:45:05,019 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The clinical scenario describes a patient with prolonged fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions in the context of immunosuppression, raising suspicion for opportunistic infections typical of immunodeficiency, including HIV/AIDS. While the patient is on immunosuppressive therapy for rheumatoid arthritis, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest code among the ones provided that fits a severe immunocompromised state manifesting as systemic infection; no ICD-10 codes for non-tuberculous mycobacteria or histoplasmosis are present in the list."}
-2025-06-04 01:45:05,021 - INFO -
-==================================================
-2025-06-04 01:45:05,022 - INFO - Stage: match_icd10_code
-2025-06-04 01:45:05,022 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:45:05,022 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes a patient with prolonged fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions in the context of immunosuppression, raising suspicion for opportunistic infections typical of immunodeficiency, including HIV/AIDS. While the patient is on immunosuppressive therapy for rheumatoid arthritis, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest code among the ones provided that fits a severe immunocompromised state manifesting as systemic infection; no ICD-10 codes for non-tuberculous mycobacteria or histoplasmosis are present in the list.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:45:05,023 - INFO - ==================================================
-
-2025-06-04 01:45:05,025 - INFO -
-==================================================
-2025-06-04 01:45:05,026 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:45:05,026 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes a patient with prolonged fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions in the context of immunosuppression, raising suspicion for opportunistic infections typical of immunodeficiency, including HIV/AIDS. While the patient is on immunosuppressive therapy for rheumatoid arthritis, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest code among the ones provided that fits a severe immunocompromised state manifesting as systemic infection; no ICD-10 codes for non-tuberculous mycobacteria or histoplasmosis are present in the list.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:45:05,027 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes a patient with prolonged fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions in the context of immunosuppression, raising suspicion for opportunistic infections typical of immunodeficiency, including HIV/AIDS. While the patient is on immunosuppressive therapy for rheumatoid arthritis, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest code among the ones provided that fits a severe immunocompromised state manifesting as systemic infection; no ICD-10 codes for non-tuberculous mycobacteria or histoplasmosis are present in the list.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:45:05,028 - INFO - ==================================================
-
-2025-06-04 01:45:05,030 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The clinical scenario describes a patient with prolonged fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions in the context of immunosuppression, raising suspicion for opportunistic infections typical of immunodeficiency, including HIV/AIDS. While the patient is on immunosuppressive therapy for rheumatoid arthritis, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest code among the ones provided that fits a severe immunocompromised state manifesting as systemic infection; no ICD-10 codes for non-tuberculous mycobacteria or histoplasmosis are present in the list.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:45:06,536 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is for HIV disease resulting in infectious and parasitic diseases, but this patient is immunosuppressed due to methotrexate and prednisone, not HIV."}
-2025-06-04 01:45:06,537 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is for HIV disease resulting in infectious and parasitic diseases, but this patient is immunosuppressed due to methotrexate and prednisone, not HIV.'}
-2025-06-04 01:45:06,539 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:45:08,411 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "Z79.4", "rationale": "The clinical picture involves an immunosuppressed patient due to long-term use of immunosuppressive drugs (methotrexate and prednisone). Z79.4 corresponds to long-term (current) use of immunosuppressive drugs, which best reflects the setting of the clinical scenario and the main underlying risk factor for disseminated mycobacterial or fungal infection."}
-2025-06-04 01:45:08,419 - INFO -
-==================================================
-2025-06-04 01:45:08,420 - INFO - Stage: match_icd10_code
-2025-06-04 01:45:08,421 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:45:08,421 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The clinical picture involves an immunosuppressed patient due to long-term use of immunosuppressive drugs (methotrexate and prednisone). Z79.4 corresponds to long-term (current) use of immunosuppressive drugs, which best reflects the setting of the clinical scenario and the main underlying risk factor for disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:45:08,422 - INFO - ==================================================
-
-2025-06-04 01:45:08,425 - INFO -
-==================================================
-2025-06-04 01:45:08,426 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:45:08,427 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The clinical picture involves an immunosuppressed patient due to long-term use of immunosuppressive drugs (methotrexate and prednisone). Z79.4 corresponds to long-term (current) use of immunosuppressive drugs, which best reflects the setting of the clinical scenario and the main underlying risk factor for disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:45:08,427 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The clinical picture involves an immunosuppressed patient due to long-term use of immunosuppressive drugs (methotrexate and prednisone). Z79.4 corresponds to long-term (current) use of immunosuppressive drugs, which best reflects the setting of the clinical scenario and the main underlying risk factor for disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:45:08,428 - INFO - ==================================================
-
-2025-06-04 01:45:08,431 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: Z79.4
- Rationale: The clinical picture involves an immunosuppressed patient due to long-term use of immunosuppressive drugs (methotrexate and prednisone). Z79.4 corresponds to long-term (current) use of immunosuppressive drugs, which best reflects the setting of the clinical scenario and the main underlying risk factor for disseminated mycobacterial or fungal infection.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:45:09,960 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": true, "reason": "The code Z79.4 appropriately indicates long-term use of immunosuppressive drugs, matching the patient's chronic methotrexate and prednisone therapy described in the clinical scenario."}
-2025-06-04 01:45:09,962 - INFO - Validation result: {'is_valid': True, 'reason': "The code Z79.4 appropriately indicates long-term use of immunosuppressive drugs, matching the patient's chronic methotrexate and prednisone therapy described in the clinical scenario."}
-2025-06-04 01:45:09,964 - INFO -
-==================================================
-2025-06-04 01:45:09,965 - INFO - Stage: validate_icd10_clinical_match
-2025-06-04 01:45:09,966 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The clinical picture involves an immunosuppressed patient due to long-term use of immunosuppressive drugs (methotrexate and prednisone). Z79.4 corresponds to long-term (current) use of immunosuppressive drugs, which best reflects the setting of the clinical scenario and the main underlying risk factor for disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:45:09,966 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The clinical picture involves an immunosuppressed patient due to long-term use of immunosuppressive drugs (methotrexate and prednisone). Z79.4 corresponds to long-term (current) use of immunosuppressive drugs, which best reflects the setting of the clinical scenario and the main underlying risk factor for disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:45:09,967 - INFO - ==================================================
-
-2025-06-04 01:45:09,969 - INFO -
-==================================================
-2025-06-04 01:45:09,969 - INFO - Final Result:
-2025-06-04 01:45:09,969 - INFO - {
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The clinical picture involves an immunosuppressed patient due to long-term use of immunosuppressive drugs (methotrexate and prednisone). Z79.4 corresponds to long-term (current) use of immunosuppressive drugs, which best reflects the setting of the clinical scenario and the main underlying risk factor for disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:45:09,970 - INFO - ==================================================
-
-2025-06-04 01:46:46,221 - INFO -
-==================================================
-2025-06-04 01:46:46,223 - INFO - Starting new clinical case processing
-2025-06-04 01:46:46,224 - INFO - Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
-2025-06-04 01:46:46,224 - INFO - Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-2025-06-04 01:46:46,225 - INFO - ==================================================
-
-2025-06-04 01:46:46,230 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 01:46:47,407 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 01:46:47,411 - INFO -
-==================================================
-2025-06-04 01:46:47,412 - INFO - Stage: extract_patient_info
-2025-06-04 01:46:47,412 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:46:47,413 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:46:47,413 - INFO - ==================================================
-
-2025-06-04 01:46:47,415 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:46:49,669 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient is immunosuppressed and presents with prolonged fever, weight loss, night sweats, and imaging revealing nodular lesions suggestive of a disseminated infectious process consistent with an opportunistic infection, which aligns with B20 for HIV disease with related symptoms and infections, as ICD-10 B20 broadly covers immunodeficiency and related opportunistic infections. However, as none of the other codes specifically address disseminated mycobacterial or fungal infections, B20 is the most appropriate from the provided list."}
-2025-06-04 01:46:49,671 - INFO -
-==================================================
-2025-06-04 01:46:49,672 - INFO - Stage: match_icd10_code
-2025-06-04 01:46:49,673 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:46:49,673 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient is immunosuppressed and presents with prolonged fever, weight loss, night sweats, and imaging revealing nodular lesions suggestive of a disseminated infectious process consistent with an opportunistic infection, which aligns with B20 for HIV disease with related symptoms and infections, as ICD-10 B20 broadly covers immunodeficiency and related opportunistic infections. However, as none of the other codes specifically address disseminated mycobacterial or fungal infections, B20 is the most appropriate from the provided list.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:46:49,674 - INFO - ==================================================
-
-2025-06-04 01:46:49,678 - INFO -
-==================================================
-2025-06-04 01:46:49,679 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:46:49,679 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient is immunosuppressed and presents with prolonged fever, weight loss, night sweats, and imaging revealing nodular lesions suggestive of a disseminated infectious process consistent with an opportunistic infection, which aligns with B20 for HIV disease with related symptoms and infections, as ICD-10 B20 broadly covers immunodeficiency and related opportunistic infections. However, as none of the other codes specifically address disseminated mycobacterial or fungal infections, B20 is the most appropriate from the provided list.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:46:49,680 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient is immunosuppressed and presents with prolonged fever, weight loss, night sweats, and imaging revealing nodular lesions suggestive of a disseminated infectious process consistent with an opportunistic infection, which aligns with B20 for HIV disease with related symptoms and infections, as ICD-10 B20 broadly covers immunodeficiency and related opportunistic infections. However, as none of the other codes specifically address disseminated mycobacterial or fungal infections, B20 is the most appropriate from the provided list.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:46:49,681 - INFO - ==================================================
-
-2025-06-04 01:46:49,683 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient is immunosuppressed and presents with prolonged fever, weight loss, night sweats, and imaging revealing nodular lesions suggestive of a disseminated infectious process consistent with an opportunistic infection, which aligns with B20 for HIV disease with related symptoms and infections, as ICD-10 B20 broadly covers immunodeficiency and related opportunistic infections. However, as none of the other codes specifically address disseminated mycobacterial or fungal infections, B20 is the most appropriate from the provided list.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:46:51,297 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "B20 is specific for HIV disease causing immunosuppression, but this patient is immunosuppressed due to methotrexate and prednisone for rheumatoid arthritis, not HIV; thus, B20 is not appropriate."}
-2025-06-04 01:46:51,298 - INFO - Validation result: {'is_valid': False, 'reason': 'B20 is specific for HIV disease causing immunosuppression, but this patient is immunosuppressed due to methotrexate and prednisone for rheumatoid arthritis, not HIV; thus, B20 is not appropriate.'}
-2025-06-04 01:46:51,303 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:46:54,389 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "B20 represents HIV disease resulting in infectious and parasitic diseases. Though the patient is not stated to have HIV, none of the other provided codes pertain to disseminated infection or immunosuppression. The clinical scenario is of an immunosuppressed patient with multi-organ disseminated infection (possible mycobacteria or histoplasma), which most closely fits the infectious etiology described by B20 among the available codes."}
-2025-06-04 01:46:54,393 - INFO -
-==================================================
-2025-06-04 01:46:54,393 - INFO - Stage: match_icd10_code
-2025-06-04 01:46:54,394 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:46:54,394 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 represents HIV disease resulting in infectious and parasitic diseases. Though the patient is not stated to have HIV, none of the other provided codes pertain to disseminated infection or immunosuppression. The clinical scenario is of an immunosuppressed patient with multi-organ disseminated infection (possible mycobacteria or histoplasma), which most closely fits the infectious etiology described by B20 among the available codes.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:46:54,394 - INFO - ==================================================
-
-2025-06-04 01:46:54,399 - INFO -
-==================================================
-2025-06-04 01:46:54,400 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:46:54,400 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 represents HIV disease resulting in infectious and parasitic diseases. Though the patient is not stated to have HIV, none of the other provided codes pertain to disseminated infection or immunosuppression. The clinical scenario is of an immunosuppressed patient with multi-organ disseminated infection (possible mycobacteria or histoplasma), which most closely fits the infectious etiology described by B20 among the available codes.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:46:54,401 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 represents HIV disease resulting in infectious and parasitic diseases. Though the patient is not stated to have HIV, none of the other provided codes pertain to disseminated infection or immunosuppression. The clinical scenario is of an immunosuppressed patient with multi-organ disseminated infection (possible mycobacteria or histoplasma), which most closely fits the infectious etiology described by B20 among the available codes.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:46:54,402 - INFO - ==================================================
-
-2025-06-04 01:46:54,403 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: B20 represents HIV disease resulting in infectious and parasitic diseases. Though the patient is not stated to have HIV, none of the other provided codes pertain to disseminated infection or immunosuppression. The clinical scenario is of an immunosuppressed patient with multi-organ disseminated infection (possible mycobacteria or histoplasma), which most closely fits the infectious etiology described by B20 among the available codes.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:46:56,125 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease with resulting infections, but this patient does not have HIV; her immunosuppression is due to rheumatoid arthritis treatment, so B20 is not appropriate for this scenario."}
-2025-06-04 01:46:56,125 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease with resulting infections, but this patient does not have HIV; her immunosuppression is due to rheumatoid arthritis treatment, so B20 is not appropriate for this scenario.'}
-2025-06-04 01:46:56,130 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:46:58,047 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's persistent fever, night sweats, weight loss, and organ lesions while immunosuppressed are highly suggestive of an opportunistic infectious process. Among the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest match as it encompasses complex infections in immunocompromised hosts; the other codes pertain to unrelated chronic diseases or status codes."}
-2025-06-04 01:46:58,049 - INFO -
-==================================================
-2025-06-04 01:46:58,049 - INFO - Stage: match_icd10_code
-2025-06-04 01:46:58,049 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:46:58,050 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's persistent fever, night sweats, weight loss, and organ lesions while immunosuppressed are highly suggestive of an opportunistic infectious process. Among the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest match as it encompasses complex infections in immunocompromised hosts; the other codes pertain to unrelated chronic diseases or status codes.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:46:58,051 - INFO - ==================================================
-
-2025-06-04 01:46:58,053 - INFO -
-==================================================
-2025-06-04 01:46:58,053 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:46:58,054 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's persistent fever, night sweats, weight loss, and organ lesions while immunosuppressed are highly suggestive of an opportunistic infectious process. Among the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest match as it encompasses complex infections in immunocompromised hosts; the other codes pertain to unrelated chronic diseases or status codes.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:46:58,054 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's persistent fever, night sweats, weight loss, and organ lesions while immunosuppressed are highly suggestive of an opportunistic infectious process. Among the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest match as it encompasses complex infections in immunocompromised hosts; the other codes pertain to unrelated chronic diseases or status codes.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:46:58,055 - INFO - ==================================================
-
-2025-06-04 01:46:58,056 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's persistent fever, night sweats, weight loss, and organ lesions while immunosuppressed are highly suggestive of an opportunistic infectious process. Among the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest match as it encompasses complex infections in immunocompromised hosts; the other codes pertain to unrelated chronic diseases or status codes.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:46:59,655 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 refers to HIV disease with infectious complications, but this patient has immunosuppression from methotrexate and prednisone for rheumatoid arthritis, not HIV; therefore, B20 is not an appropriate match."}
-2025-06-04 01:46:59,656 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 refers to HIV disease with infectious complications, but this patient has immunosuppression from methotrexate and prednisone for rheumatoid arthritis, not HIV; therefore, B20 is not an appropriate match.'}
-2025-06-04 01:46:59,657 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:47:02,119 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, pulmonary and hepatosplenic lesions, and immunosuppression from methotrexate and prednisone raises suspicion for a disseminated infectious process often seen in immunocompromised individuals. Among the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the only one fitting a systemic infectious workup; although the patient does not have a confirmed HIV diagnosis, it most closely represents the diagnostic concern for opportunistic infections in immunocompromised hosts. The other codes are unrelated to disseminated mycobacterial or fungal infection."}
-2025-06-04 01:47:02,122 - INFO -
-==================================================
-2025-06-04 01:47:02,123 - INFO - Stage: match_icd10_code
-2025-06-04 01:47:02,124 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:02,125 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, pulmonary and hepatosplenic lesions, and immunosuppression from methotrexate and prednisone raises suspicion for a disseminated infectious process often seen in immunocompromised individuals. Among the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the only one fitting a systemic infectious workup; although the patient does not have a confirmed HIV diagnosis, it most closely represents the diagnostic concern for opportunistic infections in immunocompromised hosts. The other codes are unrelated to disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:02,127 - INFO - ==================================================
-
-2025-06-04 01:47:02,131 - INFO -
-==================================================
-2025-06-04 01:47:02,131 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:47:02,132 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, pulmonary and hepatosplenic lesions, and immunosuppression from methotrexate and prednisone raises suspicion for a disseminated infectious process often seen in immunocompromised individuals. Among the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the only one fitting a systemic infectious workup; although the patient does not have a confirmed HIV diagnosis, it most closely represents the diagnostic concern for opportunistic infections in immunocompromised hosts. The other codes are unrelated to disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:02,132 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, pulmonary and hepatosplenic lesions, and immunosuppression from methotrexate and prednisone raises suspicion for a disseminated infectious process often seen in immunocompromised individuals. Among the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the only one fitting a systemic infectious workup; although the patient does not have a confirmed HIV diagnosis, it most closely represents the diagnostic concern for opportunistic infections in immunocompromised hosts. The other codes are unrelated to disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:02,133 - INFO - ==================================================
-
-2025-06-04 01:47:02,136 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation of persistent fever, night sweats, weight loss, pulmonary and hepatosplenic lesions, and immunosuppression from methotrexate and prednisone raises suspicion for a disseminated infectious process often seen in immunocompromised individuals. Among the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the only one fitting a systemic infectious workup; although the patient does not have a confirmed HIV diagnosis, it most closely represents the diagnostic concern for opportunistic infections in immunocompromised hosts. The other codes are unrelated to disseminated mycobacterial or fungal infection.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:47:03,881 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 requires a confirmed HIV diagnosis, which is not present in this case; the patient is immunosuppressed from medications, not HIV."}
-2025-06-04 01:47:03,881 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 requires a confirmed HIV diagnosis, which is not present in this case; the patient is immunosuppressed from medications, not HIV.'}
-2025-06-04 01:47:03,884 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:47:06,155 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The clinical picture of an immunosuppressed patient with persistent fever, night sweats, weight loss, and organ lesions is suggestive of a disseminated opportunistic infection. B20 is used for HIV disease resulting in infectious and parasitic diseases; while the patient is not explicitly described as HIV-positive, among the provided codes, B20 is the only one relevant to serious opportunistic infections. None of the other codes pertain to infectious etiologies or immunosuppression context as described."}
-2025-06-04 01:47:06,157 - INFO -
-==================================================
-2025-06-04 01:47:06,157 - INFO - Stage: match_icd10_code
-2025-06-04 01:47:06,158 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:06,159 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical picture of an immunosuppressed patient with persistent fever, night sweats, weight loss, and organ lesions is suggestive of a disseminated opportunistic infection. B20 is used for HIV disease resulting in infectious and parasitic diseases; while the patient is not explicitly described as HIV-positive, among the provided codes, B20 is the only one relevant to serious opportunistic infections. None of the other codes pertain to infectious etiologies or immunosuppression context as described.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:06,159 - INFO - ==================================================
-
-2025-06-04 01:47:06,163 - INFO -
-==================================================
-2025-06-04 01:47:06,164 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:47:06,164 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical picture of an immunosuppressed patient with persistent fever, night sweats, weight loss, and organ lesions is suggestive of a disseminated opportunistic infection. B20 is used for HIV disease resulting in infectious and parasitic diseases; while the patient is not explicitly described as HIV-positive, among the provided codes, B20 is the only one relevant to serious opportunistic infections. None of the other codes pertain to infectious etiologies or immunosuppression context as described.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:06,165 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical picture of an immunosuppressed patient with persistent fever, night sweats, weight loss, and organ lesions is suggestive of a disseminated opportunistic infection. B20 is used for HIV disease resulting in infectious and parasitic diseases; while the patient is not explicitly described as HIV-positive, among the provided codes, B20 is the only one relevant to serious opportunistic infections. None of the other codes pertain to infectious etiologies or immunosuppression context as described.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:06,166 - INFO - ==================================================
-
-2025-06-04 01:47:06,169 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The clinical picture of an immunosuppressed patient with persistent fever, night sweats, weight loss, and organ lesions is suggestive of a disseminated opportunistic infection. B20 is used for HIV disease resulting in infectious and parasitic diseases; while the patient is not explicitly described as HIV-positive, among the provided codes, B20 is the only one relevant to serious opportunistic infections. None of the other codes pertain to infectious etiologies or immunosuppression context as described.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:47:07,787 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "B20 is specific for HIV disease resulting in infectious/parasitic diseases, but this patient is immunosuppressed due to methotrexate and prednisone for rheumatoid arthritis, not HIV; thus, B20 is not appropriate for this case."}
-2025-06-04 01:47:07,788 - INFO - Validation result: {'is_valid': False, 'reason': 'B20 is specific for HIV disease resulting in infectious/parasitic diseases, but this patient is immunosuppressed due to methotrexate and prednisone for rheumatoid arthritis, not HIV; thus, B20 is not appropriate for this case.'}
-2025-06-04 01:47:07,791 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:47:09,892 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's clinical syndrome of persistent fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions is most suggestive of a disseminated opportunistic infection, which is characteristic of immunocompromised hosts such as those with HIV/AIDS. Among the provided ICD-10 codes, B20 represents HIV disease resulting in infectious and parasitic diseases, which best fits the clinical suspicion of disseminated mycobacterial or fungal infection in an immunosuppressed patient."}
-2025-06-04 01:47:09,894 - INFO -
-==================================================
-2025-06-04 01:47:09,895 - INFO - Stage: match_icd10_code
-2025-06-04 01:47:09,896 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:09,897 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's clinical syndrome of persistent fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions is most suggestive of a disseminated opportunistic infection, which is characteristic of immunocompromised hosts such as those with HIV/AIDS. Among the provided ICD-10 codes, B20 represents HIV disease resulting in infectious and parasitic diseases, which best fits the clinical suspicion of disseminated mycobacterial or fungal infection in an immunosuppressed patient.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:09,897 - INFO - ==================================================
-
-2025-06-04 01:47:09,899 - INFO -
-==================================================
-2025-06-04 01:47:09,899 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:47:09,901 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's clinical syndrome of persistent fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions is most suggestive of a disseminated opportunistic infection, which is characteristic of immunocompromised hosts such as those with HIV/AIDS. Among the provided ICD-10 codes, B20 represents HIV disease resulting in infectious and parasitic diseases, which best fits the clinical suspicion of disseminated mycobacterial or fungal infection in an immunosuppressed patient.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:09,901 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's clinical syndrome of persistent fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions is most suggestive of a disseminated opportunistic infection, which is characteristic of immunocompromised hosts such as those with HIV/AIDS. Among the provided ICD-10 codes, B20 represents HIV disease resulting in infectious and parasitic diseases, which best fits the clinical suspicion of disseminated mycobacterial or fungal infection in an immunosuppressed patient.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:09,902 - INFO - ==================================================
-
-2025-06-04 01:47:09,903 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's clinical syndrome of persistent fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions is most suggestive of a disseminated opportunistic infection, which is characteristic of immunocompromised hosts such as those with HIV/AIDS. Among the provided ICD-10 codes, B20 represents HIV disease resulting in infectious and parasitic diseases, which best fits the clinical suspicion of disseminated mycobacterial or fungal infection in an immunosuppressed patient.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:47:18,804 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is for HIV disease resulting in infectious and parasitic diseases, but the patient is immunosuppressed due to methotrexate and prednisone for rheumatoid arthritis, not HIV/AIDS."}
-2025-06-04 01:47:18,806 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is for HIV disease resulting in infectious and parasitic diseases, but the patient is immunosuppressed due to methotrexate and prednisone for rheumatoid arthritis, not HIV/AIDS.'}
-2025-06-04 01:47:18,811 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:47:21,643 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "B20 is the ICD-10 code for Human immunodeficiency virus [HIV] disease, which may be considered here due to the presentation of disseminated opportunistic infections like non-tuberculous mycobacteria or histoplasmosis in an immunocompromised patient. None of the other codes are specific for disseminated mycobacterial or fungal infections. Although the patient has rheumatoid arthritis on immunosuppressants, B20 is the closest code provided representing an immunocompromised state potentially associated with such infections."}
-2025-06-04 01:47:21,646 - INFO -
-==================================================
-2025-06-04 01:47:21,647 - INFO - Stage: match_icd10_code
-2025-06-04 01:47:21,648 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:21,649 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for Human immunodeficiency virus [HIV] disease, which may be considered here due to the presentation of disseminated opportunistic infections like non-tuberculous mycobacteria or histoplasmosis in an immunocompromised patient. None of the other codes are specific for disseminated mycobacterial or fungal infections. Although the patient has rheumatoid arthritis on immunosuppressants, B20 is the closest code provided representing an immunocompromised state potentially associated with such infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:21,649 - INFO - ==================================================
-
-2025-06-04 01:47:21,653 - INFO -
-==================================================
-2025-06-04 01:47:21,653 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:47:21,654 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for Human immunodeficiency virus [HIV] disease, which may be considered here due to the presentation of disseminated opportunistic infections like non-tuberculous mycobacteria or histoplasmosis in an immunocompromised patient. None of the other codes are specific for disseminated mycobacterial or fungal infections. Although the patient has rheumatoid arthritis on immunosuppressants, B20 is the closest code provided representing an immunocompromised state potentially associated with such infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:21,655 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for Human immunodeficiency virus [HIV] disease, which may be considered here due to the presentation of disseminated opportunistic infections like non-tuberculous mycobacteria or histoplasmosis in an immunocompromised patient. None of the other codes are specific for disseminated mycobacterial or fungal infections. Although the patient has rheumatoid arthritis on immunosuppressants, B20 is the closest code provided representing an immunocompromised state potentially associated with such infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:21,656 - INFO - ==================================================
-
-2025-06-04 01:47:21,658 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: B20 is the ICD-10 code for Human immunodeficiency virus [HIV] disease, which may be considered here due to the presentation of disseminated opportunistic infections like non-tuberculous mycobacteria or histoplasmosis in an immunocompromised patient. None of the other codes are specific for disseminated mycobacterial or fungal infections. Although the patient has rheumatoid arthritis on immunosuppressants, B20 is the closest code provided representing an immunocompromised state potentially associated with such infections.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:47:23,257 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease, but the patient has immunosuppression due to rheumatoid arthritis therapy, not HIV; therefore, B20 is not appropriate for this case."}
-2025-06-04 01:47:23,258 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease, but the patient has immunosuppression due to rheumatoid arthritis therapy, not HIV; therefore, B20 is not appropriate for this case.'}
-2025-06-04 01:47:23,261 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:47:26,341 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "Z79.4", "rationale": "This code is for long-term (current) use of immunosuppressive drugs, which is central to the patient's clinical context as she is on methotrexate and prednisone for rheumatoid arthritis. This increases her risk for disseminated infections such as atypical mycobacteria or histoplasmosis. None of the available ICD-10 codes specifically identify mycobacterial or disseminated fungal infection, making Z79.4 the most appropriate code from the provided list to capture her immunosuppressed state, which is integral to her diagnostic risk."}
-2025-06-04 01:47:26,343 - INFO -
-==================================================
-2025-06-04 01:47:26,344 - INFO - Stage: match_icd10_code
-2025-06-04 01:47:26,344 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:26,345 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code is for long-term (current) use of immunosuppressive drugs, which is central to the patient's clinical context as she is on methotrexate and prednisone for rheumatoid arthritis. This increases her risk for disseminated infections such as atypical mycobacteria or histoplasmosis. None of the available ICD-10 codes specifically identify mycobacterial or disseminated fungal infection, making Z79.4 the most appropriate code from the provided list to capture her immunosuppressed state, which is integral to her diagnostic risk.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:26,345 - INFO - ==================================================
-
-2025-06-04 01:47:26,348 - INFO -
-==================================================
-2025-06-04 01:47:26,348 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:47:26,349 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code is for long-term (current) use of immunosuppressive drugs, which is central to the patient's clinical context as she is on methotrexate and prednisone for rheumatoid arthritis. This increases her risk for disseminated infections such as atypical mycobacteria or histoplasmosis. None of the available ICD-10 codes specifically identify mycobacterial or disseminated fungal infection, making Z79.4 the most appropriate code from the provided list to capture her immunosuppressed state, which is integral to her diagnostic risk.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:26,350 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code is for long-term (current) use of immunosuppressive drugs, which is central to the patient's clinical context as she is on methotrexate and prednisone for rheumatoid arthritis. This increases her risk for disseminated infections such as atypical mycobacteria or histoplasmosis. None of the available ICD-10 codes specifically identify mycobacterial or disseminated fungal infection, making Z79.4 the most appropriate code from the provided list to capture her immunosuppressed state, which is integral to her diagnostic risk.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:26,350 - INFO - ==================================================
-
-2025-06-04 01:47:26,352 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: Z79.4
- Rationale: This code is for long-term (current) use of immunosuppressive drugs, which is central to the patient's clinical context as she is on methotrexate and prednisone for rheumatoid arthritis. This increases her risk for disseminated infections such as atypical mycobacteria or histoplasmosis. None of the available ICD-10 codes specifically identify mycobacterial or disseminated fungal infection, making Z79.4 the most appropriate code from the provided list to capture her immunosuppressed state, which is integral to her diagnostic risk.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:47:28,025 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": true, "reason": "Z79.4 is appropriate since it indicates long-term use of immunosuppressive drugs, matching the clinical context of methotrexate and prednisone use, which is central to the patient's current risk for disseminated infection."}
-2025-06-04 01:47:28,026 - INFO - Validation result: {'is_valid': True, 'reason': "Z79.4 is appropriate since it indicates long-term use of immunosuppressive drugs, matching the clinical context of methotrexate and prednisone use, which is central to the patient's current risk for disseminated infection."}
-2025-06-04 01:47:28,028 - INFO -
-==================================================
-2025-06-04 01:47:28,030 - INFO - Stage: validate_icd10_clinical_match
-2025-06-04 01:47:28,030 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code is for long-term (current) use of immunosuppressive drugs, which is central to the patient's clinical context as she is on methotrexate and prednisone for rheumatoid arthritis. This increases her risk for disseminated infections such as atypical mycobacteria or histoplasmosis. None of the available ICD-10 codes specifically identify mycobacterial or disseminated fungal infection, making Z79.4 the most appropriate code from the provided list to capture her immunosuppressed state, which is integral to her diagnostic risk.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:28,031 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code is for long-term (current) use of immunosuppressive drugs, which is central to the patient's clinical context as she is on methotrexate and prednisone for rheumatoid arthritis. This increases her risk for disseminated infections such as atypical mycobacteria or histoplasmosis. None of the available ICD-10 codes specifically identify mycobacterial or disseminated fungal infection, making Z79.4 the most appropriate code from the provided list to capture her immunosuppressed state, which is integral to her diagnostic risk.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:28,032 - INFO - ==================================================
-
-2025-06-04 01:47:28,035 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 01:47:29,133 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 01:47:29,135 - INFO -
-==================================================
-2025-06-04 01:47:29,135 - INFO - Stage: extract_patient_info
-2025-06-04 01:47:29,136 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code is for long-term (current) use of immunosuppressive drugs, which is central to the patient's clinical context as she is on methotrexate and prednisone for rheumatoid arthritis. This increases her risk for disseminated infections such as atypical mycobacteria or histoplasmosis. None of the available ICD-10 codes specifically identify mycobacterial or disseminated fungal infection, making Z79.4 the most appropriate code from the provided list to capture her immunosuppressed state, which is integral to her diagnostic risk.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:29,137 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code is for long-term (current) use of immunosuppressive drugs, which is central to the patient's clinical context as she is on methotrexate and prednisone for rheumatoid arthritis. This increases her risk for disseminated infections such as atypical mycobacteria or histoplasmosis. None of the available ICD-10 codes specifically identify mycobacterial or disseminated fungal infection, making Z79.4 the most appropriate code from the provided list to capture her immunosuppressed state, which is integral to her diagnostic risk.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:29,138 - INFO - ==================================================
-
-2025-06-04 01:47:29,139 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:47:31,065 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "Z79.4", "rationale": "This code represents long-term (current) use of immunosuppressive drugs, which is the relevant underlying factor in this patient with rheumatoid arthritis on methotrexate and prednisone, predisposing her to disseminated infections such as atypical mycobacterial or fungal infections. None of the other codes provided are specific for disseminated infection, immunodeficiency, or granulomatous disease."}
-2025-06-04 01:47:31,067 - INFO -
-==================================================
-2025-06-04 01:47:31,068 - INFO - Stage: match_icd10_code
-2025-06-04 01:47:31,070 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code is for long-term (current) use of immunosuppressive drugs, which is central to the patient's clinical context as she is on methotrexate and prednisone for rheumatoid arthritis. This increases her risk for disseminated infections such as atypical mycobacteria or histoplasmosis. None of the available ICD-10 codes specifically identify mycobacterial or disseminated fungal infection, making Z79.4 the most appropriate code from the provided list to capture her immunosuppressed state, which is integral to her diagnostic risk.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:31,072 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code represents long-term (current) use of immunosuppressive drugs, which is the relevant underlying factor in this patient with rheumatoid arthritis on methotrexate and prednisone, predisposing her to disseminated infections such as atypical mycobacterial or fungal infections. None of the other codes provided are specific for disseminated infection, immunodeficiency, or granulomatous disease.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:31,074 - INFO - ==================================================
-
-2025-06-04 01:47:31,076 - INFO -
-==================================================
-2025-06-04 01:47:31,077 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:47:31,077 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code represents long-term (current) use of immunosuppressive drugs, which is the relevant underlying factor in this patient with rheumatoid arthritis on methotrexate and prednisone, predisposing her to disseminated infections such as atypical mycobacterial or fungal infections. None of the other codes provided are specific for disseminated infection, immunodeficiency, or granulomatous disease.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:31,078 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code represents long-term (current) use of immunosuppressive drugs, which is the relevant underlying factor in this patient with rheumatoid arthritis on methotrexate and prednisone, predisposing her to disseminated infections such as atypical mycobacterial or fungal infections. None of the other codes provided are specific for disseminated infection, immunodeficiency, or granulomatous disease.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:31,078 - INFO - ==================================================
-
-2025-06-04 01:47:31,080 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: Z79.4
- Rationale: This code represents long-term (current) use of immunosuppressive drugs, which is the relevant underlying factor in this patient with rheumatoid arthritis on methotrexate and prednisone, predisposing her to disseminated infections such as atypical mycobacterial or fungal infections. None of the other codes provided are specific for disseminated infection, immunodeficiency, or granulomatous disease.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:47:32,563 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": true, "reason": "The code Z79.4 indicates long-term use of immunosuppressive drugs, which is clinically relevant given the patient's chronic use of methotrexate and prednisone that increases her risk for disseminated infections."}
-2025-06-04 01:47:32,565 - INFO - Validation result: {'is_valid': True, 'reason': "The code Z79.4 indicates long-term use of immunosuppressive drugs, which is clinically relevant given the patient's chronic use of methotrexate and prednisone that increases her risk for disseminated infections."}
-2025-06-04 01:47:32,568 - INFO -
-==================================================
-2025-06-04 01:47:32,569 - INFO - Stage: validate_icd10_clinical_match
-2025-06-04 01:47:32,570 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code represents long-term (current) use of immunosuppressive drugs, which is the relevant underlying factor in this patient with rheumatoid arthritis on methotrexate and prednisone, predisposing her to disseminated infections such as atypical mycobacterial or fungal infections. None of the other codes provided are specific for disseminated infection, immunodeficiency, or granulomatous disease.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:32,571 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code represents long-term (current) use of immunosuppressive drugs, which is the relevant underlying factor in this patient with rheumatoid arthritis on methotrexate and prednisone, predisposing her to disseminated infections such as atypical mycobacterial or fungal infections. None of the other codes provided are specific for disseminated infection, immunodeficiency, or granulomatous disease.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:32,572 - INFO - ==================================================
-
-2025-06-04 01:47:32,574 - INFO -
-==================================================
-2025-06-04 01:47:32,575 - INFO - Final Result:
-2025-06-04 01:47:32,575 - INFO - {
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code represents long-term (current) use of immunosuppressive drugs, which is the relevant underlying factor in this patient with rheumatoid arthritis on methotrexate and prednisone, predisposing her to disseminated infections such as atypical mycobacterial or fungal infections. None of the other codes provided are specific for disseminated infection, immunodeficiency, or granulomatous disease.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:47:32,576 - INFO - ==================================================
-
-2025-06-04 01:58:03,969 - INFO -
-==================================================
-2025-06-04 01:58:03,973 - INFO - Starting new clinical case processing
-2025-06-04 01:58:03,974 - INFO - Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
-2025-06-04 01:58:03,974 - INFO - Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-2025-06-04 01:58:03,975 - INFO - ==================================================
-
-2025-06-04 01:58:03,984 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 01:58:05,166 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 01:58:05,171 - INFO -
-==================================================
-2025-06-04 01:58:05,172 - INFO - Stage: extract_patient_info
-2025-06-04 01:58:05,172 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:58:05,173 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 01:58:05,173 - INFO - ==================================================
-
-2025-06-04 01:58:05,175 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:58:07,606 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation is consistent with an opportunistic infection (such as disseminated mycobacterial or fungal infection) in the setting of immunosuppression. Of the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest code for immunodeficiency with infection, as there is no more precise code for disseminated mycobacterial or fungal disease on this list. The other codes do not relate to immunosuppression or infection."}
-2025-06-04 01:58:07,609 - INFO -
-==================================================
-2025-06-04 01:58:07,609 - INFO - Stage: match_icd10_code
-2025-06-04 01:58:07,610 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 1,
- "stopped": false
-}
-2025-06-04 01:58:07,611 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is consistent with an opportunistic infection (such as disseminated mycobacterial or fungal infection) in the setting of immunosuppression. Of the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest code for immunodeficiency with infection, as there is no more precise code for disseminated mycobacterial or fungal disease on this list. The other codes do not relate to immunosuppression or infection.",
- "error": null,
- "retry_count": 1,
- "stopped": false
-}
-2025-06-04 01:58:07,612 - INFO - ==================================================
-
-2025-06-04 01:58:07,614 - INFO -
-==================================================
-2025-06-04 01:58:07,615 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:58:07,615 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is consistent with an opportunistic infection (such as disseminated mycobacterial or fungal infection) in the setting of immunosuppression. Of the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest code for immunodeficiency with infection, as there is no more precise code for disseminated mycobacterial or fungal disease on this list. The other codes do not relate to immunosuppression or infection.",
- "error": null,
- "retry_count": 1,
- "stopped": false
-}
-2025-06-04 01:58:07,615 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is consistent with an opportunistic infection (such as disseminated mycobacterial or fungal infection) in the setting of immunosuppression. Of the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest code for immunodeficiency with infection, as there is no more precise code for disseminated mycobacterial or fungal disease on this list. The other codes do not relate to immunosuppression or infection.",
- "error": null,
- "retry_count": 1,
- "stopped": false
-}
-2025-06-04 01:58:07,616 - INFO - ==================================================
-
-2025-06-04 01:58:07,617 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation is consistent with an opportunistic infection (such as disseminated mycobacterial or fungal infection) in the setting of immunosuppression. Of the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest code for immunodeficiency with infection, as there is no more precise code for disseminated mycobacterial or fungal disease on this list. The other codes do not relate to immunosuppression or infection.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:58:09,136 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is for HIV disease resulting in infectious and parasitic diseases; the patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV infection, so B20 is not appropriate for this case."}
-2025-06-04 01:58:09,139 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is for HIV disease resulting in infectious and parasitic diseases; the patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV infection, so B20 is not appropriate for this case.'}
-2025-06-04 01:58:09,140 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:58:11,712 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's clinical presentation of prolonged fever, weight loss, night sweats, pulmonary nodules, and hepatosplenic lesions in an immunosuppressed host raises strong suspicion for a systemic infectious process consistent with conditions categorized under B20 (HIV disease, which encompasses severe immunodeficiency with opportunistic infections, such as disseminated mycobacterial or fungal infections). While the patient is not documented as HIV positive, B20 is the closest match among the provided codes for disseminated opportunistic infections in a severely immunocompromised patient."}
-2025-06-04 01:58:11,715 - INFO -
-==================================================
-2025-06-04 01:58:11,715 - INFO - Stage: match_icd10_code
-2025-06-04 01:58:11,716 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 01:58:11,716 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's clinical presentation of prolonged fever, weight loss, night sweats, pulmonary nodules, and hepatosplenic lesions in an immunosuppressed host raises strong suspicion for a systemic infectious process consistent with conditions categorized under B20 (HIV disease, which encompasses severe immunodeficiency with opportunistic infections, such as disseminated mycobacterial or fungal infections). While the patient is not documented as HIV positive, B20 is the closest match among the provided codes for disseminated opportunistic infections in a severely immunocompromised patient.",
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 01:58:11,717 - INFO - ==================================================
-
-2025-06-04 01:58:11,719 - INFO -
-==================================================
-2025-06-04 01:58:11,720 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:58:11,721 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's clinical presentation of prolonged fever, weight loss, night sweats, pulmonary nodules, and hepatosplenic lesions in an immunosuppressed host raises strong suspicion for a systemic infectious process consistent with conditions categorized under B20 (HIV disease, which encompasses severe immunodeficiency with opportunistic infections, such as disseminated mycobacterial or fungal infections). While the patient is not documented as HIV positive, B20 is the closest match among the provided codes for disseminated opportunistic infections in a severely immunocompromised patient.",
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 01:58:11,722 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's clinical presentation of prolonged fever, weight loss, night sweats, pulmonary nodules, and hepatosplenic lesions in an immunosuppressed host raises strong suspicion for a systemic infectious process consistent with conditions categorized under B20 (HIV disease, which encompasses severe immunodeficiency with opportunistic infections, such as disseminated mycobacterial or fungal infections). While the patient is not documented as HIV positive, B20 is the closest match among the provided codes for disseminated opportunistic infections in a severely immunocompromised patient.",
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 01:58:11,722 - INFO - ==================================================
-
-2025-06-04 01:58:11,724 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's clinical presentation of prolonged fever, weight loss, night sweats, pulmonary nodules, and hepatosplenic lesions in an immunosuppressed host raises strong suspicion for a systemic infectious process consistent with conditions categorized under B20 (HIV disease, which encompasses severe immunodeficiency with opportunistic infections, such as disseminated mycobacterial or fungal infections). While the patient is not documented as HIV positive, B20 is the closest match among the provided codes for disseminated opportunistic infections in a severely immunocompromised patient.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:58:13,212 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease, and the patient is immunosuppressed due to methotrexate and prednisone, not HIV infection."}
-2025-06-04 01:58:13,213 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease, and the patient is immunosuppressed due to methotrexate and prednisone, not HIV infection.'}
-2025-06-04 01:58:13,215 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:58:15,591 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's clinical picture—persistent fever, night sweats, weight loss, multiple pulmonary nodules, and hepatosplenic lesions—suggests a disseminated infectious process consistent with opportunistic infections seen in immunocompromised states. Of the codes listed, B20 (HIV disease resulting in infectious and parasitic diseases) most closely fits, as disseminated mycobacterial and fungal infections are AIDS-defining illnesses, and none of the other options correspond to disseminated infection. This code is selected as it encompasses the spectrum of severe immune compromise and associated infections, which aligns with the diagnostic considerations raised."}
-2025-06-04 01:58:15,593 - INFO -
-==================================================
-2025-06-04 01:58:15,594 - INFO - Stage: match_icd10_code
-2025-06-04 01:58:15,594 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 01:58:15,596 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's clinical picture\u2014persistent fever, night sweats, weight loss, multiple pulmonary nodules, and hepatosplenic lesions\u2014suggests a disseminated infectious process consistent with opportunistic infections seen in immunocompromised states. Of the codes listed, B20 (HIV disease resulting in infectious and parasitic diseases) most closely fits, as disseminated mycobacterial and fungal infections are AIDS-defining illnesses, and none of the other options correspond to disseminated infection. This code is selected as it encompasses the spectrum of severe immune compromise and associated infections, which aligns with the diagnostic considerations raised.",
- "error": null,
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 01:58:15,597 - INFO - ==================================================
-
-2025-06-04 01:58:15,599 - INFO -
-==================================================
-2025-06-04 01:58:15,599 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:58:15,600 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's clinical picture\u2014persistent fever, night sweats, weight loss, multiple pulmonary nodules, and hepatosplenic lesions\u2014suggests a disseminated infectious process consistent with opportunistic infections seen in immunocompromised states. Of the codes listed, B20 (HIV disease resulting in infectious and parasitic diseases) most closely fits, as disseminated mycobacterial and fungal infections are AIDS-defining illnesses, and none of the other options correspond to disseminated infection. This code is selected as it encompasses the spectrum of severe immune compromise and associated infections, which aligns with the diagnostic considerations raised.",
- "error": null,
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 01:58:15,601 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's clinical picture\u2014persistent fever, night sweats, weight loss, multiple pulmonary nodules, and hepatosplenic lesions\u2014suggests a disseminated infectious process consistent with opportunistic infections seen in immunocompromised states. Of the codes listed, B20 (HIV disease resulting in infectious and parasitic diseases) most closely fits, as disseminated mycobacterial and fungal infections are AIDS-defining illnesses, and none of the other options correspond to disseminated infection. This code is selected as it encompasses the spectrum of severe immune compromise and associated infections, which aligns with the diagnostic considerations raised.",
- "error": null,
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 01:58:15,601 - INFO - ==================================================
-
-2025-06-04 01:58:15,602 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's clinical picture—persistent fever, night sweats, weight loss, multiple pulmonary nodules, and hepatosplenic lesions—suggests a disseminated infectious process consistent with opportunistic infections seen in immunocompromised states. Of the codes listed, B20 (HIV disease resulting in infectious and parasitic diseases) most closely fits, as disseminated mycobacterial and fungal infections are AIDS-defining illnesses, and none of the other options correspond to disseminated infection. This code is selected as it encompasses the spectrum of severe immune compromise and associated infections, which aligns with the diagnostic considerations raised.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:58:17,782 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 (HIV disease resulting in infectious and parasitic diseases) is not appropriate because there is no evidence or mention of HIV/AIDS in the patient's history; the immunosuppression is due to methotrexate and prednisone for rheumatoid arthritis, not HIV."}
-2025-06-04 01:58:17,783 - INFO - Validation result: {'is_valid': False, 'reason': "The code B20 (HIV disease resulting in infectious and parasitic diseases) is not appropriate because there is no evidence or mention of HIV/AIDS in the patient's history; the immunosuppression is due to methotrexate and prednisone for rheumatoid arthritis, not HIV."}
-2025-06-04 01:58:17,786 - INFO -
-==================================================
-2025-06-04 01:58:17,786 - INFO - Stage: stopper_node
-2025-06-04 01:58:17,788 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Stopped after 3 retries. Manual review required.",
- "retry_count": 3,
- "stopped": true
-}
-2025-06-04 01:58:17,789 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Stopped after 3 retries. Manual review required.",
- "retry_count": 3,
- "stopped": true
-}
-2025-06-04 01:58:17,789 - INFO - ==================================================
-
-2025-06-04 01:58:17,791 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 01:58:18,987 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 01:58:18,990 - INFO -
-==================================================
-2025-06-04 01:58:18,991 - INFO - Stage: extract_patient_info
-2025-06-04 01:58:18,992 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Invalid match: The code B20 (HIV disease resulting in infectious and parasitic diseases) is not appropriate because there is no evidence or mention of HIV/AIDS in the patient's history; the immunosuppression is due to methotrexate and prednisone for rheumatoid arthritis, not HIV.",
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 01:58:18,993 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Invalid match: The code B20 (HIV disease resulting in infectious and parasitic diseases) is not appropriate because there is no evidence or mention of HIV/AIDS in the patient's history; the immunosuppression is due to methotrexate and prednisone for rheumatoid arthritis, not HIV.",
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 01:58:18,994 - INFO - ==================================================
-
-2025-06-04 01:58:18,997 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:58:21,377 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, and findings of disseminated infectious process (multiple pulmonary nodules and hepatosplenic lesions) in an immunosuppressed individual raises suspicion for severe opportunistic infections such as disseminated non-tuberculous mycobacteria or histoplasmosis, which are commonly coded under B20 for HIV disease with associated opportunistic infections. Although there is no direct mention of HIV, B20 is the most fitting code from the list for disseminated opportunistic infections, as no other code specifically addresses disseminated mycobacterial or fungal infections."}
-2025-06-04 01:58:21,379 - INFO -
-==================================================
-2025-06-04 01:58:21,380 - INFO - Stage: match_icd10_code
-2025-06-04 01:58:21,380 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 4,
- "stopped": false
-}
-2025-06-04 01:58:21,381 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, and findings of disseminated infectious process (multiple pulmonary nodules and hepatosplenic lesions) in an immunosuppressed individual raises suspicion for severe opportunistic infections such as disseminated non-tuberculous mycobacteria or histoplasmosis, which are commonly coded under B20 for HIV disease with associated opportunistic infections. Although there is no direct mention of HIV, B20 is the most fitting code from the list for disseminated opportunistic infections, as no other code specifically addresses disseminated mycobacterial or fungal infections.",
- "error": null,
- "retry_count": 4,
- "stopped": false
-}
-2025-06-04 01:58:21,381 - INFO - ==================================================
-
-2025-06-04 01:58:21,384 - INFO -
-==================================================
-2025-06-04 01:58:21,385 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 01:58:21,385 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, and findings of disseminated infectious process (multiple pulmonary nodules and hepatosplenic lesions) in an immunosuppressed individual raises suspicion for severe opportunistic infections such as disseminated non-tuberculous mycobacteria or histoplasmosis, which are commonly coded under B20 for HIV disease with associated opportunistic infections. Although there is no direct mention of HIV, B20 is the most fitting code from the list for disseminated opportunistic infections, as no other code specifically addresses disseminated mycobacterial or fungal infections.",
- "error": null,
- "retry_count": 4,
- "stopped": false
-}
-2025-06-04 01:58:21,386 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, and findings of disseminated infectious process (multiple pulmonary nodules and hepatosplenic lesions) in an immunosuppressed individual raises suspicion for severe opportunistic infections such as disseminated non-tuberculous mycobacteria or histoplasmosis, which are commonly coded under B20 for HIV disease with associated opportunistic infections. Although there is no direct mention of HIV, B20 is the most fitting code from the list for disseminated opportunistic infections, as no other code specifically addresses disseminated mycobacterial or fungal infections.",
- "error": null,
- "retry_count": 4,
- "stopped": false
-}
-2025-06-04 01:58:21,387 - INFO - ==================================================
-
-2025-06-04 01:58:21,389 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation of persistent fever, night sweats, weight loss, and findings of disseminated infectious process (multiple pulmonary nodules and hepatosplenic lesions) in an immunosuppressed individual raises suspicion for severe opportunistic infections such as disseminated non-tuberculous mycobacteria or histoplasmosis, which are commonly coded under B20 for HIV disease with associated opportunistic infections. Although there is no direct mention of HIV, B20 is the most fitting code from the list for disseminated opportunistic infections, as no other code specifically addresses disseminated mycobacterial or fungal infections.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 01:58:22,962 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is for HIV disease with associated opportunistic infections, but there is no evidence or mention of HIV infection in this patient with rheumatoid arthritis on immunosuppressive therapy."}
-2025-06-04 01:58:22,963 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is for HIV disease with associated opportunistic infections, but there is no evidence or mention of HIV infection in this patient with rheumatoid arthritis on immunosuppressive therapy.'}
-2025-06-04 01:58:22,965 - INFO -
-==================================================
-2025-06-04 01:58:22,966 - INFO - Stage: stopper_node
-2025-06-04 01:58:22,967 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Stopped after 4 retries. Manual review required.",
- "retry_count": 4,
- "stopped": true
-}
-2025-06-04 01:58:22,967 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Stopped after 4 retries. Manual review required.",
- "retry_count": 4,
- "stopped": true
-}
-2025-06-04 01:58:22,968 - INFO - ==================================================
-
-2025-06-04 01:58:22,969 - INFO -
-==================================================
-2025-06-04 01:58:22,970 - INFO - Final Result:
-2025-06-04 01:58:22,971 - INFO - {
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Stopped after 4 retries. Manual review required.",
- "retry_count": 4,
- "stopped": true
-}
-2025-06-04 01:58:22,972 - INFO - ==================================================
-
-2025-06-04 02:05:34,971 - INFO -
-==================================================
-2025-06-04 02:05:34,973 - INFO - Starting new clinical case processing
-2025-06-04 02:05:34,974 - INFO - Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
-2025-06-04 02:05:34,974 - INFO - Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-2025-06-04 02:05:34,975 - INFO - ==================================================
-
-2025-06-04 02:05:35,261 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 02:05:36,406 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 02:05:36,414 - INFO -
-==================================================
-2025-06-04 02:05:36,415 - INFO - Stage: extract_patient_info
-2025-06-04 02:05:36,415 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:36,416 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:36,416 - INFO - ==================================================
-
-2025-06-04 02:05:36,418 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:05:38,969 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "Code B20 is used for HIV disease resulting in infectious and parasitic diseases, but it is often used in immunosuppressed states in infectious contexts. The patient is immunosuppressed (on methotrexate and steroids), presenting with prolonged fever, weight loss, and evidence of disseminated infection, raising suspicion for opportunistic infections such as non-tuberculous mycobacteria or histoplasmosis, fitting the use of B20 more closely than any other listed code."}
-2025-06-04 02:05:38,970 - INFO -
-==================================================
-2025-06-04 02:05:38,970 - INFO - Stage: match_icd10_code
-2025-06-04 02:05:38,971 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:38,972 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "Code B20 is used for HIV disease resulting in infectious and parasitic diseases, but it is often used in immunosuppressed states in infectious contexts. The patient is immunosuppressed (on methotrexate and steroids), presenting with prolonged fever, weight loss, and evidence of disseminated infection, raising suspicion for opportunistic infections such as non-tuberculous mycobacteria or histoplasmosis, fitting the use of B20 more closely than any other listed code.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:38,973 - INFO - ==================================================
-
-2025-06-04 02:05:38,976 - INFO -
-==================================================
-2025-06-04 02:05:38,976 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:05:38,977 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "Code B20 is used for HIV disease resulting in infectious and parasitic diseases, but it is often used in immunosuppressed states in infectious contexts. The patient is immunosuppressed (on methotrexate and steroids), presenting with prolonged fever, weight loss, and evidence of disseminated infection, raising suspicion for opportunistic infections such as non-tuberculous mycobacteria or histoplasmosis, fitting the use of B20 more closely than any other listed code.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:38,977 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "Code B20 is used for HIV disease resulting in infectious and parasitic diseases, but it is often used in immunosuppressed states in infectious contexts. The patient is immunosuppressed (on methotrexate and steroids), presenting with prolonged fever, weight loss, and evidence of disseminated infection, raising suspicion for opportunistic infections such as non-tuberculous mycobacteria or histoplasmosis, fitting the use of B20 more closely than any other listed code.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:38,978 - INFO - ==================================================
-
-2025-06-04 02:05:38,980 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: Code B20 is used for HIV disease resulting in infectious and parasitic diseases, but it is often used in immunosuppressed states in infectious contexts. The patient is immunosuppressed (on methotrexate and steroids), presenting with prolonged fever, weight loss, and evidence of disseminated infection, raising suspicion for opportunistic infections such as non-tuberculous mycobacteria or histoplasmosis, fitting the use of B20 more closely than any other listed code.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:05:40,543 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease, but this patient is immunosuppressed due to methotrexate and steroids for rheumatoid arthritis and does not have HIV. B20 is therefore not appropriate for this case."}
-2025-06-04 02:05:40,544 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease, but this patient is immunosuppressed due to methotrexate and steroids for rheumatoid arthritis and does not have HIV. B20 is therefore not appropriate for this case.'}
-2025-06-04 02:05:40,545 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:05:42,973 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's symptoms (persistent fever, night sweats, weight loss, hepatosplenic lesions, pulmonary nodules) in an immunosuppressed setting are consistent with an opportunistic infection, for which ICD-10 code B20 (HIV disease resulting in infectious and parasitic diseases) is the closest available code from the list, as there is no specific code for disseminated mycobacterial or fungal infection provided. The other codes do not match the clinical scenario."}
-2025-06-04 02:05:42,976 - INFO -
-==================================================
-2025-06-04 02:05:42,977 - INFO - Stage: match_icd10_code
-2025-06-04 02:05:42,977 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:42,978 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's symptoms (persistent fever, night sweats, weight loss, hepatosplenic lesions, pulmonary nodules) in an immunosuppressed setting are consistent with an opportunistic infection, for which ICD-10 code B20 (HIV disease resulting in infectious and parasitic diseases) is the closest available code from the list, as there is no specific code for disseminated mycobacterial or fungal infection provided. The other codes do not match the clinical scenario.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:42,979 - INFO - ==================================================
-
-2025-06-04 02:05:42,983 - INFO -
-==================================================
-2025-06-04 02:05:42,983 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:05:42,984 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's symptoms (persistent fever, night sweats, weight loss, hepatosplenic lesions, pulmonary nodules) in an immunosuppressed setting are consistent with an opportunistic infection, for which ICD-10 code B20 (HIV disease resulting in infectious and parasitic diseases) is the closest available code from the list, as there is no specific code for disseminated mycobacterial or fungal infection provided. The other codes do not match the clinical scenario.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:42,985 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's symptoms (persistent fever, night sweats, weight loss, hepatosplenic lesions, pulmonary nodules) in an immunosuppressed setting are consistent with an opportunistic infection, for which ICD-10 code B20 (HIV disease resulting in infectious and parasitic diseases) is the closest available code from the list, as there is no specific code for disseminated mycobacterial or fungal infection provided. The other codes do not match the clinical scenario.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:42,986 - INFO - ==================================================
-
-2025-06-04 02:05:42,988 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's symptoms (persistent fever, night sweats, weight loss, hepatosplenic lesions, pulmonary nodules) in an immunosuppressed setting are consistent with an opportunistic infection, for which ICD-10 code B20 (HIV disease resulting in infectious and parasitic diseases) is the closest available code from the list, as there is no specific code for disseminated mycobacterial or fungal infection provided. The other codes do not match the clinical scenario.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:05:44,501 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 refers to HIV disease resulting in infectious and parasitic diseases, but there is no evidence in the case that the patient has HIV; immunosuppression is due to medications for rheumatoid arthritis."}
-2025-06-04 02:05:44,501 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 refers to HIV disease resulting in infectious and parasitic diseases, but there is no evidence in the case that the patient has HIV; immunosuppression is due to medications for rheumatoid arthritis.'}
-2025-06-04 02:05:44,503 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:05:46,923 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation is consistent with a systemic infectious process, specifically a possible disseminated mycobacterial or fungal infection in the setting of immunosuppression. None of the other codes fit; B20 (HIV disease) is often associated with disseminated infections, but without confirmed HIV, it's the closest infectious disease code provided. The other codes refer to osteoporosis, long-term immunosuppressive therapy, diabetes, hypothyroidism, hyperlipidemia, hypertension, vitamin D deficiency, and transplant status, none of which directly reflect disseminated infection."}
-2025-06-04 02:05:46,925 - INFO -
-==================================================
-2025-06-04 02:05:46,926 - INFO - Stage: match_icd10_code
-2025-06-04 02:05:46,926 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:46,927 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is consistent with a systemic infectious process, specifically a possible disseminated mycobacterial or fungal infection in the setting of immunosuppression. None of the other codes fit; B20 (HIV disease) is often associated with disseminated infections, but without confirmed HIV, it's the closest infectious disease code provided. The other codes refer to osteoporosis, long-term immunosuppressive therapy, diabetes, hypothyroidism, hyperlipidemia, hypertension, vitamin D deficiency, and transplant status, none of which directly reflect disseminated infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:46,928 - INFO - ==================================================
-
-2025-06-04 02:05:46,930 - INFO -
-==================================================
-2025-06-04 02:05:46,931 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:05:46,932 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is consistent with a systemic infectious process, specifically a possible disseminated mycobacterial or fungal infection in the setting of immunosuppression. None of the other codes fit; B20 (HIV disease) is often associated with disseminated infections, but without confirmed HIV, it's the closest infectious disease code provided. The other codes refer to osteoporosis, long-term immunosuppressive therapy, diabetes, hypothyroidism, hyperlipidemia, hypertension, vitamin D deficiency, and transplant status, none of which directly reflect disseminated infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:46,932 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is consistent with a systemic infectious process, specifically a possible disseminated mycobacterial or fungal infection in the setting of immunosuppression. None of the other codes fit; B20 (HIV disease) is often associated with disseminated infections, but without confirmed HIV, it's the closest infectious disease code provided. The other codes refer to osteoporosis, long-term immunosuppressive therapy, diabetes, hypothyroidism, hyperlipidemia, hypertension, vitamin D deficiency, and transplant status, none of which directly reflect disseminated infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:46,933 - INFO - ==================================================
-
-2025-06-04 02:05:46,935 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation is consistent with a systemic infectious process, specifically a possible disseminated mycobacterial or fungal infection in the setting of immunosuppression. None of the other codes fit; B20 (HIV disease) is often associated with disseminated infections, but without confirmed HIV, it's the closest infectious disease code provided. The other codes refer to osteoporosis, long-term immunosuppressive therapy, diabetes, hypothyroidism, hyperlipidemia, hypertension, vitamin D deficiency, and transplant status, none of which directly reflect disseminated infection.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:05:48,585 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease, which has not been confirmed or suggested in this patient; a code for disseminated mycobacterial or fungal infection would be more appropriate."}
-2025-06-04 02:05:48,586 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease, which has not been confirmed or suggested in this patient; a code for disseminated mycobacterial or fungal infection would be more appropriate.'}
-2025-06-04 02:05:48,589 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:05:51,035 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation of persistent fever, weight loss, night sweats, multiple pulmonary nodules, and hepatosplenic lesions on a background of immunosuppression raises concern for an opportunistic infection such as disseminated mycobacterial or fungal infection. Of the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely matches the clinical context of suspected opportunistic infection in an immunocompromised host, as the specific ICD-10 codes for disseminated mycobacterial or histoplasmosis are not available in the provided list."}
-2025-06-04 02:05:51,037 - INFO -
-==================================================
-2025-06-04 02:05:51,037 - INFO - Stage: match_icd10_code
-2025-06-04 02:05:51,038 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:51,039 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, weight loss, night sweats, multiple pulmonary nodules, and hepatosplenic lesions on a background of immunosuppression raises concern for an opportunistic infection such as disseminated mycobacterial or fungal infection. Of the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely matches the clinical context of suspected opportunistic infection in an immunocompromised host, as the specific ICD-10 codes for disseminated mycobacterial or histoplasmosis are not available in the provided list.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:51,040 - INFO - ==================================================
-
-2025-06-04 02:05:51,041 - INFO -
-==================================================
-2025-06-04 02:05:51,043 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:05:51,043 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, weight loss, night sweats, multiple pulmonary nodules, and hepatosplenic lesions on a background of immunosuppression raises concern for an opportunistic infection such as disseminated mycobacterial or fungal infection. Of the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely matches the clinical context of suspected opportunistic infection in an immunocompromised host, as the specific ICD-10 codes for disseminated mycobacterial or histoplasmosis are not available in the provided list.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:51,044 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, weight loss, night sweats, multiple pulmonary nodules, and hepatosplenic lesions on a background of immunosuppression raises concern for an opportunistic infection such as disseminated mycobacterial or fungal infection. Of the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely matches the clinical context of suspected opportunistic infection in an immunocompromised host, as the specific ICD-10 codes for disseminated mycobacterial or histoplasmosis are not available in the provided list.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:51,045 - INFO - ==================================================
-
-2025-06-04 02:05:51,046 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation of persistent fever, weight loss, night sweats, multiple pulmonary nodules, and hepatosplenic lesions on a background of immunosuppression raises concern for an opportunistic infection such as disseminated mycobacterial or fungal infection. Of the provided codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely matches the clinical context of suspected opportunistic infection in an immunocompromised host, as the specific ICD-10 codes for disseminated mycobacterial or histoplasmosis are not available in the provided list.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:05:52,785 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, whereas the patient is immunocompromised due to rheumatoid arthritis treatment and there is no evidence or mention of HIV infection in the case."}
-2025-06-04 02:05:52,787 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, whereas the patient is immunocompromised due to rheumatoid arthritis treatment and there is no evidence or mention of HIV infection in the case.'}
-2025-06-04 02:05:52,791 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:05:55,423 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "B20 denotes HIV disease resulting in infectious and parasitic diseases, and is generally used for immunodeficiency-related infections. However, among the provided codes, B20 is the only one indicative of severe, opportunistic or disseminated infectious processes, whereas the other codes refer to osteoporosis, drug use, diabetes, thyroid disorders, hyperlipidemia, hypertension, vitamin D deficiency, and transplant status, none of which match the described infectious scenario. Thus, B20 is most closely related to the clinical suspicion of immunosuppression-associated disseminated infections."}
-2025-06-04 02:05:55,425 - INFO -
-==================================================
-2025-06-04 02:05:55,426 - INFO - Stage: match_icd10_code
-2025-06-04 02:05:55,426 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:55,427 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 denotes HIV disease resulting in infectious and parasitic diseases, and is generally used for immunodeficiency-related infections. However, among the provided codes, B20 is the only one indicative of severe, opportunistic or disseminated infectious processes, whereas the other codes refer to osteoporosis, drug use, diabetes, thyroid disorders, hyperlipidemia, hypertension, vitamin D deficiency, and transplant status, none of which match the described infectious scenario. Thus, B20 is most closely related to the clinical suspicion of immunosuppression-associated disseminated infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:55,428 - INFO - ==================================================
-
-2025-06-04 02:05:55,429 - INFO -
-==================================================
-2025-06-04 02:05:55,430 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:05:55,431 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 denotes HIV disease resulting in infectious and parasitic diseases, and is generally used for immunodeficiency-related infections. However, among the provided codes, B20 is the only one indicative of severe, opportunistic or disseminated infectious processes, whereas the other codes refer to osteoporosis, drug use, diabetes, thyroid disorders, hyperlipidemia, hypertension, vitamin D deficiency, and transplant status, none of which match the described infectious scenario. Thus, B20 is most closely related to the clinical suspicion of immunosuppression-associated disseminated infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:55,431 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 denotes HIV disease resulting in infectious and parasitic diseases, and is generally used for immunodeficiency-related infections. However, among the provided codes, B20 is the only one indicative of severe, opportunistic or disseminated infectious processes, whereas the other codes refer to osteoporosis, drug use, diabetes, thyroid disorders, hyperlipidemia, hypertension, vitamin D deficiency, and transplant status, none of which match the described infectious scenario. Thus, B20 is most closely related to the clinical suspicion of immunosuppression-associated disseminated infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:55,432 - INFO - ==================================================
-
-2025-06-04 02:05:55,434 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: B20 denotes HIV disease resulting in infectious and parasitic diseases, and is generally used for immunodeficiency-related infections. However, among the provided codes, B20 is the only one indicative of severe, opportunistic or disseminated infectious processes, whereas the other codes refer to osteoporosis, drug use, diabetes, thyroid disorders, hyperlipidemia, hypertension, vitamin D deficiency, and transplant status, none of which match the described infectious scenario. Thus, B20 is most closely related to the clinical suspicion of immunosuppression-associated disseminated infections.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:05:57,438 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is for HIV disease with associated infections, but this patient has immunosuppression due to rheumatoid arthritis treatment, not HIV; a more appropriate code for iatrogenic immunosuppression or the specific infection would be needed."}
-2025-06-04 02:05:57,439 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is for HIV disease with associated infections, but this patient has immunosuppression due to rheumatoid arthritis treatment, not HIV; a more appropriate code for iatrogenic immunosuppression or the specific infection would be needed.'}
-2025-06-04 02:05:57,441 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:05:59,795 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation with prolonged fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions in the setting of immunosuppression is highly suggestive of a disseminated infectious process such as disseminated mycobacteria or histoplasmosis. Among the provided ICD-10 codes, B20 ('Human immunodeficiency virus [HIV] disease') is the only infectious disease code commonly associated with opportunistic/disseminated infections, and is the best available option from the list, although the patient is not known to have HIV."}
-2025-06-04 02:05:59,796 - INFO -
-==================================================
-2025-06-04 02:05:59,797 - INFO - Stage: match_icd10_code
-2025-06-04 02:05:59,797 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:59,798 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation with prolonged fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions in the setting of immunosuppression is highly suggestive of a disseminated infectious process such as disseminated mycobacteria or histoplasmosis. Among the provided ICD-10 codes, B20 ('Human immunodeficiency virus [HIV] disease') is the only infectious disease code commonly associated with opportunistic/disseminated infections, and is the best available option from the list, although the patient is not known to have HIV.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:59,798 - INFO - ==================================================
-
-2025-06-04 02:05:59,801 - INFO -
-==================================================
-2025-06-04 02:05:59,802 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:05:59,802 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation with prolonged fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions in the setting of immunosuppression is highly suggestive of a disseminated infectious process such as disseminated mycobacteria or histoplasmosis. Among the provided ICD-10 codes, B20 ('Human immunodeficiency virus [HIV] disease') is the only infectious disease code commonly associated with opportunistic/disseminated infections, and is the best available option from the list, although the patient is not known to have HIV.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:59,802 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation with prolonged fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions in the setting of immunosuppression is highly suggestive of a disseminated infectious process such as disseminated mycobacteria or histoplasmosis. Among the provided ICD-10 codes, B20 ('Human immunodeficiency virus [HIV] disease') is the only infectious disease code commonly associated with opportunistic/disseminated infections, and is the best available option from the list, although the patient is not known to have HIV.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:05:59,803 - INFO - ==================================================
-
-2025-06-04 02:05:59,805 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation with prolonged fever, night sweats, weight loss, pulmonary nodules, and hepatosplenic lesions in the setting of immunosuppression is highly suggestive of a disseminated infectious process such as disseminated mycobacteria or histoplasmosis. Among the provided ICD-10 codes, B20 ('Human immunodeficiency virus [HIV] disease') is the only infectious disease code commonly associated with opportunistic/disseminated infections, and is the best available option from the list, although the patient is not known to have HIV.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:06:01,538 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 indicates HIV disease, but the patient has immunosuppression due to rheumatoid arthritis treatment and there is no diagnosis of HIV; B20 is not appropriate for this case."}
-2025-06-04 02:06:01,541 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 indicates HIV disease, but the patient has immunosuppression due to rheumatoid arthritis treatment and there is no diagnosis of HIV; B20 is not appropriate for this case.'}
-2025-06-04 02:06:01,546 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:06:04,213 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's history of immunosuppression and presentation with prolonged fever, weight loss, and organ lesions strongly suggest an opportunistic infectious process compatible with disseminated mycobacterial or fungal infection, conditions captured under B20 (Human immunodeficiency virus [HIV] disease resulting in infectious and parasitic diseases) in the context of serious immunodeficiency, though the precise alignment is limited by the provided codes; B20 is the most appropriate among those listed for an immunocompromised host with severe systemic infection."}
-2025-06-04 02:06:04,215 - INFO -
-==================================================
-2025-06-04 02:06:04,215 - INFO - Stage: match_icd10_code
-2025-06-04 02:06:04,216 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:04,218 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's history of immunosuppression and presentation with prolonged fever, weight loss, and organ lesions strongly suggest an opportunistic infectious process compatible with disseminated mycobacterial or fungal infection, conditions captured under B20 (Human immunodeficiency virus [HIV] disease resulting in infectious and parasitic diseases) in the context of serious immunodeficiency, though the precise alignment is limited by the provided codes; B20 is the most appropriate among those listed for an immunocompromised host with severe systemic infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:04,218 - INFO - ==================================================
-
-2025-06-04 02:06:04,221 - INFO -
-==================================================
-2025-06-04 02:06:04,222 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:06:04,223 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's history of immunosuppression and presentation with prolonged fever, weight loss, and organ lesions strongly suggest an opportunistic infectious process compatible with disseminated mycobacterial or fungal infection, conditions captured under B20 (Human immunodeficiency virus [HIV] disease resulting in infectious and parasitic diseases) in the context of serious immunodeficiency, though the precise alignment is limited by the provided codes; B20 is the most appropriate among those listed for an immunocompromised host with severe systemic infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:04,223 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's history of immunosuppression and presentation with prolonged fever, weight loss, and organ lesions strongly suggest an opportunistic infectious process compatible with disseminated mycobacterial or fungal infection, conditions captured under B20 (Human immunodeficiency virus [HIV] disease resulting in infectious and parasitic diseases) in the context of serious immunodeficiency, though the precise alignment is limited by the provided codes; B20 is the most appropriate among those listed for an immunocompromised host with severe systemic infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:04,224 - INFO - ==================================================
-
-2025-06-04 02:06:04,226 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's history of immunosuppression and presentation with prolonged fever, weight loss, and organ lesions strongly suggest an opportunistic infectious process compatible with disseminated mycobacterial or fungal infection, conditions captured under B20 (Human immunodeficiency virus [HIV] disease resulting in infectious and parasitic diseases) in the context of serious immunodeficiency, though the precise alignment is limited by the provided codes; B20 is the most appropriate among those listed for an immunocompromised host with severe systemic infection.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:06:06,248 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 refers to HIV disease with resulting infectious complications, but the clinical notes do not indicate that the patient has HIV; her immunosuppression is due to immunosuppressive therapy for rheumatoid arthritis, so B20 is not appropriate for this case."}
-2025-06-04 02:06:06,250 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 refers to HIV disease with resulting infectious complications, but the clinical notes do not indicate that the patient has HIV; her immunosuppression is due to immunosuppressive therapy for rheumatoid arthritis, so B20 is not appropriate for this case.'}
-2025-06-04 02:06:06,253 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:06:08,819 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient is immunocompromised (rheumatoid arthritis on methotrexate and prednisone) and presents with prolonged fever, weight loss, night sweats, and disseminated nodular lesions, raising concern for opportunistic infections such as disseminated mycobacterial or fungal disease, both of which are classic AIDS-defining illnesses. Of the options provided, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest match for coding an immunocompromised state with opportunistic infections, even though no HIV diagnosis is present; none of the other codes fit the scenario."}
-2025-06-04 02:06:08,821 - INFO -
-==================================================
-2025-06-04 02:06:08,822 - INFO - Stage: match_icd10_code
-2025-06-04 02:06:08,823 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:08,824 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient is immunocompromised (rheumatoid arthritis on methotrexate and prednisone) and presents with prolonged fever, weight loss, night sweats, and disseminated nodular lesions, raising concern for opportunistic infections such as disseminated mycobacterial or fungal disease, both of which are classic AIDS-defining illnesses. Of the options provided, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest match for coding an immunocompromised state with opportunistic infections, even though no HIV diagnosis is present; none of the other codes fit the scenario.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:08,826 - INFO - ==================================================
-
-2025-06-04 02:06:08,828 - INFO -
-==================================================
-2025-06-04 02:06:08,829 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:06:08,830 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient is immunocompromised (rheumatoid arthritis on methotrexate and prednisone) and presents with prolonged fever, weight loss, night sweats, and disseminated nodular lesions, raising concern for opportunistic infections such as disseminated mycobacterial or fungal disease, both of which are classic AIDS-defining illnesses. Of the options provided, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest match for coding an immunocompromised state with opportunistic infections, even though no HIV diagnosis is present; none of the other codes fit the scenario.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:08,830 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient is immunocompromised (rheumatoid arthritis on methotrexate and prednisone) and presents with prolonged fever, weight loss, night sweats, and disseminated nodular lesions, raising concern for opportunistic infections such as disseminated mycobacterial or fungal disease, both of which are classic AIDS-defining illnesses. Of the options provided, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest match for coding an immunocompromised state with opportunistic infections, even though no HIV diagnosis is present; none of the other codes fit the scenario.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:08,831 - INFO - ==================================================
-
-2025-06-04 02:06:08,832 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient is immunocompromised (rheumatoid arthritis on methotrexate and prednisone) and presents with prolonged fever, weight loss, night sweats, and disseminated nodular lesions, raising concern for opportunistic infections such as disseminated mycobacterial or fungal disease, both of which are classic AIDS-defining illnesses. Of the options provided, B20 (HIV disease resulting in infectious and parasitic diseases) is the closest match for coding an immunocompromised state with opportunistic infections, even though no HIV diagnosis is present; none of the other codes fit the scenario.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:06:10,416 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "B20 requires a confirmed HIV infection, which is not present in this patient; her immunocompromised state is due to immunosuppressive therapy for rheumatoid arthritis, not HIV."}
-2025-06-04 02:06:10,418 - INFO - Validation result: {'is_valid': False, 'reason': 'B20 requires a confirmed HIV infection, which is not present in this patient; her immunocompromised state is due to immunosuppressive therapy for rheumatoid arthritis, not HIV.'}
-2025-06-04 02:06:10,421 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:06:13,299 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The clinical scenario involves a patient with immunosuppression (methotrexate and prednisone for rheumatoid arthritis) who is presenting with systemic symptoms (fever, night sweats, weight loss) and imaging findings (pulmonary nodules, hepatosplenic lesions) highly suggestive of an opportunistic infectious process. Among the provided ICD-10 codes, B20 (Human immunodeficiency virus [HIV] disease) is most directly related to opportunistic infections and their clinical management—even though the patient is not known to be HIV-positive, this code often covers severe opportunistic infections in immunocompromised hosts; the other codes are unrelated to disseminated mycobacterial or fungal infections."}
-2025-06-04 02:06:13,303 - INFO -
-==================================================
-2025-06-04 02:06:13,306 - INFO - Stage: match_icd10_code
-2025-06-04 02:06:13,308 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:13,311 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario involves a patient with immunosuppression (methotrexate and prednisone for rheumatoid arthritis) who is presenting with systemic symptoms (fever, night sweats, weight loss) and imaging findings (pulmonary nodules, hepatosplenic lesions) highly suggestive of an opportunistic infectious process. Among the provided ICD-10 codes, B20 (Human immunodeficiency virus [HIV] disease) is most directly related to opportunistic infections and their clinical management\u2014even though the patient is not known to be HIV-positive, this code often covers severe opportunistic infections in immunocompromised hosts; the other codes are unrelated to disseminated mycobacterial or fungal infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:13,311 - INFO - ==================================================
-
-2025-06-04 02:06:13,314 - INFO -
-==================================================
-2025-06-04 02:06:13,317 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:06:13,318 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario involves a patient with immunosuppression (methotrexate and prednisone for rheumatoid arthritis) who is presenting with systemic symptoms (fever, night sweats, weight loss) and imaging findings (pulmonary nodules, hepatosplenic lesions) highly suggestive of an opportunistic infectious process. Among the provided ICD-10 codes, B20 (Human immunodeficiency virus [HIV] disease) is most directly related to opportunistic infections and their clinical management\u2014even though the patient is not known to be HIV-positive, this code often covers severe opportunistic infections in immunocompromised hosts; the other codes are unrelated to disseminated mycobacterial or fungal infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:13,319 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario involves a patient with immunosuppression (methotrexate and prednisone for rheumatoid arthritis) who is presenting with systemic symptoms (fever, night sweats, weight loss) and imaging findings (pulmonary nodules, hepatosplenic lesions) highly suggestive of an opportunistic infectious process. Among the provided ICD-10 codes, B20 (Human immunodeficiency virus [HIV] disease) is most directly related to opportunistic infections and their clinical management\u2014even though the patient is not known to be HIV-positive, this code often covers severe opportunistic infections in immunocompromised hosts; the other codes are unrelated to disseminated mycobacterial or fungal infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:13,320 - INFO - ==================================================
-
-2025-06-04 02:06:13,322 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The clinical scenario involves a patient with immunosuppression (methotrexate and prednisone for rheumatoid arthritis) who is presenting with systemic symptoms (fever, night sweats, weight loss) and imaging findings (pulmonary nodules, hepatosplenic lesions) highly suggestive of an opportunistic infectious process. Among the provided ICD-10 codes, B20 (Human immunodeficiency virus [HIV] disease) is most directly related to opportunistic infections and their clinical management—even though the patient is not known to be HIV-positive, this code often covers severe opportunistic infections in immunocompromised hosts; the other codes are unrelated to disseminated mycobacterial or fungal infections.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:06:14,825 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 specifically refers to HIV disease, but the patient has immunosuppression from medications, not HIV; therefore, B20 is not appropriate for this case."}
-2025-06-04 02:06:14,826 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 specifically refers to HIV disease, but the patient has immunosuppression from medications, not HIV; therefore, B20 is not appropriate for this case.'}
-2025-06-04 02:06:14,828 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:06:16,874 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "Z79.4", "rationale": "The patient is on long-term immunosuppressive therapy (methotrexate and prednisone) for rheumatoid arthritis, which is most directly captured by Z79.4 (Long term (current) use of anti-inflammatory and immunosuppressive drugs) from the provided codes. None of the codes specifically identify disseminated mycobacterial or fungal infection, and Z79.4 provides the relevant clinical context underlying her risk for these infections."}
-2025-06-04 02:06:16,876 - INFO -
-==================================================
-2025-06-04 02:06:16,877 - INFO - Stage: match_icd10_code
-2025-06-04 02:06:16,877 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:16,878 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient is on long-term immunosuppressive therapy (methotrexate and prednisone) for rheumatoid arthritis, which is most directly captured by Z79.4 (Long term (current) use of anti-inflammatory and immunosuppressive drugs) from the provided codes. None of the codes specifically identify disseminated mycobacterial or fungal infection, and Z79.4 provides the relevant clinical context underlying her risk for these infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:16,878 - INFO - ==================================================
-
-2025-06-04 02:06:16,880 - INFO -
-==================================================
-2025-06-04 02:06:16,881 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:06:16,881 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient is on long-term immunosuppressive therapy (methotrexate and prednisone) for rheumatoid arthritis, which is most directly captured by Z79.4 (Long term (current) use of anti-inflammatory and immunosuppressive drugs) from the provided codes. None of the codes specifically identify disseminated mycobacterial or fungal infection, and Z79.4 provides the relevant clinical context underlying her risk for these infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:16,882 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient is on long-term immunosuppressive therapy (methotrexate and prednisone) for rheumatoid arthritis, which is most directly captured by Z79.4 (Long term (current) use of anti-inflammatory and immunosuppressive drugs) from the provided codes. None of the codes specifically identify disseminated mycobacterial or fungal infection, and Z79.4 provides the relevant clinical context underlying her risk for these infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:16,882 - INFO - ==================================================
-
-2025-06-04 02:06:16,884 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: Z79.4
- Rationale: The patient is on long-term immunosuppressive therapy (methotrexate and prednisone) for rheumatoid arthritis, which is most directly captured by Z79.4 (Long term (current) use of anti-inflammatory and immunosuppressive drugs) from the provided codes. None of the codes specifically identify disseminated mycobacterial or fungal infection, and Z79.4 provides the relevant clinical context underlying her risk for these infections.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:06:18,466 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": true, "reason": "The code Z79.4 is appropriate because it accurately reflects the patient's long-term use of immunosuppressive drugs, which is clinically relevant to her presentation and risk for disseminated infections."}
-2025-06-04 02:06:18,466 - INFO - Validation result: {'is_valid': True, 'reason': "The code Z79.4 is appropriate because it accurately reflects the patient's long-term use of immunosuppressive drugs, which is clinically relevant to her presentation and risk for disseminated infections."}
-2025-06-04 02:06:18,468 - INFO -
-==================================================
-2025-06-04 02:06:18,469 - INFO - Stage: validate_icd10_clinical_match
-2025-06-04 02:06:18,469 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient is on long-term immunosuppressive therapy (methotrexate and prednisone) for rheumatoid arthritis, which is most directly captured by Z79.4 (Long term (current) use of anti-inflammatory and immunosuppressive drugs) from the provided codes. None of the codes specifically identify disseminated mycobacterial or fungal infection, and Z79.4 provides the relevant clinical context underlying her risk for these infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:18,470 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient is on long-term immunosuppressive therapy (methotrexate and prednisone) for rheumatoid arthritis, which is most directly captured by Z79.4 (Long term (current) use of anti-inflammatory and immunosuppressive drugs) from the provided codes. None of the codes specifically identify disseminated mycobacterial or fungal infection, and Z79.4 provides the relevant clinical context underlying her risk for these infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:18,470 - INFO - ==================================================
-
-2025-06-04 02:06:18,472 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 02:06:19,595 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 02:06:19,598 - INFO -
-==================================================
-2025-06-04 02:06:19,599 - INFO - Stage: extract_patient_info
-2025-06-04 02:06:19,601 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient is on long-term immunosuppressive therapy (methotrexate and prednisone) for rheumatoid arthritis, which is most directly captured by Z79.4 (Long term (current) use of anti-inflammatory and immunosuppressive drugs) from the provided codes. None of the codes specifically identify disseminated mycobacterial or fungal infection, and Z79.4 provides the relevant clinical context underlying her risk for these infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:19,601 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient is on long-term immunosuppressive therapy (methotrexate and prednisone) for rheumatoid arthritis, which is most directly captured by Z79.4 (Long term (current) use of anti-inflammatory and immunosuppressive drugs) from the provided codes. None of the codes specifically identify disseminated mycobacterial or fungal infection, and Z79.4 provides the relevant clinical context underlying her risk for these infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:19,602 - INFO - ==================================================
-
-2025-06-04 02:06:19,606 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:06:21,712 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation is consistent with an opportunistic infection in an immunosuppressed host, raising suspicion for conditions frequently seen in immunocompromised states such as HIV/AIDS. B20 is the ICD-10 code for 'Human immunodeficiency virus [HIV] disease,' which encompasses opportunistic infections like disseminated mycobacterial and fungal processes. None of the other options represent disseminated infection or relevant immunocompromised states."}
-2025-06-04 02:06:21,718 - INFO -
-==================================================
-2025-06-04 02:06:21,719 - INFO - Stage: match_icd10_code
-2025-06-04 02:06:21,721 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient is on long-term immunosuppressive therapy (methotrexate and prednisone) for rheumatoid arthritis, which is most directly captured by Z79.4 (Long term (current) use of anti-inflammatory and immunosuppressive drugs) from the provided codes. None of the codes specifically identify disseminated mycobacterial or fungal infection, and Z79.4 provides the relevant clinical context underlying her risk for these infections.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:21,722 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is consistent with an opportunistic infection in an immunosuppressed host, raising suspicion for conditions frequently seen in immunocompromised states such as HIV/AIDS. B20 is the ICD-10 code for 'Human immunodeficiency virus [HIV] disease,' which encompasses opportunistic infections like disseminated mycobacterial and fungal processes. None of the other options represent disseminated infection or relevant immunocompromised states.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:21,724 - INFO - ==================================================
-
-2025-06-04 02:06:21,728 - INFO -
-==================================================
-2025-06-04 02:06:21,730 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:06:21,741 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is consistent with an opportunistic infection in an immunosuppressed host, raising suspicion for conditions frequently seen in immunocompromised states such as HIV/AIDS. B20 is the ICD-10 code for 'Human immunodeficiency virus [HIV] disease,' which encompasses opportunistic infections like disseminated mycobacterial and fungal processes. None of the other options represent disseminated infection or relevant immunocompromised states.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:21,744 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is consistent with an opportunistic infection in an immunosuppressed host, raising suspicion for conditions frequently seen in immunocompromised states such as HIV/AIDS. B20 is the ICD-10 code for 'Human immunodeficiency virus [HIV] disease,' which encompasses opportunistic infections like disseminated mycobacterial and fungal processes. None of the other options represent disseminated infection or relevant immunocompromised states.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:21,745 - INFO - ==================================================
-
-2025-06-04 02:06:21,747 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation is consistent with an opportunistic infection in an immunosuppressed host, raising suspicion for conditions frequently seen in immunocompromised states such as HIV/AIDS. B20 is the ICD-10 code for 'Human immunodeficiency virus [HIV] disease,' which encompasses opportunistic infections like disseminated mycobacterial and fungal processes. None of the other options represent disseminated infection or relevant immunocompromised states.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:06:23,177 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is for HIV disease, but the patient has immunosuppression from rheumatoid arthritis treatment and no evidence of HIV infection."}
-2025-06-04 02:06:23,178 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is for HIV disease, but the patient has immunosuppression from rheumatoid arthritis treatment and no evidence of HIV infection.'}
-2025-06-04 02:06:23,180 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:06:26,628 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The clinical presentation involves a patient who is immunosuppressed (on methotrexate and prednisone) and is being worked up for disseminated infection (mycobacterial or fungal), both of which are opportunistic infections commonly associated with immunodeficiency. Among the available codes, B20 (HIV disease) is the only one referencing immunodeficiency and susceptibility to such infections; although HIV is not specifically mentioned, B20 is the closest match to a clinical scenario of immunodeficiency with opportunistic infections. None of the other codes pertain to infection, immunosuppression, or opportunistic processes."}
-2025-06-04 02:06:26,631 - INFO -
-==================================================
-2025-06-04 02:06:26,632 - INFO - Stage: match_icd10_code
-2025-06-04 02:06:26,634 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:26,635 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical presentation involves a patient who is immunosuppressed (on methotrexate and prednisone) and is being worked up for disseminated infection (mycobacterial or fungal), both of which are opportunistic infections commonly associated with immunodeficiency. Among the available codes, B20 (HIV disease) is the only one referencing immunodeficiency and susceptibility to such infections; although HIV is not specifically mentioned, B20 is the closest match to a clinical scenario of immunodeficiency with opportunistic infections. None of the other codes pertain to infection, immunosuppression, or opportunistic processes.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:26,636 - INFO - ==================================================
-
-2025-06-04 02:06:26,640 - INFO -
-==================================================
-2025-06-04 02:06:26,641 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:06:26,642 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical presentation involves a patient who is immunosuppressed (on methotrexate and prednisone) and is being worked up for disseminated infection (mycobacterial or fungal), both of which are opportunistic infections commonly associated with immunodeficiency. Among the available codes, B20 (HIV disease) is the only one referencing immunodeficiency and susceptibility to such infections; although HIV is not specifically mentioned, B20 is the closest match to a clinical scenario of immunodeficiency with opportunistic infections. None of the other codes pertain to infection, immunosuppression, or opportunistic processes.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:26,643 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical presentation involves a patient who is immunosuppressed (on methotrexate and prednisone) and is being worked up for disseminated infection (mycobacterial or fungal), both of which are opportunistic infections commonly associated with immunodeficiency. Among the available codes, B20 (HIV disease) is the only one referencing immunodeficiency and susceptibility to such infections; although HIV is not specifically mentioned, B20 is the closest match to a clinical scenario of immunodeficiency with opportunistic infections. None of the other codes pertain to infection, immunosuppression, or opportunistic processes.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:26,644 - INFO - ==================================================
-
-2025-06-04 02:06:26,646 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The clinical presentation involves a patient who is immunosuppressed (on methotrexate and prednisone) and is being worked up for disseminated infection (mycobacterial or fungal), both of which are opportunistic infections commonly associated with immunodeficiency. Among the available codes, B20 (HIV disease) is the only one referencing immunodeficiency and susceptibility to such infections; although HIV is not specifically mentioned, B20 is the closest match to a clinical scenario of immunodeficiency with opportunistic infections. None of the other codes pertain to infection, immunosuppression, or opportunistic processes.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:06:28,234 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 specifically refers to HIV disease, and there is no evidence of HIV infection in the clinical case. The immunosuppression is due to methotrexate and prednisone, not HIV."}
-2025-06-04 02:06:28,235 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 specifically refers to HIV disease, and there is no evidence of HIV infection in the clinical case. The immunosuppression is due to methotrexate and prednisone, not HIV.'}
-2025-06-04 02:06:28,239 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:06:30,790 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "Z79.4", "rationale": "This code represents 'Long term (current) use of corticosteroids,' which is relevant because the patient's immunosuppression from methotrexate and low-dose prednisone is a key contributor to her susceptibility to disseminated infection. None of the other codes specifically address disseminated mycobacterial or fungal infection; Z79.4 best captures the clinical context of immunosuppression driving the differential diagnosis."}
-2025-06-04 02:06:30,792 - INFO -
-==================================================
-2025-06-04 02:06:30,793 - INFO - Stage: match_icd10_code
-2025-06-04 02:06:30,793 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:30,794 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code represents 'Long term (current) use of corticosteroids,' which is relevant because the patient's immunosuppression from methotrexate and low-dose prednisone is a key contributor to her susceptibility to disseminated infection. None of the other codes specifically address disseminated mycobacterial or fungal infection; Z79.4 best captures the clinical context of immunosuppression driving the differential diagnosis.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:30,795 - INFO - ==================================================
-
-2025-06-04 02:06:30,797 - INFO -
-==================================================
-2025-06-04 02:06:30,797 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:06:30,798 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code represents 'Long term (current) use of corticosteroids,' which is relevant because the patient's immunosuppression from methotrexate and low-dose prednisone is a key contributor to her susceptibility to disseminated infection. None of the other codes specifically address disseminated mycobacterial or fungal infection; Z79.4 best captures the clinical context of immunosuppression driving the differential diagnosis.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:30,799 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code represents 'Long term (current) use of corticosteroids,' which is relevant because the patient's immunosuppression from methotrexate and low-dose prednisone is a key contributor to her susceptibility to disseminated infection. None of the other codes specifically address disseminated mycobacterial or fungal infection; Z79.4 best captures the clinical context of immunosuppression driving the differential diagnosis.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:30,799 - INFO - ==================================================
-
-2025-06-04 02:06:30,801 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: Z79.4
- Rationale: This code represents 'Long term (current) use of corticosteroids,' which is relevant because the patient's immunosuppression from methotrexate and low-dose prednisone is a key contributor to her susceptibility to disseminated infection. None of the other codes specifically address disseminated mycobacterial or fungal infection; Z79.4 best captures the clinical context of immunosuppression driving the differential diagnosis.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:06:32,443 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": true, "reason": "The code Z79.4 reflects the patient's chronic use of corticosteroids, which is relevant to her immunosuppressed state and susceptibility to disseminated infections as described in the clinical case."}
-2025-06-04 02:06:32,444 - INFO - Validation result: {'is_valid': True, 'reason': "The code Z79.4 reflects the patient's chronic use of corticosteroids, which is relevant to her immunosuppressed state and susceptibility to disseminated infections as described in the clinical case."}
-2025-06-04 02:06:32,448 - INFO -
-==================================================
-2025-06-04 02:06:32,449 - INFO - Stage: validate_icd10_clinical_match
-2025-06-04 02:06:32,450 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code represents 'Long term (current) use of corticosteroids,' which is relevant because the patient's immunosuppression from methotrexate and low-dose prednisone is a key contributor to her susceptibility to disseminated infection. None of the other codes specifically address disseminated mycobacterial or fungal infection; Z79.4 best captures the clinical context of immunosuppression driving the differential diagnosis.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:32,451 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code represents 'Long term (current) use of corticosteroids,' which is relevant because the patient's immunosuppression from methotrexate and low-dose prednisone is a key contributor to her susceptibility to disseminated infection. None of the other codes specifically address disseminated mycobacterial or fungal infection; Z79.4 best captures the clinical context of immunosuppression driving the differential diagnosis.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:32,452 - INFO - ==================================================
-
-2025-06-04 02:06:32,453 - INFO -
-==================================================
-2025-06-04 02:06:32,454 - INFO - Final Result:
-2025-06-04 02:06:32,454 - INFO - {
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "This code represents 'Long term (current) use of corticosteroids,' which is relevant because the patient's immunosuppression from methotrexate and low-dose prednisone is a key contributor to her susceptibility to disseminated infection. None of the other codes specifically address disseminated mycobacterial or fungal infection; Z79.4 best captures the clinical context of immunosuppression driving the differential diagnosis.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:06:32,455 - INFO - ==================================================
-
-2025-06-04 02:13:27,562 - INFO -
-==================================================
-2025-06-04 02:13:27,563 - INFO - Starting new clinical case processing
-2025-06-04 02:13:27,564 - INFO - Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
-2025-06-04 02:13:27,564 - INFO - Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-2025-06-04 02:13:27,565 - INFO - ==================================================
-
-2025-06-04 02:13:27,571 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 02:13:28,689 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 02:13:28,694 - INFO -
-==================================================
-2025-06-04 02:13:28,695 - INFO - Stage: extract_patient_info
-2025-06-04 02:13:28,695 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:28,696 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:28,696 - INFO - ==================================================
-
-2025-06-04 02:13:28,698 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:13:31,675 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's immunocompromised state due to methotrexate and prednisone, along with prolonged fevers, weight loss, and evidence of disseminated infection (multiple organ involvement), raise suspicion for serious opportunistic infections, which are frequently seen in patients with HIV/AIDS (ICD-10 B20). While her HIV status is not explicitly stated, B20 is the only infectious disease code among the choices and best fits the clinical context of an immunocompromised patient with possible disseminated infection."}
-2025-06-04 02:13:31,677 - INFO -
-==================================================
-2025-06-04 02:13:31,678 - INFO - Stage: match_icd10_code
-2025-06-04 02:13:31,679 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:31,680 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's immunocompromised state due to methotrexate and prednisone, along with prolonged fevers, weight loss, and evidence of disseminated infection (multiple organ involvement), raise suspicion for serious opportunistic infections, which are frequently seen in patients with HIV/AIDS (ICD-10 B20). While her HIV status is not explicitly stated, B20 is the only infectious disease code among the choices and best fits the clinical context of an immunocompromised patient with possible disseminated infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:31,681 - INFO - ==================================================
-
-2025-06-04 02:13:31,685 - INFO -
-==================================================
-2025-06-04 02:13:31,686 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:13:31,686 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's immunocompromised state due to methotrexate and prednisone, along with prolonged fevers, weight loss, and evidence of disseminated infection (multiple organ involvement), raise suspicion for serious opportunistic infections, which are frequently seen in patients with HIV/AIDS (ICD-10 B20). While her HIV status is not explicitly stated, B20 is the only infectious disease code among the choices and best fits the clinical context of an immunocompromised patient with possible disseminated infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:31,687 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's immunocompromised state due to methotrexate and prednisone, along with prolonged fevers, weight loss, and evidence of disseminated infection (multiple organ involvement), raise suspicion for serious opportunistic infections, which are frequently seen in patients with HIV/AIDS (ICD-10 B20). While her HIV status is not explicitly stated, B20 is the only infectious disease code among the choices and best fits the clinical context of an immunocompromised patient with possible disseminated infection.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:31,688 - INFO - ==================================================
-
-2025-06-04 02:13:31,691 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's immunocompromised state due to methotrexate and prednisone, along with prolonged fevers, weight loss, and evidence of disseminated infection (multiple organ involvement), raise suspicion for serious opportunistic infections, which are frequently seen in patients with HIV/AIDS (ICD-10 B20). While her HIV status is not explicitly stated, B20 is the only infectious disease code among the choices and best fits the clinical context of an immunocompromised patient with possible disseminated infection.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:13:33,216 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease, but there is no evidence that the patient has HIV; her immunosuppression is due to medications, not HIV infection."}
-2025-06-04 02:13:33,217 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease, but there is no evidence that the patient has HIV; her immunosuppression is due to medications, not HIV infection.'}
-2025-06-04 02:13:33,220 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:13:36,381 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's persistent fever, weight loss, night sweats, and CT findings of pulmonary nodules and hepatosplenic lesions while immunosuppressed (methotrexate and prednisone) are suggestive of a disseminated infectious process, such as non-tuberculous mycobacteria or histoplasmosis. Of the codes provided, B20 (HIV disease) is the only infectious etiology listed; none directly describe disseminated mycobacterial or fungal infections. Given B20 is commonly used to code for severe immunocompromised states with opportunistic infections, it is the closest match."}
-2025-06-04 02:13:36,385 - INFO -
-==================================================
-2025-06-04 02:13:36,386 - INFO - Stage: match_icd10_code
-2025-06-04 02:13:36,386 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:36,386 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's persistent fever, weight loss, night sweats, and CT findings of pulmonary nodules and hepatosplenic lesions while immunosuppressed (methotrexate and prednisone) are suggestive of a disseminated infectious process, such as non-tuberculous mycobacteria or histoplasmosis. Of the codes provided, B20 (HIV disease) is the only infectious etiology listed; none directly describe disseminated mycobacterial or fungal infections. Given B20 is commonly used to code for severe immunocompromised states with opportunistic infections, it is the closest match.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:36,387 - INFO - ==================================================
-
-2025-06-04 02:13:36,390 - INFO -
-==================================================
-2025-06-04 02:13:36,390 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:13:36,391 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's persistent fever, weight loss, night sweats, and CT findings of pulmonary nodules and hepatosplenic lesions while immunosuppressed (methotrexate and prednisone) are suggestive of a disseminated infectious process, such as non-tuberculous mycobacteria or histoplasmosis. Of the codes provided, B20 (HIV disease) is the only infectious etiology listed; none directly describe disseminated mycobacterial or fungal infections. Given B20 is commonly used to code for severe immunocompromised states with opportunistic infections, it is the closest match.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:36,392 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's persistent fever, weight loss, night sweats, and CT findings of pulmonary nodules and hepatosplenic lesions while immunosuppressed (methotrexate and prednisone) are suggestive of a disseminated infectious process, such as non-tuberculous mycobacteria or histoplasmosis. Of the codes provided, B20 (HIV disease) is the only infectious etiology listed; none directly describe disseminated mycobacterial or fungal infections. Given B20 is commonly used to code for severe immunocompromised states with opportunistic infections, it is the closest match.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:36,392 - INFO - ==================================================
-
-2025-06-04 02:13:36,394 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's persistent fever, weight loss, night sweats, and CT findings of pulmonary nodules and hepatosplenic lesions while immunosuppressed (methotrexate and prednisone) are suggestive of a disseminated infectious process, such as non-tuberculous mycobacteria or histoplasmosis. Of the codes provided, B20 (HIV disease) is the only infectious etiology listed; none directly describe disseminated mycobacterial or fungal infections. Given B20 is commonly used to code for severe immunocompromised states with opportunistic infections, it is the closest match.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:13:37,928 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 specifically indicates HIV disease, but the patient is immunosuppressed due to medications for rheumatoid arthritis and there is no evidence of HIV; the code does not match the described scenario."}
-2025-06-04 02:13:37,929 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 specifically indicates HIV disease, but the patient is immunosuppressed due to medications for rheumatoid arthritis and there is no evidence of HIV; the code does not match the described scenario.'}
-2025-06-04 02:13:37,932 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:13:40,855 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, and immunosuppression due to rheumatoid arthritis treatment raises suspicion for underlying opportunistic infections. 'B20' is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases, which includes opportunistic infections such as disseminated mycobacteria or histoplasmosis. While the patient's HIV status is not stated, B20 is the closest available code among the listed options to represent the workup for severe opportunistic infections in an immunocompromised host."}
-2025-06-04 02:13:40,862 - INFO -
-==================================================
-2025-06-04 02:13:40,863 - INFO - Stage: match_icd10_code
-2025-06-04 02:13:40,863 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:40,864 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, and immunosuppression due to rheumatoid arthritis treatment raises suspicion for underlying opportunistic infections. 'B20' is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases, which includes opportunistic infections such as disseminated mycobacteria or histoplasmosis. While the patient's HIV status is not stated, B20 is the closest available code among the listed options to represent the workup for severe opportunistic infections in an immunocompromised host.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:40,865 - INFO - ==================================================
-
-2025-06-04 02:13:40,868 - INFO -
-==================================================
-2025-06-04 02:13:40,869 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:13:40,870 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, and immunosuppression due to rheumatoid arthritis treatment raises suspicion for underlying opportunistic infections. 'B20' is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases, which includes opportunistic infections such as disseminated mycobacteria or histoplasmosis. While the patient's HIV status is not stated, B20 is the closest available code among the listed options to represent the workup for severe opportunistic infections in an immunocompromised host.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:40,870 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, and immunosuppression due to rheumatoid arthritis treatment raises suspicion for underlying opportunistic infections. 'B20' is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases, which includes opportunistic infections such as disseminated mycobacteria or histoplasmosis. While the patient's HIV status is not stated, B20 is the closest available code among the listed options to represent the workup for severe opportunistic infections in an immunocompromised host.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:40,871 - INFO - ==================================================
-
-2025-06-04 02:13:40,872 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation of persistent fever, night sweats, weight loss, and immunosuppression due to rheumatoid arthritis treatment raises suspicion for underlying opportunistic infections. 'B20' is the ICD-10 code for HIV disease resulting in infectious and parasitic diseases, which includes opportunistic infections such as disseminated mycobacteria or histoplasmosis. While the patient's HIV status is not stated, B20 is the closest available code among the listed options to represent the workup for severe opportunistic infections in an immunocompromised host.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:13:42,481 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease with resulting infectious or parasitic diseases; the patient's immunosuppression is due to rheumatoid arthritis therapy, not HIV, so B20 is inappropriate for this case."}
-2025-06-04 02:13:42,483 - INFO - Validation result: {'is_valid': False, 'reason': "The code B20 is specific for HIV disease with resulting infectious or parasitic diseases; the patient's immunosuppression is due to rheumatoid arthritis therapy, not HIV, so B20 is inappropriate for this case."}
-2025-06-04 02:13:42,486 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:13:45,231 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The clinical scenario describes an immunosuppressed patient (rheumatoid arthritis on methotrexate and prednisone) with persistent fever, weight loss, night sweats, pulmonary nodules, and hepatosplenic lesions, raising concern for disseminated opportunistic infections such as non-tuberculous mycobacteria or histoplasmosis. Of the available codes, B20 (HIV disease) is closest to capturing the context of an immunocompromised state predisposing to severe infections, as none of the others relates to disseminated infection or immunosuppression. Although this patient is not described as HIV-positive, B20 is the most relevant among the options provided."}
-2025-06-04 02:13:45,233 - INFO -
-==================================================
-2025-06-04 02:13:45,234 - INFO - Stage: match_icd10_code
-2025-06-04 02:13:45,234 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:45,235 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes an immunosuppressed patient (rheumatoid arthritis on methotrexate and prednisone) with persistent fever, weight loss, night sweats, pulmonary nodules, and hepatosplenic lesions, raising concern for disseminated opportunistic infections such as non-tuberculous mycobacteria or histoplasmosis. Of the available codes, B20 (HIV disease) is closest to capturing the context of an immunocompromised state predisposing to severe infections, as none of the others relates to disseminated infection or immunosuppression. Although this patient is not described as HIV-positive, B20 is the most relevant among the options provided.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:45,235 - INFO - ==================================================
-
-2025-06-04 02:13:45,238 - INFO -
-==================================================
-2025-06-04 02:13:45,239 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:13:45,239 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes an immunosuppressed patient (rheumatoid arthritis on methotrexate and prednisone) with persistent fever, weight loss, night sweats, pulmonary nodules, and hepatosplenic lesions, raising concern for disseminated opportunistic infections such as non-tuberculous mycobacteria or histoplasmosis. Of the available codes, B20 (HIV disease) is closest to capturing the context of an immunocompromised state predisposing to severe infections, as none of the others relates to disseminated infection or immunosuppression. Although this patient is not described as HIV-positive, B20 is the most relevant among the options provided.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:45,240 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes an immunosuppressed patient (rheumatoid arthritis on methotrexate and prednisone) with persistent fever, weight loss, night sweats, pulmonary nodules, and hepatosplenic lesions, raising concern for disseminated opportunistic infections such as non-tuberculous mycobacteria or histoplasmosis. Of the available codes, B20 (HIV disease) is closest to capturing the context of an immunocompromised state predisposing to severe infections, as none of the others relates to disseminated infection or immunosuppression. Although this patient is not described as HIV-positive, B20 is the most relevant among the options provided.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:45,240 - INFO - ==================================================
-
-2025-06-04 02:13:45,242 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The clinical scenario describes an immunosuppressed patient (rheumatoid arthritis on methotrexate and prednisone) with persistent fever, weight loss, night sweats, pulmonary nodules, and hepatosplenic lesions, raising concern for disseminated opportunistic infections such as non-tuberculous mycobacteria or histoplasmosis. Of the available codes, B20 (HIV disease) is closest to capturing the context of an immunocompromised state predisposing to severe infections, as none of the others relates to disseminated infection or immunosuppression. Although this patient is not described as HIV-positive, B20 is the most relevant among the options provided.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:13:46,864 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease, but the patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV. None of the provided codes accurately capture the context of disseminated infection or non-HIV immunosuppression."}
-2025-06-04 02:13:46,865 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease, but the patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV. None of the provided codes accurately capture the context of disseminated infection or non-HIV immunosuppression.'}
-2025-06-04 02:13:46,867 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:13:48,716 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's symptoms and immunosuppressed status raise concern for opportunistic infections such as disseminated mycobacterial or fungal disease, which are characteristic of HIV-related immunodeficiency and classified under B20 (Human immunodeficiency virus [HIV] disease). None of the other listed codes match the described infectious process."}
-2025-06-04 02:13:48,718 - INFO -
-==================================================
-2025-06-04 02:13:48,718 - INFO - Stage: match_icd10_code
-2025-06-04 02:13:48,719 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:48,720 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's symptoms and immunosuppressed status raise concern for opportunistic infections such as disseminated mycobacterial or fungal disease, which are characteristic of HIV-related immunodeficiency and classified under B20 (Human immunodeficiency virus [HIV] disease). None of the other listed codes match the described infectious process.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:48,721 - INFO - ==================================================
-
-2025-06-04 02:13:48,723 - INFO -
-==================================================
-2025-06-04 02:13:48,724 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:13:48,724 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's symptoms and immunosuppressed status raise concern for opportunistic infections such as disseminated mycobacterial or fungal disease, which are characteristic of HIV-related immunodeficiency and classified under B20 (Human immunodeficiency virus [HIV] disease). None of the other listed codes match the described infectious process.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:48,725 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's symptoms and immunosuppressed status raise concern for opportunistic infections such as disseminated mycobacterial or fungal disease, which are characteristic of HIV-related immunodeficiency and classified under B20 (Human immunodeficiency virus [HIV] disease). None of the other listed codes match the described infectious process.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:48,725 - INFO - ==================================================
-
-2025-06-04 02:13:48,727 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's symptoms and immunosuppressed status raise concern for opportunistic infections such as disseminated mycobacterial or fungal disease, which are characteristic of HIV-related immunodeficiency and classified under B20 (Human immunodeficiency virus [HIV] disease). None of the other listed codes match the described infectious process.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:13:50,219 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 refers specifically to HIV disease, but the patient has immunosuppression due to methotrexate and prednisone for rheumatoid arthritis, not HIV. Therefore, B20 is not appropriate for this clinical case."}
-2025-06-04 02:13:50,219 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 refers specifically to HIV disease, but the patient has immunosuppression due to methotrexate and prednisone for rheumatoid arthritis, not HIV. Therefore, B20 is not appropriate for this clinical case.'}
-2025-06-04 02:13:50,220 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:13:52,445 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "Z79.4", "rationale": "Z79.4 represents long term (current) use of immunosuppressive drugs, which is the most relevant ICD-10 code from the provided list for this patient on methotrexate and prednisone. The main clinical concern is infection due to immunosuppression, but there are no specific codes for disseminated mycobacterial or fungal infection among the options."}
-2025-06-04 02:13:52,447 - INFO -
-==================================================
-2025-06-04 02:13:52,447 - INFO - Stage: match_icd10_code
-2025-06-04 02:13:52,448 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:52,449 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 represents long term (current) use of immunosuppressive drugs, which is the most relevant ICD-10 code from the provided list for this patient on methotrexate and prednisone. The main clinical concern is infection due to immunosuppression, but there are no specific codes for disseminated mycobacterial or fungal infection among the options.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:52,450 - INFO - ==================================================
-
-2025-06-04 02:13:52,452 - INFO -
-==================================================
-2025-06-04 02:13:52,452 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:13:52,453 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 represents long term (current) use of immunosuppressive drugs, which is the most relevant ICD-10 code from the provided list for this patient on methotrexate and prednisone. The main clinical concern is infection due to immunosuppression, but there are no specific codes for disseminated mycobacterial or fungal infection among the options.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:52,453 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 represents long term (current) use of immunosuppressive drugs, which is the most relevant ICD-10 code from the provided list for this patient on methotrexate and prednisone. The main clinical concern is infection due to immunosuppression, but there are no specific codes for disseminated mycobacterial or fungal infection among the options.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:52,454 - INFO - ==================================================
-
-2025-06-04 02:13:52,455 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: Z79.4
- Rationale: Z79.4 represents long term (current) use of immunosuppressive drugs, which is the most relevant ICD-10 code from the provided list for this patient on methotrexate and prednisone. The main clinical concern is infection due to immunosuppression, but there are no specific codes for disseminated mycobacterial or fungal infection among the options.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:13:54,023 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": true, "reason": "Z79.4 is appropriate because the patient's immunosuppressed state from long-term methotrexate and prednisone use is central to her current clinical presentation and diagnostic considerations."}
-2025-06-04 02:13:54,024 - INFO - Validation result: {'is_valid': True, 'reason': "Z79.4 is appropriate because the patient's immunosuppressed state from long-term methotrexate and prednisone use is central to her current clinical presentation and diagnostic considerations."}
-2025-06-04 02:13:54,025 - INFO -
-==================================================
-2025-06-04 02:13:54,026 - INFO - Stage: validate_icd10_clinical_match
-2025-06-04 02:13:54,027 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 represents long term (current) use of immunosuppressive drugs, which is the most relevant ICD-10 code from the provided list for this patient on methotrexate and prednisone. The main clinical concern is infection due to immunosuppression, but there are no specific codes for disseminated mycobacterial or fungal infection among the options.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:54,027 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 represents long term (current) use of immunosuppressive drugs, which is the most relevant ICD-10 code from the provided list for this patient on methotrexate and prednisone. The main clinical concern is infection due to immunosuppression, but there are no specific codes for disseminated mycobacterial or fungal infection among the options.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:54,028 - INFO - ==================================================
-
-2025-06-04 02:13:54,031 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 02:13:55,285 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 02:13:55,287 - INFO -
-==================================================
-2025-06-04 02:13:55,288 - INFO - Stage: extract_patient_info
-2025-06-04 02:13:55,289 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 represents long term (current) use of immunosuppressive drugs, which is the most relevant ICD-10 code from the provided list for this patient on methotrexate and prednisone. The main clinical concern is infection due to immunosuppression, but there are no specific codes for disseminated mycobacterial or fungal infection among the options.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:55,290 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 represents long term (current) use of immunosuppressive drugs, which is the most relevant ICD-10 code from the provided list for this patient on methotrexate and prednisone. The main clinical concern is infection due to immunosuppression, but there are no specific codes for disseminated mycobacterial or fungal infection among the options.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:55,291 - INFO - ==================================================
-
-2025-06-04 02:13:55,294 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:13:57,824 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, and imaging showing disseminated lesions is consistent with a systemic infectious process. While the specific pathogens (non-tuberculous mycobacteria or histoplasmosis) have not been confirmed, she is immunosuppressed, which raises suspicion for an opportunistic infection potentially meeting CDC criteria for an AIDS-defining illness coded as B20 (HIV disease resulting in infectious and parasitic diseases). Although HIV is not explicitly mentioned, B20 is the closest code for a serious opportunistic infection in an immunosuppressed host among the available options."}
-2025-06-04 02:13:57,828 - INFO -
-==================================================
-2025-06-04 02:13:57,829 - INFO - Stage: match_icd10_code
-2025-06-04 02:13:57,830 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 represents long term (current) use of immunosuppressive drugs, which is the most relevant ICD-10 code from the provided list for this patient on methotrexate and prednisone. The main clinical concern is infection due to immunosuppression, but there are no specific codes for disseminated mycobacterial or fungal infection among the options.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:57,831 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, and imaging showing disseminated lesions is consistent with a systemic infectious process. While the specific pathogens (non-tuberculous mycobacteria or histoplasmosis) have not been confirmed, she is immunosuppressed, which raises suspicion for an opportunistic infection potentially meeting CDC criteria for an AIDS-defining illness coded as B20 (HIV disease resulting in infectious and parasitic diseases). Although HIV is not explicitly mentioned, B20 is the closest code for a serious opportunistic infection in an immunosuppressed host among the available options.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:57,831 - INFO - ==================================================
-
-2025-06-04 02:13:57,836 - INFO -
-==================================================
-2025-06-04 02:13:57,836 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:13:57,837 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, and imaging showing disseminated lesions is consistent with a systemic infectious process. While the specific pathogens (non-tuberculous mycobacteria or histoplasmosis) have not been confirmed, she is immunosuppressed, which raises suspicion for an opportunistic infection potentially meeting CDC criteria for an AIDS-defining illness coded as B20 (HIV disease resulting in infectious and parasitic diseases). Although HIV is not explicitly mentioned, B20 is the closest code for a serious opportunistic infection in an immunosuppressed host among the available options.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:57,838 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of persistent fever, night sweats, weight loss, and imaging showing disseminated lesions is consistent with a systemic infectious process. While the specific pathogens (non-tuberculous mycobacteria or histoplasmosis) have not been confirmed, she is immunosuppressed, which raises suspicion for an opportunistic infection potentially meeting CDC criteria for an AIDS-defining illness coded as B20 (HIV disease resulting in infectious and parasitic diseases). Although HIV is not explicitly mentioned, B20 is the closest code for a serious opportunistic infection in an immunosuppressed host among the available options.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:13:57,838 - INFO - ==================================================
-
-2025-06-04 02:13:57,840 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation of persistent fever, night sweats, weight loss, and imaging showing disseminated lesions is consistent with a systemic infectious process. While the specific pathogens (non-tuberculous mycobacteria or histoplasmosis) have not been confirmed, she is immunosuppressed, which raises suspicion for an opportunistic infection potentially meeting CDC criteria for an AIDS-defining illness coded as B20 (HIV disease resulting in infectious and parasitic diseases). Although HIV is not explicitly mentioned, B20 is the closest code for a serious opportunistic infection in an immunosuppressed host among the available options.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:13:59,681 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 requires a confirmed diagnosis of HIV/AIDS, which is not documented in the case; the patient's immunosuppression is medication-induced, not due to HIV."}
-2025-06-04 02:13:59,682 - INFO - Validation result: {'is_valid': False, 'reason': "The code B20 requires a confirmed diagnosis of HIV/AIDS, which is not documented in the case; the patient's immunosuppression is medication-induced, not due to HIV."}
-2025-06-04 02:13:59,685 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:14:02,584 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The clinical scenario describes a patient with immunosuppression (methotrexate and prednisone for rheumatoid arthritis) and symptoms/signs compatible with a severe, opportunistic infection (fevers, night sweats, weight loss, hepatosplenic and pulmonary involvement). Among the provided codes, B20 represents 'Human immunodeficiency virus [HIV] disease,' which is the ICD-10 category that best fits disseminated opportunistic infections. While the patient is not known to have HIV, none of the other codes are applicable to disseminated mycobacterial or fungal diseases, so B20 is the closest match given the severe immunosuppression and clinical suspicion."}
-2025-06-04 02:14:02,586 - INFO -
-==================================================
-2025-06-04 02:14:02,587 - INFO - Stage: match_icd10_code
-2025-06-04 02:14:02,595 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:14:02,624 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes a patient with immunosuppression (methotrexate and prednisone for rheumatoid arthritis) and symptoms/signs compatible with a severe, opportunistic infection (fevers, night sweats, weight loss, hepatosplenic and pulmonary involvement). Among the provided codes, B20 represents 'Human immunodeficiency virus [HIV] disease,' which is the ICD-10 category that best fits disseminated opportunistic infections. While the patient is not known to have HIV, none of the other codes are applicable to disseminated mycobacterial or fungal diseases, so B20 is the closest match given the severe immunosuppression and clinical suspicion.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:14:02,648 - INFO - ==================================================
-
-2025-06-04 02:14:02,652 - INFO -
-==================================================
-2025-06-04 02:14:02,655 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:14:02,656 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes a patient with immunosuppression (methotrexate and prednisone for rheumatoid arthritis) and symptoms/signs compatible with a severe, opportunistic infection (fevers, night sweats, weight loss, hepatosplenic and pulmonary involvement). Among the provided codes, B20 represents 'Human immunodeficiency virus [HIV] disease,' which is the ICD-10 category that best fits disseminated opportunistic infections. While the patient is not known to have HIV, none of the other codes are applicable to disseminated mycobacterial or fungal diseases, so B20 is the closest match given the severe immunosuppression and clinical suspicion.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:14:02,682 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The clinical scenario describes a patient with immunosuppression (methotrexate and prednisone for rheumatoid arthritis) and symptoms/signs compatible with a severe, opportunistic infection (fevers, night sweats, weight loss, hepatosplenic and pulmonary involvement). Among the provided codes, B20 represents 'Human immunodeficiency virus [HIV] disease,' which is the ICD-10 category that best fits disseminated opportunistic infections. While the patient is not known to have HIV, none of the other codes are applicable to disseminated mycobacterial or fungal diseases, so B20 is the closest match given the severe immunosuppression and clinical suspicion.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:14:02,686 - INFO - ==================================================
-
-2025-06-04 02:14:02,692 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The clinical scenario describes a patient with immunosuppression (methotrexate and prednisone for rheumatoid arthritis) and symptoms/signs compatible with a severe, opportunistic infection (fevers, night sweats, weight loss, hepatosplenic and pulmonary involvement). Among the provided codes, B20 represents 'Human immunodeficiency virus [HIV] disease,' which is the ICD-10 category that best fits disseminated opportunistic infections. While the patient is not known to have HIV, none of the other codes are applicable to disseminated mycobacterial or fungal diseases, so B20 is the closest match given the severe immunosuppression and clinical suspicion.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:14:04,339 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease, but the patient does not have HIV; her immunosuppression is medication-induced. A more appropriate code for the underlying immunosuppression or infection should be used."}
-2025-06-04 02:14:04,347 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease, but the patient does not have HIV; her immunosuppression is medication-induced. A more appropriate code for the underlying immunosuppression or infection should be used.'}
-2025-06-04 02:14:04,396 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:14:06,726 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "Z79.4", "rationale": "The key clinical issue is immunosuppression due to long-term use of immunosuppressive drugs (methotrexate and prednisone), which predisposes the patient to infections like disseminated mycobacterial or fungal diseases. Z79.4 represents 'Long term (current) use of immunosuppressive drugs,' most directly relevant among the provided codes. None of the other codes represent infectious or granulomatous diseases or their complications."}
-2025-06-04 02:14:06,730 - INFO -
-==================================================
-2025-06-04 02:14:06,730 - INFO - Stage: match_icd10_code
-2025-06-04 02:14:06,731 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:14:06,731 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The key clinical issue is immunosuppression due to long-term use of immunosuppressive drugs (methotrexate and prednisone), which predisposes the patient to infections like disseminated mycobacterial or fungal diseases. Z79.4 represents 'Long term (current) use of immunosuppressive drugs,' most directly relevant among the provided codes. None of the other codes represent infectious or granulomatous diseases or their complications.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:14:06,732 - INFO - ==================================================
-
-2025-06-04 02:14:06,735 - INFO -
-==================================================
-2025-06-04 02:14:06,736 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:14:06,736 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The key clinical issue is immunosuppression due to long-term use of immunosuppressive drugs (methotrexate and prednisone), which predisposes the patient to infections like disseminated mycobacterial or fungal diseases. Z79.4 represents 'Long term (current) use of immunosuppressive drugs,' most directly relevant among the provided codes. None of the other codes represent infectious or granulomatous diseases or their complications.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:14:06,737 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The key clinical issue is immunosuppression due to long-term use of immunosuppressive drugs (methotrexate and prednisone), which predisposes the patient to infections like disseminated mycobacterial or fungal diseases. Z79.4 represents 'Long term (current) use of immunosuppressive drugs,' most directly relevant among the provided codes. None of the other codes represent infectious or granulomatous diseases or their complications.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:14:06,737 - INFO - ==================================================
-
-2025-06-04 02:14:06,739 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: Z79.4
- Rationale: The key clinical issue is immunosuppression due to long-term use of immunosuppressive drugs (methotrexate and prednisone), which predisposes the patient to infections like disseminated mycobacterial or fungal diseases. Z79.4 represents 'Long term (current) use of immunosuppressive drugs,' most directly relevant among the provided codes. None of the other codes represent infectious or granulomatous diseases or their complications.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:14:08,375 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": true, "reason": "The code Z79.4 accurately reflects the patient's long-term use of immunosuppressive drugs, which is central to her immunosuppressed state and increased risk for disseminated mycobacterial or fungal infection."}
-2025-06-04 02:14:08,376 - INFO - Validation result: {'is_valid': True, 'reason': "The code Z79.4 accurately reflects the patient's long-term use of immunosuppressive drugs, which is central to her immunosuppressed state and increased risk for disseminated mycobacterial or fungal infection."}
-2025-06-04 02:14:08,378 - INFO -
-==================================================
-2025-06-04 02:14:08,378 - INFO - Stage: validate_icd10_clinical_match
-2025-06-04 02:14:08,381 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The key clinical issue is immunosuppression due to long-term use of immunosuppressive drugs (methotrexate and prednisone), which predisposes the patient to infections like disseminated mycobacterial or fungal diseases. Z79.4 represents 'Long term (current) use of immunosuppressive drugs,' most directly relevant among the provided codes. None of the other codes represent infectious or granulomatous diseases or their complications.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:14:08,382 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The key clinical issue is immunosuppression due to long-term use of immunosuppressive drugs (methotrexate and prednisone), which predisposes the patient to infections like disseminated mycobacterial or fungal diseases. Z79.4 represents 'Long term (current) use of immunosuppressive drugs,' most directly relevant among the provided codes. None of the other codes represent infectious or granulomatous diseases or their complications.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:14:08,383 - INFO - ==================================================
-
-2025-06-04 02:14:08,385 - INFO -
-==================================================
-2025-06-04 02:14:08,385 - INFO - Final Result:
-2025-06-04 02:14:08,386 - INFO - {
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The key clinical issue is immunosuppression due to long-term use of immunosuppressive drugs (methotrexate and prednisone), which predisposes the patient to infections like disseminated mycobacterial or fungal diseases. Z79.4 represents 'Long term (current) use of immunosuppressive drugs,' most directly relevant among the provided codes. None of the other codes represent infectious or granulomatous diseases or their complications.",
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:14:08,387 - INFO - ==================================================
-
-2025-06-04 02:15:03,289 - INFO -
-==================================================
-2025-06-04 02:15:03,290 - INFO - Starting new clinical case processing
-2025-06-04 02:15:03,291 - INFO - Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
-2025-06-04 02:15:03,293 - INFO - Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-2025-06-04 02:15:03,293 - INFO - ==================================================
-
-2025-06-04 02:15:03,300 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 02:15:04,473 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 02:15:04,480 - INFO -
-==================================================
-2025-06-04 02:15:04,481 - INFO - Stage: extract_patient_info
-2025-06-04 02:15:04,482 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:15:04,483 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:15:04,484 - INFO - ==================================================
-
-2025-06-04 02:15:04,488 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:15:06,844 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "B20 is the ICD-10 code for HIV disease, but in this scenario, it is the only infectious disease code available and best approximates a systemic opportunistic infection context in an immunosuppressed patient, as none of the other codes correspond to disseminated mycobacterial or fungal infections. Other codes are related to osteoporosis, diabetes, hypothyroidism, hyperlipidemia, essential hypertension, vitamin D deficiency, and organ transplant, which do not fit the clinical picture."}
-2025-06-04 02:15:06,847 - INFO -
-==================================================
-2025-06-04 02:15:06,847 - INFO - Stage: match_icd10_code
-2025-06-04 02:15:06,848 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 1,
- "stopped": false
-}
-2025-06-04 02:15:06,849 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease, but in this scenario, it is the only infectious disease code available and best approximates a systemic opportunistic infection context in an immunosuppressed patient, as none of the other codes correspond to disseminated mycobacterial or fungal infections. Other codes are related to osteoporosis, diabetes, hypothyroidism, hyperlipidemia, essential hypertension, vitamin D deficiency, and organ transplant, which do not fit the clinical picture.",
- "error": null,
- "retry_count": 1,
- "stopped": false
-}
-2025-06-04 02:15:06,850 - INFO - ==================================================
-
-2025-06-04 02:15:06,853 - INFO -
-==================================================
-2025-06-04 02:15:06,854 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:15:06,855 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease, but in this scenario, it is the only infectious disease code available and best approximates a systemic opportunistic infection context in an immunosuppressed patient, as none of the other codes correspond to disseminated mycobacterial or fungal infections. Other codes are related to osteoporosis, diabetes, hypothyroidism, hyperlipidemia, essential hypertension, vitamin D deficiency, and organ transplant, which do not fit the clinical picture.",
- "error": null,
- "retry_count": 1,
- "stopped": false
-}
-2025-06-04 02:15:06,855 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "B20 is the ICD-10 code for HIV disease, but in this scenario, it is the only infectious disease code available and best approximates a systemic opportunistic infection context in an immunosuppressed patient, as none of the other codes correspond to disseminated mycobacterial or fungal infections. Other codes are related to osteoporosis, diabetes, hypothyroidism, hyperlipidemia, essential hypertension, vitamin D deficiency, and organ transplant, which do not fit the clinical picture.",
- "error": null,
- "retry_count": 1,
- "stopped": false
-}
-2025-06-04 02:15:06,856 - INFO - ==================================================
-
-2025-06-04 02:15:06,857 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: B20 is the ICD-10 code for HIV disease, but in this scenario, it is the only infectious disease code available and best approximates a systemic opportunistic infection context in an immunosuppressed patient, as none of the other codes correspond to disseminated mycobacterial or fungal infections. Other codes are related to osteoporosis, diabetes, hypothyroidism, hyperlipidemia, essential hypertension, vitamin D deficiency, and organ transplant, which do not fit the clinical picture.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:15:08,505 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "B20 is specific for HIV disease, which is not diagnosed or suggested in this immunosuppressed patient; a code for disseminated mycobacterial or fungal infection would be more appropriate, but unavailable among the choices."}
-2025-06-04 02:15:08,506 - INFO - Validation result: {'is_valid': False, 'reason': 'B20 is specific for HIV disease, which is not diagnosed or suggested in this immunosuppressed patient; a code for disseminated mycobacterial or fungal infection would be more appropriate, but unavailable among the choices.'}
-2025-06-04 02:15:08,508 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:15:10,830 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's prolonged fever, night sweats, weight loss, imaging findings, and immunosuppressed state due to methotrexate and prednisone are most consistent with a serious systemic infectious process, for which B20 (HIV disease resulting in infectious and parasitic diseases) is the ICD-10 code best capturing disseminated opportunistic infections. None of the other provided codes specifically reflect disseminated mycobacterial or fungal infection in an immunocompromised host."}
-2025-06-04 02:15:10,832 - INFO -
-==================================================
-2025-06-04 02:15:10,833 - INFO - Stage: match_icd10_code
-2025-06-04 02:15:10,833 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 02:15:10,834 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's prolonged fever, night sweats, weight loss, imaging findings, and immunosuppressed state due to methotrexate and prednisone are most consistent with a serious systemic infectious process, for which B20 (HIV disease resulting in infectious and parasitic diseases) is the ICD-10 code best capturing disseminated opportunistic infections. None of the other provided codes specifically reflect disseminated mycobacterial or fungal infection in an immunocompromised host.",
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 02:15:10,834 - INFO - ==================================================
-
-2025-06-04 02:15:10,837 - INFO -
-==================================================
-2025-06-04 02:15:10,838 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:15:10,839 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's prolonged fever, night sweats, weight loss, imaging findings, and immunosuppressed state due to methotrexate and prednisone are most consistent with a serious systemic infectious process, for which B20 (HIV disease resulting in infectious and parasitic diseases) is the ICD-10 code best capturing disseminated opportunistic infections. None of the other provided codes specifically reflect disseminated mycobacterial or fungal infection in an immunocompromised host.",
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 02:15:10,839 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's prolonged fever, night sweats, weight loss, imaging findings, and immunosuppressed state due to methotrexate and prednisone are most consistent with a serious systemic infectious process, for which B20 (HIV disease resulting in infectious and parasitic diseases) is the ICD-10 code best capturing disseminated opportunistic infections. None of the other provided codes specifically reflect disseminated mycobacterial or fungal infection in an immunocompromised host.",
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 02:15:10,840 - INFO - ==================================================
-
-2025-06-04 02:15:10,842 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's prolonged fever, night sweats, weight loss, imaging findings, and immunosuppressed state due to methotrexate and prednisone are most consistent with a serious systemic infectious process, for which B20 (HIV disease resulting in infectious and parasitic diseases) is the ICD-10 code best capturing disseminated opportunistic infections. None of the other provided codes specifically reflect disseminated mycobacterial or fungal infection in an immunocompromised host.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:15:12,611 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 specifically denotes HIV disease with resulting infections, but this patient has immunosuppression from rheumatoid arthritis treatment, not HIV; a code for disseminated mycobacterial or fungal infection would be more appropriate."}
-2025-06-04 02:15:12,612 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 specifically denotes HIV disease with resulting infections, but this patient has immunosuppression from rheumatoid arthritis treatment, not HIV; a code for disseminated mycobacterial or fungal infection would be more appropriate.'}
-2025-06-04 02:15:12,614 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:15:14,972 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's clinical syndrome of persistent fever, night sweats, weight loss, and multi-organ nodular lesions in an immunosuppressed host raises concern for disseminated opportunistic infections, which are often associated with immunodeficiency. Of the available codes, B20 (HIV disease) is most closely linked to such presentations and provides the best match for an immunocompromised state with risk for opportunistic infections like mycobacterial or fungal processes."}
-2025-06-04 02:15:14,975 - INFO -
-==================================================
-2025-06-04 02:15:14,976 - INFO - Stage: match_icd10_code
-2025-06-04 02:15:14,977 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 02:15:14,977 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's clinical syndrome of persistent fever, night sweats, weight loss, and multi-organ nodular lesions in an immunosuppressed host raises concern for disseminated opportunistic infections, which are often associated with immunodeficiency. Of the available codes, B20 (HIV disease) is most closely linked to such presentations and provides the best match for an immunocompromised state with risk for opportunistic infections like mycobacterial or fungal processes.",
- "error": null,
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 02:15:14,978 - INFO - ==================================================
-
-2025-06-04 02:15:14,982 - INFO -
-==================================================
-2025-06-04 02:15:14,983 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:15:14,984 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's clinical syndrome of persistent fever, night sweats, weight loss, and multi-organ nodular lesions in an immunosuppressed host raises concern for disseminated opportunistic infections, which are often associated with immunodeficiency. Of the available codes, B20 (HIV disease) is most closely linked to such presentations and provides the best match for an immunocompromised state with risk for opportunistic infections like mycobacterial or fungal processes.",
- "error": null,
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 02:15:14,984 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's clinical syndrome of persistent fever, night sweats, weight loss, and multi-organ nodular lesions in an immunosuppressed host raises concern for disseminated opportunistic infections, which are often associated with immunodeficiency. Of the available codes, B20 (HIV disease) is most closely linked to such presentations and provides the best match for an immunocompromised state with risk for opportunistic infections like mycobacterial or fungal processes.",
- "error": null,
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 02:15:14,985 - INFO - ==================================================
-
-2025-06-04 02:15:14,987 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's clinical syndrome of persistent fever, night sweats, weight loss, and multi-organ nodular lesions in an immunosuppressed host raises concern for disseminated opportunistic infections, which are often associated with immunodeficiency. Of the available codes, B20 (HIV disease) is most closely linked to such presentations and provides the best match for an immunocompromised state with risk for opportunistic infections like mycobacterial or fungal processes.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:15:16,488 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 refers to HIV disease, but this patient is immunosuppressed from rheumatoid arthritis treatment with methotrexate and prednisone, not from HIV infection."}
-2025-06-04 02:15:16,488 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 refers to HIV disease, but this patient is immunosuppressed from rheumatoid arthritis treatment with methotrexate and prednisone, not from HIV infection.'}
-2025-06-04 02:15:16,491 - INFO -
-==================================================
-2025-06-04 02:15:16,492 - INFO - Stage: stopper_node
-2025-06-04 02:15:16,493 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Stopped after 3 retries. Manual review required.",
- "retry_count": 3,
- "stopped": true
-}
-2025-06-04 02:15:16,493 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Stopped after 3 retries. Manual review required.",
- "retry_count": 3,
- "stopped": true
-}
-2025-06-04 02:15:16,494 - INFO - ==================================================
-
-2025-06-04 02:15:16,496 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 02:15:17,714 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 02:15:17,715 - INFO -
-==================================================
-2025-06-04 02:15:17,716 - INFO - Stage: extract_patient_info
-2025-06-04 02:15:17,718 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Invalid match: The code B20 refers to HIV disease, but this patient is immunosuppressed from rheumatoid arthritis treatment with methotrexate and prednisone, not from HIV infection.",
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 02:15:17,718 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Invalid match: The code B20 refers to HIV disease, but this patient is immunosuppressed from rheumatoid arthritis treatment with methotrexate and prednisone, not from HIV infection.",
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 02:15:17,719 - INFO - ==================================================
-
-2025-06-04 02:15:17,725 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:15:20,829 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "Z79.4", "rationale": "Z79.4 codes for long-term (current) use of drugs such as immunosuppressants, which applies here because the patient is on methotrexate and prednisone, predisposing her to opportunistic infections like disseminated mycobacterial or atypical fungal infections."}
-2025-06-04 02:15:20,832 - INFO -
-==================================================
-2025-06-04 02:15:20,834 - INFO - Stage: match_icd10_code
-2025-06-04 02:15:20,837 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 4,
- "stopped": false
-}
-2025-06-04 02:15:20,838 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 codes for long-term (current) use of drugs such as immunosuppressants, which applies here because the patient is on methotrexate and prednisone, predisposing her to opportunistic infections like disseminated mycobacterial or atypical fungal infections.",
- "error": null,
- "retry_count": 4,
- "stopped": false
-}
-2025-06-04 02:15:20,841 - INFO - ==================================================
-
-2025-06-04 02:15:20,844 - INFO -
-==================================================
-2025-06-04 02:15:20,845 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:15:20,851 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 codes for long-term (current) use of drugs such as immunosuppressants, which applies here because the patient is on methotrexate and prednisone, predisposing her to opportunistic infections like disseminated mycobacterial or atypical fungal infections.",
- "error": null,
- "retry_count": 4,
- "stopped": false
-}
-2025-06-04 02:15:20,857 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 codes for long-term (current) use of drugs such as immunosuppressants, which applies here because the patient is on methotrexate and prednisone, predisposing her to opportunistic infections like disseminated mycobacterial or atypical fungal infections.",
- "error": null,
- "retry_count": 4,
- "stopped": false
-}
-2025-06-04 02:15:20,860 - INFO - ==================================================
-
-2025-06-04 02:15:20,872 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: Z79.4
- Rationale: Z79.4 codes for long-term (current) use of drugs such as immunosuppressants, which applies here because the patient is on methotrexate and prednisone, predisposing her to opportunistic infections like disseminated mycobacterial or atypical fungal infections.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:15:22,385 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": true, "reason": "Z79.4 is appropriate because the patient is on long-term immunosuppressant therapy (methotrexate and prednisone), predisposing her to opportunistic infections, which is central to the clinical scenario."}
-2025-06-04 02:15:22,386 - INFO - Validation result: {'is_valid': True, 'reason': 'Z79.4 is appropriate because the patient is on long-term immunosuppressant therapy (methotrexate and prednisone), predisposing her to opportunistic infections, which is central to the clinical scenario.'}
-2025-06-04 02:15:22,388 - INFO -
-==================================================
-2025-06-04 02:15:22,389 - INFO - Stage: validate_icd10_clinical_match
-2025-06-04 02:15:22,390 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 codes for long-term (current) use of drugs such as immunosuppressants, which applies here because the patient is on methotrexate and prednisone, predisposing her to opportunistic infections like disseminated mycobacterial or atypical fungal infections.",
- "error": null,
- "retry_count": 4,
- "stopped": false
-}
-2025-06-04 02:15:22,391 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 codes for long-term (current) use of drugs such as immunosuppressants, which applies here because the patient is on methotrexate and prednisone, predisposing her to opportunistic infections like disseminated mycobacterial or atypical fungal infections.",
- "error": null,
- "retry_count": 4,
- "stopped": false
-}
-2025-06-04 02:15:22,392 - INFO - ==================================================
-
-2025-06-04 02:15:22,394 - INFO -
-==================================================
-2025-06-04 02:15:22,395 - INFO - Final Result:
-2025-06-04 02:15:22,395 - INFO - {
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "Z79.4 codes for long-term (current) use of drugs such as immunosuppressants, which applies here because the patient is on methotrexate and prednisone, predisposing her to opportunistic infections like disseminated mycobacterial or atypical fungal infections.",
- "error": null,
- "retry_count": 4,
- "stopped": false
-}
-2025-06-04 02:15:22,396 - INFO - ==================================================
-
-2025-06-04 02:15:52,683 - INFO -
-==================================================
-2025-06-04 02:15:52,685 - INFO - Starting new clinical case processing
-2025-06-04 02:15:52,686 - INFO - Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
-2025-06-04 02:15:52,687 - INFO - Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-2025-06-04 02:15:52,688 - INFO - ==================================================
-
-2025-06-04 02:15:52,693 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 02:15:54,950 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 02:15:54,953 - INFO -
-==================================================
-2025-06-04 02:15:54,953 - INFO - Stage: extract_patient_info
-2025-06-04 02:15:54,954 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:15:54,955 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:15:54,956 - INFO - ==================================================
-
-2025-06-04 02:15:54,957 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:15:58,544 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient is immunosuppressed and presents with constitutional symptoms and findings concerning for disseminated infection. While the presented codes lack specific entries for disseminated mycobacterial or fungal infection, 'B20' corresponds to 'HIV disease', which is often used as a proxy for immunocompromised status with associated opportunistic infections in coding scenarios when a more specific code is not available. None of the remaining codes (osteoporosis, long-term medication use, diabetes, hypothyroidism, lipid disorder, hypertension, vitamin D deficiency, or transplant status) are as applicable to the scenario of severe opportunistic infection in an immunosuppressed host."}
-2025-06-04 02:15:58,547 - INFO -
-==================================================
-2025-06-04 02:15:58,548 - INFO - Stage: match_icd10_code
-2025-06-04 02:15:58,548 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 1,
- "stopped": false
-}
-2025-06-04 02:15:58,548 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient is immunosuppressed and presents with constitutional symptoms and findings concerning for disseminated infection. While the presented codes lack specific entries for disseminated mycobacterial or fungal infection, 'B20' corresponds to 'HIV disease', which is often used as a proxy for immunocompromised status with associated opportunistic infections in coding scenarios when a more specific code is not available. None of the remaining codes (osteoporosis, long-term medication use, diabetes, hypothyroidism, lipid disorder, hypertension, vitamin D deficiency, or transplant status) are as applicable to the scenario of severe opportunistic infection in an immunosuppressed host.",
- "error": null,
- "retry_count": 1,
- "stopped": false
-}
-2025-06-04 02:15:58,549 - INFO - ==================================================
-
-2025-06-04 02:15:58,551 - INFO -
-==================================================
-2025-06-04 02:15:58,552 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:15:58,552 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient is immunosuppressed and presents with constitutional symptoms and findings concerning for disseminated infection. While the presented codes lack specific entries for disseminated mycobacterial or fungal infection, 'B20' corresponds to 'HIV disease', which is often used as a proxy for immunocompromised status with associated opportunistic infections in coding scenarios when a more specific code is not available. None of the remaining codes (osteoporosis, long-term medication use, diabetes, hypothyroidism, lipid disorder, hypertension, vitamin D deficiency, or transplant status) are as applicable to the scenario of severe opportunistic infection in an immunosuppressed host.",
- "error": null,
- "retry_count": 1,
- "stopped": false
-}
-2025-06-04 02:15:58,553 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient is immunosuppressed and presents with constitutional symptoms and findings concerning for disseminated infection. While the presented codes lack specific entries for disseminated mycobacterial or fungal infection, 'B20' corresponds to 'HIV disease', which is often used as a proxy for immunocompromised status with associated opportunistic infections in coding scenarios when a more specific code is not available. None of the remaining codes (osteoporosis, long-term medication use, diabetes, hypothyroidism, lipid disorder, hypertension, vitamin D deficiency, or transplant status) are as applicable to the scenario of severe opportunistic infection in an immunosuppressed host.",
- "error": null,
- "retry_count": 1,
- "stopped": false
-}
-2025-06-04 02:15:58,553 - INFO - ==================================================
-
-2025-06-04 02:15:58,555 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient is immunosuppressed and presents with constitutional symptoms and findings concerning for disseminated infection. While the presented codes lack specific entries for disseminated mycobacterial or fungal infection, 'B20' corresponds to 'HIV disease', which is often used as a proxy for immunocompromised status with associated opportunistic infections in coding scenarios when a more specific code is not available. None of the remaining codes (osteoporosis, long-term medication use, diabetes, hypothyroidism, lipid disorder, hypertension, vitamin D deficiency, or transplant status) are as applicable to the scenario of severe opportunistic infection in an immunosuppressed host.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:16:00,341 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease, but the patient is immunosuppressed due to methotrexate and prednisone for rheumatoid arthritis, not HIV. A more appropriate code is not available in the provided list, but B20 is not valid for this scenario."}
-2025-06-04 02:16:00,342 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease, but the patient is immunosuppressed due to methotrexate and prednisone for rheumatoid arthritis, not HIV. A more appropriate code is not available in the provided list, but B20 is not valid for this scenario.'}
-2025-06-04 02:16:00,344 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:16:02,384 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "Z79.4", "rationale": "The patient is immunosuppressed due to long-term use of immunosuppressive agents (methotrexate and prednisone) for rheumatoid arthritis, as evidenced by her medication history. Z79.4 (Long term (current) use of other immunosuppressive agents) best reflects her clinical status among the provided codes, since there is no specific code listed for disseminated mycobacterial or fungal infection."}
-2025-06-04 02:16:02,388 - INFO -
-==================================================
-2025-06-04 02:16:02,388 - INFO - Stage: match_icd10_code
-2025-06-04 02:16:02,389 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 02:16:02,389 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient is immunosuppressed due to long-term use of immunosuppressive agents (methotrexate and prednisone) for rheumatoid arthritis, as evidenced by her medication history. Z79.4 (Long term (current) use of other immunosuppressive agents) best reflects her clinical status among the provided codes, since there is no specific code listed for disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 02:16:02,390 - INFO - ==================================================
-
-2025-06-04 02:16:02,409 - INFO -
-==================================================
-2025-06-04 02:16:02,410 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:16:02,411 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient is immunosuppressed due to long-term use of immunosuppressive agents (methotrexate and prednisone) for rheumatoid arthritis, as evidenced by her medication history. Z79.4 (Long term (current) use of other immunosuppressive agents) best reflects her clinical status among the provided codes, since there is no specific code listed for disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 02:16:02,411 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient is immunosuppressed due to long-term use of immunosuppressive agents (methotrexate and prednisone) for rheumatoid arthritis, as evidenced by her medication history. Z79.4 (Long term (current) use of other immunosuppressive agents) best reflects her clinical status among the provided codes, since there is no specific code listed for disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 02:16:02,411 - INFO - ==================================================
-
-2025-06-04 02:16:02,414 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: Z79.4
- Rationale: The patient is immunosuppressed due to long-term use of immunosuppressive agents (methotrexate and prednisone) for rheumatoid arthritis, as evidenced by her medication history. Z79.4 (Long term (current) use of other immunosuppressive agents) best reflects her clinical status among the provided codes, since there is no specific code listed for disseminated mycobacterial or fungal infection.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:16:03,797 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": true, "reason": "The code Z79.4 accurately reflects the patient's long-term use of immunosuppressive agents, which is pertinent to her immunosuppressed status and related clinical presentation."}
-2025-06-04 02:16:03,798 - INFO - Validation result: {'is_valid': True, 'reason': "The code Z79.4 accurately reflects the patient's long-term use of immunosuppressive agents, which is pertinent to her immunosuppressed status and related clinical presentation."}
-2025-06-04 02:16:03,800 - INFO -
-==================================================
-2025-06-04 02:16:03,800 - INFO - Stage: validate_icd10_clinical_match
-2025-06-04 02:16:03,801 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient is immunosuppressed due to long-term use of immunosuppressive agents (methotrexate and prednisone) for rheumatoid arthritis, as evidenced by her medication history. Z79.4 (Long term (current) use of other immunosuppressive agents) best reflects her clinical status among the provided codes, since there is no specific code listed for disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 02:16:03,802 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient is immunosuppressed due to long-term use of immunosuppressive agents (methotrexate and prednisone) for rheumatoid arthritis, as evidenced by her medication history. Z79.4 (Long term (current) use of other immunosuppressive agents) best reflects her clinical status among the provided codes, since there is no specific code listed for disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 02:16:03,802 - INFO - ==================================================
-
-2025-06-04 02:16:03,805 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 02:16:04,949 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 02:16:04,951 - INFO -
-==================================================
-2025-06-04 02:16:04,952 - INFO - Stage: extract_patient_info
-2025-06-04 02:16:04,955 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient is immunosuppressed due to long-term use of immunosuppressive agents (methotrexate and prednisone) for rheumatoid arthritis, as evidenced by her medication history. Z79.4 (Long term (current) use of other immunosuppressive agents) best reflects her clinical status among the provided codes, since there is no specific code listed for disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 02:16:04,956 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient is immunosuppressed due to long-term use of immunosuppressive agents (methotrexate and prednisone) for rheumatoid arthritis, as evidenced by her medication history. Z79.4 (Long term (current) use of other immunosuppressive agents) best reflects her clinical status among the provided codes, since there is no specific code listed for disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 02:16:04,958 - INFO - ==================================================
-
-2025-06-04 02:16:04,964 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:16:07,219 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation of prolonged fever, night sweats, weight loss, and imaging findings of disseminated lesions, along with immunosuppression due to rheumatoid arthritis treatment, raises strong suspicion for an opportunistic infection such as disseminated mycobacterial or fungal disease. While B20 is specifically HIV disease resulting in infectious and parasitic diseases, in this list, it is the only infectious disease code provided and most closely matches the clinical scenario of a serious systemic opportunistic infection in an immunocompromised host."}
-2025-06-04 02:16:07,261 - INFO -
-==================================================
-2025-06-04 02:16:07,262 - INFO - Stage: match_icd10_code
-2025-06-04 02:16:07,263 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "Z79.4",
- "rationale": "The patient is immunosuppressed due to long-term use of immunosuppressive agents (methotrexate and prednisone) for rheumatoid arthritis, as evidenced by her medication history. Z79.4 (Long term (current) use of other immunosuppressive agents) best reflects her clinical status among the provided codes, since there is no specific code listed for disseminated mycobacterial or fungal infection.",
- "error": null,
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 02:16:07,264 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of prolonged fever, night sweats, weight loss, and imaging findings of disseminated lesions, along with immunosuppression due to rheumatoid arthritis treatment, raises strong suspicion for an opportunistic infection such as disseminated mycobacterial or fungal disease. While B20 is specifically HIV disease resulting in infectious and parasitic diseases, in this list, it is the only infectious disease code provided and most closely matches the clinical scenario of a serious systemic opportunistic infection in an immunocompromised host.",
- "error": null,
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 02:16:07,264 - INFO - ==================================================
-
-2025-06-04 02:16:07,286 - INFO -
-==================================================
-2025-06-04 02:16:07,292 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:16:07,313 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of prolonged fever, night sweats, weight loss, and imaging findings of disseminated lesions, along with immunosuppression due to rheumatoid arthritis treatment, raises strong suspicion for an opportunistic infection such as disseminated mycobacterial or fungal disease. While B20 is specifically HIV disease resulting in infectious and parasitic diseases, in this list, it is the only infectious disease code provided and most closely matches the clinical scenario of a serious systemic opportunistic infection in an immunocompromised host.",
- "error": null,
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 02:16:07,322 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation of prolonged fever, night sweats, weight loss, and imaging findings of disseminated lesions, along with immunosuppression due to rheumatoid arthritis treatment, raises strong suspicion for an opportunistic infection such as disseminated mycobacterial or fungal disease. While B20 is specifically HIV disease resulting in infectious and parasitic diseases, in this list, it is the only infectious disease code provided and most closely matches the clinical scenario of a serious systemic opportunistic infection in an immunocompromised host.",
- "error": null,
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 02:16:07,332 - INFO - ==================================================
-
-2025-06-04 02:16:07,343 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation of prolonged fever, night sweats, weight loss, and imaging findings of disseminated lesions, along with immunosuppression due to rheumatoid arthritis treatment, raises strong suspicion for an opportunistic infection such as disseminated mycobacterial or fungal disease. While B20 is specifically HIV disease resulting in infectious and parasitic diseases, in this list, it is the only infectious disease code provided and most closely matches the clinical scenario of a serious systemic opportunistic infection in an immunocompromised host.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:16:08,840 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, while the patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV; thus, B20 is not appropriate for this case."}
-2025-06-04 02:16:08,842 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, while the patient is immunosuppressed due to rheumatoid arthritis treatment, not HIV; thus, B20 is not appropriate for this case.'}
-2025-06-04 02:16:08,845 - INFO -
-==================================================
-2025-06-04 02:16:08,845 - INFO - Stage: stopper_node
-2025-06-04 02:16:08,846 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Stopped after 3 retries. Manual review required.",
- "retry_count": 3,
- "stopped": true
-}
-2025-06-04 02:16:08,847 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Stopped after 3 retries. Manual review required.",
- "retry_count": 3,
- "stopped": true
-}
-2025-06-04 02:16:08,847 - INFO - ==================================================
-
-2025-06-04 02:16:08,848 - INFO -
-==================================================
-2025-06-04 02:16:08,848 - INFO - Final Result:
-2025-06-04 02:16:08,849 - INFO - {
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Stopped after 3 retries. Manual review required.",
- "retry_count": 3,
- "stopped": true
-}
-2025-06-04 02:16:08,849 - INFO - ==================================================
-
-2025-06-04 02:17:06,844 - INFO -
-==================================================
-2025-06-04 02:17:06,846 - INFO - Starting new clinical case processing
-2025-06-04 02:17:06,846 - INFO - Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
-2025-06-04 02:17:06,848 - INFO - Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-2025-06-04 02:17:06,849 - INFO - ==================================================
-
-2025-06-04 02:17:06,855 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 02:17:08,107 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 02:17:08,110 - INFO -
-==================================================
-2025-06-04 02:17:08,111 - INFO - Stage: extract_patient_info
-2025-06-04 02:17:08,111 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": null,
- "patient_gender": null,
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:17:08,112 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 0,
- "stopped": false
-}
-2025-06-04 02:17:08,112 - INFO - ==================================================
-
-2025-06-04 02:17:08,114 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:17:10,783 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's persistent fevers, night sweats, weight loss, and multiple organ involvement in the context of immunosuppression are most consistent with an opportunistic infection, and of the available codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the only code related to disseminated infectious processes in immunocompromised hosts. While the patient does not have a known HIV diagnosis, no other listed codes fit the clinical scenario of systemic infection. Therefore, B20 is the closest ICD-10 code from the list to represent a disseminated infectious process in an immunocompromised host."}
-2025-06-04 02:17:10,785 - INFO -
-==================================================
-2025-06-04 02:17:10,786 - INFO - Stage: match_icd10_code
-2025-06-04 02:17:10,786 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 1,
- "stopped": false
-}
-2025-06-04 02:17:10,787 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's persistent fevers, night sweats, weight loss, and multiple organ involvement in the context of immunosuppression are most consistent with an opportunistic infection, and of the available codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the only code related to disseminated infectious processes in immunocompromised hosts. While the patient does not have a known HIV diagnosis, no other listed codes fit the clinical scenario of systemic infection. Therefore, B20 is the closest ICD-10 code from the list to represent a disseminated infectious process in an immunocompromised host.",
- "error": null,
- "retry_count": 1,
- "stopped": false
-}
-2025-06-04 02:17:10,787 - INFO - ==================================================
-
-2025-06-04 02:17:10,789 - INFO -
-==================================================
-2025-06-04 02:17:10,790 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:17:10,790 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's persistent fevers, night sweats, weight loss, and multiple organ involvement in the context of immunosuppression are most consistent with an opportunistic infection, and of the available codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the only code related to disseminated infectious processes in immunocompromised hosts. While the patient does not have a known HIV diagnosis, no other listed codes fit the clinical scenario of systemic infection. Therefore, B20 is the closest ICD-10 code from the list to represent a disseminated infectious process in an immunocompromised host.",
- "error": null,
- "retry_count": 1,
- "stopped": false
-}
-2025-06-04 02:17:10,791 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's persistent fevers, night sweats, weight loss, and multiple organ involvement in the context of immunosuppression are most consistent with an opportunistic infection, and of the available codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the only code related to disseminated infectious processes in immunocompromised hosts. While the patient does not have a known HIV diagnosis, no other listed codes fit the clinical scenario of systemic infection. Therefore, B20 is the closest ICD-10 code from the list to represent a disseminated infectious process in an immunocompromised host.",
- "error": null,
- "retry_count": 1,
- "stopped": false
-}
-2025-06-04 02:17:10,791 - INFO - ==================================================
-
-2025-06-04 02:17:10,793 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's persistent fevers, night sweats, weight loss, and multiple organ involvement in the context of immunosuppression are most consistent with an opportunistic infection, and of the available codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the only code related to disseminated infectious processes in immunocompromised hosts. While the patient does not have a known HIV diagnosis, no other listed codes fit the clinical scenario of systemic infection. Therefore, B20 is the closest ICD-10 code from the list to represent a disseminated infectious process in an immunocompromised host.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:17:12,529 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 specifically refers to HIV disease with resulting infections; the patient does not have HIV, so this code is not appropriate for her immunosuppression due to rheumatoid arthritis therapy."}
-2025-06-04 02:17:12,530 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 specifically refers to HIV disease with resulting infections; the patient does not have HIV, so this code is not appropriate for her immunosuppression due to rheumatoid arthritis therapy.'}
-2025-06-04 02:17:12,534 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:17:14,683 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's immunosuppressed status and systemic symptoms with concern for disseminated infection match B20 (HIV disease resulting in infectious and parasitic diseases), as this is the closest code among those provided relating to disseminated opportunistic infections, although the patient does not have diagnosed HIV; the other codes do not pertain to infectious etiologies."}
-2025-06-04 02:17:14,686 - INFO -
-==================================================
-2025-06-04 02:17:14,686 - INFO - Stage: match_icd10_code
-2025-06-04 02:17:14,687 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 02:17:14,687 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's immunosuppressed status and systemic symptoms with concern for disseminated infection match B20 (HIV disease resulting in infectious and parasitic diseases), as this is the closest code among those provided relating to disseminated opportunistic infections, although the patient does not have diagnosed HIV; the other codes do not pertain to infectious etiologies.",
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 02:17:14,688 - INFO - ==================================================
-
-2025-06-04 02:17:14,689 - INFO -
-==================================================
-2025-06-04 02:17:14,690 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:17:14,691 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's immunosuppressed status and systemic symptoms with concern for disseminated infection match B20 (HIV disease resulting in infectious and parasitic diseases), as this is the closest code among those provided relating to disseminated opportunistic infections, although the patient does not have diagnosed HIV; the other codes do not pertain to infectious etiologies.",
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 02:17:14,691 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's immunosuppressed status and systemic symptoms with concern for disseminated infection match B20 (HIV disease resulting in infectious and parasitic diseases), as this is the closest code among those provided relating to disseminated opportunistic infections, although the patient does not have diagnosed HIV; the other codes do not pertain to infectious etiologies.",
- "error": null,
- "retry_count": 2,
- "stopped": false
-}
-2025-06-04 02:17:14,693 - INFO - ==================================================
-
-2025-06-04 02:17:14,695 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's immunosuppressed status and systemic symptoms with concern for disseminated infection match B20 (HIV disease resulting in infectious and parasitic diseases), as this is the closest code among those provided relating to disseminated opportunistic infections, although the patient does not have diagnosed HIV; the other codes do not pertain to infectious etiologies.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:17:16,633 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease; the patient is immunosuppressed from medications but does not have HIV, so this code is inappropriate for her diagnosis."}
-2025-06-04 02:17:16,634 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease; the patient is immunosuppressed from medications but does not have HIV, so this code is inappropriate for her diagnosis.'}
-2025-06-04 02:17:16,637 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:17:18,956 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation is suggestive of a disseminated opportunistic infection, which is commonly encountered in immunocompromised individuals. Although she is not explicitly described as HIV-positive, among the given codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely matches the scenario of an immunosuppressed state with disseminated mycobacterial or fungal infection. None of the other codes relate to infections or immunosuppression, making B20 the most appropriate choice."}
-2025-06-04 02:17:18,957 - INFO -
-==================================================
-2025-06-04 02:17:18,958 - INFO - Stage: match_icd10_code
-2025-06-04 02:17:18,959 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 02:17:18,959 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is suggestive of a disseminated opportunistic infection, which is commonly encountered in immunocompromised individuals. Although she is not explicitly described as HIV-positive, among the given codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely matches the scenario of an immunosuppressed state with disseminated mycobacterial or fungal infection. None of the other codes relate to infections or immunosuppression, making B20 the most appropriate choice.",
- "error": null,
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 02:17:18,960 - INFO - ==================================================
-
-2025-06-04 02:17:18,961 - INFO -
-==================================================
-2025-06-04 02:17:18,962 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:17:18,962 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is suggestive of a disseminated opportunistic infection, which is commonly encountered in immunocompromised individuals. Although she is not explicitly described as HIV-positive, among the given codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely matches the scenario of an immunosuppressed state with disseminated mycobacterial or fungal infection. None of the other codes relate to infections or immunosuppression, making B20 the most appropriate choice.",
- "error": null,
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 02:17:18,963 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation is suggestive of a disseminated opportunistic infection, which is commonly encountered in immunocompromised individuals. Although she is not explicitly described as HIV-positive, among the given codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely matches the scenario of an immunosuppressed state with disseminated mycobacterial or fungal infection. None of the other codes relate to infections or immunosuppression, making B20 the most appropriate choice.",
- "error": null,
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 02:17:18,963 - INFO - ==================================================
-
-2025-06-04 02:17:18,965 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation is suggestive of a disseminated opportunistic infection, which is commonly encountered in immunocompromised individuals. Although she is not explicitly described as HIV-positive, among the given codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely matches the scenario of an immunosuppressed state with disseminated mycobacterial or fungal infection. None of the other codes relate to infections or immunosuppression, making B20 the most appropriate choice.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:17:20,511 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, but the patient is immunocompromised due to rheumatoid arthritis treatment, not HIV, making B20 inappropriate for this case."}
-2025-06-04 02:17:20,511 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, but the patient is immunocompromised due to rheumatoid arthritis treatment, not HIV, making B20 inappropriate for this case.'}
-2025-06-04 02:17:20,513 - INFO -
-==================================================
-2025-06-04 02:17:20,514 - INFO - Stage: stopper_node
-2025-06-04 02:17:20,514 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Stopped after 3 retries. Manual review required.",
- "retry_count": 3,
- "stopped": true
-}
-2025-06-04 02:17:20,515 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Stopped after 3 retries. Manual review required.",
- "retry_count": 3,
- "stopped": true
-}
-2025-06-04 02:17:20,516 - INFO - ==================================================
-
-2025-06-04 02:17:20,518 - INFO - LLM Prompt for extract_patient_info:
-
- Extract the patient's age and gender from the following clinical notes.
- Return ONLY a JSON object with 'age' and 'gender' fields.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"age": 55, "gender": "male"}
-
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
-
-2025-06-04 02:17:21,641 - INFO - LLM Response for extract_patient_info:
-{"age": 52, "gender": "female"}
-2025-06-04 02:17:21,643 - INFO -
-==================================================
-2025-06-04 02:17:21,643 - INFO - Stage: extract_patient_info
-2025-06-04 02:17:21,644 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Invalid match: The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, but the patient is immunocompromised due to rheumatoid arthritis treatment, not HIV, making B20 inappropriate for this case.",
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 02:17:21,644 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Invalid match: The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, but the patient is immunocompromised due to rheumatoid arthritis treatment, not HIV, making B20 inappropriate for this case.",
- "retry_count": 3,
- "stopped": false
-}
-2025-06-04 02:17:21,645 - INFO - ==================================================
-
-2025-06-04 02:17:21,646 - INFO - LLM Prompt for match_icd10_code:
-
- Match the clinical information to the most appropriate ICD-10 code from the provided list.
- Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.
- DO NOT include any other text, thinking process, or explanation.
- The response should start with { and end with }.
-
- Example of expected format:
- {"icd10_code": "xxx", "rationale": "xxxxx"}
-
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:17:24,262 - INFO - LLM Response for match_icd10_code:
-{"icd10_code": "B20", "rationale": "The patient's presentation with persistent fever, night sweats, weight loss, multiple small pulmonary nodules, and hepatosplenic lesions on immunosuppression raises concern for an opportunistic infection. B20 (HIV disease) is the only infectious disease code provided and is used for immunosuppression-related infections not otherwise specified by other codes in this list. While she is not documented as HIV-positive, none of the other available codes represent mycobacterial or fungal infections; hence, B20 most closely matches the clinical scenario of immunosuppression and opportunistic infection risk."}
-2025-06-04 02:17:24,265 - INFO -
-==================================================
-2025-06-04 02:17:24,265 - INFO - Stage: match_icd10_code
-2025-06-04 02:17:24,266 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": null,
- "retry_count": 4,
- "stopped": false
-}
-2025-06-04 02:17:24,268 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation with persistent fever, night sweats, weight loss, multiple small pulmonary nodules, and hepatosplenic lesions on immunosuppression raises concern for an opportunistic infection. B20 (HIV disease) is the only infectious disease code provided and is used for immunosuppression-related infections not otherwise specified by other codes in this list. While she is not documented as HIV-positive, none of the other available codes represent mycobacterial or fungal infections; hence, B20 most closely matches the clinical scenario of immunosuppression and opportunistic infection risk.",
- "error": null,
- "retry_count": 4,
- "stopped": false
-}
-2025-06-04 02:17:24,269 - INFO - ==================================================
-
-2025-06-04 02:17:24,270 - INFO -
-==================================================
-2025-06-04 02:17:24,271 - INFO - Stage: validate_icd10_code_exists
-2025-06-04 02:17:24,271 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation with persistent fever, night sweats, weight loss, multiple small pulmonary nodules, and hepatosplenic lesions on immunosuppression raises concern for an opportunistic infection. B20 (HIV disease) is the only infectious disease code provided and is used for immunosuppression-related infections not otherwise specified by other codes in this list. While she is not documented as HIV-positive, none of the other available codes represent mycobacterial or fungal infections; hence, B20 most closely matches the clinical scenario of immunosuppression and opportunistic infection risk.",
- "error": null,
- "retry_count": 4,
- "stopped": false
-}
-2025-06-04 02:17:24,272 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": "B20",
- "rationale": "The patient's presentation with persistent fever, night sweats, weight loss, multiple small pulmonary nodules, and hepatosplenic lesions on immunosuppression raises concern for an opportunistic infection. B20 (HIV disease) is the only infectious disease code provided and is used for immunosuppression-related infections not otherwise specified by other codes in this list. While she is not documented as HIV-positive, none of the other available codes represent mycobacterial or fungal infections; hence, B20 most closely matches the clinical scenario of immunosuppression and opportunistic infection risk.",
- "error": null,
- "retry_count": 4,
- "stopped": false
-}
-2025-06-04 02:17:24,272 - INFO - ==================================================
-
-2025-06-04 02:17:24,274 - INFO - LLM Prompt for validate_icd10_clinical_match:
-
- Validate if the matched ICD-10 code is appropriate for the clinical case.
- Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).
- DO NOT include any other text, thinking process, or explanation.
-
- Example of expected format:
- {"is_valid": true, "reason": "The code I10 matches the patient's hypertension diagnosis"}
- or
- {"is_valid": false, "reason": "The code I10 is too general for this specific case"}
-
- Current Match:
- ICD-10 Code: B20
- Rationale: The patient's presentation with persistent fever, night sweats, weight loss, multiple small pulmonary nodules, and hepatosplenic lesions on immunosuppression raises concern for an opportunistic infection. B20 (HIV disease) is the only infectious disease code provided and is used for immunosuppression-related infections not otherwise specified by other codes in this list. While she is not documented as HIV-positive, none of the other available codes represent mycobacterial or fungal infections; hence, B20 most closely matches the clinical scenario of immunosuppression and opportunistic infection risk.
-
- Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?
- Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.
- Patient Age: 52
- Patient Gender: female
-
- Available ICD-10 Codes:
- icd10
-0 M81.0
-1 Z79.4
-2 E11.65
-3 E03.9
-5 E78.5
-6 I10
-7 E55.9
-8 B20
-9 Z94.81
-
-2025-06-04 02:17:25,783 - INFO - LLM Response for validate_icd10_clinical_match:
-{"is_valid": false, "reason": "The code B20 refers specifically to HIV disease, but the patient has immunosuppression due to rheumatoid arthritis treatment and not HIV, so B20 is not appropriate for this case."}
-2025-06-04 02:17:25,784 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 refers specifically to HIV disease, but the patient has immunosuppression due to rheumatoid arthritis treatment and not HIV, so B20 is not appropriate for this case.'}
-2025-06-04 02:17:25,787 - INFO -
-==================================================
-2025-06-04 02:17:25,787 - INFO - Stage: stopper_node
-2025-06-04 02:17:25,787 - INFO - Input: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Stopped after 4 retries. Manual review required.",
- "retry_count": 4,
- "stopped": true
-}
-2025-06-04 02:17:25,788 - INFO - Output: {
- "clinical_question": "In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?",
- "clinical_notes": "52\u2011year\u2011old female with rheumatoid arthritis on methotrexate and low\u2011dose prednisone presents with 6\u2011week history of daily fevers up to 102\u00b0F, drenching night sweats, and a 12\u2011lb unintentional weight loss. Initial blood cultures and chest X\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\u202fmm/hr), and CRP (12\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.",
- "icd10_codes": " icd10\n0 M81.0\n1 Z79.4\n2 E11.65\n3 E03.9\n5 E78.5\n6 I10\n7 E55.9\n8 B20\n9 Z94.81",
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Stopped after 4 retries. Manual review required.",
- "retry_count": 4,
- "stopped": true
-}
-2025-06-04 02:17:25,789 - INFO - ==================================================
-
-2025-06-04 02:17:25,790 - INFO -
-==================================================
-2025-06-04 02:17:25,792 - INFO - Final Result:
-2025-06-04 02:17:25,794 - INFO - {
- "patient_age": 52,
- "patient_gender": "female",
- "icd10_code": null,
- "rationale": null,
- "error": "Stopped after 4 retries. Manual review required.",
- "retry_count": 4,
- "stopped": true
-}
-2025-06-04 02:17:25,794 - INFO - ==================================================
-
diff --git a/scripts/eConsult/Recommender/phase_1/Notebook/phase_1_updated.ipynb b/scripts/eConsult/Recommender/phase_1/Notebook/phase_1_updated.ipynb
index e681e46d..55f84a8c 100644
--- a/scripts/eConsult/Recommender/phase_1/Notebook/phase_1_updated.ipynb
+++ b/scripts/eConsult/Recommender/phase_1/Notebook/phase_1_updated.ipynb
@@ -10,7 +10,7 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": 1,
"metadata": {
"execution": {
"iopub.execute_input": "2025-04-24T23:53:09.958341Z",
@@ -20,18 +20,12 @@
}
},
"outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "The google.cloud.bigquery extension is already loaded. To reload it, use:\n",
- " %reload_ext google.cloud.bigquery\n"
- ]
- },
{
"name": "stderr",
"output_type": "stream",
"text": [
+ "/Users/wenyuanchen/anaconda3/envs/sage_recommender/lib/python3.13/site-packages/google/cloud/bigquery/__init__.py:237: FutureWarning: %load_ext google.cloud.bigquery is deprecated. Install bigquery-magics package and use `%load_ext bigquery_magics`, instead.\n",
+ " warnings.warn(\n",
"/Users/wenyuanchen/anaconda3/envs/sage_recommender/lib/python3.13/site-packages/google/auth/_default.py:76: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK without a quota project. You might receive a \"quota exceeded\" or \"API not enabled\" error. See the following page for troubleshooting: https://cloud.google.com/docs/authentication/adc-troubleshooting/user-creds. \n",
" warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)\n"
]
@@ -42,7 +36,7 @@
"True"
]
},
- "execution_count": 12,
+ "execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
@@ -109,112 +103,9 @@
"cell_type": "code",
"execution_count": 2,
"metadata": {},
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "04aeccb7a54e4da8804820934dbb1fe9",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "Query is running: 0%| |"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "a52a122cdd274b2892d988fe783733f1",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "Downloading: 0%| |"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "%%bigquery --use_rest_api eConsult_QA\n",
- "select * from som-nero-phi-jonc101.Digital_Medical_Con.eConsult_QA limit 100"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 54,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
\n",
""
],
"text/plain": [
- " icd10 dx_name \\\n",
- "0 M81.0 Age-related osteoporosis without current patho... \n",
- "1 Z79.4 Long term (current) use of insulin \n",
- "2 E11.65 Type 2 diabetes mellitus with hyperglycemia \n",
- "3 E03.9 Hypothyroidism, unspecified type \n",
- "4 E03.9 Hypothyroidism, unspecified \n",
- "5 E78.5 Hyperlipidemia, unspecified \n",
- "6 I10 Essential (primary) hypertension \n",
- "7 E55.9 Vitamin D deficiency, unspecified \n",
- "8 B20 Human immunodeficiency virus (HIV) disease (CM... \n",
- "9 Z94.81 Bone marrow transplant status \n",
+ " icd10 dx_name \\\n",
+ "0 M81.0 Age-related osteoporosis without current patho... \n",
+ "1 Z79.4 Long term (current) use of insulin \n",
+ "2 E11.65 Type 2 diabetes mellitus with hyperglycemia \n",
+ "3 E03.9 Hypothyroidism, unspecified type \n",
+ "5 E78.5 Hyperlipidemia, unspecified \n",
+ "... ... ... \n",
+ "9977 F21 Schizotypal personality disorder (CMS-HCC) \n",
+ "9984 E13.319 Other specified diabetes mellitus with unspeci... \n",
+ "9992 L91.8 Other hypertrophic disorders of the skin \n",
+ "9994 I60.9 Subarachnoid hemorrhage (CMS-HCC) \n",
+ "9999 K55.21 Angiodysplasia of colon with hemorrhage \n",
"\n",
- " specialty count \n",
- "0 Endocrinology 133009 \n",
- "1 Endocrinology 90259 \n",
- "2 Endocrinology 88002 \n",
- "3 Endocrinology 85715 \n",
- "4 Endocrinology 80150 \n",
- "5 Endocrinology 77241 \n",
- "6 Endocrinology 74292 \n",
- "7 Endocrinology 73312 \n",
- "8 Infectious Diseases 61123 \n",
- "9 Hematology 60425 "
+ " specialty count \n",
+ "0 Endocrinology 133009 \n",
+ "1 Endocrinology 90259 \n",
+ "2 Endocrinology 88002 \n",
+ "3 Endocrinology 85715 \n",
+ "5 Endocrinology 77241 \n",
+ "... ... ... \n",
+ "9977 Infectious Diseases 37 \n",
+ "9984 Endocrinology 37 \n",
+ "9992 Endocrinology 37 \n",
+ "9994 Hematology 37 \n",
+ "9999 Hematology 37 \n",
+ "\n",
+ "[3092 rows x 4 columns]"
]
},
- "execution_count": 4,
+ "execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "top_200_icd10_codes"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [],
- "source": [
- "top_200_icd10_codes_cleaned = top_200_icd10_codes[['icd10']].drop_duplicates()[:400]"
+ "top_icd10_codes_cleaned"
]
},
{
@@ -422,7 +325,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
@@ -450,7 +353,7 @@
" pass\n",
"\n",
"# Create logs directory if it doesn't exist\n",
- "log_dir = \"logs\"\n",
+ "log_dir = f\"../logs/clinical_workflow_{datetime.datetime.now().strftime(\"%Y%m%d%H%M%S\")}\"\n",
"os.makedirs(log_dir, exist_ok=True)\n",
"\n",
"# Set up logging with the custom handler\n",
@@ -458,7 +361,7 @@
" level=logging.INFO,\n",
" format='%(asctime)s - %(levelname)s - %(message)s',\n",
" handlers=[\n",
- " NonEmptyFileHandler(os.path.join(log_dir, f'clinical_workflow_{datetime.datetime.now().strftime(\"%Y%m%d\")}.log')),\n",
+ " NonEmptyFileHandler(os.path.join(log_dir, 'run.log')),\n",
" logging.StreamHandler()\n",
" ]\n",
")"
@@ -466,7 +369,16 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "top_icd10_codes_cleaned.to_csv(log_dir + \"/top_icd10_codes_cleaned.csv\", index=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
@@ -476,12 +388,13 @@
" output_copy = output_data.copy()\n",
" \n",
" if 'icd10_codes' in input_copy and isinstance(input_copy['icd10_codes'], pd.DataFrame):\n",
- " input_copy['icd10_codes'] = input_copy['icd10_codes'].to_string()\n",
+ " input_copy['icd10_codes'] = \"check separate file for icd10_codes\"\n",
+ " # input_copy['icd10_codes'] = input_copy['icd10_codes'].to_string()\n",
" if 'icd10_codes' in output_copy and isinstance(output_copy['icd10_codes'], pd.DataFrame):\n",
- " output_copy['icd10_codes'] = output_copy['icd10_codes'].to_string()\n",
+ " output_copy['icd10_codes'] = \"check separate file for icd10_codes\"\n",
" \n",
" logging.info(f\"\\n{'='*50}\")\n",
- " logging.info(f\"Stage: {stage_name}\")\n",
+ " logging.info(f\"Summary of Stage: {stage_name}\")\n",
" logging.info(f\"Input: {json.dumps(input_copy, indent=2)}\")\n",
" logging.info(f\"Output: {json.dumps(output_copy, indent=2)}\")\n",
" logging.info(f\"{'='*50}\\n\")"
@@ -496,7 +409,7 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
@@ -517,7 +430,7 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
@@ -542,7 +455,7 @@
},
{
"cell_type": "code",
- "execution_count": 28,
+ "execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
@@ -562,7 +475,7 @@
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
@@ -576,7 +489,7 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
@@ -624,7 +537,7 @@
},
{
"cell_type": "code",
- "execution_count": 51,
+ "execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
@@ -646,7 +559,7 @@
" # )\n",
" # llm = ChatOpenAI(model=\"gpt-4\", temperature=0.3)\n",
" \n",
- " prompt = f\"\"\"\n",
+ " raw_prompt = f\"\"\"\n",
" Match the clinical information to the most appropriate ICD-10 code from the provided list.\n",
" Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.\n",
" DO NOT include any other text, thinking process, or explanation.\n",
@@ -661,10 +574,9 @@
" Patient Age: {state.get('patient_age')}\n",
" Patient Gender: {state.get('patient_gender')}\n",
" \n",
- " Available ICD-10 Codes:\n",
- " {state.get('icd10_codes')}\n",
" \"\"\"\n",
- " logging.info(f\"LLM Prompt for match_icd10_code:\\n{prompt}\")\n",
+ " prompt = raw_prompt + f\"Available ICD-10 Codes: {state['icd10_codes'].to_string()}\"\n",
+ " logging.info(f\"LLM Prompt for match_icd10_code:\\n{raw_prompt} + available ICD-10 codes\")\n",
" # response = llm.invoke([HumanMessage(content=prompt)])\n",
" response = query_llm(prompt)\n",
" logging.info(f\"LLM Response for match_icd10_code:\\n{response}\")\n",
@@ -687,7 +599,7 @@
},
{
"cell_type": "code",
- "execution_count": 42,
+ "execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
@@ -712,7 +624,7 @@
},
{
"cell_type": "code",
- "execution_count": 43,
+ "execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
@@ -726,7 +638,7 @@
" # )\n",
" # llm = ChatOpenAI(model=\"gpt-4\", temperature=0.3)\n",
" \n",
- " prompt = f\"\"\"\n",
+ " raw_prompt = f\"\"\"\n",
" Validate if the matched ICD-10 code is appropriate for the clinical case.\n",
" Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).\n",
" DO NOT include any other text, thinking process, or explanation.\n",
@@ -744,11 +656,9 @@
" Clinical Notes: {state.get('clinical_notes')}\n",
" Patient Age: {state.get('patient_age')}\n",
" Patient Gender: {state.get('patient_gender')}\n",
- " \n",
- " Available ICD-10 Codes:\n",
- " {state['icd10_codes'].to_string()}\n",
" \"\"\"\n",
- " logging.info(f\"LLM Prompt for validate_icd10_clinical_match:\\n{prompt}\")\n",
+ " prompt = raw_prompt + f\"Available ICD-10 Codes: {state['icd10_codes'].to_string()}\"\n",
+ " logging.info(f\"LLM Prompt for validate_icd10_clinical_match:\\n{raw_prompt} + avaialble ICD-10 codes\")\n",
" \n",
" # response = llm.invoke([HumanMessage(content=prompt)])\n",
" response = query_llm(prompt)\n",
@@ -779,12 +689,11 @@
},
{
"cell_type": "code",
- "execution_count": 52,
+ "execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
- "MAX_RETRIES = 3\n",
- "def create_clinical_graph() -> StateGraph:\n",
+ "def create_clinical_graph(MAX_RETRIES = 3) -> StateGraph:\n",
" workflow = StateGraph(dict)\n",
" \n",
" # Add nodes\n",
@@ -801,14 +710,15 @@
" workflow.add_edge(\"match_icd10_code\", \"validate_icd10_code_exists\")\n",
"\n",
" # Helper to increment retry count\n",
- " def check_and_route(state, next_success):\n",
+ " def check_and_route(state, next_node):\n",
" if state.get(\"error\"):\n",
" # Only increment retry_count when a retry will actually happen\n",
" if state.get(\"retry_count\", 0) >= MAX_RETRIES:\n",
" return \"stopper\"\n",
" return \"match_icd10_code\"\n",
" else:\n",
- " return next_success\n",
+ " return next_node\n",
+ " \n",
"\n",
" \n",
" # Conditional for code existence validation\n",
@@ -832,28 +742,6 @@
" \"stopper\": \"stopper\"\n",
" }\n",
" )\n",
- " \n",
- " # # Define conditional edges\n",
- " # workflow.add_conditional_edges(\n",
- " # \"validate_icd10_code_exists\",\n",
- " # lambda x: \"match_icd10_code\" if x.get(\"error\") else \"validate_icd10_clinical_match\",\n",
- " # {\n",
- " # \"match_icd10_code\": \"match_icd10_code\",\n",
- " # \"validate_icd10_clinical_match\": \"validate_icd10_clinical_match\"\n",
- " # }\n",
- " # )\n",
- " \n",
- " # # ensure it goes back to match_icd10_code when validation fails\n",
- " # workflow.add_conditional_edges(\n",
- " # \"validate_icd10_clinical_match\",\n",
- " # lambda x: \"match_icd10_code\" if x.get(\"error\") else END, # When error, go back to matching\n",
- " # {\n",
- " # \"match_icd10_code\": \"match_icd10_code\", # Map the return value to the actual node\n",
- " # END: END\n",
- " # }\n",
- " # )\n",
- " \n",
- " # Set entry point\n",
" workflow.set_entry_point(\"extract_patient_info\")\n",
" \n",
" return workflow.compile()"
@@ -861,12 +749,12 @@
},
{
"cell_type": "code",
- "execution_count": 49,
+ "execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"# Example usage\n",
- "def process_clinical_case(clinical_question: str, clinical_notes: str, icd10_codes_df: pd.DataFrame) -> dict:\n",
+ "def process_clinical_case(clinical_question: str, clinical_notes: str, icd10_codes_df: pd.DataFrame, MAX_RETRIES = 10) -> dict:\n",
" # Create the graph\n",
" \"\"\"Process a clinical case through the workflow.\"\"\"\n",
" logging.info(f\"\\n{'='*50}\")\n",
@@ -874,7 +762,7 @@
" logging.info(f\"Clinical Question: {clinical_question}\")\n",
" logging.info(f\"Clinical Notes: {clinical_notes}\")\n",
" logging.info(f\"{'='*50}\\n\")\n",
- " graph = create_clinical_graph()\n",
+ " graph = create_clinical_graph(MAX_RETRIES)\n",
" \n",
" # Initialize state\n",
" initial_state = {\n",
@@ -886,7 +774,7 @@
" \"icd10_code\": None,\n",
" \"rationale\": None,\n",
" \"error\": None,\n",
- " \"retry_count\": 1,\n",
+ " \"retry_count\": 0,\n",
" \"stopped\": False\n",
" }\n",
" # print(\"Initial state:\", initial_state) # Debug print\n",
@@ -894,7 +782,6 @@
" # Run the graph\n",
" config = {\"recursion_limit\": 100} # Increase from default 25 to 100\n",
" result = graph.invoke(initial_state, config=config)\n",
- " result = graph.invoke(initial_state)\n",
" clean_result = {\n",
" \"patient_age\": result.get(\"patient_age\"),\n",
" \"patient_gender\": result.get(\"patient_gender\"),\n",
@@ -916,850 +803,23 @@
},
{
"cell_type": "code",
- "execution_count": 55,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2025-06-04 02:17:06,844 - INFO - \n",
- "==================================================\n",
- "2025-06-04 02:17:06,846 - INFO - Starting new clinical case processing\n",
- "2025-06-04 02:17:06,846 - INFO - Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\n",
- "2025-06-04 02:17:06,848 - INFO - Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\n",
- "2025-06-04 02:17:06,849 - INFO - ==================================================\n",
- "\n",
- "2025-06-04 02:17:06,855 - INFO - LLM Prompt for extract_patient_info:\n",
- "\n",
- " Extract the patient's age and gender from the following clinical notes.\n",
- " Return ONLY a JSON object with 'age' and 'gender' fields.\n",
- " DO NOT include any other text, thinking process, or explanation.\n",
- " The response should start with { and end with }.\n",
- "\n",
- " Example of expected format:\n",
- " {\"age\": 55, \"gender\": \"male\"}\n",
- "\n",
- " Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\n",
- " \n",
- "2025-06-04 02:17:08,107 - INFO - LLM Response for extract_patient_info:\n",
- "{\"age\": 52, \"gender\": \"female\"}\n",
- "2025-06-04 02:17:08,110 - INFO - \n",
- "==================================================\n",
- "2025-06-04 02:17:08,111 - INFO - Stage: extract_patient_info\n",
- "2025-06-04 02:17:08,111 - INFO - Input: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": null,\n",
- " \"patient_gender\": null,\n",
- " \"icd10_code\": null,\n",
- " \"rationale\": null,\n",
- " \"error\": null,\n",
- " \"retry_count\": 0,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:08,112 - INFO - Output: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": null,\n",
- " \"rationale\": null,\n",
- " \"error\": null,\n",
- " \"retry_count\": 0,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:08,112 - INFO - ==================================================\n",
- "\n",
- "2025-06-04 02:17:08,114 - INFO - LLM Prompt for match_icd10_code:\n",
- "\n",
- " Match the clinical information to the most appropriate ICD-10 code from the provided list.\n",
- " Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.\n",
- " DO NOT include any other text, thinking process, or explanation.\n",
- " The response should start with { and end with }.\n",
- "\n",
- " Example of expected format:\n",
- " {\"icd10_code\": \"xxx\", \"rationale\": \"xxxxx\"}\n",
- "\n",
- "\n",
- " Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\n",
- " Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\n",
- " Patient Age: 52\n",
- " Patient Gender: female\n",
- "\n",
- " Available ICD-10 Codes:\n",
- " icd10\n",
- "0 M81.0\n",
- "1 Z79.4\n",
- "2 E11.65\n",
- "3 E03.9\n",
- "5 E78.5\n",
- "6 I10\n",
- "7 E55.9\n",
- "8 B20\n",
- "9 Z94.81\n",
- " \n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{\"age\": 52, \"gender\": \"female\"}\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2025-06-04 02:17:10,783 - INFO - LLM Response for match_icd10_code:\n",
- "{\"icd10_code\": \"B20\", \"rationale\": \"The patient's persistent fevers, night sweats, weight loss, and multiple organ involvement in the context of immunosuppression are most consistent with an opportunistic infection, and of the available codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the only code related to disseminated infectious processes in immunocompromised hosts. While the patient does not have a known HIV diagnosis, no other listed codes fit the clinical scenario of systemic infection. Therefore, B20 is the closest ICD-10 code from the list to represent a disseminated infectious process in an immunocompromised host.\"}\n",
- "2025-06-04 02:17:10,785 - INFO - \n",
- "==================================================\n",
- "2025-06-04 02:17:10,786 - INFO - Stage: match_icd10_code\n",
- "2025-06-04 02:17:10,786 - INFO - Input: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": null,\n",
- " \"rationale\": null,\n",
- " \"error\": null,\n",
- " \"retry_count\": 1,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:10,787 - INFO - Output: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": \"B20\",\n",
- " \"rationale\": \"The patient's persistent fevers, night sweats, weight loss, and multiple organ involvement in the context of immunosuppression are most consistent with an opportunistic infection, and of the available codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the only code related to disseminated infectious processes in immunocompromised hosts. While the patient does not have a known HIV diagnosis, no other listed codes fit the clinical scenario of systemic infection. Therefore, B20 is the closest ICD-10 code from the list to represent a disseminated infectious process in an immunocompromised host.\",\n",
- " \"error\": null,\n",
- " \"retry_count\": 1,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:10,787 - INFO - ==================================================\n",
- "\n",
- "2025-06-04 02:17:10,789 - INFO - \n",
- "==================================================\n",
- "2025-06-04 02:17:10,790 - INFO - Stage: validate_icd10_code_exists\n",
- "2025-06-04 02:17:10,790 - INFO - Input: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": \"B20\",\n",
- " \"rationale\": \"The patient's persistent fevers, night sweats, weight loss, and multiple organ involvement in the context of immunosuppression are most consistent with an opportunistic infection, and of the available codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the only code related to disseminated infectious processes in immunocompromised hosts. While the patient does not have a known HIV diagnosis, no other listed codes fit the clinical scenario of systemic infection. Therefore, B20 is the closest ICD-10 code from the list to represent a disseminated infectious process in an immunocompromised host.\",\n",
- " \"error\": null,\n",
- " \"retry_count\": 1,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:10,791 - INFO - Output: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": \"B20\",\n",
- " \"rationale\": \"The patient's persistent fevers, night sweats, weight loss, and multiple organ involvement in the context of immunosuppression are most consistent with an opportunistic infection, and of the available codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the only code related to disseminated infectious processes in immunocompromised hosts. While the patient does not have a known HIV diagnosis, no other listed codes fit the clinical scenario of systemic infection. Therefore, B20 is the closest ICD-10 code from the list to represent a disseminated infectious process in an immunocompromised host.\",\n",
- " \"error\": null,\n",
- " \"retry_count\": 1,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:10,791 - INFO - ==================================================\n",
- "\n",
- "2025-06-04 02:17:10,793 - INFO - LLM Prompt for validate_icd10_clinical_match:\n",
- "\n",
- " Validate if the matched ICD-10 code is appropriate for the clinical case.\n",
- " Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).\n",
- " DO NOT include any other text, thinking process, or explanation.\n",
- "\n",
- " Example of expected format:\n",
- " {\"is_valid\": true, \"reason\": \"The code I10 matches the patient's hypertension diagnosis\"}\n",
- " or\n",
- " {\"is_valid\": false, \"reason\": \"The code I10 is too general for this specific case\"}\n",
- "\n",
- " Current Match:\n",
- " ICD-10 Code: B20\n",
- " Rationale: The patient's persistent fevers, night sweats, weight loss, and multiple organ involvement in the context of immunosuppression are most consistent with an opportunistic infection, and of the available codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the only code related to disseminated infectious processes in immunocompromised hosts. While the patient does not have a known HIV diagnosis, no other listed codes fit the clinical scenario of systemic infection. Therefore, B20 is the closest ICD-10 code from the list to represent a disseminated infectious process in an immunocompromised host.\n",
- "\n",
- " Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\n",
- " Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\n",
- " Patient Age: 52\n",
- " Patient Gender: female\n",
- "\n",
- " Available ICD-10 Codes:\n",
- " icd10\n",
- "0 M81.0\n",
- "1 Z79.4\n",
- "2 E11.65\n",
- "3 E03.9\n",
- "5 E78.5\n",
- "6 I10\n",
- "7 E55.9\n",
- "8 B20\n",
- "9 Z94.81\n",
- " \n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{\"icd10_code\": \"B20\", \"rationale\": \"The patient's persistent fevers, night sweats, weight loss, and multiple organ involvement in the context of immunosuppression are most consistent with an opportunistic infection, and of the available codes, B20 (HIV disease resulting in infectious and parasitic diseases) is the only code related to disseminated infectious processes in immunocompromised hosts. While the patient does not have a known HIV diagnosis, no other listed codes fit the clinical scenario of systemic infection. Therefore, B20 is the closest ICD-10 code from the list to represent a disseminated infectious process in an immunocompromised host.\"}\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2025-06-04 02:17:12,529 - INFO - LLM Response for validate_icd10_clinical_match:\n",
- "{\"is_valid\": false, \"reason\": \"The code B20 specifically refers to HIV disease with resulting infections; the patient does not have HIV, so this code is not appropriate for her immunosuppression due to rheumatoid arthritis therapy.\"}\n",
- "2025-06-04 02:17:12,530 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 specifically refers to HIV disease with resulting infections; the patient does not have HIV, so this code is not appropriate for her immunosuppression due to rheumatoid arthritis therapy.'}\n",
- "2025-06-04 02:17:12,534 - INFO - LLM Prompt for match_icd10_code:\n",
- "\n",
- " Match the clinical information to the most appropriate ICD-10 code from the provided list.\n",
- " Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.\n",
- " DO NOT include any other text, thinking process, or explanation.\n",
- " The response should start with { and end with }.\n",
- "\n",
- " Example of expected format:\n",
- " {\"icd10_code\": \"xxx\", \"rationale\": \"xxxxx\"}\n",
- "\n",
- "\n",
- " Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\n",
- " Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\n",
- " Patient Age: 52\n",
- " Patient Gender: female\n",
- "\n",
- " Available ICD-10 Codes:\n",
- " icd10\n",
- "0 M81.0\n",
- "1 Z79.4\n",
- "2 E11.65\n",
- "3 E03.9\n",
- "5 E78.5\n",
- "6 I10\n",
- "7 E55.9\n",
- "8 B20\n",
- "9 Z94.81\n",
- " \n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{\"is_valid\": false, \"reason\": \"The code B20 specifically refers to HIV disease with resulting infections; the patient does not have HIV, so this code is not appropriate for her immunosuppression due to rheumatoid arthritis therapy.\"}\n",
- "Invalid match, will rerun matching...\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2025-06-04 02:17:14,683 - INFO - LLM Response for match_icd10_code:\n",
- "{\"icd10_code\": \"B20\", \"rationale\": \"The patient's immunosuppressed status and systemic symptoms with concern for disseminated infection match B20 (HIV disease resulting in infectious and parasitic diseases), as this is the closest code among those provided relating to disseminated opportunistic infections, although the patient does not have diagnosed HIV; the other codes do not pertain to infectious etiologies.\"}\n",
- "2025-06-04 02:17:14,686 - INFO - \n",
- "==================================================\n",
- "2025-06-04 02:17:14,686 - INFO - Stage: match_icd10_code\n",
- "2025-06-04 02:17:14,687 - INFO - Input: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": null,\n",
- " \"rationale\": null,\n",
- " \"error\": null,\n",
- " \"retry_count\": 2,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:14,687 - INFO - Output: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": \"B20\",\n",
- " \"rationale\": \"The patient's immunosuppressed status and systemic symptoms with concern for disseminated infection match B20 (HIV disease resulting in infectious and parasitic diseases), as this is the closest code among those provided relating to disseminated opportunistic infections, although the patient does not have diagnosed HIV; the other codes do not pertain to infectious etiologies.\",\n",
- " \"error\": null,\n",
- " \"retry_count\": 2,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:14,688 - INFO - ==================================================\n",
- "\n",
- "2025-06-04 02:17:14,689 - INFO - \n",
- "==================================================\n",
- "2025-06-04 02:17:14,690 - INFO - Stage: validate_icd10_code_exists\n",
- "2025-06-04 02:17:14,691 - INFO - Input: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": \"B20\",\n",
- " \"rationale\": \"The patient's immunosuppressed status and systemic symptoms with concern for disseminated infection match B20 (HIV disease resulting in infectious and parasitic diseases), as this is the closest code among those provided relating to disseminated opportunistic infections, although the patient does not have diagnosed HIV; the other codes do not pertain to infectious etiologies.\",\n",
- " \"error\": null,\n",
- " \"retry_count\": 2,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:14,691 - INFO - Output: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": \"B20\",\n",
- " \"rationale\": \"The patient's immunosuppressed status and systemic symptoms with concern for disseminated infection match B20 (HIV disease resulting in infectious and parasitic diseases), as this is the closest code among those provided relating to disseminated opportunistic infections, although the patient does not have diagnosed HIV; the other codes do not pertain to infectious etiologies.\",\n",
- " \"error\": null,\n",
- " \"retry_count\": 2,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:14,693 - INFO - ==================================================\n",
- "\n",
- "2025-06-04 02:17:14,695 - INFO - LLM Prompt for validate_icd10_clinical_match:\n",
- "\n",
- " Validate if the matched ICD-10 code is appropriate for the clinical case.\n",
- " Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).\n",
- " DO NOT include any other text, thinking process, or explanation.\n",
- "\n",
- " Example of expected format:\n",
- " {\"is_valid\": true, \"reason\": \"The code I10 matches the patient's hypertension diagnosis\"}\n",
- " or\n",
- " {\"is_valid\": false, \"reason\": \"The code I10 is too general for this specific case\"}\n",
- "\n",
- " Current Match:\n",
- " ICD-10 Code: B20\n",
- " Rationale: The patient's immunosuppressed status and systemic symptoms with concern for disseminated infection match B20 (HIV disease resulting in infectious and parasitic diseases), as this is the closest code among those provided relating to disseminated opportunistic infections, although the patient does not have diagnosed HIV; the other codes do not pertain to infectious etiologies.\n",
- "\n",
- " Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\n",
- " Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\n",
- " Patient Age: 52\n",
- " Patient Gender: female\n",
- "\n",
- " Available ICD-10 Codes:\n",
- " icd10\n",
- "0 M81.0\n",
- "1 Z79.4\n",
- "2 E11.65\n",
- "3 E03.9\n",
- "5 E78.5\n",
- "6 I10\n",
- "7 E55.9\n",
- "8 B20\n",
- "9 Z94.81\n",
- " \n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{\"icd10_code\": \"B20\", \"rationale\": \"The patient's immunosuppressed status and systemic symptoms with concern for disseminated infection match B20 (HIV disease resulting in infectious and parasitic diseases), as this is the closest code among those provided relating to disseminated opportunistic infections, although the patient does not have diagnosed HIV; the other codes do not pertain to infectious etiologies.\"}\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2025-06-04 02:17:16,633 - INFO - LLM Response for validate_icd10_clinical_match:\n",
- "{\"is_valid\": false, \"reason\": \"The code B20 is specific for HIV disease; the patient is immunosuppressed from medications but does not have HIV, so this code is inappropriate for her diagnosis.\"}\n",
- "2025-06-04 02:17:16,634 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease; the patient is immunosuppressed from medications but does not have HIV, so this code is inappropriate for her diagnosis.'}\n",
- "2025-06-04 02:17:16,637 - INFO - LLM Prompt for match_icd10_code:\n",
- "\n",
- " Match the clinical information to the most appropriate ICD-10 code from the provided list.\n",
- " Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.\n",
- " DO NOT include any other text, thinking process, or explanation.\n",
- " The response should start with { and end with }.\n",
- "\n",
- " Example of expected format:\n",
- " {\"icd10_code\": \"xxx\", \"rationale\": \"xxxxx\"}\n",
- "\n",
- "\n",
- " Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\n",
- " Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\n",
- " Patient Age: 52\n",
- " Patient Gender: female\n",
- "\n",
- " Available ICD-10 Codes:\n",
- " icd10\n",
- "0 M81.0\n",
- "1 Z79.4\n",
- "2 E11.65\n",
- "3 E03.9\n",
- "5 E78.5\n",
- "6 I10\n",
- "7 E55.9\n",
- "8 B20\n",
- "9 Z94.81\n",
- " \n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{\"is_valid\": false, \"reason\": \"The code B20 is specific for HIV disease; the patient is immunosuppressed from medications but does not have HIV, so this code is inappropriate for her diagnosis.\"}\n",
- "Invalid match, will rerun matching...\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2025-06-04 02:17:18,956 - INFO - LLM Response for match_icd10_code:\n",
- "{\"icd10_code\": \"B20\", \"rationale\": \"The patient's presentation is suggestive of a disseminated opportunistic infection, which is commonly encountered in immunocompromised individuals. Although she is not explicitly described as HIV-positive, among the given codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely matches the scenario of an immunosuppressed state with disseminated mycobacterial or fungal infection. None of the other codes relate to infections or immunosuppression, making B20 the most appropriate choice.\"}\n",
- "2025-06-04 02:17:18,957 - INFO - \n",
- "==================================================\n",
- "2025-06-04 02:17:18,958 - INFO - Stage: match_icd10_code\n",
- "2025-06-04 02:17:18,959 - INFO - Input: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": null,\n",
- " \"rationale\": null,\n",
- " \"error\": null,\n",
- " \"retry_count\": 3,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:18,959 - INFO - Output: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": \"B20\",\n",
- " \"rationale\": \"The patient's presentation is suggestive of a disseminated opportunistic infection, which is commonly encountered in immunocompromised individuals. Although she is not explicitly described as HIV-positive, among the given codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely matches the scenario of an immunosuppressed state with disseminated mycobacterial or fungal infection. None of the other codes relate to infections or immunosuppression, making B20 the most appropriate choice.\",\n",
- " \"error\": null,\n",
- " \"retry_count\": 3,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:18,960 - INFO - ==================================================\n",
- "\n",
- "2025-06-04 02:17:18,961 - INFO - \n",
- "==================================================\n",
- "2025-06-04 02:17:18,962 - INFO - Stage: validate_icd10_code_exists\n",
- "2025-06-04 02:17:18,962 - INFO - Input: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": \"B20\",\n",
- " \"rationale\": \"The patient's presentation is suggestive of a disseminated opportunistic infection, which is commonly encountered in immunocompromised individuals. Although she is not explicitly described as HIV-positive, among the given codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely matches the scenario of an immunosuppressed state with disseminated mycobacterial or fungal infection. None of the other codes relate to infections or immunosuppression, making B20 the most appropriate choice.\",\n",
- " \"error\": null,\n",
- " \"retry_count\": 3,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:18,963 - INFO - Output: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": \"B20\",\n",
- " \"rationale\": \"The patient's presentation is suggestive of a disseminated opportunistic infection, which is commonly encountered in immunocompromised individuals. Although she is not explicitly described as HIV-positive, among the given codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely matches the scenario of an immunosuppressed state with disseminated mycobacterial or fungal infection. None of the other codes relate to infections or immunosuppression, making B20 the most appropriate choice.\",\n",
- " \"error\": null,\n",
- " \"retry_count\": 3,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:18,963 - INFO - ==================================================\n",
- "\n",
- "2025-06-04 02:17:18,965 - INFO - LLM Prompt for validate_icd10_clinical_match:\n",
- "\n",
- " Validate if the matched ICD-10 code is appropriate for the clinical case.\n",
- " Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).\n",
- " DO NOT include any other text, thinking process, or explanation.\n",
- "\n",
- " Example of expected format:\n",
- " {\"is_valid\": true, \"reason\": \"The code I10 matches the patient's hypertension diagnosis\"}\n",
- " or\n",
- " {\"is_valid\": false, \"reason\": \"The code I10 is too general for this specific case\"}\n",
- "\n",
- " Current Match:\n",
- " ICD-10 Code: B20\n",
- " Rationale: The patient's presentation is suggestive of a disseminated opportunistic infection, which is commonly encountered in immunocompromised individuals. Although she is not explicitly described as HIV-positive, among the given codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely matches the scenario of an immunosuppressed state with disseminated mycobacterial or fungal infection. None of the other codes relate to infections or immunosuppression, making B20 the most appropriate choice.\n",
- "\n",
- " Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\n",
- " Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\n",
- " Patient Age: 52\n",
- " Patient Gender: female\n",
- "\n",
- " Available ICD-10 Codes:\n",
- " icd10\n",
- "0 M81.0\n",
- "1 Z79.4\n",
- "2 E11.65\n",
- "3 E03.9\n",
- "5 E78.5\n",
- "6 I10\n",
- "7 E55.9\n",
- "8 B20\n",
- "9 Z94.81\n",
- " \n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{\"icd10_code\": \"B20\", \"rationale\": \"The patient's presentation is suggestive of a disseminated opportunistic infection, which is commonly encountered in immunocompromised individuals. Although she is not explicitly described as HIV-positive, among the given codes, B20 (HIV disease resulting in infectious and parasitic diseases) most closely matches the scenario of an immunosuppressed state with disseminated mycobacterial or fungal infection. None of the other codes relate to infections or immunosuppression, making B20 the most appropriate choice.\"}\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2025-06-04 02:17:20,511 - INFO - LLM Response for validate_icd10_clinical_match:\n",
- "{\"is_valid\": false, \"reason\": \"The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, but the patient is immunocompromised due to rheumatoid arthritis treatment, not HIV, making B20 inappropriate for this case.\"}\n",
- "2025-06-04 02:17:20,511 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, but the patient is immunocompromised due to rheumatoid arthritis treatment, not HIV, making B20 inappropriate for this case.'}\n",
- "2025-06-04 02:17:20,513 - INFO - \n",
- "==================================================\n",
- "2025-06-04 02:17:20,514 - INFO - Stage: stopper_node\n",
- "2025-06-04 02:17:20,514 - INFO - Input: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": null,\n",
- " \"rationale\": null,\n",
- " \"error\": \"Stopped after 3 retries. Manual review required.\",\n",
- " \"retry_count\": 3,\n",
- " \"stopped\": true\n",
- "}\n",
- "2025-06-04 02:17:20,515 - INFO - Output: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": null,\n",
- " \"rationale\": null,\n",
- " \"error\": \"Stopped after 3 retries. Manual review required.\",\n",
- " \"retry_count\": 3,\n",
- " \"stopped\": true\n",
- "}\n",
- "2025-06-04 02:17:20,516 - INFO - ==================================================\n",
- "\n",
- "2025-06-04 02:17:20,518 - INFO - LLM Prompt for extract_patient_info:\n",
- "\n",
- " Extract the patient's age and gender from the following clinical notes.\n",
- " Return ONLY a JSON object with 'age' and 'gender' fields.\n",
- " DO NOT include any other text, thinking process, or explanation.\n",
- " The response should start with { and end with }.\n",
- "\n",
- " Example of expected format:\n",
- " {\"age\": 55, \"gender\": \"male\"}\n",
- "\n",
- " Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\n",
- " \n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{\"is_valid\": false, \"reason\": \"The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, but the patient is immunocompromised due to rheumatoid arthritis treatment, not HIV, making B20 inappropriate for this case.\"}\n",
- "Invalid match, will rerun matching...\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2025-06-04 02:17:21,641 - INFO - LLM Response for extract_patient_info:\n",
- "{\"age\": 52, \"gender\": \"female\"}\n",
- "2025-06-04 02:17:21,643 - INFO - \n",
- "==================================================\n",
- "2025-06-04 02:17:21,643 - INFO - Stage: extract_patient_info\n",
- "2025-06-04 02:17:21,644 - INFO - Input: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": null,\n",
- " \"rationale\": null,\n",
- " \"error\": \"Invalid match: The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, but the patient is immunocompromised due to rheumatoid arthritis treatment, not HIV, making B20 inappropriate for this case.\",\n",
- " \"retry_count\": 3,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:21,644 - INFO - Output: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": null,\n",
- " \"rationale\": null,\n",
- " \"error\": \"Invalid match: The code B20 is specific for HIV disease resulting in infectious and parasitic diseases, but the patient is immunocompromised due to rheumatoid arthritis treatment, not HIV, making B20 inappropriate for this case.\",\n",
- " \"retry_count\": 3,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:21,645 - INFO - ==================================================\n",
- "\n",
- "2025-06-04 02:17:21,646 - INFO - LLM Prompt for match_icd10_code:\n",
- "\n",
- " Match the clinical information to the most appropriate ICD-10 code from the provided list.\n",
- " Return ONLY a JSON object with exactly two fields: 'icd10_code' and 'rationale'.\n",
- " DO NOT include any other text, thinking process, or explanation.\n",
- " The response should start with { and end with }.\n",
- "\n",
- " Example of expected format:\n",
- " {\"icd10_code\": \"xxx\", \"rationale\": \"xxxxx\"}\n",
- "\n",
- "\n",
- " Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\n",
- " Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\n",
- " Patient Age: 52\n",
- " Patient Gender: female\n",
- "\n",
- " Available ICD-10 Codes:\n",
- " icd10\n",
- "0 M81.0\n",
- "1 Z79.4\n",
- "2 E11.65\n",
- "3 E03.9\n",
- "5 E78.5\n",
- "6 I10\n",
- "7 E55.9\n",
- "8 B20\n",
- "9 Z94.81\n",
- " \n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{\"age\": 52, \"gender\": \"female\"}\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2025-06-04 02:17:24,262 - INFO - LLM Response for match_icd10_code:\n",
- "{\"icd10_code\": \"B20\", \"rationale\": \"The patient's presentation with persistent fever, night sweats, weight loss, multiple small pulmonary nodules, and hepatosplenic lesions on immunosuppression raises concern for an opportunistic infection. B20 (HIV disease) is the only infectious disease code provided and is used for immunosuppression-related infections not otherwise specified by other codes in this list. While she is not documented as HIV-positive, none of the other available codes represent mycobacterial or fungal infections; hence, B20 most closely matches the clinical scenario of immunosuppression and opportunistic infection risk.\"}\n",
- "2025-06-04 02:17:24,265 - INFO - \n",
- "==================================================\n",
- "2025-06-04 02:17:24,265 - INFO - Stage: match_icd10_code\n",
- "2025-06-04 02:17:24,266 - INFO - Input: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": null,\n",
- " \"rationale\": null,\n",
- " \"error\": null,\n",
- " \"retry_count\": 4,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:24,268 - INFO - Output: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": \"B20\",\n",
- " \"rationale\": \"The patient's presentation with persistent fever, night sweats, weight loss, multiple small pulmonary nodules, and hepatosplenic lesions on immunosuppression raises concern for an opportunistic infection. B20 (HIV disease) is the only infectious disease code provided and is used for immunosuppression-related infections not otherwise specified by other codes in this list. While she is not documented as HIV-positive, none of the other available codes represent mycobacterial or fungal infections; hence, B20 most closely matches the clinical scenario of immunosuppression and opportunistic infection risk.\",\n",
- " \"error\": null,\n",
- " \"retry_count\": 4,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:24,269 - INFO - ==================================================\n",
- "\n",
- "2025-06-04 02:17:24,270 - INFO - \n",
- "==================================================\n",
- "2025-06-04 02:17:24,271 - INFO - Stage: validate_icd10_code_exists\n",
- "2025-06-04 02:17:24,271 - INFO - Input: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": \"B20\",\n",
- " \"rationale\": \"The patient's presentation with persistent fever, night sweats, weight loss, multiple small pulmonary nodules, and hepatosplenic lesions on immunosuppression raises concern for an opportunistic infection. B20 (HIV disease) is the only infectious disease code provided and is used for immunosuppression-related infections not otherwise specified by other codes in this list. While she is not documented as HIV-positive, none of the other available codes represent mycobacterial or fungal infections; hence, B20 most closely matches the clinical scenario of immunosuppression and opportunistic infection risk.\",\n",
- " \"error\": null,\n",
- " \"retry_count\": 4,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:24,272 - INFO - Output: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": \"B20\",\n",
- " \"rationale\": \"The patient's presentation with persistent fever, night sweats, weight loss, multiple small pulmonary nodules, and hepatosplenic lesions on immunosuppression raises concern for an opportunistic infection. B20 (HIV disease) is the only infectious disease code provided and is used for immunosuppression-related infections not otherwise specified by other codes in this list. While she is not documented as HIV-positive, none of the other available codes represent mycobacterial or fungal infections; hence, B20 most closely matches the clinical scenario of immunosuppression and opportunistic infection risk.\",\n",
- " \"error\": null,\n",
- " \"retry_count\": 4,\n",
- " \"stopped\": false\n",
- "}\n",
- "2025-06-04 02:17:24,272 - INFO - ==================================================\n",
- "\n",
- "2025-06-04 02:17:24,274 - INFO - LLM Prompt for validate_icd10_clinical_match:\n",
- "\n",
- " Validate if the matched ICD-10 code is appropriate for the clinical case.\n",
- " Return ONLY a JSON object with exactly two fields: 'is_valid' (boolean) and 'reason' (string).\n",
- " DO NOT include any other text, thinking process, or explanation.\n",
- "\n",
- " Example of expected format:\n",
- " {\"is_valid\": true, \"reason\": \"The code I10 matches the patient's hypertension diagnosis\"}\n",
- " or\n",
- " {\"is_valid\": false, \"reason\": \"The code I10 is too general for this specific case\"}\n",
- "\n",
- " Current Match:\n",
- " ICD-10 Code: B20\n",
- " Rationale: The patient's presentation with persistent fever, night sweats, weight loss, multiple small pulmonary nodules, and hepatosplenic lesions on immunosuppression raises concern for an opportunistic infection. B20 (HIV disease) is the only infectious disease code provided and is used for immunosuppression-related infections not otherwise specified by other codes in this list. While she is not documented as HIV-positive, none of the other available codes represent mycobacterial or fungal infections; hence, B20 most closely matches the clinical scenario of immunosuppression and opportunistic infection risk.\n",
- "\n",
- " Clinical Question: In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\n",
- " Clinical Notes: 52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with 6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\n",
- " Patient Age: 52\n",
- " Patient Gender: female\n",
- "\n",
- " Available ICD-10 Codes:\n",
- " icd10\n",
- "0 M81.0\n",
- "1 Z79.4\n",
- "2 E11.65\n",
- "3 E03.9\n",
- "5 E78.5\n",
- "6 I10\n",
- "7 E55.9\n",
- "8 B20\n",
- "9 Z94.81\n",
- " \n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{\"icd10_code\": \"B20\", \"rationale\": \"The patient's presentation with persistent fever, night sweats, weight loss, multiple small pulmonary nodules, and hepatosplenic lesions on immunosuppression raises concern for an opportunistic infection. B20 (HIV disease) is the only infectious disease code provided and is used for immunosuppression-related infections not otherwise specified by other codes in this list. While she is not documented as HIV-positive, none of the other available codes represent mycobacterial or fungal infections; hence, B20 most closely matches the clinical scenario of immunosuppression and opportunistic infection risk.\"}\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2025-06-04 02:17:25,783 - INFO - LLM Response for validate_icd10_clinical_match:\n",
- "{\"is_valid\": false, \"reason\": \"The code B20 refers specifically to HIV disease, but the patient has immunosuppression due to rheumatoid arthritis treatment and not HIV, so B20 is not appropriate for this case.\"}\n",
- "2025-06-04 02:17:25,784 - INFO - Validation result: {'is_valid': False, 'reason': 'The code B20 refers specifically to HIV disease, but the patient has immunosuppression due to rheumatoid arthritis treatment and not HIV, so B20 is not appropriate for this case.'}\n",
- "2025-06-04 02:17:25,787 - INFO - \n",
- "==================================================\n",
- "2025-06-04 02:17:25,787 - INFO - Stage: stopper_node\n",
- "2025-06-04 02:17:25,787 - INFO - Input: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": null,\n",
- " \"rationale\": null,\n",
- " \"error\": \"Stopped after 4 retries. Manual review required.\",\n",
- " \"retry_count\": 4,\n",
- " \"stopped\": true\n",
- "}\n",
- "2025-06-04 02:17:25,788 - INFO - Output: {\n",
- " \"clinical_question\": \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\",\n",
- " \"clinical_notes\": \"52\\u2011year\\u2011old female with rheumatoid arthritis on methotrexate and low\\u2011dose prednisone presents with 6\\u2011week history of daily fevers up to 102\\u00b0F, drenching night sweats, and a 12\\u2011lb unintentional weight loss. Initial blood cultures and chest X\\u2011ray were unrevealing. She denies cough, dyspnea, or focal pain. Lab results show mild anemia (Hgb 11.2), elevated ESR (85\\u202fmm/hr), and CRP (12\\u202fmg/dL). CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. Concern for disseminated non\\u2011tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\",\n",
- " \"icd10_codes\": \" icd10\\n0 M81.0\\n1 Z79.4\\n2 E11.65\\n3 E03.9\\n5 E78.5\\n6 I10\\n7 E55.9\\n8 B20\\n9 Z94.81\",\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": null,\n",
- " \"rationale\": null,\n",
- " \"error\": \"Stopped after 4 retries. Manual review required.\",\n",
- " \"retry_count\": 4,\n",
- " \"stopped\": true\n",
- "}\n",
- "2025-06-04 02:17:25,789 - INFO - ==================================================\n",
- "\n",
- "2025-06-04 02:17:25,790 - INFO - \n",
- "==================================================\n",
- "2025-06-04 02:17:25,792 - INFO - Final Result:\n",
- "2025-06-04 02:17:25,794 - INFO - {\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": null,\n",
- " \"rationale\": null,\n",
- " \"error\": \"Stopped after 4 retries. Manual review required.\",\n",
- " \"retry_count\": 4,\n",
- " \"stopped\": true\n",
- "}\n",
- "2025-06-04 02:17:25,794 - INFO - ==================================================\n",
- "\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{\"is_valid\": false, \"reason\": \"The code B20 refers specifically to HIV disease, but the patient has immunosuppression due to rheumatoid arthritis treatment and not HIV, so B20 is not appropriate for this case.\"}\n",
- "Invalid match, will rerun matching...\n",
- "{\n",
- " \"patient_age\": 52,\n",
- " \"patient_gender\": \"female\",\n",
- " \"icd10_code\": null,\n",
- " \"rationale\": null,\n",
- " \"error\": \"Stopped after 4 retries. Manual review required.\",\n",
- " \"retry_count\": 4,\n",
- " \"stopped\": true\n",
- "}\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# clinical_question =\"Could this patient's chronic upper abdominal discomfort and iron deficiency anemia indicate a peptic ulcer or upper GI malignancy, and is EGD indicated?\"\n",
"\n",
"# clinical_notes = \"47-year-old male with no significant past medical history presents with 3-month history of epigastric discomfort, early satiety, and unintentional 10 lb weight loss. Denies NSAID use, alcohol, or overt GI bleeding. Labs show iron deficiency anemia (Hgb 10.5, MCV 74, ferritin 12). Physical exam unremarkable. Concern for peptic ulcer disease or less likely gastric cancer. Seeking input on need for upper endoscopy.\"\n",
"# Process the case\n",
- "clinical_question = \"In a patient with persistent fever, night sweats, and weight loss despite broad-spectrum antibiotics, could this represent disseminated mycobacterial infection or an atypical fungal process, and what diagnostic workup is indicated?\"\n",
- "\n",
- "clinical_notes = (\n",
- " \"52‑year‑old female with rheumatoid arthritis on methotrexate and low‑dose prednisone presents with \"\n",
- " \"6‑week history of daily fevers up to 102°F, drenching night sweats, and a 12‑lb unintentional weight loss. \"\n",
- " \"Initial blood cultures and chest X‑ray were unrevealing. She denies cough, dyspnea, or focal pain. \"\n",
- " \"Lab results show mild anemia (Hgb 11.2), elevated ESR (85 mm/hr), and CRP (12 mg/dL). \"\n",
- " \"CT chest/abdomen reveals multiple small pulmonary nodules and hepatosplenic lesions. \"\n",
- " \"Concern for disseminated non‑tuberculous mycobacteria vs. histoplasmosis. Input on biopsy site selection and empiric therapy is requested.\"\n",
- ")\n",
- "result = process_clinical_case(clinical_question, clinical_notes, top_200_icd10_codes_cleaned)\n",
+ "clinical_question = eConsult_question[\"Question\"].iloc[2]\n",
+ "clinical_notes = eConsult_question[\"Summary\"].iloc[2]\n",
+ "result = process_clinical_case(clinical_question, clinical_notes, top_icd10_codes_cleaned[[\"icd10\"]])\n",
"print(json.dumps(result, indent=2))"
]
},
{
"cell_type": "code",
- "execution_count": 45,
- "metadata": {},
- "outputs": [],
- "source": [
- "# # Example usage\n",
- "# clinical_question = \"Could this patient's recurrent, exertional chest pain with recent ECG abnormalities suggest underlying ischemic heart disease, and would further cardiac workup (e.g., stress testing or angiography) be appropriate at this time?\"\n",
- "\n",
- "# clinical_notes = \"\"\"55-year-old male with a history of hypertension and hyperlipidemia presents with 2-month history of intermittent chest discomfort described as a pressure-like sensation localized to the left chest, occasionally radiating to the jaw, occurring primarily during brisk walking or stair climbing. Denies associated nausea, diaphoresis, or syncope. Symptoms improve with rest. No prior cardiac history. Vital signs stable. Physical exam unremarkable. Recent resting ECG showed nonspecific ST changes. Lipid panel elevated; LDL 145 mg/dL. Concerned about possible stable angina. Requesting input on next steps for diagnostic evaluation and whether referral to cardiology is appropriate.\"\"\"\n",
- "\n",
- "# # print(\"Clinical notes before processing:\", clinical_notes) # Debug print\n",
- "\n",
- "# # Process the case\n",
- "# result = process_clinical_case(clinical_question, clinical_notes, top_200_icd10_codes_cleaned)\n",
- "# print(json.dumps(result, indent=2))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 46,
+ "execution_count": 20,
"metadata": {},
"outputs": [
{
@@ -1768,7 +828,7 @@
"text": [
"/Users/wenyuanchen/anaconda3/envs/sage_recommender/lib/python3.13/site-packages/google/auth/_default.py:76: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK without a quota project. You might receive a \"quota exceeded\" or \"API not enabled\" error. See the following page for troubleshooting: https://cloud.google.com/docs/authentication/adc-troubleshooting/user-creds. \n",
" warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)\n",
- "2025-05-12 01:47:52,472 - INFO - Successfully initialized BigQuery client for project som-nero-phi-jonc101\n"
+ "2025-06-22 16:59:18,197 - INFO - Successfully initialized BigQuery client for project som-nero-phi-jonc101\n"
]
}
],
@@ -1779,294 +839,87 @@
},
{
"cell_type": "code",
- "execution_count": 47,
+ "execution_count": 39,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "{'patient_age': 52,\n",
- " 'patient_gender': 'female',\n",
- " 'icd10_code': 'Z79.4',\n",
- " 'rationale': 'The patient is on long-term (current) use of methotrexate and low-dose prednisone, which is represented by the ICD-10 code Z79.4.',\n",
- " 'error': None}"
- ]
- },
- "execution_count": 47,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
- "result"
+ "no_gender_filter_result = result.copy()\n",
+ "no_gender_filter_result[\"patient_gender\"] = None\n",
+ "\n",
+ "no_age_filter_result = result.copy()\n",
+ "no_age_filter_result[\"patient_age\"] = None\n",
+ "\n",
+ "no_filter_at_all_result = result.copy()\n",
+ "no_filter_at_all_result[\"patient_age\"] = None\n",
+ "no_filter_at_all_result[\"patient_gender\"] = None\n",
+ "\n"
]
},
{
"cell_type": "code",
- "execution_count": 48,
+ "execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
- "2025-05-12 01:47:52,510 - INFO - Building query for params={'patient_age': 52, 'patient_gender': 'female', 'icd10_code': 'Z79.4', 'rationale': 'The patient is on long-term (current) use of methotrexate and low-dose prednisone, which is represented by the ICD-10 code Z79.4.', 'error': None}, type=proc, year=2024\n",
- "2025-05-12 01:47:52,531 - INFO - Executing BigQuery query...\n",
- "2025-05-12 01:47:55,968 - INFO - Query completed successfully. Returned 75 rows.\n"
+ "2025-06-22 17:20:50,025 - INFO - Building query for params={'patient_age': 31, 'patient_gender': 'female', 'icd10_code': 'A53.9', 'rationale': \"The patient has serologic evidence of syphilis (RPR and treponemal test positive) without symptoms, and was started on penicillin G treatment during pregnancy. A53.9 is the ICD-10 code for 'Syphilis, unspecified', which is used for confirmed syphilis cases without specification of stage or symptomatology.\", 'error': None, 'retry_count': 1, 'stopped': False}, type=lab, year=2024\n",
+ "2025-06-22 17:20:50,027 - INFO - Executing BigQuery query...\n",
+ "2025-06-22 17:20:53,333 - INFO - Query completed successfully. Returned 1 rows.\n",
+ "2025-06-22 17:20:53,334 - INFO - Building query for params={'patient_age': 31, 'patient_gender': 'female', 'icd10_code': 'A53.9', 'rationale': \"The patient has serologic evidence of syphilis (RPR and treponemal test positive) without symptoms, and was started on penicillin G treatment during pregnancy. A53.9 is the ICD-10 code for 'Syphilis, unspecified', which is used for confirmed syphilis cases without specification of stage or symptomatology.\", 'error': None, 'retry_count': 1, 'stopped': False}, type=med, year=2024\n",
+ "2025-06-22 17:20:53,334 - INFO - Executing BigQuery query...\n",
+ "2025-06-22 17:20:56,366 - INFO - Query completed successfully. Returned 0 rows.\n",
+ "2025-06-22 17:20:56,368 - INFO - Building query for params={'patient_age': 31, 'patient_gender': 'female', 'icd10_code': 'A53.9', 'rationale': \"The patient has serologic evidence of syphilis (RPR and treponemal test positive) without symptoms, and was started on penicillin G treatment during pregnancy. A53.9 is the ICD-10 code for 'Syphilis, unspecified', which is used for confirmed syphilis cases without specification of stage or symptomatology.\", 'error': None, 'retry_count': 1, 'stopped': False}, type=procedure, year=2024\n",
+ "2025-06-22 17:20:56,369 - INFO - Executing BigQuery query...\n",
+ "2025-06-22 17:21:00,896 - INFO - Query completed successfully. Returned 2 rows.\n",
+ "/Users/wenyuanchen/Desktop/Stanford/HealthRex/scripts/eConsult/Recommender/phase_1/Notebook/../api/bigquery_api.py:250: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
+ " return pd.concat(all_results, ignore_index=True)\n"
]
- },
- {
- "data": {
- "text/html": [
- "