fhirsmith 0.3.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 +42 -0
- package/FHIRsmith.png +0 -0
- package/README.md +277 -0
- package/config-template.json +144 -0
- package/library/folder-setup.js +58 -0
- package/library/html-server.js +166 -0
- package/library/html.js +835 -0
- package/library/i18nsupport.js +259 -0
- package/library/languages.js +779 -0
- package/library/logger-telnet.js +205 -0
- package/library/logger.js +279 -0
- package/library/package-manager.js +876 -0
- package/library/utilities.js +196 -0
- package/library/version-utilities.js +1056 -0
- package/npmprojector/config-example.json +13 -0
- package/npmprojector/indexer.js +394 -0
- package/npmprojector/npmprojector.js +395 -0
- package/npmprojector/readme.md +174 -0
- package/npmprojector/watcher.js +335 -0
- package/package.json +119 -0
- package/packages/package-crawler.js +846 -0
- package/packages/packages-template.html +126 -0
- package/packages/packages.js +2838 -0
- package/passwords.ini +2 -0
- package/publisher/publisher-template.html +208 -0
- package/publisher/publisher.js +2167 -0
- package/publisher/task-draft.js +458 -0
- package/registry/api.js +735 -0
- package/registry/crawler.js +637 -0
- package/registry/model.js +513 -0
- package/registry/readme.md +243 -0
- package/registry/registry-data.json +121015 -0
- package/registry/registry-template.html +126 -0
- package/registry/registry.js +1395 -0
- package/registry/test-runner.js +237 -0
- package/root-template.html +124 -0
- package/server.js +524 -0
- package/shl/private-key.pem +5 -0
- package/shl/public-key.pem +18 -0
- package/shl/shl.js +1125 -0
- package/shl/vhl.js +69 -0
- package/static/FHIRsmith128.png +0 -0
- package/static/FHIRsmith16.png +0 -0
- package/static/FHIRsmith32.png +0 -0
- package/static/FHIRsmith64.png +0 -0
- package/static/assets/css/bootstrap-fhir.css +5302 -0
- package/static/assets/css/bootstrap-glyphicons.css +2 -0
- package/static/assets/css/bootstrap.css +4097 -0
- package/static/assets/css/jquery-ui.css +523 -0
- package/static/assets/css/jquery-ui.structure.css +863 -0
- package/static/assets/css/jquery-ui.structure.min.css +5 -0
- package/static/assets/css/jquery-ui.theme.css +439 -0
- package/static/assets/css/jquery-ui.theme.min.css +5 -0
- package/static/assets/css/jquery.ui.all.css +7 -0
- package/static/assets/css/modules.css +18 -0
- package/static/assets/css/project.css +367 -0
- package/static/assets/css/pygments-manni.css +66 -0
- package/static/assets/css/tags.css +74 -0
- package/static/assets/css/xml.css +2 -0
- package/static/assets/fonts/glyphiconshalflings-regular.eot +0 -0
- package/static/assets/fonts/glyphiconshalflings-regular.otf +0 -0
- package/static/assets/fonts/glyphiconshalflings-regular.svg +175 -0
- package/static/assets/fonts/glyphiconshalflings-regular.ttf +0 -0
- package/static/assets/fonts/glyphiconshalflings-regular.woff +0 -0
- package/static/assets/ico/apple-touch-icon-114-precomposed.png +0 -0
- package/static/assets/ico/apple-touch-icon-144-precomposed.png +0 -0
- package/static/assets/ico/apple-touch-icon-57-precomposed.png +0 -0
- package/static/assets/ico/apple-touch-icon-72-precomposed.png +0 -0
- package/static/assets/ico/favicon.ico +0 -0
- package/static/assets/ico/favicon.png +0 -0
- package/static/assets/images/fhir-logo-www.png +0 -0
- package/static/assets/images/fhir-logo.png +0 -0
- package/static/assets/images/hl7-logo.png +0 -0
- package/static/assets/images/logo_ansinew.jpg +0 -0
- package/static/assets/images/search.png +0 -0
- package/static/assets/images/stripe.png +0 -0
- package/static/assets/images/target.png +0 -0
- package/static/assets/images/tx-registry-root.gif +0 -0
- package/static/assets/images/tx-registry.png +0 -0
- package/static/assets/images/tx-server.png +0 -0
- package/static/assets/images/tx-version.png +0 -0
- package/static/assets/js/bootstrap.min.js +6 -0
- package/static/assets/js/fhir-gw.js +259 -0
- package/static/assets/js/fhir.js +2 -0
- package/static/assets/js/html5shiv.js +8 -0
- package/static/assets/js/jcookie.js +96 -0
- package/static/assets/js/jquery-ui.min.js +6 -0
- package/static/assets/js/jquery.js +10716 -0
- package/static/assets/js/jquery.min.js +2 -0
- package/static/assets/js/jquery.ui.core.js +314 -0
- package/static/assets/js/jquery.ui.draggable.js +825 -0
- package/static/assets/js/jquery.ui.mouse.js +162 -0
- package/static/assets/js/jquery.ui.resizable.js +842 -0
- package/static/assets/js/jquery.ui.widget.js +268 -0
- package/static/assets/js/json2.js +487 -0
- package/static/assets/js/jtip.js +97 -0
- package/static/assets/js/respond.min.js +6 -0
- package/static/assets/js/statuspage.js +70 -0
- package/static/assets/js/xml.js +2 -0
- package/static/dist/js/bootstrap.js +1964 -0
- package/static/favicon.png +0 -0
- package/static/fhir.css +626 -0
- package/static/icon-fhir-16.png +0 -0
- package/static/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- package/static/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- package/static/images/ui-bg_flat_10_000000_40x100.png +0 -0
- package/static/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- package/static/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- package/static/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- package/static/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
- package/static/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- package/static/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- package/static/images/ui-icons_222222_256x240.png +0 -0
- package/static/images/ui-icons_228ef1_256x240.png +0 -0
- package/static/images/ui-icons_ef8c08_256x240.png +0 -0
- package/static/images/ui-icons_ffd27a_256x240.png +0 -0
- package/static/images/ui-icons_ffffff_256x240.png +0 -0
- package/static/js/jquery.effects.blind.js +49 -0
- package/static/js/jquery.effects.bounce.js +78 -0
- package/static/js/jquery.effects.clip.js +54 -0
- package/static/js/jquery.effects.core.js +763 -0
- package/static/js/jquery.effects.drop.js +50 -0
- package/static/js/jquery.effects.explode.js +79 -0
- package/static/js/jquery.effects.fade.js +32 -0
- package/static/js/jquery.effects.fold.js +56 -0
- package/static/js/jquery.effects.highlight.js +50 -0
- package/static/js/jquery.effects.pulsate.js +51 -0
- package/static/js/jquery.effects.scale.js +178 -0
- package/static/js/jquery.effects.shake.js +57 -0
- package/static/js/jquery.effects.slide.js +50 -0
- package/static/js/jquery.effects.transfer.js +45 -0
- package/static/js/jquery.ui.accordion.js +611 -0
- package/static/js/jquery.ui.autocomplete.js +612 -0
- package/static/js/jquery.ui.button.js +416 -0
- package/static/js/jquery.ui.datepicker.js +1823 -0
- package/static/js/jquery.ui.dialog.js +878 -0
- package/static/js/jquery.ui.droppable.js +296 -0
- package/static/js/jquery.ui.position.js +252 -0
- package/static/js/jquery.ui.progressbar.js +109 -0
- package/static/js/jquery.ui.selectable.js +266 -0
- package/static/js/jquery.ui.slider.js +666 -0
- package/static/js/jquery.ui.sortable.js +1077 -0
- package/static/js/jquery.ui.tabs.js +758 -0
- package/stats.js +80 -0
- package/test-cache/vsac/vsac-valuesets.db +0 -0
- package/token/nginx_passport_setup.md +383 -0
- package/token/security_guide.md +294 -0
- package/token/token-template.html +330 -0
- package/token/token.js +1300 -0
- package/translations/Messages.properties +1510 -0
- package/translations/Messages_ar.properties +1399 -0
- package/translations/Messages_de.properties +836 -0
- package/translations/Messages_es.properties +737 -0
- package/translations/Messages_fr.properties +1 -0
- package/translations/Messages_ja.properties +893 -0
- package/translations/Messages_nl.properties +1357 -0
- package/translations/Messages_pt.properties +1302 -0
- package/translations/Messages_ru.properties +1 -0
- package/translations/Messages_uz.properties +1 -0
- package/translations/Messages_zh.properties +1 -0
- package/translations/rendering-phrases.properties +1128 -0
- package/translations/rendering-phrases_ar.properties +1091 -0
- package/translations/rendering-phrases_de.properties +6 -0
- package/translations/rendering-phrases_es.properties +6 -0
- package/translations/rendering-phrases_fr.properties +624 -0
- package/translations/rendering-phrases_ja.properties +21 -0
- package/translations/rendering-phrases_nl.properties +970 -0
- package/translations/rendering-phrases_pt.properties +1020 -0
- package/translations/rendering-phrases_ru.properties +1094 -0
- package/translations/rendering-phrases_uz.properties +1 -0
- package/translations/rendering-phrases_zh.properties +1 -0
- package/tx/README.md +418 -0
- package/tx/cm/cm-api.js +110 -0
- package/tx/cm/cm-database.js +735 -0
- package/tx/cm/cm-package.js +325 -0
- package/tx/cs/cs-api.js +789 -0
- package/tx/cs/cs-areacode.js +615 -0
- package/tx/cs/cs-country.js +1110 -0
- package/tx/cs/cs-cpt.js +785 -0
- package/tx/cs/cs-cs.js +1579 -0
- package/tx/cs/cs-currency.js +539 -0
- package/tx/cs/cs-db.js +1321 -0
- package/tx/cs/cs-hgvs.js +329 -0
- package/tx/cs/cs-lang.js +465 -0
- package/tx/cs/cs-loinc.js +1485 -0
- package/tx/cs/cs-mimetypes.js +238 -0
- package/tx/cs/cs-ndc.js +704 -0
- package/tx/cs/cs-omop.js +1025 -0
- package/tx/cs/cs-provider-api.js +43 -0
- package/tx/cs/cs-provider-list.js +37 -0
- package/tx/cs/cs-rxnorm.js +808 -0
- package/tx/cs/cs-snomed.js +1102 -0
- package/tx/cs/cs-ucum.js +514 -0
- package/tx/cs/cs-unii.js +271 -0
- package/tx/cs/cs-uri.js +218 -0
- package/tx/cs/cs-usstates.js +305 -0
- package/tx/dev.fhir.org.yml +14 -0
- package/tx/fixtures/test-cases-setup.json +18 -0
- package/tx/fixtures/test-cases.yml +16 -0
- package/tx/html/codesystem-operations.liquid +25 -0
- package/tx/html/home-metrics.liquid +247 -0
- package/tx/html/operations-form.liquid +148 -0
- package/tx/html/search-form.liquid +62 -0
- package/tx/html/tx-template.html +133 -0
- package/tx/html/valueset-operations.liquid +54 -0
- package/tx/importers/atc-to-fhir.js +316 -0
- package/tx/importers/import-loinc.module.js +1536 -0
- package/tx/importers/import-ndc.module.js +1088 -0
- package/tx/importers/import-rxnorm.module.js +898 -0
- package/tx/importers/import-sct.module.js +2457 -0
- package/tx/importers/import-unii.module.js +601 -0
- package/tx/importers/readme.md +453 -0
- package/tx/importers/subset-loinc.module.js +1081 -0
- package/tx/importers/subset-rxnorm.module.js +938 -0
- package/tx/importers/tx-import-base.js +351 -0
- package/tx/importers/tx-import-settings.js +310 -0
- package/tx/importers/tx-import.js +357 -0
- package/tx/library/canonical-resource.js +88 -0
- package/tx/library/capabilitystatement.js +292 -0
- package/tx/library/codesystem.js +774 -0
- package/tx/library/conceptmap.js +568 -0
- package/tx/library/designations.js +932 -0
- package/tx/library/errors.js +77 -0
- package/tx/library/extensions.js +117 -0
- package/tx/library/namingsystem.js +322 -0
- package/tx/library/operation-outcome.js +127 -0
- package/tx/library/parameters.js +105 -0
- package/tx/library/renderer.js +1559 -0
- package/tx/library/terminologycapabilities.js +418 -0
- package/tx/library/ucum-parsers.js +1029 -0
- package/tx/library/ucum-service.js +370 -0
- package/tx/library/ucum-types.js +1099 -0
- package/tx/library/valueset.js +543 -0
- package/tx/library.js +676 -0
- package/tx/ocl/cm-ocl.js +106 -0
- package/tx/ocl/cs-ocl.js +39 -0
- package/tx/ocl/vs-ocl.js +105 -0
- package/tx/operation-context.js +568 -0
- package/tx/params.js +613 -0
- package/tx/provider.js +403 -0
- package/tx/sct/ecl.js +1560 -0
- package/tx/sct/expressions.js +2077 -0
- package/tx/sct/structures.js +1396 -0
- package/tx/tx-html.js +1063 -0
- package/tx/tx.fhir.org.yml +39 -0
- package/tx/tx.js +927 -0
- package/tx/vs/vs-api.js +112 -0
- package/tx/vs/vs-database.js +786 -0
- package/tx/vs/vs-package.js +358 -0
- package/tx/vs/vs-vsac.js +366 -0
- package/tx/workers/batch-validate.js +129 -0
- package/tx/workers/batch.js +361 -0
- package/tx/workers/closure.js +32 -0
- package/tx/workers/expand.js +1845 -0
- package/tx/workers/lookup.js +407 -0
- package/tx/workers/metadata.js +467 -0
- package/tx/workers/operations.js +34 -0
- package/tx/workers/read.js +164 -0
- package/tx/workers/search.js +384 -0
- package/tx/workers/subsumes.js +334 -0
- package/tx/workers/translate.js +492 -0
- package/tx/workers/validate.js +2504 -0
- package/tx/workers/worker.js +904 -0
- package/tx/xml/capabilitystatement-xml.js +63 -0
- package/tx/xml/codesystem-xml.js +62 -0
- package/tx/xml/conceptmap-xml.js +65 -0
- package/tx/xml/namingsystem-xml.js +65 -0
- package/tx/xml/operationoutcome-xml.js +127 -0
- package/tx/xml/parameters-xml.js +312 -0
- package/tx/xml/terminologycapabilities-xml.js +64 -0
- package/tx/xml/valueset-xml.js +64 -0
- package/tx/xml/xml-base.js +603 -0
- package/vcl/vcl-parser.js +1098 -0
- package/vcl/vcl.js +253 -0
- package/windows-install.js +19 -0
- package/xig/xig-template.html +124 -0
- package/xig/xig.js +3049 -0
package/tx/cs/cs-hgvs.js
ADDED
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
/*
|
|
2
|
+
eslint-disable no-unused-vars
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
const assert = require('assert');
|
|
6
|
+
const https = require('https');
|
|
7
|
+
const { CodeSystemProvider, Designation, CodeSystemFactoryProvider } = require('./cs-api');
|
|
8
|
+
|
|
9
|
+
class HGVSCode {
|
|
10
|
+
constructor(code) {
|
|
11
|
+
this.code = code;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
class HGVSServices extends CodeSystemProvider {
|
|
16
|
+
constructor(opContext, supplements) {
|
|
17
|
+
super(opContext, supplements);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Metadata methods
|
|
21
|
+
system() {
|
|
22
|
+
return 'http://varnomen.hgvs.org';
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
version() {
|
|
26
|
+
return '2.0';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
description() {
|
|
30
|
+
return 'HGVS validator';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
name() {
|
|
34
|
+
return 'HGVS validator';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
async totalCount() {
|
|
38
|
+
return 0; // No enumerable codes
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
specialEnumeration() {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
defaultToLatest() {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Core concept methods
|
|
50
|
+
async code(context) {
|
|
51
|
+
|
|
52
|
+
if (context instanceof HGVSCode) {
|
|
53
|
+
return context.code;
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async display(context) {
|
|
59
|
+
|
|
60
|
+
return this.code(context);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
async definition(context) {
|
|
64
|
+
return '';
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
async isAbstract(context) {
|
|
68
|
+
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async isInactive(context) {
|
|
73
|
+
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async isDeprecated(context) {
|
|
78
|
+
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
async designations(context, displays) {
|
|
83
|
+
|
|
84
|
+
if (context instanceof HGVSCode) {
|
|
85
|
+
displays.addDesignation(true, 'active', '', null, context.code);
|
|
86
|
+
|
|
87
|
+
// Add supplement designations
|
|
88
|
+
this._listSupplementDesignations(context.code, displays);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
async extendLookup(ctxt, props, params) {
|
|
93
|
+
|
|
94
|
+
// No additional properties to add for HGVS codes
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Lookup methods - this is the main functionality
|
|
98
|
+
async locate(code) {
|
|
99
|
+
|
|
100
|
+
assert(!code || typeof code === 'string', 'code must be string');
|
|
101
|
+
if (!code) return { context: null, message: 'Empty code' };
|
|
102
|
+
|
|
103
|
+
try {
|
|
104
|
+
const result = await this.#validateHGVSCode(code);
|
|
105
|
+
|
|
106
|
+
if (result.valid) {
|
|
107
|
+
return {
|
|
108
|
+
context: new HGVSCode(code),
|
|
109
|
+
message: null
|
|
110
|
+
};
|
|
111
|
+
} else {
|
|
112
|
+
return {
|
|
113
|
+
context: null,
|
|
114
|
+
message: result.message || undefined
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
} catch (error) {
|
|
118
|
+
throw new Error(`Error validating HGVS code: ${error.message}`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
async #validateHGVSCode(code) {
|
|
123
|
+
return new Promise((resolve, reject) => {
|
|
124
|
+
const url = `https://clinicaltables.nlm.nih.gov/fhir/R4/CodeSystem/hgvs/$validate-code?code=${encodeURIComponent(code)}`;
|
|
125
|
+
|
|
126
|
+
const request = https.get(url, { timeout: 5000 }, (response) => {
|
|
127
|
+
let data = '';
|
|
128
|
+
|
|
129
|
+
response.on('data', (chunk) => {
|
|
130
|
+
data += chunk;
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
response.on('end', () => {
|
|
134
|
+
try {
|
|
135
|
+
const json = JSON.parse(data);
|
|
136
|
+
let valid = false;
|
|
137
|
+
let message = '';
|
|
138
|
+
|
|
139
|
+
// Parse the FHIR Parameters response
|
|
140
|
+
if (json.parameter && Array.isArray(json.parameter)) {
|
|
141
|
+
for (const param of json.parameter) {
|
|
142
|
+
if (param.name === 'result' && param.valueBoolean) {
|
|
143
|
+
valid = true;
|
|
144
|
+
} else if (param.name === 'message' && param.valueString) {
|
|
145
|
+
if (message) message += ', ';
|
|
146
|
+
message += param.valueString;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
resolve({ valid, message });
|
|
152
|
+
} catch (parseError) {
|
|
153
|
+
reject(new Error(`Error parsing HGVS response: ${parseError.message}`));
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
request.on('timeout', () => {
|
|
159
|
+
request.destroy();
|
|
160
|
+
reject(new Error('HGVS validation request timed out'));
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
request.on('error', (error) => {
|
|
164
|
+
reject(new Error(`HGVS validation request failed: ${error.message}`));
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
async locateIsA(code, parent, disallowParent = false) {
|
|
170
|
+
|
|
171
|
+
return null; // No hierarchy support
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Iterator methods - not supported
|
|
175
|
+
async iterator(context) {
|
|
176
|
+
|
|
177
|
+
// Return empty iterator
|
|
178
|
+
return {
|
|
179
|
+
total: 0,
|
|
180
|
+
current: 0,
|
|
181
|
+
more: () => false,
|
|
182
|
+
next: () => this.current++
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
async nextContext(iteratorContext) {
|
|
187
|
+
|
|
188
|
+
iteratorContext.next();
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// Filter support - not supported
|
|
193
|
+
async doesFilter(prop, op, value) {
|
|
194
|
+
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
async getPrepContext(iterate) {
|
|
199
|
+
|
|
200
|
+
throw new Error('Filters are not supported for HGVS');
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
async searchFilter(filterContext, filter, sort) {
|
|
204
|
+
|
|
205
|
+
throw new Error('Filters are not supported for HGVS');
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
async filter(filterContext, prop, op, value) {
|
|
209
|
+
|
|
210
|
+
throw new Error('Filters are not supported for HGVS');
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
async prepare(filterContext) {
|
|
214
|
+
|
|
215
|
+
throw new Error('Filters are not supported for HGVS');
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
async executeFilters(filterContext) {
|
|
219
|
+
|
|
220
|
+
throw new Error('Filters are not supported for HGVS');
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
async filterSize(filterContext, set) {
|
|
224
|
+
|
|
225
|
+
throw new Error('Filters are not supported for HGVS');
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
async filterMore(filterContext, set) {
|
|
229
|
+
|
|
230
|
+
throw new Error('Filters are not supported for HGVS');
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
async filterConcept(filterContext, set) {
|
|
234
|
+
|
|
235
|
+
throw new Error('Filters are not supported for HGVS');
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
async filterLocate(filterContext, set, code) {
|
|
239
|
+
|
|
240
|
+
throw new Error('Filters are not supported for HGVS');
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
async filterCheck(filterContext, set, concept) {
|
|
244
|
+
|
|
245
|
+
throw new Error('Filters are not supported for HGVS');
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
async filterFinish(filterContext) {
|
|
249
|
+
|
|
250
|
+
throw new Error('Filters are not supported for HGVS');
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
async filtersNotClosed(filterContext) {
|
|
254
|
+
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// Subsumption testing - not supported
|
|
259
|
+
async subsumesTest(codeA, codeB) {
|
|
260
|
+
|
|
261
|
+
throw new Error('Subsumption is not supported for HGVS');
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// Other methods
|
|
265
|
+
async getCDSInfo(card, langList, baseURL, code, display) {
|
|
266
|
+
|
|
267
|
+
// No CDS info for HGVS
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
async defineFeatures(features) {
|
|
271
|
+
|
|
272
|
+
// No special features
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
versionAlgorithm() {
|
|
277
|
+
return null;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
class HGVSServicesFactory extends CodeSystemFactoryProvider {
|
|
282
|
+
constructor(i18n) {
|
|
283
|
+
super(i18n);
|
|
284
|
+
this.uses = 0;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
defaultVersion() {
|
|
288
|
+
return '2.0';
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// Metadata methods
|
|
292
|
+
system() {
|
|
293
|
+
return 'http://varnomen.hgvs.org';
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
version() {
|
|
297
|
+
return '2.0';
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
async buildKnownValueSet(url, version) {
|
|
301
|
+
return null;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
async build(opContext, supplements) {
|
|
305
|
+
this.recordUse();
|
|
306
|
+
return new HGVSServices(opContext, supplements);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
static checkService() {
|
|
310
|
+
// Simple check - just return that it's available
|
|
311
|
+
// In practice, you might want to test the external service
|
|
312
|
+
return 'OK (External validation service)';
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
name() {
|
|
316
|
+
return 'HGVS validator';
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
id() {
|
|
321
|
+
return "hgvs";
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
module.exports = {
|
|
326
|
+
HGVSServices,
|
|
327
|
+
HGVSServicesFactory,
|
|
328
|
+
HGVSCode
|
|
329
|
+
};
|