圖書館,網絡服務以及用於英國健康和護理組織數據的工具。
健康和社會護理組織參考數據由NHS Digital根據標準DCB0090發布。
clods旨在使用此參考數據提供“位置”服務,直至組織站點的粒度。
clods的一組支持基礎數據和計算服務的一部分,這些服務有助於回答有關“誰”,“什麼”,“ nher”,“''''''''''''''''' '和'為什麼和“為什麼”的問題。
該軟件同時提供庫和Web服務。作為庫,可以很容易地將其嵌入較大的應用程序中。作為微服務,它可以很容易地嵌入到一套基礎平台服務中。它既可以提供普通的REST API以及HL7 FHIR API(R4)。
您可以每週使用ODS獲取特定GP手術的全科醫生信息。
作為統一禮賓服務服務的一部分,其他模塊提供了更細粒度的位置服務(例如病房,床)。病房和床位的位置和狀態數據通常是作為患者管理系統而不是參考數據服務的一部分提供的,但這旨在提供無縫的應用程序編程接口(API),以便適當記錄捕獲任何臨床數據的上下文。
該軟件以此為核心提供了原始源數據的密切表示,同時還提供了一組更抽象的系統,這些系統將是聯合的。這意味著應用程序軟件在國際邊界上運行,運行時協調和跨多個後端服務的抽象。
公共部門的數據應開放,發布和自稱,並具有允許計算性的機制。這意味著我們可以編寫軟件,該軟件會自動根據一系列重要的公共部門數據的主索引更新。
當作為庫或微服務運行時,唯一的依賴性是文件系統。
在過去,我們照顧個人服務器並給他們起名字,類似於照顧寵物。他們將長期存在,我們會為他們提供服務。您將有管理員手動登錄到現場更新,升級軟件的版本或更新備份數據。
您仍然可以將此模型用於此模型和其他PatientCare軟件,但更現代的方法是將您的計算和數據基礎設施視為牛。與寵物不同,您通常不會命名您的牛,並且可能在那些牛的營業額中大量營業額。因此,使用新的更新數據來啟動此服務的新版本是完全合理的。
因此,這和其他PatientCare服務旨在自動化盡可能多的步驟。
您需要安裝Clojure以獲得最佳體驗,但是可以使用預先建造的罐子運行。有關JAR文件的信息,請參見下文。
該服務需要文件系統上的目錄才能操作。
NHS組織數據包括有關NHS組織的信息。為了啟用地理服務, clods使用“ NHS Postode Directory”將這些數據與NHS地理數據結合在一起。您可以將NHSPD用作獨立服務,但是為了方便起見, clods包括該工具。
在這些示例中,我們將使用
您可以選擇使用單個目錄和現場更新,或者以間隔構建新存儲庫。我更喜歡默認情況下只讀,不變的備份數據,因此請偏愛後者。
我們還需要為下載數據指定臨時緩存。
對於這些示例,我們將使用
您可能已經運行NHSPD;使用您使用的索引。
如果沒有,讓我們進行一個設置
$ clj -M:nhspd /var/local/nhspd-2020-11幾分鐘後,NHS郵政編碼目錄索引將下載並導入。
您將需要NHS Digital Trud API密鑰。
登錄到NHS Digital Trud,並在個人資料下找到您的API鍵。將該鍵寫入文件,然後從命令行鏈接到它:
$ 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將繼續從TRUD下載最新的分發文件,或使用本地緩存中的現有下載版本,並創建組織索引。
雖然您可以將所有這些嵌入到單個Docker映像中進行部署,但最好鏈接到共享的讀取文件系統,然後簡單地鏈接到最新的後端數據。
要作為微服務運行,您需要包括ODS索引的路徑,NHSPD索引以及要運行的端口。
$ clj -M:serve /var/local/ods-2021-02 /var/local/nhspd-2020-11 8080有三個端點:
讓我們獲取有關郵政編碼的NHS郵政編碼數據:
$ curl -H " Accept: application/json " localhost:8080/ods/v1/postcode/CF144XW結果:
{ "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 " }讓我們獲取有關已知組織的ODS數據:
$ curl -H " Accept: application/json " localhost:8080/ods/v1/organisation/7A4BV讓我們搜索一個組織:
簡單的搜索名稱:
$ curl -H " Accept: application/json " ' localhost:8080/ods/v1/search?s=University%20Hospital%20Wales '讓我們搜索特定郵政編碼1000m之內的GP手術。
$ curl -H " Accept: application/json " ' localhost:8080/ods/v1/search?roles=RO177&from-postcode=CF144XW&range=1000 '結果(在這裡,我在JQ中口氣給我名字):
$ 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"
結果將按距離進行排序。
每個結果都用WGS84緯度和經度註釋,以使其更容易向前的地理處理/繪圖。
$ 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 8080讓我們嘗試一下:
$ curl -H " Accept: application/json " ' http://localhost:8080/fhir/Organization/2.16.840.1.113883.2.1.3.2.4.18.48|W93036 ' 結果:
{
"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 "
}
}FHIR API還通過各種參數支持搜索。
讓我們在蒙茅斯尋找一般實踐
$ 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 '或尋找指定的GP手術:
$ 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 '檢查過時的依賴性:
$ clj -M:outdated執行彙編檢查(可選)
$ clj -M:fhir-r4:serve:check執行絨毛(可選)
$ clj -M:lint/kondo
$ clj -M:lint/eastwood生成圖書館罐:
clj -T:build jar要在您的本地Maven存儲庫中安裝圖書館罐:
clj -T:build install將圖書館部署到Clojars:
clj -T:build deploy如果願意,可以生成可以在命令行中輕鬆運行的JAR文件。
構建服務器Uberjar並運行它。這提供了簡單的REST API。
$ 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 8080構建FHIR服務器Uberjar並運行它。這提供了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 8080您可以將這些獨立的Jar文件傳遞;他們沒有依賴性。
版權所有©2020-22 Eldrix Ltd和Mark Wardle