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,453 @@
|
|
|
1
|
+
# TX-Import: Medical Terminology Import Tool
|
|
2
|
+
|
|
3
|
+
A comprehensive CLI tool for importing various medical terminology standards into SQLite databases and other formats. The tool supports LOINC, SNOMED CT, UNII, NDC, and provides extensible architecture for additional terminologies.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Installation](#installation)
|
|
8
|
+
- [Quick Start](#quick-start)
|
|
9
|
+
- [Available Terminologies](#available-terminologies)
|
|
10
|
+
- [Common Commands](#common-commands)
|
|
11
|
+
- [Configuration Management](#configuration-management)
|
|
12
|
+
- [Terminology-Specific Usage](#terminology-specific-usage)
|
|
13
|
+
- [Advanced Features](#advanced-features)
|
|
14
|
+
- [Troubleshooting](#troubleshooting)
|
|
15
|
+
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
1. **Prerequisites:**
|
|
19
|
+
```bash
|
|
20
|
+
# Node.js 16+ required
|
|
21
|
+
npm install
|
|
22
|
+
chmod +x tx-import.js
|
|
23
|
+
ln -s $(pwd)/tx-import.js /usr/local/bin/tx-import
|
|
24
|
+
./tx-import.js list
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
2. **Get help for a specific terminology:**
|
|
28
|
+
```bash
|
|
29
|
+
./tx-import.js loinc --help
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
3. **Import LOINC data (interactive):**
|
|
33
|
+
```bash
|
|
34
|
+
./tx-import.js loinc import
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
4. **Import with parameters (non-interactive):**
|
|
38
|
+
```bash
|
|
39
|
+
./tx-import.js loinc import \
|
|
40
|
+
--source /path/to/loinc/files \
|
|
41
|
+
--dest ./data/loinc.db \
|
|
42
|
+
--version "LOINC-2.78" \
|
|
43
|
+
--yes
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Available Terminologies
|
|
47
|
+
|
|
48
|
+
| Terminology | Command | Description | Duration |
|
|
49
|
+
|------------|---------|-------------|----------|
|
|
50
|
+
| **LOINC** | `loinc` | Logical Observation Identifiers Names and Codes | 45-120 min |
|
|
51
|
+
| **LOINC Subset** | `loinc-subset` | Create LOINC subsets for testing | 5-15 min |
|
|
52
|
+
| **SNOMED CT** | `snomed` | SNOMED Clinical Terms | 2-6 hours |
|
|
53
|
+
| **UNII** | `unii` | Unique Ingredient Identifier (FDA) | 15-45 min |
|
|
54
|
+
| **NDC** | `ndc` | National Drug Code Directory | 30-90 min |
|
|
55
|
+
|
|
56
|
+
## Common Commands
|
|
57
|
+
|
|
58
|
+
To import:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
tx-import loinc import
|
|
62
|
+
tx-import snomed import
|
|
63
|
+
tx-import unii import
|
|
64
|
+
tx-import ndc import
|
|
65
|
+
tx-import loinc-subset subset
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
See additional commands below.
|
|
69
|
+
|
|
70
|
+
## Basic Functionality
|
|
71
|
+
|
|
72
|
+
* LOINC: Import from a full Download (all files, including accessories)
|
|
73
|
+
* SNOMED: Import from a full snapshot download
|
|
74
|
+
* UNII: Import from a set of past downloads (see discussion below about UNII)
|
|
75
|
+
* NDC: import from NDC downloads
|
|
76
|
+
|
|
77
|
+
In addition, there's functionality to create test subsets for LOINC and RxNorm.
|
|
78
|
+
For SNOMED CT, use the SCT subset functionality (documented in the tx-ecosystem IG).
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
## Full Command Documentation
|
|
82
|
+
|
|
83
|
+
### Global Commands
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# List all available terminology importers
|
|
87
|
+
tx-import list
|
|
88
|
+
|
|
89
|
+
# Show configuration management options
|
|
90
|
+
tx-import config
|
|
91
|
+
|
|
92
|
+
# Display help for any command
|
|
93
|
+
tx-import help [command]
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Import Commands Pattern
|
|
97
|
+
Each terminology follows the same command pattern:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# Basic import (interactive)
|
|
101
|
+
tx-import <terminology> import
|
|
102
|
+
|
|
103
|
+
# Import with options
|
|
104
|
+
tx-import <terminology> import [options]
|
|
105
|
+
|
|
106
|
+
# Validate source files
|
|
107
|
+
tx-import <terminology> validate --source /path/to/files
|
|
108
|
+
|
|
109
|
+
# Check database status
|
|
110
|
+
tx-import <terminology> status --dest /path/to/database
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Common Import Options
|
|
114
|
+
|
|
115
|
+
| Option | Description | Example |
|
|
116
|
+
|--------|-------------|---------|
|
|
117
|
+
| `-s, --source <path>` | Source file/directory | `--source ./loinc_files/` |
|
|
118
|
+
| `-d, --dest <path>` | Destination database | `--dest ./data/loinc.db` |
|
|
119
|
+
| `-v, --version <ver>` | Version identifier | `--version "2.78"` |
|
|
120
|
+
| `-y, --yes` | Skip confirmations | `--yes` |
|
|
121
|
+
| `--verbose` | Enable detailed logging | `--verbose` |
|
|
122
|
+
| `--no-indexes` | Skip index creation | `--no-indexes` |
|
|
123
|
+
|
|
124
|
+
## Configuration Management
|
|
125
|
+
|
|
126
|
+
The tool remembers your previous inputs and suggests them as defaults:
|
|
127
|
+
|
|
128
|
+
### View Configuration History
|
|
129
|
+
```bash
|
|
130
|
+
# Show all saved configurations
|
|
131
|
+
tx-import config:show
|
|
132
|
+
|
|
133
|
+
# Show config for specific terminology
|
|
134
|
+
tx-import config:show --terminology loinc
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Clear Configuration
|
|
138
|
+
```bash
|
|
139
|
+
# Clear config for specific terminology
|
|
140
|
+
tx-import config:clear --terminology loinc
|
|
141
|
+
|
|
142
|
+
# Clear all configurations
|
|
143
|
+
tx-import config:clear --all
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Import/Export Configuration
|
|
147
|
+
```bash
|
|
148
|
+
# Export configuration to file
|
|
149
|
+
tx-import config:export --output my-config.json
|
|
150
|
+
|
|
151
|
+
# Import configuration from file
|
|
152
|
+
tx-import config:import --input my-config.json
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Terminology-Specific Usage
|
|
156
|
+
|
|
157
|
+
### LOINC Import
|
|
158
|
+
|
|
159
|
+
**Full LOINC Database Import:**
|
|
160
|
+
```bash
|
|
161
|
+
# Interactive mode
|
|
162
|
+
tx-import loinc import
|
|
163
|
+
|
|
164
|
+
# Batch mode
|
|
165
|
+
tx-import loinc import \
|
|
166
|
+
--source /path/to/loinc_distribution \
|
|
167
|
+
--dest ./data/loinc.db \
|
|
168
|
+
--version "LOINC-2.78" \
|
|
169
|
+
--yes
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Options:**
|
|
173
|
+
- `--main-only`: Import only main codes (skip language variants)
|
|
174
|
+
- `--no-indexes`: Skip index creation for faster import
|
|
175
|
+
|
|
176
|
+
**Required Source Structure:**
|
|
177
|
+
```
|
|
178
|
+
loinc_distribution/
|
|
179
|
+
├── LoincTable/
|
|
180
|
+
│ └── Loinc.csv
|
|
181
|
+
├── AccessoryFiles/
|
|
182
|
+
│ ├── PartFile/
|
|
183
|
+
│ │ ├── Part.csv
|
|
184
|
+
│ │ └── LoincPartLink_Primary.csv
|
|
185
|
+
│ ├── ConsumerName/
|
|
186
|
+
│ │ └── ConsumerName.csv
|
|
187
|
+
│ └── LinguisticVariants/
|
|
188
|
+
│ └── [language files]
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### LOINC Subset Creation
|
|
192
|
+
|
|
193
|
+
**Create Test Subset:**
|
|
194
|
+
```bash
|
|
195
|
+
# Interactive mode
|
|
196
|
+
tx-import loinc-subset subset
|
|
197
|
+
|
|
198
|
+
# With parameters
|
|
199
|
+
tx-import loinc-subset subset \
|
|
200
|
+
--source /path/to/full/loinc \
|
|
201
|
+
--dest ./loinc-subset \
|
|
202
|
+
--codes ./my-codes.txt \
|
|
203
|
+
--yes
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**Codes File Format** (`my-codes.txt`):
|
|
207
|
+
```
|
|
208
|
+
# One LOINC code per line
|
|
209
|
+
# Comments start with #
|
|
210
|
+
33747-0
|
|
211
|
+
1975-2
|
|
212
|
+
6690-2
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
**Options:**
|
|
216
|
+
- `--codes <file>`: Text file with LOINC codes (one per line)
|
|
217
|
+
- `--expand-part-links`: Expand codes based on PartLink relationships
|
|
218
|
+
|
|
219
|
+
### SNOMED CT Import
|
|
220
|
+
|
|
221
|
+
**Import SNOMED CT:**
|
|
222
|
+
```bash
|
|
223
|
+
# Interactive mode (will prompt for edition selection)
|
|
224
|
+
tx-import snomed import
|
|
225
|
+
|
|
226
|
+
# International Edition
|
|
227
|
+
tx-import snomed import \
|
|
228
|
+
--source /path/to/rf2/files \
|
|
229
|
+
--dest ./data/snomed.cache \
|
|
230
|
+
--edition "900000000000207008" \
|
|
231
|
+
--version "20250801" \
|
|
232
|
+
--yes
|
|
233
|
+
|
|
234
|
+
# With custom URI
|
|
235
|
+
tx-import snomed import \
|
|
236
|
+
--source /path/to/rf2/files \
|
|
237
|
+
--dest ./data/snomed.cache \
|
|
238
|
+
--uri "http://snomed.info/sct/900000000000207008/version/20250301" \
|
|
239
|
+
--yes
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
**Supported Editions:**
|
|
243
|
+
- International (900000000000207008)
|
|
244
|
+
- US Edition (731000124108)
|
|
245
|
+
- UK Edition (83821000000107)
|
|
246
|
+
- Australian Edition (32506021000036107)
|
|
247
|
+
- [And many more...]
|
|
248
|
+
|
|
249
|
+
**Required RF2 Structure:**
|
|
250
|
+
```
|
|
251
|
+
rf2_files/
|
|
252
|
+
├── Terminology/
|
|
253
|
+
│ ├── sct2_Concept_*.txt
|
|
254
|
+
│ ├── sct2_Description_*.txt
|
|
255
|
+
│ └── sct2_Relationship_*.txt
|
|
256
|
+
└── Refset/
|
|
257
|
+
└── [various refset files]
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### UNII Import
|
|
261
|
+
|
|
262
|
+
**Import UNII Data:**
|
|
263
|
+
```bash
|
|
264
|
+
# Interactive mode
|
|
265
|
+
tx-import unii import
|
|
266
|
+
|
|
267
|
+
# Batch mode
|
|
268
|
+
tx-import unii import \
|
|
269
|
+
--source ./unii_data.txt \
|
|
270
|
+
--dest ./data/unii.db \
|
|
271
|
+
--version "2025-01" \
|
|
272
|
+
--yes
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**Source File Format** (tab-delimited):
|
|
276
|
+
```
|
|
277
|
+
Display_Name Type UNII PT
|
|
278
|
+
Aspirin CN R16CO5Y76E aspirin
|
|
279
|
+
Acetaminophen CN 362O9ITL9D acetaminophen
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### NDC Import
|
|
283
|
+
|
|
284
|
+
**Import NDC Data:**
|
|
285
|
+
```bash
|
|
286
|
+
# Interactive mode
|
|
287
|
+
tx-import ndc import
|
|
288
|
+
|
|
289
|
+
# Full import
|
|
290
|
+
tx-import ndc import \
|
|
291
|
+
--source /path/to/ndc/versions \
|
|
292
|
+
--dest ./data/ndc.db \
|
|
293
|
+
--version "2025-01" \
|
|
294
|
+
--yes
|
|
295
|
+
|
|
296
|
+
# Products only
|
|
297
|
+
tx-import ndc import --products-only
|
|
298
|
+
|
|
299
|
+
# Packages only (requires existing products)
|
|
300
|
+
tx-import ndc import --packages-only
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**Source Structure:**
|
|
304
|
+
```
|
|
305
|
+
ndc_versions/
|
|
306
|
+
├── 2024-12/
|
|
307
|
+
│ ├── product.txt
|
|
308
|
+
│ └── package.txt
|
|
309
|
+
├── 2025-01/
|
|
310
|
+
│ ├── product.txt
|
|
311
|
+
│ └── package.txt
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
**List Available Versions:**
|
|
315
|
+
```bash
|
|
316
|
+
tx-import ndc versions --source /path/to/ndc/versions
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## Advanced Features
|
|
320
|
+
|
|
321
|
+
### Progress Tracking
|
|
322
|
+
All imports show detailed progress with:
|
|
323
|
+
- Current operation name
|
|
324
|
+
- Progress bar with percentage
|
|
325
|
+
- Items processed / total items
|
|
326
|
+
- Estimated time remaining
|
|
327
|
+
|
|
328
|
+
### Validation Before Import
|
|
329
|
+
```bash
|
|
330
|
+
# Validate source files before importing
|
|
331
|
+
tx-import loinc validate --source /path/to/files
|
|
332
|
+
tx-import snomed validate --source /path/to/rf2
|
|
333
|
+
tx-import unii validate --source /path/to/file.txt
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### Database Status Checking
|
|
337
|
+
```bash
|
|
338
|
+
# Check imported database statistics
|
|
339
|
+
tx-import loinc status --dest ./data/loinc.db
|
|
340
|
+
tx-import snomed status --dest ./data/snomed.cache
|
|
341
|
+
tx-import unii status --dest ./data/unii.db
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### Batch Processing
|
|
345
|
+
```bash
|
|
346
|
+
# Process multiple terminologies in sequence
|
|
347
|
+
tx-import loinc import --yes --source /loinc --dest ./loinc.db
|
|
348
|
+
tx-import unii import --yes --source /unii.txt --dest ./unii.db
|
|
349
|
+
tx-import ndc import --yes --source /ndc --dest ./ndc.db
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
### Smart Defaults
|
|
353
|
+
The tool remembers your previous inputs:
|
|
354
|
+
- Source directories
|
|
355
|
+
- Destination paths
|
|
356
|
+
- Version identifiers
|
|
357
|
+
- Import options
|
|
358
|
+
|
|
359
|
+
Recent choices appear as selectable options in interactive mode.
|
|
360
|
+
|
|
361
|
+
## Troubleshooting
|
|
362
|
+
|
|
363
|
+
### Common Issues
|
|
364
|
+
|
|
365
|
+
**1. "Module not found" errors:**
|
|
366
|
+
```bash
|
|
367
|
+
# Ensure all dependencies are installed
|
|
368
|
+
npm install commander inquirer chalk cli-progress sqlite3
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
**2. "Permission denied" errors:**
|
|
372
|
+
```bash
|
|
373
|
+
# Make script executable
|
|
374
|
+
chmod +x tx-import.js
|
|
375
|
+
|
|
376
|
+
# Check directory permissions
|
|
377
|
+
ls -la /path/to/source/files
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
**3. "Source directory validation failed":**
|
|
381
|
+
```bash
|
|
382
|
+
# Use validate command to check file structure
|
|
383
|
+
tx-import loinc validate --source /path/to/files
|
|
384
|
+
|
|
385
|
+
# Check for required files
|
|
386
|
+
ls -la /path/to/loinc/LoincTable/Loinc.csv
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
**4. "Database locked" errors:**
|
|
390
|
+
```bash
|
|
391
|
+
# Ensure no other processes are using the database
|
|
392
|
+
lsof /path/to/database.db
|
|
393
|
+
|
|
394
|
+
# Remove existing database if needed
|
|
395
|
+
rm /path/to/database.db
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
**5. Memory issues with large datasets:**
|
|
399
|
+
```bash
|
|
400
|
+
# Increase Node.js memory limit
|
|
401
|
+
node --max-old-space-size=8192 tx-import.js loinc import
|
|
402
|
+
|
|
403
|
+
# Use --no-indexes option for faster initial import
|
|
404
|
+
tx-import loinc import --no-indexes
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
### Debugging
|
|
408
|
+
|
|
409
|
+
**Enable verbose logging:**
|
|
410
|
+
```bash
|
|
411
|
+
tx-import loinc import --verbose
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
**Check configuration:**
|
|
415
|
+
```bash
|
|
416
|
+
tx-import config:show --terminology loinc
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
**Validate before importing:**
|
|
420
|
+
```bash
|
|
421
|
+
tx-import loinc validate --source /path/to/files
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
### Getting Help
|
|
425
|
+
|
|
426
|
+
**Command-specific help:**
|
|
427
|
+
```bash
|
|
428
|
+
tx-import loinc --help
|
|
429
|
+
tx-import loinc import --help
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
**List all available commands:**
|
|
433
|
+
```bash
|
|
434
|
+
tx-import list
|
|
435
|
+
tx-import help
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
## Performance Tips
|
|
439
|
+
|
|
440
|
+
1. **Use SSD storage** for faster I/O during imports
|
|
441
|
+
2. **Skip indexes initially** with `--no-indexes` for faster imports
|
|
442
|
+
3. **Use batch mode** with `--yes` for unattended imports
|
|
443
|
+
4. **Increase Node.js memory** for large datasets
|
|
444
|
+
5. **Validate first** to catch issues early
|
|
445
|
+
6. **Monitor disk space** - some terminologies create large databases
|
|
446
|
+
|
|
447
|
+
## Database Output Formats
|
|
448
|
+
|
|
449
|
+
- **LOINC**: SQLite database with normalized tables
|
|
450
|
+
- **SNOMED CT**: Binary cache file optimized for fast loading
|
|
451
|
+
- **UNII**: SQLite database with simple structure
|
|
452
|
+
- **NDC**: SQLite database supporting multiple versions
|
|
453
|
+
- **LOINC Subset**: File-based subset matching original structure
|