Reestr API — ishlab chiquvchilar uchun
ODIN ochiq reestriga mashina orqali ulanish: REST + DICOMweb (STOW-RS / QIDO-RS / WADO-RS). Pilot bosqichida token qoʻlda beriladi.
Autentifikatsiya
REST: har bir soʻrovda X-Registry-Token sarlavhasi (pilot-token).
DICOMweb: HTTP Basic (pilot login/parol). Faqat /dicom-web/ ochiq, Orthanc admin-API tashqariga chiqarilmagan.
REST endpointlar
POST | /api/registry/case | baseline-кейс caseFormV0 → { study_uuid } |
POST | /api/registry/upload | resumable upload (tus-core: create → HEAD offset → PATCH append) |
POST | /api/registry/predict | { study_uuid } → CDSS percentile vs cohort (research prototype) |
POST | /api/registry/outcome | { study_uuid, outcome, marginal_bone_loss_mm?, outcome_date? } |
GET | /api/registry/chain | hash-chain audit (data passport v0) |
GET | /api/registry/health | liveness |
DICOMweb (PACS uchun)
POST | /dicom-web/studies | STOW-RS: multipart/related; type="application/dicom" |
GET | /dicom-web/studies?PatientID={study_uuid} | QIDO-RS: поиск по study_uuid |
GET | /dicom-web/studies/{study}/metadata | WADO-RS metadata (application/dicom+json) |
Shartnoma: PatientID = kejs study_uuid (registrda yaratilgandan keyin). 2D rentgen: IO / DX / PX / CR. CT/CBCT qabul qilinadi va diskka yozilishidan OLDIN defacing qilinadi: yumshoq toʻqimalar (<150 HU) havo bilan almashtiriladi — yuz sirti qolmaydi, suyak/tishlar saqlanadi. Talablar: siqilmagan transfer syntax, kalibrlangan HU.
curl -u "pilot-user:pilot-pass" \
-X POST https://dentum.uz/dicom-web/studies \
-H 'Content-Type: multipart/related; type="application/dicom"; boundary=B' \
-H 'Accept: application/dicom+json' \
--data-binary @stow-body.bin Tadqiqot kirishi (T1)
OAuth2 + DUA-click orqali FHIR R4 va OMOP CDM v5.4 obezlangan eksporti. T3 federatsiya (FedAvg imzolangan yangilanishlar) — kamida 2 klinika bilan.
POST | /api/registry/oauth/token | OAuth2 client-credentials → Bearer (после DUA-accept) |
POST | /api/registry/dua/accept | click-through DUA для скоупа T1 |
GET | /api/registry/fhir/{Resource} | FHIR R4 ndjson/Bundle (Patient/Observation/…) — Bearer T1 |
GET | /api/registry/fhir/metadata | FHIR CapabilityStatement (публично) |
GET | /api/registry/omop/{table} | OMOP CDM v5.4 ndjson (person/condition_occurrence/…) — Bearer T1 |
De-identifikatsiya (diskka yozishdan OLDIN)
- PS3.15 Basic Profile kichik toʻplami: PII-teglar oʻchiriladi (ismlar, manzil, muassasa, qurilma seriyasi, izohlar va h.k.), AccessionNumber/StudyID boʻshatiladi
- Barcha private-teglar, overlay (60xx) va curve (50xx) guruhlari olib tashlanadi
- Barcha UID’lar 2.25 (SHA-256 + reestr tuzi) fazosiga deterministik qayta xaritalanadi
- StudyDate/StudyTime saqlanadi (6/12 oylik natijalar uchun)
- Piksellar tozalanmaydi: BurnedInAnnotation=YES rad etiladi
- CBCT/CT: yumshoq toʻqima ablatsiyasi (<150 HU → havo) diskkacha; suyak shakli qoladi — T2 DUAda deklaratsiya qilinadi
OpenAPI-xomaki (YAML) → ·T0 stats → ·Data dictionary → ·Open tier T0 →