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,243 @@
|
|
|
1
|
+
# Terminology Server Registry
|
|
2
|
+
|
|
3
|
+
A Node.js module for crawling and querying FHIR terminology servers. This module maintains a registry of terminology servers, periodically crawls them to gather capability information, and provides an API to find the best server for specific code systems or value sets.
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
The module consists of three main components:
|
|
8
|
+
|
|
9
|
+
### 1. Data Model (`registry-model.js`)
|
|
10
|
+
- **ServerRegistries**: Top-level container for all registry data
|
|
11
|
+
- **ServerRegistry**: Individual registry containing multiple servers
|
|
12
|
+
- **ServerInformation**: Server metadata and authoritative designations
|
|
13
|
+
- **ServerVersionInformation**: Version-specific server capabilities
|
|
14
|
+
- **ServerRow**: Flattened representation for API responses
|
|
15
|
+
- **ServerRegistryUtilities**: Helper functions for matching and filtering
|
|
16
|
+
|
|
17
|
+
### 2. Crawler (`registry-crawler.js`)
|
|
18
|
+
- Periodically fetches capability statements from configured servers
|
|
19
|
+
- Extracts security models, supported code systems, and value sets
|
|
20
|
+
- Handles retries and error recovery
|
|
21
|
+
- Maintains current state of all servers
|
|
22
|
+
|
|
23
|
+
### 3. API Processor (`registry-api.js`)
|
|
24
|
+
- Provides query endpoints for finding servers
|
|
25
|
+
- Ranks servers based on:
|
|
26
|
+
- Authoritative designation
|
|
27
|
+
- Availability (no errors)
|
|
28
|
+
- Recency of successful connection
|
|
29
|
+
- Number of resources available
|
|
30
|
+
- Supports filtering by registry, server, version, and resource
|
|
31
|
+
|
|
32
|
+
## Installation
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Usage
|
|
39
|
+
|
|
40
|
+
### Basic Server Setup
|
|
41
|
+
|
|
42
|
+
```javascript
|
|
43
|
+
const express = require('express');
|
|
44
|
+
const RegistryCrawler = require('./crawler');
|
|
45
|
+
const RegistryAPI = require('./api');
|
|
46
|
+
|
|
47
|
+
// Configure crawler
|
|
48
|
+
const crawler = new RegistryCrawler({
|
|
49
|
+
timeout: 30000,
|
|
50
|
+
crawlInterval: 5 * 60 * 1000, // 5 minutes
|
|
51
|
+
registryConfigs: [
|
|
52
|
+
{
|
|
53
|
+
code: 'main',
|
|
54
|
+
name: 'Main Registry',
|
|
55
|
+
servers: [
|
|
56
|
+
{
|
|
57
|
+
code: 'tx1',
|
|
58
|
+
name: 'TX Server',
|
|
59
|
+
authCSList: ['http://loinc.org*'],
|
|
60
|
+
versions: [
|
|
61
|
+
{
|
|
62
|
+
version: '4.0.1',
|
|
63
|
+
address: 'https://tx.fhir.org/r4'
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
// Create API
|
|
73
|
+
const api = new RegistryAPI(crawler);
|
|
74
|
+
|
|
75
|
+
// Set up Express
|
|
76
|
+
const app = express();
|
|
77
|
+
api.registerRoutes(app);
|
|
78
|
+
|
|
79
|
+
// Start crawler and server
|
|
80
|
+
crawler.start();
|
|
81
|
+
app.listen(3000);
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### API Endpoints
|
|
85
|
+
|
|
86
|
+
#### Query Endpoints
|
|
87
|
+
|
|
88
|
+
**Find servers for a code system:**
|
|
89
|
+
```
|
|
90
|
+
GET /api/query/codesystem?system=http://loinc.org&version=4.0
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Find servers for a value set:**
|
|
94
|
+
```
|
|
95
|
+
GET /api/query/valueset?valueset=http://hl7.org/fhir/ValueSet/observation-codes
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Find the best server:**
|
|
99
|
+
```
|
|
100
|
+
GET /api/best-server/codesystem?url=http://snomed.info/sct
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
#### Registry Information
|
|
104
|
+
|
|
105
|
+
**Get statistics:**
|
|
106
|
+
```
|
|
107
|
+
GET /api/registry/stats
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**List all registries:**
|
|
111
|
+
```
|
|
112
|
+
GET /api/registry
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**Get servers in a registry:**
|
|
116
|
+
```
|
|
117
|
+
GET /api/registry/main/servers
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
#### Admin Endpoints
|
|
121
|
+
|
|
122
|
+
**Trigger manual crawl:**
|
|
123
|
+
```
|
|
124
|
+
POST /api/admin/crawl
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Export/Import data:**
|
|
128
|
+
```
|
|
129
|
+
GET /api/admin/data
|
|
130
|
+
POST /api/admin/data
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Configuration
|
|
134
|
+
|
|
135
|
+
### Registry Configuration
|
|
136
|
+
|
|
137
|
+
```javascript
|
|
138
|
+
{
|
|
139
|
+
code: 'main', // Unique registry identifier
|
|
140
|
+
name: 'Main Registry', // Display name
|
|
141
|
+
address: 'https://...', // Registry URL
|
|
142
|
+
authority: 'HL7', // Managing authority
|
|
143
|
+
servers: [...] // Array of server configs
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Server Configuration
|
|
148
|
+
|
|
149
|
+
```javascript
|
|
150
|
+
{
|
|
151
|
+
code: 'tx1', // Unique server identifier
|
|
152
|
+
name: 'TX Server', // Display name
|
|
153
|
+
address: 'https://...', // Base server URL
|
|
154
|
+
accessInfo: '...', // Access information
|
|
155
|
+
authCSList: [ // Authoritative code systems
|
|
156
|
+
'http://loinc.org*', // Supports wildcards
|
|
157
|
+
'http://snomed.info/sct'
|
|
158
|
+
],
|
|
159
|
+
authVSList: [...], // Authoritative value sets
|
|
160
|
+
usageList: ['public'], // Usage tags
|
|
161
|
+
versions: [...] // Array of version configs
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Version Configuration
|
|
166
|
+
|
|
167
|
+
```javascript
|
|
168
|
+
{
|
|
169
|
+
version: '4.0.1', // FHIR version
|
|
170
|
+
address: 'https://...' // Version-specific endpoint
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Authoritative Designations
|
|
175
|
+
|
|
176
|
+
Servers can be marked as authoritative for specific code systems or value sets. This affects ranking:
|
|
177
|
+
|
|
178
|
+
- Authoritative servers are always ranked first
|
|
179
|
+
- Wildcards are supported (e.g., `http://loinc.org*`)
|
|
180
|
+
- Non-authoritative servers are still returned but ranked lower
|
|
181
|
+
|
|
182
|
+
## Testing
|
|
183
|
+
|
|
184
|
+
Run the test suite:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
npm test
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Run with Jest (if installed):
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
npm run test:jest
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Data Persistence
|
|
197
|
+
|
|
198
|
+
The crawler can save and load its state:
|
|
199
|
+
|
|
200
|
+
```javascript
|
|
201
|
+
// Save current state
|
|
202
|
+
const data = crawler.saveData();
|
|
203
|
+
fs.writeFileSync('registry-data.json', JSON.stringify(data));
|
|
204
|
+
|
|
205
|
+
// Load saved state
|
|
206
|
+
const savedData = JSON.parse(fs.readFileSync('registry-data.json'));
|
|
207
|
+
crawler.loadData(savedData);
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Development
|
|
211
|
+
|
|
212
|
+
Start development server with auto-reload:
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
npm run dev
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## Migration from Pascal
|
|
219
|
+
|
|
220
|
+
This module is a JavaScript port of a Pascal implementation. Key differences:
|
|
221
|
+
|
|
222
|
+
| Pascal | JavaScript |
|
|
223
|
+
|--------|------------|
|
|
224
|
+
| TStringList | Array |
|
|
225
|
+
| TFslList<T> | Array |
|
|
226
|
+
| set of TServerSecurity | Set |
|
|
227
|
+
| TFslDateTime | Date |
|
|
228
|
+
| class methods | static methods |
|
|
229
|
+
|
|
230
|
+
## Security Models
|
|
231
|
+
|
|
232
|
+
The crawler detects the following security models:
|
|
233
|
+
|
|
234
|
+
- `open`: No authentication required
|
|
235
|
+
- `password`: Basic authentication
|
|
236
|
+
- `token`: Token-based authentication
|
|
237
|
+
- `oauth`: OAuth 2.0
|
|
238
|
+
- `smart`: SMART on FHIR
|
|
239
|
+
- `cert`: Certificate-based authentication
|
|
240
|
+
|
|
241
|
+
## License
|
|
242
|
+
|
|
243
|
+
BSD-3-Clause (matching the original Pascal implementation)
|