Spaces:
Sleeping
Sleeping
| # π§ Fix: IPC Variables Now Passed to InfectoGuard Agents | |
| ## Problem | |
| After the initial clinical variables fix, **IPC agents** (InfectoGuard) were still asking for information already provided in Patient Card B (CLABSI case). | |
| ### User's Test Result: | |
| ``` | |
| User: "Please evaluate this case for NHSN CLABSI criteria..." | |
| InfectoGuard Response: | |
| "I can do that β I'll need a brief case summary to apply NHSN CLABSI criteria..." | |
| [Long list of required information that was already in the IPC variables] | |
| ``` | |
| ## Root Cause | |
| The initial fix added: | |
| - β Clinical assessment variables β Clinical agents | |
| - β Orchestrator variables β Orchestrators | |
| - β **IPC variables β IPC agents** (MISSING!) | |
| The IPC logic at line 1807 was for **jurisdiction-based reporting requirements** (Texas, CDC, etc.), not for passing the actual **case data** from the UI fields. | |
| ## Solution | |
| Added IPC variable extraction block in `chatpanel_handle_with_dynamic_vars`: | |
| ```python | |
| # IPC tools (IPC_reporting, NHSN_criteria_evaluator, recommend_isolation_precautions) | |
| elif "IPC_reporting" in skills or "NHSN_criteria_evaluator" in skills or "recommend_isolation_precautions" in skills: | |
| var_names = [ | |
| "facility_name", "location_unit", "infection_type", "onset_date", "device_days", | |
| "pathogen", "resistance_pattern", "isolation_status", "compliance_issues" | |
| ] | |
| user_vars = { | |
| "facility_name": ipc_facility_name, | |
| "location_unit": ipc_location, | |
| "infection_type": ipc_infection_type, | |
| "onset_date": ipc_onset_date, | |
| "device_days": ipc_device_days, | |
| "pathogen": ipc_pathogen, | |
| "resistance_pattern": ipc_resistance_pattern, | |
| "isolation_status": ipc_isolation_status, | |
| "compliance_issues": ipc_compliance_issues | |
| } | |
| extracted = extract_clinical_variables_from_history(history, var_names) | |
| for k in var_names: | |
| if not user_vars[k]: | |
| user_vars[k] = extracted.get(k) or "" | |
| # Prepend IPC data if at least one field is non-empty | |
| if any(user_vars[k] for k in var_names): | |
| user_text = f"[IPC_CONTEXT] {json.dumps(user_vars)}\n" + user_text | |
| ``` | |
| ## What This Fixes | |
| ### IPC Variables Now Passed (9 fields): | |
| 1. **Facility Name** β Methodist Hospital, Dallas, Texas | |
| 2. **Location/Unit** β ICU, Medical Ward 3B | |
| 3. **Infection Type** β CLABSI | |
| 4. **Onset Date** β 2025-03-15 | |
| 5. **Device Days** β 7 days (central line in place) | |
| 6. **Pathogen** β MRSA | |
| 7. **Resistance Pattern** β Methicillin-resistant | |
| 8. **Isolation Status** β Contact precautions initiated | |
| 9. **Compliance Issues** β Line inserted emergently without full barrier precautions | |
| ### Agent Skills That Trigger IPC Context: | |
| - `IPC_reporting` - For generating IPC reports | |
| - `NHSN_criteria_evaluator` - For NHSN surveillance definitions | |
| - `recommend_isolation_precautions` - For isolation recommendations | |
| ### Format: | |
| ```json | |
| [IPC_CONTEXT] { | |
| "facility_name": "Methodist Hospital, Dallas, Texas", | |
| "location_unit": "ICU, Medical Ward 3B", | |
| "infection_type": "CLABSI", | |
| "onset_date": "2025-03-15", | |
| "device_days": "7 days (central line in place)", | |
| "pathogen": "MRSA", | |
| "resistance_pattern": "Methicillin-resistant", | |
| "isolation_status": "Contact precautions initiated", | |
| "compliance_issues": "Line inserted emergently without full barrier precautions" | |
| } | |
| ``` | |
| ## Expected Results After Fix | |
| ### Before Fix: | |
| ``` | |
| User: "Please evaluate this case for NHSN CLABSI criteria..." | |
| Agent: β "I'll need a brief case summary to apply NHSN CLABSI criteria. | |
| What I need from you to evaluate the case (minimum): | |
| - Presence/type of central venous catheter... | |
| - Date/time of symptom onset... | |
| - Blood culture data... | |
| [Long list of already-provided information]" | |
| ``` | |
| ### After Fix: | |
| ``` | |
| User: "Please evaluate this case for NHSN CLABSI criteria..." | |
| Agent: β "Based on the case data from Methodist Hospital ICU: | |
| NHSN CLABSI Criteria Evaluation: | |
| β MBI-LCBI Criterion 1 met: | |
| - Recognized pathogen (MRSA) from blood culture | |
| - Central line in place on 2025-03-15 | |
| - 7 device days documented | |
| Isolation Precautions: | |
| β Contact precautions appropriate for MRSA | |
| Key IPC Priorities: | |
| - Line removal (source control) | |
| - NHSN surveillance reporting required | |
| - Bundle compliance audit (full barrier precautions not used) | |
| ..." | |
| ``` | |
| ## Files Changed | |
| | File | Changes | Lines | | |
| |------|---------|-------| | |
| | `app.py` | Added IPC variable extraction block | +24 lines | | |
| ## Testing Instructions | |
| ### Test Patient Card B + InfectoGuard: | |
| 1. **Navigate to**: https://huggingface.co/spaces/John-jero/IDWeekAgents | |
| 2. **Wait**: ~2-3 minutes for space rebuild | |
| 3. **Select**: InfectoGuard agent | |
| 4. **Click**: Patient Card B (CLABSI case) | |
| 5. **Verify**: IPC variables section populates with: | |
| - Methodist Hospital, Dallas, Texas | |
| - ICU location | |
| - CLABSI infection type | |
| - MRSA pathogen | |
| - 7 device days | |
| - Contact precautions status | |
| 6. **Ask**: "Please evaluate this case for NHSN CLABSI criteria and recommend appropriate isolation precautions." | |
| 7. **Expected**: β Agent uses provided data, evaluates NHSN criteria, makes specific recommendations | |
| ## Commit Info | |
| **Commit**: `43f6e3b` | |
| **Message**: "Fix: Add IPC variable extraction for InfectoGuard agents" | |
| **Deployed**: October 8, 2025 | |
| --- | |
| ## Complete Variable Coverage Now | |
| | Agent Type | Variables | Status | | |
| |------------|-----------|--------| | |
| | **Stewardship** | 8 stewardship fields | β Working | | |
| | **Empiric Therapy** | 10 empiric fields | β Working | | |
| | **Clinical** | 10 clinical fields | β Working | | |
| | **IPC** | 9 IPC fields | β **FIXED** | | |
| | **Orchestrator** | 27 all fields | β Working | | |
| --- | |
| **Status**: β **ALL AGENT TYPES NOW FUNCTIONAL** | |
| All patient cards should now work correctly with their corresponding agent types! | |