Dette prosjektet håndterer meldinger mottatt på ebXML-standarden.
Prosjektet består av fire hovedmoduler for behandling av ebXML-meldinger.
- EbMS Provider
- EbMS Payload behandling
- CPA Repo
- EbMS Send In
I tillegg er det en modul for asynkron trafikk som lytter på epost, og router meldinger til ebMS-Provider for behandling.
- SMTP-Listener
Selve motoren i ebMS-håndteringen. Det er her ebMS-spesifikasjonen er implementert. Validerer ebXML-konvolutten, pakker ut fagmeldingen og sender den til ebMS-payload.
Behandling av fagmeldingene som er pakket inn i ebXML. Mottar meldinger fra ebMS-provider, og validerer at innholdet er en korrekt fagmelding og er klar for videreformidling til fagsystem.
Holder på alle godkjente CPAer. Mottar ebXML-header informasjon fra ebMS-provider, og validerer innholdet mot relevant CPA.
Denne tjenesten har ansvaret for å route fagmeldingene til og fra fagsystemene. På vei inn mottar den ferdigbehandlede fagmeldinger som routes videre til riktig fagsystem. På vei ut mottar den fagmeldinger fra fagsystemene, og router dem videre til EbMS provider som validerer, pakker og sender ut meldingene.
Liten modul som henter eposter fra definert innboks, og router meldingene videre til ebMS-Provider. Trigges av periodisk NAISJob, og leser alle mail i innboksen ved aktivering.
Alle modulene kjører som selvstendig applikasjoner, og er bygd opp av følgende teknologier
- Kotlin
- Ktor
- Gradle
Avhengigheter og relasjoner til andre repoer i teamet
- https://github.com/navikt/emottak-payload-xsd
- https://github.com/navikt/ebxml-protokoll
- https://github.com/navikt/ebms-sync-router
For å bygge prosjektet brukes gradle.
./gradlew build
Noen av testene bruker testcontainers for å bygge opp et mer komplett kjøretidsmiljø. Disse er avhengig av et fungerende docker miljø. For eksempel docker eller colima på mac.
Hvis du har en mac som bruker de nyere "M"-chipene (eks. M3) vil du møte på problemer når du spinner opp testcontainers i dette prosjektet. Dette gjelder containerne for Oracle DB (gvenzl/oracle-xe:21-slim-faststart) når man bruker docker desktop. For å unngå dette må man heller bruke Colima. Under er steg for hvordan:
- Innstaller Colima.
- Sett DOCKER_HOST env-variabel til Colima (mulig dette må reverseres når man bygger andre prosjekter).
export DOCKER_HOST="unix://${HOME}/.colima/default/docker.sock"
- Start Colima med x86_64.
colima start
- Bygg prosjekt/kjør tester.
For å kunne dra inn de riktige dependenciene, må man opprette en github PAT. Denne trenger rettigheten read:packages og må autoriseres for tilgang til organisasjonen navikt.
Denne PATen må settes som en environment variable, for eksempel globalt i ditt foretrukne shell eller IDE.
export GITHUB_TOKEN=ghp_abcdefghijklmnopqrstuvwxyzABCD012345
Målet for prosjektet er å være i tråd med spesifikasjon fra e-helse.
Les dokumentasjon fra e-helse for deres tolkning av ebXML-standarden.
- ebXML Rammeverk
- Basert på ebXML
- Implementasjon og bruk av ebXML som rammeverk for meldingsutveksling
- Validering av ebXML-meldinger
- Profil for CPP/CPA
Oasis står bak ebXML-standarden, og spesifikasjonen er dokumentert i detalj på følgende sider:
Vi er hovedsakelig tilgjengelige på slack i følgende kanal:
Alle spørsmål relatert til dette prosjektet er velkomne. Alternativt setter vi også pris på pull requests og issues direkte her på Github.