Skip to content
Snippets Groups Projects
user avatar
haidner1 authored
In der Datei 'nuget-readme.md' statt 'FIT-Connect Self-Service-Portal' -> 'Self-Service-Portal von FIT-Connect'
e2fce3c4
History

FIT-Connect .NET SDK

Für ein kurzes Beispiel zu Implementierung kann der DemoRunner herangezogen werden.

!! IN DEVELOPMENT NOT FOR PRODUCTION USE !!

FIT-Connect .NET SDK ist eine .NET library for the FIT-Connect API.

Das SDK ist als NuGet Package verfügbar.

Einleitung

Das FIT-Connect .NET SDK bietet eine einfache Möglichkeit, sowohl einen Antragsteller (Sender) als auch einen Antragsempfänger (Subscriber) an FIT-Connect anzubinden.

Voraussetzungen

OSX

Auf OSX wird das SDK nur dann unterstützt, wenn OpenSSL auf dem System installiert ist. Zum Installieren von OpenSSL können Sie Homebrew verwenden:

brew install openssl@1.1

Die Environment-Variable DYLD_LIBRARY_PATH muss auf den Pfad zu OpenSSL verweisen.

Beispiele:

export DYLD_LIBRARY_PATH=/usr/local/opt/openssl/lib
export DYLD_LIBRARY_PATH=/usr/local/opt/openssl@1.1/lib

Weitere Informationen zu FIT-Connect finden Sie hier:

Allgemeines

Environment

Das FIT-Connect SDK kann an die folgenden Umgebungen angeschlossen werden:

  • Testing: FitConnectEnvironment.Testing
  • Staging: FitConnectEnvironment.Staging
  • Production: FitConnectEnvironment.Production

FIT Connect Umgebungen

Hierfür muss der Client die Environment auswählen oder einen eigenen Environment-Parameter übergeben.

Credentials

ClientId und ClientSecret sind die Grundlage, um einen Token vom OAuth-Server abfragen zu können. Die beiden Werte sind im Self-Service Portal der Testumgebung von FIT-Connect zu erstellen.

Sender

Um einen Antrag mit dem SDK versenden zu können, werden eine ClientID und ein ClientSecret benötigt. Diese können im FIT-Connect Self-Service-Portal erzeugt werden. Hier ist beschrieben, wie Sie eine ClientID und ein ClientSecret erhalten.

Offizelle Dokumentation von FIT-Connect zum Versenden von Einreichungen (Anträgen)

Beispiel

Das folgende Beispiel zeigt, wie Sie das SDK in einem sendenden System nutzen, um eine Submission (eine Einreichung) zu erzeugen und zu senden:

var submission = Client
    .GetSender(FitConnectEnvironment.Testing, clientId, clientSecret, logger)
    .WithDestination(destinationId)
    .WithServiceType("FIT Connect Demo", leikaKey)
    .WithAttachments(new Attachment("Test.pdf", "Test Attachment"))
    .WithData("{\"message\":\"Hello World\"}")
    .Submit();

Im Beispiel oben stellt das Argument "FitConnectEnvironment.Testing" die FIT-Connect-Endpunkte zur Verfügung, die aufgerufen werden sollen. Das Argument 'destinationId" enthält die eindeutige Adresse des empfangenden Systems (Fachverfahrens), das die Antragsdaten über FIT-Connect erhalten soll. Das Argument "leikaKey" stellt die ID der beantragten Leistung bereit. "Leika" ist die Abkürzung für "Leistungskatalog".

Details

flowchart LR
    start([GetSender])
    destination(WithDestination)
    service(WithServiceType)
    attachments(WithAttachments)
    data([WithData])
    
    start-->destination-->service-->attachments-->data

Das SDK verhindert auf Grund der FluentAPI, dass die Methoden in der falschen Reihe aufgerufen werden können.

GetSender(FitConnectEnvironment.Testing, clientId, clientSecret, logger)

Hier werden die FIT Connect Environment ausgewählt und die Credentials übergeben. Der Parameter logger ist optional und muss das Interface Microsoft.Extensions.Logging.ILogger implementieren.

.WithDestination(destinationId)

Die destinationId des Zustellpunktes, an den die Submission geschickt werden soll, muss an dieser Stelle übergeben werden.

Noch nicht vollständig getestet!
Eine Möglichkeit, die Destination ID zu ermitteln, geht über die Methode FindDestinationId() des Senders.

.WithServiceType("FIT Connect Demo", leikaKey)

Der Service Type muss an dieser Stelle übergeben werden. Hierfür wird ein Leistungsschlüssel (LeiKa-Schlüssel) benötigt. Leistungsschlüssel haben diese Form urn:de:fim:leika:leistung:99400048079000

.WithAttachments(new Attachment("Test.pdf", "Test Attachment"))

Die Anhänge zum Antrag werden mit .WithAttachments übergeben. Diese Methode erwartet ein Array von Attachment Objekten die als params übergeben werden können.

Das Attachment kann mit den folgenden Parametern erstellt werden:

  • Metadaten und byte[] content
  • Dateiname und Beschreibung

