<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Fire Arrow Documentation Blog</title>
        <link>https://docs.firearrow.io/changelog/</link>
        <description>Fire Arrow Documentation Blog</description>
        <lastBuildDate>Tue, 21 Apr 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Fire Arrow Server 1.8.2]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-server-1-8-2/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-server-1-8-2/</guid>
            <pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow Server 1.8.2 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow Server 1.8.2 has been released.</p>
<ul>
<li class="">(feature) Support <code>_total</code> search parameter in GraphQL</li>
</ul>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="_total-parameter-in-graphql"><code>_total</code> Parameter in GraphQL<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-8-2/#_total-parameter-in-graphql" class="hash-link" aria-label="Direct link to _total-parameter-in-graphql" title="Direct link to _total-parameter-in-graphql" translate="no">​</a></h2>
<p>The FHIR <code>_total</code> search parameter was previously only honoured on the REST API. For GraphQL searches using stored (async) pagination, the <code>count</code> field — corresponding to <code>Bundle.total</code> — could be <code>null</code> on early pages because the total is only known once the asynchronous search task has loaded all results. Clients that needed a reliable total on the first page had to either poll until the search completed or switch to <code>Cache-Control: no-store</code>, which disables caching entirely.</p>
<p>Starting with 1.8.2, <code>_total</code> can be passed as an argument on any <code>*Connection</code> query:</p>
<table><thead><tr><th>Value</th><th>Effect</th></tr></thead><tbody><tr><td><code>accurate</code></td><td>Forces a <code>SELECT COUNT(*)</code> alongside the main query. The total is persisted and available on every page.</td></tr><tr><td><code>estimated</code></td><td>Requests an estimated count (HAPI default behavior, implementation-dependent).</td></tr><tr><td><code>none</code></td><td>Explicitly suppresses count computation.</td></tr><tr><td><em>(omitted)</em></td><td>Default behavior — count may be <code>null</code> until the async search completes.</td></tr></tbody></table>
<p>Example:</p>
<div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property-query">PatientConnection</span><span class="token punctuation" style="color:#393A34">(</span><span class="token attr-name" style="color:#00a4db">_count</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token attr-name" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Smith"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token attr-name" style="color:#00a4db">_total</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"accurate"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">count</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">next</span><span class="token plain"> </span><span class="token object">edges</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token object">resource</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">id</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p><code>_total</code> is excluded from encoded cursors, so it only needs to be specified on the initial query — subsequent pages retrieved via <code>_cursor</code> inherit the computed total automatically.</p>
<p>Note that <code>_total</code> has no effect on multi-alternative authorization searches where deduplication across alternatives makes the total unreliable; <code>count</code> stays <code>null</code> in that case regardless.</p>]]></content:encoded>
            <category>Releases</category>
            <category>Fire Arrow Server</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow Server 1.8.1]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-server-1-8-1/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-server-1-8-1/</guid>
            <pubDate>Fri, 17 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow Server 1.8.1 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow Server 1.8.1 has been released.</p>
<ul>
<li class="">(feature) Display SampledData observations in charts with dynamic aggregation</li>
<li class="">(bugfix) Fix <code>urn:uuid:</code> bundle references blocking logical identifier fallback in authorization</li>
</ul>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sampleddata-observation-charts">SampledData Observation Charts<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-8-1/#sampleddata-observation-charts" class="hash-link" aria-label="Direct link to SampledData Observation Charts" title="Direct link to SampledData Observation Charts" translate="no">​</a></h2>
<p>Observations that carry continuous time-series data in <code>valueSampledData</code> — such as heart rate, respiratory rate, or temperature recorded by wearables — were previously ignored by the observation charts. Starting with 1.8.1, <code>valueSampledData</code> is fully supported alongside <code>valueQuantity</code>.</p>
<p>Individual samples are expanded into discrete data points and dynamically aggregated based on the selected time range. At wider zoom levels the chart groups samples into time buckets and displays the mean value as a line with a shaded min/max range band, giving a clear overview without losing the ability to drill into the raw signal by zooming in.</p>
<p>This release also adds support for the LOINC code <code>93831-6</code> (sleep duration).</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-8-1/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="bundle-references-with-urnuuid-preventing-logical-identifier-resolution">Bundle references with <code>urn:uuid:</code> preventing logical identifier resolution<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-8-1/#bundle-references-with-urnuuid-preventing-logical-identifier-resolution" class="hash-link" aria-label="Direct link to bundle-references-with-urnuuid-preventing-logical-identifier-resolution" title="Direct link to bundle-references-with-urnuuid-preventing-logical-identifier-resolution" translate="no">​</a></h3>
<p>When a FHIR bundle used a <code>urn:uuid:</code> placeholder in <code>Reference.reference</code> alongside a business identifier in <code>Reference.identifier</code>, the authorization layer did not fall through to logical identifier resolution. Because <code>urn:uuid:</code> is a bundle-internal placeholder that the FHIR server resolves after authorization runs, it cannot be treated as a resolvable literal reference — but the authorization tester previously returned empty instead of checking <code>Reference.identifier</code>.</p>
<p>1.8.1 recognises the <code>urn:uuid:</code> scheme and correctly falls through to logical identifier resolution, matching the FHIR R4 spec intent that logical identifiers are a valid fallback when the literal reference is not directly resolvable.</p>]]></content:encoded>
            <category>Releases</category>
            <category>Fire Arrow Server</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow Server 1.8.0]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-server-1-8-0/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-server-1-8-0/</guid>
            <pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow Server 1.8.0 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow Server 1.8.0 has been released.</p>
