feat: AI patient onboarding backend and documentation

This commit is contained in:
2026-08-27 12:15:09 +05:30
parent b9440772d1
commit 59c1372fe3
49 changed files with 4012 additions and 0 deletions
@@ -0,0 +1,69 @@
import json
from app.config import ANTHROPIC_API_KEY, ANTHROPIC_MODEL
class ClaudeClient:
def __init__(self):
self.api_key = ANTHROPIC_API_KEY
self.model = ANTHROPIC_MODEL
async def validate_extraction(
self,
patient_context: dict,
specialty_config: dict,
conversation_history: list,
extracted_data: dict,
) -> dict:
if not self.api_key or self.api_key == "your_claude_key":
return {
"valid": True,
"missing": [],
"recommendation": "continue",
"hallucinations_detected": False,
}
try:
from anthropic import AsyncAnthropic
client = AsyncAnthropic(api_key=self.api_key)
prompt = f"""
You are a senior clinical auditor and AI quality control specialist.
Your task is to validate whether the extracted patient data accurately reflects the actual patient conversation without hallucination or omitted critical criteria.
PATIENT CONTEXT:
{json.dumps(patient_context, indent=2)}
SPECIALTY REQUIREMENTS:
{json.dumps(specialty_config, indent=2)}
CONVERSATION HISTORY:
{json.dumps(conversation_history, indent=2)}
PROPOSED EXTRACTED STATE:
{json.dumps(extracted_data, indent=2)}
Return ONLY a JSON response:
{{
"valid": true/false,
"missing": ["list of critical missing focus items for this specialty, if any"],
"recommendation": "continue or ask_severity or ask_duration etc.",
"hallucinations_detected": false
}}
"""
response = await client.messages.create(
model=self.model,
max_tokens=1024,
system="You are a clinical AI quality controller. Output only valid JSON.",
messages=[{"role": "user", "content": prompt}],
)
content = response.content[0].text
return json.loads(content)
except Exception as e:
print(f"[Claude Validation Error]: {e}")
return {
"valid": True,
"missing": [],
"recommendation": "continue",
"hallucinations_detected": False,
}