Eine Bibliothek, ein Webdienst und eine Reihe von Tools für organisatorische Daten in Großbritannien.
Referenzdaten für Gesundheits- und Social Care -Organisation werden von NHS Digital unter Standard DCB0090 veröffentlicht.
clods soll "Standort" -Dienste bis auf die Granularität einer Organisationsstelle unter Verwendung dieser Referenzdaten anbieten.
clods Teil einer Reihe von fundamentalen Daten und Rechendiensten, die dazu beitragen, Fragen zu dem "wer", "was", "wann", "wie" und "Warum" von Gesundheits- und Pflegedaten zu beantworten.
Diese Software bietet sowohl eine Bibliothek als auch einen Webdienst. Als Bibliothek kann es leicht in eine größere Anwendung eingebettet werden. Als Microservice kann es leicht in eine Reihe von grundlegenden Plattformdiensten eingebettet werden. Es bietet sowohl eine einfache REST -API als auch eine HL7 -FHIR -API (R4).
Sie können Informationen über Allgemeinmediziner für eine bestimmte GP-Operation unter Verwendung von ODS-Wochen erhalten.
Die feindlichen Standortdienste (z. B. Station, Bett) werden von anderen Modulen im Rahmen eines einheitlichen Concierge-Standortdienstes bereitgestellt. Station und Bettort- und Statusdaten werden normalerweise eher als Teil eines Patienten -Verwaltungssystems als als Referenzdatendienste bereitgestellt. Dies ist jedoch darauf abzielt, eine nahtlose Anwendungsprogrammierschnittstelle (API) bereitzustellen, um den Kontext der Erfassung klinischer Daten angemessen aufzuzeichnen .
Im Kern liefert die Software eine enge Darstellung der ursprünglichen Quelldaten und bietet gleichzeitig einen abstrakteren Satz von Systemen, die Federatable sein werden. Das bedeutet, dass Anwendungssoftware über internationale Grenzen hinweg mit der Harmonisierung und Abstraktionen in mehreren Backend -Diensten über die Laufzeit und Abstraktionen arbeitet.
Die Daten des öffentlichen Sektors sollten offen, veröffentlicht und selbst beschreiben, mit Mechanismen, um die Berechnung zu ermöglichen. Das bedeutet, dass wir Software schreiben können, die automatisch gegen Master -Indizes einer Reihe wichtiger Daten des öffentlichen Sektors aktualisiert wird.
Wenn Sie entweder als Bibliothek oder Microservice ausgeführt werden, ist die einzige Abhängigkeit ein Dateisystem.
In den alten Tagen kümmerten wir uns um Einzelpersonen und gaben ihnen Namen, die sich um Haustiere kümmern. Sie wären langlebig und wir würden Dienste für sie ausführen. Sie haben Administratoren manuell anmelden, um in der Stelle zu aktualisieren, wodurch entweder die Version der Software aktualisiert oder die Sicherungsdaten aktualisiert werden.
Sie können dieses Modell für diese und die andere PatientCare -Software weiterhin verwenden, aber der modernere Ansatz besteht darin, Ihre Computer- und Dateninfrastruktur als Vieh zu behandeln. Im Gegensatz zu einem Haustier benennen Sie Ihr Vieh normalerweise nicht und haben möglicherweise einen erheblichen Umsatz in diesen Rindern. Daher ist es völlig vernünftig, neue Versionen dieses Dienstes mit neuen aktualisierten Daten zu verbessern.
Daher sind dies und die anderen PatientCare so konzipiert, dass sie so viele Schritte wie möglich automatisieren.
Sie müssen Clojure für die beste Erfahrung installieren, aber es ist möglich, mit einem vorgefertigten Glas zu laufen. Informationen zu den JAR -Dateien finden Sie unten.
Dieser Service benötigt ein Verzeichnis in einem Dateisystem für den Betrieb.
Die NHS -Organisationsdaten enthalten Informationen zu NHS -Organisationen. Um geografische Dienste zu ermöglichen, kombiniert clods diese Daten mit geografischen NHS -Daten mithilfe des 'NHS -Postleitkasse -Verzeichnisses'. Sie können NHSPD als eigenständigen Service verwenden, aber aus Gründen der Einschätzung beinhaltet clods diese Werkzeuge.
In diesen Beispielen werden wir verwenden
Sie können wählen, ob Sie ein einzelnes Verzeichnis und ein Update-in-Place verwenden oder ein neues Repository in Intervallen erstellen können. Ich bevorzuge standardmäßig schreibgeschützte, unveränderliche Backing-Daten, bevorzugt der letztere.
Wir müssen auch einen temporären Cache für heruntergeladene Daten angeben.
Für diese Beispiele werden wir verwenden
Möglicherweise werden NHSPD bereits ausgeführt. Verwenden Sie den Index, den Sie dafür verwenden.
Wenn nicht, lassen Sie uns eine Setup erhalten
$ clj -M:nhspd /var/local/nhspd-2020-11Nach einigen Minuten wurde der NHS Postcode Directory Index heruntergeladen und importiert.
Sie benötigen einen NHS Digital Trud API -Schlüssel.
Melden Sie sich beim NHS Digital Trud an und finden Sie Ihren API -Schlüssel unter Ihrem Profil. Schreiben Sie diesen Schlüssel in eine Datei und einen Link dazu aus der Befehlszeile:
$ 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 werden die neuesten Verteilungsdateien von Trud herunterladen oder die vorhandene heruntergeladene Version in Ihrem lokalen Cache verwenden, falls verfügbar, und erstellen Sie einen Organisationsindex.
Während Sie dies all dies in ein einzelnes Docker-Image für die Bereitstellung einbetten können, ist es möglicherweise besser, stattdessen auf ein freigegebenes schreibgeschütztes Dateisystem zu verlinken und einfach mit den neuesten Backend-Daten zu verlinken.
Um als Microservice auszuführen, müssen Sie die Pfade des beiden ODS -Index und einen NHSPD -Index sowie den angestrebten Port einbeziehen.
$ clj -M:serve /var/local/ods-2021-02 /var/local/nhspd-2020-11 8080Es gibt drei Endpunkte:
Lassen Sie uns NHS -Postleitzahldaten zu einer Postleitzahl erhalten:
$ curl -H " Accept: application/json " localhost:8080/ods/v1/postcode/CF144XWErgebnis:
{ "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 " }Lassen Sie uns ODS -Daten über eine bekannte Organisation erhalten:
$ curl -H " Accept: application/json " localhost:8080/ods/v1/organisation/7A4BVSuchen wir nach einer Organisation:
Einfache Suche nach Namen:
$ curl -H " Accept: application/json " ' localhost:8080/ods/v1/search?s=University%20Hospital%20Wales 'Suchen wir nach GP -Operationen innerhalb von 1000 m von einer bestimmten Postleitzahl.
$ curl -H " Accept: application/json " ' localhost:8080/ods/v1/search?roles=RO177&from-postcode=CF144XW&range=1000 'Ergebnis (hier löste ich JQ, um mir nur die Namen zu geben):
$ 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"
Die Ergebnisse werden nach Entfernung sortiert.
Jedes Ergebnis wird mit WGS84 -Breitengrad und Längengrad kommentiert, um die geografische Verarbeitung/Darstellung der Weitergabe zu erleichtern.
$ 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 8080Versuchen wir es:
$ curl -H " Accept: application/json " ' http://localhost:8080/fhir/Organization/2.16.840.1.113883.2.1.3.2.4.18.48|W93036 ' Ergebnis:
{
"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 "
}
}Die FHIR -API unterstützt auch die Suche nach einer Vielzahl von Parametern.
Suchen wir nach allgemeinen Praktiken in 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 'Oder suchen Sie nach einer benannten GP -Operation:
$ 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 'Überprüfen Sie nach veralteten Abhängigkeiten:
$ clj -M:outdatedKompilierungsprüfungen durchführen (optional)
$ clj -M:fhir-r4:serve:checkAusführen (optional)
$ clj -M:lint/kondo
$ clj -M:lint/eastwoodUm ein Bibliotheksglas zu generieren:
clj -T:build jarSo installieren Sie ein Bibliotheksglas in Ihrem lokalen Maven -Repository:
clj -T:build installUm die Bibliothek für Clojars bereitzustellen:
clj -T:build deployWenn Sie es vorziehen, können Sie JAR -Dateien generieren, die einfach in der Befehlszeile ausgeführt werden können.
Erstellen Sie einen Server Uberjar und führen Sie ihn aus. Dies liefert eine einfache 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 8080Erstellen Sie einen FHIR -Server Uberjar und führen Sie ihn aus. Dies liefert einen FHIR R4 -Server.
$ 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 8080Sie können diese eigenständigen Glasdateien übergeben. Sie haben keine Abhängigkeiten.
Copyright © 2020-22 Eldrix Ltd und Mark Wardle