Une bibliothèque, un service Web et un ensemble d'outils pour les données organisationnelles de santé et de soins britanniques.
Les données de référence de l'organisation de la santé et des soins sociaux sont publiées par NHS Digital sous DCB0090 standard.
clods est conçu pour fournir des services "localisation" jusqu'à la granularité d'un site organisationnel en utilisant ces données de référence.
clods fait partie d'une suite de données fondamentales et de services informatiques qui aident à répondre aux questions sur le «Who», «What», «Quand», «comment» et «pourquoi» des données de santé et de soins.
Ce logiciel fournit à la fois une bibliothèque et un service Web. En tant que bibliothèque, il peut facilement être intégré dans une application plus grande. En tant que microservice, il peut facilement être intégré dans une suite de services de plate-forme fondamentale. Il fournit à la fois une API de repos simple ainsi qu'une API HL7 FHIR (R4).
Vous pouvez obtenir des informations générales pour une chirurgie GP spécifique en utilisant ODS-hebdomadaire.
Les services de localisation plus finement à grain (par exemple Ward, Bed) sont fournis par d'autres modules dans le cadre d'un service de localisation de conciergerie unifiée. Les données d'emplacement et d'état des quartiers et du lit sont généralement fournies dans le cadre d'un système administratif des patients plutôt que des services de données de référence, mais cela vise à fournir une interface de programmation d'application sans couture (API) afin d'enregistrer de manière appropriée le contexte de la capture de toutes les données cliniques .
À la base, le logiciel fournit une représentation étroite des données source d'origine tout en fournissant un ensemble de systèmes plus abstrait qui sera fédérable; Cela signifie que les logiciels d'application fonctionnent à travers les limites internationales avec l'harmonisation d'exécution et les abstractions sur plusieurs services backend.
Les données du secteur public doivent être ouvertes, publiées et se décrire, avec des mécanismes pour permettre la calculabilité. Cela signifie que nous pouvons écrire un logiciel qui se met automatiquement à jour par rapport aux index maîtres d'une gamme de données importantes du secteur public.
Lors de l'exécution en tant que bibliothèque ou microservice, la seule dépendance est un système de fichiers.
Autrefois, nous avons pris soin des serveurs individuels et leur avons donné des noms, analogues à la prise en charge des animaux de compagnie. Ils auraient une durée de vie de longue date et nous dirigerions des services sur eux. Vous auriez des administrateurs qui se connectent manuellement à la mise à jour, à la mise à niveau de la version du logiciel ou à la mise à jour des données de support.
Vous pouvez toujours utiliser ce modèle pour cela et dans l'autre logiciel de PatientCare , mais l'approche la plus moderne consiste à traiter votre infrastructure informatique et de données comme des bovins. Contrairement à un animal de compagnie, vous ne nommez généralement pas votre bétail et vous pourriez avoir un chiffre d'affaires important dans ces bovins. En tant que tel, il est tout à fait raisonnable de faire tourner de nouvelles versions de ce service avec de nouvelles données mises à jour.
En tant que tels, cela et les autres services PatientCare sont conçus pour automatiser autant d'étapes que possible.
Vous devrez installer Clojure pour la meilleure expérience, mais il est possible de s'exécuter à l'aide d'un pot pré-construit. Voir ci-dessous pour plus d'informations sur les fichiers JAR.
Ce service a besoin d'un répertoire sur un système de fichiers pour fonctionner.
Les données organisationnelles du NHS comprennent des informations sur les organisations du NHS. Pour activer les services géographiques, clods combinent ces données avec les données géographiques du NHS à l'aide du «répertoire post-code NHS». Vous pouvez utiliser NHSPD comme service autonome, mais pour plus de commodité, clods comprennent cet outil.
Dans ces exemples, nous utiliserons
Vous pouvez choisir d'utiliser un seul répertoire et de mise à jour en place, ou créer un nouveau référentiel à intervalles. Je préfère les données de support en lecture seule et immuables par défaut, donc favorisez ce dernier.
Nous devons également spécifier un cache temporaire pour les données téléchargées.
Pour ces exemples, nous utiliserons
Vous avez peut-être déjà le NHSPD en cours d'exécution; Utilisez l'index que vous utilisez pour cela.
Sinon, obtenons une configuration
$ clj -M:nhspd /var/local/nhspd-2020-11Après quelques minutes, l'index du répertoire du code postal NHS aura été téléchargé et importé.
Vous aurez besoin d'une clé API NHS Digital TRUD.
Connectez-vous au NHS Digital Trud et trouvez votre clé API sous votre profil. Écrivez cette clé dans un fichier et liez-le à partir de la ligne de commande:
$ 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 procédera à la téléchargement des derniers fichiers de distribution à partir de TRUD, ou utilisera la version téléchargée existante dans votre cache local si disponible, et créez un index de l'organisation.
Bien que vous puissiez intégrer tout cela dans une seule image Docker pour le déploiement, il pourrait être préférable de créer un lien vers un système de fichiers en lecture seule partagé et simplement un lien vers les dernières données backend.
Pour exécuter en microservice, vous devez inclure les chemins de temps de l'index ODS et un index NHSPD ainsi que le port sur lequel s'exécuter.
$ clj -M:serve /var/local/ods-2021-02 /var/local/nhspd-2020-11 8080Il y a trois points de terminaison:
Obtenons les données du code postal NHS sur un code postal:
$ curl -H " Accept: application/json " localhost:8080/ods/v1/postcode/CF144XWRésultat:
{ "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 " }Obtenons des données ODS sur une organisation connue:
$ curl -H " Accept: application/json " localhost:8080/ods/v1/organisation/7A4BVCherchons une organisation:
Recherche simple par nom:
$ curl -H " Accept: application/json " ' localhost:8080/ods/v1/search?s=University%20Hospital%20Wales 'Recherchons les chirurgies GP à moins de 1000 m d'un code postal spécifique.
$ curl -H " Accept: application/json " ' localhost:8080/ods/v1/search?roles=RO177&from-postcode=CF144XW&range=1000 'Résultat (Ici, je tube JQ pour me donner les noms):
$ 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"
Les résultats seront triés par distance.
Chaque résultat est annoté avec WGS84 Latitude et Longitude, pour faciliter le traitement / le traçage géographique de l'Outward.
$ 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 8080Essayons-le:
$ curl -H " Accept: application/json " ' http://localhost:8080/fhir/Organization/2.16.840.1.113883.2.1.3.2.4.18.48|W93036 ' Résultat:
{
"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 "
}
}L'API FHIR prend également en charge la recherche par une variété de paramètres.
Cherchons des cabinets généraux à 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 rechercher une chirurgie GP nommée:
$ 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 'Vérifiez les dépendances obsolètes:
$ clj -M:outdatedEffectuer des chèques de compilation (facultatif)
$ clj -M:fhir-r4:serve:checkEffectuer une lie (facultative)
$ clj -M:lint/kondo
$ clj -M:lint/eastwoodPour générer un pot de bibliothèque:
clj -T:build jarPour installer un pot de bibliothèque dans votre référentiel Maven local:
clj -T:build installPour déployer la bibliothèque dans Clojars:
clj -T:build deploySi vous préférez, vous pouvez générer des fichiers JAR qui peuvent être exécutés facilement sur la ligne de commande.
Créez un serveur Uberjar et exécutez-le. Cela fournit une simple API REST.
$ 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 8080Créez un serveur FHIR Uberjar et exécutez-le. Cela fournit un serveur 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 8080Vous pouvez transmettre ces fichiers JAR autonomes; Ils n'ont pas de dépendances.
Copyright © 2020-22 ElDrix Ltd et Mark Wardle