discharge
One completed discharge report snapshot from a therapy discipline — sourced from
rosetta-app's product database. Same shape as admission; kept as a
separate resource type since the two forms are expected to diverge independently.
Fields
| Field | Type | Required | Description |
|---|---|---|---|
identifiers | Identifier[] | yes (≥1) | Business identifiers for this discharge snapshot. |
patientRef | SourceRef | yes | The patient this discharge report was completed for. |
discipline | string | yes | The therapy discipline, e.g. occupational-therapy. |
capturedAt | IsoDatetime | yes | When the discharge report was captured. |
completedAt | IsoDatetime | no | When the discharge report was completed, if later than capture. |
formData | object | yes | The full discharge report payload, at full fidelity (see below). |
formData is a free-form JSON object — its shape is owned by the source discipline's
form, not fixed by this contract. Values may be scalars (string/number/boolean), nested
objects, or arrays of either.
Example payload
{
"identifiers": [{ "system": "urn:rosetta-app:discharge", "value": "dis-7001" }],
"patientRef": {
"sourceSystem": "rosetta-app",
"resourceType": "patient",
"sourceId": "pat-1"
},
"discipline": "occupational-therapy",
"capturedAt": "2026-07-14T09:00:00.000Z",
"completedAt": "2026-07-14T09:15:00.000Z",
"formData": {
"outcome": "goals-met"
}
}
As a change-feed event
{
"sequence": 202,
"resourceType": "discharge",
"canonicalId": "3c6d9e1a-5d8f-4b2c-9e3d-6d9c2f5a8b1a",
"operation": "create",
"version": 1,
"occurredAt": "2026-07-14T09:15:05.000Z",
"orgSlug": "default",
"record": {
"identifiers": [{ "system": "urn:rosetta-app:discharge", "value": "dis-7001" }],
"patientRef": {
"sourceSystem": "rosetta-app",
"resourceType": "patient",
"sourceId": "pat-1"
},
"discipline": "occupational-therapy",
"capturedAt": "2026-07-14T09:00:00.000Z",
"completedAt": "2026-07-14T09:15:00.000Z",
"formData": {
"outcome": "goals-met"
}
}
}
From the Records API
curl -H "Authorization: Bearer $ROSETTA_SYNC_TOKEN" \
"https://sync.example.com/api/v1/records/discharge/3c6d9e1a-5d8f-4b2c-9e3d-6d9c2f5a8b1a"
{
"id": "3c6d9e1a-5d8f-4b2c-9e3d-6d9c2f5a8b1a",
"resourceType": "discharge",
"version": 1,
"payload": {
"identifiers": [{ "system": "urn:rosetta-app:discharge", "value": "dis-7001" }],
"patientRef": {
"sourceSystem": "rosetta-app",
"resourceType": "patient",
"sourceId": "pat-1"
},
"discipline": "occupational-therapy",
"capturedAt": "2026-07-14T09:00:00.000Z",
"completedAt": "2026-07-14T09:15:00.000Z",
"formData": {
"outcome": "goals-met"
}
},
"updatedAt": "2026-07-14T09:15:05.000Z",
"orgSlug": "default",
"identifiers": [{ "system": "urn:rosetta-app:discharge", "value": "dis-7001" }]
}
Consumption notes
- One record per completed discharge report — a patient discharged and later
re-admitted to the same discipline gets a new
dischargerecord on the next discharge, not an update to the earlier one. formDatais intentionally schema-free at this contract's level: validate/parse it according to the discipline's own form definition, not this document.patientRefis a source reference; correlate it to the canonicalpatientwhoseidentifierscontain the matching business identifier.- The (patient, discipline) case's actual stay dates (admission/discharge dates) live
on the
encounterrecord, not here — this record is the discharge report, not the discharge event.