Perpustakaan, layanan web, dan serangkaian alat untuk data organisasi kesehatan dan perawatan Inggris.
Data Referensi Organisasi Perawatan Kesehatan dan Perawatan Sosial diterbitkan oleh NHS Digital di bawah standar DCB0090.
clods dirancang untuk menyediakan layanan "lokasi" hingga ke granularitas situs organisasi menggunakan data referensi ini.
clods bagian dari serangkaian mendukung data dasar dan layanan komputasi yang membantu menjawab pertanyaan tentang 'siapa', 'apa', 'ketika', 'bagaimana' dan 'mengapa' data kesehatan dan perawatan.
Perangkat lunak ini menyediakan layanan perpustakaan dan web. Sebagai perpustakaan, itu dapat dengan mudah tertanam ke dalam aplikasi yang lebih besar. Sebagai layanan mikro, ia dapat dengan mudah tertanam ke dalam serangkaian layanan platform dasar. Ini memberikan API istirahat biasa serta API HL7 FHIR (R4).
Anda dapat memperoleh informasi dokter umum untuk operasi GP tertentu menggunakan ODS-mingguan.
Layanan lokasi yang lebih berbutir halus (misalnya lingkungan, tempat tidur) disediakan oleh modul lain sebagai bagian dari layanan lokasi concierge terpadu. Lokasi lingkungan dan tempat tidur dan data status biasanya disediakan sebagai bagian dari sistem administrasi pasien daripada layanan data referensi, tetapi ini bertujuan untuk menyediakan antarmuka pemrograman aplikasi (API) yang mulus untuk mencatat konteks data klinis apa pun secara tepat .
Pada intinya, perangkat lunak ini memberikan representasi yang erat dari data sumber asli sambil juga menyediakan serangkaian sistem yang lebih abstrak yang akan menjadi federatable; Itu berarti perangkat lunak aplikasi yang bekerja melintasi batas internasional dengan harmonisasi runtime dan abstraksi di berbagai layanan backend.
Data sektor publik harus terbuka, dipublikasikan, dan menggambarkan diri sendiri, dengan mekanisme untuk memungkinkan komputasi. Itu berarti kita dapat menulis perangkat lunak yang secara otomatis memperbarui indeks master dari berbagai data sektor publik yang penting.
Saat berjalan sebagai perpustakaan atau layanan mikro, satu -satunya ketergantungan adalah sistem file.
Di masa lalu, kami merawat server individu dan memberi mereka nama, analog dengan merawat hewan peliharaan. Mereka akan berumur panjang dan kami akan menjalankan layanan pada mereka. Anda akan memiliki administrator yang secara manual masuk untuk memperbarui di tempat, meningkatkan versi perangkat lunak atau memperbarui data dukungan.
Anda masih dapat menggunakan model ini untuk ini dan perangkat lunak PatientCare lainnya tetapi pendekatan yang lebih modern untuk memperlakukan komputasi dan infrastruktur data Anda sebagai sapi. Tidak seperti hewan peliharaan, Anda biasanya tidak memberi nama ternak Anda, dan Anda mungkin memiliki omset yang signifikan pada sapi -sapi itu. Karena itu, sepenuhnya masuk akal untuk memutar versi baru dari layanan ini dengan data baru yang diperbarui.
Dengan demikian, ini, dan layanan PatientCare lainnya dirancang untuk mengotomatisasi sebanyak mungkin langkah.
Anda harus menginstal Clojure untuk pengalaman terbaik tetapi dimungkinkan untuk berjalan menggunakan toples yang sudah dibangun. Lihat di bawah untuk informasi tentang file JAR.
Layanan ini membutuhkan direktori pada sistem file untuk beroperasi.
Data organisasi NHS mencakup informasi tentang organisasi NHS. Untuk mengaktifkan layanan geografis, clods menggabungkan data ini dengan data geografis NHS menggunakan 'Direktori Kode Pos NHS'. Anda dapat menggunakan NHSPD sebagai layanan mandiri, tetapi untuk kenyamanan, clods termasuk alat itu.
Dalam contoh -contoh ini, kami akan menggunakan
Anda dapat memilih untuk menggunakan satu direktori dan pembaruan di tempat, atau membangun repositori baru secara interval. Saya lebih suka data back-only dan abadi secara default, jadi lebih mendukung yang terakhir.
Kami juga perlu menentukan cache sementara untuk data yang diunduh.
Untuk contoh -contoh ini, kami akan menggunakan
Anda mungkin sudah menjalankan NHSPD; Gunakan indeks yang Anda gunakan untuk itu.
Jika tidak, mari kita dapatkan satu set-up
$ clj -M:nhspd /var/local/nhspd-2020-11Setelah beberapa menit, Indeks Direktori Kode Pos NHS akan diunduh dan diimpor.
Anda akan membutuhkan kunci API Digital TRUD NHS.
Masuk ke NHS Digital Trud dan temukan kunci API Anda di bawah profil Anda. Tulis kunci itu ke file dan tautan ke sana dari baris perintah:
$ clj -M:install --nhspd /var/local/nhspd-2020-11 --api-key /path/to/api-key.txt --cache-dir /var/tmp/trud /var/local/ods-2021-02 clods akan melanjutkan untuk mengunduh file distribusi terbaru dari Trud, atau menggunakan versi yang diunduh yang ada di cache lokal Anda jika tersedia, dan membuat indeks organisasi.
Meskipun Anda dapat menanamkan semua ini ke dalam satu gambar Docker tunggal untuk penempatan, mungkin lebih baik untuk menautkan ke sistem file baca-saja yang dibagikan dan cukup menautkan ke data backend terbaru.
Untuk menjalankan sebagai layanan mikro, Anda perlu memasukkan jalur dari kedua indeks ODS, dan indeks NHSPD serta port untuk berjalan.
$ clj -M:serve /var/local/ods-2021-02 /var/local/nhspd-2020-11 8080Ada tiga titik akhir:
Mari kita dapatkan data kode pos NHS tentang kode pos:
$ curl -H " Accept: application/json " localhost:8080/ods/v1/postcode/CF144XWHasil:
{ "CANNET" : " N95 " , "PCDS" : " CF14 4XW " , "NHSER" : " W92 " , "SCN" : " N95 " , "PSED" : " 62UBFL16 " , "CTRY" : " W92000004 " , "OA01" : " W00009154 " , "HRO" : " W00 " , "OLDHA" : " QW2 " , "RGN" : " W99999999 " , "OSWARD" : " W05000864 " , "LSOA01" : " W01001770 " , "OSNRTH1M" : 179319 , "CANREG" : " Y1101 " , "OSHLTHAU" : " 7A4 " , "CALNCV" : " W99999999 " , "OSGRDIND" : " 1 " , "MSOA11" : " W02000384 " , "MSOA01" : " W02000384 " , "WARD98" : " 00PTMM " , "OLDHRO" : " W00 " , "CENED" : " TNFL16 " , "OLDPCT" : " 6A8 " , "USERTYPE" : " 0 " , "OSEAST1M" : 317551 , "PCT" : " 7A4 " , "PCD2" : " CF14 4XW " , "NHSRLO" : " W92 " , "OSNRTH100M" : 1793 , "DOTERM" : " " , "STP" : " W92 " , "OSLAUA" : " W06000015 " , "OSHAPREV" : " Q99 " , "EDIND" : " 1 " , "LSOA11" : " W01001770 " , "UR01IND" : " 5 " , "CCG" : " 7A4 " , "OSEAST100M" : 3175 , "DOINTR" : " 199906 " , "PCON" : " W07000051 " , "ODSLAUA" : " 052 " , "OA11" : " W00009154 " , "OSCTY" : " W99999999 " }Mari kita dapatkan data ODS tentang organisasi yang dikenal:
$ curl -H " Accept: application/json " localhost:8080/ods/v1/organisation/7A4BVMari kita cari organisasi:
Pencarian Sederhana dengan Nama:
$ curl -H " Accept: application/json " ' localhost:8080/ods/v1/search?s=University%20Hospital%20Wales 'Mari kita cari operasi GP dalam waktu 1000 m dari kode pos tertentu.
$ curl -H " Accept: application/json " ' localhost:8080/ods/v1/search?roles=RO177&from-postcode=CF144XW&range=1000 'Hasil (di sini saya pipa melalui JQ untuk hanya memberi saya namanya):
$ curl -H "Accept: application/json" 'localhost:8080/ods/v1/search?roles=RO177&from-postcode=CF144XW&range=1000' | jq '.[] | .name'
"OUT OF HOURS SERVICE"
"WHITCHURCH ROAD SURGERY"
"CRWYS MEDICAL CENTRE"
"NORTH ROAD MEDICAL PRACTICE"
Hasilnya akan diurutkan berdasarkan jarak.
Setiap hasil dianotasi dengan lintang dan bujur WGS84, untuk memudahkan pemrosesan/plot geografis selanjutnya.
$ curl -H " Accept: application/json " ' localhost:8080/ods/v1/search?s=crwys&roles=RO177&from-postcode=CF144XW&range=1000 ' | jq
[
{
" orgId " : {
" root " : " 2.16.840.1.113883.2.1.3.2.4.18.48 " ,
" assigningAuthorityName " : " HSCIC " ,
" extension " : " W97041 "
},
" contacts " : [
{
" type " : " tel " ,
" value " : " 029 20524140 "
}
],
" name " : " CRWYS MEDICAL CENTRE " ,
" operational " : {
" start " : " 1974-04-01 " ,
" end " : null
},
" roles " : [
{
" id " : " RO72 " ,
" isPrimary " : false,
" active " : true,
" startDate " : " 2014-04-15 " ,
" endDate " : null
},
{
" id " : " RO177 " ,
" isPrimary " : true,
" active " : true,
" startDate " : " 1974-04-01 " ,
" endDate " : null
}
],
" orgRecordClass " : " RC1 " ,
" active " : true,
" primaryRole " : {
" id " : " RO177 " ,
" isPrimary " : true,
" active " : true,
" startDate " : " 1974-04-01 " ,
" endDate " : null
},
" relationships " : [
{
" id " : " RE4 " ,
" startDate " : " 1999-04-01 " ,
" endDate " : " 2003-03-31 " ,
" active " : false,
" target " : {
" root " : " 2.16.840.1.113883.2.1.3.2.4.18.48 " ,
" assigningAuthorityName " : " HSCIC " ,
" extension " : " 4WK03 "
}
},
{
" id " : " RE4 " ,
" startDate " : " 2009-10-01 " ,
" endDate " : null,
" active " : true,
" target " : {
" root " : " 2.16.840.1.113883.2.1.3.2.4.18.48 " ,
" assigningAuthorityName " : " HSCIC " ,
" extension " : " 7A4 "
}
},
{
" id " : " RE4 " ,
" startDate " : " 2003-04-01 " ,
" endDate " : " 2009-09-30 " ,
" active " : false,
" target " : {
" root " : " 2.16.840.1.113883.2.1.3.2.4.18.48 " ,
" assigningAuthorityName " : " HSCIC " ,
" extension " : " 6A8 "
}
}
],
" location " : {
" address1 " : " THE CRWYS SURGERY " ,
" address2 " : " WEDAL ROAD " ,
" town " : " CARDIFF " ,
" county " : " SOUTH GLAMORGAN " ,
" postcode " : " CF14 3QX " ,
" country " : " WALES " ,
" uprn " : " 10008905579 " ,
" latlon " : [
52.714814004647714,
-5.273869588498894
]
},
" isReference " : false
}
]$ clj -M:fhir-r4 /var/local/ods-2021-02 /var/local/nhspd-2020-11 8080Ayo coba:
$ curl -H " Accept: application/json " ' http://localhost:8080/fhir/Organization/2.16.840.1.113883.2.1.3.2.4.18.48|W93036 ' Hasil:
{
"resourceType" : " Organization " ,
"id" : " W93036 " ,
"identifier" : [
{
"use" : " official " ,
"system" : " https://fhir.nhs.uk/Id/ods-organization " ,
"value" : " W93036 "
},
{
"use" : " old " ,
"system" : " urn:oid:2.16.840.1.113883.2.1.3.2.4.18.48 " ,
"value" : " W93036 "
}
],
"active" : true ,
"type" : [
{
"coding" : [
{
"system" : " urn:oid:2.16.840.1.113883.2.1.3.2.4.17.507 " ,
"code" : " RO72 " ,
"display" : " OTHER PRESCRIBING COST CENTRE "
}
]
},
{
"coding" : [
{
"system" : " urn:oid:2.16.840.1.113883.2.1.3.2.4.17.507 " ,
"code" : " RO177 " ,
"display" : " PRESCRIBING COST CENTRE "
},
{
"system" : " http://hl7.org/fhir/ValueSet/organization-type " ,
"code" : " prov " ,
"display" : " Healthcare Provider "
}
]
}
],
"name" : " CASTLE GATE MEDICAL PRACTICE " ,
"telecom" : [
{
"system" : " phone " ,
"value" : " 01600 713811 "
}
],
"address" : [
{
"line" : [
" REAR OF MONNOW STREET "
],
"city" : " MONMOUTH " ,
"district" : " GWENT " ,
"postalCode" : " NP25 3EQ " ,
"country" : " WALES "
}
],
"partOf" : {
"type" : " Organization " ,
"identifier" : {
"use" : " official " ,
"system" : " https://fhir.nhs.uk/Id/ods-organization " ,
"value" : " 7A6 "
},
"display" : " ANEURIN BEVAN UNIVERSITY LHB "
}
}API FHIR juga mendukung pencarian oleh berbagai parameter.
Mari kita cari praktik umum di Monmouth
$ curl -H " Accept: application/json " ' localhost:8080/fhir/Organization?address=monmouth&type=2.16.840.1.113883.2.1.3.2.4.17.507|RO177 'Atau cari operasi GP bernama:
$ curl -H " Accept: application/json " ' localhost:8080/fhir/Organization?name=Whitchurch&address=Wales&type=2.16.840.1.113883.2.1.3.2.4.17.507|RO177 'Periksa dependensi yang sudah ketinggalan zaman:
$ clj -M:outdatedLakukan Pemeriksaan Kompilasi (Opsional)
$ clj -M:fhir-r4:serve:checkLakukan serat (opsional)
$ clj -M:lint/kondo
$ clj -M:lint/eastwoodUntuk menghasilkan toples perpustakaan:
clj -T:build jarUntuk menginstal toples perpustakaan ke dalam repositori Maven lokal Anda:
clj -T:build installUntuk menggunakan perpustakaan ke clojars:
clj -T:build deployJika lebih suka, Anda dapat menghasilkan file jar yang dapat dijalankan dengan mudah di baris perintah.
Bangun server uberjar dan jalankan. Ini memberikan API istirahat sederhana.
$ clj -T:build http-server
$ java -jar target/clods-http-server-v1.0.152.jar /var/local/ods-2021-02 /var/local/nhspd-2020-11 8080Bangun server FHIR Uberjar dan jalankan. Ini menyediakan server FHIR R4.
$ clj -T:build fhir-r4-server
$ java -jar target/clods-fhir-r4-server-1.0.152.jar /var/local/ods-2021-02 /var/local/nhspd-2020-11 8080Anda dapat meneruskan file stoples mandiri ini; Mereka tidak memiliki ketergantungan.
Hak Cipta © 2020-22 Eldrix Ltd dan Mark Wardle