Skip to main content

11 posts tagged with "iguhealth"

View All Tags

Updates 2024-07-19

· 2 min read
Confused-Moniker
Maintainer of IGUHealth

Terminology

We now support the following external terminologies:

We will be adding support for Loinc, ICD-10, and RxNorm codes in the following weeks.

Server

Conditional Updates

We've added support for conditional updates. This allows you to update a resource only if certain conditions are met.

Migration to Async for FHIRPath and Canonical Resolution

Our fhirpath library and canonical resolution have been migrated to use async functions. This is to allow for querying external services and databases for terminology and data.

Worker migration to HTTP

Workers are separate processes we use for processing subscriptions and asynchronous tasks. We've migrated these workers to use HTTP to communicate and pull data from our server. This will allow us to scale workers horizontally and improve performance.

GZip Compression

We've added support for GZip compression on all responses.

Security

PKCE Support

We've added support for Proof Key for Code Exchange. This is a security feature that helps prevent authorization code interception attacks. This will now be required for all authorization code flows. Our component library has been updated to make use of this feature.

CapabilityStatement Public

CapabilityStatements are now public for all tenants. This will allow clients to query the server for the capabilities of the server without needing to authenticate.

Conformance Testing

Finished the initial round of conformance testing via Touchstone. We currently have a 91% pass on the FHIR Standard R4 suite.

Bug fixes

  • We now allow undefined values on resources where the SD has a minimum set to 0 for the property.

General

Updated Packages

  • @iguhealth/server: 0.17.0
  • @iguhealth/admin-app: 0.10.0
  • @iguhealth/fhirpath: 0.6.4
  • @iguhealth/components: 0.9.0

Postman Integration

· 2 min read
Confused-Moniker
Maintainer of IGUHealth

Postman is a platform that allows you to use APIs with a user-friendly interface. It can be a great way to test your API endpoints and check for conformance and data quality. This guide will cover how to integrate with Postman.

How to integrate Postman with Iguhealth

Download Postman

  1. Download Postman from the official website.

