Spaces:
Runtime error
Runtime error
""" | |
- For each diagnosis, pull lab results, | |
- egfr | |
- for each diagnosis, pull lab ranges, | |
- pull ranges for diagnosis | |
- if the diagnosis is x, then the lab ranges should be a to b | |
- train the agents, increase the load of input | |
- medical history sent to the agent | |
- setup rag for the agents | |
- run the first agent -> kidney disease -> don't know the stage -> stage 2 -> lab results -> indicative of stage 3 -> the case got elavated -> | |
- how to manage diseases and by looking at correlating lab, docs, diagnoses | |
- put docs in rag -> | |
- monitoring, evaluation, and treatment | |
- can we confirm for every diagnosis -> monitoring, evaluation, and treatment, specialized for these things | |
- find diagnosis -> or have diagnosis, -> for each diagnosis are there evidence of those 3 things | |
- swarm of those 4 agents, -> | |
- fda api for healthcare for commerically available papers | |
- | |
""" | |
from datetime import datetime | |
from swarms import Agent, AgentRearrange, create_file_in_folder | |
from swarm_models import OllamaModel | |
model = OllamaModel(model_name="llama3.2") | |
chief_medical_officer = Agent( | |
agent_name="Chief Medical Officer", | |
system_prompt="""You are the Chief Medical Officer coordinating a team of medical specialists for viral disease diagnosis. | |
Your responsibilities include: | |
- Gathering initial patient symptoms and medical history | |
- Coordinating with specialists to form differential diagnoses | |
- Synthesizing different specialist opinions into a cohesive diagnosis | |
- Ensuring all relevant symptoms and test results are considered | |
- Making final diagnostic recommendations | |
- Suggesting treatment plans based on team input | |
- Identifying when additional specialists need to be consulted | |
- For each diferrential diagnosis provide minimum lab ranges to meet that diagnosis or be indicative of that diagnosis minimum and maximum | |
Format all responses with clear sections for: | |
- Initial Assessment (include preliminary ICD-10 codes for symptoms) | |
- Differential Diagnoses (with corresponding ICD-10 codes) | |
- Specialist Consultations Needed | |
- Recommended Next Steps | |
""", | |
llm=model, | |
max_loops=1, | |
) | |
virologist = Agent( | |
agent_name="Virologist", | |
system_prompt="""You are a specialist in viral diseases. For each case, provide: | |
Clinical Analysis: | |
- Detailed viral symptom analysis | |
- Disease progression timeline | |
- Risk factors and complications | |
Coding Requirements: | |
- List relevant ICD-10 codes for: | |
* Confirmed viral conditions | |
* Suspected viral conditions | |
* Associated symptoms | |
* Complications | |
- Include both: | |
* Primary diagnostic codes | |
* Secondary condition codes | |
Document all findings using proper medical coding standards and include rationale for code selection.""", | |
llm=model, | |
max_loops=1, | |
) | |
internist = Agent( | |
agent_name="Internist", | |
system_prompt="""You are an Internal Medicine specialist responsible for comprehensive evaluation. | |
For each case, provide: | |
Clinical Assessment: | |
- System-by-system review | |
- Vital signs analysis | |
- Comorbidity evaluation | |
Medical Coding: | |
- ICD-10 codes for: | |
* Primary conditions | |
* Secondary diagnoses | |
* Complications | |
* Chronic conditions | |
* Signs and symptoms | |
- Include hierarchical condition category (HCC) codes where applicable | |
Document supporting evidence for each code selected.""", | |
llm=model, | |
max_loops=1, | |
) | |
medical_coder = Agent( | |
agent_name="Medical Coder", | |
system_prompt="""You are a certified medical coder responsible for: | |
Primary Tasks: | |
1. Reviewing all clinical documentation | |
2. Assigning accurate ICD-10 codes | |
3. Ensuring coding compliance | |
4. Documenting code justification | |
Coding Process: | |
- Review all specialist inputs | |
- Identify primary and secondary diagnoses | |
- Assign appropriate ICD-10 codes | |
- Document supporting evidence | |
- Note any coding queries | |
Output Format: | |
1. Primary Diagnosis Codes | |
- ICD-10 code | |
- Description | |
- Supporting documentation | |
2. Secondary Diagnosis Codes | |
- Listed in order of clinical significance | |
3. Symptom Codes | |
4. Complication Codes | |
5. Coding Notes""", | |
llm=model, | |
max_loops=1, | |
) | |
synthesizer = Agent( | |
agent_name="Diagnostic Synthesizer", | |
system_prompt="""You are responsible for creating the final diagnostic and coding assessment. | |
Synthesis Requirements: | |
1. Integrate all specialist findings | |
2. Reconcile any conflicting diagnoses | |
3. Verify coding accuracy and completeness | |
Final Report Sections: | |
1. Clinical Summary | |
- Primary diagnosis with ICD-10 | |
- Secondary diagnoses with ICD-10 | |
- Supporting evidence | |
2. Coding Summary | |
- Complete code list with descriptions | |
- Code hierarchy and relationships | |
- Supporting documentation | |
3. Recommendations | |
- Additional testing needed | |
- Follow-up care | |
- Documentation improvements needed | |
Include confidence levels and evidence quality for all diagnoses and codes.""", | |
llm=model, | |
max_loops=1, | |
) | |
# Create agent list | |
agents = [ | |
chief_medical_officer, | |
virologist, | |
internist, | |
medical_coder, | |
synthesizer, | |
] | |
# Define diagnostic flow | |
flow = f"""{chief_medical_officer.agent_name} -> {virologist.agent_name} -> {internist.agent_name} -> {medical_coder.agent_name} -> {synthesizer.agent_name}""" | |
# Create the swarm system | |
diagnosis_system = AgentRearrange( | |
name="Medical-coding-diagnosis-swarm", | |
description="Comprehensive medical diagnosis and coding system", | |
agents=agents, | |
flow=flow, | |
max_loops=1, | |
output_type="all", | |
) | |
def generate_coding_report(diagnosis_output: str) -> str: | |
""" | |
Generate a structured medical coding report from the diagnosis output. | |
""" | |
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") | |
report = f"""# Medical Diagnosis and Coding Report | |
Generated: {timestamp} | |
## Clinical Summary | |
{diagnosis_output} | |
## Coding Summary | |
### Primary Diagnosis Codes | |
[Extracted from synthesis] | |
### Secondary Diagnosis Codes | |
[Extracted from synthesis] | |
### Symptom Codes | |
[Extracted from synthesis] | |
### Procedure Codes (if applicable) | |
[Extracted from synthesis] | |
## Documentation and Compliance Notes | |
- Code justification | |
- Supporting documentation references | |
- Any coding queries or clarifications needed | |
## Recommendations | |
- Additional documentation needed | |
- Suggested follow-up | |
- Coding optimization opportunities | |
""" | |
return report | |
if __name__ == "__main__": | |
# Example patient case | |
patient_case = """ | |
Patient: 45-year-old White Male | |
Lab Results: | |
- egfr | |
- 59 ml / min / 1.73 | |
- non african-american | |
""" | |
# Add timestamp to the patient case | |
case_info = f"Timestamp: {datetime.now()}\nPatient Information: {patient_case}" | |
# Run the diagnostic process | |
diagnosis = diagnosis_system.run(case_info) | |
# Generate coding report | |
coding_report = generate_coding_report(diagnosis) | |
# Create reports | |
create_file_in_folder( | |
"reports", "medical_diagnosis_report.md", diagnosis | |
) | |
create_file_in_folder( | |
"reports", "medical_coding_report.md", coding_report | |
) | |