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.
| Field | Purpose |
|---|---|
name | Legal name (family, given[]). Use one HumanName per name in use. |
birthDate | Date of birth, YYYY-MM-DD. |
telecom | Phone and email. Store phone numbers in E.164 (+15555550123). |
address | Home address. country is required (see below). |
identifier | External 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:
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:
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.