81 lines
3.4 KiB
PHP
81 lines
3.4 KiB
PHP
<?php
|
|
header('Content-Type: application/json');
|
|
require_once __DIR__ . '/../ai/LocalAIApi.php';
|
|
|
|
// Get JSON input
|
|
$input = json_decode(file_get_contents('php://input'), true);
|
|
|
|
$target = $input['target'] ?? 'treatment_plan'; // symptoms, diagnosis, treatment_plan, translate
|
|
$symptoms = $input['symptoms'] ?? '';
|
|
$diagnosis = $input['diagnosis'] ?? '';
|
|
$currentValue = $input['current_value'] ?? ''; // For expanding symptoms or translation text
|
|
|
|
$systemPrompt = 'You are a professional medical assistant.';
|
|
$userPrompt = "";
|
|
|
|
switch ($target) {
|
|
case 'translate':
|
|
$text = $input['text'] ?? '';
|
|
$from = $input['from'] ?? 'English';
|
|
$to = $input['to'] ?? 'Arabic';
|
|
|
|
if (empty($text)) {
|
|
echo json_encode(['success' => false, 'error' => 'No text provided for translation.']);
|
|
exit;
|
|
}
|
|
|
|
$systemPrompt = "You are a professional translator specializing in medical terminology.";
|
|
$userPrompt = "Translate the following text from $from to $to. Return only the translated text without any explanations or extra characters.\n\nText: $text";
|
|
break;
|
|
|
|
case 'symptoms':
|
|
if (empty($currentValue)) {
|
|
$userPrompt = "Generate a list of common clinical symptoms for a general checkup in a professional medical format (HTML lists).";
|
|
} else {
|
|
$userPrompt = "Rewrite and expand the following patient symptoms into a professional clinical description using HTML (bullet points or paragraph). Maintain the original meaning but make it clearer and more detailed:\n\n" . strip_tags($currentValue);
|
|
}
|
|
break;
|
|
|
|
case 'diagnosis':
|
|
if (empty($symptoms)) {
|
|
echo json_encode(['success' => false, 'error' => 'Please enter symptoms first to get a diagnosis suggestion.']);
|
|
exit;
|
|
}
|
|
$userPrompt = "Based on the following symptoms, suggest a list of potential differential diagnoses. Provide the response in a clear HTML list format.\n\nSymptoms:\n" . strip_tags($symptoms);
|
|
break;
|
|
|
|
case 'treatment_plan':
|
|
default:
|
|
if (empty($symptoms) && empty($diagnosis)) {
|
|
echo json_encode(['success' => false, 'error' => 'No symptoms or diagnosis provided.']);
|
|
exit;
|
|
}
|
|
$userPrompt = "Based on the following symptoms and diagnosis, please generate a concise treatment plan and medical report for the patient.\n\n";
|
|
if (!empty($symptoms)) {
|
|
$userPrompt .= "Symptoms:\n" . strip_tags($symptoms) . "\n\n";
|
|
}
|
|
if (!empty($diagnosis)) {
|
|
$userPrompt .= "Diagnosis:\n" . strip_tags($diagnosis) . "\n\n";
|
|
}
|
|
$userPrompt .= "Please provide the report in a clear, professional format using HTML tags (like <ul>, <li>, <strong>, etc.) for better readability.";
|
|
break;
|
|
}
|
|
|
|
try {
|
|
$response = LocalAIApi::createResponse([
|
|
'input' => [
|
|
['role' => 'system', 'content' => $systemPrompt],
|
|
['role' => 'user', 'content' => $userPrompt],
|
|
],
|
|
]);
|
|
|
|
if (!empty($response['success'])) {
|
|
$text = LocalAIApi::extractText($response);
|
|
echo json_encode(['success' => true, 'report' => trim($text)]);
|
|
} else {
|
|
echo json_encode(['success' => false, 'error' => $response['error'] ?? 'AI generation failed.']);
|
|
}
|
|
} catch (Exception $e) {
|
|
echo json_encode(['success' => false, 'error' => $e->getMessage()]);
|
|
}
|