0.1.4 - draft

Use Cases

This section explains what you can do with the API described by this IG. In the current version the API is supposed only to be used for one-way synchonization. Therefor you can export data from your system to Naboto, but not the other way around. In the future the API is likely to be extended to also provide GET endpoints and allow synchronization of data from Naboto to your AIS/KIS (from here on called your system).

Patients

With this API patients can be created and updated in Naboto using the Naboto Patient Profile data structure. Please note that each patient is required to have either an email address or a mobile number (see Patient.telecom). This is necessary because Patients will receive messages containing links for joining video calls.

Patient-URL: [base-url]/patient

Creating a new Patient

For creating a new patient send a POST request to the Patient-URL containing a valid NabotoPatient JSON object (see NabotoPatientExample).

Updating a Patient

For updating an existing Patient send a PUT request to the Patient-URL containing a valid NabotoPatient JSON object (see NabotoPatientExample).

Whenever a Patient which was created by your software through this API is updated in your system, those changes should also be applied to the patient in the Naboto System, if any of the relevant data (the fields from NabotoPatient) has changed. Patients created through the API can’t be edited inside the Naboto GUI in order to prevent conflicting data.

Appointments

With this API Appointments can be created and updated in Naboto using the Naboto Appointment Profile data structure.

Note: Currently only video call Appointments can be created in Visit-e.

Appointment-URL: [base-url]/appointment

Creating a new Appointment

For creating a new Appointment send a POST request to the Appointment-URL containing a valid NabotoAppointment JSON object (see NabotoAppointmentExample). Only appointments that already have been accepted by their participants should be synchronized to our server.

Updating an Appointment

For updating an existing Appointment send a PUT request to the Appointment-URL containing a valid NabotoAppointment JSON object (see NabotoAppointmentExample).

Whenever an Appointment which was created by your software through this API is updated in your system, those changes should also be applied to the appointment in the Naboto System, if any of the relevant data (the fields from NabotoAppointment) has changed. Appointments created through the API can’t be edited inside the Naboto GUI in order to prevent conflicting data. Naboto periodically simulates the expected start times of Appointments for the entire current day and communicates delays to Patients. It is important that changes in the status of an Appointment are updated in Naboto as soon as they occur in your system.

Appointment with video call

If you want to create an Appointment that is supposed to be conducted as a video call, you need to use the VirtualServiceContactDetail extension. If the extension is present on any of the participants, the appointment is concidered to take place as a video call. The attributes url and sessionKey are generated by the server and therefor ignored during create and update operations.

Example VirtualServiceContactDetail for creating an Appointment for a video consultation:

{
    "extension" : [
    {
        "extension" : [
        {
            "url" : "channelType",
            "valueCoding" : {
            "system" : "http://fhir.naboto.com/4.0.1/NabotoProfiles/CodeSystem/naboto-vidcall-channel-type",
            "code" : "visit-e"
            }
        }
        ],
        "url" : "http://hl7.at/fhir/NABOTO/R4/StructureDefinition/virtual-service-contact-detail"
    }
    ],
}

Example VirtualServiceContactDetail for with automatically assigned URL for video consultation:


{
    "extension" : [
    {
        "extension" : [
        {
            "url" : "channelType",
            "valueCoding" : {
            "system" : "http://fhir.naboto.com/4.0.1/NabotoProfiles/CodeSystem/naboto-vidcall-channel-type",
            "code" : "visit-e"
            }
        },
        {
            "url" : "address",
            "valueUrl" : "https://patient.visit-e.at/1234567890"
        },
        {
            "url" : "sessionKey",
            "valueString" : "1234567890"
        }
        ],
        "url" : "http://hl7.at/fhir/NABOTO/R4/StructureDefinition/virtual-service-contact-detail"
    }
    ]
}

Please be aware that each participant is assigned a personal address and sessionKey. They serve as access keys for joining the video calls and should be protected in your application accordingly.

Automated messages for appointments

The server automatically creates messages for the participating Patient and Practitioner (if the Practitioner enabled this in their account settings). For the patient the messages are sent either as Emails or SMS depending on which ContactPoint is present for the Patient. The following types of messages are sent to Patients:

  • Appointment confirmed: A confirmation sent when Appointment was booked successfully.
  • Appointment postponed: A confirmation is sent when Appointment was postponed successfully.
  • Appointment reminder: A reminder typically sent to the Patient 24 hours before the Appointment is scheduled to start.
  • Check-in invitation: A short term reminder that the Appointment is about to start soon. Typically sent 15 minutes before the Appointment actually starts.

Handling ids between systems

For inter-service identification of entities (e.g. patient, appointment) an identifier containing the id of the entity in your system should be used.

Example identifier: An identifier that refers to a patient with id 12345 on a fictional system

{
    "use" : "official",
    "type" : {
    "coding" : [
        {
        "system" : "http://terminology.hl7.org/CodeSystem/v2-0203",
        "code" : "PI",
        "display" : "Patient internal identifier"
        }
    ]
    },
    "system" : "https://your-system.xy/Patients",
    "value" : "12345",
    "assigner" : {
        "display" : "Ein GDA in Österreich"
    }
}

The id attribute for the scope of this API refers to the id of an entity assigned to it by the Naboto system. For creating a new entity it should not be present in the request object, since the entity doesn’t exist in the Naboto database before creation. The response will contain an automatically assigned id, which should be persisted in your system so you can later reference the same entity in an update operation.

When updating an entity the id attribute must be present in the request object.