---
title: "Correct a patient's details"
description: "Change only the fields named in the call; every other field keeps its stored value (gender identity and sexual orientation included). The change is verified by a fresh read before it is answered. PATIENT_NOT_FOUND: SIIPS has no such patient. PATIENT_NOT_SAVED: SIIPS answered but the fresh read did not show the change. A correction whose outcome is unknown answers OUTCOME_UNKNOWN and is never repeated automatically.\n\n- **Scope:** `visoft:patients:write`\n- **Credentials:** an API key, a client-credentials token or a person's access token\n- **Effect:** writes; not idempotent: check the outcome before you retry\n- **Limits:** request body up to 64 KB, response up to 1 MB\n- **CLI:** `arbol visoft patients correct` · **MCP tool:** `visoft_patients_correct`"
---

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

Path: Visoft API › Patients

`POST /v1/visoft/patients/correct`

Change only the fields named in the call; every other field keeps its stored value (gender identity and sexual orientation included). The change is verified by a fresh read before it is answered. PATIENT_NOT_FOUND: SIIPS has no such patient. PATIENT_NOT_SAVED: SIIPS answered but the fresh read did not show the change. A correction whose outcome is unknown answers OUTCOME_UNKNOWN and is never repeated automatically.

- **Scope:** `visoft:patients:write`
- **Credentials:** an API key, a client-credentials token or a person's access token
- **Effect:** writes; not idempotent: check the outcome before you retry
- **Limits:** request body up to 64 KB, response up to 1 MB
- **CLI:** `arbol visoft patients correct` · **MCP tool:** `visoft_patients_correct`

## Authentication

Requires one of the following:

- `arbolHuman`, oauth2, scopes: `visoft:patients:write`
- `arbolMachine`, oauth2, scopes: `visoft:patients:write`
- `arbolApiKey`, http, header `Authorization`

## Request body

_Required._

- `documentNumber` (`visoft.patients.correct.documentNumber`; string, required) — The patient's document number: letters and digits only, without dots, spaces or hyphens.
  - pattern `^[A-Za-z0-9]{1,20}$`
- `connectionId` (`visoft.patients.correct.connectionId`; string, optional) — The connection to run on. Optional when the organization has one Visoft connection; required when it has several. Another organization's connection is CONNECTION_NOT_FOUND.
  - minLength 5; maxLength 68; pattern `^con_[0-9A-Za-z]+$`
- `agencyCode` (`visoft.patients.correct.agencyCode`; string, optional) — One of the clinic's cost centres, as visoft.clinic.get lists them. Optional when the clinic has a default one.
  - pattern `^\d{3}$`
- `firstName1` (`visoft.patients.correct.firstName1`; string, optional) — First given name.
  - maxLength 60
- `firstName2` (`visoft.patients.correct.firstName2`; string, optional) — Second given name.
  - maxLength 60
- `lastName1` (`visoft.patients.correct.lastName1`; string, optional) — First surname.
  - maxLength 60
- `lastName2` (`visoft.patients.correct.lastName2`; string, optional) — Second surname.
  - maxLength 60
- `phoneMobile` (`visoft.patients.correct.phoneMobile`; string, optional) — Mobile phone.
  - maxLength 30
- `phoneOffice` (`visoft.patients.correct.phoneOffice`; string, optional) — Office phone.
  - maxLength 30
- `email` (`visoft.patients.correct.email`; string, optional) — Email address.
  - maxLength 120
- `address` (`visoft.patients.correct.address`; string, optional) — Home address.
  - maxLength 200
- `birthDate` (`visoft.patients.correct.birthDate`; string, optional) — Birth date, YYYY-MM-DD.
  - pattern `^\d{4}-\d{2}-\d{2}$`
- `sex` (`visoft.patients.correct.sex`; string, optional) — Sex at birth: M or F.
  - one of `"M"`, `"F"`

## Example request

```json
{
  "connectionId": "string",
  "agencyCode": "string",
  "documentNumber": "string",
  "firstName1": "string",
  "firstName2": "string",
  "lastName1": "string",
  "lastName2": "string",
  "phoneMobile": "string",
  "phoneOffice": "string",
  "email": "string",
  "address": "string",
  "birthDate": "string",
  "sex": "M"
}
```

## Code samples

### cURL