Dazu werden zwei Konstruktoren bereitgestellt:

  • Attachment(Api.Metadata.Attachment metadata, byte[] content)
  • Attachment(string fileName, string description,)

.WithData("{"message":"Hello World"}")

Die Fachdaten werden als JSON String übergeben.

.Submit()

Das Abschicken der Submission erfolgt mit diesem Aufruf.

Subscriber

Das folgende Beispiel zeigt, wie Sie das SDK in einem empfangenden System nutzen, um einen Subscriber zu erzeugen, der Einreichungen von sendenden Systemen erhält.

Beispiel

var subscriber = Client.GetSubscriber(FitConnectEnvironment.Testing, clientId,
    clientSecret,
    privateKeyDecryption,
    privateKeySigning,
    publicKeyEncryption,
    publicKeySignatureVerification,
    logger);

Im Beispiel oben stellt das Argument "privateKeyDecryption" den JSON Web Key (JWK) für den privaten Schlüssel zum Entschlüsseln bereit. Das Argument 'privateKeySigning" enthält den JWK des privaten Schlüssels zum Signieren. Das Argument 'publicKeyEncryption" liefert den JWK des öffentlichen Schlüssels zum Verschlüsseln. Das Argument 'publicKeySignatureVerification" enthält den JWK des öffentlichen Schlüssels zum Überprüfen der Signatur.

Abrufen der verfügbaren Submissions

Das folgende Beispiel zeigt, wie Sie das SDK in einem empfangenden System nutzen, um beim Server (dem Zustelldienst von FIT-Connect) nachzufragen, welche Einreichungen (Submission) zur Abholung bereit liegen.

var submissions = subscriber.GetAvailableSubmissions();

Das folgende Beispiel zeigt, wie Sie das SDK in einem empfangenden System nutzen, um bereitliegende Einreichungen mit ihren Anhängen vom Server (Zustelldienst) abzurufen.

Abrufen der Submissions mit den Anhängen

foreach (var submission in submissions) {
    var subscriberWithSubmission = subscriber.RequestSubmission(submission.SubmissionId);
    var data = subscriber.GetDataJson();
    var attachments = subscriberWithSubmission
        .GetAttachments();
    // Submission accept
    subscriberWithSubmission
        .AcceptSubmission();
    // or submission reject
   subscriberWithSubmission
        .RejectSubmission();

}

Details

flowchart LR

    start([GetSubscriber])
    availableSub(GetAvailableSubmission)
    requestSub(RequestSubmission)
    subscriberWithSub([SubscriberWithSubmission])
    subscriberWithSub_([SubscriberWithSubmission])
    data(GetDataJson)
    attachments(GetAttachments)
    accept(AcceptSubmission)
    reject(RejectSubmission)
    forward(ForwardSumbission)
    finished{{Abgeschlossen}}
    rejected{{Zurueckgewiesen}}
    
    start-->availableSub-->requestSub-->subscriberWithSub
    
    subscriberWithSub_-->data-->attachments
    attachments-->accept-->finished
    attachments-->reject-->rejected
    attachments-->forward

        

.GetSubscriber(...)

Hier werden die FIT Connect Environment ausgewählt, die Keys und die Credentials übergeben. Der Parameter logger ist optional und muss das Interface Microsoft.Extensions.Logging.ILogger implementieren.

.GetAvailableSubmissions()

Liefert eine Liste mit den verfügbaren Submissions zurück.

.RequestSubmission(submissionId)

Hiermit wird die Submission abgerufen und im Subscriber gespeichert. Der Rückgabewert der Funktion ist also Subscriber mit einer Submission

.GetDataJson()

Liefert die Fachdaten als JSON String zurück.

.GetAttachments()

Gibt eine Liste mit den Attachments der Submission zurück. Die Attachments können so geprüft werden.

.AcceptSubmission()

Akzepiert die Submission und löscht diese vom Server.

.RejectSubmission()

Weißt die Submission zurück.

.ForwardSubmission()

Beispiel

        var subscriber = Client.GetSubscriber(FitConnectEnvironment.Testing, clientId,
            clientSecret,
            privateKeyDecryption,
            privateKeySigning,
            publicKeyEncryption,
            publicKeySignatureVerification,
            logger);

        var submissions = subscriber.GetAvailableSubmissions();

        // Alle verfügbaren Submissions laden
        foreach (var submission in submissions) {
            var subscriberWithSubmission = subscriber.RequestSubmission(submission.SubmissionId);
            
            // Laden der Anhänge
            var attachments = subscriberWithSubmission
                .GetAttachments();

            // Ausgabe der Fachdaten auf der Konsole
            logger.LogInformation("Fachdaten: {Data}", subscriberWithSubmission.GetDataJson());
            
            // Submission akzeptieren und abschließen
            subscriberWithSubmission.AcceptSubmission();
        }

Router

Die Client-Implementierung der Router API

Client.GetRouter(FitConnectEnvironment.Development, logger);

glossary