@page "/doctor/ai" @attribute [Authorize(Roles = UserRoles.Doctor)] @layout DoctorLayout @inject IDoctorManagementService DoctorManagementService

AI Sickness Prediction

@if (!string.IsNullOrEmpty(statusMessage)) { }
Upload PDF Document
@if (predictions != null && predictions.Count > 0) {

Predictions:

} @code { private string statusMessage = string.Empty; private bool isSuccess = false; private List predictions; private async Task HandleFileSelected(InputFileChangeEventArgs e) { try { var file = e.File; await using var stream = file.OpenReadStream(); using var memoryStream = new MemoryStream(); await stream.CopyToAsync(memoryStream); var fileContent = memoryStream.ToArray(); var text = await ExtractTextFromPdf(fileContent); Console.WriteLine(text); if (!string.IsNullOrEmpty(text)) { var result = await DoctorManagementService.GetSicknessPrediction(text); if (result != null) { predictions = result.Data; statusMessage = result.Message; isSuccess = true; } else { statusMessage = "Failed to get predictions from the AI service."; isSuccess = false; } } else { statusMessage = "Failed to extract text from PDF."; isSuccess = false; } } catch (Exception ex) { statusMessage = $"Error: {ex.Message}"; isSuccess = false; } } private async Task ExtractTextFromPdf(byte[] pdfBytes) { using var reader = new MemoryStream(pdfBytes); using var pdfReader = new PdfReader(reader); using var pdfDoc = new PdfDocument(pdfReader); var text = new StringBuilder(); for (int i = 1; i <= pdfDoc.GetNumberOfPages(); i++) { var strategy = new SimpleTextExtractionStrategy(); var pageText = PdfTextExtractor.GetTextFromPage(pdfDoc.GetPage(i), strategy); text.AppendLine(pageText); } return text.ToString(); } }