Rhapsody Phone

Overview

This was a prototype project to investigate building a communication system for Rhapsody Vet practice management software (PIMS) with GoTo Connect as the communications provider. This prototype was really an opportunity to try out VueJS 3 with Vuetify 3 with a more meaningful purpose.

This project had several goals:

  1. Link incoming calls and missed calls to clients with quick context information to improve receptionist efficiency.
  2. Provide a single UI for sending and receiving SMS messages sent to the primary practice number. Rhapsody has built-in SMS support but it utilizes a separate phone number for outbound and inbound messages. With this solution, customers could text the main practice number and receptionists could see all inbound and outbound text messages in a single location and categorize them for quicker processing by practice staff.

This project was started when my wife was in the process of building a Veterinary hospital utilizing Rhapsody as the PIMS. This project was ultimately abandoned because Rhapsody's GraphQL APIs at the time did not provide the ability enough capabilities to support the end goals and a different phone provider was ultimately used instead of GoTo Connect.

UI

Incoming Calls

Screenshot 2024-09-08 at 4 37 05 PM

Provide a quick view of incoming calls to link them to known clients with information about their pets, quick links to their records in Rhapsody, upcoming and previous appointments, and current balance.

Messaging

Screenshot 2024-09-08 at 4 37 21 PM

Support for SMS messaging with attachments and labeling to allow handing off to other staff departments.

Client Info

Screenshot 2024-09-08 at 4 37 35 PM

Client info provides quick summary of client with links into the client's records in Rhapsody.

Labeling

Screenshot 2024-09-08 at 4 01 55 PM

Labeling would allow categorizing text messages when handing them off to other department staff to quickly find which messages were medical questions or prescription refill requests.

Search

Screenshot 2024-09-08 at 4 41 08 PM

Typeahead search utilized Typesense to index the Firestore records to provide a quick search with formatted search results for messages and filtering on specific labels.

Development

Prerequisites

  • NodeJS 16

Setup

Install project dependencies from the root of the workspace:

npm install

Build

To build the entire project, from the root of the workspace, run:

npm run build

Running

The easiest way to run the project is to run all of the firebase emulators after build:

npm run emulators

Once the emulators are started, the UI can be accessed at http://localhost:5000.