```bash
curl https://api.getarbol.com/v1/visoft/patients/correct \
  --request POST \
  --header "Authorization: Bearer $ARBOL_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "documentNumber": "<documentNumber>"
}'
```

### TypeScript

```typescript
import { createClient } from "@arbol-ai/sdk";

const arbol = createClient({
  baseUrl: "https://api.getarbol.com",
  token: process.env.ARBOL_API_KEY!,
});

const { data } = await arbol.visoft.patients.correct({
  documentNumber: "<documentNumber>",
});
```

### Rust

```rust
use arbol_sdk::{types, Client, Credential};

let arbol = Client::new(Credential::ApiKey(std::env::var("ARBOL_API_KEY")?))?;

let data = arbol
    .visoft()
    .patients()
    .correct(&types::VisoftPatientsCorrectInput {
        document_number: "<documentNumber>".into(),
        connection_id: None,
        agency_code: None,
        first_name1: None,
        first_name2: None,
        last_name1: None,
        last_name2: None,
        phone_mobile: None,
        phone_office: None,
        email: None,
        address: None,
        birth_date: None,
        sex: None,
    })
    .await?;
```

### CLI

```bash
arbol visoft patients correct --document-number '<documentNumber>'
```

### MCP

```json
{
  "name": "visoft_patients_correct",
  "arguments": {
    "documentNumber": "<documentNumber>"
  }
}
```

## Responses

### 200

Successful operation.

#### Example

