---
title: "Records a sign-off. 409 `INSTRUCTIONS_CHANGED` when the instructions were edited after the screen showed them (the request carries a fingerprint of the text shown), and 409 `DISCLAIMERS_CHANGED` with the live blocks when the client was shown a stale set of notices. The document row is locked while checking and writing, so an edit can't land between the check and the sign-off."
method: POST
path: "/discharge-documents/{documentId}/sign-off"
tags: ["DischargeSignOff"]
---

# Records a sign-off. 409 \`INSTRUCTIONS_CHANGED\` when the instructions were edited after the screen showed them (the request carries a fingerprint of the text shown), and 409 \`DISCLAIMERS_CHANGED\` with the live blocks when the client was shown a stale set of notices. The document row is locked while checking and writing, so an edit can't land between the check and the sign-off.

`POST /discharge-documents/{documentId}/sign-off`

## Request

- Base URL: `https://api.clinicos.vet/backend/business`
- URL: `https://api.clinicos.vet/backend/business/discharge-documents/{documentId}/sign-off`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/docs/discharge-documents/:documentId/sign-off/post.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `documentId` string, required

## Request body

- RecordDischargeSignOffRequest: The client's discharge sign-off, taken on a clinic device (ITE-1321).
  - `instructionsAcknowledged` boolean: The client confirmed they received and understand the instructions.
  - `instructionsHash` string, nullable: SHA-256 (hex) of the instructions as shown to the client: the text with CRLF as LF and edge whitespace trimmed. The sign-off is refused if the stored instructions differ, so a signature never covers text the client didn't see.
  - `signedName` string, nullable
  - `signatureData` string, nullable: The drawn signature, a PNG data URL.
  - `disclaimerVersionIds` string[], nullable: The Discharge block versions the client was shown (required ones ticked).

## Response `200`

OK

- DischargeSignOffStatusDto: A visit's discharge sign-off state (ITE-1321), for the Discharge tab.
  - `requiresSignOff` boolean: The clinic has a Discharge block the client must acknowledge right now.
  - `signOff` DischargeSignOffDto
    - `id` string
    - `signedName` string
    - `signedAt` string, date-time
    - `isCurrent` boolean: False once the instructions have been edited since the client signed.
    - `acknowledgements` DisclaimerAcknowledgementDto[]
      - `id` string
      - `disclaimerId` string
      - `disclaimerVersionId` string
      - `versionNumber` union
        - integer
        - string, int32
      - `title` string
      - `body` string
      - `contentHash` string
      - `requiredAcknowledgement` boolean
      - `signedName` string, nullable
      - `createdAt` string, date-time

## Changes

- **2026-10-21** `85ee96c0bb96`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/changes/discharge-documents/:documentId/sign-off/post.md)

---

[API](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1.md) - [All operations](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/revisions/099cf36186e0?raw)
