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
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
<h2>Expand ValueSet</h2>
|
|
2
|
+
<form method="get" action="ValueSet/$expand" style="margin-left: 10px; margin-top: 5px;">
|
|
3
|
+
<table class="grid" cellpadding="0" cellspacing="0">
|
|
4
|
+
<tr>
|
|
5
|
+
<td style="position: relative;">
|
|
6
|
+
URL: <input type="text" name="url" id="vsUrlInput" size="40" autocomplete="off"/><span style="color: maroon">*</span>
|
|
7
|
+
<div id="vsUrlSuggestions" class="typeahead-suggestions" style="display:none; position:absolute; background:white; border:1px solid #ccc; max-height:200px; overflow-y:auto; z-index:1000; width:100%;"></div>
|
|
8
|
+
</td>
|
|
9
|
+
<td>Version: <input type="text" name="valueSetVersion" size="10"/></td>
|
|
10
|
+
</tr>
|
|
11
|
+
<tr>
|
|
12
|
+
<td>Filter: <input type="text" name="filter" size="20"/></td>
|
|
13
|
+
<td>Language: <input type="text" name="displayLanguage" size="10"/></td>
|
|
14
|
+
</tr>
|
|
15
|
+
<tr>
|
|
16
|
+
<td colspan="2">
|
|
17
|
+
<input type="checkbox" name="includeDesignations" id="expand_desig" value="true"/>
|
|
18
|
+
<label for="expand_desig">Include Designations</label>
|
|
19
|
+
<input type="checkbox" name="activeOnly" id="expand_active" value="true"/>
|
|
20
|
+
<label for="expand_active">Active Only</label>
|
|
21
|
+
<input type="checkbox" name="excludeNested" id="expand_excludeNested" value="true"/>
|
|
22
|
+
<label for="expand_excludeNested">Not nested</label>
|
|
23
|
+
</td>
|
|
24
|
+
</tr>
|
|
25
|
+
</table>
|
|
26
|
+
<button type="submit" class="btn btn-sm btn-primary">Expand</button>
|
|
27
|
+
</form>
|
|
28
|
+
|
|
29
|
+
<h2>Validate Code</h2>
|
|
30
|
+
<form method="get" action="ValueSet/$validate-code" style="margin-left: 10px; margin-top: 5px;">
|
|
31
|
+
<input type="hidden" name="inferSystem" id="{{ inferSystemId }}" value="true"/>
|
|
32
|
+
<table class="grid" cellpadding="0" cellspacing="0">
|
|
33
|
+
<tr>
|
|
34
|
+
<td style="position: relative;">
|
|
35
|
+
ValueSet URL: <input type="text" name="url" id="vcVsUrlInput" size="40" autocomplete="off"/><span style="color: maroon">*</span>
|
|
36
|
+
<div id="vcVsUrlSuggestions" class="typeahead-suggestions" style="display:none; position:absolute; background:white; border:1px solid #ccc; max-height:200px; overflow-y:auto; z-index:1000; width:100%;"></div>
|
|
37
|
+
</td>
|
|
38
|
+
<td>ValueSet Version: <input type="text" name="valueSetVersion" size="10"/></td>
|
|
39
|
+
</tr>
|
|
40
|
+
<tr>
|
|
41
|
+
<td>System: <input type="text" name="system" id="{{ vcSystemId }}" size="30" onchange="updateInferSystem('{{ vcSystemId }}', '{{ inferSystemId }}')"/></td>
|
|
42
|
+
<td>Version: <input type="text" name="version" size="10"/></td>
|
|
43
|
+
</tr>
|
|
44
|
+
<tr>
|
|
45
|
+
<td>Code: <input type="text" name="code" size="20" required/><span style="color: maroon">*</span></td>
|
|
46
|
+
<td>Display: <input type="text" name="display" size="20"/></td>
|
|
47
|
+
</tr>
|
|
48
|
+
<tr>
|
|
49
|
+
<td>Language: <input type="text" name="displayLanguage" size="10"/></td>
|
|
50
|
+
<td>
|
|
51
|
+
<input type="checkbox" name="abstract" value="true"/>
|
|
52
|
+
<label>Abstract</label>
|
|
53
|
+
</td>
|
|
54
|
+
</tr>
|
|
55
|
+
</table>
|
|
56
|
+
<button type="submit" class="btn btn-sm btn-primary">Validate Code</button>
|
|
57
|
+
</form>
|
|
58
|
+
|
|
59
|
+
<script>
|
|
60
|
+
(function() {
|
|
61
|
+
const valueSets = {{ valueSetsJson }};
|
|
62
|
+
|
|
63
|
+
function setupTypeahead(inputId, suggestionsId) {
|
|
64
|
+
const input = document.getElementById(inputId);
|
|
65
|
+
const suggestions = document.getElementById(suggestionsId);
|
|
66
|
+
let selectedIndex = -1;
|
|
67
|
+
|
|
68
|
+
input.addEventListener('input', function() {
|
|
69
|
+
const query = this.value.toLowerCase();
|
|
70
|
+
suggestions.innerHTML = '';
|
|
71
|
+
selectedIndex = -1;
|
|
72
|
+
|
|
73
|
+
if (query.length < 2) {
|
|
74
|
+
suggestions.style.display = 'none';
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const matches = valueSets
|
|
79
|
+
.filter(vs => vs.toLowerCase().includes(query))
|
|
80
|
+
.slice(0, 50);
|
|
81
|
+
|
|
82
|
+
if (matches.length === 0) {
|
|
83
|
+
suggestions.style.display = 'none';
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
for (const match of matches) {
|
|
88
|
+
const div = document.createElement('div');
|
|
89
|
+
div.textContent = match;
|
|
90
|
+
div.style.padding = '4px 8px';
|
|
91
|
+
div.style.cursor = 'pointer';
|
|
92
|
+
div.addEventListener('mouseenter', function() {
|
|
93
|
+
this.style.backgroundColor = '#e0e0e0';
|
|
94
|
+
});
|
|
95
|
+
div.addEventListener('mouseleave', function() {
|
|
96
|
+
this.style.backgroundColor = 'white';
|
|
97
|
+
});
|
|
98
|
+
div.addEventListener('click', function() {
|
|
99
|
+
input.value = match;
|
|
100
|
+
suggestions.style.display = 'none';
|
|
101
|
+
});
|
|
102
|
+
suggestions.appendChild(div);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
suggestions.style.display = 'block';
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
input.addEventListener('keydown', function(e) {
|
|
109
|
+
const items = suggestions.querySelectorAll('div');
|
|
110
|
+
if (items.length === 0) return;
|
|
111
|
+
|
|
112
|
+
if (e.key === 'ArrowDown') {
|
|
113
|
+
e.preventDefault();
|
|
114
|
+
selectedIndex = Math.min(selectedIndex + 1, items.length - 1);
|
|
115
|
+
updateSelection(items);
|
|
116
|
+
} else if (e.key === 'ArrowUp') {
|
|
117
|
+
e.preventDefault();
|
|
118
|
+
selectedIndex = Math.max(selectedIndex - 1, 0);
|
|
119
|
+
updateSelection(items);
|
|
120
|
+
} else if (e.key === 'Enter' && selectedIndex >= 0) {
|
|
121
|
+
e.preventDefault();
|
|
122
|
+
input.value = items[selectedIndex].textContent;
|
|
123
|
+
suggestions.style.display = 'none';
|
|
124
|
+
} else if (e.key === 'Escape') {
|
|
125
|
+
suggestions.style.display = 'none';
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
function updateSelection(items) {
|
|
130
|
+
items.forEach((item, i) => {
|
|
131
|
+
item.style.backgroundColor = i === selectedIndex ? '#e0e0e0' : 'white';
|
|
132
|
+
});
|
|
133
|
+
if (selectedIndex >= 0) {
|
|
134
|
+
items[selectedIndex].scrollIntoView({ block: 'nearest' });
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
document.addEventListener('click', function(e) {
|
|
139
|
+
if (!input.contains(e.target) && !suggestions.contains(e.target)) {
|
|
140
|
+
suggestions.style.display = 'none';
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
setupTypeahead('vsUrlInput', 'vsUrlSuggestions');
|
|
146
|
+
setupTypeahead('vcVsUrlInput', 'vcVsUrlSuggestions');
|
|
147
|
+
})();
|
|
148
|
+
</script>
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<h3>Search</h3>
|
|
2
|
+
|
|
3
|
+
<form method="get" id="searchForm" action="{{ baseUrl }}/CodeSystem">
|
|
4
|
+
<table class="grid" cellpadding="0" cellspacing="0">
|
|
5
|
+
<tr>
|
|
6
|
+
<td colspan="2">URL: <input type="text" name="url" size="40"/></td>
|
|
7
|
+
<td>Version: <input type="text" name="version"/></td>
|
|
8
|
+
</tr>
|
|
9
|
+
<tr>
|
|
10
|
+
<td title="Searches in name, title, description, publisher">Text: <input type="text" name="text"/></td>
|
|
11
|
+
<td>Status: <select name="status" class="form-select"><option value="">(any status)</option>
|
|
12
|
+
<option value="draft">draft</option><option value="active">active</option>
|
|
13
|
+
<option value="retired">retired</option><option value="unknown">unknown</option></select></td>
|
|
14
|
+
<td>Language: <input type="text" name="lang" size="10"/> (ietf code)</td>
|
|
15
|
+
</tr>
|
|
16
|
+
<tr>
|
|
17
|
+
<td colspan="2" title="CodeSystem - for supplements, value sets, and concept maps">System: <input type="text" name="system" size="40"/></td>
|
|
18
|
+
<td>CS Content: <select name="content-mode" class="form-select"><option value="">(any content)</option>
|
|
19
|
+
<option value="not-present">not-present</option><option value="example">example</option>
|
|
20
|
+
<option value="fragment">fragment</option><option value="complete">complete</option>
|
|
21
|
+
<option value="supplement">supplement</option></select></td>
|
|
22
|
+
</tr>
|
|
23
|
+
</table>
|
|
24
|
+
|
|
25
|
+
<input type="hidden" name="_elements" id="elementsInput" value="url,version,name,title,status,content,date" disabled/>
|
|
26
|
+
|
|
27
|
+
<button type="submit" class="btn btn-primary">Search:</button>
|
|
28
|
+
<input type="radio" name="mode" value="cs" checked onchange="updateSearchAction('{{ baseUrl }}')"/> CodeSystems
|
|
29
|
+
<input type="radio" name="mode" value="vs" onchange="updateSearchAction('{{ baseUrl }}')"/> ValueSets
|
|
30
|
+
<input type="radio" name="mode" value="cm" onchange="updateSearchAction('{{ baseUrl }}')"/> ConceptMaps
|
|
31
|
+
|
|
|
32
|
+
<input type="checkbox" id="summaryTable" onchange="updateSummaryTable()"/> <label for="summaryTable">Summary Table</label>
|
|
33
|
+
</form>
|
|
34
|
+
|
|
35
|
+
<p>Or see the <a href="op.html">Operations</a></p>
|
|
36
|
+
|
|
37
|
+
<script>
|
|
38
|
+
function updateSearchAction(baseUrl) {
|
|
39
|
+
const form = document.getElementById('searchForm');
|
|
40
|
+
const mode = document.querySelector('input[name="mode"]:checked').value;
|
|
41
|
+
const resourceMap = { cs: 'CodeSystem', vs: 'ValueSet', cm: 'ConceptMap' };
|
|
42
|
+
form.action = baseUrl + '/' + resourceMap[mode];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function updateSummaryTable() {
|
|
46
|
+
const checkbox = document.getElementById('summaryTable');
|
|
47
|
+
const elementsInput = document.getElementById('elementsInput');
|
|
48
|
+
elementsInput.disabled = !checkbox.checked;
|
|
49
|
+
localStorage.setItem('txSummaryTable', checkbox.checked);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Restore summary table preference on page load
|
|
53
|
+
document.addEventListener('DOMContentLoaded', function() {
|
|
54
|
+
const saved = localStorage.getItem('txSummaryTable');
|
|
55
|
+
if (saved === 'true') {
|
|
56
|
+
const checkbox = document.getElementById('summaryTable');
|
|
57
|
+
checkbox.checked = true;
|
|
58
|
+
document.getElementById('elementsInput').disabled = false;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
</script>
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
|
|
3
|
+
<html xml:lang="en" lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<title>FHIRsmith: [%title%]</title>
|
|
6
|
+
|
|
7
|
+
<meta charset="utf-8"/>
|
|
8
|
+
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
|
|
9
|
+
<meta content="http://hl7.org/fhir" name="author"/>
|
|
10
|
+
<meta charset="utf-8" http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
11
|
+
|
|
12
|
+
<link rel="stylesheet" href="/fhir.css"/>
|
|
13
|
+
|
|
14
|
+
<!-- Bootstrap core CSS -->
|
|
15
|
+
<link rel="stylesheet" href="/assets/css/bootstrap.css"/>
|
|
16
|
+
<link rel="stylesheet" href="/assets/css/bootstrap-fhir.css"/>
|
|
17
|
+
|
|
18
|
+
<!-- Project extras -->
|
|
19
|
+
<link rel="stylesheet" href="/assets/css/project.css"/>
|
|
20
|
+
<link rel="stylesheet" href="/assets/css/pygments-manni.css"/>
|
|
21
|
+
|
|
22
|
+
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
|
23
|
+
<!-- [if lt IE 9]>
|
|
24
|
+
<script src="/assets/js/html5shiv.js"></script>
|
|
25
|
+
<script src="/assets/js/respond.min.js"></script>
|
|
26
|
+
<![endif] -->
|
|
27
|
+
|
|
28
|
+
<!-- Favicons -->
|
|
29
|
+
<link sizes="144x144" rel="apple-touch-icon-precomposed" href="/assets/ico/apple-touch-icon-144-precomposed.png"/>
|
|
30
|
+
<link sizes="114x114" rel="apple-touch-icon-precomposed" href="/assets/ico/apple-touch-icon-114-precomposed.png"/>
|
|
31
|
+
<link sizes="72x72" rel="apple-touch-icon-precomposed" href="/assets/ico/apple-touch-icon-72-precomposed.png"/>
|
|
32
|
+
<link rel="apple-touch-icon-precomposed" href="/assets/ico/apple-touch-icon-57-precomposed.png"/>
|
|
33
|
+
<link rel="shortcut icon" href="/assets/ico/favicon.png"/>
|
|
34
|
+
<script type="text/javascript" src="/assets/js/json2.js"></script>
|
|
35
|
+
<script type="text/javascript" src="/assets/js/jquery.min.js"></script>
|
|
36
|
+
<script type="text/javascript" src="/assets/js/bootstrap.min.js"></script>
|
|
37
|
+
</head>
|
|
38
|
+
|
|
39
|
+
<body>
|
|
40
|
+
<script>
|
|
41
|
+
function toggleJsonSource(id) {
|
|
42
|
+
const elem = document.getElementById(id);
|
|
43
|
+
const btn = elem.previousElementSibling;
|
|
44
|
+
if (elem.style.display === 'none') {
|
|
45
|
+
elem.style.display = 'block';
|
|
46
|
+
btn.textContent = 'Hide JSON Source';
|
|
47
|
+
} else {
|
|
48
|
+
elem.style.display = 'none';
|
|
49
|
+
btn.textContent = 'Show JSON Source';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function toggleOriginalNarrative(id) {
|
|
53
|
+
const elem = document.getElementById(id);
|
|
54
|
+
const btn = elem.previousElementSibling;
|
|
55
|
+
if (elem.style.display === 'none') {
|
|
56
|
+
elem.style.display = 'block';
|
|
57
|
+
btn.textContent = 'Hide Original Narrative';
|
|
58
|
+
} else {
|
|
59
|
+
elem.style.display = 'none';
|
|
60
|
+
btn.textContent = 'Show Original Narrative';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function toggleOperations(id) {
|
|
64
|
+
const elem = document.getElementById(id);
|
|
65
|
+
const btn = elem.previousElementSibling;
|
|
66
|
+
if (elem.style.display === 'none') {
|
|
67
|
+
elem.style.display = 'block';
|
|
68
|
+
btn.textContent = 'Hide Operations';
|
|
69
|
+
} else {
|
|
70
|
+
elem.style.display = 'none';
|
|
71
|
+
btn.textContent = 'Show Operations';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function updateInferSystem(systemId, inferSystemId) {
|
|
76
|
+
const systemInput = document.getElementById(systemId);
|
|
77
|
+
const inferSystemInput = document.getElementById(inferSystemId);
|
|
78
|
+
inferSystemInput.disabled = (systemInput.value.trim() !== '');
|
|
79
|
+
}
|
|
80
|
+
</script>
|
|
81
|
+
<div id="segment-navbar" class="segment">
|
|
82
|
+
<div id="stripe"> </div>
|
|
83
|
+
<div class="container">
|
|
84
|
+
<div style="background-color: #ad1f2f; padding: 6px; color: white;">
|
|
85
|
+
<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> [%fhir-version%] © HL7.org |
|
|
86
|
+
<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%] |
|
|
87
|
+
<a href="/" style="color: gold"> Server Home</a> |
|
|
88
|
+
<a href="[%endpoint-path%]" style="color: gold">TX Home</a> |
|
|
89
|
+
<a href="[%endpoint-path%]/metadata" style="color: gold">Capability Statement</a> |
|
|
90
|
+
<a href="[%endpoint-path%]/metadata?mode=terminology" style="color: gold">Terminology Capabilities</a> |
|
|
91
|
+
<a href="[%endpoint-path%]/op.html" style="color: gold">Operations</a> |
|
|
92
|
+
|
|
93
|
+
</div>
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
96
|
+
|
|
97
|
+
<div id="segment-content" class="segment">
|
|
98
|
+
<div class="container">
|
|
99
|
+
<div class="row">
|
|
100
|
+
<div class="inner-wrapper">
|
|
101
|
+
<div class="col-12">
|
|
102
|
+
|
|
103
|
+
<h2><img border="0" src="/FHIRsmith32.png" style="vertical-align: text-bottom"/> TX: [%title%] </h2>
|
|
104
|
+
|
|
105
|
+
[%content%]
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
|
|
115
|
+
<div id="segment-footer" class="segment">
|
|
116
|
+
<div class="container">
|
|
117
|
+
<div class="inner-wrapper">
|
|
118
|
+
<p>
|
|
119
|
+
<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+. |
|
|
120
|
+
<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+ |
|
|
121
|
+
FHIR Version [%fhir-version%] | ([%ms%] ms)
|
|
122
|
+
</p>
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
|
|
127
|
+
<!-- JS and analytics only. -->
|
|
128
|
+
<script src="/assets/js/respond.min.js"/>
|
|
129
|
+
<script src="/assets/js/fhir.js"/>
|
|
130
|
+
|
|
131
|
+
</body>
|
|
132
|
+
|
|
133
|
+
</html>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<div class="operations" style="margin-top: 20px;">
|
|
2
|
+
<button type="button" class="btn btn-sm btn-outline-secondary" onclick="toggleOperations('{{ opsId }}')">Show Operations</button>
|
|
3
|
+
<div id="{{ opsId }}" style="display: none; margin-top: 10px;">
|
|
4
|
+
|
|
5
|
+
<div class="operation-form" style="margin-bottom: 15px;">
|
|
6
|
+
<strong>Expand</strong>
|
|
7
|
+
<form method="get" action="$expand" style="margin-left: 10px; margin-top: 5px;">
|
|
8
|
+
<input type="hidden" name="url" value="{{ url }}"/>
|
|
9
|
+
<table class="grid" cellpadding="0" cellspacing="0">
|
|
10
|
+
<tr>
|
|
11
|
+
<td>Filter: <input type="text" name="filter" size="20"/></td>
|
|
12
|
+
<td>Language: <input type="text" name="displayLanguage" size="10"/></td>
|
|
13
|
+
</tr>
|
|
14
|
+
<tr>
|
|
15
|
+
<td colspan="2">
|
|
16
|
+
<input type="checkbox" name="includeDesignations" id="expand_desig" value="true"/>
|
|
17
|
+
<label for="expand_desig">Include Designations</label>
|
|
18
|
+
<input type="checkbox" name="activeOnly" id="expand_active" value="true"/>
|
|
19
|
+
<label for="expand_active">Active Only</label>
|
|
20
|
+
</td>
|
|
21
|
+
</tr>
|
|
22
|
+
</table>
|
|
23
|
+
<button type="submit" class="btn btn-sm btn-primary">Expand</button>
|
|
24
|
+
</form>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<div class="operation-form" style="margin-bottom: 15px;">
|
|
28
|
+
<strong>Validate Code (ValueSet)</strong>
|
|
29
|
+
<form method="get" action="$validate-code" style="margin-left: 10px; margin-top: 5px;">
|
|
30
|
+
<input type="hidden" name="url" value="{{ url }}"/>
|
|
31
|
+
<input type="hidden" name="inferSystem" id="{{ inferSystemId }}" value="true"/>
|
|
32
|
+
<table class="grid" cellpadding="0" cellspacing="0">
|
|
33
|
+
<tr>
|
|
34
|
+
<td>System: <input type="text" name="system" id="{{ vcSystemId }}" size="30" onchange="updateInferSystem('{{ vcSystemId }}', '{{ inferSystemId }}')"/></td>
|
|
35
|
+
<td>Version: <input type="text" name="version" size="10"/></td>
|
|
36
|
+
</tr>
|
|
37
|
+
<tr>
|
|
38
|
+
<td>Code: <input type="text" name="code" size="20" required/></td>
|
|
39
|
+
<td>Display: <input type="text" name="display" size="20"/></td>
|
|
40
|
+
</tr>
|
|
41
|
+
<tr>
|
|
42
|
+
<td>Language: <input type="text" name="displayLanguage" size="10"/></td>
|
|
43
|
+
<td>
|
|
44
|
+
<input type="checkbox" name="abstract" value="true"/>
|
|
45
|
+
<label>Abstract</label>
|
|
46
|
+
</td>
|
|
47
|
+
</tr>
|
|
48
|
+
</table>
|
|
49
|
+
<button type="submit" class="btn btn-sm btn-primary">Validate Code</button>
|
|
50
|
+
</form>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|