<ul>
<li class="">(security) Close search-parameter side-channel for property-filtered fields</li>
<li class="">(feature) Resolve FHIR R4 conditional and logical Patient references in authorization</li>
<li class="">(bugfix) Fix inherited roles being dropped when a child organization has a direct role</li>
<li class="">(bugfix) Fix HFQL rejecting every request with <code>403 Forbidden</code> when no explicit search/read rules are configured</li>
<li class="">(maintenance) Dependency upgrades across server, UI, and tooling</li>
</ul>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="blocked-search-parameters-and-includes">Blocked Search Parameters and Includes<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-8-0/#blocked-search-parameters-and-includes" class="hash-link" aria-label="Direct link to Blocked Search Parameters and Includes" title="Direct link to Blocked Search Parameters and Includes" translate="no">​</a></h2>
<p>Property filters redact fields from outgoing FHIR resources — for example, stripping <code>Patient.name</code> so that a practitioner with legitimate interest can list patients without seeing personally identifying information. Until now, the underlying data remained fully indexed, which opened a side-channel: a client could issue a targeted search (<code>Patient?name=Smith</code>) and infer the redacted value from the search result, or use <code>_include</code>/<code>_revinclude</code> to traverse references that had been filtered out of the primary response.</p>
<p>Starting with 1.8.0, validation rules accept two new optional fields that close this channel:</p>
<ul>
<li class=""><strong><code>blocked-search-params</code></strong> — a list of FHIR search parameter names that are rejected with <code>403 Forbidden</code> when used in a search, a <code>_sort</code>, or a <code>_filter</code> expression.</li>
<li class=""><strong><code>blocked-includes</code></strong> — a list of <code>_include</code> / <code>_revinclude</code> directives in <code>ResourceType:searchparam</code> form that are rejected when used.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="identifier-based-patient-references-in-authorization">Identifier-Based Patient References in Authorization<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-8-0/#identifier-based-patient-references-in-authorization" class="hash-link" aria-label="Direct link to Identifier-Based Patient References in Authorization" title="Direct link to Identifier-Based Patient References in Authorization" translate="no">​</a></h2>
<p>When the authorization layer needs to decide whether an incoming resource belongs to a patient the caller is allowed to access, it previously resolved only literal <code>Patient/{id}</code> references on the subject reference. Import bundles that identified patients by their business identifier — using the conditional or logical reference forms permitted by FHIR R4 — were therefore rejected with <code>403 Forbidden</code>, even when the caller had legitimate interest in those patients.</p>
<p>Version 1.8.0 accepts all three forms defined by FHIR R4 in the order the spec prescribes:</p>
<ol>
<li class=""><strong>Literal</strong> — <code>Reference.reference = "Patient/123"</code> (<a href="https://hl7.org/fhir/R4/references.html#literal" target="_blank" rel="noopener noreferrer" class="">§2.3.0.2</a>)</li>
<li class=""><strong>Conditional</strong> — <code>Reference.reference = "Patient?identifier=sys|val"</code> (<a href="https://hl7.org/fhir/R4/http.html#trules" target="_blank" rel="noopener noreferrer" class="">§3.1.0.11.2</a>)</li>
<li class=""><strong>Logical</strong> — <code>Reference.identifier</code> (<a href="https://hl7.org/fhir/R4/references.html#logical" target="_blank" rel="noopener noreferrer" class="">§2.3.0.3</a>)</li>
</ol>
<p>Ambiguous identifiers (more than one Patient sharing the same business identifier) deliberately do not resolve, so a duplicate identifier can never silently authorize. The set of rules and identities that grant access is unchanged — only the resolution of <em>which</em> Patient a reference points to has been extended.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-8-0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="role-inheritance-dropping-parent-roles-on-child-organizations">Role inheritance dropping parent roles on child organizations<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-8-0/#role-inheritance-dropping-parent-roles-on-child-organizations" class="hash-link" aria-label="Direct link to Role inheritance dropping parent roles on child organizations" title="Direct link to Role inheritance dropping parent roles on child organizations" translate="no">​</a></h3>
<p>When role inheritance was enabled, parent roles were silently dropped whenever a child organization already had a direct role of its own. An elevated role declared at the root (e.g. <code>ICT</code>) disappeared as soon as a different role (e.g. <code>Nurse</code>) existed anywhere below it, and the inherited role was unavailable on every descendant beyond that point.</p>
<p>The fix correctly accumulates parent and direct roles together at each descendant within the configured depth, so the union of all inherited and directly-assigned roles is now visible to the authorization layer.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="hfql-rejected-with-403-forbidden-whenever-no-explicit-searchread-rule-matched">HFQL rejected with <code>403 Forbidden</code> whenever no explicit search/read rule matched<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-8-0/#hfql-rejected-with-403-forbidden-whenever-no-explicit-searchread-rule-matched" class="hash-link" aria-label="Direct link to hfql-rejected-with-403-forbidden-whenever-no-explicit-searchread-rule-matched" title="Direct link to hfql-rejected-with-403-forbidden-whenever-no-explicit-searchread-rule-matched" translate="no">​</a></h3>
<p>HFQL authorization required at least one explicit search or read rule to be configured for the calling client role. In deployments where access is controlled purely via <code>default-validator</code> (no explicit rules), or for unauthenticated requests, every <code>$hfql-execute</code> query was rejected with <code>403 Forbidden</code> regardless of what the default validator would have decided.</p>
<p>In 1.8.0 the configured default validator is honoured for HFQL just as it is for ordinary searches. When no explicit rule matches the queried resource type:</p>
<ul>
<li class=""><strong><code>Allowed</code></strong> — the query returns the data its <code>FROM</code> clause selects.</li>
<li class=""><strong><code>Forbidden</code></strong> — the query succeeds with zero rows rather than being rejected.</li>
<li class=""><strong>Other validators</strong> (e.g. <code>LegitimateInterest</code>) — the matching explicit rules determine which rows the client sees, with the same compartment narrowing applied as for normal searches.</li>
</ul>
<p>Unauthenticated requests and requests from clients without explicit rules now return HTTP 200 with an empty result under a restrictive default validator, return data under a permissive default validator, and return the narrowed subset the client is authorized for when explicit rules are in place.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="dependency-upgrades">Dependency Upgrades<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-8-0/#dependency-upgrades" class="hash-link" aria-label="Direct link to Dependency Upgrades" title="Direct link to Dependency Upgrades" translate="no">​</a></h2>
<p>1.8.0 includes a broad maintenance pass across the server, administration UI, and tooling.</p>]]></content:encoded>
            <category>Releases</category>
            <category>Fire Arrow Server</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow Server 1.7.0]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-server-1-7-0/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-server-1-7-0/</guid>
            <pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow Server 1.7.0 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow Server 1.7.0 has been released.</p>
