Skip to the content.

BESTILLING AV SKJEMA V2

Sist oppdatert 19.04.2023

Innholdsfortegnelse

Bestilling klient-side

Bestilling server-side

Feilsituasjoner

Mottak av status for bestillingen

API-kallet for bestilling av skjema er i v2 endret slik at man får respons med en gang, uten å vente på at bestillingen har gått igjennom til Helsenorge/Digipost. Når bestillingen er fullført (pasienten har fått beskjed og skjemaet ligger klart til utfylling) vil ePROM gjøre et kall mot Bestillersystemet med status for bestillingen. Bestillersystemet må implementere en service som mottar dette kallet.

Bestilling av skjema kan gjøres både fra server-side og fra klient-side. Ved kall fra server-side kan man benytte seg av et API utviklet av Hemit og distribuert som NuGet pakke for å forenkle oppkoblingen. Alle URL’ene som er oppgitt i dette dokumentet går mot integrasjonsmiljøet for ePROM

NB! I verson v2 av API’et skal ApiKey sendes som en Authorization parameter som del av HTTP header: headers: {"Authorization": "Basic " + apiKey}

Bestilling klient-side

Eksempelkode (javascript)

function placeFormOrderV2() {
    var url = 'https://proms2.hemit.org/promswebapi/api/v2/formorder'; // Demo server
    var apiKey = ""; // The ApiKey for your system
    var formId = "1bc5f9f0-2607-49eb-94f0-6af955bbd79a"; // RAND-12
    var nationalId = "26073941651"; // the national ID of the patient (Norsk fødselsnummer or D-nummer)
    var expiryDate = new Date(new Date().getTime() + (86400000 * 7)); // add 7 days
    var metadata = JSON.stringify({
        age: 76
    });
    var dontStoreCompletedFormInPha = false;
    var distributionRule = "Basic";
    var mustBeSigned = false;
    var signingText = null;
    var physicalAddress = null;
    var testMode = false;
    var onBehalfOfNationalId = null;

    $.ajax({
        url: url,
        type: "POST",
        contentType: "application/json;charset=utf-8",
        headers: {
            "Authorization": "Basic " + apiKey
        },
        data: JSON.stringify({
            formId,
            nationalId,
            expiryDate,
            null,
            metadata,
            dontStoreCompletedFormInPha,
            distributionRule,
            mustBeSigned,
            signingText,
            physicalAddress,
            testMode,
            onBehalfOfNationalId
        }),
        success: function(data) {
            alert("formOrderId: " + data.id + "\nsingleUseCode: " + data.singleUseCode + "\nloginUrl: " + data.loginUrl + "\npreferred notificationChannel: " + data.notificationChannel);
        },
        error: function() {
            alert("Error!");
        }
    });
}

URL for Web API kall

[https://proms2.hemit.org/promswebapi/api/v2/formorder]

Parametere - Inn

{
    fullName: "Test Testesen",
    addressLine1: "Testeveien 1",
    postalCode: "1234",
    postalPlace: "Testestad"
}

Parametere – Ut

I tillegg til alle inn-parametre:

Metode

POST

Bestilling server-side

API

Tilgjenglig som NuGet pakke

NuGet repository: https://hemit.pkgs.visualstudio.com/a7f87e1f-3406-4ac2-a2d4-18e789c37706/_packaging/Hemit_public_packages%40Local/nuget/v3/index.json

Navn: Hemit.ePROM.Integration
Version: 10.0

Eksempelkode (C#)

[HttpPost]
public async Task<JsonResult> OrderPromsFormV2Async(Guid formId) {
    var form = _context.FormService.GetForm(formId);
    var patient = _context.PatientInRegistryService.GetByFormGuid(formId);

    var promsFormId = _formTypeToPromsFormIdMapping[(FormType) form.FormTypeId];

    var result = await Api.CreateFormOrderV2Async(
        ConfigurationManager.AppSettings["PromsApiBaseUrl"],
        ConfigurationManager.AppSettings["PromsApiKey"],
        promsFormId,
        patient.DecryptedPID,
        DateTime.Now.AddDays(7),
        null,
        GetMetadata(promsFormId, form, patient) false,
        DistributionRule.AllowUnsecure,
        false,
        null,
        null,
        false,
        null);

    if (result.HasErrors) {
        Response.StatusCode = result.ErrorStatusCode.Value;
        Response.Write(result.ErrorJson);
        return null;
    }

    _promsFormOrderService.Add(result.Data.Id, form.Id, form.ReshId);

    return Json(new {
        loginUrl = result.Data.LoginUrl,
        singleUseCode = result.Data.SingleUseCode,
        notificationChannel = result.Data.NotificationChannel.ToString()
    });
}

Parametere - Inn

promsApiBaseUrl skal være https://proms2.hemit.org/promswebapi

Parametere – Ut

Feilsituasjoner

Hvis responsen resulterer i “id”: “00000000-0000-0000-0000-000000000000” er det ikke generert noe bestilling. Dette skjer hvis fødselsnummeret ikke eksisterer. Ellers kan følgende feilsituasjoner oppstå:

Mottak av status for bestillingen

API-kallet for bestilling av skjema er i v2 endret slik at man får respons med en gang, uten å vente på at bestillingen har gått igjennom til Helsenorge/Digipost. Når bestillingen er fullført (pasienten har fått beskjed og skjemaet ligger klart til utfylling) vil ePROM gjøre et kall mot Bestillersystemet med status for bestillingen. Bestillersystemet må implementere en service som mottar dette kallet.

URL for Web API kall

ApiBaseUrl for web API registreres i ePROM Selvbetjeningsmodul under Bestillersystem: https://proms2.hemit.org/PromsAdministration/

Web API må være tilgjenglig på URL: https:// <ApiBaseUrl> /api/PromsFormOrder

F.eks: [https://mrsweb.hemit.org/PromsTestregisterServices/api/PromsFormOrder/]

Parametere - Inn

Parametere - Ut

For parameter inn og ut kan NuGet pakken Hemit.ePROM.Integration benyttes. Bruk da Hemit.ePROM.Integration.PromsFormOrderRequest for parameter inn og Hemit.ePROM.Integration.PromsFormOrderResponse for parameter ut

Metode

PUT

Eksempel request fra Proms (JSON)

{
    "apiKey" : "",
    "formOrderId" : "184738d0-3c39-e611-9c2a-34e6d72e03c7",
    "notificationChannel" : "Helsenorge",
    "timestamp" : "2023-03-29T10:20:10.1804332",
    "timestampUtc" : "2023-03-29T08:20:10.1804332Z",
    "formOrderStatus" : "Ordered",
    "formOrderStatusErrorCode" : "None"
}
{
    "apiKey" : "",
    "formOrderId" : "184738d0-3c39-e611-9c2a-34e6d72e03c7",
    "notificationChannel" : "None",
    "formOrderStatus" : "Error",
    "formOrderStatusErrorCode" : "PatientUnreachable"
}

Eksempel response (JSON)

{
    "success" : true
}
{
    "success" : false
}

Tilbake