Palamond Docs
Resource Modeling

Patient and Practitioner

The signed-in patient's identity and demographics, and read-only practitioners.

People on Palamond are modeled with two standard FHIR resources: Patient for the person receiving care, and Practitioner for the clinicians delivering it. On the v1 API you are always the signed-in patient: GET /v1/me returns your Patient, you can update your own demographics, and practitioners are read-only reference data.

Patient

A Patient holds identity and demographics. The fields you will read and update most are name, birthDate, gender, telecom, and address.

FieldPurpose
nameLegal name (family, given[]). Use one HumanName per name in use.
birthDateDate of birth, YYYY-MM-DD.
telecomPhone and email. Store phone numbers in E.164 (+15555550123).
addressHome address. country is required (see below).
identifierExternal keys (MRN, your own system id).

Who am I

GET /v1/me is the canonical session check and returns the signed-in Patient:

import type { Patient } from '@palamond/sdk/fhir';

const me: Patient = await palamond.patient.profile();

Updating demographics

The patient's own Patient resource is one of only two things an app writes on the record plane (the other is QuestionnaireResponse). Update it in place:

Update the patient's demographics
await palamond.updateResource<Patient>({
  ...me,
  telecom: [
    { system: 'phone', value: '+15555550123', use: 'mobile' },
    { system: 'email', value: '[email protected]' },
  ],
  address: [
    {
      line: ['500 Market St'],
      city: 'San Francisco',
      state: 'CA',
      postalCode: '94105',
      country: 'US', // ISO 3166-1 alpha-2, required
    },
  ],
});

Country is required and stored as ISO alpha-2

Palamond operates across jurisdictions, so Patient.address.country is a required field, validated by the platform patient profile. Store the ISO 3166-1 alpha-2 code (for example US, GB, NL), not a free-text country name.

A write that omits address.country, or stores a free-text name like "United States" instead of US, will be rejected or will break country-derived features. Derive the display name and flag from the code at render time (the browser's Intl.DisplayNames does this) rather than storing them.

The country code also matters downstream: order fulfillment and reference-range selection read the patient's region from it. Keeping it a clean alpha-2 code is what makes those features work.

Practitioner is read-only

A Practitioner is a clinician's identity: name, credentials, contact. Your app reads practitioners as reference data, usually by following a reference from an appointment participant or a care team member:

Resolve a practitioner from an appointment
import type { Practitioner } from '@palamond/sdk/fhir';

const practitioner = await palamond.readReference<Practitioner>(participant.actor);
// practitioner.name, practitioner.qualification, ...

Roles, organization membership, and working hours are managed by the organization; the API never exposes them for editing. When you need a clinician's open time, ask GET /v1/availability rather than deriving it yourself. See Appointments for how availability turns into bookable slots.

Any other write on the record plane (a new Patient, any Practitioner change) answers 405 method_not_allowed, and the error names the endpoint that owns the change. See Errors and Limits.

On this page