<ul>
<li class="">(breaking) Task scheduling data now written to <code>Task.restriction.period</code> instead of <code>Task.executionPeriod</code></li>
<li class="">(security) Update Next.js to 16.2.3 (CVE-2026-23869)</li>
</ul>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="task-scheduling-data-in-restrictionperiod">Task Scheduling Data in <code>restriction.period</code><a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-7-0/#task-scheduling-data-in-restrictionperiod" class="hash-link" aria-label="Direct link to task-scheduling-data-in-restrictionperiod" title="Direct link to task-scheduling-data-in-restrictionperiod" translate="no">​</a></h2>
<p>This release changes where the server persists planned scheduling data on materialized Tasks. Previously, the due date was written to <code>executionPeriod.start</code> and the deadline to <code>executionPeriod.end</code>. This overloaded fields that the FHIR R4 spec defines as actual execution times, and caused incorrect dependency propagation when <code>ActivityCompletionService</code> interpreted <code>executionPeriod.end</code> as the client-written completion time.</p>
<p>Starting with 1.7.0, server-managed scheduling data is written to <code>Task.restriction.period</code>:</p>
<ul>
<li class=""><code>restriction.period.start</code> — the due date</li>
<li class=""><code>restriction.period.end</code> — the deadline</li>
</ul>
<p><code>Task.executionPeriod</code> is now exclusively client-written (actual start and end of execution). When resolving completion times for dependency propagation, the server uses a four-step fallback chain: <code>executionPeriod.end</code> → <code>restriction.period.end</code> → <code>executionPeriod.start</code> → <code>restriction.period.start</code>.</p>
<p>The <code>due-timestamp-field</code> configuration toggle has been removed. Two new configuration options — <code>auto-propagate-period-start</code> and <code>auto-propagate-period-end</code> (both off by default) — allow headless clients that cannot write back execution periods to have the server propagate scheduling data automatically.</p>
<p>The <code>fa-careplan-due-tasks</code> SearchParameter has been updated to index <code>Task.restriction.period.start</code> (version bumped to 2.0.0, which triggers automatic reindexing on startup).</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-change">Breaking Change<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-7-0/#breaking-change" class="hash-link" aria-label="Direct link to Breaking Change" title="Direct link to Breaking Change" translate="no">​</a></h3>
<p>Existing materialized Tasks still have due dates stored in <code>executionPeriod</code>. <strong>Affected deployments must regenerate their CarePlans after upgrading</strong> to ensure all Tasks use the new field mapping.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="security">Security<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-7-0/#security" class="hash-link" aria-label="Direct link to Security" title="Direct link to Security" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="nextjs-updated-to-1623-cve-2026-23869">Next.js updated to 16.2.3 (CVE-2026-23869)<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-7-0/#nextjs-updated-to-1623-cve-2026-23869" class="hash-link" aria-label="Direct link to Next.js updated to 16.2.3 (CVE-2026-23869)" title="Direct link to Next.js updated to 16.2.3 (CVE-2026-23869)" translate="no">​</a></h3>
<p>The administration web UI's Next.js dependency has been updated from 16.2.1 to 16.2.3 to address <a href="https://github.com/facebook/react/security/advisories/GHSA-479c-33wc-g2pg" target="_blank" rel="noopener noreferrer" class="">CVE-2026-23869</a>. A specially crafted HTTP request to an App Router Server Function endpoint could trigger excessive CPU usage, resulting in denial of service.</p>]]></content:encoded>
            <category>Releases</category>
            <category>Fire Arrow Server</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow Server 1.6.1]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-server-1-6-1/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-server-1-6-1/</guid>
            <pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow Server 1.6.1 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow Server 1.6.1 has been released.</p>
