# 환자 승인을 통한 클리닉 접근 요청 (CIBA)

> 클리닉 접근 요청 뒤에 있는 OpenID CIBA 흐름: 접수 담당자가 환자의 이메일을 입력하면, 환자는 앱 또는 이메일을 통해 30일, 90일 또는 365일 동안 승인하고, 클리닉의 애플리케이션은 토큰을 받습니다.

Source: https://developers.anpheros.com/ko/guides/clinic-access-request

**클리닉은 환자가 승인할 때만 Anpheros에서 환자의 기록에 접근할 수 있습니다.** 클리닉의 애플리케이션은 환자의 이메일 주소와 필요한 접근 권한을 명시하여 요청을 보냅니다. 환자는 Anpheros 앱과 이메일을 통해 이를 수신하고, 누가 무엇을 요청하는지 확인하며, 허용 기간을 선택하고, 승인 또는 거부합니다. 환자가 승인하면, 클리닉의 애플리케이션은 토큰을 받고 접근 권한이 만료되거나 환자가 철회할 때까지 기록을 읽을 수 있습니다.

이 흐름은 표준 OpenID Connect Client-Initiated Backchannel Authentication (CIBA) 흐름이며, 폴링 모드입니다. 이는 접수 담당자가 환자에게 전화기나 링크를 건네줄 필요가 없도록 하기 위해 존재합니다. 요청은 클리닉의 화면을 통하지 않고 환자에게 직접 전달됩니다.

## 단계별 안내

1. **접수처에서 환자의 이메일을 입력합니다.** 병원 애플리케이션은 클라이언트 자격 증명, `login_hint`로 환자의 이메일, 필요한 `scope` 및 환자가 보게 될 짧은 `binding_message`와 함께 `POST /oauth/bc-authorize`을 호출합니다.
2. **플랫폼은 모든 주소에 대해 동일한 방식으로 응답합니다.** 응답에는 `auth_req_id`, 만료일 및 폴링 간격이 포함되며, 해당 이메일에 Anpheros 계정이 있는지 여부를 나타냅니다. 누가 기록을 가지고 있는지 공개하지 않습니다. 계정이 없는 사람에 대한 요청은 단순히 만료됩니다.
3. **환자가 결정합니다.** Anpheros 앱과 이메일로 알림을 받습니다. 요청에는 조직, 범위 및 메시지가 표시됩니다. 30일, 90일 또는 365일의 기간을 선택하고 허용 또는 거부를 누릅니다. 이메일의 링크는 메일 스캐너가 링크를 열기 때문에 열렸을 때 아무것도 승인하지 않습니다. 환자는 버튼을 눌러야 합니다.
4. **병원이 폴링합니다.** 애플리케이션은 grant type `urn:openid:params:grant-type:ciba` 및 `auth_req_id`과 함께 `POST /oauth/token`을 호출합니다. 환자가 아직 결정하지 않은 동안 응답은 `authorization_pending`입니다. 승인 후 토큰은 한 번 반환됩니다. 거부는 `access_denied`을 반환하고 응답하지 않은 요청은 `expired_token`을 반환합니다.
5. **병원은 부여된 범위 내에서 읽고 씁니다.** 모든 읽기 작업은 기록되며 환자에게 표시됩니다. 병원은 자신이 쓴 내용만 변경하거나 삭제할 수 있습니다.

## 환자를 보호하는 것

- **이메일 인증 필수.** 요청은 이메일이 인증된 계정에만 일치하므로, 다른 사람의 주소로 계정을 생성하여 해당 사람의 요청을 받는 것을 방지합니다.
- **범위 및 시간 제한.** 액세스는 리소스 유형 및 작업별로, 명시된 기간 동안 부여됩니다. 아무도 응답하지 않은 요청은 기본적으로 하루 안에, 최대 7일 안에 만료됩니다.
- **언제든지 철회 가능.** 철회는 다음 요청 시 효력이 발생합니다. 클리닉은 새로고침을 통해 다시 접근할 수 없습니다.
- **투명성.** 환자는 앱에서 모든 연결 및 모든 액세스를 볼 수 있습니다. [동의 및 액세스 모델](https://developers.anpheros.com/ko/guides/consent)을 참조하십시오.

## 클리닉에서 구축해야 할 사항

- 플랫폼에 등록된 기밀 OAuth 클라이언트이며, 해당 비밀 키는 서버에 보관해야 합니다.
- 간격을 준수하고 네 가지 결과를 처리하는 폴링 루프.
- 환자의 결정을 접수처에 표시하는 방법("환자 대기 중", "…까지 승인됨", "거부됨").
- 반환된 토큰을 단기 자격 증명으로 처리: 액세스 토큰은 30분 동안 유효하며, 새로 고침 토큰은 사용할 때마다 회전합니다. [인증 및 OAuth](https://developers.anpheros.com/ko/guides/authentication) 참조.

예를 들어, 접수대에서 환자 앞에서 동의 페이지를 열기를 선호하는 클리닉의 경우, PKCE 및 SMART on FHIR 독립 실행형 실행을 사용하는 표준 권한 부여 코드 흐름도 지원됩니다.

## 자주 묻는 질문

### 환자가 병원에 있어야 하나요?

아니요. 환자는 어디에 있든 자신의 휴대폰이나 이메일 링크를 통해 승인할 수 있습니다. 따라서 예약 전에 요청을 보낼 수 있으며, 해외에 있는 환자도 여전히 승인할 수 있습니다.

### 환자가 Anpheros 계정이 없는 경우 어떻게 되나요?

요청은 수락된 후 결정 없이 만료되며, 병원에서는 계정 존재 여부를 알 수 없습니다. 환자는 계정을 생성할 수 있으며, 병원에서는 새 요청을 보낼 수 있습니다.

### 액세스는 얼마나 오래 지속되나요?

환자는 승인 시 30일, 90일 또는 365일을 선택합니다. 더 일찍 철회할 수 있습니다.

### 병원에서 기록의 모든 것을 볼 수 있나요?

환자가 승인한 범위만 볼 수 있습니다. 범위는 리소스 유형 및 작업별로 설정되며 카테고리별로 필터링할 수 있습니다.

### 요청 흐름이 표준인가요?

예. OpenID Connect CIBA이므로 기존 OAuth 라이브러리를 사용할 수 있습니다. 더 넓은 모델은 [환자 동의를 통한 의료 API](https://developers.anpheros.com/ko/guides/healthcare-api-patient-consent) 가이드를 참조하십시오.

### 이것이 실시간인가요?

예, 비공개 베타 버전으로 플랫폼에서 제공됩니다. 프로덕션 액세스에는 확인된 조직 및 서명된 데이터 처리 계약이 필요합니다.

## 관련 자료

- [클리닉 및 병원을 위한 환자 데이터 플랫폼](https://developers.anpheros.com/ko/guides/clinics-and-hospitals)
- [건강 앱을 위한 환자 동의 플랫폼](https://developers.anpheros.com/ko/guides/patient-consent-platform)
- [SMART on FHIR을 이용한 환자 동의 구현 방법](https://developers.anpheros.com/ko/guides/smart-on-fhir-backend)
- [보안, 개인 정보 보호 및 데이터 상주](https://developers.anpheros.com/ko/guides/security)