Setup IGUHealth

  1. Go to the admin application and create a new ClientApplication.
  2. Set the name to Postman
  3. Set the grant type to client_credentials.
  4. Set the response type to token.
  5. Set the secret to a secure value.
  6. Hit Actions and create
  7. Mark down the client ID and secret.
  8. Click Security->AccessPolicy in the admin app and create a new access policy.
  9. Create AccessPolicy with the type set to `Full Access'.
  10. Under Target.Link reference the ClientApplication created on step 5.

Authorize Postman

  1. Open Postman and create a new request.
  2. Under Authorization set type to OAuth 2.0.
  3. Under Configure New Token set Grant Type to Client Credentials.
  4. Set ClientID and ClientSecret to the values from step 7.
  5. Set the Access Token URL to value at User -> Settings -> Endpoints -> Security -> Token
  6. Click Get New Access Token and confirm that you get an access token.

Test

  1. Get R4 endpoint from User -> Settings -> Endpoints -> FHIR -> R4
  2. Make get requests in Postman to the ${r4Endpoint}/metadata
  3. Confirm that you get a 200 response with CapabilityStatement in body.

Updates 2024-06-29

· 2 min read
Confused-Moniker
Maintainer of IGUHealth

Server

Date ranges and Prefixes

Ranges

Date range support is now handled properly for date and datetime values. You can now search for a year like _lastUpdated=2024 or by month _lastUpdated=2024-02.

Date prefixes now supported

The following prefixes are now supported for date queries:

prefixdescriptionexample
gtgreater than_lastUpdated=gt2024-01
ltless than_lastUpdated=lt2024-01
gegreater than or equal to_lastUpdated=ge2024-01
leless than or equal to_lastUpdated=le2024-01

Headers

The following headers are now returned in the response:

HeaderDescription
Last-ModifiedThe last time the resource was modified
EtagThe version id for the resource

Conformance Testing

We've begun testing our conformance using Touchstone https://touchstone.aegis.net/touchstone. We expect to be finished with their FHIR Standard R4 suite by EOW.

Migrated Internal tests to Testscripts on CI

For CI we were testing our APIs using Jest. We've now migrated to using TestScripts. This allows us to test our APIs in a more FHIR compliant way. And to publish our results to our site at https://iguhealth.app/reports

CLI

Operation invocation is now supported on the CLI. You can now invoke operations on the CLI as follows:

System

iguhealth api invoke_system r4 --data $Parameters

Type

iguhealth api invoke_type r4 $ResourceType --data $Parameters

Instance

iguhealth api invoke_instance r4 $ResourceType $ResourceId --data $Parameters

Documentation Updated

We've updated our API Documentation for FHIR operations. You can find it here.

Postman Integration guide

We've added a guide on how to integrate Postman with Iguhealth. You can find it here.

General

Updated Packages

  • @iguhealth/server: 0.15.1
  • @iguhealth/admin-app: 0.9.0
  • @iguhealth/artifacts: 0.6.0
  • @iguhealth/cli: 1.5.0
  • @iguhealth/client: 0.9.0
  • @iguhealth/codegen: 0.7.0
  • @iguhealth/components: 0.8.0
  • @iguhealth/fhir-pointer: 0.5.0
  • @iguhealth/fhir-types: 0.7.0
  • @iguhealth/fhirpath: 0.6.0
  • @iguhealth/testscript-runner: 0.1.0
  • @iguhealth/hl7.fhir.r4.core: 0.4.2
  • @iguhealth/iguhealth.fhir.r4.core: 0.5.10
  • @iguhealth/hl7.fhir.r4.test-data: 0.2.1
  • @iguhealth/hl7.fhir.r4b.core: 0.2.2

Updated Dependencies

  • typescript: 5.5.2
  • react-router-dom: 6.24.0
  • @headlessui/react: ^2.1.1

Updates 2024-06-21

· One min read
Confused-Moniker
Maintainer of IGUHealth

Testing

Documentation

We've updated our documentation to include a guide on how to write and run TestScripts. You can find it here.

Migrations

We've finished migrating our API tests to TestScripts here. These tests are run on all PRs and the main branch.

Publishing Test Reports

We now publish test reports on our main site. You can view them here. These tests are generated off the main branch for the latest published version of our server.

Support for Variables

Variables are now supported on our TestScript runner. You can use them to create dynamic parameters for your testscripts. An example can be found here

Support for Operations and Assertions

We now support the following operations and assertions:

  • Assert: CompareToSourceExpression
  • Operation: history
  • Operation: patch

General

Updated Packages

  • @iguhealth/server: 0.14.33
  • @iguhealth/components: 0.7.22
  • @iguhealth/generated-ops: 0.5.15
  • @iguhealth/cli: 1.4.15
  • @iguhealth/testscript-runner: 0.0.8

Updates 2024-06-14

· 2 min read
Confused-Moniker
Maintainer of IGUHealth

Testing

We our beginning our migration to TestScript resources. This will replace our jest tests against our API and allow us to publish results as TestReports on our main site.

TestScript Runner

We've published our TestScript Runner as an NPM package here.

Testing on CLI

You can run our testscript runner via our latest cli update:

iguhealth test run -i testscripts -o testreports
  • -i , --input: The directory where the testscripts are located.
  • -o , --output: The directory where the testreports will be output.

Server Enhancements

Stronger restrictions on CSP

We have added stronger restrictions on CSP headers in particular to disallow inline scripts and styles.

Conditional Deletes

We now support conditional deletes on the server. You can now delete resources based on a conditional query.

DELETE /Patient?name=John

Client Alterations

Invoke by code

We now support invoke operations via Client with code instead of an Operation Instance. For this you pass a Parameter Resource instead of the simplified JS Object.

const invocation = await client
.invoke_type("validate", {}, R4, "Patient", {
resourceType: "Parameters",
parameter: [
{
name: "resource",
resource: patient,
},
],
} as Parameters)

General

Updated Packages

  • @iguhealth/cli: 1.4.11
  • @iguhealth/client: 0.8.10
  • @iguhealth/components: 0.7.18
  • @iguhealth/fhirpath: 0.5.6
  • @iguhealth/generated-ops: 0.5.11
  • @iguhealth/server: 0.14.28
  • @iguhealth/testscript-runner: 0.0.4
  • @iguhealth/admin-app: 0.8.11

Updates 2024-06-05

· 2 min read
Confused-Moniker
Maintainer of IGUHealth

Server Enhancements

Alterations to the User Data Model

Our data model had the concept of a root user that could be connected to multiple tenants. This was done to allow a user to easily access multiple tenants that they were a member of. We've removed this, and instead, each user is now entirely isolated and connected to a FHIR Membership resource.

Tenant Discovery

On root login, we now return a list of tenants that a user is registered with (via email). After selecting a tenant a user is directed to that tenants login.

Local Development

Docker

We now have the following Docker compose files for local development:

  • docker/services-compose.yml: Will setup all the services needed for local development.
  • docker/iguhealth-compose.yml: Will setup services and the iguhealth server and admin app.

Security

OperationDefinition Execution

OperationDefinitions must now be tied to an AccessPolicy resource to access and mutate data back on the server.

General

Updated Packages

  • @iguhealth/server: 0.14.17
  • @iguhealth/components: 0.7.10
  • @iguhealth/admin-app: 0.8.3

Dependencies Updated to Latest

We've updated the following dependencies to their latest versions:

  • tailwind: 3.4.4
  • prettier: 3.3.1
  • headless/react: 2.0.4
  • pg: 8.12.0
  • jose: 5.4.0
  • ajv: 8.16.0
  • adm-zip: 0.5.14
  • json-schema-to-typescript: 14.0.5

Updates 2024-05-30

· 2 min read
Confused-Moniker
Maintainer of IGUHealth

Server Enhancements

Author Parameter

We've moved the author parameter from being a token search parameter to a reference parameter. Custom operations, ClientApplications with client credentials, and Membership users who make any updates will now be displayed as an extension pointing back to them.

Below is an example of the extension (which is automatically generated on all resources under meta.extension).

      {
"url": "https://iguhealth.app/author",
"valueReference": {
"reference": "Membership/NuqYfcMykSm1Qsq2wHUNet"
}
}

You can now also perform chained searches against the author parameter as an example:

iguhealth api search_type r4 Patient _iguhealth-author.email=[email protected]

Alignment with new root users

Root users are now treated like every other member, with a membership resource being used to determine their role and access to newly created tenants.

Remove _ from ID generation

Per FHIR Spec, this is not compatible with the id regex.

See here for more information about how Vanya Client uncovered this on our server.

Admin Application Enhancements

Settings

Settings now displays links to R4, R4B, and OIDC endpoints, which are pulled from our .well-known/openid-configuration. Additionally, we've updated our libraries to use well-known/openid-configuration for pulling OIDC endpoints instead of hardcoding them.

History View

Versioned resources can now be viewed as a diff from the previous version.

Invite Modal

The invite modal will now allow you to specify a user role and tie an access policy to them.

General

Updated Packages

  • @iguhealth/iguhealth.fhir.r4.core: 0.5.8
  • @iguhealth/admin-app: 0.7.8
  • @iguhealth/cli: 1.4.4
  • @iguhealth/client: 0.8.4
  • @iguhealth/components: 0.7.7
  • @iguhealth/fhir-validation: 0.7.2
  • @iguhealth/fhirpath: 0.5.2
  • @iguhealth/generated-ops: 0.5.4
  • @iguhealth/jwt: 0.4.1
  • @iguhealth/meta-value: 0.5.2
  • @iguhealth/operation-execution: 0.7.2
  • @iguhealth/server: 0.14.9

Dependencies Updated to Latest

We've updated the following dependencies to their latest versions:

  • Storybook
  • ioredis

Vanya Client Integration

· 3 min read
Confused-Moniker
Maintainer of IGUHealth

Vanya client is a desktop app that allows you to view data in FHIR. It works with a variety of FHIR servers and can be a great way to check for conformance and data quality more on that later.

How to integrate Vanya with Iguhealth

OAuth Client Credentials

  1. Go to the admin application and create a new ClientApplication.
  2. Set the grant type to client_credentials.
  3. Set the response type to token.
  4. Set the secret to a secure value.
  5. Hit Actions and create
  6. Mark down the client ID and secret.
  7. Click Security->AccessPolicy in the admin app and create a new access policy.
  8. Create AccessPolicy with the type set to `Full Access'.
  9. Under Target.Link reference the ClientApplication created on step 5.
  10. Open the Vanya client.
  11. Click Add New Server.
  12. Go to Settings on the Admin App and copy the FHIR R4 URL.
  13. Paste the URL in the Vanya Client for the URL.
  14. In Vanya, click OAuth2.
  15. Copy and paste the token endpoint from the admin app settings.
  16. Copy the clientID from step 5 and paste it in Vanya.
  17. Copy the client secret from step 5 and paste it in Vanya.
  18. Set the grant type to client_credentials.
  19. Click Save.

