Extraction d'ordonnances médicales vers Google Sheets (VLM Run AI)
Ceci est unAI Summarization, Multimodal AIworkflow d'automatisation du domainecontenant 8 nœuds.Utilise principalement des nœuds comme GoogleDrive, GoogleSheets, VlmRun, GoogleDriveTrigger. Extraire les ordonnances médicales à partir de documents vers Google Sheets avec VLM Run AI
- •Informations d'identification Google Drive API
- •Informations d'identification Google Sheets API
Nœuds utilisés (8)
Catégorie
{
"meta": {
"instanceId": "96d35e452e0d9a182973416b7532cfc5643239aaaa764a5bf74d52ca84f4a35c",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "d91aa0d4-5d82-4696-bd1e-5dbadda58824",
"name": "VLM Run",
"type": "@vlm-run/n8n-nodes-vlmrun.vlmRun",
"position": [
48,
288
],
"parameters": {
"domain": "healthcare.physician-order"
},
"typeVersion": 1
},
{
"id": "12cecad0-3515-45b7-8941-2a83a32fe758",
"name": "Ajouter une ligne dans la feuille",
"type": "n8n-nodes-base.googleSheets",
"position": [
544,
288
],
"parameters": {
"columns": {
"value": {
"DIAGNOSIS": "={{ $json.response.physician_info.diagnosis }}",
"EXAM DATE": "={{ $json.response.exam_data }}",
"PATIENT DOB": "={{ $json.response.patient_info.dob }}",
"PATIENT NAME": "={{ $json.response.patient_info.name.full_name }}",
"PATIENT EMAIL": "={{ $json.response.patient_info.email }}",
"PHYSICIAN FAX": "={{ $json.response.physician_info.fax }}",
"FORM SIGNED IN": "={{ $json.response.form_signed_date }}",
"PATIENT GENDER": "={{ $json.response.patient_info.gender }}",
"PATIENT HEIGHT": "={{ $json.response.patient_info.height }}",
"PATIENT WEIGHT": "={{ $json.response.patient_info.weight }}",
"PHYSICIAN NAME": "={{ $json.response.physician_info.referring_physician.full_name }}",
"ADDITIONAL INFO": "={{ $json.response.additional_notes }}",
"PATIENT ADDRESS": "={{ $json.response.patient_info.address }}",
"PHYSICIAN EMAIL": "={{ $json.response.physician_info.email }}",
"PATIENT PHONE NO": "={{ $json.response.patient_info.phone }}",
"REFERRING CLINIC": "={{ $json.response.physician_info.referring_clinic }}",
"PHYSICIAN PHONE NO": "={{ $json.response.physician_info.phone }}",
"REFERRING CLINIC ADDRESS": "={{ $json.response.physician_info.referring_clinic_address }}"
},
"schema": [
{
"id": "PATIENT NAME",
"type": "string",
"display": true,
"required": false,
"displayName": "PATIENT NAME",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "PATIENT ADDRESS",
"type": "string",
"display": true,
"required": false,
"displayName": "PATIENT ADDRESS",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "PATIENT PHONE NO",
"type": "string",
"display": true,
"required": false,
"displayName": "PATIENT PHONE NO",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "PATIENT EMAIL",
"type": "string",
"display": true,
"required": false,
"displayName": "PATIENT EMAIL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "PATIENT DOB",
"type": "string",
"display": true,
"required": false,
"displayName": "PATIENT DOB",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "PATIENT GENDER",
"type": "string",
"display": true,
"required": false,
"displayName": "PATIENT GENDER",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "PATIENT HEIGHT",
"type": "string",
"display": true,
"required": false,
"displayName": "PATIENT HEIGHT",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "PATIENT WEIGHT",
"type": "string",
"display": true,
"required": false,
"displayName": "PATIENT WEIGHT",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "PHYSICIAN NAME",
"type": "string",
"display": true,
"required": false,
"displayName": "PHYSICIAN NAME",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "PHYSICIAN PHONE NO",
"type": "string",
"display": true,
"required": false,
"displayName": "PHYSICIAN PHONE NO",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "PHYSICIAN EMAIL",
"type": "string",
"display": true,
"required": false,
"displayName": "PHYSICIAN EMAIL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "PHYSICIAN FAX",
"type": "string",
"display": true,
"required": false,
"displayName": "PHYSICIAN FAX",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "REFERRING CLINIC",
"type": "string",
"display": true,
"required": false,
"displayName": "REFERRING CLINIC",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "REFERRING CLINIC ADDRESS",
"type": "string",
"display": true,
"required": false,
"displayName": "REFERRING CLINIC ADDRESS",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "DIAGNOSIS",
"type": "string",
"display": true,
"required": false,
"displayName": "DIAGNOSIS",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "ADDITIONAL INFO",
"type": "string",
"display": true,
"required": false,
"displayName": "ADDITIONAL INFO",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "EXAM DATE",
"type": "string",
"display": true,
"required": false,
"displayName": "EXAM DATE",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "FORM SIGNED IN",
"type": "string",
"display": true,
"required": false,
"displayName": "FORM SIGNED IN",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sxwN8f1BTLkb3zvSmyj5HQ9iOLbqNNeDjCt0JuwzsFY/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1sxwN8f1BTLkb3zvSmyj5HQ9iOLbqNNeDjCt0JuwzsFY",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sxwN8f1BTLkb3zvSmyj5HQ9iOLbqNNeDjCt0JuwzsFY/edit?usp=drivesdk",
"cachedResultName": "physician order sheet"
}
},
"typeVersion": 4.7
},
{
"id": "9f3e9526-b716-49b9-b26d-59aa44b415bd",
"name": "Télécharger le fichier",
"type": "n8n-nodes-base.googleDrive",
"position": [
-336,
288
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {},
"operation": "download"
},
"typeVersion": 3
},
{
"id": "aa4720fa-a453-4e44-b00b-95e805783ab8",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1168,
-192
],
"parameters": {
"color": 7,
"width": 480,
"height": 768,
"content": "# Physician Order Processing with VLM Run\n\nAutomatically extracts structured physician order details from uploaded documents in Google Drive and saves them into a Google Sheet for tracking, compliance, or reporting.\n\n## Workflow\n\n1. 📂 Detect file upload in Google Drive\n2. ⬇️ Download the uploaded document\n3. 🤖 Convert document to structured text using VLM Run (`healthcare.physician-orders`)\n4. 📊 Append extracted order data to Google Sheet\n\n## Perfect for\n\n* Durable Medical Equipment (DME) order forms\n* Physician treatment orders\n* Prescription request forms\n* Insurance/Medicaid submission workflows\n* Automated compliance documentation\n\n## Requirements\n\n* VLM Run API access\n* Google Drive + Sheets OAuth2\n* n8n server with active workflow"
},
"typeVersion": 1
},
{
"id": "f4cf5e61-eb58-444f-8334-e881fe5af979",
"name": "Note adhésive2",
"type": "n8n-nodes-base.stickyNote",
"position": [
368,
-192
],
"parameters": {
"color": 7,
"width": 480,
"height": 768,
"content": "# Append Row in Sheet\n\n**Function:** Appends extracted structured data into a Google Sheet.\n\n* Columns could be: Patient, DOB, HCPCS Code, Item Description, Qty, Price, Diagnosis, Physician, Date\n\n**Benefit:** Provides a structured, continuously updated database for tracking orders"
},
"typeVersion": 1
},
{
"id": "abf0a903-ccfa-42da-a091-e84f8146668d",
"name": "Note adhésive3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
-192
],
"parameters": {
"width": 480,
"height": 768,
"content": "# VLM Run (Document)\n\n**Function:** Sends the physician order file to VLM Run under the category `healthcare.physician-orders`.\n\n* Extracts structured details such as:\n\n * Patient name, DOB, Medicaid ID\n * Ordered items (HCPCS, quantity, price, authorization flag)\n * Physician details (name, NPI, signature date)\n\n**Benefit:** Turns complex medical forms into machine-readable JSON"
},
"typeVersion": 1
},
{
"id": "6cec4604-f099-418f-bb58-eb0501b15759",
"name": "Google Drive Trigger",
"type": "n8n-nodes-base.googleDriveTrigger",
"position": [
-592,
288
],
"parameters": {
"event": "fileCreated",
"options": {
"fileType": "all"
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"mode": "list",
"value": "1E8rvLEWKguorMT36yCD1jY78G0u8g6g7",
"cachedResultUrl": "https://drive.google.com/drive/folders/1E8rvLEWKguorMT36yCD1jY78G0u8g6g7",
"cachedResultName": "test_data"
}
},
"typeVersion": 1
},
{
"id": "7f89b384-401d-448b-8f5f-0f2e916133ad",
"name": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-656,
-192
],
"parameters": {
"color": 7,
"width": 480,
"height": 768,
"content": "# 📁 Input Processing\n\n**Monitors & downloads physician order files from Google Drive.**\n\n**Process:**\n1. Watches designated Drive folder\n2. Auto-triggers on new uploads\n3. Downloads files for AI processing\n\n**Supported Formats:**\n- Images (JPG, PNG, WEBP)\n- PDF documents\n- Mobile camera uploads\n- Scanned receipts"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"d91aa0d4-5d82-4696-bd1e-5dbadda58824": {
"main": [
[
{
"node": "12cecad0-3515-45b7-8941-2a83a32fe758",
"type": "main",
"index": 0
}
]
]
},
"9f3e9526-b716-49b9-b26d-59aa44b415bd": {
"main": [
[
{
"node": "d91aa0d4-5d82-4696-bd1e-5dbadda58824",
"type": "main",
"index": 0
}
]
]
},
"6cec4604-f099-418f-bb58-eb0501b15759": {
"main": [
[
{
"node": "9f3e9526-b716-49b9-b26d-59aa44b415bd",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Intermédiaire - Résumé IA, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Shahrear
@shahrearI’m Shahrear, a Software Engineer with over 5 years of experience in full-stack development and workflow automation. I specialize in building intelligent automations using n8n, helping teams streamline operations and boost productivity. I’m also an expert in developing custom n8n nodes, with published work on npm - including the @vlm-run/n8n-nodes-vlmrun package. Linkedin - https://www.linkedin.com/in/shahrear-amin/ Email - shahrearbinamin33@gmail.com
Partager ce workflow