Integrasjonsguide for skjemautfyller API

Sist oppdatert 23.09.2019

Innholdsfortegnelse

GENERELT

HANDLINGER

Autentisering

Hent skjemabestillinger for skjematype

Hent skjemabestilling

Lever skjema

Feilsituasjoner

GENERELT

API’et er laget for å gi mulighet for bruke ePROM med 3dje-parts skjemautfyllere.

HANDLINGER

API’et tilbyr metoder for å hente ut alle skjemabestillinger av en gitt skjematype, hente ut data fra metadatafeltet til en gitt skjemabestilling og levere skjema. Alle URL’ene som er oppgitt i dette dokumentet går mot integrasjonsmiljøet for ePROM

Autentisering

API’et er beskyttet av OpenID Connect med hybrid-flyt slik at brukere kan holde på en pålogging over lengre tid, noe som feks er tilfelle når en mobil-app skal koble mot API’et. Oppsett av klient som skal benytte APIet gjøres i HelseId admin-grensesnitt for aktuelle miljø. HelseId test ligger her: https://helseid-admin.test.nhn.no/home

Eksempel (C#)

// create a redirect URI using an available port on the loopback address.
// requires the OP to allow random ports on 127.0.0.1 - otherwise set a static port
var browser = new SystemBrowser(7014);
string redirectUri = string.Format($"http://127.0.0.1:{browser.Port}");

var options = new OidcClientOptions
{
    Authority = "https://helseid-sts.test.nhn.no/",
    ClientId = "no.hemit.promstestclient-dev",
    ClientSecret = "426VsgzIbW8jpf4ha4cj8V2nTW9W8oKHUORlBvPrF1EFv4R8byJYvri1XXKG1R7T",
    RedirectUri = redirectUri,
    Scope = "openid profile helseid://scopes/identity/pid helseid://scopes/identity/security_level hemit:eprom.public.api/*",
    FilterClaims = false,
    Browser = browser,
    Flow = OidcClientOptions.AuthenticationFlow.Hybrid
};

var oidcClient = new OidcClient(options);

// Log in to get access token
var loginResult = await oidcClient.LoginAsync(new LoginRequest());
var currentAccessToken = loginResult.AccessToken;

// Create API client
var epromApiClient = new HttpClient();
epromApiClient.SetBearerToken(currentAccessToken)

// Call API using the client
var result = await epromApiClient.GetAsync(...);

Hent skjemabestillinger for skjematype

Ved å sende med skjematypens FormId filtrerer man skjemabestillingene for den innloggede personen slik at FormOrderId til denne personens skjemabestillinger av gitte type blir hentet ut. API’et tilbyr ikke å hente ut alle skjemabestillinger for en person uavhengig av skjematypen.

API kall, GET request:

<API_ROOT>/api/formorders?formId=<FormId>

Returnerer liste med skjemabestillinger:

[<FormOrderId1>, <FormOrderId2>, <FormOrderId3>, ...]

Feilkoder

400 BadRequest - FormId er ikke angitt

Hent skjemabestillingens metadata

Ved å sende med skjemabestillingens FormOrderId kan man hente ut Metadata angitt i skjemabestillingen.

API kall, GET request:

<API_ROOT>/api/formorders/<FormOrderId>

Returnerer skjema metadata:

{
    "morgendose": 1,
    "kveldsdose": 5,
    "...": "..."
}

Feilkoder

404 NotFound - finner ikke skjemabestilling med angitt FormOrderId

Lever skjema

Utfyllt skjema for en skjemabestillingen leveres ved å sende med skjemabestillingens id (FormOrderId) og skjemaets data.

API kall, PUT request:

<API_ROOT>/api/formorders/<FormOrderId>

Data som skal levereres sendes med i body:

{
    "vekt": 70,
    "kommentar": "En liten kommentar fra pasienten",
    "...": "..."
}

Returnerer status på levering: 200 OK hvis leveringen gikk om den skulle

Feilkoder

404 NotFound - finner ikke skjemabestilling med angitt FormOrderId 502 BadGateway - problemer ved levering av skjemadata videre til intern ePROM