fhirsmith 0.8.4 → 0.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,7 +5,49 @@ All notable changes to the Health Intersections Node Server will be documented i
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [v0.8.6] - 2026-04-06
8
9
 
10
+ ### Added
11
+
12
+ - TX: Full support for $related operation
13
+ - Add sponsor message to footer on all pages
14
+
15
+ ### Changed
16
+
17
+ - TX: Improve $expand efficiency slightly
18
+ - Rework logging for efficiency and configurability
19
+ - TX: Try to make the server more resistant to running out of memory and dying
20
+ - Improve memory reporting on dashboard and home pages
21
+ - improve metadata display for resources
22
+
23
+ ### Fixed
24
+
25
+ - Fix up tx test version to be correct in capabilities statement
26
+ - Fix security warning
27
+
28
+ ### Tx Conformance Statement
29
+
30
+ FHIRsmith passed all 1497 HL7 terminology service tests (modes tx.fhir.org+omop+general+snomed, tests v1.9.1, runner v6.9.4)
31
+
32
+ ## [v0.8.5] - 2026-04-02
33
+
34
+ ### Added
35
+
36
+ - Add support for webSource extension
37
+ - Add support for SCT filter in (codes)
38
+
39
+ ### Changed
40
+
41
+ - Upgrade LOINC to 2.82
42
+ - Improve resource rendering -copy button + link
43
+
44
+ ### Fixed
45
+
46
+ - Add missing code systems from search
47
+
48
+ ### Tx Conformance Statement
49
+
50
+ FHIRsmith passed all 1497 HL7 terminology service tests (modes tx.fhir.org+omop+general+snomed, tests v1.9.1, runner v6.9.4)
9
51
 
10
52
  ## [v0.8.4] - 2026-04-01
11
53
 
