---
title: "Submit ICD change"
method: POST
path: "/api/v1/claims/{claim_id}/icd-history"
tags: ["Open API", "ICD History"]
---

# Submit ICD change

`POST /api/v1/claims/{claim_id}/icd-history`

## Request

- Base URL: `https://developer.claimmind.life` (the document declares no server; this is the origin it was published from)
- URL: `https://developer.claimmind.life/api/v1/claims/{claim_id}/icd-history`
- Auth: none declared. Required headers: `X-API-Key`

Submit a new ICD code change for a claim.

    Creates a new versioned record in the ICD history audit trail.

    **Authentication:** API Key (X-API-Key header)
    **Required Scope:** `claims:write`

    **Request Body:**
    - icd_inacbg: ICD codes for INA-CBG processing (optional)
      - icd9_list: Array of ICD-9 codes
      - icd10_list: Array of ICD-10 codes
    - icd_idrg: ICD codes for IDRG processing (optional)
      - icd9_list: Array of ICD-9 codes
      - icd10_list: Array of ICD-10 codes
    - feedback: Free-text reason for the change (optional, max 4000 characters)

    **Example Request:**
    ```json
    {
        "icd_inacbg": {
            "icd9_list": ["01.1"],
            "icd10_list": ["A01.0", "B02.1"]
        },
        "icd_idrg": {
            "icd9_list": ["02.2"],
            "icd10_list": ["C03.0"]
        },
        "feedback": "koreksi dari koder RS"
    }
    ```

    **Note:** You can submit only `icd_inacbg`, only `icd_idrg`, or both.
    A `feedback` value alone is not a submission and is rejected with 422.

    **Note:** `origin` is recorded server-side as `human` for every submission made
    through this endpoint. It cannot be set from the request body.

    **Example Response:**
    ```json
    {
        "id": "550e8400-e29b-41d4-a716-446655440000",
        "claim_id": "660e8400-e29b-41d4-a716-446655440001",
        "version": 1,
        "icd_inacbg": {
            "icd9_list": ["01.1"],
            "icd10_list": ["A01.0", "B02.1"]
        },
        "icd_idrg": null,
        "created_at": "2026-02-16T10:00:00Z",
        "origin": "human",
        "feedback": "koreksi dari koder RS"
    }
    ```

## Path parameters

- `claim_id` string, required

## Headers

- `authorization` string, nullable
- `X-API-Key` string, required

## Request body

- IcdHistoryCreateRequest: Request to submit a new ICD change. `origin` and `origin_actor` are deliberately NOT accepted here (FR-34). They are derived server-side from the authenticated door the request came through; a caller that could declare its own authorship would turn the column into a claim rather than evidence. A body carrying them is IGNORED, not rejected (FR-35) — Pydantic's default extra='ignore' is load-bearing, do not set extra='forbid'.
  - `icd_inacbg` IcdCodes: ICD codes structure for a coding system.
    - `icd9_list` string[], nullable
    - `icd10_list` string[], nullable
  - `icd_idrg` IcdCodes: ICD codes structure for a coding system.
    - `icd9_list` string[], nullable
    - `icd10_list` string[], nullable
  - `feedback` string, nullable

## Response `201`

Successful Response

- IcdHistoryResponse: Response for ICD history record. `origin_actor` IS NEVER DECLARED HERE. Rows written by cl-service carry a real hospital coder's display name or email; returning it would ship staff identity to an external integrator with no privacy review. PRD FR-25 asks for it and the Implementation Plan (OD-09 / R-9) withholds it — the plan wins. Do not add it without that review. `origin` is typed `str`, never Literal or Enum: FR-37 reserves the right to grow the permitted set, and a Literal would make this endpoint 500 on every read of a claim carrying a value it had not been taught.
  - `id` string, required
  - `claim_id` string, required
  - `version` integer, required
  - `icd_inacbg` IcdCodes: ICD codes structure for a coding system.
    - `icd9_list` string[], nullable
    - `icd10_list` string[], nullable
  - `icd_idrg` IcdCodes: ICD codes structure for a coding system.
    - `icd9_list` string[], nullable
    - `icd10_list` string[], nullable
  - `created_at` string, required
  - `origin` string
  - `feedback` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/claimmind/apis/claimmind-open-api-service.md) - [All operations](https://skmtc.dev/claimmind/apis/claimmind-open-api-service/llms.txt) - [OpenAPI document](https://skmtc.dev/claimmind/apis/claimmind-open-api-service/revisions/ee8bfbeadb8a?raw)
