Uma biblioteca, um serviço da web e um conjunto de ferramentas para dados organizacionais de saúde e assistência do Reino Unido.
Os dados de referência da Organização de Cuidados Sociais e Saúde são publicados pelo NHS Digital sob o DCB0090 padrão.
clods foi projetado para fornecer serviços de "localização" até a granularidade de um site organizacional usando esses dados de referência.
clods fazem parte de um conjunto de serviços de dados fundamentais e serviços de computação que ajudam a responder a perguntas sobre o 'quem', 'o que', 'quando', 'como' e 'por que' dos dados de saúde e cuidados.
Este software fornece uma biblioteca e um serviço da web. Como biblioteca, ela pode ser facilmente incorporada a um aplicativo maior. Como microsserviço, ele pode ser facilmente incorporado a um conjunto de serviços de plataforma fundamental. Ele fornece uma API REST simples e uma API HL7 FHIR (R4).
Você pode obter informações gerais para uma cirurgia específica de GP usando ODS-Weekly.
Os serviços de localização mais finos (por exemplo, a cama) são fornecidos por outros módulos como parte de um serviço de localização de concierge unificado. Os dados de localização e status da enfermaria e da cama geralmente são fornecidos como parte de um sistema administrativo de paciente, em vez de serviços de dados de referência, mas isso visa fornecer uma interface de programação de aplicativos perfeita (API) para registrar adequadamente o contexto da captura de qualquer dados clínicos .
Na sua essência, o software fornece uma representação íntima dos dados originais da fonte, além de fornecer um conjunto mais abstrato de sistemas que serão federais; Isso significa que o software de aplicativo trabalha em limites internacionais com harmonização e abstrações de tempo de execução em vários serviços de back -end.
Os dados do setor público devem ser abertos, publicados e auto-descritas, com mecanismos para permitir a computação. Isso significa que podemos escrever um software que atualiza automaticamente contra os índices mestre de uma variedade de dados importantes do setor público.
Ao executar como uma biblioteca ou microsserviço, a única dependência é um sistema de arquivos.
Antigamente, cuidamos de servidores de indivíduos e demos nomes, análogos em cuidar de animais de estimação. Eles dariam vida há muito tempo e nós executávamos serviços neles. Você faria com os administradores fazer login manualmente para atualizar no local, atualizando a versão do software ou atualizando os dados de apoio.
Você ainda pode usar esse modelo para este e para o outro software PatientCare , mas a abordagem mais moderna é tratar sua infraestrutura de computação e dados como gado. Ao contrário de um animal de estimação, você geralmente não nomeia seu gado e pode ter uma rotatividade significativa nesses gado. Como tal, é totalmente razoável aumentar as novas versões deste serviço com novos dados atualizados.
Como tal, isso e os outros serviços PatientCare são projetados para automatizar o maior número possível de etapas.
Você precisará instalar o Clojure para obter a melhor experiência, mas é possível executar usando um frasco pré-construído. Veja abaixo as informações sobre os arquivos JAR.
Este serviço precisa de um diretório em um sistema de arquivos para operar.
Os dados organizacionais do NHS incluem informações sobre as organizações do NHS. Para ativar os serviços geográficos, clods combina esses dados com dados geográficos do NHS usando o 'NHS Postcode Directory'. Você pode usar o NHSPD como um serviço independente, mas, por conveniência, clods inclui essa ferramenta.
Nestes exemplos, usaremos
Você pode optar por usar um único diretório e atualizar no local ou criar um novo repositório em intervalos. Eu prefiro dados de apoio imutáveis e somente leitura por padrão, então favoreça o último.
Também precisamos especificar um cache temporário para dados baixados.
Para esses exemplos, usaremos
Você já pode ter NHSPD em execução; Use o índice que você usa para isso.
Caso contrário, vamos configurar um
$ clj -M:nhspd /var/local/nhspd-2020-11Após alguns minutos, o índice de diretório de código postal do NHS será baixado e importado.
Você precisará de uma chave da API do NHS Digital Trud.
Faça login no NHS Digital Trud e encontre sua chave da API em seu perfil. Escreva essa chave para um arquivo e vincule-se a ele na linha de comando:
$ 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 continuará fazendo o download dos arquivos de distribuição mais recentes do Trud ou usará a versão baixada existente em seu cache local, se disponível, e criará um índice de organização.
Embora você possa incorporar tudo isso em uma única imagem do Docker para implantação, pode ser melhor vincular a um sistema de arquivos somente leitura compartilhado e simplesmente vincular aos dados mais recentes de back-end.
Para ser executado como microsserviço, você precisa incluir os caminhos do índice de um ODS e um índice NHSPD, bem como a porta a ser executada.
$ clj -M:serve /var/local/ods-2021-02 /var/local/nhspd-2020-11 8080Existem três terminais:
Vamos obter dados do código postal do NHS sobre um código postal:
$ curl -H " Accept: application/json " localhost:8080/ods/v1/postcode/CF144XWResultado:
{ "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 " }Vamos obter dados do ODS sobre uma organização conhecida:
$ curl -H " Accept: application/json " localhost:8080/ods/v1/organisation/7A4BVVamos procurar uma organização:
Pesquisa simples por nome:
$ curl -H " Accept: application/json " ' localhost:8080/ods/v1/search?s=University%20Hospital%20Wales 'Vamos procurar cirurgias de GP dentro de 1000m de um código postal específico.
$ curl -H " Accept: application/json " ' localhost:8080/ods/v1/search?roles=RO177&from-postcode=CF144XW&range=1000 'Resultado (aqui eu pico através do JQ para apenas me dar os nomes):
$ 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"
Os resultados serão classificados por distância.
Cada resultado é anotado com latitude e longitude WGS84, para facilitar o processamento/plotagem geográfico.
$ 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 8080Vamos tentar:
$ curl -H " Accept: application/json " ' http://localhost:8080/fhir/Organization/2.16.840.1.113883.2.1.3.2.4.18.48|W93036 ' Resultado:
{
"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 "
}
}A API FHIR também suporta pesquisas por vários parâmetros.
Vamos procurar práticas gerais em 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 'Ou procure uma cirurgia de GP nomeada:
$ 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 'Verifique se há dependências desatualizadas:
$ clj -M:outdatedExecute verificações de compilação (opcional)
$ clj -M:fhir-r4:serve:checkExecute o Lining (Opcional)
$ clj -M:lint/kondo
$ clj -M:lint/eastwoodPara gerar um frasco de biblioteca:
clj -T:build jarPara instalar um frasco de biblioteca no seu repositório local do Maven:
clj -T:build installPara implantar a biblioteca em Clojars:
clj -T:build deploySe preferir, você pode gerar arquivos JAR que podem ser executados facilmente na linha de comando.
Crie um Uberjar de servidor e execute -o. Isso fornece uma API de descanso simples.
$ 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 8080Construa um servidor FHIR Uberjar e execute -o. Isso fornece um servidor 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 8080Você pode passar esses arquivos de jar independentes; Eles não têm dependências.
Copyright © 2020-22 Eldrix Ltd e Mark Wardle