package/README.md CHANGED
@@ -14,17 +14,17 @@ This server provides a set of server-side services that are useful for the FHIR
14
14
  * [Package server](packages/readme.md) - **NPM-style FHIR package registry** with search, versioning, and downloads, consistent with the FHIR NPM Specification (as running at http://packages2.fhir.org/packages)
15
15
  * [XIG server](xig/readme.md) - **Comprehensive FHIR IG analytics** with resource breakdowns by version, authority, and realm (as running at http://packages2.fhir.org/packages)
16
16
  * [Publisher](publisher/readme.md) - FHIR publishing services (as running at [healthintersections.com.au](http://www.healthintersections.com.au/publisher))
17
- * [VCL](vcl/readme.md) - **Parse VCL expressions** into FHIR ValueSet resources (as running at http://fhir.org/vcl)
17
+ * [VCL](vcl/readme.md) - **Parse VCL expressions** into FHIR ValueSet resources (as running at http://fhir.org/vcl)
18
18
  * (Coming) Token services
19
19
 
20
20
  ## Summary Statement
21
21
 
22
- * Maintainers: Grahame Grieve, Italo Macêdo, Josh Mandel, Jose Costa Teixeira
22
+ * Maintainers: Grahame Grieve, Italo Macêdo, Josh Mandel, Jose Costa Teixeira
23
23
  * Issues / Discussion: Use github issues
24
24
  * License: BSD-3
25
- * Contribution Policy: Make PRs. PRs have to pass all the tests
25
+ * Contribution Policy: Make PRs. PRs have to pass all the tests
26
26
  * Security Information: See [security.md](security.md)
27
-
27
+
28
28
  ## Build Status
29
29
  ![CI Build](https://github.com/HealthIntersections/fhirsmith/actions/workflows/ci.yml/badge.svg)
30
30
  [![Release](https://img.shields.io/github/v/release/HealthIntersections/fhirsmith?include_prereleases)](https://github.com/HealthIntersections/fhirsmith/releases)
@@ -44,15 +44,15 @@ There are 4 executable programs:
44
44
  Unless you're developing, you only need the first two
45
45
 
46
46
  FHIRsmith is open source - see below, and you're welcome to use it for any kind of use. Note,
47
- though, that if you support FHIRsmith commercially as part of a managed service or product, you
47
+ though, that if you support FHIRsmith commercially as part of a managed service or product, you
48
48
  are required to be a Commercial Partner of HL7 - see (link to be provided).
49
49
 
50
50
  ### Quick Start
51
51
 
52
52
  * Install FHIRSmith (using docker, or an NPM release, or just get the code by git)
53
- * Figure out the data directory
53
+ * Figure out the data directory
54
54
  * Provide a configuration to tell the server what to run (see documentation below, or use a [prebuilt configuration]/configurations/readme.md)
55
- * Run the server
55
+ * Run the server
56
56
 
57
57
  For further details of these steps, read on
58
58
 
@@ -128,6 +128,36 @@ Create a `config.json` file in your data directory (use `config-template.json` a
128
128
  }
129
129
  ```
130
130
 
131
+ ### Logging Configuration
132
+
133
+ Add a `logging` section to `config.json` to control log behaviour. All fields are optional and have sensible defaults:
134
+
135
+ ```json
136
+ {
137
+ "logging": {
138
+ "level": "info",
139
+ "console": true,
140
+ "consoleErrors": false,
141
+ "maxFiles": 14,
142
+ "maxSize": "50m",
143
+ "flushInterval": 2000,
144
+ "flushSize": 200
145
+ }
146
+ }
147
+ ```
148
+
149
+ | Option | Default | Description |
150
+ |---|---|---|
151
+ | `level` | `"info"` | Minimum level to log: `error`, `warn`, `info`, `debug`, or `verbose` |
152
+ | `console` | `true` | Write log lines to stdout/stderr. Disable when running as a systemd service where console output goes to the journal and is redundant |
153
+ | `consoleErrors` | `false` | Whether `error` and `warn` levels appear on the console. When `false`, errors and warnings are written to the log file only |
154
+ | `maxFiles` | `14` | Number of daily log files to retain before old ones are deleted |
155
+ | `maxSize` | `0` (unlimited) | Maximum size per log file before rotation. Accepts human-readable strings: `"20m"`, `"1g"`, or a raw byte count |
156
+ | `flushInterval` | `2000` | Milliseconds between buffered writes to disk. Increase to reduce I/O under heavy load |
157
+ | `flushSize` | `200` | Number of buffered log lines that trigger an immediate flush regardless of the timer |
158
+
159
+ Log files are written to the `logs/` subdirectory of the data directory as `server-YYYY-MM-DD.log`. A `server.log` symlink always points to the current day's file, so `tail -f data/logs/server.log` tracks the active log without needing to know the date.
160
+
131
161
  ### Start the Server
132
162
 
133
163
  ```bash
@@ -211,8 +241,8 @@ Available tags:
211
241
 
212
242
  ### Windows Installation
213
243
 
214
- You can install as a windows service using [windows-install.js](utilities/windows-install.js). You might need to
215
- hack that.
244
+ You can install as a windows service using [windows-install.js](utilities/windows-install.js). You might need to
245
+ hack that.
216
246
 
217
247
  ## Releases
218
248
 
@@ -224,9 +254,9 @@ Each GitHub Release includes:
224
254
  - **Release notes** extracted from CHANGELOG.md
225
255
  - **Source code** archives (zip and tar.gz)
226
256
  - **Docker images** pushed to GitHub Container Registry:
227
- - `ghcr.io/healthintersections/fhirsmith:latest`
228
- - `ghcr.io/healthintersections/fhirsmith:vX.Y.Z`
229
- - `ghcr.io/healthintersections/fhirsmith:X.Y.Z`
257
+ - `ghcr.io/healthintersections/fhirsmith:latest`
258
+ - `ghcr.io/healthintersections/fhirsmith:vX.Y.Z`
259
+ - `ghcr.io/healthintersections/fhirsmith:X.Y.Z`
230
260
  - **npm package** published to npmjs.org as `fhirsmith` *(if you add this)*
231
261
 
232
262
  ### Creating a Release
@@ -244,13 +274,13 @@ GitHub Actions will automatically:
244
274
  1. Update `CHANGELOG.md` with your changes under a new version section:
245
275
  ```markdown
246
276
  ## [vX.Y.Z] - YYYY-MM-DD
247
- ### Added
248
- - New feature description
249
- ### Changed
250
- - Change description
251
- ### Fixed
252
- - Bug fix description
253
- ### Tx Conformance Statement
277
+ ### Added
278
+ - New feature description
279
+ ### Changed
280
+ - Change description
281
+ ### Fixed
282
+ - Bug fix description
283
+ ### Tx Conformance Statement
254
284
  {copy content from text-cases-summary.txt}
255
285
  ```
256
286
  2. Update `package.json` to have the same release version
@@ -270,9 +300,9 @@ or do it via a PR
270
300
  ```
271
301
 
272
302
  5. Monitor the release:
273
- - Check [GitHub Actions](https://github.com/HealthIntersections/fhirsmith/actions) for the Release workflow
274
- - Verify the [GitHub Release](https://github.com/HealthIntersections/fhirsmith/releases) was created
275
- - Confirm Docker images are available at [GHCR](https://github.com/HealthIntersections/fhirsmith/pkgs/container/fhirsmith)
303
+ - Check [GitHub Actions](https://github.com/HealthIntersections/fhirsmith/actions) for the Release workflow
304
+ - Verify the [GitHub Release](https://github.com/HealthIntersections/fhirsmith/releases) was created
305
+ - Confirm Docker images are available at [GHCR](https://github.com/HealthIntersections/fhirsmith/pkgs/container/fhirsmith)
276
306
 
277
307
  6. Update `package.json` to have the next release version -SNAPSHOT
278
308
 
@@ -92,7 +92,9 @@
92
92
  <p>
93
93
  <a href="http://www.hl7.org/fhir" style="color: gold" title="Fast Healthcare Interoperability Resources - Home Page"><img border="0" src="/icon-fhir-16.png" style="vertical-align: text-bottom"/> <b>FHIR</b></a> &copy; HL7.org 2011+. &nbsp;|&nbsp;
94
94
  <a href="https://github.com/HealthIntersections/FHIRsmith/blob/main/README.md" style="color: gold"><img border="0" src="/FHIRsmith16.png" style="vertical-align: text-bottom"/> FHIRsmith</a> [%ver%] &copy; HealthIntersections.com.au 2023+ &nbsp;|&nbsp;
95
- [%total-packages%] packages tracked &nbsp;|&nbsp; ([%ms%] ms)
95
+ [%total-packages%] packages tracked &nbsp;|
96
+ &nbsp; ([%ms%] ms)
97
+ [%sponsorMessage%]
96
98
  </p>
97
99
  </div> <!-- /inner-wrapper -->
98
100
  </div> <!-- /container -->
@@ -9,6 +9,8 @@ const fs = require('fs');
9
9
  const path = require('path');
10
10
  const escape = require('escape-html');
11
11
 
12
+ let sponsorMessage = '';
13
+
12
14
  class HtmlServer {
13
15
  log;
14
16
 
@@ -20,6 +22,10 @@ class HtmlServer {
20
22
  this.log = logv;
21
23
  }
22
24
 
25
+ setSponsorMessage(msg) {
26
+ sponsorMessage = msg;
27
+ }
28
+
23
29
  // Template Management
24
30
  loadTemplate(templateName, templatePath) {
25
31
  try {
@@ -73,6 +79,7 @@ class HtmlServer {
73
79
  .replace(/\[%endpoint-path%\]/g, escape(renderOptions.endpointpath))
74
80
  .replace(/\[%fhir-version%\]/g, escape(renderOptions.fhirversion))
75
81
  .replace(/\[%ms%\]/g, escape(renderOptions.processingTime.toString()))
82
+ .replace(/\[%sponsorMessage%\]/g, sponsorMessage)
76
83
  .replace(/\[%about%\]/g, renderOptions.about || '');
77
84
 
78
85
  // Handle any custom template variables