图书馆,网络服务以及用于英国健康和护理组织数据的工具。
健康和社会护理组织参考数据由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