Definition and tools for Open Imaging Finding Models
Project description
findingmodel Package
Contains library code for managing FindingModel objects.
Look in the demo notebook.
CLI
$ python -m findingmodel
Usage: python -m findingmodel [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
config Show the currently active configuration.
fm-to-markdown Convert finding model JSON file to Markdown format.
make-info Generate description/synonyms and more...
make-stub-model Generate a simple finding model object (presence and...
markdown-to-fm Convert markdown file to finding model format.
Models
FindingModelBase
Basics of a finding model, including name, description, and attributes.
Properties:
name: The name of the finding.description: A brief description of the finding. Optional.synonyms: Alternative names or abbreviations for the finding. Optional.tags: Keywords or categories associated with the finding. Optional.attributes: A collection of attributes objects associated with the finding.
Methods:
as_markdown(): Generates a markdown representation of the finding model.
FindingModelFull
Uses FindingModelBase, but adds contains more detailed metadata:
- Requiring IDs on models and attributes (with enumerated codes for values on choice attributes)
- Allows index codes on multiple levels (model, attribute, value)
- Allows contributors (people and organization)
FindingInfo
Information on a finding, including description and synonyms, can add detailed description and citations.
Properties:
name: The name of the finding.synonyms: Alternative names or abbreviations for the finding. Optional.description: A brief description of the finding. Optional.detail: A more detailed description of the finding. Optional.citations: A list of citations or references related to the finding. Optional.
Index
For a directory structured with a defs sub-directory containing definitions files (e.g., in a clone of the Open Imaging Finding Model repository), creates/maintains an index as a JSONL file index.jsonl in the base directory (alongside the defs directory).
from findingmodel.index import Index
index = Index() # Initialize with base directory; will find existing JSONL
print(await index.count())
metadata = index.get("abdominal aortic aneurysm") # Lookup by ID, name, synonym
print(metadata.model_dump())
# > {'attributes': [{'attribute_id': 'OIFMA_MSFT_898601',
# > 'name': 'presence',
# > 'type': 'choice'},
# > {'attribute_id': 'OIFMA_MSFT_783072',
# > 'name': 'change from prior',
# > 'type': 'choice'}],
# > 'description': 'An abdominal aortic aneurysm (AAA) is a localized dilation of '
# > 'the abdominal aorta, typically defined as a diameter greater '
# > 'than 3 cm, which can lead to rupture and significant '
# > 'morbidity or mortality.',
# > 'filename': 'abdominal_aortic_aneurysm.fm.json',
# > 'name': 'abdominal aortic aneurysm',
# > 'oifm_id': 'OIFM_MSFT_134126',
# > 'synonyms': ['AAA'],
# > 'tags': None}
results = index.search("abdominal") # Returns matching names or synonyms
See example usage in notebook.
Tools
describe_finding_name()
Takes a finding name and generates a usable description and possibly synonyms (FindingInfo) using OpenAI models (requires OPENAI_API_KEY to be set to a valid value).
from findingmodel.tools import describe_finding_name
await describe_finding_name("Pneumothorax")
>>> FindingInfo(finding_name="pneumothorax", synonyms=["PTX"],
description="Pneumothorax is the...")
get_detail_on_finding()
Takes a described finding as above and uses Perplexity to get a lot of possible reference information, possibly including citations (requires PERPLEXITY_API_KEY to be set to a valid value).
from findingmodel.tools import get_detail_on_finding
finding = FindingInfo(finding_name="pneumothorax", synonyms=['PTX'],
description='Pneumothorax is the presence...')
await get_detail_on_finding(finding)
>>> FindingInfo(finding_name='pneumothorax', synonyms=['PTX'],
description='Pneumothorax is the...'
detail='## Pneumothorax\n\n### Appearance on Imaging Studies\n\nA pneumothorax...',
citations=['https://pubs.rsna.org/doi/full/10.1148/rg.2020200020',
'https://ajronline.org/doi/full/10.2214/AJR.17.18721', ...])
create_finding_model_from_markdown()
Creates a FindingModel from a markdown file or text using OpenAI API.
create_finding_model_stub_from_finding_info()
Given even a basic FindingInfo, turn it into a FindingModelBase object with at least two attributes:
- presence: Whether the finding is seen
(present, absent, indeterminate, unknown) - change from prior: How the finding has changed from prior exams
(unchanged, stable, increased, decreased, new, resolved, no prior)
add_ids_to_finding_model()
Generates and adds OIFM IDs to a FindingModelBase object and returns it as a FindingModelFull object. Note that the source parameter refers to the source component of the OIFM ID, which describes the originating organization of the model (e.g., MGB for Mass General Brigham and MSFT for Microsoft).
add_standard_codes_to_finding_model()
Edits a FindingModelFull in place to include some Radlex and SNOMED-CT codes
that correspond to some typical situations.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file findingmodel-0.2.0.tar.gz.
File metadata
- Download URL: findingmodel-0.2.0.tar.gz
- Upload date:
- Size: 29.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ed605e6002134169d5584e78a188323629572292777f74b93747d3c6805bcad
|
|
| MD5 |
23e883f425dab497502e9e13d11d4b43
|
|
| BLAKE2b-256 |
8f5cf9e2dbc5d17a2319705f709a61b41809fd2ba5627bbd647c4af4e085f803
|
File details
Details for the file findingmodel-0.2.0-py3-none-any.whl.
File metadata
- Download URL: findingmodel-0.2.0-py3-none-any.whl
- Upload date:
- Size: 36.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa1ddfe4c28940b5014147b0ef4b60d6338ad20b6ddddfddcfce43c33a854e87
|
|
| MD5 |
c05102e33714a2c9ea7a1f5dce1b935e
|
|
| BLAKE2b-256 |
b0f0ba80e3a6f6175bd4cb790d833eec428e0754f0363da5e8e502f4b44f6052
|