```json
{
  "success": true,
  "data": {
    "documentType": "string",
    "documentNumber": "string",
    "firstName1": "string",
    "firstName2": "string",
    "lastName1": "string",
    "lastName2": "string",
    "fullName": "string",
    "birthDate": "string",
    "sex": "string",
    "genderIdentity": "string",
    "sexualOrientation": "string",
    "maritalStatus": "string",
    "phoneMobile": "string",
    "phoneOffice": "string",
    "email": "string",
    "address": "string",
    "zone": "string",
    "country": "string",
    "departmentCode": "string",
    "departmentName": "string",
    "municipalityCode": "string",
    "cityName": "string",
    "neighborhoodCode": "string",
    "affiliateType": "string",
    "stratum": "string",
    "status": "string",
    "populationCode": "string",
    "populationGroupCode": "string",
    "professionCode": "string",
    "educationCode": "string",
    "occupation": "string",
    "ethnicity": "string",
    "disabilityPhysical": "string",
    "disabilityMental": "string",
    "disabilityPsychiatric": "string",
    "chronicHypertension": "string",
    "chronicHypertensionSince": "string",
    "chronicDiabetes": "string",
    "chronicDiabetesSince": "string",
    "chronicRenal": "string",
    "chronicRenalSince": "string",
    "latitude": "string",
    "longitude": "string",
    "providerMessage": "string"
  },
  "error": null,
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`visoft.patients.correct.response.200.success`; boolean, required)
  - one of `true`
- `data` (`visoft.patients.correct.response.200.data`; object, required)
  - `documentType` (`visoft.patients.correct.response.200.data.documentType`; string, required) — The document's type, as SIIPS codes it (CC, TI, RC…). Empty when SIIPS holds none.
  - `documentNumber` (`visoft.patients.correct.response.200.data.documentNumber`; string, required) — The patient's document number.
  - `firstName1` (`visoft.patients.correct.response.200.data.firstName1`; string, required) — First given name. Empty when SIIPS holds none.
  - `firstName2` (`visoft.patients.correct.response.200.data.firstName2`; string, required) — Second given name. Empty when SIIPS holds none.
  - `lastName1` (`visoft.patients.correct.response.200.data.lastName1`; string, required) — First surname. Empty when SIIPS holds none.
  - `lastName2` (`visoft.patients.correct.response.200.data.lastName2`; string, required) — Second surname. Empty when SIIPS holds none.
  - `fullName` (`visoft.patients.correct.response.200.data.fullName`; string, required) — Given names and surnames, in that order, as SIIPS spells them.
  - `birthDate` (`visoft.patients.correct.response.200.data.birthDate`; string, required) — Birth date. YYYY-MM-DD, or empty.
    - pattern `^(\d{4}-\d{2}-\d{2})?$`
  - `sex` (`visoft.patients.correct.response.200.data.sex`; string, required) — Sex at birth: M or F. Empty when SIIPS holds none.
  - `genderIdentity` (`visoft.patients.correct.response.200.data.genderIdentity`; string, required) — Gender identity. Empty when SIIPS holds none.
  - `sexualOrientation` (`visoft.patients.correct.response.200.data.sexualOrientation`; string, required) — Sexual orientation. Empty when SIIPS holds none.
  - `maritalStatus` (`visoft.patients.correct.response.200.data.maritalStatus`; string, required) — Marital status. Empty when SIIPS holds none.
  - `phoneMobile` (`visoft.patients.correct.response.200.data.phoneMobile`; string, required) — Mobile phone. Empty when SIIPS holds none.
  - `phoneOffice` (`visoft.patients.correct.response.200.data.phoneOffice`; string, required) — Office phone. Empty when SIIPS holds none.
  - `email` (`visoft.patients.correct.response.200.data.email`; string, required) — Email address. Empty when SIIPS holds none.
  - `address` (`visoft.patients.correct.response.200.data.address`; string, required) — Home address. Empty when SIIPS holds none.
  - `zone` (`visoft.patients.correct.response.200.data.zone`; string, required) — U (urban) or R (rural). Empty when SIIPS holds none.
  - `country` (`visoft.patients.correct.response.200.data.country`; string, required) — Country of residence (COL…). Empty when SIIPS holds none.
  - `departmentCode` (`visoft.patients.correct.response.200.data.departmentCode`; string, required) — DANE department code of residence. Empty when SIIPS holds none.
  - `departmentName` (`visoft.patients.correct.response.200.data.departmentName`; string, required) — Department of residence. Empty when SIIPS holds none.
  - `municipalityCode` (`visoft.patients.correct.response.200.data.municipalityCode`; string, required) — DANE municipality code of residence. Empty when SIIPS holds none.
  - `cityName` (`visoft.patients.correct.response.200.data.cityName`; string, required) — City of residence. Empty when SIIPS holds none.
  - `neighborhoodCode` (`visoft.patients.correct.response.200.data.neighborhoodCode`; string, required) — Neighborhood code. Empty when SIIPS holds none.
  - `affiliateType` (`visoft.patients.correct.response.200.data.affiliateType`; string, required) — Affiliation type (C: cotizante…). Empty when SIIPS holds none.
  - `stratum` (`visoft.patients.correct.response.200.data.stratum`; string, required) — Socioeconomic stratum, 1 to 6. Empty when SIIPS holds none.
  - `status` (`visoft.patients.correct.response.200.data.status`; string, required) — Vital status (Vivo…). Empty when SIIPS holds none.
  - `populationCode` (`visoft.patients.correct.response.200.data.populationCode`; string, required) — Population code. Empty when SIIPS holds none.
  - `populationGroupCode` (`visoft.patients.correct.response.200.data.populationGroupCode`; string, required) — Population group code. Empty when SIIPS holds none.
  - `professionCode` (`visoft.patients.correct.response.200.data.professionCode`; string, required) — Profession code. Empty when SIIPS holds none.
  - `educationCode` (`visoft.patients.correct.response.200.data.educationCode`; string, required) — Education code. Empty when SIIPS holds none.
  - `occupation` (`visoft.patients.correct.response.200.data.occupation`; string, required) — Occupation. Empty when SIIPS holds none.
  - `ethnicity` (`visoft.patients.correct.response.200.data.ethnicity`; string, required) — Ethnicity. Empty when SIIPS holds none.
  - `disabilityPhysical` (`visoft.patients.correct.response.200.data.disabilityPhysical`; string, required) — S when SIIPS records a physical disability. Empty when SIIPS holds none.
  - `disabilityMental` (`visoft.patients.correct.response.200.data.disabilityMental`; string, required) — S when SIIPS records a mental disability. Empty when SIIPS holds none.
  - `disabilityPsychiatric` (`visoft.patients.correct.response.200.data.disabilityPsychiatric`; string, required) — S when SIIPS records a psychiatric disability. Empty when SIIPS holds none.
  - `chronicHypertension` (`visoft.patients.correct.response.200.data.chronicHypertension`; string, required) — S when SIIPS records hypertension. Empty when SIIPS holds none.
  - `chronicHypertensionSince` (`visoft.patients.correct.response.200.data.chronicHypertensionSince`; string, required) — Since when. Empty when SIIPS holds none.
  - `chronicDiabetes` (`visoft.patients.correct.response.200.data.chronicDiabetes`; string, required) — S when SIIPS records diabetes. Empty when SIIPS holds none.
  - `chronicDiabetesSince` (`visoft.patients.correct.response.200.data.chronicDiabetesSince`; string, required) — Since when. Empty when SIIPS holds none.
  - `chronicRenal` (`visoft.patients.correct.response.200.data.chronicRenal`; string, required) — S when SIIPS records chronic kidney disease. Empty when SIIPS holds none.
  - `chronicRenalSince` (`visoft.patients.correct.response.200.data.chronicRenalSince`; string, required) — Since when. Empty when SIIPS holds none.
  - `latitude` (`visoft.patients.correct.response.200.data.latitude`; string, required) — Latitude of the address. Empty when SIIPS holds none.
  - `longitude` (`visoft.patients.correct.response.200.data.longitude`; string, required) — Longitude of the address. Empty when SIIPS holds none.
  - `providerMessage` (`visoft.patients.correct.response.200.data.providerMessage`; string, required) — SIIPS's own note on the record. Empty when SIIPS holds none.
- `error` (`visoft.patients.correct.response.200.error`; unknown, required)
- `metadata` (`visoft.patients.correct.response.200.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`visoft.patients.correct.response.200.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 400

`INVALID_INPUT`: The request does not match the published schema.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "INVALID_INPUT",
    "message": "string",
    "retryable": false,
    "data": {
      "issues": [
        {
          "path": "string",
          "message": "string"
        }
      ]
    }
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`visoft.patients.correct.response.400.success`; boolean, required)
  - one of `false`
- `data` (`visoft.patients.correct.response.400.data`; unknown, required)
- `error` (`visoft.patients.correct.response.400.error`; object, required) — The request does not match the published schema.
  - `code` (`visoft.patients.correct.response.400.error.code`; string, required) — The failure code, stable across releases.
    - one of `"INVALID_INPUT"`
  - `message` (`visoft.patients.correct.response.400.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`visoft.patients.correct.response.400.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `false`
  - `data` (`visoft.patients.correct.response.400.error.data`; object, required)
    - `issues` (`visoft.patients.correct.response.400.error.data.issues`; array<object>, optional)
      - `path` (`visoft.patients.correct.response.400.error.data.issues.path`; string, required) — RFC 6901 JSON Pointer to the refused field; empty for the whole input.
        - maxLength 256
      - `message` (`visoft.patients.correct.response.400.error.data.issues.message`; string, required)
        - maxLength 256
- `metadata` (`visoft.patients.correct.response.400.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`visoft.patients.correct.response.400.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 401

`UNAUTHORIZED`: A valid access token is required.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "string",
    "retryable": false,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`visoft.patients.correct.response.401.success`; boolean, required)
  - one of `false`
- `data` (`visoft.patients.correct.response.401.data`; unknown, required)
- `error` (`visoft.patients.correct.response.401.error`; object, required) — A valid access token is required.
  - `code` (`visoft.patients.correct.response.401.error.code`; string, required) — The failure code, stable across releases.
    - one of `"UNAUTHORIZED"`
  - `message` (`visoft.patients.correct.response.401.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`visoft.patients.correct.response.401.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `false`
  - `data` (`visoft.patients.correct.response.401.error.data`; object, required) — No fields.
- `metadata` (`visoft.patients.correct.response.401.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`visoft.patients.correct.response.401.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 403

`FORBIDDEN`: The token does not authorize this operation.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "FORBIDDEN",
    "message": "string",
    "retryable": false,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`visoft.patients.correct.response.403.success`; boolean, required)
  - one of `false`
- `data` (`visoft.patients.correct.response.403.data`; unknown, required)
- `error` (`visoft.patients.correct.response.403.error`; object, required) — The token does not authorize this operation.
  - `code` (`visoft.patients.correct.response.403.error.code`; string, required) — The failure code, stable across releases.
    - one of `"FORBIDDEN"`
  - `message` (`visoft.patients.correct.response.403.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`visoft.patients.correct.response.403.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `false`
  - `data` (`visoft.patients.correct.response.403.error.data`; object, required) — No fields.
- `metadata` (`visoft.patients.correct.response.403.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`visoft.patients.correct.response.403.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 404

- `CONNECTION_NOT_FOUND`: The organization has no such connection.
- `PATIENT_NOT_FOUND`: SIIPS has no patient with that document.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "CONNECTION_NOT_FOUND",
    "message": "string",
    "retryable": false,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`visoft.patients.correct.response.404.success`; boolean, required)
  - one of `false`
- `data` (`visoft.patients.correct.response.404.data`; unknown, required)
- `error` (`visoft.patients.correct.response.404.error`; one of, required)
  - one of: `ConnectionNotFoundFailure`, `VisoftPatientNotFoundFailure`
  - discriminator: `code`
- `metadata` (`visoft.patients.correct.response.404.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`visoft.patients.correct.response.404.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 409

`CONNECTION_NOT_CONFIGURED`: The organization has no active Visoft connection for this call; an administrator connects Visoft in Account.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "CONNECTION_NOT_CONFIGURED",
    "message": "string",
    "retryable": false,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`visoft.patients.correct.response.409.success`; boolean, required)
  - one of `false`
- `data` (`visoft.patients.correct.response.409.data`; unknown, required)
- `error` (`visoft.patients.correct.response.409.error`; object, required) — The organization has no active Visoft connection for this call; an administrator connects Visoft in Account.
  - `code` (`visoft.patients.correct.response.409.error.code`; string, required) — The failure code, stable across releases.
    - one of `"CONNECTION_NOT_CONFIGURED"`
  - `message` (`visoft.patients.correct.response.409.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`visoft.patients.correct.response.409.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `false`
  - `data` (`visoft.patients.correct.response.409.error.data`; object, required) — No fields.
- `metadata` (`visoft.patients.correct.response.409.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`visoft.patients.correct.response.409.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 413

`REQUEST_TOO_LARGE`: The request exceeds the allowed size.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "REQUEST_TOO_LARGE",
    "message": "string",
    "retryable": false,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`visoft.patients.correct.response.413.success`; boolean, required)
  - one of `false`
- `data` (`visoft.patients.correct.response.413.data`; unknown, required)
- `error` (`visoft.patients.correct.response.413.error`; object, required) — The request exceeds the allowed size.
  - `code` (`visoft.patients.correct.response.413.error.code`; string, required) — The failure code, stable across releases.
    - one of `"REQUEST_TOO_LARGE"`
  - `message` (`visoft.patients.correct.response.413.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`visoft.patients.correct.response.413.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `false`
  - `data` (`visoft.patients.correct.response.413.error.data`; object, required) — No fields.
- `metadata` (`visoft.patients.correct.response.413.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`visoft.patients.correct.response.413.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 415

`UNSUPPORTED_MEDIA_TYPE`: The request content type is not supported.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "string",
    "retryable": false,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`visoft.patients.correct.response.415.success`; boolean, required)
  - one of `false`
- `data` (`visoft.patients.correct.response.415.data`; unknown, required)
- `error` (`visoft.patients.correct.response.415.error`; object, required) — The request content type is not supported.
  - `code` (`visoft.patients.correct.response.415.error.code`; string, required) — The failure code, stable across releases.
    - one of `"UNSUPPORTED_MEDIA_TYPE"`
  - `message` (`visoft.patients.correct.response.415.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`visoft.patients.correct.response.415.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `false`
  - `data` (`visoft.patients.correct.response.415.error.data`; object, required) — No fields.
- `metadata` (`visoft.patients.correct.response.415.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`visoft.patients.correct.response.415.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 422

- `CREDENTIALS_REJECTED`: The organization's connection to this integration couldn't complete the request. Don't retry it automatically; if it keeps happening, contact your Arbol team.
- `AGENCY_NOT_SERVED`: The cost centre is not one of the connection's clinic: use one visoft.clinic.get lists.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "CREDENTIALS_REJECTED",
    "message": "string",
    "retryable": false
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`visoft.patients.correct.response.422.success`; boolean, required)
  - one of `false`
- `data` (`visoft.patients.correct.response.422.data`; unknown, required)
- `error` (`visoft.patients.correct.response.422.error`; one of, required)
  - one of: `VisoftCredentialsRejectedFailure`, `VisoftAgencyNotServedFailure`
  - discriminator: `code`
- `metadata` (`visoft.patients.correct.response.422.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`visoft.patients.correct.response.422.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 429

`RATE_LIMITED`: The request rate limit was exceeded. Try again later.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "RATE_LIMITED",
    "message": "string",
    "retryable": true,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`visoft.patients.correct.response.429.success`; boolean, required)
  - one of `false`
- `data` (`visoft.patients.correct.response.429.data`; unknown, required)
- `error` (`visoft.patients.correct.response.429.error`; object, required) — The request rate limit was exceeded. Try again later.
  - `code` (`visoft.patients.correct.response.429.error.code`; string, required) — The failure code, stable across releases.
    - one of `"RATE_LIMITED"`
  - `message` (`visoft.patients.correct.response.429.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`visoft.patients.correct.response.429.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `true`
  - `data` (`visoft.patients.correct.response.429.error.data`; object, required) — No fields.
- `metadata` (`visoft.patients.correct.response.429.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`visoft.patients.correct.response.429.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 500

`INTERNAL_ERROR`: The service could not complete the operation.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "string",
    "retryable": false,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`visoft.patients.correct.response.500.success`; boolean, required)
  - one of `false`
- `data` (`visoft.patients.correct.response.500.data`; unknown, required)
- `error` (`visoft.patients.correct.response.500.error`; object, required) — The service could not complete the operation.
  - `code` (`visoft.patients.correct.response.500.error.code`; string, required) — The failure code, stable across releases.
    - one of `"INTERNAL_ERROR"`
  - `message` (`visoft.patients.correct.response.500.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`visoft.patients.correct.response.500.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `false`
  - `data` (`visoft.patients.correct.response.500.error.data`; object, required) — No fields.
- `metadata` (`visoft.patients.correct.response.500.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`visoft.patients.correct.response.500.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 502

- `OUTCOME_UNKNOWN`: The operation may have been applied; check its result before repeating it.
- `PROVIDER_UNAVAILABLE`: The clinical system did not answer or could not complete the request.
- `PATIENT_NOT_SAVED`: SIIPS answered the registration or correction, but a fresh read did not show it saved. Nothing is retried; read the patient before trying again.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "OUTCOME_UNKNOWN",
    "message": "string",
    "retryable": false,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`visoft.patients.correct.response.502.success`; boolean, required)
  - one of `false`
- `data` (`visoft.patients.correct.response.502.data`; unknown, required)
- `error` (`visoft.patients.correct.response.502.error`; one of, required)
  - one of: `OutcomeUnknownFailure`, `VisoftProviderUnavailableFailure`, `VisoftPatientNotSavedFailure`
  - discriminator: `code`
- `metadata` (`visoft.patients.correct.response.502.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`visoft.patients.correct.response.502.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 503

`UPSTREAM_UNAVAILABLE`: The upstream service could not complete the request.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "UPSTREAM_UNAVAILABLE",
    "message": "string",
    "retryable": true,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`visoft.patients.correct.response.503.success`; boolean, required)
  - one of `false`
- `data` (`visoft.patients.correct.response.503.data`; unknown, required)
- `error` (`visoft.patients.correct.response.503.error`; object, required) — The upstream service could not complete the request.
  - `code` (`visoft.patients.correct.response.503.error.code`; string, required) — The failure code, stable across releases.
    - one of `"UPSTREAM_UNAVAILABLE"`
  - `message` (`visoft.patients.correct.response.503.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`visoft.patients.correct.response.503.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `true`
  - `data` (`visoft.patients.correct.response.503.error.data`; object, required) — No fields.
- `metadata` (`visoft.patients.correct.response.503.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`visoft.patients.correct.response.503.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 504

`UPSTREAM_TIMEOUT`: The upstream service did not respond before its deadline.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "UPSTREAM_TIMEOUT",
    "message": "string",
    "retryable": true,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`visoft.patients.correct.response.504.success`; boolean, required)
  - one of `false`
- `data` (`visoft.patients.correct.response.504.data`; unknown, required)
- `error` (`visoft.patients.correct.response.504.error`; object, required) — The upstream service did not respond before its deadline.
  - `code` (`visoft.patients.correct.response.504.error.code`; string, required) — The failure code, stable across releases.
    - one of `"UPSTREAM_TIMEOUT"`
  - `message` (`visoft.patients.correct.response.504.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`visoft.patients.correct.response.504.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `true`
  - `data` (`visoft.patients.correct.response.504.error.data`; object, required) — No fields.
- `metadata` (`visoft.patients.correct.response.504.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`visoft.patients.correct.response.504.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.


Source: https://docs.getarbol.com/api/visoft/patients/correct/index.md