<ul>
<li class="">(feature) Automatically ensure canonical URLs exist for definition resources in plans</li>
<li class="">(bugfix) Reverse pre-signed Azure Blob URLs back to <code>firearrow://</code> on resource updates</li>
</ul>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="canonical-urls-for-definition-resources">Canonical URLs for Definition Resources<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-6-1/#canonical-urls-for-definition-resources" class="hash-link" aria-label="Direct link to Canonical URLs for Definition Resources" title="Direct link to Canonical URLs for Definition Resources" translate="no">​</a></h2>
<p>When building a PlanDefinition in the administration UI, definition resources such as ActivityDefinition or Questionnaire must be referenced by their canonical URL. Previously, if a selected resource did not have a canonical URL set, the reference was silently broken.</p>
<p>Starting with this release, the ResourceReferenceSelector detects when a chosen resource lacks a canonical URL and automatically generates one from the FHIR base URL, writing it back to the resource before inserting the reference. If the resource already has a canonical URL, it is used as-is. When a business version is present, it is appended with the <code>|</code> separator (e.g. <code>http://example.com/ActivityDefinition/ad-1|2.0</code>).</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-6-1/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="pre-signed-azure-blob-urls-overwriting-firearrow-urls-on-round-trip">Pre-signed Azure Blob URLs overwriting <code>firearrow://</code> URLs on round-trip<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-6-1/#pre-signed-azure-blob-urls-overwriting-firearrow-urls-on-round-trip" class="hash-link" aria-label="Direct link to pre-signed-azure-blob-urls-overwriting-firearrow-urls-on-round-trip" title="Direct link to pre-signed-azure-blob-urls-overwriting-firearrow-urls-on-round-trip" translate="no">​</a></h3>
<p>When binary storage is enabled, Fire Arrow rewrites <code>firearrow://</code> attachment URLs to pre-signed Azure Blob URLs in outgoing responses so that clients can fetch media directly. If a client then saved the resource back — for example through the administration UI — the pre-signed URL replaced the canonical <code>firearrow://</code> URL in the database. This caused two problems:</p>
<ol>
<li class="">The stored pre-signed URL eventually expired, permanently breaking media access.</li>
<li class="">The blob cleanup interceptor saw the original <code>firearrow://</code> URL as removed and deleted the underlying blob.</li>
</ol>
<p>A new <code>BinaryUrlReverseRewriteInterceptor</code> now runs before resource storage, scanning all <code>Attachment</code> elements for recognised pre-signed Azure Blob URLs and converting them back to their <code>firearrow://</code> form. URLs that do not match the configured blob container are left untouched.</p>]]></content:encoded>
            <category>Releases</category>
            <category>Fire Arrow Server</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow Server 1.5.0]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-server-1-5-0/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-server-1-5-0/</guid>
            <pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow Server 1.5.0 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow Server 1.5.0 has been released.</p>
