Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI | |
| from pydantic import BaseModel | |
| import os | |
| from openai import OpenAI | |
| app = FastAPI() | |
| #class PARequest(BaseModel): | |
| # procedure_code: str | |
| # summary: str | |
| # dysphagia: bool | |
| # weight_loss: bool | |
| # ppi_weeks: int | |
| # Make sure you add 'OPENAI_API_KEY' to your Payer Space Secrets | |
| client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY")) | |
| class AgentMessage(BaseModel): | |
| message: str | |
| def read_root(): | |
| return {"status": "Payer API is Live"} | |
| class AgentMessage(BaseModel): | |
| message: str | |
| # This would ideally call an LLM (OpenAI/Mistral) to 'think' like a Payer | |
| async def agent_chat(payload: AgentMessage): | |
| # DYNAMIC POLICY DATABASE (Mirroring your Provider side) | |
| POLICIES = { | |
| "22558": "Policy LCD-L341 (Spinal Fusion): Requires Physical Therapy (6+ weeks), Instability, or Spondylolisthesis.", | |
| "43239": "Policy MED-772 (EGD): Requires Weight Loss, Dysphagia, or 8-week PPI failure." | |
| } | |
| # Step 1: Tell the Payer to identify the code first | |
| system_instruction = ( | |
| "You are an Oracle Health Payer Adjudication Agent. " | |
| "Your goal is to verify medical necessity based on the following policies: \n" | |
| f"1. {POLICIES['22558']}\n" | |
| f"2. {POLICIES['43239']}\n\n" | |
| "INSTRUCTIONS:\n" | |
| "- Identify which CPT code the Provider is requesting.\n" | |
| "- ONLY apply the criteria for THAT specific code.\n" | |
| "- If evidence for THAT code is found, reply 'APPROVED'.\n" | |
| "- If evidence is missing, ask for the specific missing documentation for THAT policy." | |
| ) | |
| prompt = [ | |
| {"role": "system", "content": system_instruction}, | |
| {"role": "user", "content": payload.message} | |
| ] | |
| response = client.chat.completions.create( | |
| model="gpt-4o", # Recommended for better logic than 3.5 | |
| messages=prompt, | |
| temperature=0 | |
| ) | |
| return {"agent_response": response.choices[0].message.content} |