Skip to content

Latest commit

 

History

History
35 lines (24 loc) · 1.96 KB

README.md

File metadata and controls

35 lines (24 loc) · 1.96 KB

iKnow Utilities

This repository bundles a few reusable IRIS NLP utilities for common scenarios.

All classes are in a bdb.iKnow package to avoid conflicting with existing namespace contents and provided without any warranty. Feel free to report issues through the GitHub repo.

Converters

bdb.iKnow.Converters.SemiStructured is a simple %iKnow.Source.Converter implementation that tries to prevent common key-value style elements from messing up iKnow output. For example:

MRN: 12345
HISTORY OF PRESENT ILLNESS: Patient reported wobbly toes in an earlier encounter, for which close
followup was recommended. Wobbling subsided after 3w of intense inactivity.
  
BP: 123/mmHg
LS: 456
KV: 78xyz
TREATMENT: Patient will continue to watch Netflix 14h pd.

iKnow expects natural language text and does not consider single line breaks to mean the end of a real sentence. Therefore, when passing the above text verbatim to the iKnow engine, you'll get those structured BP: 123/mmHg, LS: 456, etc elements concatenated to one another as if it were a sentence.

The bdb.iKnow.Converters.SemiStructured class can be used in a <converter ... /> tag in your domain definition to sneak a double line break in right before such keys so they are not appended to the previous line. Note that the implementation is somewhat cautious in only adding a line break before the keys and only getting triggered by all-uppercase keys to limit false positives that might mess up genuine use of colons in natural language sentences. This is a sample after all and easy to adapt to your needs.

As a bonus, this Converter can also pick up key values as metadata, by supplying a list of keys as the converter parameter, as shown in the example below:

USER> set converted = ##class(bdb.iKnow.Converters.SemiStructured).TestFull(str,$lb("MRN,KV,LS"),.meta)

USER> zwrite meta
meta("KV")="78xyz"
meta("LS")=456
meta("MRN")=12345