> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nevatal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Register a Finding

> Chart a clinical finding on a tooth or tooth surface, with treatment plan

Registers one finding drawn from the catalog. The backend enforces the clinical
rules: one whole-tooth finding per tooth and one per surface (registering another
replaces it), `sano` (healthy) is mutually exclusive with any other finding on the
tooth, and the finding must be compatible with the tooth's dentition. Replaced
findings are reported in `replacedFindingIds`.

Every mutation response (create, update, delete) also reports the resulting chart
state — `version` and `signature` — so the client can reflect a signature
invalidation without refetching the chart.

If no `plannedItems` are sent, the finding is pre-filled with the catalog's
suggested treatment. Requires the `odontogram` feature flag and EMR write access.

## Path Parameters

<ParamField path="patientId" type="string" required>The patient whose chart to edit.</ParamField>

## Body Parameters

<ParamField body="toothFdi" type="number" required>Real FDI tooth number (11–48 permanent, 51–85 temporary).</ParamField>
<ParamField body="catalogFindingId" type="string" required>A finding `id` from the catalog.</ParamField>
<ParamField body="surface" type="string">Required for surface-scoped findings: `occlusal` | `mesial` | `distal` | `vestibular` | `palatal`.</ParamField>
<ParamField body="plannedItems" type="array">Optional. Each item is `custom` (with `name`) or `clinical_procedure` (with `clinicalProcedureId`), plus `quantity` and `unitPrice`.</ParamField>
<ParamField body="notes" type="string">Optional free-text note (max 1000 chars).</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.nevatal.com/api/v1/patients/pat_abc123/odontogram/findings" \
    -H "Authorization: Bearer nvtl_your_api_key" \
    -H "Content-Type: application/json" \
    -d '{
      "toothFdi": 36,
      "catalogFindingId": "caries",
      "surface": "occlusal"
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 201 theme={null}
  {
    "success": true,
    "data": {
      "finding": {
        "id": "fnd_001",
        "toothFdi": 36,
        "scope": "surface",
        "surface": "occlusal",
        "catalogFindingId": "caries",
        "plannedItems": [
          { "id": "pi_1", "type": "custom", "name": "Resina compuesta", "quantity": 1, "unitPrice": 0, "subtotal": 0 }
        ],
        "subtotal": 0,
        "evolution": "pending"
      },
      "replacedFindingIds": [],
      "estimate": { "findingCount": 1, "total": 0, "paid": 0, "due": 0 },
      "version": 4,
      "signature": { "status": "none" }
    },
    "message": "Hallazgo registrado"
  }
  ```
</ResponseExample>
