fhirsmith 0.8.6 → 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 +27 -0
- package/library/regex-utilities.js +13 -0
- package/package.json +3 -2
- package/publisher/publisher.js +28 -7
- package/root-bare-template.html +9759 -37
- package/translations/Messages.properties +1 -0
- package/tx/cs/cs-country.js +2 -1
- package/tx/cs/cs-cs.js +4 -3
- package/tx/cs/cs-loinc.js +2 -1
- package/tx/cs/cs-snomed.js +1 -1
- package/tx/data/OperationDefinition-ValueSet-related.json +133 -0
- package/tx/importers/atc-to-fhir.js +27 -27
- 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/tx.fhir.org.yml +4 -4
- package/tx/vs/vs-database.js +150 -100
- package/tx/vs/vs-vsac.js +90 -31
- package/tx/workers/expand.js +5 -1
- package/tx/workers/metadata.js +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,33 @@ 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
|
+
|
|
8
35
|
## [v0.8.6] - 2026-04-06
|
|
9
36
|
|
|
10
37
|
### Added
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const { RE2 } = require('re2-wasm');
|
|
2
|
+
|
|
3
|
+
class RegExUtilities {
|
|
4
|
+
|
|
5
|
+
compile(pattern, flags) {
|
|
6
|
+
// RE2 requires the unicode flag; add it if not already present
|
|
7
|
+
const re2Flags = flags && flags.includes('u') ? flags : (flags || '') + 'u';
|
|
8
|
+
return new RE2(pattern, re2Flags);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
module.exports = new RegExUtilities();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fhirsmith",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"txVersion": "1.9.1",
|
|
5
5
|
"description": "A Node.js server that provides a collection of tools to serve the FHIR ecosystem",
|
|
6
6
|
"main": "server.js",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"fs-extra": "^11.3.3",
|
|
52
52
|
"ini": "^6.0.0",
|
|
53
53
|
"inquirer": "^8.2.5",
|
|
54
|
-
"liquidjs": "^10.
|
|
54
|
+
"liquidjs": "^10.25.5",
|
|
55
55
|
"lusca": "^1.7.0",
|
|
56
56
|
"natural": "^6.12.0",
|
|
57
57
|
"node-cron": "^3.0.3",
|
|
@@ -61,6 +61,7 @@
|
|
|
61
61
|
"passport-github2": "^0.1.12",
|
|
62
62
|
"passport-google-oauth20": "^2.0.0",
|
|
63
63
|
"properties-file": "^3.6.4",
|
|
64
|
+
"re2-wasm": "^1.0.2",
|
|
64
65
|
"rimraf": "^5.0.10",
|
|
65
66
|
"sqlite3": "^5.1.7",
|
|
66
67
|
"tar": "^7.5.7",
|
package/publisher/publisher.js
CHANGED
|
@@ -714,17 +714,38 @@ class PublisherModule {
|
|
|
714
714
|
|
|
715
715
|
// Step 1: Clone supporting repositories into the task directory
|
|
716
716
|
const registryDir = path.join(taskDir, 'ig-registry');
|
|
717
|
-
const historyDir = path.join(taskDir, 'fhir-ig-history-template');
|
|
718
|
-
const templatesDir = path.join(taskDir, 'fhir-web-templates');
|
|
719
717
|
|
|
720
718
|
await this.runCommand('git', ['clone', 'git@github.com:FHIR/ig-registry.git', registryDir],
|
|
721
719
|
{}, task.id, 'Cloning ig-registry');
|
|
722
720
|
|
|
723
|
-
|
|
724
|
-
|
|
721
|
+
// Use website-configured history templates path if provided, otherwise clone the default repo
|
|
722
|
+
let historyDir;
|
|
723
|
+
if (website.history_templates) {
|
|
724
|
+
historyDir = website.history_templates;
|
|
725
|
+
await this.logTaskMessage(task.id, 'info', 'Using configured history templates: ' + historyDir);
|
|
726
|
+
if (!fs.existsSync(historyDir)) {
|
|
727
|
+
throw new Error('Configured history_templates path does not exist: ' + historyDir);
|
|
728
|
+
}
|
|
729
|
+
} else {
|
|
730
|
+
historyDir = path.join(taskDir, 'fhir-ig-history-template');
|
|
731
|
+
await this.runCommand('git', ['clone', 'https://github.com/HL7/fhir-ig-history-template.git', historyDir],
|
|
732
|
+
{}, task.id, 'Cloning fhir-ig-history-template');
|
|
733
|
+
}
|
|
725
734
|
|
|
726
|
-
|
|
727
|
-
|
|
735
|
+
// Use website-configured web templates path if provided, otherwise clone the default repo.
|
|
736
|
+
// This allows pointing to a subdirectory of the templates repo for different target websites.
|
|
737
|
+
let templatesDir;
|
|
738
|
+
if (website.web_templates) {
|
|
739
|
+
templatesDir = website.web_templates;
|
|
740
|
+
await this.logTaskMessage(task.id, 'info', 'Using configured web templates: ' + templatesDir);
|
|
741
|
+
if (!fs.existsSync(templatesDir)) {
|
|
742
|
+
throw new Error('Configured web_templates path does not exist: ' + templatesDir);
|
|
743
|
+
}
|
|
744
|
+
} else {
|
|
745
|
+
templatesDir = path.join(taskDir, 'fhir-web-templates');
|
|
746
|
+
await this.runCommand('git', ['clone', 'https://github.com/HL7/fhir-web-templates.git', templatesDir],
|
|
747
|
+
{}, task.id, 'Cloning fhir-web-templates');
|
|
748
|
+
}
|
|
728
749
|
|
|
729
750
|
// Step 2: Reuse the publisher.jar from the draft build
|
|
730
751
|
const publisherJar = path.join(taskDir, 'publisher.jar');
|
|
@@ -1853,7 +1874,7 @@ class PublisherModule {
|
|
|
1853
1874
|
} else {
|
|
1854
1875
|
content += '<div class="table-responsive">';
|
|
1855
1876
|
content += '<table class="table table-striped">';
|
|
1856
|
-
content += '<thead><tr><th>Name</th><th>Local Folder</th><th>Git Root</th><th>Update Script</th><th>Active</th><th>Created</th><th>Actions</th></tr></thead>';
|
|
1877
|
+
content += '<thead><tr><th>Name</th><th>Local Folder</th><th>Git Root</th><th>History Templates</th><th>Web Templates</th><th>Update Script</th><th>Active</th><th>Created</th><th>Actions</th></tr></thead>';
|
|
1857
1878
|
content += '<tbody>';
|
|
1858
1879
|
|
|
1859
1880
|
websites.forEach(website => {
|