KI-Symptom-Check und Arztempfehlung

Fortgeschritten

Dies ist ein Support Chatbot, Multimodal AI-Bereich Automatisierungsworkflow mit 15 Nodes. Hauptsächlich werden If, Code, Webhook, EmailSend, HttpRequest und andere Nodes verwendet. Analyse medizinischer Symptome und Arztempfehlungen mit Ollama AI und WhatsApp

Voraussetzungen
  • HTTP Webhook-Endpunkt (wird von n8n automatisch generiert)
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "dIL4vZA7RjcU07qx",
  "meta": {
    "instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
    "templateCredsSetupCompleted": true
  },
  "name": "AI Symptom Checker & Doctor Suggestion",
  "tags": [],
  "nodes": [
    {
      "id": "73fc058d-d6ff-477d-826a-c1e050312f13",
      "name": "Medizinisches KI-Modell",
      "type": "@n8n/n8n-nodes-langchain.lmChatOllama",
      "position": [
        240,
        1480
      ],
      "parameters": {
        "model": "=llama3.2-16000:latest",
        "options": {}
      },
      "credentials": {
        "ollamaApi": {
          "id": "7td3WzXCW2wNhraP",
          "name": "Ollama - test"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "388c6212-65d0-47a4-a28a-f7bf9dd5c789",
      "name": "Symptomeingabe Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -80,
        1260
      ],
      "webhookId": "2837e22a-d927-40c4-bc43-7c2ec38cfdcf",
      "parameters": {
        "path": "2837e22a-d927-40c4-bc43-7c2ec38cfdcf",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "typeVersion": 1
    },
    {
      "id": "d0f553ed-cb9f-458e-b4be-9facd5a9ce8a",
      "name": "KI-Symptomanalyse",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        140,
        1260
      ],
      "parameters": {
        "text": "={{ $json.body.symptoms }}",
        "options": {
          "systemMessage": "You are a medical AI assistant that analyzes symptoms and provides preliminary assessments. IMPORTANT: Always emphasize that this is not a substitute for professional medical advice.\n\nAnalyze the symptoms and provide a JSON response with:\n{\n  \"urgency_level\": \"low/medium/high/emergency\",\n  \"possible_conditions\": [\"condition1\", \"condition2\", \"condition3\"],\n  \"specialist_needed\": \"General Practitioner/Cardiologist/Dermatologist/Neurologist/Orthopedist/Gastroenterologist/Pulmonologist/Emergency\",\n  \"severity_assessment\": \"brief description\",\n  \"recommended_actions\": [\"action1\", \"action2\"],\n  \"red_flags\": [\"warning sign if any\"]\n}\n\nSymptoms to analyze: {{ $json.body.symptoms }}\n\nPatient details:\n- Age: {{ $json.body.age || 'Not provided' }}\n- Gender: {{ $json.body.gender || 'Not provided' }}\n- Duration: {{ $json.body.duration || 'Not provided' }}\n- Additional info: {{ $json.body.additional_info || 'None' }}"
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "ce5d7cce-602e-4ca1-a565-15256a13fc6a",
      "name": "Medizinanalyse parsen",
      "type": "n8n-nodes-base.code",
      "position": [
        520,
        1260
      ],
      "parameters": {
        "jsCode": "// Parse the AI response and extract medical assessment\nconst aiResponse = items[0].json.output;\nconst originalData = $node[\"Symptom Input Webhook\"].json.body;\n\ntry {\n  // Try to parse JSON response from AI\n  let analysis;\n  if (aiResponse.includes('{')) {\n    const jsonStart = aiResponse.indexOf('{');\n    const jsonEnd = aiResponse.lastIndexOf('}') + 1;\n    const jsonStr = aiResponse.substring(jsonStart, jsonEnd);\n    analysis = JSON.parse(jsonStr);\n  } else {\n    // Fallback if AI doesn't return proper JSON\n    analysis = {\n      urgency_level: \"medium\",\n      possible_conditions: [\"General symptoms requiring medical evaluation\"],\n      specialist_needed: \"General Practitioner\",\n      severity_assessment: aiResponse,\n      recommended_actions: [\"Consult with a healthcare provider\"],\n      red_flags: []\n    };\n  }\n\n  return [{\n    json: {\n      ...originalData,\n      analysis: analysis,\n      timestamp: new Date().toISOString()\n    }\n  }];\n} catch (error) {\n  // Error handling - return basic assessment\n  return [{\n    json: {\n      ...originalData,\n      analysis: {\n        urgency_level: \"medium\",\n        possible_conditions: [\"Symptoms require medical evaluation\"],\n        specialist_needed: \"General Practitioner\",\n        severity_assessment: \"Unable to analyze symptoms properly. Please consult a healthcare provider.\",\n        recommended_actions: [\"Schedule appointment with doctor\", \"Monitor symptoms\"],\n        red_flags: [\"Seek immediate care if symptoms worsen\"]\n      },\n      timestamp: new Date().toISOString()\n    }\n  }];\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "15555bde-19dc-4278-b32b-e7601807cc6c",
      "name": "Notfall prüfen",
      "type": "n8n-nodes-base.if",
      "position": [
        740,
        1260
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.analysis.urgency_level }}",
              "value2": "emergency"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "87c59d4b-098d-4884-80d8-297a4bd99e9e",
      "name": "Ärzte finden",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        960,
        1360
      ],
      "parameters": {
        "url": "https://api.betterdoctor.com/2016-03-01/doctors",
        "options": {},
        "queryParametersUi": {
          "parameter": [
            {
              "name": "specialty_uid",
              "value": "={{ $json.analysis.specialist_needed === 'Cardiologist' ? 'cardiologist' : $json.analysis.specialist_needed === 'Dermatologist' ? 'dermatologist' : $json.analysis.specialist_needed === 'Neurologist' ? 'neurologist' : $json.analysis.specialist_needed === 'Orthopedist' ? 'orthopedic-surgeon' : $json.analysis.specialist_needed === 'Gastroenterologist' ? 'gastroenterologist' : $json.analysis.specialist_needed === 'Pulmonologist' ? 'pulmonologist' : 'family-practitioner' }}"
            },
            {
              "name": "location",
              "value": "={{ $json.location || 'New York, NY' }}"
            },
            {
              "name": "limit",
              "value": "5"
            },
            {
              "name": "user_key",
              "value": "YOUR_BETTERDOCTOR_API_KEY"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a30ea8a7-1943-4549-9da1-a0d2372979db",
      "name": "Notfallmaßnahmen erstellen",
      "type": "n8n-nodes-base.code",
      "position": [
        1180,
        1160
      ],
      "parameters": {
        "jsCode": "// Create emergency response\nconst patientData = items[0].json;\nconst symptoms = patientData.symptoms;\nconst analysis = patientData.analysis;\n\nconst emergencyMessage = `🚨 *URGENT MEDICAL ATTENTION NEEDED* 🚨\\n\\n` +\n  `⚠️ Based on your symptoms, you may need immediate medical care.\\n\\n` +\n  `📋 *Your Symptoms:*\\n${symptoms}\\n\\n` +\n  `🏥 *PLEASE DO ONE OF THE FOLLOWING IMMEDIATELY:*\\n` +\n  `• Call emergency services (911/108)\\n` +\n  `• Go to nearest emergency room\\n` +\n  `• Contact your doctor immediately\\n\\n` +\n  `⚠️ *This is an automated assessment. Trust your instincts - if you feel something is seriously wrong, seek immediate medical attention.*\\n\\n` +\n  `📱 Emergency Contact: 911 (US) | 108 (India)`;\n\nreturn [{\n  json: {\n    phone_number: patientData.phone,\n    email: patientData.email,\n    message: emergencyMessage,\n    type: 'emergency',\n    patient_data: patientData\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "1dbb9438-396b-4fc5-9a4a-7d493db64c47",
      "name": "Medizinantwort formatieren",
      "type": "n8n-nodes-base.code",
      "position": [
        1180,
        1360
      ],
      "parameters": {
        "jsCode": "// Format doctor recommendations and medical advice\nconst patientData = $node[\"Parse Medical Analysis\"].json;\nconst doctorsData = items[0].json;\nconst analysis = patientData.analysis;\n\n// Format doctors list\nlet doctorsList = '';\nif (doctorsData.data && doctorsData.data.length > 0) {\n  doctorsList = doctorsData.data.slice(0, 3).map((doctor, index) => {\n    const name = `${doctor.profile.first_name} ${doctor.profile.last_name}`;\n    const specialty = doctor.specialties[0]?.name || 'General Practice';\n    const phone = doctor.practices[0]?.phones[0]?.number || 'Not available';\n    const address = doctor.practices[0]?.visit_address ? \n      `${doctor.practices[0].visit_address.street}, ${doctor.practices[0].visit_address.city}` : \n      'Address not available';\n    \n    return `${index + 1}. *Dr. ${name}*\\n` +\n           `   🏥 ${specialty}\\n` +\n           `   📞 ${phone}\\n` +\n           `   📍 ${address}\\n`;\n  }).join('\\n');\n} else {\n  doctorsList = 'No doctors found in your area. Please search online or contact your local healthcare directory.';\n}\n\n// Create comprehensive medical response\nconst urgencyEmoji = {\n  'low': '🟢',\n  'medium': '🟡', \n  'high': '🟠',\n  'emergency': '🔴'\n};\n\nconst message = `🏥 *Medical Assessment Results*\\n\\n` +\n  `📋 *Your Symptoms:*\\n${patientData.symptoms}\\n\\n` +\n  `${urgencyEmoji[analysis.urgency_level]} *Urgency Level:* ${analysis.urgency_level.toUpperCase()}\\n\\n` +\n  `🔍 *Possible Conditions:*\\n${analysis.possible_conditions.map(condition => `• ${condition}`).join('\\n')}\\n\\n` +\n  `👨‍⚕️ *Recommended Specialist:* ${analysis.specialist_needed}\\n\\n` +\n  `💡 *Assessment:*\\n${analysis.severity_assessment}\\n\\n` +\n  `✅ *Recommended Actions:*\\n${analysis.recommended_actions.map(action => `• ${action}`).join('\\n')}\\n\\n`;\n\nlet fullMessage = message;\n\nif (analysis.red_flags && analysis.red_flags.length > 0) {\n  fullMessage += `⚠️ *Warning Signs:*\\n${analysis.red_flags.map(flag => `• ${flag}`).join('\\n')}\\n\\n`;\n}\n\nfullMessage += `👩‍⚕️ *Recommended Doctors Near You:*\\n${doctorsList}\\n\\n` +\n  `⚠️ *Important Disclaimer:*\\n` +\n  `This is an AI-generated assessment and should NOT replace professional medical advice. ` +\n  `Always consult with qualified healthcare providers for proper diagnosis and treatment.\\n\\n` +\n  `🆘 *If you experience severe symptoms or feel this is an emergency, ` +\n  `call emergency services immediately.*`;\n\nreturn [{\n  json: {\n    phone_number: patientData.phone,\n    email: patientData.email,\n    message: fullMessage,\n    type: 'medical_advice',\n    patient_data: patientData,\n    doctors: doctorsData.data || []\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "e88d7db7-1932-49dd-8899-b655fa35309a",
      "name": "WhatsApp Verfügbarkeit prüfen",
      "type": "n8n-nodes-base.if",
      "position": [
        1400,
        1260
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.phone_number }}",
              "operation": "isNotEmpty"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a96b2f32-8df3-4788-85d5-ced36ff2a9d0",
      "name": "WhatsApp Nachricht vorbereiten",
      "type": "n8n-nodes-base.code",
      "position": [
        1620,
        1160
      ],
      "parameters": {
        "jsCode": "// Prepare WhatsApp message payload\nconst data = items[0].json;\n\nreturn [{\n  json: {\n    messaging_product: \"whatsapp\",\n    to: data.phone_number,\n    type: \"text\",\n    text: {\n      body: data.message\n    }\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "d9824a6d-3782-4653-b492-088b4fb2689a",
      "name": "WhatsApp Antwort senden",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1840,
        1160
      ],
      "parameters": {
        "url": "https://graph.facebook.com/v17.0/YOUR_PHONE_NUMBER_ID/messages",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "df7d3ba7-fd59-4c61-849d-f6b378f091d1",
      "name": "E-Mail-Antwort senden",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        1840,
        1360
      ],
      "parameters": {
        "html": "={{ $json.message.replace(/\\n/g, '<br>').replace(/\\*/g, '') }}",
        "options": {
          "allowUnauthorizedCerts": true
        },
        "subject": "🏥 Your Medical Assessment & Doctor Recommendations",
        "toEmail": "={{ $json.email }}",
        "fromEmail": "medical-bot@yourdomain.com"
      },
      "credentials": {
        "smtp": {
          "id": "G1kyF8cSWTZ4vouN",
          "name": "SMTP -test"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "38d61048-6dce-417e-ac59-8343bfea7851",
      "name": "Erfolgsmeldung",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        2060,
        1260
      ],
      "parameters": {
        "options": {},
        "respondWith": "json",
        "responseBody": "={{ { \"status\": \"success\", \"message\": \"Medical assessment sent successfully\", \"urgency_level\": $json.patient_data ? $json.patient_data.analysis.urgency_level : 'unknown', \"timestamp\": new Date().toISOString() } }}"
      },
      "typeVersion": 1
    },
    {
      "id": "e8bf4043-7a7a-45bb-93e0-f821f5f1febe",
      "name": "Medizin-Bot Übersicht",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        700
      ],
      "parameters": {
        "color": 5,
        "width": 600,
        "height": 400,
        "content": "## 🏥 AI Symptom Checker & Doctor Suggestion\n\n**Complete Medical Assistant Workflow:**\n\n🔍 **Symptom Analysis** - AI analyzes symptoms with urgency assessment\n👨‍⚕️ **Doctor Matching** - Finds relevant specialists in user's area\n📱 **Multi-Channel Delivery** - Sends via WhatsApp + Email\n🚨 **Emergency Detection** - Identifies urgent cases automatically\n📊 **Data Logging** - Tracks consultations for analytics\n\n✅ HIPAA-compliant data handling\n✅ Professional medical disclaimers\n✅ Emergency response protocols"
      },
      "typeVersion": 1
    },
    {
      "id": "13fa264a-485b-4fa1-8458-2d8f1b74c1a5",
      "name": "Einrichtungsanleitung",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        720,
        260
      ],
      "parameters": {
        "color": 7,
        "width": 680,
        "height": 560,
        "content": "## 🛠️ Setup Requirements:\n\n**APIs & Services:**\n1. **BetterDoctor API** - Doctor directory (free tier)\n2. **WhatsApp Business API** - Meta Developer account\n3. **SMTP Email** - For email notifications\n4. **Ollama** - Local AI model\n\n**Input Format (Webhook):**\n```json\n{\n  \"symptoms\": \"headache, fever, nausea\",\n  \"age\": 30,\n  \"gender\": \"male\",\n  \"duration\": \"2 days\",\n  \"phone\": \"+1234567890\",\n  \"email\": \"user@email.com\",\n  \"location\": \"New York, NY\"\n}\n```\n\n**Test URL:**\nPOST https://your-n8n-instance.com/webhook/symptom-checker-webhook"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "27ec8d81-3686-4bf6-b767-b808b5328bf6",
  "connections": {
    "87c59d4b-098d-4884-80d8-297a4bd99e9e": {
      "main": [
        [
          {
            "node": "1dbb9438-396b-4fc5-9a4a-7d493db64c47",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "15555bde-19dc-4278-b32b-e7601807cc6c": {
      "main": [
        [
          {
            "node": "a30ea8a7-1943-4549-9da1-a0d2372979db",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "87c59d4b-098d-4884-80d8-297a4bd99e9e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "73fc058d-d6ff-477d-826a-c1e050312f13": {
      "ai_languageModel": [
        [
          {
            "node": "d0f553ed-cb9f-458e-b4be-9facd5a9ce8a",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "d0f553ed-cb9f-458e-b4be-9facd5a9ce8a": {
      "main": [
        [
          {
            "node": "ce5d7cce-602e-4ca1-a565-15256a13fc6a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "df7d3ba7-fd59-4c61-849d-f6b378f091d1": {
      "main": [
        [
          {
            "node": "38d61048-6dce-417e-ac59-8343bfea7851",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "388c6212-65d0-47a4-a28a-f7bf9dd5c789": {
      "main": [
        [
          {
            "node": "d0f553ed-cb9f-458e-b4be-9facd5a9ce8a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ce5d7cce-602e-4ca1-a565-15256a13fc6a": {
      "main": [
        [
          {
            "node": "15555bde-19dc-4278-b32b-e7601807cc6c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d9824a6d-3782-4653-b492-088b4fb2689a": {
      "main": [
        [
          {
            "node": "38d61048-6dce-417e-ac59-8343bfea7851",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1dbb9438-396b-4fc5-9a4a-7d493db64c47": {
      "main": [
        [
          {
            "node": "e88d7db7-1932-49dd-8899-b655fa35309a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e88d7db7-1932-49dd-8899-b655fa35309a": {
      "main": [
        [
          {
            "node": "a96b2f32-8df3-4788-85d5-ced36ff2a9d0",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "df7d3ba7-fd59-4c61-849d-f6b378f091d1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a96b2f32-8df3-4788-85d5-ced36ff2a9d0": {
      "main": [
        [
          {
            "node": "d9824a6d-3782-4653-b492-088b4fb2689a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a30ea8a7-1943-4549-9da1-a0d2372979db": {
      "main": [
        [
          {
            "node": "e88d7db7-1932-49dd-8899-b655fa35309a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Fortgeschritten - Support-Chatbot, Multimodales KI

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes15
Kategorie2
Node-Typen9
Schwierigkeitsbeschreibung

Für erfahrene Benutzer, mittelkomplexe Workflows mit 6-15 Nodes

Autor
Oneclick AI Squad

Oneclick AI Squad

@oneclick-ai

The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34