Program Link Triggered E-Mail for Next appointment using n8n

For requests or help with our API
Post Reply
joergzastrau
Posts: 23
Joined: Sun Feb 27, 2022 2:53 am

Program Link Triggered E-Mail for Next appointment using n8n

Post by joergzastrau » Sun Nov 06, 2022 10:40 am

Dear all,

this n8n workflow will send an HTML E-Mail to inform the current selected Patient about his next appointment (with iCal attachment).

It is triggered by a webhook, e.g. by creating an Open Dental Program Link to curl.exe with the command line arguments

Code: Select all

"-X POST http://192.168.1.60:5678/webhook-test/EmailAptConfirmation?PatNum=[PatNum]"
(192.168.1.60 being the server hosting the n8n installation).

Requirements:

.) OD version 21.4 or later with RO API access
.) n8n (tested with version 0.195.5, port 5678)
.) curl

We use Docker images for n8n. Setup see http://opendentalsoft.com/forum/viewtop ... f=9&t=7749 (similar).

Code (to be copy&pasted into n8n GUI, adoption of credentials and Server IP necessary):

Code: Select all

{
  "meta": {
    "instanceId": "c5bbe0e4dd0c2a71ee01ba0477f0fe876e4ef1ddb06022d07739fda528d4f9f1"
  },
  "nodes": [
    {
      "parameters": {},
      "name": "Start",
      "type": "n8n-nodes-base.start",
      "position": [
        -460,
        340
      ],
      "typeVersion": 1,
      "id": "e20309fb-c936-416b-8b1a-cfb12e904c3b"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "EmailAptConfirmation",
        "responseMode": "lastNode",
        "options": {}
      },
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -260,
        140
      ],
      "webhookId": "db437850-0e90-4eb7-b383-f8438ea1bd66",
      "typeVersion": 1,
      "id": "b3cd36ac-a553-4c10-a5e1-e4fcde5a018f"
    },
    {
      "parameters": {
        "title": "Appointment Dr. Yang",
        "start": "={{$json[\"AptDateTimeUTC\"]}}",
        "end": "={{$json[\"AptDateTimeEndUTC\"]}}",
        "binaryPropertyName": "iCalEventData",
        "additionalFields": {
          "description": "=Appointment with {{$json[\"provAbbr\"]}}\n\nDr. Judith Yang, DMD MS \nOffice Address: Steinmetzstr. 1\n67655 Kaiserslautern\n\nTel: +49(0)631 3437309-0\nFax: +49(0)631 3437309-1\n\nEmail: info@american-orthodontics.com\nWeb: http://www.american-orthodontics.com"
        }
      },
      "id": "83eb5606-d1c1-4bab-bec2-122a3b6d57d7",
      "name": "iCalendar",
      "type": "n8n-nodes-base.iCal",
      "typeVersion": 1,
      "position": [
        1140,
        340
      ]
    },
    {
      "parameters": {
        "fromEmail": "American Orthodontist Dr. Yang <info@american-orthodontics.com>",
        "toEmail": "={{$json[\"Email\"]}}",
        "bccEmail": "info@american-orthodontics.com",
        "subject": "Next appointment with Dr. Yang",
        "html": "=<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n <head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n  <title>Demystifying Email Design</title>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>\n</head>\n</html>\n\n<body style=\"margin: 0; padding: 0;\">\n<br>\nDear all,<br><br>\nwe have scheduled the next appointment for {{$json[\"FName\"]}} on {{$json[\"AptDateMonth\"]}} {{$json[\"AptDateDate\"]}} at {{$json[\"AptTimeHours\"]}}:{{$json[\"AptTimeMinutes\"]}} (German time). <br>\n<br>\nWith best regards<br>\n<br>\nTeam American Orthodontist<br>\n<br><br>\n--<br>\n<img src=\"data:image/png;base64,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\"/>\n<br><br>\nDr. Judith Yang, DMD MS<br>\n Office Address: Steinmetzstr. 1<br>\n 67655 Kaiserslautern<br>\n Tel: +49(0)631 3437309-0<br>\n Fax: +49(0)631 3437309-1<br>\n Email: info@american-orthodontics.com<br>\n Web: http://www.american-orthodontics.com<br><br>\nTax-Reg.: 19/227/50453<br>\n</body>",
        "attachments": "iCalEventData",
        "options": {}
      },
      "id": "3760f640-2e19-425f-b38a-1ed83c64262e",
      "name": "Send Email",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 1,
      "position": [
        1540,
        320
      ],
      "credentials": {
        "smtp": {
          "id": "9",
          "name": "SMTP account"
        }
      }
    },
    {
      "parameters": {
        "functionCode": "return [{json:{\n\t\"headers\": {\n\t\t\"host\": \"192.168.1.60:5678\",\n\t\t\"user-agent\": \"curl/7.86.0\",\n\t\t\"accept\": \"*/*\"\n\t},\n\t\"params\": {\n\t},\n\t\"query\": {\n\t\t\"PatNum\": \"11\"\n\t},\n\t\t\"body\": {\n\t}\n  }\n}]\n"
      },
      "id": "c83f7363-b1e6-43ac-a27f-7ecdd96fb0f7",
      "name": "Test Data",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        -260,
        340
      ],
      "disabled": true
    },
    {
      "parameters": {
        "authentication": "headerAuth",
        "url": "=http://192.168.1.60:30223/api/v1/appointments?PatNum={{$json[\"query\"][\"PatNum\"]}}&dateStart={{$json[\"DateToday\"]}}",
        "options": {
          "splitIntoItems": true
        }
      },
      "name": "OD Get Patient appt by ID",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [
        140,
        340
      ],
      "alwaysOutputData": true,
      "notesInFlow": true,
      "id": "90d1c110-8942-495d-8f32-fbf9b48edb3f",
      "credentials": {
        "httpHeaderAuth": {
          "id": "5",
          "name": "Header Auth KL Office"
        }
      },
      "notes": "For production use Date_Stop and DateTStamp in query."
    },
    {
      "parameters": {
        "action": "calculate",
        "value": "={{$json[\"AptDateTimeUTC\"]}}",
        "duration": "={{$json[\"Pattern\"].length*5*60}}",
        "timeUnit": "seconds",
        "dataPropertyName": "AptDateTimeEndUTC",
        "options": {
          "fromFormat": ""
        }
      },
      "id": "0e79f2f9-57c3-48af-9a49-a6b4a097cb8e",
      "name": "Calculate AptDateTimeEnd",
      "type": "n8n-nodes-base.dateTime",
      "typeVersion": 1,
      "position": [
        940,
        340
      ]
    },
    {
      "parameters": {
        "value": "={{ new Date(new Date().getTime()+86400000)}}",
        "dataPropertyName": "DateToday",
        "toFormat": "YYYY-MM-DD",
        "options": {}
      },
      "name": "Today",
      "type": "n8n-nodes-base.dateTime",
      "typeVersion": 1,
      "position": [
        -60,
        340
      ],
      "id": "58fb95db-5bd1-4a7b-8030-c3d825d1f336"
    },
    {
      "parameters": {
        "operation": "sort",
        "sortFieldsUi": {
          "sortField": [
            {
              "fieldName": "AptDateTime"
            }
          ]
        },
        "options": {}
      },
      "name": "Sort by AptDateTime",
      "type": "n8n-nodes-base.itemLists",
      "typeVersion": 1,
      "position": [
        340,
        340
      ],
      "id": "fd9ba9ef-11db-43a0-9769-cf7870296b43",
      "continueOnFail": true
    },
    {
      "parameters": {
        "authentication": "headerAuth",
        "url": "=http://192.168.1.60:30223/api/v1/patients/{{$json[\"PatNum\"]}}",
        "options": {
          "splitIntoItems": false
        }
      },
      "name": "OD Get Patient Info by ID",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [
        740,
        160
      ],
      "alwaysOutputData": false,
      "id": "ac6d9c8b-4aea-4206-ad4a-7186d383c238",
      "credentials": {
        "httpHeaderAuth": {
          "id": "5",
          "name": "Header Auth KL Office"
        }
      }
    },
    {
      "parameters": {
        "functionCode": "const results = []\nconst date = $json[\"AptDateTime\"];\nconst provAbbr = $json[\"provAbbr\"];\nconst d = new Date(date);\n\nconst month = new Array();\nmonth[0] = \"January\";\nmonth[1] = \"February\";\nmonth[2] = \"March\";\nmonth[3] = \"April\";\nmonth[4] = \"May\";\nmonth[5] = \"June\";\nmonth[6] = \"July\";\nmonth[7] = \"August\";\nmonth[8] = \"September\";\nmonth[9] = \"October\";\nmonth[10] = \"November\";\nmonth[11] = \"December\";\n\nconst AptDateMonth = month[d.getMonth()];\nconst AptDateDate = d.getDate();\nconst AptDateYear = d.getFullYear();\nconst AptTimeHours = d.getHours();\nvar AptTimeMinutes = d.getMinutes();\n\nAptTimeMinutes = d.getMinutes() > 9 ? AptTimeMinutes : '0' + AptTimeMinutes;\n\nresults.push({json:{AptDateMonth, AptDateDate, AptDateYear, AptTimeHours, AptTimeMinutes, provAbbr}})\n\n\nreturn results\n"
      },
      "id": "1db34d1a-9699-40fd-a68b-4d0f6759a4d9",
      "name": "Format Apt Date",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        740,
        0
      ]
    },
    {
      "parameters": {
        "mode": "multiplex",
        "options": {}
      },
      "id": "247d402d-e72c-4521-9c19-5e42376ca9dd",
      "name": "2nd Merge",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 2,
      "position": [
        1340,
        320
      ]
    },
    {
      "parameters": {
        "mode": "multiplex",
        "options": {}
      },
      "id": "e33daa88-951a-49f4-88eb-bef4d40096cc",
      "name": "1st Merge",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 2,
      "position": [
        940,
        80
      ]
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "DateTStamp",
              "value": "={{$json[\"DateTStamp\"]}}"
            }
          ]
        },
        "options": {
          "dotNotation": true
        }
      },
      "name": "Select Next Appointment",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        540,
        340
      ],
      "executeOnce": true,
      "id": "fecf72af-1c75-49d6-bc4c-d83b9d1bd9f9"
    },
    {
      "parameters": {
        "value": "={{$json[\"AptDateTime\"]}}",
        "dataPropertyName": "AptDateTimeUTC",
        "custom": true,
        "options": {
          "toTimezone": "UTC"
        }
      },
      "id": "5f7d865b-1c3b-411a-83cd-ceb8ab8a968f",
      "name": "AptDate to UTC",
      "type": "n8n-nodes-base.dateTime",
      "typeVersion": 1,
      "position": [
        740,
        340
      ]
    }
  ],
  "connections": {
    "Start": {
      "main": [
        [
          {
            "node": "Test Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "Today",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "iCalendar": {
      "main": [
        [
          {
            "node": "2nd Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Test Data": {
      "main": [
        [
          {
            "node": "Today",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OD Get Patient appt by ID": {
      "main": [
        [
          {
            "node": "Sort by AptDateTime",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculate AptDateTimeEnd": {
      "main": [
        [
          {
            "node": "iCalendar",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Today": {
      "main": [
        [
          {
            "node": "OD Get Patient appt by ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sort by AptDateTime": {
      "main": [
        [
          {
            "node": "Select Next Appointment",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OD Get Patient Info by ID": {
      "main": [
        [
          {
            "node": "1st Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Format Apt Date": {
      "main": [
        [
          {
            "node": "1st Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2nd Merge": {
      "main": [
        [
          {
            "node": "Send Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1st Merge": {
      "main": [
        [
          {
            "node": "2nd Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Select Next Appointment": {
      "main": [
        [
          {
            "node": "AptDate to UTC",
            "type": "main",
            "index": 0
          },
          {
            "node": "Format Apt Date",
            "type": "main",
            "index": 0
          },
          {
            "node": "OD Get Patient Info by ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AptDate to UTC": {
      "main": [
        [
          {
            "node": "Calculate AptDateTimeEnd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
(Edit: 20221106-07: Corrected getDay() -> getDate(), startDate=Tomorrow)

Please ask.

Joerg

joergzastrau
Posts: 23
Joined: Sun Feb 27, 2022 2:53 am

Re: Program Link Triggered E-Mail for Next appointment using n8n

Post by joergzastrau » Tue Nov 15, 2022 10:21 am

Dear all,

more nodes have been added to the following cleaner version of the n8n workflow in order to post a note to the Open Dental Commlog. This requires API write permissions to the Comm group.

Edit 202211161621 (2x): Added Node to set Confirmation status to "Confirmed".

Joerg

Code: Select all

{
  "meta": {
    "instanceId": "c5bbe0e4dd0c2a71ee01ba0477f0fe876e4ef1ddb06022d07739fda528d4f9f1"
  },
  "nodes": [
    {
      "parameters": {},
      "name": "Start",
      "type": "n8n-nodes-base.start",
      "position": [
        -600,
        120
      ],
      "typeVersion": 1,
      "id": "e20309fb-c936-416b-8b1a-cfb12e904c3b"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "EmailAptConfirmation",
        "responseMode": "lastNode",
        "options": {}
      },
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -400,
        340
      ],
      "webhookId": "db437850-0e90-4eb7-b383-f8438ea1bd66",
      "typeVersion": 1,
      "id": "b3cd36ac-a553-4c10-a5e1-e4fcde5a018f",
      "notes": "Setup Program Link in Opendental to trigger.\n\nPath of File to open:\ncurl.exe\n\nOptional command line arguments:\n-X POST http://[n8n-ip]:5678/webhook/EmailAptConfirmation?PatNum=[PatNum]\n"
    },
    {
      "parameters": {
        "title": "Appointment Dr. Yang",
        "start": "={{$json[\"AptDateTimeUTC\"]}}",
        "end": "={{$json[\"AptDateTimeEndUTC\"]}}",
        "binaryPropertyName": "iCalEventData",
        "additionalFields": {
          "description": "=Appointment with {{$json[\"provAbbr\"]}}\n\nDr. Judith Yang, DMD MS \nOffice Address: Steinmetzstr. 1\n67655 Kaiserslautern\n\nTel: +49(0)631 3437309-0\nFax: +49(0)631 3437309-1\n\nEmail: info@american-orthodontics.com\nWeb: http://www.american-orthodontics.com"
        }
      },
      "id": "83eb5606-d1c1-4bab-bec2-122a3b6d57d7",
      "name": "iCalendar",
      "type": "n8n-nodes-base.iCal",
      "typeVersion": 1,
      "position": [
        -200,
        880
      ]
    },
    {
      "parameters": {
        "fromEmail": "American Orthodontist Dr. Yang <info@american-orthodontics.com>",
        "toEmail": "={{$json[\"Email\"]}}",
        "subject": "Next appointment with Dr. Yang",
        "html": "=<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n <head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n  <title>Demystifying Email Design</title>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>\n</head>\n</html>\n\n<body style=\"margin-left: 10px; padding: 0;\">\n<br>\nDear all,<br><br>\nwe have scheduled the next appointment for {{$json[\"FName\"]}} on {{$json[\"AptDateMonth\"]}} {{$json[\"AptDateDate\"]}} at {{$json[\"AptTimeHours\"]}}:{{$json[\"AptTimeMinutes\"]}}.<br>\n<br>\nWith best regards<br>\n<br>\nTeam American Orthodontist<br>\n<br><br>\n-- <br>\n\n\n<img src=\"data:image/png;base64,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\" />\n<br><br>\nDr. Judith Yang, DMD MS<br>\n Office Address: Steinmetzstr. 1<br>\n 67655 Kaiserslautern<br>\n Tel: +49(0)631 3437309-0<br>\n Fax: +49(0)631 3437309-1<br>\n Email: info@american-orthodontics.com<br>\n Web: http://www.american-orthodontics.com<br><br>\nTax-Reg.: 19/227/50453<br>\n<br>\n</body>",
        "attachments": "iCalEventData",
        "options": {}
      },
      "id": "3760f640-2e19-425f-b38a-1ed83c64262e",
      "name": "Send Email",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 1,
      "position": [
        200,
        860
      ],
      "credentials": {
        "smtp": {
          "id": "9",
          "name": "SMTP account"
        }
      }
    },
    {
      "parameters": {
        "functionCode": "return [{json:{\n\t\"headers\": {\n\t\t\"host\": \"192.168.1.60:5678\",\n\t\t\"user-agent\": \"curl/7.86.0\",\n\t\t\"accept\": \"*/*\"\n\t},\n\t\"params\": {\n\t},\n\t\"query\": {\n\t\t\"PatNum\": \"11\"\n\t},\n\t\t\"body\": {\n\t}\n  }\n}]\n"
      },
      "id": "c83f7363-b1e6-43ac-a27f-7ecdd96fb0f7",
      "name": "Test Data",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        -400,
        120
      ],
      "disabled": true,
      "notes": "Only Test parameter needed is PatNum"
    },
    {
      "parameters": {
        "authentication": "headerAuth",
        "url": "=http://{{$json[\"OD_API_IP_Port\"]}}/api/v1/appointments",
        "options": {
          "splitIntoItems": true
        },
        "queryParametersUi": {
          "parameter": [
            {
              "name": "PatNum",
              "value": "={{$json[\"query\"][\"PatNum\"]}}"
            },
            {
              "name": "dateStart",
              "value": "={{$json[\"dateStart\"]}}"
            }
          ]
        }
      },
      "name": "OD Get Patient appt by ID",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [
        200,
        340
      ],
      "alwaysOutputData": true,
      "notesInFlow": true,
      "id": "90d1c110-8942-495d-8f32-fbf9b48edb3f",
      "credentials": {
        "httpHeaderAuth": {
          "id": "5",
          "name": "Header Auth KL Office"
        }
      }
    },
    {
      "parameters": {
        "action": "calculate",
        "value": "={{$json[\"AptDateTimeUTC\"]}}",
        "duration": "={{$json[\"Pattern\"].length*5}}",
        "timeUnit": "minutes",
        "dataPropertyName": "AptDateTimeEndUTC",
        "options": {
          "fromFormat": ""
        }
      },
      "id": "0e79f2f9-57c3-48af-9a49-a6b4a097cb8e",
      "name": "Calculate AptDateTimeEnd",
      "type": "n8n-nodes-base.dateTime",
      "typeVersion": 1,
      "position": [
        -400,
        880
      ],
      "notes": "Appointment Length = No. of characters in \"Pattern\" times 5 minutes."
    },
    {
      "parameters": {
        "operation": "sort",
        "sortFieldsUi": {
          "sortField": [
            {
              "fieldName": "AptDateTime"
            }
          ]
        },
        "options": {}
      },
      "name": "Sort by AptDateTime",
      "type": "n8n-nodes-base.itemLists",
      "typeVersion": 1,
      "position": [
        400,
        340
      ],
      "id": "fd9ba9ef-11db-43a0-9769-cf7870296b43",
      "continueOnFail": true
    },
    {
      "parameters": {
        "authentication": "headerAuth",
        "url": "=http://{{$node[\"Set OD API IP and Port and Workflow Version\"].json[\"OD_API_IP_Port\"]}}/api/v1/patients/{{$json[\"PatNum\"]}}",
        "options": {
          "splitIntoItems": false
        }
      },
      "name": "OD Get Patient Info by ID",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [
        -600,
        700
      ],
      "alwaysOutputData": false,
      "id": "ac6d9c8b-4aea-4206-ad4a-7186d383c238",
      "credentials": {
        "httpHeaderAuth": {
          "id": "5",
          "name": "Header Auth KL Office"
        }
      }
    },
    {
      "parameters": {
        "functionCode": "const results = [];\n\n// keep these\nconst provAbbr = $json[\"provAbbr\"];\nconst AptNum = $json[\"AptNum\"];\n\nconst date = $json[\"AptDateTime\"];\nconst d = new Date(date);\n\nconst month = new Array();\nmonth[0] = \"January\";\nmonth[1] = \"February\";\nmonth[2] = \"March\";\nmonth[3] = \"April\";\nmonth[4] = \"May\";\nmonth[5] = \"June\";\nmonth[6] = \"July\";\nmonth[7] = \"August\";\nmonth[8] = \"September\";\nmonth[9] = \"October\";\nmonth[10] = \"November\";\nmonth[11] = \"December\";\n\nconst AptDateMonth = month[d.getMonth()];\nconst AptDateDate = d.getDate();\nconst AptDateYear = d.getFullYear();\nconst AptTimeHours = d.getHours();\nvar AptTimeMinutes = d.getMinutes();\n\nAptTimeMinutes = d.getMinutes() > 9 ? AptTimeMinutes : '0' + AptTimeMinutes;\n\nresults.push({json:{AptDateMonth, AptDateDate, AptDateYear, AptTimeHours, AptTimeMinutes, provAbbr, AptNum}});\n\nreturn results\n"
      },
      "id": "1db34d1a-9699-40fd-a68b-4d0f6759a4d9",
      "name": "Format Apt Date",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        -600,
        540
      ]
    },
    {
      "parameters": {
        "mode": "multiplex",
        "options": {}
      },
      "id": "247d402d-e72c-4521-9c19-5e42376ca9dd",
      "name": "2nd Merge",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 2,
      "position": [
        0,
        860
      ]
    },
    {
      "parameters": {
        "mode": "multiplex",
        "options": {}
      },
      "id": "e33daa88-951a-49f4-88eb-bef4d40096cc",
      "name": "1st Merge",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 2,
      "position": [
        -400,
        620
      ]
    },
    {
      "parameters": {
        "options": {
          "dotNotation": false
        }
      },
      "name": "Select Next Appointment",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        600,
        340
      ],
      "executeOnce": true,
      "id": "fecf72af-1c75-49d6-bc4c-d83b9d1bd9f9",
      "notes": "Get the topmost item from the list."
    },
    {
      "parameters": {
        "value": "={{$json[\"AptDateTime\"]}}",
        "dataPropertyName": "AptDateTimeUTC",
        "custom": true,
        "options": {
          "toTimezone": "UTC"
        }
      },
      "id": "5f7d865b-1c3b-411a-83cd-ceb8ab8a968f",
      "name": "AptDate to UTC",
      "type": "n8n-nodes-base.dateTime",
      "typeVersion": 1,
      "position": [
        -600,
        880
      ]
    },
    {
      "parameters": {
        "action": "=format",
        "value": "={{ new Date(new Date().getTime()+86400000)}}",
        "dataPropertyName": "dateStart",
        "toFormat": "YYYY-MM-DD",
        "options": {}
      },
      "name": "Tomorrow",
      "type": "n8n-nodes-base.dateTime",
      "typeVersion": 1,
      "position": [
        0,
        340
      ],
      "id": "58fb95db-5bd1-4a7b-8030-c3d825d1f336",
      "notes": "Add 86400000 milliseconds (24 hours) to current time and convert to local TZ in OD date format."
    },
    {
      "parameters": {
        "value": "={{new Date(new Date().getTime())}}",
        "dataPropertyName": "Now",
        "custom": true,
        "toFormat": "YYYY-MM-DD HH:mm:ss",
        "options": {
          "toTimezone": "Europe/Berlin"
        }
      },
      "name": "Now",
      "type": "n8n-nodes-base.dateTime",
      "typeVersion": 1,
      "position": [
        0,
        620
      ],
      "id": "ceae03fb-e608-490d-b535-89d08ed736b5",
      "notes": "OD Times in Local time Zone"
    },
    {
      "parameters": {
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "requestMethod": "PUT",
        "url": "=http://{{$node[\"Set OD API IP and Port and Workflow Version\"].json[\"OD_API_IP_Port\"]}}/api/v1/appointments/{{$json[\"AptNum\"]}}/Confirm",
        "options": {},
        "bodyParametersUi": {
          "parameter": [
            {
              "name": "confirmVal",
              "value": "Confirmed"
            }
          ]
        }
      },
      "id": "d7f98bb5-3802-4f64-ad49-3f24275d58cc",
      "name": "OD Set Confirmation Status",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        600,
        640
      ],
      "credentials": {
        "httpHeaderAuth": {
          "id": "5",
          "name": "Header Auth KL Office"
        }
      }
    },
    {
      "parameters": {
        "mode": "multiplex",
        "options": {}
      },
      "id": "f87534a1-dcab-4428-8d26-263ea1149458",
      "name": "3rd Merge",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 2,
      "position": [
        400,
        640
      ]
    },
    {
      "parameters": {
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "requestMethod": "POST",
        "url": "=http://{{$node[\"Set OD API IP and Port and Workflow Version\"].json[\"OD_API_IP_Port\"]}}/api/v1/commlogs",
        "options": {},
        "bodyParametersUi": {
          "parameter": [
            {
              "name": "PatNum",
              "value": "={{$json[\"PatNum\"]}}"
            },
            {
              "name": "commType",
              "value": "ApptRelated"
            },
            {
              "name": "CommDateTime",
              "value": "={{$json[\"Now\"]}}"
            },
            {
              "name": "Mode_",
              "value": "Email"
            },
            {
              "name": "SentOrReceived",
              "value": "Sent"
            },
            {
              "name": "Note",
              "value": "=Sent E-Mail confirmation for next appointment on {{$json[\"AptDateMonth\"]}} {{$json[\"AptDateDate\"]}} {{$json[\"AptDateYear\"]}} at {{$json[\"AptTimeHours\"]}}:{{$json[\"AptTimeMinutes\"]}}."
            }
          ]
        }
      },
      "id": "5ecdbb2a-598f-426e-86c8-6ec527294f52",
      "name": "OD Post Commlog Entry",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        600,
        860
      ],
      "credentials": {
        "httpHeaderAuth": {
          "id": "5",
          "name": "Header Auth KL Office"
        }
      }
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "OD_API_IP_Port",
              "value": "192.168.1.60:30223"
            },
            {
              "name": "Workflow Version",
              "value": "1.00"
            }
          ]
        },
        "options": {}
      },
      "id": "f76fd18b-d9f0-4e4b-8e34-7a686b9fac4d",
      "name": "Set OD API IP and Port and Workflow Version",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        -200,
        340
      ]
    }
  ],
  "connections": {
    "Start": {
      "main": [
        [
          {
            "node": "Test Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "Set OD API IP and Port and Workflow Version",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "iCalendar": {
      "main": [
        [
          {
            "node": "2nd Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Send Email": {
      "main": [
        [
          {
            "node": "3rd Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Test Data": {
      "main": [
        [
          {
            "node": "Set OD API IP and Port and Workflow Version",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OD Get Patient appt by ID": {
      "main": [
        [
          {
            "node": "Sort by AptDateTime",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculate AptDateTimeEnd": {
      "main": [
        [
          {
            "node": "iCalendar",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sort by AptDateTime": {
      "main": [
        [
          {
            "node": "Select Next Appointment",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OD Get Patient Info by ID": {
      "main": [
        [
          {
            "node": "1st Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Format Apt Date": {
      "main": [
        [
          {
            "node": "1st Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2nd Merge": {
      "main": [
        [
          {
            "node": "Send Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1st Merge": {
      "main": [
        [
          {
            "node": "2nd Merge",
            "type": "main",
            "index": 0
          },
          {
            "node": "Now",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Select Next Appointment": {
      "main": [
        [
          {
            "node": "AptDate to UTC",
            "type": "main",
            "index": 0
          },
          {
            "node": "Format Apt Date",
            "type": "main",
            "index": 0
          },
          {
            "node": "OD Get Patient Info by ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AptDate to UTC": {
      "main": [
        [
          {
            "node": "Calculate AptDateTimeEnd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tomorrow": {
      "main": [
        [
          {
            "node": "OD Get Patient appt by ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Now": {
      "main": [
        [
          {
            "node": "3rd Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3rd Merge": {
      "main": [
        [
          {
            "node": "OD Post Commlog Entry",
            "type": "main",
            "index": 0
          },
          {
            "node": "OD Set Confirmation Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set OD API IP and Port and Workflow Version": {
      "main": [
        [
          {
            "node": "Tomorrow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

joergzastrau
Posts: 23
Joined: Sun Feb 27, 2022 2:53 am

Re: Program Link Triggered E-Mail for Next appointment using n8n

Post by joergzastrau » Wed Nov 30, 2022 8:43 am

Dear all,

I have learned to include screenshots. After 1 month in operation I would say that 2/3 of mobile phones users are happy with the ical feature (screenshots on MAC in reverse order).

With best regards

Joerg
Attachments
Result on Mac to add event to local calendar
Result on Mac to add event to local calendar
OD_Appointment_Mac_Calendar_Screenshott.png (108.84 KiB) Viewed 2240 times
E-Mail after pressing the Button in OD
E-Mail after pressing the Button in OD
OD_Appointment_Email.png (66.64 KiB) Viewed 2240 times
Open Dental Trigger (Scrrenshot)
Open Dental Trigger (Scrrenshot)
OD_Appointment_Trigger.png (32.21 KiB) Viewed 2240 times

omar22
Posts: 60
Joined: Mon Dec 05, 2022 2:38 pm

Re: Program Link Triggered E-Mail for Next appointment using n8n

Post by omar22 » Thu Jan 05, 2023 9:58 am

Hi, I have a question regarding creating buttons on Open Dental UI, similar to the one in this post.

I'd like to create a button on the Open Dental task bar that can link to my external software. What is the best most compliant way to approach this?

Thank you!

SLeon
Posts: 476
Joined: Mon Mar 01, 2021 10:00 am

Re: Program Link Triggered E-Mail for Next appointment using n8n

Post by SLeon » Thu Jan 05, 2023 10:15 am

Good morning,

You can create a Program Link to place a button in the UI, like pictured above. Our manual has a lot of details for setup and implementation. I would recommend referencing Program Links for general information and Custom Bridges for creating your own program link.

omar22
Posts: 60
Joined: Mon Dec 05, 2022 2:38 pm

Re: Program Link Triggered E-Mail for Next appointment using n8n

Post by omar22 » Thu Jan 05, 2023 10:19 am

That sounds great, thank you for providing that information.

Jess
Posts: 17
Joined: Fri Jul 10, 2015 3:54 pm

Re: Program Link Triggered E-Mail for Next appointment using n8n

Post by Jess » Wed Sep 06, 2023 9:29 am

SLeon wrote:
Thu Jan 05, 2023 10:15 am
You can create a Program Link to place a button in the UI, like pictured above. Our manual has a lot of details for setup and implementation. I would recommend referencing Program Links for general information and Custom Bridges for creating your own program link.
Are there lists of the "many patient fields" that screen describes as available, for each module, or especially for the Account module? Thanks!

justine
Posts: 169
Joined: Tue Dec 28, 2021 7:59 am

Re: Program Link Triggered E-Mail for Next appointment using n8n

Post by justine » Wed Sep 06, 2023 9:46 am

Jess wrote:
Wed Sep 06, 2023 9:29 am
SLeon wrote:
Thu Jan 05, 2023 10:15 am
You can create a Program Link to place a button in the UI, like pictured above. Our manual has a lot of details for setup and implementation. I would recommend referencing Program Links for general information and Custom Bridges for creating your own program link.
Are there lists of the "many patient fields" that screen describes as available, for each module, or especially for the Account module? Thanks!
Good morning Jess,

Program link description is stored in the program table and the location of the button is stored in the toolbutitem table.

DerekR
Posts: 79
Joined: Wed Aug 31, 2022 1:13 pm

Re: Program Link Triggered E-Mail for Next appointment using n8n

Post by DerekR » Wed Sep 06, 2023 10:28 am

Clicking the "Replacements" button from the Program Link Output File window, will give you a list of all supported replacement fields. Please see https://opendental.com/manual/programli ... tfile.html for more information. Thanks!

Post Reply