Skip to main content

FHIR Server Maintenance

Enabling or Disabling a FHIR Server Endpoint

While maintaining a FHIR server that is in production, it may become necessary to stop processing HL7® FHIR® requests to the endpoint, and then re-enable the request processing for the endpoint when the maintenance is complete.

Note:

Sometimes when you seek to modify the FHIR server, you may find the repository locked. This is normal: All InterSystems IRIS API methods lock the repository, and the repository can also be locked explicitly using the ##class(HS.FHIRServer.Repo).Lock() method. If the repository is locked, you will have to wait until the other agent releases it.

To stop or restart an endpoint:

  1. In the Management Portal, navigate to Home > Health > foundationNamespace > FHIR Server Management.

  2. In the tile for the desired FHIR server, click the menu icon.

  3. To stop processing for an endpoint and reject requests, select Disable.

  4. To make the FHIR server’s endpoint available for processing requests, select Enable.

Optimizing FHIR Server Search Performance

For a FHIR server that uses or extends the Resource Repository, you can optimize the performance of search interaction responses by running the Tune Table utility on the SQL search tables generated for that endpoint. By default, the names of these tables begin with HSFHIR. You can also set custom selectivity values for these tables manually.

When you install a new FHIR server that uses or extends the Resource Repository, a set of default selectivity values are assigned to searchable elements based on the element’s data type. These default selectivity values allow the server to select more efficient query plans when it retrieves resources in response to a search request. Selecting prospective results by beginning with the most selective query parameter minimizes the number of resources each subsequent selection operation must evaluate.

For example, consider the following search request:

GET [base]/Patient?family=halifax&gender=male

Probably, the Resource Repository contains fewer patients with the family name Halifax than patients who are male. Therefore, it is probably most efficient to find the Patients with the family name Halifax first, because then the operation to find males will only have to search through the small subset of patients named Halifax.

If you have upgraded to this version from a version prior to 2023.1 and you are using a preexisting FHIR server, you can set these default selectivity values for your search operations using the SetDefaultSearchTableSelectivities()Opens in a new tab method. Invoke this method in the Terminal, providing the relative path for your FHIR endpoint, as in the following example:

do ##class(HS.FHIRServer.Storage.SearchTableBuilder).SetDefaultSearchTableSelectivities("/csp/healthshare/hsods/fhir/r5")

However, for most preexisting FHIR servers, selectivity values generated by Tune Table are more useful than the default selectivity values set by this method.

Important:

The SetDefaultSearchTableSelectivities()Opens in a new tab method overwrites all existing optimizations made manually or using the Tune Table utility.

FeedbackOpens in a new tab