Basic Authentication

  1. Go to the admin application and create a new ClientApplication.
  2. Set the grant type to basic_auth.
  3. Set the response type to token.
  4. Set the secret to a secure value.
  5. Hit Actions and create
  6. Mark down the client ID and secret.
  7. Click Security->AccessPolicy in Admin App and create a new access policy.
  8. Create AccessPolicy with the type set to `Full Access'.
  9. Under Target.Link reference the client application created on step 5.
  10. Use the below widget and enter the client ID and secret, then copy the authorization header value.

Below is a simple form to generate an Authorization header for basic authentication.

  1. Open the Vanya client.
  2. Click Add New Server.
  3. Click the Request Headers tab, create a key Authorization and paste in the value from step 10.
  4. Go to Settings on the Admin App and copy the FHIR R4 URL.
  5. Paste the URL in the Vanya Client for the URL.
  6. Click Save.

Vanya Client discovered a non-conformant aspect of our server

We use nanoid to generate unique identifiers for our resources. Vanya client discovered that our use of the default alphabet for nanoid, is not FHIR compliant. Specifically the _ is a character not allowed in FHIR ids.

Updates 2024-05-22

· 2 min read
Confused-Moniker
Maintainer of IGUHealth

Admin Application Enhancements

Better handling of 403 errors

App now displays a more user-friendly message when a user is not authorized to access a resource. This fixes the issue where users were seeing a blank page when they were not authorized to access a resource.

Invite operation

We have added an invite operation to the admin application. You can now invite users to your organization by providing their email address.

Server Usage Display

We have added a display to show the current server usage in the admin application. This will help you keep track of your server usage and plan accordingly.

Server Enhancements

Validation Performance

We have improved the performance of validation operations. You should see a significant improvement in the time taken to validate resources and perform CRUD operations. (We have seen a 50% improvement in validation times.).

Improved Login Flow

Login flow now will automatically direct users to admin-app if not directed too from the authorize endpoint (which will redirect to the client specified by client_id and redirect_url).

Email Templates

Emails being sent are now formatted using our email templates.

General

Dependencies Updated to Latest

We've updated the following dependencies to their latest versions:

  • CodeMirror
  • React
  • React Router
  • Storybook
  • HeadlessUI

Updates 2024-05-14

· One min read
Confused-Moniker
Maintainer of IGUHealth

Admin Application Enhancements

Search Table Component

We've published a generative search table for FHIR. This component will automatically query for search parameters for a given resource type and display parameters as columns with the ability to filter and sort on each column. We've updated the admin app to use this table for searching resources.

Search Table Image

Display Components

We now support readonly react components for the following data types:

IGUHealth Provider

We've updated IGUHealth Provider to support the following features:

  • The client will now automatically initiate authentication flow after token expiration.
  • Support for client-side redirects after successful login. This allows SPAs to redirect users back to their starting location in the app after a successful login.

Support for Missing

All parameters now support the missing modifier. This allows you to search for resources that do not have a value for a given parameter.

GET /Patient?name:missing=true