ODA definitions
This repository contains ODA architecture and UI definitions.
Design principles
See suunnitteluperiaatteet.md (in Finnish)
Architecture
The architecture is guided by the following principles:
- Modular API first system
- Composed of microservices
- Simple and minimalistic user experience
- User centric
- Multilingual
- Agile development
- Systems design
- Small is beautiful
- Open data
- Open source
- Open API
- Open standards
- My Data.
Further reading (in Finnish): Arkkitehtuuriperiaatteet
Modules
Currently implemented modules are listed below. See their repositories for more detailed software achitecture description.
oda-backend
Backend provides static resources, API gateway and integration to Suomi.fi SSO. Backend is the contact point for web browsers and handles security aspects such as CSRF protection.
oda-esb
ODA ESB provides XML interfaces for external services via KaPa and converts external XML interfaces to FHIR/JSON interfaces for internal services.
oda-fhir-service
FHIR Service Provides FHIR resource APIs on top of oda-phr and external systems that provide FHIR APIs.
oda-fhir-service-common
Java library for providing FHIR services.
oda-logging-service
Logging Service provides a centralized logging server and a client library that handles server communication when built into other services.
oda-phr
Personal health record database.
oda-service-common
Shared server side Java library.
oda-web-front
Web Browser UI that is served from oda-backend.
oda-notification-service
Oda-notification-service sends notifications to end users.
oda-cds-service
Oda-cds-service acts as a decision making service for oda-fhir-service regarding specific questionnaires stored in oda-phr.
oda-analytics-service
Oda-analytics-service generates dashboard reports from ODA log data.
oda-idp
ODA OpenID Connect Provider for authenticating and authorizing end users.
oda-media-storage
Provides an API to file storage. Checks authorization using oda-fhir-service.
Information architecture
Information is stored primarily as FHIR resources. Data model is described in ODA RFC repository.
ODA uses standardized codesets whenever possible. See full codes and code systems listing.
Roles and authorizations
Documented (in Finnish): Roolit ja valtuutukset
Integrations
See Integrations for details.
Functional architecture
Some of the module interactions are described with sequence diagrams.
How a service provider is selected for a customer is described in customer-to-service.md.
Key technologies
Current microservices are implemented as standalone Java 8 applications with Spring Boot. PostgreSQL 9.6 is used as database.
Web frontend is implemented as an EcmaScript 6/HTML 5 single page application. Key libraries include
- react UI-component library
- react-router v4 front-end routing and
- redux for application state handling.
Deployment architecture
Visual design
Tools and conventions
- Wireframes are produced with Sketch.
- Working with diagrams
- Code Conventions
- Working with FHIR profiles
Glossary
See glossary.md