This workflow corresponds to n8n.io template #7959 — we link there as the canonical source.
This workflow follows the Google Drive → Google Drive Trigger 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 →
{
"meta": {
"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": "Append row in sheet",
"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": "Download file",
"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": "Sticky Note",
"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. \ud83d\udcc2 Detect file upload in Google Drive\n2. \u2b07\ufe0f Download the uploaded document\n3. \ud83e\udd16 Convert document to structured text using VLM Run (`healthcare.physician-orders`)\n4. \ud83d\udcca 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": "Sticky Note2",
"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": "Sticky Note3",
"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": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-656,
-192
],
"parameters": {
"color": 7,
"width": 480,
"height": 768,
"content": "# \ud83d\udcc1 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
}
],
"connections": {
"VLM Run": {
"main": [
[
{
"node": "Append row in sheet",
"type": "main",
"index": 0
}
]
]
},
"Download file": {
"main": [
[
{
"node": "VLM Run",
"type": "main",
"index": 0
}
]
]
},
"Google Drive Trigger": {
"main": [
[
{
"node": "Download file",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Process Physician Orders into Google Sheets with VLM Run AI Extraction
Source: https://n8n.io/workflows/7959/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Transform your expense tracking with automated AI receipt processing that extracts data and organizes it instantly. Monitors Google Drive for new receipt uploads (images/PDFs) Downloads and processes
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. Monitors Google Drive for new driver license image uploads Downloads and processes images using VLM
Automatically process healthcare claims into structured Google Sheets entries with VLM Run extraction Monitors Google Drive for new files in a target folder Downloads the file inside n8n for processin
Automatically process Construction Blueprints into structured Google Sheets entries with VLM extraction
Automatically process invoices and receipts using Gemini OCR, extracting data directly into Google Sheets from multiple sources including Google Drive, Gmail, and Telegram. This powerful workflow ensu