Architecture Overview - usnistgov/asbestos GitHub Wiki

Architecture Overview of NIST FHIR Toolkit

Table of Contents

Focus

  • Testing IHE Profiles based on HL7 FHIR

  • Initial focus is MHD

Packaging and Delivery

  • Microservice architecture

  • Server written in Java

  • UI written in Vue

  • Packaged in Tomcat

  • Downloaded as ZIP file - Includes Tomcat and all services pre-installed

  • Developed on and deploy-able to Windows, Linux, Mac

Major Services

  • Recording proxy

  • Test Engine

  • HAPI FHIR Server

  • XDS Toolkit

Recording Proxy

  • Built directly on Tomcat - all messages based on HTTP

  • Defines configurable Channels - types and instances

  • Channel type can offer message translation

  • Channel instance configurable with

    • id

    • type - controls optional translation

    • target endpoint (FHIRBase if target is FHIR server)

    • environment

Channel instance

  • Created/destroyed with toolkit running

  • Separate log store

  • Log contains full client side and server side messages

Channel types

  • FHIR - no content translation

  • MHD - translation between IHE MHD (client) and IHE XDS (server)

  • Channel defined by implementing Java Interface

Environment

  • Concept taken from XDS Toolkit

  • Defines TLS configuration and certificates

  • Defines coding scheme and code translation

Test Engine

  • Based on HL7 FHIR specification

  • Use TestScript and TestReport resources

  • Implementation includes TestScript extensions

    • Error control/reporting

    • If/then processing - conditional flow control

    • Modularization (main script can call library scripts)

HAPI FHIR Server

  • Included as default server

  • Includes Pre-installed channel

  • NIST FHIR Toolkit code leverages HAPI libraries

XDS Toolkit

  • Needed to support MHD

  • Pre-installed channels

    • MHD Comprehensive metadata

    • MHD Minimal metadata

  • Each channel

    • translates MHD <⇒ XDS

    • server side points to XDS Toolkit simulator

Test organization

  • Test Collections defined

  • Test Collection includes arbitrary number of tests

  • Tests runnable individually or by Test Collection

  • Each Test Collection labeled as client or server

  • Includes simple Patient manager

UI organization

  • Channel selected independently of Test Collection

  • Tests displayed/runnable within their Collection

  • Channel creation/editing

  • FHIR message formatting controllable on-screen

    • GZIP

    • JSON vs XML

  • Utilities section

"Hidden" UI features

  • Inspector

    • Graphical navigation of linked FHIR resources

    • Raw message display

  • Test Inspector (final name not yet chosen)

    • Script/Report display

    • Variable/Fixture (TestScript data elements) display

  • TestScript debugger (under development)

    • Break-points set on individual TestScript actions

    • Display internal state of Test Engine including FHIRPath expressions

    • Used in development of TestScript or while testing Server SUT

Style of testing supported

  • Conformance

    • Server is System Under Test

    • Client is System Under Test

  • Interoperability

    • Client and server interact through Proxy

    • Each server assigned a channel

    • Inspector used to view/grade exchanges (Proxy logs)

Data store

  • Local file system used as data store

  • Called External Cache

  • Concept taken from XDS Toolkit

  • Benefits

    • Ease of installation

    • Scriptable

    • OS tools can peek inside when UI function not available

Workflows

Client testing

System Under Test initiates the message.

Client workflow

Server testing

System Under Test receives the message.

Server workflow
⚠️ **GitHub.com Fallback** ⚠️