@cosyte/terminology 0.1.5 → 0.1.7

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 CHANGED
@@ -1,5 +1,49 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.7
4
+
5
+ ### Patch Changes
6
+
7
+ - c688d91: Faster value set membership and translation, and leaner CSV, GEM and UCUM reading. Every answer,
8
+ loaded model, warning and error is unchanged, and no signature changes. One thing is deliberately
9
+ different: within one `loadGems` result, the entries that carry the same five flag digits now share
10
+ one frozen `flags` object rather than each holding its own. Every field reads the same; only
11
+ `entryA.flags === entryB.flags` is now `true` for two such entries. If you told entries apart by
12
+ the identity of their `flags`, compare the entries themselves, or their fields, instead.
13
+
14
+ - `validateCodeInValueSet` builds a loaded release's hierarchy index on the first membership
15
+ question over a filter and reuses it, rather than walking the whole release for every code. A code
16
+ system whose `concepts` you assembled by hand is still indexed afresh on every call, so a change
17
+ you make to it between two calls is read.
18
+ - `translate` finds a loaded ConceptMap's elements through an index of each group by source code,
19
+ built on the first translation through the group, rather than reading every element for each code.
20
+ A map you assembled by hand is still read element by element.
21
+ - `loadCodeSystem` reads a CSV release row by row and builds only the configured columns, so a long
22
+ column you did not configure costs no memory. The strings a loaded model keeps are copied out of
23
+ the release text, so the model does not keep that text alive after the load; the same holds for
24
+ `parseCsv` and `loadGems`.
25
+ - `loadGems` reads each line in place instead of splitting the file into lines and each line into
26
+ fields, and decodes each distinct flag field once per load (the shared `flags` object above).
27
+ - `validateUcum`, `ucumEqual` and `parseUcum` match a unit against the atoms and prefixes that start
28
+ with the same character, from an index of the unit table built once, rather than against the whole
29
+ table.
30
+
31
+ The indexes are kept with the loaded release or map and go when it does. A source coding with no
32
+ `code` is still matched against a loaded map's elements that have none, as before.
33
+
34
+ The package's npm keywords also gain `snomed`, `icd10` and `cpt`, so a search on those terms finds
35
+ it.
36
+
37
+ ## 0.1.6
38
+
39
+ ### Patch Changes
40
+
41
+ - 43eea2f: An internal tidy with no change to any result, warning, or diagnostic. The value set diagnostic factories now take the path every caller already gives them, a few expressions became statements so a coverage note can name the one arm no input reaches, and those arms now carry that note.
42
+ - 43eea2f: A CSV source whose `columns.properties` list has a hole now fails with the typed `TERM_CODESYSTEM_MALFORMED` fatal for a missing property column, the same as an explicit `undefined` entry, instead of a `TypeError` from inside the loader.
43
+ - 0cb5b88: Doc comments, which your editor shows on hover and the generated API reference prints, now match the code. `resolveSystem` lists the forms it accepts in the order it tries them, and no longer says it accepts a `v2-0203` mnemonic on its own (it does not; pass the table's OID or URI). `SYSTEM_IDENTITIES` and `resolveSystem` no longer say every accepted mnemonic comes from HL7 Table 0396: aliases such as `LOINC` and `CPT` are accepted too but are not Table 0396 codes. `NdcStatus` says that `loadRxNormGraph` reads no NDC history, so every NDC it resolves is `active`. `RxNormGraph.concepts` says a concept is typed by its first defining atom. The complex-map outcome types and `MAP_CATEGORIES.AMBIGUOUS` no longer say an ambiguous or context-dependent category stops a group on its own: the group's rules decide. Links that printed as a source path, such as `../crosswalk/gems.invertGem`, now link the symbol. No code changes.
44
+ - e16570e: An RRF or fixed-width source whose property list has an entry that is not an object (a hole, `undefined`, or `null`) now fails with the typed `TERM_CODESYSTEM_MALFORMED` fatal, as a CSV source with a hole in its property columns does, instead of a `TypeError` from inside the loader.
45
+ - 43eea2f: `validateCodeInValueSet` no longer admits a code through a `compose` component that selects nothing. A component with no `system`, `concept`, `filter`, or referenced value set (the loader accepts one with an empty `valueSet` list) matched every code, so an include admitted any code and an exclude removed every code, while `expand` gave the same component no members. Membership now agrees with `expand`: such a component matches no code, and a `valueSet` list that yields no reference is an intersection with nothing.
46
+
3
47
  ## 0.1.5
4
48
 
5
49
  ### Patch Changes
package/README.md CHANGED
@@ -379,6 +379,9 @@ Questions, bug reports, and an answer the engine got wrong go in
379
379
  system, map, or value set that reproduces it. Use synthetic data only: a code in patient context can
380
380
  be PHI. [SUPPORT.md](https://github.com/cosyte/.github/blob/main/SUPPORT.md) says where to ask what.
381
381
 
382
+ Need a terminology integration built, or hosted and run for you? See our
383
+ [integration services](https://cosyte.com/integration-services).
384
+
382
385
  ## Security
383
386
 
384
387
  Report a vulnerability privately, never in a public issue, and with no real patient data in it: