Visualisasikan FHIR - Standar TI untuk Kedokteran




Halo Nama saya Andrey, saya bekerja di sebuah perusahaan yang menciptakan solusi IT di bidang kedokteran. Sebagai bahasa pengembangan utama, kami menggunakan Clojure, serta (tergantung pada proyek / modul) Python, Javascript, Go, C, C #, Rust, Objective-C, dll.

Tempat penting dalam tumpukan teknologi kami ditempati oleh FHIR standar internasional (Sumber Daya Interoperabilitas Fast Healthcare), yang menentukan format untuk menyimpan / bertukar / menyediakan informasi medis dalam bentuk elektronik dan termasuk spesifikasi API tenang interaksi klien-server.

Beberapa waktu lalu, saya memulai proyek hewan peliharaan dari aplikasi yang memvisualisasikan konten sumber daya dari server FHIR yang sewenang-wenang dan memungkinkan Anda untuk melakukan operasi CRUD dasar. KDPV menunjukkan tangkapan layar dari halaman edit untuk elemen sumber daya dari tipe Pasien.

Di bawah kucing ada deskripsi singkat dan tautan ke demo online - Anda dapat merasakan server FHIR langsung, menekan tombol, melihat / membuat / mengedit berbagai sumber daya, dan bahkan mencoba untuk memanggil efek habra yang sama! )

Beberapa kata tentang FHIR


Saya tidak akan menulis ulang deskripsi standar di sini, mereka yang ingin dapat mempelajari semua detail dari tautan di atas, membaca materi lain tentang berbagai sumber daya, serta mengajukan pertanyaan dan bergabung dengan diskusi dalam obrolan FHIR . Saya hanya akan memberikan gagasan umum: konsep sentral adalah sumber daya, sumber daya dibagi berdasarkan jenis dan kelompok, masing-masing jenis memiliki struktur bidangnya sendiri, nilai-nilainya dapat berupa tipe primitif atau gabungan dan tautan ke sumber daya lainnya. Bidang bisa bersifat wajib atau opsional, berisi satu nilai atau kumpulan nilai. Misalnya, sumber daya Pasien memiliki bidang tipe primitif: tanggal lahir / jenis kelamin / ..., tipe komposit: nama / alamat / ...., tautan ke rumah sakit dan daftar dokter yang hadir, dll.

Untuk setiap sumber daya, sejarah perubahannya disimpan sebagai daftar negara dengan tanggal relevansinya dan nomor versi objek. RESTful API memungkinkan Anda untuk meminta metadata tentang komposisi dan struktur sumber daya yang didukung oleh server FHIR ini, daftar elemen sumber daya dari jenis apa pun dengan kemampuan penyaringan yang luas sesuai dengan nilai-nilai parameter individu, termasuk sumber daya dependen, membatasi output hasil dengan nilai-nilai bidang yang terdaftar, mengurutkan hasil kueri dengan kriteria kompleks, dan dll. Ada juga metode untuk mendukung CRUD di tingkat elemen sumber daya - membuat / memperbarui dengan validasi struktur dan keberadaan bidang yang diperlukan, menghapus elemen. Ada metode API untuk melihat riwayat perubahan baik di tingkat elemen dan di tingkat tipe sumber daya.

Dalam aplikasi tipikal, penggunaan API generik ini diabstraksi oleh lapisan logika bisnis yang tebal untuk klien tertentu. Misalnya, ketika menunjuk kunjungan pasien ke dokter, mereka akan diminta data tentang jumlah asuransi kesehatannya dan masa berlakunya, riwayat kunjungan sebelumnya, informasi tentang keseimbangan pemukiman antara pasien dan klinik, dll., Data tentang jadwal dokter yang dipilih dan ketersediaan jam untuk masuk, dll. .p. Dan semua ini disajikan dengan nyaman di layar tempat kerja karyawan yang membuat rekaman. Atau, penjadwal tugas otomatis secara berkala memulai proses sesuai dengan jadwal yang diberikan, meminta daftar kunjungan yang akan datang dan secara otomatis mengirim SMS kepada pasien dengan teks pengingat atau pemberitahuan sesuai dengan templat yang telah ditentukan.

Tapi saya datang dengan ide membuat visualisasi universal dari isi sumber daya server FHIR, dan proyek yang disebut ...

Wajah Fhir


Aplikasi ini memungkinkan Anda untuk terhubung ke server FHIR dan melihat konten sumber daya dan CRUD dasar. Salah satu kesulitan dari pendekatan universal semacam itu adalah bahwa server yang berbeda dapat memiliki versi berbeda dari standar FHIR, mengimplementasikannya tidak secara penuh, memiliki penyimpangan dalam daftar, komposisi dan struktur sumber daya dan API, dan juga memiliki fungsi tambahan yang tidak termasuk dalam spesifikasi. . Tetapi jika server ini memungkinkan Anda untuk meminta metadata tentang komposisi dan struktur sumber daya yang didukung, maka Anda dapat menambahkan dukungannya dalam proyek ini.

Antarmuka proyek intuitif. Alamat server dipilih melalui parameter bilah alamat, tetapi dalam versi demo saat ini hapi.fhir.org dipilih secara default . Dari halaman awal, komposisi dan struktur sumber daya diunduh, dan diusulkan untuk memilih jenis sumber daya tertentu untuk melihat isinya. Saat memilih jenis sumber daya, permintaan dibuat untuk sejumlah elemen, yang ditampilkan dalam tabel dengan kolom: pengidentifikasi, representasi pengguna bersyarat (jika mungkin) dan ukuran dalam karakter serialisasi string. Pencarian teks lengkap pada konten karya sumber. Ketika Anda mengklik pada baris tabel atau pada tombol untuk membuat elemen baru, pengalihan ke halaman konten elemen sumber daya terjadi.

Di bagian atas halaman elemen terdapat tombol untuk konvolusi penuh / membuka konten hierarkis dan tombol untuk mengubah gaya detail presentasi. Konten item diwakili oleh daftar detail. Setiap atribut memiliki nama, tipe, deskripsi dan makna singkat. Lingkaran yang diisi dengan hitam di sebelah kiri atribut berarti bahwa atribut ini ada di sumber daya (bahkan jika nilainya tidak dipilih - dalam hal ini, atribut memiliki atribut ini, tetapi memiliki nilai kosong), lingkaran kosong menunjukkan tidak adanya atribut ini dalam elemen, tetapi daftar perincian struktur jenis sumber daya ini. Atribut apa pun dapat ditambahkan / dihapus dari item dengan mengklik ikon lingkaran di sebelah kiri nama. Detail yang tidak tercantum dalam struktur tipe sumber daya, tetapi tersedia dalam elemen, disorot dengan warna ungu.

Nilai tipe primitif diwakili oleh widget yang diketik yang sesuai - tanggal, waktu, jumlah, string, dll. Ikon di sebelah kanan detail string mengalihkan mode input / edit teks - dengan atau tanpa umpan baris. Saat mengedit, widget secara otomatis mengubah ukuran tergantung pada isinya. Saat mulai mengisi formulir, semua bidang teks yang lebih dari 50 karakter diwakili oleh widget textArea dengan umpan baris. Widget tautan diwakili oleh jenis sumber daya tautan dan nilainya, ketika memilih suatu nilai, pencarian teks lengkap tentang isi karya sumber tautan.

Detail tipe komposit dapat diciutkan untuk menyoroti jumlah rincian bawahan yang mungkin dan diisi atau digunakan dengan demonstrasi konten. Ketika Anda mengklik pada nama / jenis / deskripsi dari persyaratan, konvolusi mendalam yang mendalam / membuka konten dipicu, ketika Anda mengklik pada highlight, jumlah bidang adalah pembukaan dari level detail selanjutnya. Atribut koleksi (dengan jumlah nilai yang berubah-ubah) memiliki ikon + di sebelah kanan deskripsi atribut - untuk menambahkan nilai baru ke koleksi. Konvolusi / pembukaan elemen koleksi (jika pada gilirannya, nilai tipe komposit) dilakukan dengan mengklik pada bagian paling kanan dari bingkai yang mengikat elemen koleksi. Ketika Anda mengklik pada salib di sudut kanan atas bingkai, elemen koleksi dihapus.

Antarmuka ini memungkinkan Anda untuk mengedit konten sumber apa pun. Di bagian bawah halaman adalah tombol untuk menyimpan sumber daya dalam keadaan diedit. Ketika sumber daya ditulis, server FHIR memvalidasi kontennya, dan jika ada kesalahan, itu tidak mencatat sumber daya, tetapi mengembalikan daftar kesalahan validasi. Dalam hal ini, teks kesalahan ini ditampilkan dengan warna merah di bawah tombol simpan. Struktur objek kesalahan validasi ditentukan oleh implementasi server, oleh karena itu, varian representasi tekstual universal dipilih. Jika tidak ada kesalahan, elemen sumber daya direkam dan diarahkan kembali ke halaman daftar elemen.

Dan akhirnya, tautan yang dijanjikan:

Demo online proyek

Github dari proyek - kucing itu bukan pameran boneka binatang, tetapi pekerja yang hidup, jadi ada area komentar, perancah dan elemen lain yang diperlukan untuk pekerjaan konstruksi dan pemasangan, memakai helm)

Source: https://habr.com/ru/post/id425995/


All Articles