# Onay ve erişim modeli

> Kim neyi görür: proje izolasyonu, ikili kimlikler, izinler, yazma sahipliği, köken bilgisi ve hastanın erişimi olan her uygulama hakkında gördükleri.

Source: https://developers.anpheros.com/tr/guides/consent

**Kural:** hastanın onayı ile bir kuruluş, diğer kliniklerin yazdıkları da dahil olmak üzere kaydın tamamını görür — ancak yalnızca kendisinin yazdıklarını değiştirebilir veya silebilir. Her kaynağın her sürümü, onu yazan projeyi ve adına yazıldığı kuruluşu kaydeder.

## Kim Ne Görür
- Bir **proje** (API anahtarı), oluşturduğu hastaları görür. Bir **izin** (OAuth token) altında, bir uygulama tüm yazarlardan yalnızca bir hastayı, verilen kapsamlar ve kategori filtreleriyle sınırlı olarak görür. Diğer her şey 404 döndürür, asla 403 döndürmez, bu nedenle kimlikler sorgulanamaz.
- **Eşli kimlikler:** her proje aynı kişi için kendi kimliğini alır; dahili kimlikler asla platformdan çıkmaz. Kapsamınız dışındaki hastalara yapılan başvurular, proje başına opak bir jetonla maskelenir.
- **Dizin** (Organization, Practitioner, PractitionerRole): başvuruların çözümlenmesi için kimliğe göre düzlem genelinde okunabilir; yalnızca projeniz içinde aranabilir; yalnızca sizinkiler olduğunda `X-Anpheros-Acting-As` / `X-Anpheros-On-Behalf-Of` olarak kullanılabilir.
- **Sandbox ve üretim** farklı veritabanlarıdır. Bir sandbox anahtarı fiziksel olarak gerçek hastalara ulaşamaz.

## Yazma ve sahiplik
- Her kaynak sürümünün `project_id`'ü = yazardır. Başka bir proje tarafından güncelleme/silme → açıklama ile birlikte 403 hatası; kendi kaynağınızı yazın.
- `Provenance.agent.onBehalfOf` = yazma anındaki klinik/kuruluş: `X-Anpheros-On-Behalf-Of`, aksi takdirde hareket halindeki PractitionerRole'un kuruluşu, aksi takdirde projenin kuruluşu.
- Her yazma işlemi bir Provenance kaynağı ve bir denetim satırı üretir (kim, ne, ne zaman, hangi izinle, hangi uygulama, hangi kaynak parmak izinden).

## Hastanın Gördükleri
`/me/patients/{id}/grants`, erişimi olan her uygulamayı, kapsamlarını ve geçerlilik sürelerini listeler; `…/access-log` ise her okuma veya yazma işlemini - onay **ve** projenin kendi anahtarı ile birlikte - listeler. Geri alma işlemi bir sonraki istekte yürürlüğe girer; uygulama tekrar yenileyemez.
`format=fhir` ile erişim günlüğü, FHIR R4 `AuditEvent` kaynaklarından oluşan bir Bundle olarak geri döner, IHE Basic Audit Log Patterns'a göre şekillendirilir (tip `rest`, etkileşim alt tip olarak, uygulama ve onun aracılığıyla hareket eden kişi aracı olarak, hasta ve kaynak varlık olarak, klinik veri yok), böylece başka bir sistem bunu kişinin kaydına kimin eriştiğiyle ilgili görünümüne dahil edebilir.

Her Provenance kaynağının ne kaydettiği ve nasıl ayarlanacağı: [Tıbbi veri kökeni açıklandı](https://developers.anpheros.com/tr/guides/medical-data-provenance).

## SMART Health Bağlantıları (QR veya bağlantı ile paylaşım)

Bir kişi, aracı bir uygulama olmadan kaydını paylaşabilir: `POST /me/patients/{id}/shl`, **acil durum** alt kümesi (alerjiler, ilaçlar, sorunlar, aşılar - sonuçlar veya geçmiş yok) veya isteğe bağlı bir parola ve son kullanma tarihi ile **tam** Uluslararası Hasta Özeti için bir [SMART Health Bağlantısı](https://hl7.org/fhir/uv/smart-health-cards-and-links/) oluşturur. Yanıt, `/shl/view` üzerindeki bir görüntüleyici adresi ile birlikte `shlink:/…` URI'sini (bir QR kodu için) taşır ve bu, herhangi bir tarayıcıda açılır. Tarayan kişi, manifest URL'sine gönderim yapar ve özeti, bağlantıdaki anahtar ile şifrelenmiş bir JWE (`dir` + `A256GCM`) olarak alır; herhangi bir SMART Health Bağlantısı okuyucusu çalışır.

- İçerik her açıldığında oluşturulur (bayrak `L`, durum `can-change`), bu nedenle telefonda saklanan bir kart güncel kalır.
- Bir parola (bayrak `P`) sunucuda kontrol edilir; 10 yanlış denemeden sonra bağlantı çalışmayı durdurur.
- `GET /me/patients/{id}/shl`, bağlantıları ne sıklıkla ve ne zaman açıldıklarıyla birlikte listeler; `…/shl/{link}/revoke` birini aynı anda kapatır. Her açılış erişim günlüğüne kaydedilir.
- Kişinin dahili kimliği platformdan asla ayrılmaz: belge, onları bağlantının bir takma adıyla adlandırır.

## Yapay Zeka ajanları önerir, kişi karar verir

Bir kişinin rızasıyla, bir yapay zeka ajanı tarafından (örneğin MCP aracılığıyla bağlanan bir asistan gibi bir ajan olarak kaydedilmiş bir uygulama) yapılan bir yazma işlemi veya `author_type` `ai` ile yapılan herhangi bir yazma işlemi anında uygulanmaz. Platform bunu doğrular ve öneri kimliğiyle `202 Accepted` ile yanıt verir (`Anpheros-Proposal` başlığı); kayıtta hiçbir değişiklik olmaz. Kişi bunu `GET /me/patients/{id}/proposals`'te görür — ne olduğunu, hangi uygulamanın gönderdiğini — ve kabul eder veya reddeder (`…/proposals/{proposal}/accept` veya `…/reject`). Kabul edilen bir öneri, gönderildiği gibi tam olarak yazılır ve yapay zeka tarafından yazılmış olarak işaretlenir (HL7 Yapay Zeka Şeffaflığı). Kaydı görebilen projeler ince bir `proposal.created` webhook'u alır. Bir projenin kendi anahtarıyla, projenin oluşturduğu kayıtlara yapılan yazma işlemleri tutulmaz.
