fhirsmith 0.8.6 → 0.9.1
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 +47 -0
- package/library/regex-utilities.js +13 -0
- package/package.json +3 -2
- package/publisher/publisher.js +28 -7
- package/root-bare-template.html +60 -55
- package/translations/Messages.properties +3 -2
- package/tx/cs/cs-country.js +2 -1
- package/tx/cs/cs-cs.js +36 -8
- 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/extensions.js +7 -1
- package/tx/library/renderer.js +11 -2
- 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 +92 -32
- package/tx/workers/expand.js +5 -1
- package/tx/workers/metadata.js +3 -1
- package/tx/workers/validate.js +1 -1
- package/tx/xversion/xv-valueset.js +28 -8
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const {VersionUtilities} = require("../../library/version-utilities");
|
|
2
2
|
const {getValueName} = require("../../library/utilities");
|
|
3
|
+
const {Extensions} = require("../library/extensions");
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Converts input ValueSet to R5 format (modifies input object for performance)
|
|
@@ -13,6 +14,12 @@ function valueSetToR5(jsonObj, sourceVersion) {
|
|
|
13
14
|
if (VersionUtilities.isR5Ver(sourceVersion)) {
|
|
14
15
|
return jsonObj; // No conversion needed
|
|
15
16
|
}
|
|
17
|
+
for (const inc of jsonObj.compose.include || []) {
|
|
18
|
+
valueSetIncludeToR5(inc);
|
|
19
|
+
}
|
|
20
|
+
for (const inc of jsonObj.compose.exclude || []) {
|
|
21
|
+
valueSetIncludeToR5(inc);
|
|
22
|
+
}
|
|
16
23
|
if (VersionUtilities.isR4Ver(sourceVersion)) {
|
|
17
24
|
return jsonObj; // No conversion needed
|
|
18
25
|
}
|
|
@@ -26,6 +33,19 @@ function valueSetToR5(jsonObj, sourceVersion) {
|
|
|
26
33
|
throw new Error(`Unsupported FHIR version: ${sourceVersion}`);
|
|
27
34
|
}
|
|
28
35
|
|
|
36
|
+
function valueSetIncludeToR5(inc) {
|
|
37
|
+
for (const filter of inc.filter || []) {
|
|
38
|
+
if (filter._op) {
|
|
39
|
+
let code = Extensions.readString(filter._op, 'http://hl7.org/fhir/5.0/StructureDefinition/extension-ValueSet.compose.include.filter.op');
|
|
40
|
+
if (code) {
|
|
41
|
+
filter.op = code;
|
|
42
|
+
delete filter._op;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
29
49
|
/**
|
|
30
50
|
* Converts R5 ValueSet to target version format (clones object first)
|
|
31
51
|
* @param {Object} r5Obj - The R5 format ValueSet object
|
|
@@ -70,8 +90,8 @@ function valueSetR5ToR4(r5Obj) {
|
|
|
70
90
|
if (include.filter && Array.isArray(include.filter)) {
|
|
71
91
|
include.filter = include.filter.map(filter => {
|
|
72
92
|
if (filter.op && isR5OnlyFilterOperator(filter.op)) {
|
|
73
|
-
|
|
74
|
-
|
|
93
|
+
filter._op = { "extension": "http://hl7.org/fhir/5.0/StructureDefinition/extension-ValueSet.compose.include.filter.op", "valueCode": filter.op}
|
|
94
|
+
delete filter.op;
|
|
75
95
|
}
|
|
76
96
|
return filter;
|
|
77
97
|
}).filter(filter => filter !== null);
|
|
@@ -85,8 +105,8 @@ function valueSetR5ToR4(r5Obj) {
|
|
|
85
105
|
if (exclude.filter && Array.isArray(exclude.filter)) {
|
|
86
106
|
exclude.filter = exclude.filter.map(filter => {
|
|
87
107
|
if (filter.op && isR5OnlyFilterOperator(filter.op)) {
|
|
88
|
-
|
|
89
|
-
|
|
108
|
+
filter._op = { "extension": "http://hl7.org/fhir/5.0/StructureDefinition/extension-ValueSet.compose.include.filter.op", "valueCode": filter.op}
|
|
109
|
+
delete filter.op;
|
|
90
110
|
}
|
|
91
111
|
return filter;
|
|
92
112
|
}).filter(filter => filter !== null);
|
|
@@ -135,8 +155,8 @@ function valueSetR5ToR3(r5Obj) {
|
|
|
135
155
|
if (include.filter && Array.isArray(include.filter)) {
|
|
136
156
|
include.filter = include.filter.map(filter => {
|
|
137
157
|
if (filter.op && !isR3CompatibleFilterOperator(filter.op)) {
|
|
138
|
-
|
|
139
|
-
|
|
158
|
+
filter._op = { "extension": "http://hl7.org/fhir/5.0/StructureDefinition/extension-ValueSet.compose.include.filter.op", "valueCode": filter.op}
|
|
159
|
+
delete filter.op;
|
|
140
160
|
}
|
|
141
161
|
return filter;
|
|
142
162
|
}).filter(filter => filter !== null);
|
|
@@ -150,8 +170,8 @@ function valueSetR5ToR3(r5Obj) {
|
|
|
150
170
|
if (exclude.filter && Array.isArray(exclude.filter)) {
|
|
151
171
|
exclude.filter = exclude.filter.map(filter => {
|
|
152
172
|
if (filter.op && !isR3CompatibleFilterOperator(filter.op)) {
|
|
153
|
-
|
|
154
|
-
|
|
173
|
+
filter._op = { "extension": "http://hl7.org/fhir/5.0/StructureDefinition/extension-ValueSet.compose.include.filter.op", "valueCode": filter.op}
|
|
174
|
+
delete filter.op;
|
|
155
175
|
}
|
|
156
176
|
return filter;
|
|
157
177
|
}).filter(filter => filter !== null);
|