Skip to main content
Version: 3.0

Service Request

A service request is an order to do something for a patient — run a lab test, take an X-ray, book a counselling session, perform a procedure. It turns a clinician's "please do this" into a tracked item that another team can pick up and that later results can attach to.

What it represents

In Care's FHIR-aligned model, a service request maps to the ServiceRequest resource. It captures:

  • What is being asked for — a coded service or procedure, an optional body site, and a free-text title
  • Why and how — the category of work, the priority, and any notes or patient instructions
  • Where it sits in care — the patient and encounter it was raised in, the facility, and optionally the service, locations, or clinician fulfilling it
  • Its standing — an intent (firm order or mere proposal?) and a lifecycle status everyone can see

The key thing to hold onto: a service request is the order, not the result. The specimen that gets collected, the diagnostic report that comes back, the observations that get recorded — those are separate records that each point back to the originating request. One request can spawn several of them.

Intent — how binding is it?

Every request carries an intent that says how committed the order is, so the same record can represent anything from a tentative idea to a confirmed instruction: a proposal is a suggestion someone has put forward; a plan is part of an agreed plan of care; a directive is a standing instruction; an order is a firm request to actually carry the work out. Intent answers "is this real yet?" — distinct from status, which answers "where has it got to?"

Category and priority

Two coded fields route and rank the work. Category decides which team picks it up — laboratory, imaging, counselling, surgical_procedure, or education. Priority sets how soon — routine, urgent, asap, or stat. Together they let a busy department triage a queue of requests without reading every one in full.

Lifecycle

A request always sits in exactly one status — there is deliberately no "unknown". The active states are on the left; the four on the right are terminal.

draft → active → on_hold → completed
↘ ended / revoked / entered_in_error
  • draft — being written, not yet actionable
  • active — live and ready to be worked on
  • on_hold — paused for now, expected to resume
  • completed — the work has been fulfilled
  • ended — stopped before completion, with no intent to resume
  • revoked — cancelled or withdrawn
  • entered_in_error — created by mistake; kept for audit, treated as void

How it connects

A service request is the hub that ties an order to the rest of the record:

  • It is always raised inside an encounter, and the patient is inherited from that encounter — you never set the patient directly.
  • It can be created from an activity definition, a reusable template that supplies the category and the catalogue of valid service codes.
  • Once work begins, a specimen may be collected against it, and a diagnostic report and its observations are produced for it — all linking back to this request.
  • It can name the healthcare service that fulfils it and the locations within the facility where it applies, plus the requester who placed it.

Permissions

Access to service requests is governed by these facility-scoped permissions.

PermissionDescriptionSystem Roles
can_write_service_requestCreate, update, complete, cancel, and apply an activity definition to service requests within a facilityFacility Admin, Admin, Doctor, Nurse
can_read_service_requestList and view service requests within a facilityFacility Admin, Administrator, Admin, Staff, Doctor, Nurse, Volunteer, Pharmacist
can_write_specimenCreate a specimen against a service requestFacility Admin, Admin, Doctor, Nurse

Roles are granted through a user's facility, organization, or patient memberships, and permissions cascade down the organization tree — a role given high in the tree applies to the facilities beneath it.

FHIR reference

This concept aligns with the FHIR ServiceRequest resource. Care implements a minimal, opinionated subset and uses snake_case values for status, intent, and priority rather than FHIR's hyphenated codes.