Skip to main content

Definition and tools for Open Imaging Finding Models

Project description

findingmodel

Core Python library for Open Imaging Finding Models - structured data models for describing medical imaging findings in radiology reports.

Installation

pip install findingmodel

Features

  • Finding Model Management: Create and manage structured medical finding models with attributes
  • Finding Model Index: Fast lookup and search across finding model definitions with DuckDB
  • MCP Server: Model Context Protocol server for AI agent integration
  • Medical Ontology Support: Index codes from RadLex, SNOMED-CT, and other vocabularies

Configuration

Create a .env file in your project root:

# Required for embedding-based search
OPENAI_API_KEY=your_key_here

# Optional: Custom database path
DUCKDB_INDEX_PATH=/mnt/data/finding_models.duckdb

The finding model database is automatically downloaded on first use.

CLI (findingmodel)

# View configuration
findingmodel config

# Show index statistics
findingmodel index stats

# Convert finding model to Markdown
findingmodel fm-to-markdown model.json

Models

FindingModelBase

Basic finding model structure with name, description, and attributes.

from findingmodel import FindingModelBase

model = FindingModelBase(
    name="pneumothorax",
    description="Presence of air in the pleural space",
    attributes=[...]
)

# Export to Markdown
print(model.as_markdown())

FindingModelFull

Extended model with OIFM IDs, index codes, and contributor information.

from findingmodel import FindingModelFull

# Load from JSON
model = FindingModelFull.model_validate_json(json_content)

print(f"Model ID: {model.oifm_id}")
for attr in model.attributes:
    print(f"  {attr.name}: {attr.oifma_id}")

FindingInfo

Metadata about a finding including description, synonyms, and optional citations.

from findingmodel import FindingInfo

info = FindingInfo(
    name="pneumothorax",
    synonyms=["PTX", "collapsed lung"],
    description="Presence of air in the pleural space"
)

Index API

The Index class provides async access to the finding model database.

import asyncio
from findingmodel import Index

async def main():
    async with Index() as index:
        # Count indexed models
        count = await index.count()
        print(f"Total models: {count}")

        # Lookup by name or ID
        model = await index.get("pneumothorax")
        if model:
            print(f"Found: {model.name} ({model.oifm_id})")

        # Search for models
        results = await index.search("lung nodule", limit=5)
        for result in results:
            print(f"- {result.name}: {result.description}")

        # List all with pagination
        models, total = await index.all(limit=20, offset=0)

asyncio.run(main())

MCP Server

The package includes an MCP server for AI agent integration.

Tools Provided

  • search_finding_models: Hybrid search (FTS + semantic) for finding models
  • get_finding_model: Retrieve specific models by ID, name, or synonym
  • list_finding_model_tags: List all available tags
  • count_finding_models: Get index statistics

Running the Server

# Run directly
python -m findingmodel.mcp_server

# Or use the CLI entry point
findingmodel-mcp

Claude Desktop Configuration

{
  "mcpServers": {
    "finding-model-search": {
      "command": "python",
      "args": ["-m", "findingmodel.mcp_server"],
      "env": {
        "OPENAI_API_KEY": "your-key-here"
      }
    }
  }
}

See MCP Server Guide for complete documentation.

Related Packages

Documentation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

findingmodel-1.0.1.tar.gz (27.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

findingmodel-1.0.1-py3-none-any.whl (34.4 kB view details)

Uploaded Python 3

File details

Details for the file findingmodel-1.0.1.tar.gz.

File metadata

  • Download URL: findingmodel-1.0.1.tar.gz
  • Upload date:
  • Size: 27.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for findingmodel-1.0.1.tar.gz
Algorithm Hash digest
SHA256 f5287139d6f2494de901c21a226ea15026f938792e4c51fe738c06785d01ac8f
MD5 be0284fa4c7d18098bb714f0e379086d
BLAKE2b-256 9733b2bd07748a0ccb3eff935d35fe675a6cf3dba129e45b2d276a2a2866d818

See more details on using hashes here.

File details

Details for the file findingmodel-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: findingmodel-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 34.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for findingmodel-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 71d997d4c63d0d9078231f2a24418556d899dea0244c009426e362358af9eaca
MD5 2fbec758d1dda993f63458cc0a5e7fd4
BLAKE2b-256 328e8fa90e66a3672508c704699c7c6ba4609bc782b8c4038c4d0c728bd2acc1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page