<ul>
<li class="">(feature) Add licensing system</li>
<li class="">(bugfix) Fix CarePlan task scheduling drift after DST transitions</li>
<li class="">(bugfix) Fix delivery tracking for message channel subscriptions</li>
</ul>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-150">Why 1.5.0?<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-5-0/#why-150" class="hash-link" aria-label="Direct link to Why 1.5.0?" title="Direct link to Why 1.5.0?" translate="no">​</a></h2>
<p>This release jumps from 1.0.0 directly to 1.5.0 to signal a significant operational change: the introduction of a licensing system. While the release contains no breaking API changes, <strong>Fire Arrow Server can no longer start without a valid license file from this version onwards.</strong> We chose the version bump to make this requirement clearly visible to anyone upgrading, rather than burying it in a patch release.</p>
<p>Existing deployments upgrading from 1.0.0 will need to obtain a license before moving to 1.5.0. Reach out to <a href="https://evoleen.com/" target="_blank" rel="noopener noreferrer" class="">Evoleen</a> to get your license file.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="licensing-system">Licensing System<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-5-0/#licensing-system" class="hash-link" aria-label="Direct link to Licensing System" title="Direct link to Licensing System" translate="no">​</a></h2>
<p>Fire Arrow Server now requires a license to start and continue running.</p>
<p>The license is configured via the <code>fire-arrow.license.*</code> properties and can be supplied as a file path or inline value.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-5-0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="careplan-task-scheduling-drift-after-dst-transitions">CarePlan task scheduling drift after DST transitions<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-5-0/#careplan-task-scheduling-drift-after-dst-transitions" class="hash-link" aria-label="Direct link to CarePlan task scheduling drift after DST transitions" title="Direct link to CarePlan task scheduling drift after DST transitions" translate="no">​</a></h3>
<p>When a CarePlan was created, the UTC offset from <code>period.start</code> (e.g. <code>+01:00</code> for CET in winter) was used as a fixed timezone for all task scheduling. After a DST transition, tasks that should have been scheduled at 08:00 local time would instead appear at 09:00 because the offset no longer matched the wall-clock time.</p>
<p>The fix ensures that when a proper IANA timezone (e.g. <code>Europe/Berlin</code>) is available on the CarePlan or Patient resource, it takes precedence over fixed offsets extracted from datetime values. This means task schedules now correctly follow DST transitions. Deployments using only fixed-offset timezones like <code>UTC</code> are unaffected.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="delivery-tracking-for-message-channel-subscriptions">Delivery tracking for message channel subscriptions<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-5-0/#delivery-tracking-for-message-channel-subscriptions" class="hash-link" aria-label="Direct link to Delivery tracking for message channel subscriptions" title="Direct link to Delivery tracking for message channel subscriptions" translate="no">​</a></h3>
<p>The subscription success tracker was bound to a rest-hook-specific delivery hook, which meant that message channel subscriptions (such as the Azure Storage Queue delivery) never recorded a successful delivery. After seven days without a recorded success, the subscription sweep job would disable these subscriptions, which in turn broke CarePlan lifecycle re-materialization.</p>
<p>The fix now works for all channel types, and also prevents redundant delivery to the internal message broker after a successful Azure Queue send.</p>]]></content:encoded>
            <category>Releases</category>
            <category>Fire Arrow Server</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow Server 1.5.1]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-server-1-5-1/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-server-1-5-1/</guid>
            <pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow Server 1.5.1 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow Server 1.5.1 has been released.</p>
<ul>
<li class="">(feature) Show total number of search results instead of page size in the GraphQL <code>count</code> field</li>
<li class="">(bugfix) Fix crash in development license handler preventing release versions from starting</li>
</ul>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="total-search-count-in-graphql">Total Search Count in GraphQL<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-5-1/#total-search-count-in-graphql" class="hash-link" aria-label="Direct link to Total Search Count in GraphQL" title="Direct link to Total Search Count in GraphQL" translate="no">​</a></h2>
<p>The <code>count</code> field on GraphQL <code>*Connection</code> types previously reflected the page size rather than the total number of matching resources. Starting with this release, <code>count</code> returns the actual total from the FHIR <code>Bundle.total</code>, giving clients an accurate result count for building pagination UIs.</p>
<p>For <code>Cache-Control: no-store</code> queries, the first page requests an accurate total from the database and carries it forward in cursor metadata so subsequent pages can report the same value without re-counting. When the true total cannot be determined — for example, during aggregated authorization searches with multiple alternatives — <code>count</code> returns <code>null</code> rather than an incorrect number.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-5-1/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="license-handler-crash-with-packaged-deployments">License handler crash with packaged deployments<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-5-1/#license-handler-crash-with-packaged-deployments" class="hash-link" aria-label="Direct link to License handler crash with packaged deployments" title="Direct link to License handler crash with packaged deployments" translate="no">​</a></h3>
<p>The license handler introduced in 1.5.0 crashed when deployed as a nested WAR. The fix broadens the exception handling so that the "not running from source" detection covers more scenarios, allowing the server to start normally.</p>]]></content:encoded>
            <category>Releases</category>
            <category>Fire Arrow Server</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow Server 1.0.0]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-server-1-0-0/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-server-1-0-0/</guid>
            <pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow Server 1.0.0 has been released. This marks the launch of Fire Arrow's second product and a new chapter for the platform.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow Server 1.0.0 has been released. This marks the launch of Fire Arrow's second product and a new chapter for the platform.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="two-products-one-platform">Two Products, One Platform<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-0-0/#two-products-one-platform" class="hash-link" aria-label="Direct link to Two Products, One Platform" title="Direct link to Two Products, One Platform" translate="no">​</a></h2>
