BIt is really easy to integrate web bookings using one of our pre-built solutions. You can even get Physiodiary to collect a deposit or full payment at the time of booking.
Simply let us know how you would like it to work using and we will do the work for you. All you will need to do is to add the link we supply, to your website. There are lots of configuration options so it's almost certain we will be able to get it to work just the way you want. If you need a more bespoke configuration you should consider using our API.
There is no charge for this service (it's all included in your monthly subscription) but if you enagage a web designer to do the work for you they will probably charge a fee.
Click here to get started
Physiodiary provides a powerful API which you can call from your own website to allow patients to make bookings directly into your diary. We should point out at this stage that this form of tight integration will require a reasonable amount of programming knowledge and may be best left to your web designer. We will be unable to do the required work on your website for you. Also, this type of integration is not for everyone - you may feel that you loose some elements of control over your appointments. There are other methods available which still allow patients to request appointment and cancellation but allow you to maintain full control over them. Please contact us for further details.
Click here to see a real life example of our API in use (many thanks to ARC Physiotherapy)
All the requests should be sent to the url supplied by us which will look something like:
https://api456.physiodiary.co.uk:1234/api/request
Your requests should be formatted as shown below:
To get a list of Members of Staff:
{
"action" : "staffList",
"apiKey" : "Your-API-Key"
}
This would return something like:
{"staff":[{"id":42228,"name":"John"},{"id":42230,"name":"Anna"},{"id":42229,"name":"Jayne"},{"id":42233,"name":"Chris"},{"id":42227,"name":"Demo User"}]}
To get a list of Sections (rooms):
{
"action" : "sectionList",
"apiKey" : "Your-API-Key"
}
This would return something like:
{"sections":[{"id":7322,"name":"Treatment Room 1"},{"id":7323,"name":"Treatment Room 2"},{"id":7324,"name":"Treatment Room 3"}]}
To get a list of free appointments for a given future period:
{
"action" : "freeList",
"apiKey" : "Your-API-Key",
"date" : "20171007",
"numDays" : 2,
"sectionId" : 1245,
"staffId" : 43987
}
Note: the 'date' in this instance is the date you would like the system to start looking for appointments from - the 'numDays' is the maximum period to return free appointments for (this can be up to 90 days) beyond the 'date' so in the example shown it would return any free appointments for 07/10/2017 and 08/10/2017.
This would return something like:
{"slotLength":45,"free":[{"date":"20171007","times":["1415","1500","1715","1800","1845","1930","1415","1500","1715","1800","1845","1930"]}],"staffId":43,"staffName":"Anna","sectionId":2,"sectionName":"Treatment Room 2"}
To book an appointment:
{
"action" : "book",
"apiKey" : "Your-API-Key",
"date" : "20171007",
"time" : "0915",
"sectionId" : 1245,
"staffId" : 43987,
"name": "Fred Smith",
"phone" : "123456",
"email" : "fred@smith.co.uk",
"desc" : "Pain in back"
}
This will return either:
{"result":"Confirmed","date":"20171007","time":"0745","duration":45,"section":"Treatment Room 2","staff":"Anna"}
or
{"errors":[{"error":12,"fieldName":"booking","message":"Date/time/section is unavailable."}],"timestamp":"Oct 7, 2017 3:25:07 PM","numErrors":1,"action":"book"}
Error handling (generally):
When an error has occurred (ie missing fields etc) a JSON string containing the error/s will be returned rather than the expected message: something like:
{"errors":[{"error":4,"fieldName":"staffId","message":"Is zero or negative."},{"error":8,"fieldName":"name","message":"Must not be empty"},{"error":9,"fieldName":"phone","message":"Must not be empty"}],"timestamp":"Oct 7, 2017 3:28:32 PM","numErrors":3,"action":"book"}
The exception to this is where the request comes from an unexpected IP Address or the API key is not valid. It that case the system will just return a 404.
Normal error numbers will be one of the following:
NO_ERROR = 0;
INVALID_ACTION = 1;
INVALID_API_KEY = 2;
INVALID_SECTION_ID = 3;
INVALID_STAFF_ID = 4;
INVALID_NUM_DAYS = 5;
INVALID_DATE = 6;
INVALID_TIME = 7;
INVALID_NAME = 8;
INVALID_PHONE = 9;
INVALID_EMAIL = 10;
INVALID_DESCRIPTION = 11;
ALREADY_BOOKED = 12;
UNKNOWN_ERROR = 13;