AutomationFlowsAI & RAG › Simplify Medical Lab Reports with Ollama AI and Email Delivery System

Simplify Medical Lab Reports with Ollama AI and Email Delivery System

ByOneclick AI Squad @oneclick-ai on n8n.io

This automated n8n workflow streamlines the process of receiving, processing, and delivering patient-friendly lab reports with precautionary advice. 📧 Email Trigger → Monitors inbox for lab reports 📄 PDF Extract → Processes attachments & extracts content 🤖 AI Simplify → Converts…

Manual trigger★★★★☆ complexityAI-powered8 nodesEmail Read ImapOllama ChatAgentEmail Send
AI & RAG Trigger: Manual Nodes: 8 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #7274 — we link there as the canonical source.

This workflow follows the Agent → Emailsend recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "1PvO16aHWZcyFf6B",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "AI-Powered Lab Report Simplifier with Precautions",
  "tags": [],
  "nodes": [
    {
      "id": "b8e80d8b-5f75-48a6-adda-3dc1a39e8f3f",
      "name": "Lab Report Email Trigger",
      "type": "n8n-nodes-base.emailReadImap",
      "position": [
        -600,
        360
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "imap": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "09a54768-7021-4d1e-abe8-2d4dd57920f5",
      "name": "Medical AI Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOllama",
      "position": [
        -72,
        580
      ],
      "parameters": {
        "model": "llama3.2-16000:latest",
        "options": {}
      },
      "credentials": {
        "ollamaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3745178a-53d2-4b9d-a871-e4a78ce5a495",
      "name": "Extract PDF Content",
      "type": "n8n-nodes-base.code",
      "position": [
        -380,
        360
      ],
      "parameters": {
        "jsCode": "// Extract PDF content and prepare for AI analysis\nconst emailData = items[0].json;\nlet pdfContent = '';\n\n// Check for attachments\nif (emailData.attachments && emailData.attachments.length > 0) {\n  const pdfAttachment = emailData.attachments.find(att => \n    att.contentType === 'application/pdf' || \n    att.filename?.toLowerCase().includes('.pdf')\n  );\n  \n  if (pdfAttachment) {\n    // In a real scenario, you'd use a PDF parser here\n    // For now, we'll use the email text content as a fallback\n    pdfContent = emailData.textPlain || emailData.html || 'PDF content extraction needed';\n  }\n} else {\n  pdfContent = emailData.textPlain || emailData.html || '';\n}\n\n// Extract patient email from sender\nconst patientEmail = emailData.from?.value?.[0]?.address || emailData.from;\n\nreturn [{\n  json: {\n    patient_email: patientEmail,\n    report_content: pdfContent,\n    subject: emailData.subject,\n    received_date: new Date().toISOString()\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "2012adee-2fef-4b29-adf3-d8e34db7ccfa",
      "name": "AI Report Simplifier",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -160,
        360
      ],
      "parameters": {
        "text": "={{ $json.report_content }}",
        "options": {
          "systemMessage": "You are a medical AI that simplifies lab reports for patients. Convert complex medical terminology into easy-to-understand language.\n\nAnalyze the lab report and provide:\n\n1. **SIMPLE SUMMARY**: Explain what tests were done in plain English\n2. **RESULTS EXPLANATION**: \n   - Normal results: \"\u2705 Normal - This is good!\"\n   - Abnormal results: \"\u26a0\ufe0f Outside normal range - Here's what it means...\"\n3. **KEY FINDINGS**: Highlight the most important results\n4. **PRECAUTIONS & ADVICE**:\n   - Dietary recommendations\n   - Lifestyle changes\n   - When to follow up with doctor\n   - Warning signs to watch for\n\nUse simple words, avoid medical jargon, and be reassuring but honest.\n\nLab Report Content:\n{{ $json.report_content }}\n\nIMPORTANT: Always end with: \"\u26a0\ufe0f This is a simplified explanation. Always discuss your results with your healthcare provider for proper medical advice.\""
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "fad3a39a-9138-403b-9a4f-e7702e4029f6",
      "name": "Format Report Response",
      "type": "n8n-nodes-base.code",
      "position": [
        216,
        360
      ],
      "parameters": {
        "jsCode": "// Format the simplified report with proper styling\nconst originalData = $node[\"Extract PDF Content\"].json;\nconst simplifiedReport = items[0].json.output;\n\n// Create formatted email content\nconst emailContent = `\n<div style=\"font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px; background-color: #f9f9f9;\">\n  <div style=\"background-color: white; padding: 30px; border-radius: 10px; box-shadow: 0 2px 10px rgba(0,0,0,0.1);\">\n    \n    <h2 style=\"color: #2c5aa0; text-align: center; margin-bottom: 30px;\">\n      \ud83e\ude7a Your Lab Report - Simplified\n    </h2>\n    \n    <div style=\"background-color: #e3f2fd; padding: 15px; border-radius: 5px; margin-bottom: 20px;\">\n      <p style=\"margin: 0; font-size: 14px; color: #1565c0;\">\n        <strong>Report Date:</strong> ${new Date().toLocaleDateString()}<br>\n        <strong>Original Subject:</strong> ${originalData.subject}\n      </p>\n    </div>\n    \n    <div style=\"line-height: 1.6; color: #333;\">\n      ${simplifiedReport.replace(/\\n/g, '<br>').replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>')}\n    </div>\n    \n    <div style=\"background-color: #fff3e0; padding: 15px; border-radius: 5px; margin-top: 20px; border-left: 4px solid #ff9800;\">\n      <h4 style=\"color: #e65100; margin-top: 0;\">\ud83d\udccb Next Steps:</h4>\n      <ul style=\"margin-bottom: 0;\">\n        <li>Save this report for your records</li>\n        <li>Schedule a follow-up with your doctor if recommended</li>\n        <li>Ask questions during your next appointment</li>\n        <li>Share any concerns with your healthcare provider</li>\n      </ul>\n    </div>\n    \n    <div style=\"text-align: center; margin-top: 30px; padding-top: 20px; border-top: 1px solid #ddd;\">\n      <p style=\"font-size: 12px; color: #666; margin: 0;\">\n        This simplified report was generated by AI for educational purposes only.<br>\n        Always consult your healthcare provider for medical advice.\n      </p>\n    </div>\n    \n  </div>\n</div>\n`;\n\n// Create WhatsApp-friendly plain text version\nconst whatsappMessage = `\ud83e\ude7a *Your Lab Report - Simplified*\\n\\n` +\n  `\ud83d\udcc5 *Report Date:* ${new Date().toLocaleDateString()}\\n` +\n  `\ud83d\udccb *Subject:* ${originalData.subject}\\n\\n` +\n  `${simplifiedReport.replace(/\\*\\*/g, '*')}\\n\\n` +\n  `\ud83d\udcf1 *Tip:* Check your email for the full formatted report with more details.`;\n\nreturn [{\n  json: {\n    patient_email: originalData.patient_email,\n    html_content: emailContent,\n    plain_content: simplifiedReport,\n    whatsapp_message: whatsappMessage,\n    subject: `Your Simplified Lab Report - ${originalData.subject}`,\n    original_subject: originalData.subject\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "effef8f1-d484-48cc-afdd-0b9938aeecc0",
      "name": "Send Simplified Report",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        436,
        360
      ],
      "parameters": {
        "html": "={{ $json.html_content }}",
        "text": "={{ $json.plain_content }}",
        "options": {},
        "subject": "={{ $json.subject }}",
        "toEmail": "={{ $json.patient_email }}",
        "fromEmail": "user@example.com"
      },
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "32e59442-4970-44b4-bbd4-bd611b1cef0b",
      "name": "Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -700,
        -300
      ],
      "parameters": {
        "color": 5,
        "width": 500,
        "height": 340,
        "content": "## \ud83e\ude7a AI Lab Report Simplifier\n\n**Streamlined 6-Node Workflow:**\n\n\ud83d\udce7 **Email Trigger** \u2192 Monitors for lab reports\n\ud83d\udcc4 **PDF Extract** \u2192 Processes attachments  \n\ud83e\udd16 **AI Simplify** \u2192 Converts medical terms\n\u2728 **Format Response** \u2192 Creates patient-friendly layout\n\ud83d\udce4 **Send Report** \u2192 Delivers via email\n\n\u2705 Automatic PDF processing\n\u2705 Medical term simplification  \n\u2705 Precautionary advice included\n\u2705 Professional formatting\n\u2705 HIPAA-compliant handling"
      },
      "typeVersion": 1
    },
    {
      "id": "2bb12d8c-8719-4c2f-99b3-6341c0a44112",
      "name": "Setup Instructions",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -160,
        -300
      ],
      "parameters": {
        "color": 7,
        "width": 460,
        "height": 360,
        "content": "## \u2699\ufe0f Setup Guide:\n\n**Required:**\n1. **Email IMAP** - Monitor lab report emails\n2. **Ollama AI** - Medical text analysis\n3. **SMTP** - Send simplified reports\n\n**Configuration:**\n- Set email filters for lab reports\n- Configure AI model for medical context\n- Add PDF parsing library if needed\n- Test with sample lab reports\n\n**Input:** Lab report PDFs via email\n**Output:** Simplified, patient-friendly reports"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "7cb3f37a-003e-4cd0-8524-aba548330baa",
  "connections": {
    "Medical AI Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Report Simplifier",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Extract PDF Content": {
      "main": [
        [
          {
            "node": "AI Report Simplifier",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Report Simplifier": {
      "main": [
        [
          {
            "node": "Format Report Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Report Response": {
      "main": [
        [
          {
            "node": "Send Simplified Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Lab Report Email Trigger": {
      "main": [
        [
          {
            "node": "Extract PDF Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This automated n8n workflow streamlines the process of receiving, processing, and delivering patient-friendly lab reports with precautionary advice. 📧 Email Trigger → Monitors inbox for lab reports 📄 PDF Extract → Processes attachments & extracts content 🤖 AI Simplify → Converts…

Source: https://n8n.io/workflows/7274/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This workflow listens for incoming book request emails, extracts the user's intent using the Ollama LLM, queries book data (title, summary, details) via an API, and sends a personalized recommendation

Ollama Chat, Email Read Imap, Agent +2
AI & RAG

This n8n workflow automates communication with meeting invitees to decrease no-show rates by sending timely email and WhatsApp reminders, and a clarification request if more information is needed to p

Email Send, Output Parser Structured, Tool Calculator +4
AI & RAG

Very simple Human in the loop system email with AI e IMAP. Uses emailReadImap, markdown, emailSend, chainSummarization. Manual trigger; 16 nodes.

Email Read Imap, Email Send, Chain Summarization +2
AI & RAG

Very simple Human in the loop system email with AI e IMAP. Uses emailReadImap, markdown, emailSend, chainSummarization. Manual trigger; 16 nodes.

Email Read Imap, Email Send, Chain Summarization +2
AI & RAG

This workflow automates the handling of incoming emails by summarizing their content, generating appropriate responses, and validating the responses through a "Human-in-the-Loop" system. It integrates

Email Read Imap, Email Send, Chain Summarization +2