<p>Starting with this release, Fire Arrow consists of two products:</p>
<ul>
<li class=""><strong>Fire Arrow Core</strong> — the lightweight GraphQL facade that connects to an external FHIR server (e.g. Azure Health Data Services). This is the product previously known simply as "Fire Arrow", now rebranded as Fire Arrow Core.</li>
<li class=""><strong>Fire Arrow Server</strong> — a fully integrated FHIR server built on the open-source <a href="https://hapifhir.io/" target="_blank" rel="noopener noreferrer" class="">HAPI FHIR</a> project. Fire Arrow Server bundles its own PostgreSQL-backed data store together with the authorization, authentication, and workflow capabilities that Fire Arrow is known for.</li>
</ul>
<p>The rebranding of the original product to Fire Arrow Core is a naming change only — there are no breaking changes and existing deployments continue to work as before.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-fire-arrow-server">Why Fire Arrow Server?<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-0-0/#why-fire-arrow-server" class="hash-link" aria-label="Direct link to Why Fire Arrow Server?" title="Direct link to Why Fire Arrow Server?" translate="no">​</a></h2>
<p>Fire Arrow Core was designed for managed cloud environments where an external FHIR service handles data storage and scaling. That model works well for many use cases, but some deployments need:</p>
<ul>
<li class=""><strong>On-premise or sovereign hosting</strong> — running outside of US-owned hyperscalers, or within an organization's own infrastructure</li>
<li class=""><strong>Lower latency</strong> — eliminating the network hop to an external FHIR service</li>
<li class=""><strong>Richer server-side workflows</strong> — built-in FHIR Subscriptions, server-side CarePlan expansion, and an administration UI</li>
</ul>
<p>Fire Arrow Server addresses all of these while sharing the same authorization model, authentication providers, and GraphQL API that Core users are already familiar with.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-included">What's Included<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-0-0/#whats-included" class="hash-link" aria-label="Direct link to What's Included" title="Direct link to What's Included" translate="no">​</a></h2>
<p>Fire Arrow Server 1.0.0 ships with:</p>
<ul>
<li class=""><strong>Full FHIR R4 REST API</strong> with Swagger UI for interactive exploration</li>
<li class=""><strong>GraphQL API</strong> with read support, nested queries, and <code>_filter</code>-based search modifiers</li>
<li class=""><strong>Authentication</strong> via OAuth 2.0 / OIDC, Azure Identity, and API tokens (including QR-code-based one-time tokens for anonymous study participation)</li>
<li class=""><strong>Fine-grained authorization</strong> with additive rules, identity filters, property filters, and a rule debugger</li>
<li class=""><strong>FHIR Subscriptions</strong> (REST hook, email, websocket, Azure Storage Queue)</li>
<li class=""><strong>Server-side CarePlan workflows</strong> — automatic expansion of CarePlans into Tasks, with dynamic schedule updates based on Task completion</li>
<li class=""><strong>Administration Web UI</strong> with a GraphQL explorer, resource browser, and configuration overview</li>
<li class=""><strong>Pre-built Docker image</strong> available from the <a class="" href="https://docs.firearrow.io/docs/server/getting-started/first-run/">Evoleen Public ACR</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="getting-started">Getting Started<a href="https://docs.firearrow.io/changelog/fire-arrow-server-1-0-0/#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
<p>Head over to the <a class="" href="https://docs.firearrow.io/docs/server/getting-started/first-run/">First Run</a> guide to pull the Docker image and have a server running in minutes. For a detailed comparison of both editions, see <a class="" href="https://docs.firearrow.io/docs/general/editions/">Editions</a>.</p>]]></content:encoded>
            <category>Releases</category>
            <category>Fire Arrow Server</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow 2.5.3]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-2-5-3/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-2-5-3/</guid>
            <pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow 2.5.3 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow 2.5.3 has been released.</p>
<ul>
<li class="">(bugfix) Fix identifier serialization when looking up identity resources by auth user ID</li>
</ul>
<!-- -->
<p>Fire Arrow supports looking up identity resources through a credential like an email address or by using the client's object ID from the authentication server. A bug in serializing the client's object ID led to an incorrect lookup of identity resources, causing multiple resources to be created and the client to be locked out if this was the primary method of identifying the client.</p>]]></content:encoded>
            <category>Releases</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow 2.5.2]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-2-5-2/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-2-5-2/</guid>
            <pubDate>Fri, 05 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow 2.5.2 has been released. This is a security release and all users are strongly encouraged to upgrade to this version.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow 2.5.2 has been released. This is a <strong>security release</strong> and all users are strongly encouraged to upgrade to this version.</p>
<ul>
<li class="">(security) Fix <code>LegitimateInterest</code> validator not blocking resources to unauthorized organizations</li>
</ul>
<!-- -->
<p>The <code>LegitimateInterest</code> validator compartmentalizes resources through an association with an <code>Organization</code>. This association is driven via <code>PractitionerRole</code> resources for <code>Practitioner</code> clients. A <code>Practitioner</code> client should not be able to see resources for which they don't have an active role.</p>
<p>A bug in processing search requests compromised this behavior.</p>
<div class="language-(graphql) codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-(graphql) codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">PatientList(organization: "123") {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    id</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre></div></div>
<p>Executing the query above without having an active role in this organization would still return patients associated with this organization. The root cause was improper parsing of search parameters, leading to an invalid comparison when computing the intersection between the allowed and requested organizations.</p>
<p>This release fixes the problem and improves the automated test suite to cover this case.</p>]]></content:encoded>
            <category>Releases</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow 2.5.1]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-2-5-1/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-2-5-1/</guid>
            <pubDate>Tue, 18 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow 2.5.1 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow 2.5.1 has been released.</p>
