Services

A complete guide to the Services module — creating and managing clinic services, pricing, scheduling rules, and department assignments.

Written By Dev010

Last updated 19 days ago

The Services module defines the treatments and procedures your clinic offers. Services are a core dependency across the platform — they are required for booking appointments and are linked to invoices for billing. Every appointment must have a service assigned.

Accessing the Module

Sidebar → Services

Direct URL:

https://yourdomain.com/dashboard/services

Who can access:

Action

Admin

Doctor

Receptionist

Nurse

View services

Create service

Edit service

Delete service

Only Admin accounts can create, edit, or delete services. All other roles have view-only access — they can see services when booking appointments or creating invoices but cannot modify them.

Services List

The main services page shows a complete list of all clinic services.

Each row displays:

  • Service name

  • Category

  • Department

  • Price

  • Duration

  • Max bookings per day

  • Status badge (active / inactive)

  • Action buttons (edit, delete)

Creating a Service

Click the Add Service button on the services list page. A dialog opens with the service creation form.

Required Fields

Field

Notes

Name

Service name (e.g. General Consultation, Teeth Cleaning)

Price

Cost of the service in your clinic's currency

Duration

Length of the service in minutes

Optional Fields

Classification:

Field

Notes

Category

Free text category (e.g. Consultation, Diagnostics, Surgery)

Department

Link to a clinic department

Scheduling Rules:

Field

Notes

Max Bookings Per Day

Maximum number of times this service can be booked in one day — default 20

Follow-up Required

Toggle — marks that a follow-up appointment is expected after this service

Prerequisites

Free text — conditions or tests required before this service

Special Instructions

Free text — preparation or instructions for the patient

Status:

Field

Notes

Active

Toggle — inactive services are hidden from appointment booking and invoices

Saving the Service

Click Save to create the service. It appears immediately in the services list and becomes available in the service dropdown when booking appointments.

Services must be active to appear in the appointment booking form and invoice creation form. Inactive services are preserved in the database but hidden from selection dropdowns.

Editing a Service

Click the Edit button on any service row. The edit form opens with all existing values pre-filled.

Update any fields and click Save. Changes take effect immediately — existing appointments and invoices linked to this service are not affected by price or duration changes.

Changing the price of a service does not retroactively update invoices that were already created with that service. Invoice amounts are fixed at the time of creation.

Deactivating a Service

If a service is no longer offered but has existing appointment or invoice history, deactivate it rather than deleting it.

Edit the service → toggle Active to off → Save.

Deactivated services:

  • Are hidden from appointment booking dropdowns

  • Are hidden from invoice creation dropdowns

  • Remain in the database and preserve all historical links

  • Can be reactivated at any time

Deleting a Service

Click the Delete option from the service row action menu.

A confirmation dialog appears before deletion.

⚠️ Deleting a service sets service_id to null on any linked appointments and invoices (ON DELETE SET NULL). The appointment and invoice records themselves are preserved but lose the service reference. Deactivate instead of delete when historical records exist.

Max Bookings Per Day

The Max Bookings Per Day field controls how many times a service can be booked on any single calendar day.

Value

Behavior

20 (default)

Up to 20 bookings per day

1

Only one booking per day (e.g. specialist procedure)

0

No limit enforced

This is useful for procedures that require significant preparation time or specialized equipment that limits how many can be performed per day.

The max bookings limit is enforced at the UI level during appointment booking. If you need hard enforcement, verify the limit server-side when creating appointments.

Follow-up Required

Toggling Follow-up Required on a service marks it as a service that typically requires a follow-up appointment after completion.

This is a documentation flag — CareNova does not automatically create follow-up appointments. It is visible to staff when reviewing the service and can inform scheduling workflows.

Service Categories

Categories are free-text labels used to group related services for easier navigation. Common category examples:

Clinic Type

Example Categories

General

Consultation, Diagnostics, Procedure, Vaccination

Dental

Cleaning, Restorative, Orthodontics, Surgery, Cosmetic

Ophthalmology

Eye Exam, Refractive, Surgical, Therapeutic

Categories are not a separate configuration table — they are typed directly on each service. Use consistent naming across services for clean organization.

Linking Services to Departments

Assigning a service to a department creates an organizational link that helps with filtering and financial reporting at the department level.

For example:

  • Dental Cleaning → Dental department

  • Blood Test → Laboratory department

  • Eye Exam → Ophthalmology department

Department assignment is optional but recommended for clinics with multiple departments.

Database Schema Reference

services

Column

Type

Description

id

uuid

Unique service ID

name

text

Service name

description

text

Service description

price

numeric

Service price

duration

integer

Duration in minutes

department_id

uuid

FK → departments (set null on delete)

is_active

integer

1 = active, 0 = inactive

status

text

active / inactive text

category

varchar

Service category label

max_bookings_per_day

integer

Daily booking limit — default 20

follow_up_required

boolean

Follow-up flag

prerequisites

text

Required preconditions

special_instructions

text

Patient preparation notes

created_at

timestamptz

Creation timestamp

updated_at

timestamptz

Last updated timestamp

An index is set on name for fast search performance.

Relationship to Other Modules

Module

Relationship

Appointments

Every appointment references one service

Invoices

Invoices can reference a service for billing

Departments

Services can be assigned to a department

Workflow Examples

Setting up services for a new dental clinic:

  1. Sidebar → Services → Add Service

  2. Create: General Dental Consultation

    • Price: 50.00

    • Duration: 30 minutes

    • Category: Consultation

    • Department: Dental

  3. Create: Teeth Cleaning

    • Price: 80.00

    • Duration: 45 minutes

    • Category: Cleaning

    • Max bookings per day: 8

  4. Create: Tooth Extraction

    • Price: 120.00

    • Duration: 60 minutes

    • Category: Surgery

    • Max bookings per day: 4

    • Follow-up Required: on

    • Special Instructions: "Avoid eating 2 hours before"

  5. Services are now available when booking appointments

Temporarily suspending a service:

  1. Sidebar → Services

  2. Find the service → Edit

  3. Toggle Active to off → Save

  4. Service disappears from appointment and invoice dropdowns

  5. Re-enable when ready to offer the service again

Updating a service price:

  1. Sidebar → Services

  2. Find the service → Edit

  3. Update the Price field → Save

  4. New price applies to all future invoices — existing invoices are unchanged

Troubleshooting

Service not appearing in appointment booking dropdown:

  • Confirm the service is set to Active — inactive services are hidden from dropdowns

  • Hard refresh the browser after activating a service

  • Confirm at least one service exists — the dropdown is empty if no services are configured

Cannot create or edit services:

  • Service management is restricted to Admin role only

  • Doctor, Receptionist, and Nurse accounts see services but cannot modify them

Service shows wrong price on new invoices:

  • Confirm the service price was saved correctly — check Supabase → Table Editor → services

  • Invoice amounts are set at creation time — editing the service price after an invoice is created does not change the invoice amount

Max bookings limit not working:

  • The limit is enforced at the UI level during booking

  • Check that the value is set correctly on the service record

  • If you need strict enforcement, verify the count server-side in your booking workflow

Next Step

Continue to the Departments module guide to learn how to organize your clinic into departments and assign staff, patients, and services to them.