fhirsmith 0.8.5 → 0.9.0
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 +51 -0
- package/README.md +52 -22
- package/extension-tracker/extension-tracker-template.html +3 -1
- package/library/html-server.js +7 -0
- package/library/logger.js +234 -194
- package/library/regex-utilities.js +13 -0
- package/package.json +4 -2
- package/packages/packages-template.html +3 -1
- package/publisher/publisher-template.html +1 -0
- package/publisher/publisher.js +28 -7
- package/registry/registry-template.html +3 -1
- package/root-bare-template.html +9759 -37
- package/root-template.html +3 -2
- package/server.js +48 -12
- package/translations/Messages.properties +2 -1
- package/translations/rendering-phrases.properties +3 -1
- package/tx/cs/cs-api.js +4 -0
- package/tx/cs/cs-country.js +2 -1
- package/tx/cs/cs-cs.js +9 -4
- package/tx/cs/cs-loinc.js +2 -1
- package/tx/cs/cs-snomed.js +5 -1
- package/tx/data/OperationDefinition-ValueSet-related.json +133 -0
- package/tx/html/tx-template.html +3 -2
- package/tx/importers/atc-to-fhir.js +27 -27
- package/tx/library/codesystem.js +4 -0
- package/tx/library/renderer.js +20 -4
- package/tx/library/ucum-parsers.js +2 -1
- package/tx/ocl/cs-ocl.cjs +48 -15
- package/tx/ocl/vs-ocl.cjs +57 -34
- package/tx/operation-context.js +74 -19
- package/tx/tx-html.js +5 -5
- package/tx/tx.fhir.org.yml +4 -4
- package/tx/tx.js +1 -0
- package/tx/vs/vs-database.js +150 -100
- package/tx/vs/vs-vsac.js +90 -31
- package/tx/workers/expand.js +154 -113
- package/tx/workers/metadata.js +6 -3
- package/tx/workers/read.js +6 -3
- package/tx/workers/related.js +228 -87
- package/xig/xig-template.html +3 -1
- package/library/logger-telnet.js +0 -205
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,57 @@ 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.9.0] - 2026-04-09
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- TX: VSAC upgrade to pick up more changes
|
|
13
|
+
- TX: add definition of $related operation to CapabilityStatement
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- TX: Deal with regex Denial of Service Issue
|
|
18
|
+
- TX: improve fragment handling in extensions per TI decision
|
|
19
|
+
- TX: Reduce snomed loaded versions - have already moved to affiliate managed servers
|
|
20
|
+
- TX: fix bug handling excluded concepts using a filter
|
|
21
|
+
- improve dashboard template
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- Update dependencies for security fixes
|
|
26
|
+
- TX: fix error in SNOMED translate for implicit concept maps
|
|
27
|
+
- TX: Fix OCL cache invalidation and case-insensitive concept lookups
|
|
28
|
+
- Publisher: fix handling of web templates folder
|
|
29
|
+
- Publisher: fix webtemplates table headings
|
|
30
|
+
|
|
31
|
+
### Tx Conformance Statement
|
|
32
|
+
|
|
33
|
+
FHIRsmith passed all 1578 HL7 terminology service tests (modes tx.fhir.org+omop+general+snomed, tests v1.9.1, runner v6.9.5)
|
|
34
|
+
|
|
35
|
+
## [v0.8.6] - 2026-04-06
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
|
|
39
|
+
- TX: Full support for $related operation
|
|
40
|
+
- Add sponsor message to footer on all pages
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
|
|
44
|
+
- TX: Improve $expand efficiency slightly
|
|
45
|
+
- Rework logging for efficiency and configurability
|
|
46
|
+
- TX: Try to make the server more resistant to running out of memory and dying
|
|
47
|
+
- Improve memory reporting on dashboard and home pages
|
|
48
|
+
- improve metadata display for resources
|
|
49
|
+
|
|
50
|
+
### Fixed
|
|
51
|
+
|
|
52
|
+
- Fix up tx test version to be correct in capabilities statement
|
|
53
|
+
- Fix security warning
|
|
54
|
+
|
|
55
|
+
### Tx Conformance Statement
|
|
56
|
+
|
|
57
|
+
FHIRsmith passed all 1497 HL7 terminology service tests (modes tx.fhir.org+omop+general+snomed, tests v1.9.1, runner v6.9.4)
|
|
58
|
+
|
|
8
59
|
## [v0.8.5] - 2026-04-02
|
|
9
60
|
|
|
10
61
|
### Added
|
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
|

|
|
30
30
|
[](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
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
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
|
-
|
|
274
|
-
|
|
275
|
-
|
|
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> © HL7.org 2011+. |
|
|
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%] © HealthIntersections.com.au 2023+ |
|
|
95
|
-
[%total-packages%] packages tracked  
|
|
95
|
+
[%total-packages%] packages tracked |
|
|
96
|
+
([%ms%] ms)
|
|
97
|
+
[%sponsorMessage%]
|
|
96
98
|
</p>
|
|
97
99
|
</div> <!-- /inner-wrapper -->
|
|
98
100
|
</div> <!-- /container -->
|
package/library/html-server.js
CHANGED
|
@@ -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
|