<ul>
<li class="">(bugfix) Refresh Azure Identity key stores on every request</li>
</ul>
<!-- -->
<p>Azure Identity is a variant of the OAuth authentication method. Fire Arrow uses it to authenticate backend services. To validate incoming requests, authentication tokens are cryptographically validated against public keys found in a key store. An implementation difference between OAuth and Azure Identity caused the key stores not to be refreshed for every incoming request, which led to a situation where a client signed their token with a newer key than was known to Fire Arrow.</p>
<p>This release ensures that the key store is always up to date before validating incoming tokens.</p>]]></content:encoded>
            <category>Releases</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow 2.5.0]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-2-5-0/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-2-5-0/</guid>
            <pubDate>Mon, 20 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow 2.5.0 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow 2.5.0 has been released.</p>
<ul>
<li class="">(feature) Add configurable option to propagate PlanDefinition extensions to CarePlan during <code>PlanDefinitionApply</code></li>
</ul>
<!-- -->
<p>A new feature <code>plan_definition_apply.propagate_plan_definition_extensions</code> has been introduced. This flag defaults to <code>false</code>, so Fire Arrow 2.5.0 will behave exactly as the previous release with unchanged configuration.</p>
<p>When the flag is set to <code>true</code>, all extensions contained in a <code>PlanDefinition</code> resource will be copied over to the <code>CarePlan</code> resource during <code>PlanDefinitionApply</code>.</p>]]></content:encoded>
            <category>Releases</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow 2.4.0]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-2-4-0/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-2-4-0/</guid>
            <pubDate>Mon, 06 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow 2.4.0 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow 2.4.0 has been released.</p>
<ul>
<li class="">(breaking) Replace decimal values with literals in API (previously used strings)</li>
<li class="">(chore) Update dependencies</li>
</ul>
<!-- -->
<p>The HL7 FHIR specification states that client shall not modify the precision of decimal values. This led to Fire Arrow using strings in its API to ensure that decimal values are passed through unchanged. However, this also caused breakage with APIs and libraries that insisted on parsing decimal values only.</p>
<p>Since the HL7 FHIR specification also states that a 64bit IEEE 754 compliant implementation is sufficient and values are unlikely to be in a range where precision matters, Fire Arrow has now switched to using floating point literals in its API.</p>
<p>This is a breaking change to previous versions.</p>]]></content:encoded>
            <category>Releases</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow 2.3.0]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-2-3-0/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-2-3-0/</guid>
            <pubDate>Fri, 25 Jul 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow 2.3.0 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow 2.3.0 has been released.</p>
<ul>
<li class="">(enhancement) Support custom search parameters created via <code>SearchParameter</code> resources via <code>_customSearchParameters</code> in queries</li>
<li class="">(enhancment) Add GraphQL schema documentation for standard search parameters</li>
<li class="">(bugfix) Fix GraphiQL UI not loading due to incorrect CDN URL</li>
<li class="">(chore) Update dependencies</li>
</ul>
<!-- -->
<p>This release enables support for custom search parameters that have been created on the FHIR server via <code>SearchParameter</code> resources. The GraphQL schema now exposes a new parameter <code>_customSearchParameters</code>. This parameter accepts a string through which custom parameters can be supplied. Fire Arrow will add them to the query string as-is.</p>
<p>The GraphiQL UI didn't load anymore because GraphiQL's CDN didn't serve the original JavaScript file anymore. This version serves an updated UI loader.</p>
<p>Furthermore, the GraphQL schema now also documents standard search parameters.</p>]]></content:encoded>
            <category>Releases</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow 2.2.5]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-2-2-5/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-2-2-5/</guid>
            <pubDate>Thu, 17 Jul 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow 2.2.5 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow 2.2.5 has been released.</p>
<ul>
<li class="">(bugfix) Fix plan definition action without definition removal</li>
</ul>
<!-- -->
<p>This release resolves a configuration issue with the <code>plan_definition_apply.remove_plan_definition_actions_without_definitions</code> setting. This configuration option allows the removal of PlanDefinition actions that lack references to other resources through their <code>definitionUri</code> or <code>definitionCanonical</code> fields during the <code>PlanDefinitionApply</code> operation.</p>
<p>The previous version prevented users from properly configuring this setting. This bugfix now enables correct configuration of this option, ensuring PlanDefinition operations work as intended.</p>]]></content:encoded>
            <category>Releases</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow 2.2.4]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-2-2-4/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-2-2-4/</guid>
            <pubDate>Thu, 05 Jun 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow 2.2.4 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow 2.2.4 has been released.</p>
<ul>
<li class="">(bugfix) Fix intersect search filter</li>
</ul>
<!-- -->
<p>This release resolves an issue with adding search filter with intersect option. Previously, when the search parameter included a list of conditions, for example: <code>organization': '1,2,3,4,5</code>, the intersect filter incorrectly converted OR logic into AND logic. Instead of searching for organization=1,2,3,4,5 as a group, the query was split into organization=1&amp;organization=2&amp;organization=3 etc. As a result, no records were returned because none could satisfy all these conditions at once. The update restores correct behavior, ensuring that searches with multiple values function as expected.</p>]]></content:encoded>
            <category>Releases</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow 2.2.3]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-2-2-3/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-2-2-3/</guid>
            <pubDate>Wed, 30 Apr 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow 2.2.3 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow 2.2.3 has been released.</p>
<ul>
<li class="">(bugfix) Fix empty value in search parameter request</li>
</ul>
<!-- -->
<p>The string sanitizing method was enhanced to properly handle empty values in search parameter chains. Previously, when a search parameter chain contained an empty value, it could cause issues with FHIR server requests. The fix ensures that any subquery containing empty parameters is automatically excluded from the chain, as FHIR servers do not recognize empty parameters as valid search parameters.</p>
<p>This improvement makes Fire Arrow more robust when dealing with complex search queries and prevents potential errors when working with FHIR servers.</p>]]></content:encoded>
            <category>Releases</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow 2.2.2]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-2-2-2/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-2-2-2/</guid>
            <pubDate>Thu, 10 Apr 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow 2.2.2 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow 2.2.2 has been released.</p>
<ul>
<li class="">(enhancement) Optionally remove empty actions during <code>PlanDefinitionApply</code></li>
<li class="">(bugfix) Fix evaluation of multiple role codes for same access rule</li>
<li class="">(chore) Update dependencies</li>
</ul>
<!-- -->
<p>Fire Arrow now supports the removal of empty actions (actions that neither contain <code>definitionCanonical</code> nor <code>definitionUri</code>) during <code>PlanDefinitionApply</code>. This supports use cases where actions are only used for sequencing, such as determining the duration of the resulting <code>CarePlan</code> or determining timings of dependent actions.</p>
<p>A critical bug affecting access validation rules with multiple role codes has been fixed. This issue was causing problems in role-based access control scenarios where different role codes were assigned to the same operation, causing only the first to be evaluated. The fix restores the desired behavior of evaluating all role codes.</p>]]></content:encoded>
            <category>Releases</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow 2.2.1]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-2-2-1/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-2-2-1/</guid>
            <pubDate>Fri, 04 Apr 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow 2.2.1 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow 2.2.1 has been released.</p>
<ul>
<li class="">(enhancement) Support for 'total' field in search response</li>
<li class="">(bugfix) Fix crash while trying to process parent trace ID from request headers</li>
<li class="">(chore) Update dependencies</li>
</ul>
<!-- -->
<p>A critical bug was fixed that caused a crash while trying to process parent trace IDs from client request headers.</p>
<p>In addition, when performing searches, Fire Arrow can now optionally return the total number of search results if the backend server populates it.</p>]]></content:encoded>
            <category>Releases</category>
        </item>
        <item>
            <title><![CDATA[Fire Arrow 2.2.0]]></title>
            <link>https://docs.firearrow.io/changelog/fire-arrow-2-2-0/</link>
            <guid>https://docs.firearrow.io/changelog/fire-arrow-2-2-0/</guid>
            <pubDate>Tue, 01 Apr 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Fire Arrow 2.2.0 has been released.]]></description>
            <content:encoded><![CDATA[<p>Fire Arrow 2.2.0 has been released.</p>
<ul>
<li class="">(feature) Post-request pre-response hooks are now supported</li>
<li class="">(enhancement) Telemetry sent to Azure Application Insights now contains full request graph</li>
<li class="">(enhancement) Per-request caching speeds up multiple retrieval of dependencies</li>
</ul>
<!-- -->
<p>Fire Arrow now supports two request hooks:</p>
<ul>
<li class="">Post-validation, pre-request: This hook can be used to inject custom, business-case specific validation logic (added in 2.1.0)</li>
<li class="">Post-request, pre-response: This hook can be used to modify the respose before it is sent to the client. Example use cases include on-the-fly anonymization or data enrichment (added in 2.2.0)</li>
</ul>
<p>This release also greatly enhances telemetry sent to Azure Application Insights. Fire Arrow now supports the Open Telemetry <code>traceparent</code> header and will properly group its own requests in the parent's span ID. This allows visibility into performance bottlenecks, especially when validation requires complex sub-requests before a response can be generated.</p>
<p>Fire Arrow now also speeds up nested resource retrieval. If lists of <code>Observations</code> were retrieved and for each <code>Observation</code> the <code>Patient</code> entity needed to be retrieved, Fire Arrow needed to handle each <code>Patient</code> entity through a single request (as each request is subject to re-validation). These requests are now cached, so that multiple retrievals of the same entity can be returned directly from memory.</p>]]></content:encoded>
            <category>Releases</category>
        </item>
    </channel>
</rss>