diff --git a/.github/workflows/deploy-docs.yaml b/.github/workflows/deploy-docs.yaml index 1846e58..002bc62 100644 --- a/.github/workflows/deploy-docs.yaml +++ b/.github/workflows/deploy-docs.yaml @@ -19,18 +19,14 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 # otherwise, you will failed to push refs to dest repo - - name: Set up Python. uses: actions/setup-python@v4 with: python-version: 3.9 - - name: Install Poetry. run: pipx install poetry - - name: Install dependencies. run: poetry install -E docs - - name: Build documentation. run: | mkdir -p docs diff --git a/poetry.lock b/poetry.lock index 25b5f8c..355972b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "airium" @@ -15,6 +15,17 @@ files = [ dev = ["pdbpp (>=0.10,<1.0)", "pytest (>=6.2,<7.0)", "pytest-cov (>=3.0,<4.0)", "pytest-mock (>=3.6,<4.0)"] parse = ["beautifulsoup4 (>=4.10,<5.0)", "requests (>=2.12,<3)"] +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + [[package]] name = "antlr4-python3-runtime" version = "4.9.3" @@ -39,6 +50,23 @@ files = [ [package.dependencies] python-dateutil = ">=2.7.0" +[[package]] +name = "asteval" +version = "0.9.33" +description = "Safe, minimalistic evaluator of python expression using ast module" +optional = false +python-versions = ">=3.8" +files = [ + {file = "asteval-0.9.33-py3-none-any.whl", hash = "sha256:aae3a0308575a545c8cecc43a6632219e6a90963a56380c74632cf54311e43bf"}, + {file = "asteval-0.9.33.tar.gz", hash = "sha256:94981701f4d252c88aa5e821121b1aabef73a003da138fc6405169c9e675d24d"}, +] + +[package.extras] +all = ["Sphinx", "build", "coverage", "pytest", "pytest-cov", "twine"] +dev = ["build", "twine"] +doc = ["Sphinx"] +test = ["coverage", "pytest", "pytest-cov"] + [[package]] name = "attrs" version = "23.1.0" @@ -306,6 +334,24 @@ files = [ {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, ] +[[package]] +name = "deepdiff" +version = "6.7.1" +description = "Deep Difference and Search of any Python object/data. Recreate objects by adding adding deltas to each other." +optional = false +python-versions = ">=3.7" +files = [ + {file = "deepdiff-6.7.1-py3-none-any.whl", hash = "sha256:58396bb7a863cbb4ed5193f548c56f18218060362311aa1dc36397b2f25108bd"}, + {file = "deepdiff-6.7.1.tar.gz", hash = "sha256:b367e6fa6caac1c9f500adc79ada1b5b1242c50d5f716a1a4362030197847d30"}, +] + +[package.dependencies] +ordered-set = ">=4.0.2,<4.2.0" + +[package.extras] +cli = ["click (==8.1.3)", "pyyaml (==6.0.1)"] +optimize = ["orjson"] + [[package]] name = "deprecated" version = "1.2.13" @@ -359,6 +405,40 @@ files = [ [package.extras] test = ["pytest (>=6)"] +[[package]] +name = "flexcache" +version = "0.3" +description = "Saves and loads to the cache a transformed versions of a source object." +optional = false +python-versions = ">=3.9" +files = [ + {file = "flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32"}, + {file = "flexcache-0.3.tar.gz", hash = "sha256:18743bd5a0621bfe2cf8d519e4c3bfdf57a269c15d1ced3fb4b64e0ff4600656"}, +] + +[package.dependencies] +typing-extensions = "*" + +[package.extras] +test = ["pytest", "pytest-cov", "pytest-mpl", "pytest-subtests"] + +[[package]] +name = "flexparser" +version = "0.4" +description = "Parsing made fun ... using typing." +optional = false +python-versions = ">=3.9" +files = [ + {file = "flexparser-0.4-py3-none-any.whl", hash = "sha256:3738b456192dcb3e15620f324c447721023c0293f6af9955b481e91d00179846"}, + {file = "flexparser-0.4.tar.gz", hash = "sha256:266d98905595be2ccc5da964fe0a2c3526fbbffdc45b65b3146d75db992ef6b2"}, +] + +[package.dependencies] +typing-extensions = "*" + +[package.extras] +test = ["pytest", "pytest-cov", "pytest-mpl", "pytest-subtests"] + [[package]] name = "fqdn" version = "1.5.1" @@ -868,6 +948,23 @@ webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format\" format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] +[[package]] +name = "lark" +version = "1.2.2" +description = "a modern parsing library" +optional = false +python-versions = ">=3.8" +files = [ + {file = "lark-1.2.2-py3-none-any.whl", hash = "sha256:c2276486b02f0f1b90be155f2c8ba4a8e194d42775786db622faccd652d8e80c"}, + {file = "lark-1.2.2.tar.gz", hash = "sha256:ca807d0162cd16cef15a8feecb862d7319e7a09bdb13aef927968e45040fed80"}, +] + +[package.extras] +atomic-cache = ["atomicwrites"] +interegular = ["interegular (>=0.3.1,<0.4.0)"] +nearley = ["js2py"] +regex = ["regex"] + [[package]] name = "linkml" version = "1.8.1" @@ -928,6 +1025,24 @@ jsonpath-ng = "*" linkml-runtime = ">=1.1.6" "ruamel.yaml" = "*" +[[package]] +name = "linkml-map" +version = "0.3.8" +description = "a framework for specifying and executing mappings between data models" +optional = false +python-versions = "<4.0,>=3.9" +files = [ + {file = "linkml_map-0.3.8-py3-none-any.whl", hash = "sha256:2779602e4d298070308d2f369213bd52ae06e8e1f29def1761275cb1aa338a5c"}, + {file = "linkml_map-0.3.8.tar.gz", hash = "sha256:64fb27768384cf02dd865ab146e29e096dc33b08416947cb37e2213957396e0d"}, +] + +[package.dependencies] +asteval = ">=0.9.29,<0.10.0" +deepdiff = ">=6.7.1,<7.0.0" +linkml-runtime = ">=1.7.2" +pydantic = ">=2.0.0" +ucumvert = ">=0.1.1,<0.2.0" + [[package]] name = "linkml-renderer" version = "0.1.2" @@ -1224,6 +1339,20 @@ files = [ [package.dependencies] et-xmlfile = "*" +[[package]] +name = "ordered-set" +version = "4.1.0" +description = "An OrderedSet is a custom MutableSet that remembers its order, so that every" +optional = false +python-versions = ">=3.7" +files = [ + {file = "ordered-set-4.1.0.tar.gz", hash = "sha256:694a8e44c87657c59292ede72891eb91d34131f6531463aab3009191c77364a8"}, + {file = "ordered_set-4.1.0-py3-none-any.whl", hash = "sha256:046e1132c71fcf3330438a539928932caf51ddbc582496833e23de611de14562"}, +] + +[package.extras] +dev = ["black", "mypy", "pytest"] + [[package]] name = "packaging" version = "23.1" @@ -1246,6 +1375,51 @@ files = [ {file = "parse-1.19.0.tar.gz", hash = "sha256:9ff82852bcb65d139813e2a5197627a94966245c897796760a3a2a8eb66f020b"}, ] +[[package]] +name = "pint" +version = "0.24.4" +description = "Physical quantities module" +optional = false +python-versions = ">=3.9" +files = [ + {file = "Pint-0.24.4-py3-none-any.whl", hash = "sha256:aa54926c8772159fcf65f82cc0d34de6768c151b32ad1deb0331291c38fe7659"}, + {file = "pint-0.24.4.tar.gz", hash = "sha256:35275439b574837a6cd3020a5a4a73645eb125ce4152a73a2f126bf164b91b80"}, +] + +[package.dependencies] +flexcache = ">=0.3" +flexparser = ">=0.4" +platformdirs = ">=2.1.0" +typing-extensions = ">=4.0.0" + +[package.extras] +babel = ["babel (<=2.8)"] +bench = ["pytest", "pytest-codspeed"] +dask = ["dask"] +mip = ["mip (>=1.13)"] +numpy = ["numpy (>=1.23)"] +pandas = ["pint-pandas (>=0.3)"] +test = ["pytest", "pytest-benchmark", "pytest-cov", "pytest-mpl", "pytest-subtests"] +testbase = ["pytest", "pytest-benchmark", "pytest-cov", "pytest-subtests"] +uncertainties = ["uncertainties (>=3.1.6)"] +xarray = ["xarray"] + +[[package]] +name = "platformdirs" +version = "4.3.6" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] + [[package]] name = "pluggy" version = "1.0.0" @@ -1353,55 +1527,135 @@ pyasn1 = ">=0.4.6,<0.6.0" [[package]] name = "pydantic" -version = "1.10.8" -description = "Data validation and settings management using python type hints" +version = "2.10.3" +description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-1.10.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1243d28e9b05003a89d72e7915fdb26ffd1d39bdd39b00b7dbe4afae4b557f9d"}, - {file = "pydantic-1.10.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c0ab53b609c11dfc0c060d94335993cc2b95b2150e25583bec37a49b2d6c6c3f"}, - {file = "pydantic-1.10.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9613fadad06b4f3bc5db2653ce2f22e0de84a7c6c293909b48f6ed37b83c61f"}, - {file = "pydantic-1.10.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df7800cb1984d8f6e249351139667a8c50a379009271ee6236138a22a0c0f319"}, - {file = "pydantic-1.10.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0c6fafa0965b539d7aab0a673a046466d23b86e4b0e8019d25fd53f4df62c277"}, - {file = "pydantic-1.10.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e82d4566fcd527eae8b244fa952d99f2ca3172b7e97add0b43e2d97ee77f81ab"}, - {file = "pydantic-1.10.8-cp310-cp310-win_amd64.whl", hash = "sha256:ab523c31e22943713d80d8d342d23b6f6ac4b792a1e54064a8d0cf78fd64e800"}, - {file = "pydantic-1.10.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:666bdf6066bf6dbc107b30d034615d2627e2121506c555f73f90b54a463d1f33"}, - {file = "pydantic-1.10.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:35db5301b82e8661fa9c505c800d0990bc14e9f36f98932bb1d248c0ac5cada5"}, - {file = "pydantic-1.10.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90c1e29f447557e9e26afb1c4dbf8768a10cc676e3781b6a577841ade126b85"}, - {file = "pydantic-1.10.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93e766b4a8226e0708ef243e843105bf124e21331694367f95f4e3b4a92bbb3f"}, - {file = "pydantic-1.10.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:88f195f582851e8db960b4a94c3e3ad25692c1c1539e2552f3df7a9e972ef60e"}, - {file = "pydantic-1.10.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:34d327c81e68a1ecb52fe9c8d50c8a9b3e90d3c8ad991bfc8f953fb477d42fb4"}, - {file = "pydantic-1.10.8-cp311-cp311-win_amd64.whl", hash = "sha256:d532bf00f381bd6bc62cabc7d1372096b75a33bc197a312b03f5838b4fb84edd"}, - {file = "pydantic-1.10.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7d5b8641c24886d764a74ec541d2fc2c7fb19f6da2a4001e6d580ba4a38f7878"}, - {file = "pydantic-1.10.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b1f6cb446470b7ddf86c2e57cd119a24959af2b01e552f60705910663af09a4"}, - {file = "pydantic-1.10.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c33b60054b2136aef8cf190cd4c52a3daa20b2263917c49adad20eaf381e823b"}, - {file = "pydantic-1.10.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1952526ba40b220b912cdc43c1c32bcf4a58e3f192fa313ee665916b26befb68"}, - {file = "pydantic-1.10.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bb14388ec45a7a0dc429e87def6396f9e73c8c77818c927b6a60706603d5f2ea"}, - {file = "pydantic-1.10.8-cp37-cp37m-win_amd64.whl", hash = "sha256:16f8c3e33af1e9bb16c7a91fc7d5fa9fe27298e9f299cff6cb744d89d573d62c"}, - {file = "pydantic-1.10.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1ced8375969673929809d7f36ad322934c35de4af3b5e5b09ec967c21f9f7887"}, - {file = "pydantic-1.10.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:93e6bcfccbd831894a6a434b0aeb1947f9e70b7468f274154d03d71fabb1d7c6"}, - {file = "pydantic-1.10.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:191ba419b605f897ede9892f6c56fb182f40a15d309ef0142212200a10af4c18"}, - {file = "pydantic-1.10.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:052d8654cb65174d6f9490cc9b9a200083a82cf5c3c5d3985db765757eb3b375"}, - {file = "pydantic-1.10.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ceb6a23bf1ba4b837d0cfe378329ad3f351b5897c8d4914ce95b85fba96da5a1"}, - {file = "pydantic-1.10.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f2e754d5566f050954727c77f094e01793bcb5725b663bf628fa6743a5a9108"}, - {file = "pydantic-1.10.8-cp38-cp38-win_amd64.whl", hash = "sha256:6a82d6cda82258efca32b40040228ecf43a548671cb174a1e81477195ed3ed56"}, - {file = "pydantic-1.10.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e59417ba8a17265e632af99cc5f35ec309de5980c440c255ab1ca3ae96a3e0e"}, - {file = "pydantic-1.10.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:84d80219c3f8d4cad44575e18404099c76851bc924ce5ab1c4c8bb5e2a2227d0"}, - {file = "pydantic-1.10.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e4148e635994d57d834be1182a44bdb07dd867fa3c2d1b37002000646cc5459"}, - {file = "pydantic-1.10.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12f7b0bf8553e310e530e9f3a2f5734c68699f42218bf3568ef49cd9b0e44df4"}, - {file = "pydantic-1.10.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42aa0c4b5c3025483240a25b09f3c09a189481ddda2ea3a831a9d25f444e03c1"}, - {file = "pydantic-1.10.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17aef11cc1b997f9d574b91909fed40761e13fac438d72b81f902226a69dac01"}, - {file = "pydantic-1.10.8-cp39-cp39-win_amd64.whl", hash = "sha256:66a703d1983c675a6e0fed8953b0971c44dba48a929a2000a493c3772eb61a5a"}, - {file = "pydantic-1.10.8-py3-none-any.whl", hash = "sha256:7456eb22ed9aaa24ff3e7b4757da20d9e5ce2a81018c1b3ebd81a0b88a18f3b2"}, - {file = "pydantic-1.10.8.tar.gz", hash = "sha256:1410275520dfa70effadf4c21811d755e7ef9bb1f1d077a21958153a92c8d9ca"}, -] - -[package.dependencies] -typing-extensions = ">=4.2.0" + {file = "pydantic-2.10.3-py3-none-any.whl", hash = "sha256:be04d85bbc7b65651c5f8e6b9976ed9c6f41782a55524cef079a34a0bb82144d"}, + {file = "pydantic-2.10.3.tar.gz", hash = "sha256:cb5ac360ce894ceacd69c403187900a02c4b20b693a9dd1d643e1effab9eadf9"}, +] + +[package.dependencies] +annotated-types = ">=0.6.0" +pydantic-core = "2.27.1" +typing-extensions = ">=4.12.2" [package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] + +[[package]] +name = "pydantic-core" +version = "2.27.1" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.27.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:71a5e35c75c021aaf400ac048dacc855f000bdfed91614b4a726f7432f1f3d6a"}, + {file = "pydantic_core-2.27.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f82d068a2d6ecfc6e054726080af69a6764a10015467d7d7b9f66d6ed5afa23b"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:121ceb0e822f79163dd4699e4c54f5ad38b157084d97b34de8b232bcaad70278"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4603137322c18eaf2e06a4495f426aa8d8388940f3c457e7548145011bb68e05"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a33cd6ad9017bbeaa9ed78a2e0752c5e250eafb9534f308e7a5f7849b0b1bfb4"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15cc53a3179ba0fcefe1e3ae50beb2784dede4003ad2dfd24f81bba4b23a454f"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45d9c5eb9273aa50999ad6adc6be5e0ecea7e09dbd0d31bd0c65a55a2592ca08"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bf7b66ce12a2ac52d16f776b31d16d91033150266eb796967a7e4621707e4f6"}, + {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:655d7dd86f26cb15ce8a431036f66ce0318648f8853d709b4167786ec2fa4807"}, + {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:5556470f1a2157031e676f776c2bc20acd34c1990ca5f7e56f1ebf938b9ab57c"}, + {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f69ed81ab24d5a3bd93861c8c4436f54afdf8e8cc421562b0c7504cf3be58206"}, + {file = "pydantic_core-2.27.1-cp310-none-win32.whl", hash = "sha256:f5a823165e6d04ccea61a9f0576f345f8ce40ed533013580e087bd4d7442b52c"}, + {file = "pydantic_core-2.27.1-cp310-none-win_amd64.whl", hash = "sha256:57866a76e0b3823e0b56692d1a0bf722bffb324839bb5b7226a7dbd6c9a40b17"}, + {file = "pydantic_core-2.27.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac3b20653bdbe160febbea8aa6c079d3df19310d50ac314911ed8cc4eb7f8cb8"}, + {file = "pydantic_core-2.27.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a5a8e19d7c707c4cadb8c18f5f60c843052ae83c20fa7d44f41594c644a1d330"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f7059ca8d64fea7f238994c97d91f75965216bcbe5f695bb44f354893f11d52"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bed0f8a0eeea9fb72937ba118f9db0cb7e90773462af7962d382445f3005e5a4"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3cb37038123447cf0f3ea4c74751f6a9d7afef0eb71aa07bf5f652b5e6a132c"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84286494f6c5d05243456e04223d5a9417d7f443c3b76065e75001beb26f88de"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acc07b2cfc5b835444b44a9956846b578d27beeacd4b52e45489e93276241025"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4fefee876e07a6e9aad7a8c8c9f85b0cdbe7df52b8a9552307b09050f7512c7e"}, + {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:258c57abf1188926c774a4c94dd29237e77eda19462e5bb901d88adcab6af919"}, + {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:35c14ac45fcfdf7167ca76cc80b2001205a8d5d16d80524e13508371fb8cdd9c"}, + {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d1b26e1dff225c31897696cab7d4f0a315d4c0d9e8666dbffdb28216f3b17fdc"}, + {file = "pydantic_core-2.27.1-cp311-none-win32.whl", hash = "sha256:2cdf7d86886bc6982354862204ae3b2f7f96f21a3eb0ba5ca0ac42c7b38598b9"}, + {file = "pydantic_core-2.27.1-cp311-none-win_amd64.whl", hash = "sha256:3af385b0cee8df3746c3f406f38bcbfdc9041b5c2d5ce3e5fc6637256e60bbc5"}, + {file = "pydantic_core-2.27.1-cp311-none-win_arm64.whl", hash = "sha256:81f2ec23ddc1b476ff96563f2e8d723830b06dceae348ce02914a37cb4e74b89"}, + {file = "pydantic_core-2.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9cbd94fc661d2bab2bc702cddd2d3370bbdcc4cd0f8f57488a81bcce90c7a54f"}, + {file = "pydantic_core-2.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5f8c4718cd44ec1580e180cb739713ecda2bdee1341084c1467802a417fe0f02"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15aae984e46de8d376df515f00450d1522077254ef6b7ce189b38ecee7c9677c"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ba5e3963344ff25fc8c40da90f44b0afca8cfd89d12964feb79ac1411a260ac"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:992cea5f4f3b29d6b4f7f1726ed8ee46c8331c6b4eed6db5b40134c6fe1768bb"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0325336f348dbee6550d129b1627cb8f5351a9dc91aad141ffb96d4937bd9529"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7597c07fbd11515f654d6ece3d0e4e5093edc30a436c63142d9a4b8e22f19c35"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3bbd5d8cc692616d5ef6fbbbd50dbec142c7e6ad9beb66b78a96e9c16729b089"}, + {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:dc61505e73298a84a2f317255fcc72b710b72980f3a1f670447a21efc88f8381"}, + {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:e1f735dc43da318cad19b4173dd1ffce1d84aafd6c9b782b3abc04a0d5a6f5bb"}, + {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f4e5658dbffe8843a0f12366a4c2d1c316dbe09bb4dfbdc9d2d9cd6031de8aae"}, + {file = "pydantic_core-2.27.1-cp312-none-win32.whl", hash = "sha256:672ebbe820bb37988c4d136eca2652ee114992d5d41c7e4858cdd90ea94ffe5c"}, + {file = "pydantic_core-2.27.1-cp312-none-win_amd64.whl", hash = "sha256:66ff044fd0bb1768688aecbe28b6190f6e799349221fb0de0e6f4048eca14c16"}, + {file = "pydantic_core-2.27.1-cp312-none-win_arm64.whl", hash = "sha256:9a3b0793b1bbfd4146304e23d90045f2a9b5fd5823aa682665fbdaf2a6c28f3e"}, + {file = "pydantic_core-2.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f216dbce0e60e4d03e0c4353c7023b202d95cbaeff12e5fd2e82ea0a66905073"}, + {file = "pydantic_core-2.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a2e02889071850bbfd36b56fd6bc98945e23670773bc7a76657e90e6b6603c08"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42b0e23f119b2b456d07ca91b307ae167cc3f6c846a7b169fca5326e32fdc6cf"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:764be71193f87d460a03f1f7385a82e226639732214b402f9aa61f0d025f0737"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c00666a3bd2f84920a4e94434f5974d7bbc57e461318d6bb34ce9cdbbc1f6b2"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ccaa88b24eebc0f849ce0a4d09e8a408ec5a94afff395eb69baf868f5183107"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c65af9088ac534313e1963443d0ec360bb2b9cba6c2909478d22c2e363d98a51"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:206b5cf6f0c513baffaeae7bd817717140770c74528f3e4c3e1cec7871ddd61a"}, + {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:062f60e512fc7fff8b8a9d680ff0ddaaef0193dba9fa83e679c0c5f5fbd018bc"}, + {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:a0697803ed7d4af5e4c1adf1670af078f8fcab7a86350e969f454daf598c4960"}, + {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:58ca98a950171f3151c603aeea9303ef6c235f692fe555e883591103da709b23"}, + {file = "pydantic_core-2.27.1-cp313-none-win32.whl", hash = "sha256:8065914ff79f7eab1599bd80406681f0ad08f8e47c880f17b416c9f8f7a26d05"}, + {file = "pydantic_core-2.27.1-cp313-none-win_amd64.whl", hash = "sha256:ba630d5e3db74c79300d9a5bdaaf6200172b107f263c98a0539eeecb857b2337"}, + {file = "pydantic_core-2.27.1-cp313-none-win_arm64.whl", hash = "sha256:45cf8588c066860b623cd11c4ba687f8d7175d5f7ef65f7129df8a394c502de5"}, + {file = "pydantic_core-2.27.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:5897bec80a09b4084aee23f9b73a9477a46c3304ad1d2d07acca19723fb1de62"}, + {file = "pydantic_core-2.27.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d0165ab2914379bd56908c02294ed8405c252250668ebcb438a55494c69f44ab"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b9af86e1d8e4cfc82c2022bfaa6f459381a50b94a29e95dcdda8442d6d83864"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f6c8a66741c5f5447e047ab0ba7a1c61d1e95580d64bce852e3df1f895c4067"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a42d6a8156ff78981f8aa56eb6394114e0dedb217cf8b729f438f643608cbcd"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64c65f40b4cd8b0e049a8edde07e38b476da7e3aaebe63287c899d2cff253fa5"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdcf339322a3fae5cbd504edcefddd5a50d9ee00d968696846f089b4432cf78"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf99c8404f008750c846cb4ac4667b798a9f7de673ff719d705d9b2d6de49c5f"}, + {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f1edcea27918d748c7e5e4d917297b2a0ab80cad10f86631e488b7cddf76a36"}, + {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:159cac0a3d096f79ab6a44d77a961917219707e2a130739c64d4dd46281f5c2a"}, + {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:029d9757eb621cc6e1848fa0b0310310de7301057f623985698ed7ebb014391b"}, + {file = "pydantic_core-2.27.1-cp38-none-win32.whl", hash = "sha256:a28af0695a45f7060e6f9b7092558a928a28553366519f64083c63a44f70e618"}, + {file = "pydantic_core-2.27.1-cp38-none-win_amd64.whl", hash = "sha256:2d4567c850905d5eaaed2f7a404e61012a51caf288292e016360aa2b96ff38d4"}, + {file = "pydantic_core-2.27.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e9386266798d64eeb19dd3677051f5705bf873e98e15897ddb7d76f477131967"}, + {file = "pydantic_core-2.27.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4228b5b646caa73f119b1ae756216b59cc6e2267201c27d3912b592c5e323b60"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3dfe500de26c52abe0477dde16192ac39c98f05bf2d80e76102d394bd13854"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aee66be87825cdf72ac64cb03ad4c15ffef4143dbf5c113f64a5ff4f81477bf9"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b748c44bb9f53031c8cbc99a8a061bc181c1000c60a30f55393b6e9c45cc5bd"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ca038c7f6a0afd0b2448941b6ef9d5e1949e999f9e5517692eb6da58e9d44be"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e0bd57539da59a3e4671b90a502da9a28c72322a4f17866ba3ac63a82c4498e"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac6c2c45c847bbf8f91930d88716a0fb924b51e0c6dad329b793d670ec5db792"}, + {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b94d4ba43739bbe8b0ce4262bcc3b7b9f31459ad120fb595627eaeb7f9b9ca01"}, + {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:00e6424f4b26fe82d44577b4c842d7df97c20be6439e8e685d0d715feceb9fb9"}, + {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:38de0a70160dd97540335b7ad3a74571b24f1dc3ed33f815f0880682e6880131"}, + {file = "pydantic_core-2.27.1-cp39-none-win32.whl", hash = "sha256:7ccebf51efc61634f6c2344da73e366c75e735960b5654b63d7e6f69a5885fa3"}, + {file = "pydantic_core-2.27.1-cp39-none-win_amd64.whl", hash = "sha256:a57847b090d7892f123726202b7daa20df6694cbd583b67a592e856bff603d6c"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3fa80ac2bd5856580e242dbc202db873c60a01b20309c8319b5c5986fbe53ce6"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d950caa237bb1954f1b8c9227b5065ba6875ac9771bb8ec790d956a699b78676"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e4216e64d203e39c62df627aa882f02a2438d18a5f21d7f721621f7a5d3611d"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02a3d637bd387c41d46b002f0e49c52642281edacd2740e5a42f7017feea3f2c"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:161c27ccce13b6b0c8689418da3885d3220ed2eae2ea5e9b2f7f3d48f1d52c27"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:19910754e4cc9c63bc1c7f6d73aa1cfee82f42007e407c0f413695c2f7ed777f"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e173486019cc283dc9778315fa29a363579372fe67045e971e89b6365cc035ed"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:af52d26579b308921b73b956153066481f064875140ccd1dfd4e77db89dbb12f"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:981fb88516bd1ae8b0cbbd2034678a39dedc98752f264ac9bc5839d3923fa04c"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5fde892e6c697ce3e30c61b239330fc5d569a71fefd4eb6512fc6caec9dd9e2f"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:816f5aa087094099fff7edabb5e01cc370eb21aa1a1d44fe2d2aefdfb5599b31"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c10c309e18e443ddb108f0ef64e8729363adbfd92d6d57beec680f6261556f3"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98476c98b02c8e9b2eec76ac4156fd006628b1b2d0ef27e548ffa978393fd154"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3027001c28434e7ca5a6e1e527487051136aa81803ac812be51802150d880dd"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7699b1df36a48169cdebda7ab5a2bac265204003f153b4bd17276153d997670a"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1c39b07d90be6b48968ddc8c19e7585052088fd7ec8d568bb31ff64c70ae3c97"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:46ccfe3032b3915586e469d4972973f893c0a2bb65669194a5bdea9bacc088c2"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:62ba45e21cf6571d7f716d903b5b7b6d2617e2d5d67c0923dc47b9d41369f840"}, + {file = "pydantic_core-2.27.1.tar.gz", hash = "sha256:62a763352879b84aa31058fc931884055fd75089cccbd9d58bb6afd01141b235"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pygments" @@ -2132,15 +2386,35 @@ telegram = ["requests"] [[package]] name = "typing-extensions" -version = "4.6.2" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.6.2-py3-none-any.whl", hash = "sha256:3a8b36f13dd5fdc5d1b16fe317f5668545de77fa0b8e02006381fd49d731ab98"}, - {file = "typing_extensions-4.6.2.tar.gz", hash = "sha256:06006244c70ac8ee83fa8282cb188f697b8db25bc8b4df07be1873c43897060c"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] +[[package]] +name = "ucumvert" +version = "0.1.2" +description = "Python parser & interface for UCUM (Unified Code for Units of Measure)." +optional = false +python-versions = ">=3.8" +files = [ + {file = "ucumvert-0.1.2-py3-none-any.whl", hash = "sha256:480f0cd9315ebc5c6da3117de42296a4f8e35deb84a7f0b8719a909129afb72b"}, + {file = "ucumvert-0.1.2.tar.gz", hash = "sha256:a7c0dab878571ed5e03abab988c46e40e40092b253d6da5041d2305e1ddecd02"}, +] + +[package.dependencies] +lark = "*" +pint = "*" + +[package.extras] +dev = ["openpyxl", "pydot", "ruff", "ucumvert[lint,tests]"] +lint = ["black"] +tests = ["coverage", "pytest"] + [[package]] name = "uri-template" version = "1.2.0" @@ -2337,9 +2611,9 @@ docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [extras] -docs = [] +docs = ["linkml"] [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "125b758af16fcf4b95b8089c4933ffa71b13ce2596db3759bebd0176ca343bf8" +content-hash = "298eafaf8112804e1bdf137eb06cf7b6d3d8ee9cb1a3242c442d0eb466e8a42c" diff --git a/pyproject.toml b/pyproject.toml index ee3c36c..aae27f1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,6 +13,7 @@ linkml-runtime = "^1.1.24" SQLAlchemy = "^1.4.32, !=1.4.46" linkml-transformer = "^0.1" linkml = "^1.8.1" +linkml-map = "^0.3.8" [tool.poetry.group.dev.dependencies] diff --git a/src/cmdr/schema/bdc.yaml b/src/cmdr/schema/bdc.yaml new file mode 100644 index 0000000..fb286fd --- /dev/null +++ b/src/cmdr/schema/bdc.yaml @@ -0,0 +1,3086 @@ +--- +id: https://w3id.org/nhlbidatastage/bdchm +name: bdchm +title: BioData Catalyst Harmonized Model (bdchm) +description: |- + This is the harmonized data model for use in the BioData Catalyst project. +license: MIT +see_also: + - https://rtiinternational.github.io/NHLBI-BDC-DMC-HM/ + +prefixes: + bdchm: https://w3id.org/nhlbidatastage/bdchm/ + linkml: https://w3id.org/linkml/ + schema: http://schema.org/ + OMOP: https://athena.ohdsi.org/search-terms/terms/ + DUO: http://purl.obolibrary.org/obo/DUO_ + VBO: http://purl.obolibrary.org/obo/VBO_ + ncbitaxon: http://purl.obolibrary.org/obo/NCBITaxon_ + MONDO: http://purl.obolibrary.org/obo/MONDO_ + HP: http://purl.obolibrary.org/obo/HP_ + rxnorm: https://bioregistry.io/rxnorm:/ + +default_prefix: bdchm +default_range: string + +imports: + - linkml:types + +classes: + + Entity: + abstract: true + description: >- + Any resource that has its own identifier + slots: + id + class_uri: schema:Thing + + Person: + is_a: Entity + description: >- + Administrative information about an individual or animal receiving care or other health-related services. + attributes: + species: + range: CellularOrganismSpeciesEnum + description: The scientific binomial name for the species of the Person (e.g. Homo sapiens, Mus musculus, etc.). Values should be derived from the NCBI organismal taxonomy (http://purl.obolibrary.org/obo/ncbitaxon.owl). + breed: + range: VertebrateBreedEnum + description: A label given to a group of animals homogeneous in appearance and other characteristics that distinguish it from other animals of the same species. Values should be derived from the Vertebrate Breed Ontology (http://purl.obolibrary.org/obo/vbo.owl). + year_of_birth: + range: integer + description: Numeric value to represent the calendar year in which an individual was born. + vital_status: + range: VitalStatusEnum + description: Coded value indicating the state or condition of being living or deceased; also includes the case where the vital status is unknown. + age_at_death: + range: integer + description: The age of an individual at the time of death, expressed in days since birth + unit: + ucum_code: d + year_of_death: + range: integer + description: Numeric value to represent the calendar year in which an individual died. + cause_of_death: + range: string + description: Coded value indicating the circumstance or condition that results in the death of the individual. + slots: + - identity + + Demography: + is_a: Entity + description: >- + Demographics about an individual or animal receiving care or other health-related services. + attributes: + sex: + range: SexEnum + description: The biologic character or quality that distinguishes male and female from one another as expressed by analysis of the person's gonadal, morphologic (internal and external), chromosomal, and hormonal characteristics. + ethnicity: + range: EthnicityEnum + description: An individual's self-described social and cultural grouping, specifically whether an individual describes themselves as Hispanic or Latino. The provided values are based on the categories defined by the U.S. Office of Management and Business and used by the U.S. Census Bureau + race: + range: RaceEnum + description: An arbitrary classification of a taxonomic group that is a division of a species. It usually arises as a consequence of geographical isolation within a species and is characterized by shared heredity, physical attributes and behavior, and in the case of humans, by common history, nationality, or geographic distribution. The provided values are based on the categories defined by the U.S. Office of Management and Business and used by the U.S. Census Bureau. + slots: + - identity + - associated_participant + + Participant: + is_a: Entity + description: >- + A Participant is the entity of interest in a research study, typically a human being or an animal, but can also be a device, group of humans or animals, or a tissue sample. Human research subjects are usually not traceable to a particular person to protect the subject’s privacy. + attributes: + description: + range: string + description: A free text field to capture additional info/explanation about the research subject. + member_of_research_study: + range: ResearchStudy + description: A reference to the Study(s) of which this Participant is a member + age_at_enrollment: + range: integer + description: The age in days when the Participant enrolled on the ResearchStudy + unit: + ucum_code: d + index_timepoint: + range: string + description: The text term used to describe the reference or anchor date used for date obfuscation, where a single date is obscured by creating one or more date ranges in relation to this date. + originating_site: + range: Organization + description: The Organization through which a subject was enrolled on a ResearchStudy. + study_arm: + range: string + description: The arm(s) of the study on which the Participant is enrolled + multivalued: true + consents: + range: Consent + description: 'Data Use Restrictions that are used to indicate permissions/restrictions for datasets and/or materials, and relates to the purposes for which datasets and/or material might be removed, stored or used. Based on the Data Use Ontology : see http://www.obofoundry.org/ontology/duo.html' + multivalued: true + slots: + - associated_person + - identity + + ResearchStudy: + is_a: Entity + description: >- + A process where a researcher or organization plans and then executes a series of steps intended to increase the field of healthcare-related knowledge. This includes studies of safety, efficacy, comparative effectiveness and other information about medications, devices, therapies and other interventional and investigative techniques. A ResearchStudy involves the gathering of information about human or animal subjects. + attributes: + - name: + range: string + description: An unabridged name of a research program, project, or study. + - name_shortened: + range: string + description: An abbreviated name of a research program, project, or study. + - description: + range: string + description: An unabridged description of a research program, project, or study. + - description_shortened: + range: string + description: An abbreviated description of a research program, project, or study. + - sponsor: + range: string + description: An entity that is responsible for the initiation, management, and/or financing of a research project. + - date_started: + range: TimePoint + description: The date when the research project began. + - date_ended: + range: TimePoint + description: The date when the research project ended. + - url: + range: uriorcurie + description: A URL address for a resource that provides information about a research program, project, or study. + - part_of: + range: ResearchStudy + description: A reference to a parent ResearchStudy (e.g. a link to the overarching CPTAC ResearchStudy from a substudy of CPTAC) + - research_project_type: + range: string + description: The 'type' of ResearchStudy represented (e.g. a broad-based Program like 'CPTAC' or a more focused Project like 'CPTAC PDAC Discovery Study') + - associated_timepoint: + range: TimePoint + multivalued: true + description: A collection of timepoint observations that are relevant to research projects (e.g. date of IACUC approval, date of IRB approval, date of embargo end, etc.) + - principal_investigator: + range: string + multivalued: true + description: The investigator or investigators leading a project. + - consents: + range: Consent + description: 'Data Use Restrictions that are used to indicate permissions/restrictions for datasets and/or materials, and relates to the purposes for which datasets and/or material might be removed, stored or used. Based on the Data Use Ontology : see http://www.obofoundry.org/ontology/duo.html' + multivalued: true + slots: + - identity + + Consent: + is_a: Entity + description: >- + An entity that can be used to capture consent code and other relevant data about consent for a study. + attributes: + - consent_code: + range: DataUseEnum + description: 'Data Use Restrictions that are used to indicate permissions/restrictions for datasets and/or materials, and relates to the purposes for which datasets and/or material might be removed, stored or used. Based on the Data Use Ontology : see http://www.obofoundry.org/ontology/duo.html' + multivalued: false + - valid_from: + range: TimePoint + description: The point in time from which the consent record is valid. + - valid_to: + range: TimePoint + description: The point in time after which the consent record is invalid. + + Visit: + is_a: Entity + description: >- + Events where Persons engage with the healthcare system for a duration of time. They are often also called “Encounters”. Visits are defined by a configuration of circumstances under which they occur, such as (i) whether the patient comes to a healthcare institution, the other way around, or the interaction is remote, (ii) whether and what kind of trained medical staff is delivering the service during the Visit, and (iii) whether the Visit is transient or for a longer period involving a stay in bed. (OMOP) + attributes: + - visit_category: + range: VisitCategoryEnum + description: A value representing the kind (or category) of visit, like inpatient or outpatient. + - age_at_visit_start: + range: integer + description: The age of the Participant (in days) at the start of the Visit. + unit: + ucum_code: d + - age_at_visit_end: + range: integer + description: The age of the Participant (in days) at the end of the Visit. + unit: + ucum_code: d + - visit_provenance: + range: VisitProvenanceEnum + description: A value representing the provenance of the visit record, or where the record comes from. + - associated_participant: + range: Participant + description: A reference to the Participant for whom this Visit occurred. + + Organization: + is_a: Entity + description: >- + A grouping of people or organizations with a common purpose such as a data coordinating center, an university, or an institute within a university. + attributes: + name: + range: string + description: The full legal name by which the organization is known (e.g. 'National Cancer Institute') + alias: + range: string + description: A secondary name for the organization such as a short name or abbreviation (e.g. 'NCI') + organization_type: + range: string + description: The type of the organization (e.g. 'Cancer Genome Characterization Center') + slots: + - identity + + TimePoint: + is_a: Entity + description: >- + A structured representation of a single point in time that allows direct/explicit declaration as a dateTime, specification in terms of offset from a defined index, or description of an event type as a proxy for the time point when it occurred. + attributes: + - date_time: + range: datetime + description: An explicitly specified timepoint described in terms of a date and optionally a time on that date. + - index_time_point: + range: TimePoint + description: Another TimePoint from which this point is offset. + - offset_from_index: + range: integer + description: A quantity of time that, together with the index date or event, can be used to derive a specific timepoint. + - event_type: + range: string + description: An event that occurred at the point in time specified by this TimePoint. + + TimePeriod: + description: >- + A period of time between a start and end time point. + attributes: + - period_start: + range: TimePoint + description: When a period of time started. + - period_end: + range: TimePoint + description: When a period of time ended. + + Identifier: + description: >- + An Identifier is associated with a unique object or entity within a given system. + attributes: + - value: + range: string + required: true + description: The value of the identifier, as defined by the system. + - system: + range: string + description: The system or namespace that defines the identifier. + + ResearchStudyCollection: + tree_root: true + description: >- + A holder for ResearchStudy objects + attributes: + entries: + range: ResearchStudy + multivalued: true + inlined: true + + Questionnaire: + is_a: Entity + description: A Questionnaire is an organized collection of questions intended to solicit information from patients, providers or other individuals involved in the healthcare domain. They may be simple flat lists of questions or can be hierarchically organized in groups and sub-groups, each containing questions. The Questionnaire defines the questions to be asked, how they are ordered and grouped, any intervening instructional text and what the constraints are on the allowed answers. The results of a Questionnaire can be communicated using the QuestionnaireResponse. (FHIR) + attributes: + name: + description: Name for this Questionnaire (computer friendly) + range: string + title: + description: Name for this Questionnaire (human friendly) + range: string + description: + description: Natural language description of the Questionnaire + range: string + url: + description: Canonical identifier for this Questionnaire, represented as an absolute URI (globally unique) + range: uriorcurie + version: + description: The identifier that is used to identify this version of the questionnaire when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the questionnaire author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence. + range: string + publisher: + description: Name of the publisher/steward (organization or individual) of this Questionnaire + range: string + copyright: + description: Textual description of any use and/or publishing restrictions + range: string + copyright_label: + description: Copyright holder and year(s) + range: string + language: + description: The language(s) in which questions are presented. + range: string + multivalued: true + items: + description: A collection of QuestionnaireItem objects which encapsulate the question being asked. + range: QuestionnaireItem + multivalued: true + required: true + slots: + - identity + + QuestionnaireItem: + is_a: Entity + description: QuestionnaireItem defines a question or section within the Questionnaire + attributes: + text: + range: string + description: Name for group or question text + code: + range: string + description: Corresponding concept for this item in a terminology + part_of: + range: QuestionnaireItem + description: A reference to a parent QuestionnaireItem. + slots: + - identity + + QuestionnaireResponse: + is_a: Entity + description: QuestionnaireResponse provides a complete or partial list of answers to a set of questions filled when responding to a questionnaire. (FHIR) + attributes: + age_at_response: + description: The age (in days) of the Participant when the QuestionnaireResponse was captured. + range: integer + unit: + ucum_code: d + items: + description: A collection of QuestionnaireResponseItem objects which encapsulate the question being asked and the response. + range: QuestionnaireResponseItem + multivalued: true + required: true + associated_visit: + description: A reference to the Visit during which this QuestionnaireResponse was captured. + range: Visit + + QuestionnaireResponseItem: + description: QuestionnaireResponseItem provides a complete or partial list of answers to a set of questions filled when responding to a questionnaire. (FHIR) + attributes: + has_questionnaire_item: + range: QuestionnaireItem + description: A reference to the QuestionnaireItem that this QuestionnaireResponseItem responds to. + text: + range: string + description: Name for group or question text + response_value: + range: QuestionnaireResponseValue + required: true + + QuestionnaireResponseValue: + description: Single-valued answer to the question. (FHIR) + attributes: + type: + range: string + designates_type: true + name: + range: string + slots: + - value + + QuestionnaireResponseValueDecimal: + is_a: QuestionnaireResponseValue + description: Single-valued decimal answer to the question + slot_usage: + value: + range: decimal + required: true + + QuestionnaireResponseValueBoolean: + is_a: QuestionnaireResponseValue + description: Single-valued boolean answer to the question + slot_usage: + value: + range: boolean + required: true + + QuestionnaireResponseValueInteger: + is_a: QuestionnaireResponseValue + description: Single-valued integer answer to the question + slot_usage: + value: + range: integer + required: true + + QuestionnaireResponseValueTimePoint: + is_a: QuestionnaireResponseValue + description: Single-valued TimePoint answer to the question + slot_usage: + value: + range: TimePoint + required: true + + QuestionnaireResponseValueString: + is_a: QuestionnaireResponseValue + description: Single-valued string answer to the question + slot_usage: + value: + range: string + required: true + + Condition: + is_a: Entity + description: >- + Conditions are records of a Person suggesting the presence of a disease or medical condition stated as a diagnosis, a sign or a symptom, which is either observed by a Provider or reported by the patient. Conditions are recorded in different sources and levels of standardization. + attributes: + condition_concept: + range: ConditionConceptEnum + description: The coded value for the presence of a disease or medical condition stated as a diagnosis, a sign or a symptom, coded to the Human Phenotype Ontology or MONDO. + age_at_condition_start: + range: integer + description: The Participant's age (expressed in days) when the condition was first recorded. + unit: + ucum_code: d + age_at_condition_end: + range: integer + description: The Participant's age (expressed in days) when the condition was recorded as having been resolved. + unit: + ucum_code: d + condition_provenance: + range: ConditionProvenanceEnum + description: A value representing the provenance of the Condition record + condition_status: + range: ConditionStatusEnum + description: A value indicating whether the medical condition described in this record is present, absent, or unknown for this individual patient. + relationship_to_participant: + range: string + description: A value indicating the relationship between the Participant to which the Condition is attributed and the individual who had the reported Condition. If the Condition is affecting the participant themselves, then 'Self' is the appropriate relationship. If the Condition is affecting a family member (e.g. a parent of the Participant) then an appropriate relationship should be provided (e.g. 'Parent') + associated_participant: + range: Participant + description: A reference to the Participant to which the Condition is attributed. + associated_visit: + description: A reference to the Visit during which this Condition was recorded. + range: Visit + slots: + - identity + + DrugExposure: + is_a: Entity + description: >- + DrugExposures are records of a Person suggesting exposure to a medication. The source could be prescription, dispensing, medication administration records (MARs), or patient medication list. + attributes: + drug_concept: + range: DrugExposureConceptEnum + description: The coded value for a drug. From RxNorm. The syntax for the enum may need work. + age_at_exposure_start: + range: integer + description: The Participant's age (expressed in days) at the exposure start date. + unit: + ucum_code: d + age_at_exposure_end: + range: integer + description: The Participant's age (expressed in days) at the exposure end date, if available. Otherwise equal to age_at_exposure_start. + unit: + ucum_code: d + exposure_provenance: + range: DrugExposureProvenanceEnum + description: A value representing the provenance of the DrugExposure record. From OMOP Drug Types. + refills: + range: integer + description: Intended refills at time of the prescription. + required: false + quantity: + range: float + description: To find the dose form of a drug the RELATIONSHIP table can be used where the relationship_id is ‘Has dose form’. If liquid, quantity stands for the total amount dispensed or ordered of ingredient in the units given by the drug_strength table. If the unit from the source data does not align with the unit in the DRUG_STRENGTH table the quantity should be converted to the correct unit given in DRUG_STRENGTH. For clinical drugs with fixed dose forms (tablets etc.) the quantity is the number of units/tablets/capsules prescribed or dispensed (can be partial, but then only 1/2 or 1/3, not 0.01). Clinical drugs with divisible dose forms (injections) the quantity is the amount of ingredient the patient got. For example, if the injection is 2mg/mL but the patient got 80mL then quantity is reported as 160. Quantified clinical drugs with divisible dose forms (prefilled syringes), the quantity is the amount of ingredient similar to clinical drugs. Please see [how to calculate drug dose](https://ohdsi.github.io/CommonDataModel/drug_dose.html) for more information. + required: false + days_supply: + range: integer + description: The number of days of supply of the medication as recorded in the original prescription or dispensing record. Days supply can differ from actual drug duration (i.e. prescribed days supply vs actual exposure). + comments: The field should be left empty if the source data does not contain a verbatim days_supply, and should not be calculated from other fields. Negative values are not allowed. If the source has negative days supply the record should be dropped as it is unknown if the patient actually took the drug. Several actions are possible -- record is not trustworthy and we remove the record entirely; we trust the record and leave days_supply empty; or record needs to be combined with other record (e.g. reversal of prescription). High values (>365 days) should be investigated. If considered an error in the source data (e.g. typo), the value needs to be excluded to prevent creation of unrealistic long eras. + required: false + sig: + range: string + description: This is the verbatim instruction for the drug as written by the provider. + comments: Put the written out instructions for the drug as it is verbatim in the source, if available. + required: false + route_concept: + range: DrugRouteEnum + description: Route of drug administration. + associated_participant: + range: Participant + description: A reference to the Participant to which the exposure is attributed. + associated_visit: + description: A reference to the Visit the exposure is associated with, if any. + range: Visit + required: false + slots: + - identity + + DeviceExposure: + is_a: Entity + description: >- + DeviceExposures are records of a Person suggesting exposure to a foreign object. The source is typically physical objects used in procedures, measurements, or observations. + attributes: + device_concept: + range: DeviceExposureConceptEnum + description: The coded value for a device. Primarily SNOMED. The syntax for the enum may need work. + age_at_exposure_start: + range: integer + description: The Participant's age (expressed in days) at the exposure start date. + unit: + ucum_code: d + age_at_exposure_end: + range: integer + description: The Participant's age (expressed in days) at the exposure end date, if available. Otherwise equal to age_at_exposure_start. + unit: + ucum_code: d + exposure_provenance: + range: DeviceExposureProvenanceEnum + description: A value representing the provenance of the DeviceExposure record. From OMOP Device Types. + quantity: + range: float + description: Amount of device used. If not present in source, default to 1. + required: false + associated_participant: + range: Participant + description: A reference to the Participant to which the exposure is attributed. + associated_visit: + description: A reference to the Visit the exposure is associated with, if any. + range: Visit + required: false + slots: + - identity + + DimensionalObservation: + is_a: Observation + description: A structured object that describes a single data item about the physical dimensions of an entity (e.g. length width, area), as generated through a point-in-time observation or measurement. + comments: + - At the core of an Observation is a flexible key-value pair (or a structured collection of key-value pairs), where a "key" field defines the type of observation made, and the "value" field describes the value or outcome of the observation. The fact that the type of observation captured is defined in the data allow Observation to convey a broad range of observation data. + slot_usage: + value: + description: The result of the observation, encoded as a Quantity. + multivalued: false + range: ObservationValueQuantity + required: true + + DimensionalObservationSet: + is_a: ObservationSet + description: A set of one or more discrete observations about the physical dimensions of an object (e.g. length, width, area). + slot_usage: + observations: + range: DimensionalObservation + + Document: + is_a: Entity + description: A collection of information intented to be understood together as a whole, and codified in human-readable form. + attributes: + document_type: + description: The high-level type of the document (e.g. 'publication', 'pathology report') + values_from: crdch:enum_CRDCH_Document_document_type + multivalued: false + range: string + required: false + description: + description: A free text description or summary of the report. + multivalued: false + range: string + required: false + focus: + description: The entity that the report is primarily about + multivalued: false + range: Entity + required: false + url: + description: A URL/web address where the document can be accessed. + multivalued: true + inlined_as_list: true + range: string + required: false + slots: + - identity + + Specimen: + is_a: Entity + description: Any material taken as a sample from a biological entity (living or dead), or from a physical object or the environment. Specimens are usually collected as an example of their kind, often for use in some investigation. + attributes: + description: + description: A free text field to capture additional information or explanation about the specimen. + multivalued: false + range: string + required: false + specimen_type: + description: The high-level type of the specimen, based on its derivation provenance (i.e. how far removed it is from the original sample extracted from a source). + examples: + - value: Fresh Specimen + - value: Portion + - value: Aliquot + - value: Analyte + - value: Slide + values_from: crdch:enum_CRDCH_Specimen_specimen_type + multivalued: false + range: SpecimenTypeEnum + required: false + analyte_type: + description: For specimens of type 'analyte' (or an 'aliquot' derived from an analyte), this is the category of chemcial the analyte of interest represents (e.g. DNA, RNA) + examples: + - value: DNA + - value: FFPE DNA + - value: GenomePlex (Rubicon) Amplified DNA + - value: Repli-G (Qiagen) DNA + - value: RNA + - value: FFPE RNA + values_from: crdch:enum_CRDCH_Specimen_analyte_type + multivalued: false + range: AnalyteTypeEnum + required: false + source_material_type: + description: The general kind of material from which the specimen was derived. + comments: + - Values captured here may describe the type of molecular mixture, cell, tissue, organ, body fluid, embryo, excretory substance, or experimental system from which a specimen was derived. + examples: + - value: Tissue + - value: Blood + - value: Tumor Aspirate + - value: Cell Line + - value: Expanded Next Generation Cancer Model + - value: Pleural Effusion + - value: Xenograft Tissue + multivalued: false + range: SourceMaterialTypeEnum + required: false + parent_specimen: + description: An existing specimen from which the specimen of interest was directly derived (i.e its immediate parent specimen). + comments: + - This property indicates only the direct parent specimen(s). Cardinality is 0..m to account for specimens derived from pooling of multiple specimens. + multivalued: true + inlined_as_list: true + range: Specimen + required: false + source_participant: + description: A specific Subject from which the specimen was directly or indirectly derived. + multivalued: false + range: Participant + required: false + creation_activity: + description: The activity through which a specimen was created, by removing material from an biological subject, or deriving material from an existing specimen. + comments: + - Note that a given specimen is the result of only one and only one SpecimenCreationActivity, but may be subject to many processing events that subsequently modify or derive new specimens from it. + multivalued: false + range: SpecimenCreationActivity + required: false + processing_activity: + description: An activity that modifies the physical structure, composition, or state of a specimen. + comments: + - Note that a given specimen may undergo more than one distinct processing activity, through application of different methodologies that modify its physical state. However, if an activity generates a new specimen (e.g. via portioning, slicing) it is considered a SpeciemnCreationActivity. + multivalued: true + range: SpecimenProcessingActivity + required: false + storage_activity: + description: An activity that results in the storage or maintenance of a specimen in a particular location, container, or state. + comments: + - The 0..m cardinality of this attribute reflects the fact that a given specimen may undergo many separate periods of storage, in different locations and/or under different conditions + multivalued: true + range: SpecimenStorageActivity + required: false + transport_activity: + description: An activity through which the specimen is transported between locations. + comments: + - The 0..m cardinality of this attribute reflects the fact that a given specimen may undergo many separate transport processes at different periods of time. + multivalued: true + range: SpecimenTransportActivity + required: false + contained_in: + description: A physical container in which a specimen is presently held or attached - as storage for future use, a substrate for growth (e.g. a cell culture dish), or a vessel to enable analysis (e.g. a microscope slide or 96-well plate) + comments: + - The 0..1 cardinality on this attribute means that you cannot directly references multiple nested containers holding a sample. To capture this scenario, use the "parent_container" attribute of the Container entity. + multivalued: false + range: SpecimenContainer + required: false + dimensional_measures: + description: Observations about the current physical dimensions of an object (e.g. length, width, area). + comments: + - Observations are flexible containers for capturing a specific type of observation/measurement data about an object, along with metadata about how it was generated. The specific type of observation made is captured as data in the Observation object. + multivalued: false + range: DimensionalObservationSet + required: false + quantity_measure: + description: An observation related to the present quantity of a specimen - e.g. its weight, volume, or analyte concentration. + multivalued: true + range: SpecimenQuantityObservation + required: false + quality_measure: + description: An observation about characteristics of a specimen that are indicative of its quality or suitability for use. + comments: + - Observations are flexible containers for capturing a specific type of observation/measurement data about an object, along with metadata about how it was generated. The specific type of observation made is captured as data in the Observation object. + multivalued: true + range: SpecimenQualityObservation + required: false + cellular_composition_type: + description: A term describing the type of cell or cellular material comprising a specimen. + examples: + - value: 2D Classical Conditionally Reprogrammed Cells + - value: Adherent Cell Line + - value: Bone Marrow Components + - value: Buccal Cells + - value: Buffy Coat + - value: Derived Cell Line + - value: Granulocytes + - value: Pleural Effusion + - value: Human Original Cells + - value: Liquid Suspension Cell Line + values_from: crdch:enum_CRDCH_Specimen_cellular_composition_type + multivalued: false + range: string + required: false + related_document: + description: A reference to an external document that is about or related to the specimen (e.g. a publication related to the study it is a part of, pathology report containing additional details about it, protocol describing how it was collected) + multivalued: true + range: Document + required: false + section_location: + description: The location in a parent specimen from which a section/portion was excised (e.g. top, middle, bottom) + comments: + - This attribute applies only to Specimens that are of type 'portion' or 'slide'. + examples: + - value: Top + - value: Bottom + - value: Unknown + values_from: crdch:enum_CRDCH_Specimen_section_location + multivalued: false + range: SectionLocationEnum + required: false + derived_product: + description: A 'living' biologically active product that was derived from the specimen (e.g. a cell culture, tissue culture, or organoid) + multivalued: true + inlined_as_list: true + range: BiologicProduct + required: false + slots: + - identity + + SpecimenContainer: + is_a: Entity + description: A vessel in which a specimen is held or to which it is attached - for storage or as a substrate for growth (e.g. a cell culture dish) or analysis (e.g. a microscope slide or 96-well plate) + attributes: + container_type: + description: The kind of the container. + examples: + - value: Capillary blood collection tube + - value: Sputum specimen container + - value: Cell culture flask + - value: Glass slide + values_from: crdch:enum_CRDCH_SpecimenContainer_container_type + multivalued: false + range: string + required: false + container_number: + description: Informal number by which the container is referenced or identified (e.g. a slide number, or a well number in a plate) + multivalued: false + range: string + required: false + additive: + description: A material substance added to the container (typically to support the primary contained object - e.g. culture media to support cell growth) + examples: + - value: DMEM + - value: DMEM+Serum + - value: RPMI + - value: RPMI+Serum + multivalued: true + range: Substance + required: false + parent_container: + description: A larger container of which this container is a part (e.g. the complete 96-well plate of which a single well is a part) + multivalued: false + range: SpecimenContainer + required: false + + SpecimenCreationActivity: + is_a: Entity + description: The process of creating a specimen. This may occur through observing and/or collecting material from an biological source or natural setting, or through derivation from an existing specimen (e.g. via portioning or aliquoting). + comments: + - A creation activity represents the entire process up to the point where the specimen is physically modified, stored, or transported. + attributes: + activity_type: + description: The high-level type of creation activity. + comments: + - At present our model collapses two types of processes through which specimens are created (initial collection from source, and derivation from an existing specimen). The 'category' is a flag to indicate which applies to a given instance, so that more specific recommendations about data entry in certain fields can be specified. + examples: + - value: Collection from Source + - value: Derivation from Specimen + multivalued: false + range: SpecimenCreationActivityTypeEnum + required: false + date_started: + description: The date when the activity began (in this case, a specimen creation event). + comments: + - To allow for more precise specification of dates when an activity was performed, we provide date_started and date_ended attributes. If source data only provides a single date, it SHOULD be entered as both the date_started and date_ended. + multivalued: false + range: TimePoint + required: false + date_ended: + description: The date when the activity ended (in this case, a specimen creation event). + comments: + - To allow for more precise specification of dates when an activity was performed, we provide date_started and date_ended attributes. If source data only provides a single date, it SHOULD be entered as both the date_started and date_ended. + multivalued: false + range: TimePoint + required: false + performed_by: + description: The organization or group that performed the activity. + multivalued: false + range: Organization + required: false + collection_method_type: + description: The type of method applied in collecting a sample from its original source. + comments: + - This attribute applies only when the Specimen.category = 'original'. + examples: + - value: Anterior Resection of Rectum + - value: Ascites Drainage + - value: Excisional Biopsy + - value: Specimen Pooling + multivalued: false + range: SpecimenCollectionMethodType + required: false + derivation_method_type: + description: The type of method applied to derive a new specimen from an existing one. + comments: + - This attribute applies only when Specimen.category = 'portion', 'aliquot', 'analyte', or 'slide'. + examples: + - value: Vibratome + - value: Cryosectioning + - value: Tissuemolds + - value: Slidingmicrotome + - value: Sectioning + - value: Other + - value: Unknown + - value: NotReported + values_from: crdch:enum_CRDCH_SpecimenCreationActivity_derivation_method_type + multivalued: false + range: string + required: false + additive: + description: A type of material or reagent used applied as input when creating a specimen. + multivalued: true + range: Substance + required: false + collection_site: + description: The anatomic site from which a specimen was collected. + comments: + - This attribute is used when SpecimenCreationActivity.activity_type = 'Collection from Source'. + examples: + - value: Abdomen + - value: Abdominal Wall + - value: Acetabulum + multivalued: false + range: BodySite + required: false + quantity_collected: + description: The quantity of material in the specimen as originally collected from its original source material (prior to downstream portioning or processing) + comments: + - This attribute applies only when Specimen.category='initial sample'. + multivalued: false + range: Quantity + required: false + specimen_order: + description: A numeric value that represents the sequential order of this creation activity relative to those producing other specimens from the same source material or parent specimen. + multivalued: false + range: integer + required: false + + SpecimenQualityObservation: + is_a: Observation + description: A structured object that describes a characteristic of a specimen indicative of its quality or suitability for use, as generated through a point-in-time observation or measurement. + slot_usage: + value: + description: The result of the observation, encoded as a free-text Quantity. + comments: + - One and only one of the value(x) fields must be populated. + multivalued: false + range: ObservationValueString + required: true + + SpecimenQuantityObservation: + is_a: Observation + description: A structured object that describes a single data item about the quantity of a Specimen, as generated through a point-in-time observation or measurement. + comments: + - At the core of an Observation is a flexible key-value pair (or a structured collection of key-value pairs), where a "key" field defines the type of observation made, and the "value" field describes the value or outcome of the observation. The fact that the type of observation captured is defined in the data allow Observation to convey a broad range of observation data. + slot_usage: + value: + description: The result of the observation, encoded as a Quantity. + comments: + - One and only one of the value(x) fields must be populated. + multivalued: false + range: ObservationValueQuantity + required: true + + SpecimenProcessingActivity: + name: SpecimenProcessingActivity + description: An activity that modifies the physical structure, composition, or state of a specimen. Unlike SpecimenCreation, SpecimenProcessing activities do not result in the generation of new entities - they take a single specimen as input, and output that same specimen. + comments: + - '"Processing" as defined here alters the physical nature of a specimen, such that storage or transport activities do not qualify as processing activities. When instantiating this class, create a separate instances for each type/method of processing performed (e.g. each method of fixation, freezing, labeling, etc. that is applied).' + is_a: Entity + attributes: + activity_type: + name: activity_type + description: The high-level type of processing activity + examples: + - value: Fixation + - value: Freezing + - value: Mounting + - value: Preservation + multivalued: false + range: SpecimenProcessingActivityTypeEnum + required: false + date_started: + name: date_started + description: The date when the activity began (in this case, a specimen processing event). + comments: + - To allow for more precise specification of dates when an activity was performed, we provide date_started and date_ended attributes. If source data only provides a single date, it SHOULD be entered as both the date_started and date_ended. + multivalued: false + range: TimePoint + required: false + date_ended: + name: date_ended + description: The date when the activity began (in this case, a specimen processing event). + comments: + - To allow for more precise specification of dates when an activity was performed, we provide date_started and date_ended attributes. If source data only provides a single date, it SHOULD be entered as both the date_started and date_ended. + multivalued: false + range: TimePoint + required: false + duration: + name: duration + description: The length of time over which the activity was performed. + multivalued: true + inlined_as_list: true + range: Quantity + required: false + method_type: + name: method_type + description: A specific type of method or procedure performed to process the specimen + examples: + - value: Snap Freezing + - value: Cryopreservation in liquid nitrogen (dead tissue) + - value: Cryopreservation in dry ice (dead tissue) + - value: Formalin fixed paraffin embedded (FFPE) + - value: Formalin fixed-unbuffered + - value: Formalin fixed-buffered + - value: OCT + values_from: crdch:enum_CRDCH_SpecimenProcessingActivity_method_type + multivalued: false + range: string + required: false + additive: + name: additive + description: A type of material or reagent used as input when processing the specimen + examples: + - value: Formalin + multivalued: true + inlined_as_list: true + range: Substance + required: false + + SpecimenStorageActivity: + name: SpecimenStorageActivity + description: An activity in which a specimen is stored or maintained in a particular location, container, or state. Unlike 'processing' activities, storage does not alter the \nintrinsic physical nature of a specimen. + comments: + - Think of the StorageActivity as being one of many possible periods when the specimen was stored at some location and in some state or condition. We may want to capture storage dates and conditions for each. + is_a: Entity + attributes: + date_started: + name: date_started + description: The date when the activity began (in this case, a storage event). + comments: + - To allow for more precise specification of dates when an activity was performed, we provide date_started and date_ended attributes. If source data only provides a single date, it SHOULD be entered as both the date_started and date_ended. + multivalued: false + range: TimePoint + required: false + date_ended: + name: date_ended + description: The date when the activity ended (in this case, a storage event). + comments: + - To allow for more precise specification of dates when an activity was performed, we provide date_started and date_ended attributes. If source data only provides a single date, it SHOULD be entered as both the date_started and date_ended. + multivalued: false + range: TimePoint + required: false + duration: + name: duration + description: The length of time over which the activity was performed. + comments: + - 'Quantity.unit MUST be a unit of time. ' + multivalued: false + range: Quantity + required: false + method_type: + name: method_type + description: A specific type of method or procedure performed to store the specimen + examples: + - value: ambient temperature + - value: cut slide + - value: fresh + - value: frozen at -70C + - value: frozen at -150C + - value: frozen in liquid nitrogen + - value: frozen in vapor phase + - value: paraffin block + - value: RNAlater at 4C + values_from: crdch:enum_CRDCH_SpecimenStorageActivity_method_type + multivalued: false + range: string + required: false + container: + name: container + description: A container in which the specimen is held or affixed during its storage. + multivalued: true + inlined_as_list: true + range: SpecimenContainer + required: false + + SpecimenTransportActivity: + name: SpecimenTransportActivity + description: An activity through which a specimen is transported between locations or organizations. + comments: + - Think of the TransportActivity as being one of many possible occasions when the specimen was moved from one location to another, in some state or condition. We may want to capture dates and conditions for each. + is_a: Entity + attributes: + date_started: + name: date_started + description: The date when the activity began (in this case, a transport event). + comments: + - To allow for more precise specification of dates when an activity was performed, we provide date_started and date_ended attributes. If source data only provides a single date, it SHOULD be entered as both the date_started and date_ended. + multivalued: false + range: TimePoint + required: false + date_ended: + name: date_ended + description: The date when the activity ended (in this case, a transport event). + comments: + - To allow for more precise specification of dates when an activity was performed, we provide date_started and date_ended attributes. If source data only provides a single date, it SHOULD be entered as both the date_started and date_ended. + multivalued: false + range: TimePoint + required: false + duration: + name: duration + description: The length of time over which the activity was performed. + multivalued: true + inlined_as_list: true + range: string + required: false + transport_origin: + name: transport_origin + description: An organization (facility, site, lab, etc) from which the specimen was transported as a result of the activity. + multivalued: false + range: Organization + required: false + transport_destination: + name: transport_destination + description: An organization (facility, site, lab, etc) to which the specimen is delivered as a result of the activity. + multivalued: false + range: Organization + required: false + + BiologicProduct: + name: BiologicProduct + description: A living organism, or a metabolically active biological system such as a cell culture, tissue culture, or organoid that is maintained or propagated in vitro. + is_a: Entity + attributes: + description: + name: description + description: A free text field to capture additional info/explanation about the model system + multivalued: false + range: string + required: false + product_type: + name: product_type + description: The high level type of model system (e.g. cell line, cell culture, tissue culture, organoid) + examples: + - value: cell line + - value: cell culture + - value: tissue culture + - value: organoid + values_from: crdch:enum_CRDCH_BiologicProduct_product_type + multivalued: false + range: string + required: false + passage_number: + name: passage_number + description: When the specimen an actively growing model system, such as a cell or tissue culture, this property captures its passage number. + multivalued: true + range: integer + required: false + growth_rate: + name: growth_rate + description: When the specimen an actively growing model system, such as a cell or tissue culture, this property captures its rate of growth. + multivalued: true + range: string + required: false + slots: + - identity + + Substance: + name: Substance + description: A type of material substance, or instance thereof, as used in a particular application. May include information about the role the substance played in a particular application. + is_a: Entity + attributes: + substance_type: + name: substance_type + description: The specific type of the substance - at as granular a level as possible. May be a specific chemical compound, or the name of a formulation/preparation made up of many compounds. + examples: + - value: toluene + - value: formalin + - value: DMEM + values_from: crdch:enum_CRDCH_Substance_substance_type + multivalued: false + range: string + required: false + role: + name: role + description: A role played by the substance in a particular application (e.g. the role of a lysis buffer when applied in a specimen creation activity, or the role of fixative when applied in specimen processing) + examples: + - value: lysis buffer + - value: fixative + - value: mounting medium + - value: collection media + values_from: crdch:enum_CRDCH_Substance_role + multivalued: true + range: string + required: false + substance_quantity: + name: substance_quantity + description: The quantity of substance this instance stands for. + multivalued: false + range: Quantity + required: false + + Quantity: + is_a: Entity + description: A structured object to represent an amount of something (e.g., weight, mass, length, duration of time) - including a value and unit. + comments: + - QuantityMeasure may be implemented as an Observation-like object that will let us capture any type of measure of the amount of some substance (e.g. "weight", "volume"), with distinct timestamps and methods associated. It could be implemented as a "simple" observation (one measurement per instance, where the "code" fields is bound to a value set describing the different types of quantity measures allowed - e.g. "weight", "volume", "concentration"), or as "composite" observation (multiple measurements possible in a single instance, each captured as a component defined to hold a specific type of quantity measure - e.g. "weight", "volume", "concentration"). The number of different quantity measures we anticipate needed to support, and the potential for data sparseness, are factors that determine whether a simple or composite Observation would be most appropriate. + attributes: + value_decimal: + description: An amount, in the given units (if specified) + multivalued: false + range: decimal + required: false + value_concept: + description: A coded value representing a quantity (e.g. "Adjacent (< or = 2cm)") + values_from: crdch:enum_CRDCH_Quantity_value_codeable_concept + multivalued: false + range: string + required: false + unit: + description: A coded or free text (in the .text field) representation of the unit. + values_from: crdch:enum_CRDCH_Quantity_unit + multivalued: false + range: string + required: false + + BodySite: + is_a: Entity + description: A site in the body of an organism, typically described in terms of an anatomical concept and optional qualifiers (e.g. left/right, upper/lower). But body sites as defined here may include non-canonical sites, such as an implanted medical device. + attributes: + site: + description: A term describing any site in the body. + examples: + - value: Adenoid + - value: Adipose + - value: Adrenal + values_from: crdch:enum_CRDCH_BodySite_site + multivalued: false + range: string + required: true + qualifier: + description: A qualifier that further refines or specifies the location of the body site - e.g. to indicate laterality, upper v. lower, containment in some other anatomical structure (e.g. 'blood' contained in the 'hepatic vein') + examples: + - value: left + - value: right + - value: bilateral + values_from: crdch:enum_CRDCH_BodySite_qualifier + multivalued: true + range: string + required: false + + ObservationSet: + is_a: Entity + description: A structured object to hold related Observations in a set. + attributes: + category: + description: The general category of observation set described + values_from: crdch:enum_CRDCH_ObservationSet_category + multivalued: false + range: string + required: false + focus: + description: The entity or entities directly observed/measured in generating an observation result. + comments: + - The "focus", and "associated_participant" fields are useful when data creators want an Observation object to stand on its own, so it can point back to the entities it is about. These fields are not needed when an Observation is embedded in an entity, where focus, subject, and specimen can be determined from context. + multivalued: true + inlined_as_list: true + range: Entity + required: false + associated_participant: + description: The Participant that the observation is about (if not the direct focus). Observations are often made on specimens derived from a patient, or other entities related to a patient, that ultimately tell us something about the patient of interest. + multivalued: false + range: Participant + required: false + method_type: + description: The type of method used in generating the ObservationSet + comments: + - This may be a type of observational, measurement, experimental, or computational method specifying how to generate data (e.g. "manual counting", "bright field microscopy"). Or a Guideline or SOP specifying how to interpret data and/or encode the result of an Observation (e.g. a Cancer Staging system such as that defined by the AJCC, or variant interpretation guideline such as that provided by the ACMG). + values_from: crdch:enum_CRDCH_ObservationSet_method_type + multivalued: true + range: string + required: false + performed_by: + description: The organization or group that performed the observation activity. + multivalued: false + range: Organization + required: false + observations: + description: A set of one or more observations. + multivalued: true + inlined_as_list: true + range: Observation + required: false + + Observation: + is_a: Entity + description: A data structure with key (observation_type) and value (value) attributes that represents a single observation, such as the hematocrit component of a complete blood count panel. + attributes: + category: + description: The general category of observation described + values_from: crdch:enum_CRDCH_Observation_category + multivalued: false + range: string + required: false + observation_type: + description: The type of Observation being represented (e.g. 'diastolic blood pressure') + comments: This field holds the "key" in the core key-value pair comprised of the observation_type field and the relevant value(s) field. + values_from: crdch:enum_CRDCH_Observation_observation_type + multivalued: false + range: string + required: true + method_type: + description: A type of method used in generating the Observation result. + comments: + - This may be a type of observational, measurement, experimental, or computational method specifying how to generate data (e.g. "manual counting", "bright field microscopy",). Or a Guideline or SOP specifying how to interpret data and/or encode the result of an Observation (e.g. a Cancer Staging system such as that defined by the AJCC, or variant interpretation guideline such as that provided by the ACMG). + values_from: crdch:enum_CRDCH_Observation_method_type + multivalued: false + range: string + required: false + focus: + description: The entity or entities directly observed/measured in generating an observation result. + comments: + - The "focus", "subject", and "specimen" fields are useful when data creators want an Observation object to stand on its own, so it can point back to the entities it is about. These fields are not needed when an Observation is embedded in a Specimen or other entity, where focus, subject, and specimen can be determined from context. + multivalued: false + range: Entity + required: false + associated_participant: + description: The patient that the observation is about (if not the direct focus). e.g. observations are often made on specimens derived from a patient, or other entities related to a patient, that ultimately tell us something about the patient of interest. + multivalued: false + range: Participant + required: false + performed_by: + description: The organization or group that performed the observation activity. + multivalued: false + range: Organization + required: false + value: + description: The value for an Observation. + comments: + - One and only one of the value(x) fields must be populated. + multivalued: false + range: ObservationValue + required: true + + ObservationValue: + description: Single-valued observation valueholiding slot + attributes: + type: + range: string + designates_type: true + name: + range: string + slots: + - value + + ObservationValueDecimal: + is_a: ObservationValue + description: Single-valued decimal observation + slot_usage: + value: + range: decimal + required: true + + ObservationValueInteger: + is_a: ObservationValue + description: Single-valued integer observation + slot_usage: + value: + range: integer + required: true + + ObservationValueBoolean: + is_a: ObservationValue + description: Single-valued boolean observation + slot_usage: + value: + range: boolean + required: true + + ObservationValueString: + is_a: ObservationValue + description: Single-valued string observation + slot_usage: + value: + range: string + required: true + + ObservationValueQuantity: + is_a: ObservationValue + description: Single-valued Quantity observation + slot_usage: + value: + range: Quantity + required: true + + +slots: + id: + identifier: true + slot_uri: schema:identifier + range: uriorcurie + description: The 'logical' identifier of the entity within the system of record. The simple value of this attribute stands for an identifier of this data object within the system, it can be used as a reference from other objects within the same system (i.e. primary and foreign keys), and it should be unique per type of object. The same data object copied to a different system will likely have a different "id" in the new system since "id" values are system specific and do not represent persistent business identifiers. Business identifiers are assigned outside the information system and are captured in the "identifier" field. The "id" field is more likely to be a serially or randomly generated value that is assigned to the data object as it is created in a system. + identity: + slot_uri: schema:identifier + range: Identifier + description: A 'business' identifier or accession number for the entity, typically as provided by an external system or authority, that are globally unique and persist across implementing systems. Also, since these identifiers are created outside the information system through a specific business process, the Identifier type has additional attributes to capture this additional metadata so the actual identifier values are qualified by the context that created those values. This additional context allows "identifier" instances to be transmitted as business data across systems while still being able to trace them back to the system of origin. + multivalued: true + associated_person: + range: Person + description: A reference to the Person that is associated with this record. + value: + range: string + description: A general slot to hold a value. + associated_participant: + range: Participant + description: A reference to the Participant that is associated with this record. + + +enums: + DataUseEnum: + description: >- + A constrained set of enumerative values drawn from the Data Use Ontology (DUO). The DUO is an ontology which represent data use conditions. + permissible_values: + GRU: + description: 'This data use permission indicates that use is allowed for general research use for any research purpose. This includes but is not limited to: health/medical/biomedical purposes, fundamental biology research, the study of population origins or ancestry, statistical methods and algorithms development, and social-sciences research.' + meaning: DUO:0000042 + HMB: + description: 'This data use permission indicates that use is allowed for health/medical/biomedical purposes; does not include the study of population origins or ancestry.' + meaning: DUO:0000006 + DS: + description: 'This data use permission indicates that use is allowed provided it is related to the specified disease. This term should be coupled with a term describing a disease from an ontology to specify the disease the restriction applies to. DUO recommends MONDO be used, to provide the basis for automated evaluation. For more information see https://github.com/EBISPOT/DUO/blob/master/MONDO_Overview.md Other resources, such as the Disease Ontology, HPO, SNOMED-CT or others, can also be used. When those other resources are being used, this may require an extra mapping step to leverage automated matching algorithms.' + meaning: DUO:0000007 + NPUNCU: + description: 'This data use modifier indicates that use of the data is limited to not-for-profit organizations and not-for-profit use, non-commercial use.' + meaning: DUO:0000018 + IRB: + description: 'This data use modifier indicates that the requestor must provide documentation of local IRB/ERB approval.' + meaning: DUO:0000021 + + EthnicityEnum: + description: >- + A constrained set of enumerative values containing the United States Office of Management and Budget (OMB) values for ethnicity. + permissible_values: + HISPANIC_OR_LATINO: + description: 'A person of Cuban, Mexican, Puerto Rican, South or Central American, or other Spanish culture or origin, regardless of race. The term, "Spanish origin" can be used in addition to "Hispanic or Latino". (OMB)' + meaning: OMOP:38003563 + NOT_HISPANIC_OR_LATINO: + description: 'A person not of Cuban, Mexican, Puerto Rican, South or Central American, or other Spanish culture or origin, regardless of race.' + meaning: OMOP:38003564 + + RaceEnum: + description: >- + A constrained set of enumerative values containing the United States Office of Management and Budget (OMB) values for race. + permissible_values: + AMERICAN_INDIAN_OR_ALASKA_NATIVE: + description: 'A person having origins in any of the original peoples of North and South America (including Central America) and who maintains tribal affiliation or community attachment. (OMB)' + meaning: OMOP:8657 + ASIAN: + description: 'A person having origins in any of the original peoples of the Far East, Southeast Asia, or the Indian subcontinent, including for example, Cambodia, China, India, Japan, Korea, Malaysia, Pakistan, the Philippine Islands, Thailand, and Vietnam. (OMB)' + meaning: OMOP:8515 + BLACK_OR_AFRICAN_AMERICAN: + description: 'A person having origins in any of the Black racial groups of Africa. Terms such as "Haitian" or "Negro" can be used in addition to "Black or African American". (OMB)' + meaning: OMOP:8516 + NATIVE_HAWAIIAN_OR_OTHER_PACIFIC_ISLANDER: + description: 'Denotes a person having origins in any of the original peoples of Hawaii, Guam, Samoa, or other Pacific Islands. The term covers particularly people who identify themselves as part-Hawaiian, Native Hawaiian, Guamanian or Chamorro, Carolinian, Samoan, Chuukese (Trukese), Fijian, Kosraean, Melanesian, Micronesian, Northern Mariana Islander, Palauan, Papua New Guinean, Pohnpeian, Polynesian, Solomon Islander, Tahitian, Tokelauan, Tongan, Yapese, or Pacific Islander, not specified.' + meaning: OMOP:8557 + UNKNOWN: + description: 'Not known, not observed, not recorded, or refused.' + meaning: OMOP:8552 + WHITE: + description: 'Denotes person with European, Middle Eastern, or North African ancestral origin who identifies, or is identified, as White.' + meaning: OMOP:8527 + + SexEnum: + description: >- + A constrained set of enumerative values containing the OMOP values for sex. + permissible_values: + MALE: + description: A person who belongs to the sex that normally produces sperm. + meaning: OMOP:8507 + FEMALE: + description: A person who belongs to the sex that normally produces ova. + meaning: OMOP:8532 + UNKNOWN: + description: 'Not known, not observed, not recorded, or refused.' + meaning: OMOP:8552 + + CellularOrganismSpeciesEnum: + description: >- + A constrained set of enumerative values containing the NCBITaxon values for cellular organisms. + reachable_from: + source_ontology: obo:ncbitaxon + source_nodes: + - ncbitaxon:131567 ## Cellular Organisms + include_self: false + relationship_types: + - rdfs:subClassOf + pv_formula: LABEL + + VitalStatusEnum: + description: >- + A constrained set of enumerative values containing the OMOP values for vital status. + permissible_values: + ALIVE: + description: 'Showing characteristics of life; displaying signs of life. (NCIt)' + meaning: OMOP:4230556 + DEAD: + description: 'The cessation of life. (NCIt)' + meaning: OMOP:434489 + + VertebrateBreedEnum: + description: >- + A constrained set of enumerative values containing the VBO values for vertebrate breeds. + reachable_from: + source_ontology: obo:vbo + source_nodes: + - VBO:0400000 ## Vertebrate Breed + include_self: false + relationship_types: + - rdfs:subClassOf + pv_formula: LABEL + + VisitCategoryEnum: + description: >- + A constrained set of enumerative values containing the OMOP values for visit categories. + permissible_values: + INPATIENT: + description: Person visiting hospital, at a care stie, in bed, for duration of more than one day, with physicians and other Providers permanently available to deliver service around the clock + meaning: OMOP:9201 + EMERGENCY_ROOM: + description: Person visiting dedicated healthcare institution for treating emergencies, at a Care Site, within one day, with physicians and Providers permanently available to deliver service around the clock + meaning: OMOP:9203 + EMERGENCY_ROOM_AND_INPATIENT: + description: Person visiting ER followed by a subsequent Inpatient Visit, where Emergency department is part of hospital, and transition from the ER to other hospital departments is undefined + meaning: OMOP:262 + NON_HOSPITAL_INSTITUTION: + description: Person visiting dedicated institution for reasons of poor health, at a Care Site, long-term or permanently, with no physician but possibly other Providers permanently available to deliver service around the clock + meaning: OMOP:42898160 + OUTPATIENT: + description: Person visiting dedicated ambulatory healthcare institution, at a Care Site, within one day, without bed, with physicians or medical Providers delivering service during Visit + meaning: OMOP:9202 + HOME: + description: Provider visiting Person, without a Care Site, within one day, delivering service + meaning: OMOP:581476 + TELEHEALTH: + description: Patient engages with Provider through communication media + meaning: OMOP:5083 + PHARMACY: + description: Person visiting pharmacy for dispensing of Drug, at a Care Site, within one day + meaning: OMOP:581458 + LABORATORY: + description: Patient visiting dedicated institution, at a Care Site, within one day, for the purpose of a Measurement. + meaning: OMOP:32036 + AMBULANCE: + description: Person using transportation service for the purpose of initiating one of the other Visits, without a Care Site, within one day, potentially with Providers accompanying the Visit and delivering service + meaning: OMOP:581478 + CASE_MANAGEMENT: + description: Person interacting with healthcare system, without a Care Site, within a day, with no Providers involved, for administrative purposes + meaning: OMOP:38004193 + + VisitProvenanceEnum: + description: >- + A constrained set of enumerative values containing the OMOP values for visit provenance. + permissible_values: + CASE_REPORT_FORM: + description: Case Report Form + meaning: OMOP:32809 + CLAIM: + description: Claim + meaning: OMOP:32810 + CLAIM_AUTHORIZATION: + description: Claim authorization + meaning: OMOP:32811 + CLAIM_DISCHARGE_RECORD: + description: Claim discharge record + meaning: OMOP:32812 + CLAIM_ENROLMENT_RECORD: + description: Claim enrolment record + meaning: OMOP:32813 + COST_RECORD: + description: Cost record + meaning: OMOP:32814 + DEATH_CERTIFICATE: + description: Death Certificate + meaning: OMOP:32815 + DENTAL_CLAIM: + description: Dental claim + meaning: OMOP:32816 + EHR: + description: EHR + meaning: OMOP:32817 + EHR_PATHOLOGY_REPORT: + description: EHR Pathology report + meaning: OMOP:32835 + EHR_ADMINISTRATION_RECORD: + description: EHR administration record + meaning: OMOP:32818 + EHR_ADMISSION_NOTE: + description: EHR admission note + meaning: OMOP:32819 + EHR_ANCILLARY_REPORT: + description: EHR ancillary report + meaning: OMOP:32820 + EHR_BILLING_RECORD: + description: EHR billing record + meaning: OMOP:32821 + EHR_CHIEF_COMPLAINT: + description: EHR chief complaint + meaning: OMOP:32822 + EHR_DISCHARGE_RECORD: + description: EHR discharge record + meaning: OMOP:32823 + EHR_DISCHARGE_SUMMARY: + description: EHR discharge summary + meaning: OMOP:32824 + EHR_DISPENSING_RECORD: + description: EHR dispensing record + meaning: OMOP:32825 + EHR_EMERGENCY_ROOM_NOTE: + description: EHR emergency room note + meaning: OMOP:32826 + EHR_ENCOUNTER_RECORD: + description: EHR encounter record + meaning: OMOP:32827 + EHR_EPISODE_RECORD: + description: EHR episode record + meaning: OMOP:32828 + EHR_INPATIENT_NOTE: + description: EHR inpatient note + meaning: OMOP:32829 + EHR_MEDICATION_LIST: + description: EHR medication list + meaning: OMOP:32830 + EHR_NOTE: + description: EHR note + meaning: OMOP:32831 + EHR_NURSING_REPORT: + description: EHR nursing report + meaning: OMOP:32832 + EHR_ORDER: + description: EHR order + meaning: OMOP:32833 + EHR_OUTPATIENT_NOTE: + description: EHR outpatient note + meaning: OMOP:32834 + EHR_PHYSICAL_EXAMINATION: + description: EHR physical examination + meaning: OMOP:32836 + EHR_PLANNED_DISPENSING_RECORD: + description: EHR planned dispensing record + meaning: OMOP:32837 + EHR_PRESCRIPTION: + description: EHR prescription + meaning: OMOP:32838 + EHR_PRESCRIPTION_ISSUE_RECORD: + description: EHR prescription issue record + meaning: OMOP:32839 + EHR_PROBLEM_LIST: + description: EHR problem list + meaning: OMOP:32840 + EHR_RADIOLOGY_REPORT: + description: EHR radiology report + meaning: OMOP:32841 + EHR_REFERRAL_RECORD: + description: EHR referral record + meaning: OMOP:32842 + EXTERNAL_CDM_INSTANCE: + description: External CDM instance + meaning: OMOP:32843 + FACILITY_CLAIM: + description: Facility claim + meaning: OMOP:32844 + FACILITY_CLAIM_DETAIL: + description: Facility claim detail + meaning: OMOP:32845 + FACILITY_CLAIM_HEADER: + description: Facility claim header + meaning: OMOP:32846 + GEOGRAPHIC_ISOLATION_RECORD: + description: Geographic isolation record + meaning: OMOP:32847 + GOVERNMENT_REPORT: + description: Government report + meaning: OMOP:32848 + HEALTH_INFORMATION_EXCHANGE_RECORD: + description: Health Information Exchange record + meaning: OMOP:32849 + HEALTH_RISK_ASSESSMENT: + description: Health Risk Assessment + meaning: OMOP:32850 + HEALTHCARE_PROFESSIONAL_FILLED_SURVEY: + description: Healthcare professional filled survey + meaning: OMOP:32851 + HOSPITAL_COST: + description: Hospital cost + meaning: OMOP:32852 + INPATIENT_CLAIM: + description: Inpatient claim + meaning: OMOP:32853 + INPATIENT_CLAIM_DETAIL: + description: Inpatient claim detail + meaning: OMOP:32854 + INPATIENT_CLAIM_HEADER: + description: Inpatient claim header + meaning: OMOP:32855 + LAB: + description: Lab + meaning: OMOP:32856 + MAIL_ORDER_RECORD: + description: Mail order record + meaning: OMOP:32857 + NLP: + description: NLP + meaning: OMOP:32858 + OUTPATIENT_CLAIM: + description: Outpatient claim + meaning: OMOP:32859 + OUTPATIENT_CLAIM_DETAIL: + description: Outpatient claim detail + meaning: OMOP:32860 + OUTPATIENT_CLAIM_HEADER: + description: Outpatient claim header + meaning: OMOP:32861 + PATIENT_FILLED_SURVEY: + description: Patient filled survey + meaning: OMOP:32862 + PATIENT_OR_PAYER_PAID_RECORD: + description: Patient or payer paid record + meaning: OMOP:32863 + PATIENT_REPORTED_COST: + description: Patient reported cost + meaning: OMOP:32864 + PATIENT_SELF-REPORT: + description: Patient self-report + meaning: OMOP:32865 + PATIENT_SELF-TESTED: + description: Patient self-tested + meaning: OMOP:705183 + PAYER_SYSTEM_RECORD_(PAID_PREMIUM): + description: Payer system record (paid premium) + meaning: OMOP:32866 + PAYER_SYSTEM_RECORD_(PRIMARY_PAYER): + description: Payer system record (primary payer) + meaning: OMOP:32867 + PAYER_SYSTEM_RECORD_(SECONDARY_PAYER): + description: Payer system record (secondary payer) + meaning: OMOP:32868 + PHARMACY_CLAIM: + description: Pharmacy claim + meaning: OMOP:32869 + POINT_OF_CARE/EXPRESS_LAB: + description: Point of care/express lab + meaning: OMOP:703249 + PRE-QUALIFICATION_TIME_PERIOD: + description: Pre-qualification time period + meaning: OMOP:32870 + PROFESSIONAL_CLAIM: + description: Professional claim + meaning: OMOP:32871 + PROFESSIONAL_CLAIM_DETAIL: + description: Professional claim detail + meaning: OMOP:32872 + PROFESSIONAL_CLAIM_HEADER: + description: Professional claim header + meaning: OMOP:32873 + PROVIDER_CHARGE_LIST_PRICE: + description: Provider charge list price + meaning: OMOP:32874 + PROVIDER_FINANCIAL_SYSTEM: + description: Provider financial system + meaning: OMOP:32875 + PROVIDER_INCURRED_COST_RECORD: + description: Provider incurred cost record + meaning: OMOP:32876 + RANDOMIZATION_RECORD: + description: Randomization record + meaning: OMOP:32877 + REFERENCE_LAB: + description: Reference lab + meaning: OMOP:32878 + REGISTRY: + description: Registry + meaning: OMOP:32879 + STANDARD_ALGORITHM: + description: Standard algorithm + meaning: OMOP:32880 + STANDARD_ALGORITHM_FROM_EHR: + description: Standard algorithm from EHR + meaning: OMOP:32882 + STANDARD_ALGORITHM_FROM_CLAIMS: + description: Standard algorithm from claims + meaning: OMOP:32881 + SURVEY: + description: Survey + meaning: OMOP:32883 + US_SOCIAL_SECURITY_DEATH_MASTER_FILE: + description: US Social Security Death Master File + meaning: OMOP:32885 + URGENT_LAB: + description: Urgent lab + meaning: OMOP:32884 + VISION_CLAIM: + description: Vision claim + meaning: OMOP:32886 + + MondoHumanDiseaseEnum: + description: >- + A constrained set of enumerative values containing the MONDO values for human diseases. + reachable_from: + source_ontology: obo:mondo + source_nodes: + - MONDO:0700096 ## Human Disease + include_self: false + relationship_types: + - rdfs:subClassOf + pv_formula: LABEL + + HpoPhenotypicAbnormalityEnum: + description: >- + A constrained set of enumerative values containing the HPO values for phenotypic abnormalities. + reachable_from: + source_ontology: obo:hp + source_nodes: + - HP:0000118 ## Phenotypic Abnormality + include_self: false + relationship_types: + - rdfs:subClassOf + pv_formula: LABEL + + ConditionConceptEnum: + description: >- + A constrained set of enumerative values containing both the MONDO values for human diseases and the HPO values for phenotypic abnormalities. + inherits: + - MondoHumanDiseaseEnum + - HpoPhenotypicAbnormalityEnum + + ConditionProvenanceEnum: + description: >- + A constrained set of enumerative values containing the OMOP values for visit provenance. + permissible_values: + EHR_BILLING_DIAGNOSIS: + meaning: OMOP:4822159 + EHR_CHIEF_COMPLAINT: + meaning: OMOP:4822124 + EHR_ENCOUNTER_DIAGNOSIS: + meaning: OMOP:4822160 + EHR_EPISODE_ENTRY: + meaning: OMOP:4822135 + EHR_PROBLEM_LIST_ENTRY: + meaning: OMOP:4822121 + FIRST_POSITION_CONDITION: + meaning: OMOP:4822128 + NLP_DERIVED: + meaning: OMOP:4822058 + OBSERVATION_RECORDED_FROM_EHR: + meaning: OMOP:4822126 + PATIENT_SELF-REPORTED_CONDITION: + meaning: OMOP:4822157 + PRIMARY_CONDITION: + meaning: OMOP:4822127 + REFERRAL_RECORD: + meaning: OMOP:4822125 + SECONDARY_CONDITION: + meaning: OMOP:4822129 + TUMOR_REGISTRY: + meaning: OMOP:4822266 + + ConditionStatusEnum: + description: >- + A constrained set of enumerative values indicating whether a Condition is present, absent, or its status is unknown. + permissible_values: + PRESENT: + description: The condition is/was present in the patient. + ABSENT: + description: The condition is/was absent in the patient. + UNKNOWN: + description: The condition is/was of unknown status in the patient. + + DrugExposureConceptEnum: + description: Drug codes from RxNorm. + see_also: + - https://bioregistry.io/registry/rxnorm + - https://terminology.hl7.org/3.1.0/CodeSystem-v3-rxNorm.html + - http://www.nlm.nih.gov/research/umls/rxnorm + - urn:oid:2.16.840.1.113883.6.88 + reachable_from: + source_ontology: bioregistry:rxnorm + pv_formula: LABEL + + DrugExposureProvenanceEnum: + description: Source of drug exposure record + comments: Taken from OMOP Drug Type values; "select * from concept where vocabulary_id = 'Drug Type';" Do we need descriptions beyond the name? + permissible_values: + RANDOMIZED DRUG: + description: Randomized Drug + meaning: OMOP:44777970 + PATIENT SELF-REPORTED MEDICATION: + description: Patient Self-Reported Medication + meaning: OMOP:44787730 + NLP DERIVED: + description: NLP derived + meaning: OMOP:32426 + PRESCRIPTION DISPENSED IN PHARMACY: + description: Prescription dispensed in pharmacy + meaning: OMOP:38000175 + PHYSICIAN ADMINISTERED DRUG (IDENTIFIED FROM EHR ORDER): + description: Physician administered drug (identified from EHR order) + meaning: OMOP:581373 + DISPENSED IN OUTPATIENT OFFICE: + description: Dispensed in Outpatient office + meaning: OMOP:581452 + PRESCRIPTION DISPENSED THROUGH MAIL ORDER: + description: Prescription dispensed through mail order + meaning: OMOP:38000176 + PRESCRIPTION WRITTEN: + description: Prescription written + meaning: OMOP:38000177 + MEDICATION LIST ENTRY: + description: Medication list entry + meaning: OMOP:38000178 + PHYSICIAN ADMINISTERED DRUG (IDENTIFIED AS PROCEDURE): + description: Physician administered drug (identified as procedure) + meaning: OMOP:38000179 + INPATIENT ADMINISTRATION: + description: Inpatient administration + meaning: OMOP:38000180 + DRUG ERA - 0 DAYS PERSISTENCE WINDOW: + description: Drug era - 0 days persistence window + meaning: OMOP:38000181 + DRUG ERA - 30 DAYS PERSISTENCE WINDOW: + description: Drug era - 30 days persistence window + meaning: OMOP:38000182 + PHYSICIAN ADMINISTERED DRUG (IDENTIFIED FROM EHR PROBLEM LIST): + description: Physician administered drug (identified from EHR problem list) + meaning: OMOP:43542356 + PHYSICIAN ADMINISTERED DRUG (IDENTIFIED FROM REFERRAL RECORD): + description: Physician administered drug (identified from referral record) + meaning: OMOP:43542357 + PHYSICIAN ADMINISTERED DRUG (IDENTIFIED FROM EHR OBSERVATION): + description: Physician administered drug (identified from EHR observation) + meaning: OMOP:43542358 + + DrugRouteEnum: + description: Routes of drug administration. + comments: OMOP contains 165 standard values; `select * from concept where domain_id = 'Route' and invalid_reason is null and standard_concept is not null;` from SNOMED. Do we need descriptions beyond the name? + permissible_values: + ARTERIOVENOUS FISTULA: + description: Arteriovenous fistula + meaning: OMOP:44783786 + HAEMODIAFILTRATION: + description: Haemodiafiltration + meaning: OMOP:44801748 + SUBLESIONAL: + description: Sublesional + meaning: OMOP:46270168 + INTRANEURAL: + description: Intraneural + meaning: OMOP:46272911 + INTRAMURAL: + description: Intramural + meaning: OMOP:46272926 + INTRACATHETER INSTILLATION: + description: Intracatheter instillation + meaning: OMOP:605428 + SUBLABIAL: + description: Sublabial + meaning: OMOP:600817 + INTRA-ARTICULAR: + description: Intra-articular + meaning: OMOP:4006860 + INTRADIALYTIC: + description: Intradialytic + meaning: OMOP:618805 + ARTERIOVENOUS GRAFT: + description: Arteriovenous graft + meaning: OMOP:762840 + OTIC: + description: Otic + meaning: OMOP:4023156 + ORAL: + description: Oral + meaning: OMOP:4132161 + VAGINAL: + description: Vaginal + meaning: OMOP:4057765 + ROUTE OF ADMINISTRATION VALUE: + description: Route of administration value + meaning: OMOP:4106215 + GASTROSTOMY: + description: Gastrostomy + meaning: OMOP:4132254 + NASOGASTRIC: + description: Nasogastric + meaning: OMOP:4132711 + JEJUNOSTOMY: + description: Jejunostomy + meaning: OMOP:4133177 + SUBCUTANEOUS: + description: Subcutaneous + meaning: OMOP:4142048 + GINGIVAL: + description: Gingival + meaning: OMOP:4156704 + INTRACARDIAC: + description: Intracardiac + meaning: OMOP:4156705 + INTRADERMAL: + description: Intradermal + meaning: OMOP:4156706 + INTRAPLEURAL: + description: Intrapleural + meaning: OMOP:4156707 + PERIARTICULAR: + description: Periarticular + meaning: OMOP:4156708 + ENDOSINUSIAL: + description: Endosinusial + meaning: OMOP:4157756 + INTRACAVERNOUS: + description: Intracavernous + meaning: OMOP:4157757 + INTRALESIONAL: + description: Intralesional + meaning: OMOP:4157758 + INTRALYMPHATIC: + description: Intralymphatic + meaning: OMOP:4157759 + INTRAOCULAR: + description: Intraocular + meaning: OMOP:4157760 + PERINEURAL: + description: Perineural + meaning: OMOP:4157761 + INTRACRANIAL: + description: Intracranial + meaning: OMOP:4171079 + DENTAL: + description: Dental + meaning: OMOP:4163765 + INTRAAMNIOTIC: + description: Intraamniotic + meaning: OMOP:4163767 + INTRABURSAL: + description: Intrabursal + meaning: OMOP:4163768 + INTRADISCAL: + description: Intradiscal + meaning: OMOP:4163769 + SUBCONJUNCTIVAL: + description: Subconjunctival + meaning: OMOP:4163770 + MUCOUS FISTULA: + description: Mucous fistula + meaning: OMOP:4171243 + INTRAPROSTATIC: + description: Intraprostatic + meaning: OMOP:4171725 + INTRAVENOUS PERIPHERAL: + description: Intravenous peripheral + meaning: OMOP:4171884 + PERIOSTEAL: + description: Periosteal + meaning: OMOP:4171893 + ESOPHAGOSTOMY: + description: Esophagostomy + meaning: OMOP:4172191 + NASODUODENAL: + description: Nasoduodenal + meaning: OMOP:4172316 + PERCUTANEOUS: + description: Percutaneous + meaning: OMOP:4177987 + SUBORBITAL: + description: Suborbital + meaning: OMOP:4166865 + INTRATHORACIC: + description: Intrathoracic + meaning: OMOP:4167393 + ENTERAL: + description: Enteral + meaning: OMOP:4167540 + INTRAMYOMETRIAL: + description: Intramyometrial + meaning: OMOP:4168038 + COLOSTOMY: + description: Colostomy + meaning: OMOP:4168047 + INTRATYMPANIC: + description: Intratympanic + meaning: OMOP:4168656 + GASTRO-INTESTINAL STOMA: + description: Gastro-intestinal stoma + meaning: OMOP:4168665 + INTRAPULMONARY: + description: Intrapulmonary + meaning: OMOP:4169270 + INTRASINAL: + description: Intrasinal + meaning: OMOP:4169440 + TUMOR CAVITY: + description: Tumor cavity + meaning: OMOP:4169472 + SUBMUCOSAL: + description: Submucosal + meaning: OMOP:4169634 + INTRADUCTAL: + description: Intraductal + meaning: OMOP:4170083 + INTRAVENOUS CENTRAL: + description: Intravenous central + meaning: OMOP:4170113 + PARAVERTEBRAL: + description: Paravertebral + meaning: OMOP:4170267 + UROSTOMY: + description: Urostomy + meaning: OMOP:4170435 + LARYNGEAL: + description: Laryngeal + meaning: OMOP:4170440 + SURGICAL CAVITY: + description: Surgical cavity + meaning: OMOP:4170771 + INTRAVENOUS: + description: Intravenous + meaning: OMOP:4171047 + INTRATESTICULAR: + description: Intratesticular + meaning: OMOP:4171067 + ENDOCERVICAL: + description: Endocervical + meaning: OMOP:4186831 + ENDOTRACHEOPULMONARY: + description: Endotracheopulmonary + meaning: OMOP:4186832 + EXTRA-AMNIOTIC: + description: Extra-amniotic + meaning: OMOP:4186833 + GASTROENTERAL: + description: Gastroenteral + meaning: OMOP:4186834 + INTRACERVICAL: + description: Intracervical + meaning: OMOP:4186835 + INTRACORONARY: + description: Intracoronary + meaning: OMOP:4186836 + INTRASTERNAL: + description: Intrasternal + meaning: OMOP:4186837 + INTRAVESICAL: + description: Intravesical + meaning: OMOP:4186838 + OROMUCOSAL: + description: Oromucosal + meaning: OMOP:4186839 + CAUDAL: + description: Caudal + meaning: OMOP:4220455 + BUCCAL: + description: Buccal + meaning: OMOP:4181897 + OPHTHALMIC: + description: Ophthalmic + meaning: OMOP:4184451 + BODY CAVITY: + description: Body cavity + meaning: OMOP:4222254 + INTRAOSSEOUS: + description: Intraosseous + meaning: OMOP:4213522 + INTRAVENTRICULAR ROUTE - CARDIAC: + description: Intraventricular route - cardiac + meaning: OMOP:4222259 + INTRABILIARY: + description: Intrabiliary + meaning: OMOP:4223965 + INTRACEREBROVENTRICULAR: + description: Intracerebroventricular + meaning: OMOP:4224886 + INTRATHECAL: + description: Intrathecal + meaning: OMOP:4217202 + EPIDURAL: + description: Epidural + meaning: OMOP:4225555 + INTRATRACHEAL: + description: Intratracheal + meaning: OMOP:4229543 + URETHRAL: + description: Urethral + meaning: OMOP:4233974 + TRANSMUCOSAL: + description: Transmucosal + meaning: OMOP:4232601 + TRANSDERMAL: + description: Transdermal + meaning: OMOP:4262099 + INTRA-ARTERIAL: + description: Intra-arterial + meaning: OMOP:4240824 + INTRAPERITONEAL: + description: Intraperitoneal + meaning: OMOP:4243022 + INTRAMEDULLARY: + description: Intramedullary + meaning: OMOP:4246511 + INTRAUTERINE: + description: Intrauterine + meaning: OMOP:4269621 + NASAL: + description: Nasal + meaning: OMOP:4262914 + TOPICAL: + description: Topical + meaning: OMOP:4263689 + RECTAL: + description: Rectal + meaning: OMOP:4290759 + SUBLINGUAL: + description: Sublingual + meaning: OMOP:4292110 + INTRALUMINAL: + description: Intraluminal + meaning: OMOP:4292410 + TRANSCERVICAL: + description: Transcervical + meaning: OMOP:4304730 + INTRAABDOMINAL: + description: Intraabdominal + meaning: OMOP:4304882 + TRANSURETHRAL: + description: Transurethral + meaning: OMOP:4305382 + PERITENDINOUS: + description: Peritendinous + meaning: OMOP:4305564 + ILEOSTOMY: + description: Ileostomy + meaning: OMOP:4305679 + INTRACORNEAL: + description: Intracorneal + meaning: OMOP:4305690 + NASOJEJUNAL: + description: Nasojejunal + meaning: OMOP:4305834 + INTRACISTERNAL: + description: Intracisternal + meaning: OMOP:4305993 + SUBGINGIVAL: + description: Subgingival + meaning: OMOP:4306649 + INTRAOVARIAN: + description: Intraovarian + meaning: OMOP:4306657 + INTERSTITIAL: + description: Interstitial + meaning: OMOP:4327128 + INTRASYNOVIAL: + description: Intrasynovial + meaning: OMOP:4302352 + INTRADUODENAL: + description: Intraduodenal + meaning: OMOP:4302354 + SUBTENDINOUS: + description: Subtendinous + meaning: OMOP:4302493 + INTRAMUSCULAR: + description: Intramuscular + meaning: OMOP:4302612 + INTRAVITREAL: + description: Intravitreal + meaning: OMOP:4302785 + INTRASPINAL: + description: Intraspinal + meaning: OMOP:4302788 + INTRABRONCHIAL: + description: Intrabronchial + meaning: OMOP:4303263 + OROPHARYNGEAL: + description: Oropharyngeal + meaning: OMOP:4303277 + INTRACAMERAL: + description: Intracameral + meaning: OMOP:4303409 + PARACERVICAL: + description: Paracervical + meaning: OMOP:4303515 + PERIURETHRAL: + description: Periurethral + meaning: OMOP:4303646 + INTRACORONAL: + description: Intracoronal + meaning: OMOP:4303667 + RETROBULBAR: + description: Retrobulbar + meaning: OMOP:4303673 + INTRACARTILAGINOUS: + description: Intracartilaginous + meaning: OMOP:4303676 + OROGASTRIC: + description: Orogastric + meaning: OMOP:4303795 + INTRATENDINOUS: + description: Intratendinous + meaning: OMOP:4303939 + PERIBULBAR: + description: Peribulbar + meaning: OMOP:4304274 + FISTULA: + description: Fistula + meaning: OMOP:4304277 + SURGICAL DRAIN: + description: Surgical drain + meaning: OMOP:4304412 + URETERAL: + description: Ureteral + meaning: OMOP:4304571 + EPILESIONAL: + description: Epilesional + meaning: OMOP:35608078 + EXTRACORPOREAL HEMODIALYSIS: + description: Extracorporeal hemodialysis + meaning: OMOP:35624178 + SUPRACHOROIDAL: + description: Suprachoroidal + meaning: OMOP:37174548 + EXTRACORPOREAL: + description: Extracorporeal + meaning: OMOP:37018288 + INTRACORPORUS CAVERNOSUM: + description: Intracorporus cavernosum + meaning: OMOP:37174549 + INTRAGLANDULAR: + description: Intraglandular + meaning: OMOP:37207460 + INTRACHOLANGIOPANCREATIC: + description: Intracholangiopancreatic + meaning: OMOP:37207461 + INTRAPORTAL: + description: Intraportal + meaning: OMOP:37207462 + PERITUMORAL: + description: Peritumoral + meaning: OMOP:37207463 + POSTERIOR JUXTASCLERAL: + description: Posterior juxtascleral + meaning: OMOP:37207464 + SUBRETINAL: + description: Subretinal + meaning: OMOP:37207465 + INFILTRATION: + description: Infiltration + meaning: OMOP:37397638 + TRANSENDOCARDIAL: + description: Transendocardial + meaning: OMOP:40487850 + TRANSPLACENTAL: + description: Transplacental + meaning: OMOP:40487858 + INTRAEPIDERMAL: + description: Intraepidermal + meaning: OMOP:40487983 + INTRACEREBRAL: + description: Intracerebral + meaning: OMOP:40488317 + INTRAJEJUNAL: + description: Intrajejunal + meaning: OMOP:40489989 + INTRACOLONIC: + description: Intracolonic + meaning: OMOP:40489990 + CUTANEOUS: + description: Cutaneous + meaning: OMOP:40490507 + INTRAILEAL: + description: Intraileal + meaning: OMOP:40490837 + PERIODONTAL: + description: Periodontal + meaning: OMOP:40490866 + PERIDURAL: + description: Peridural + meaning: OMOP:40490896 + LOWER RESPIRATORY TRACT: + description: Lower respiratory tract + meaning: OMOP:40490898 + INTRAMAMMARY: + description: Intramammary + meaning: OMOP:40491321 + INTRATUMOR: + description: Intratumor + meaning: OMOP:40491322 + TRANSTYMPANIC: + description: Transtympanic + meaning: OMOP:40491830 + TRANSTRACHEAL: + description: Transtracheal + meaning: OMOP:40491832 + INTRAESOPHAGEAL: + description: Intraesophageal + meaning: OMOP:40492284 + INTRAGINGIVAL: + description: Intragingival + meaning: OMOP:40492286 + INTRAVASCULAR: + description: Intravascular + meaning: OMOP:40492287 + INTRADURAL: + description: Intradural + meaning: OMOP:40492288 + INTRAMENINGEAL: + description: Intrameningeal + meaning: OMOP:40492300 + INTRAGASTRIC: + description: Intragastric + meaning: OMOP:40492301 + INTRAPERICARDIAL: + description: Intrapericardial + meaning: OMOP:40492305 + INTRALINGUAL: + description: Intralingual + meaning: OMOP:40493227 + RESPIRATORY TRACT: + description: Respiratory tract + meaning: OMOP:40486069 + INTRAHEPATIC: + description: Intrahepatic + meaning: OMOP:40493258 + CONJUNCTIVAL: + description: Conjunctival + meaning: OMOP:40486444 + INTRAEPICARDIAL: + description: Intraepicardial + meaning: OMOP:40487473 + DIGESTIVE TRACT: + description: Digestive tract + meaning: OMOP:40487501 + OCULAR: + description: Ocular + meaning: OMOP:40549429 + + DeviceExposureConceptEnum: + description: Device codes from SNOMED. + see_also: + - https://bioregistry.io/registry/snomedct + - https://terminology.hl7.org/3.1.0/CodeSystem-v3-snomed-CT.html + - https://www.nlm.nih.gov/healthit/snomedct/index.html + - urn:oid:2.16.840.1.113883.6.96 + reachable_from: + source_ontology: bioregistry:snomedct + pv_formula: LABEL + + DeviceExposureProvenanceEnum: + description: Source of device exposure record + comments: Taken from OMOP Type Concept Domain + permissible_values: + CASE REPORT FORM: + description: Case Report Form + meaning: OMOP:32809 + CLAIM: + description: Claim + meaning: OMOP:32810 + CLAIM AUTHORIZATION: + description: Claim authorization + meaning: OMOP:32811 + CLAIM DISCHARGE RECORD: + description: Claim discharge record + meaning: OMOP:32812 + CLAIM ENROLMENT RECORD: + description: Claim enrolment record + meaning: OMOP:32813 + COST RECORD: + description: Cost record + meaning: OMOP:32814 + DEATH CERTIFICATE: + description: Death Certificate + meaning: OMOP:32815 + DENTAL CLAIM: + description: Dental claim + meaning: OMOP:32816 + EHR: + description: EHR + meaning: OMOP:32817 + EHR ADMINISTRATION RECORD: + description: EHR administration record + meaning: OMOP:32818 + EHR ADMISSION NOTE: + description: EHR admission note + meaning: OMOP:32819 + EHR ANCILLARY REPORT: + description: EHR ancillary report + meaning: OMOP:32820 + EHR BILLING RECORD: + description: EHR billing record + meaning: OMOP:32821 + EHR CHIEF COMPLAINT: + description: EHR chief complaint + meaning: OMOP:32822 + EHR DISCHARGE RECORD: + description: EHR discharge record + meaning: OMOP:32823 + EHR DISCHARGE SUMMARY: + description: EHR discharge summary + meaning: OMOP:32824 + EHR DISPENSING RECORD: + description: EHR dispensing record + meaning: OMOP:32825 + EHR EMERGENCY ROOM NOTE: + description: EHR emergency room note + meaning: OMOP:32826 + EHR ENCOUNTER RECORD: + description: EHR encounter record + meaning: OMOP:32827 + EHR EPISODE RECORD: + description: EHR episode record + meaning: OMOP:32828 + EHR INPATIENT NOTE: + description: EHR inpatient note + meaning: OMOP:32829 + EHR MEDICATION LIST: + description: EHR medication list + meaning: OMOP:32830 + EHR NOTE: + description: EHR note + meaning: OMOP:32831 + EHR NURSING REPORT: + description: EHR nursing report + meaning: OMOP:32832 + EHR ORDER: + description: EHR order + meaning: OMOP:32833 + EHR OUTPATIENT NOTE: + description: EHR outpatient note + meaning: OMOP:32834 + EHR PATHOLOGY REPORT: + description: EHR Pathology report + meaning: OMOP:32835 + EHR PHYSICAL EXAMINATION: + description: EHR physical examination + meaning: OMOP:32836 + EHR PLANNED DISPENSING RECORD: + description: EHR planned dispensing record + meaning: OMOP:32837 + EHR PERSCRIPTION: + description: EHR prescription + meaning: OMOP:32838 + EHR PERSCRIPTION ISSUE RECORD: + description: EHR prescription issue record + meaning: OMOP:32839 + EHR PROBLEM LIST: + description: EHR problem list + meaning: OMOP:32840 + EHR RADIOLOGY REPORT: + description: EHR radiology report + meaning: OMOP:32841 + EHR REFERRAL RECORD: + description: EHR referral record + meaning: OMOP:32842 + EXTERNAL CDM INSTANCE: + description: External CDM instance + meaning: OMOP:32843 + FACILITY CLAIM: + description: Facility claim + meaning: OMOP:32844 + FACILITY CLAIM DETAIL: + description: Facility claim detail + meaning: OMOP:32845 + FACILITY CLAIM HEADER: + description: Facility claim header + meaning: OMOP:32846 + GEOGRAPHIC ISOLATION RECORD: + description: Geographic isolation record + meaning: OMOP:32847 + GOVERNMENT REPORT: + description: Government report + meaning: OMOP:32848 + HEALTH INFORMATION EXCHANGE RECORD: + description: Health Information Exchange record + meaning: OMOP:32849 + HEALTH RISK ASSESSMENT: + description: Health Risk Assessment + meaning: OMOP:32850 + HEALTHCARE PROFESSIONAL FILLED SURVEY: + description: Healthcare professional filled survey + meaning: OMOP:32851 + HOSPITAL COST: + description: Hospital cost + meaning: OMOP:32852 + INPATIENT CLAIM: + description: Inpatient claim + meaning: OMOP:32853 + INPATIENT CLAIM DETAIL: + description: Inpatient claim detail + meaning: OMOP:32854 + INPATIENT CLAIM HEADER: + description: Inpatient claim header + meaning: OMOP:32855 + LAB: + description: Lab + meaning: OMOP:32856 + MAIL ORDER RECORD: + description: Mail order record + meaning: OMOP:32857 + NLP: + description: NLP + meaning: OMOP:32858 + OUTPATIENT CLAIM: + description: Outpatient claim + meaning: OMOP:32859 + OUTPATIENT CLAIM DETAIL: + description: Outpatient claim detail + meaning: OMOP:32860 + OUTPATIENT CLAIM HEADER: + description: Outpatient claim header + meaning: OMOP:32861 + PATIENT FILLED SURVEY: + description: Patient filled survey + meaning: OMOP:32862 + PATIENT OR PAYER PAID RECORD: + description: Patient or payer paid record + meaning: OMOP:32863 + PATIENT REPORTED COST: + description: Patient reported cost + meaning: OMOP:32864 + PATIENT SELF-REPORT: + description: Patient self-report + meaning: OMOP:32865 + PATIENT SELF-TESTED: + description: Patient self-tested + meaning: OMOP:705183 + PAYER SYSTEM RECORD (PAID PREMIUM): + description: Payer system record (paid premium) + meaning: OMOP:32866 + PAYER SYSTEM RECORD (PRIMARY PAYER): + description: Payer system record (primary payer) + meaning: OMOP:32867 + PAYER SYSTEM RECORD (SECONDARY PAYER): + description: Payer system record (secondary payer) + meaning: OMOP:32868 + PHARMACY CLAIM: + description: Pharmacy claim + meaning: OMOP:32869 + POINT OF CARE/EXPRESS LAB: + description: Point of care/express lab + meaning: OMOP:703249 + PRE-QUALIFICATION TIME PERIOD: + description: Pre-qualification time period + meaning: OMOP:32870 + PROFESSIONAL CLAIM: + description: Professional claim + meaning: OMOP:32871 + PROFESSIONAL CLAIM DETAIL: + description: Professional claim detail + meaning: OMOP:32872 + PROFESSIONAL CLAIM HEADER: + description: Professional claim header + meaning: OMOP:32873 + PROVIDER CHARGE LIST PRICE: + description: Provider charge list price + meaning: OMOP:32874 + PROVIDER FINANCIAL SYSTEM: + description: Provider financial system + meaning: OMOP:32875 + PROVIDER INCURRED COST RECORD: + description: Provider incurred cost record + meaning: OMOP:32876 + RANDOMIZATION RECORD: + description: Randomization record + meaning: OMOP:32877 + REFERENCE LAB: + description: Reference lab + meaning: OMOP:32878 + REGISTRY: + description: Registry + meaning: OMOP:32879 + STANDARD ALGORITHM: + description: Standard algorithm + meaning: OMOP:32880 + STANDARD ALGORITHM FROM CLAIMS: + description: Standard algorithm from claims + meaning: OMOP:32881 + STANDARD ALGORITHM FROM EHR: + description: Standard algorithm from EHR + meaning: OMOP:32882 + SURVEY: + description: Survey + meaning: OMOP:32883 + URGENT LAB: + description: Urgent lab + meaning: OMOP:32884 + US SOCIAL SECURITY DEATH MASTER FILE: + description: US Social Security Death Master File + meaning: OMOP:32885 + VISION CLAIM: + description: Vision claim + meaning: OMOP:32886 + + SpecimenTypeEnum: + name: SpecimenTypeEnum + description: A high-level type of specimen, based on its derivation provenance (i.e. how far removed it is from the original sample extracted from a source). + permissible_values: + ALIQUOT: + text: ALIQUOT + description: A specimen that results from the division of some parent specimen into equal amounts for downstream analysis. + ANALYTE: + text: ANALYTE + description: A specimen generated through the extraction of a specified class of substance/chemical (e.g. DNA, RNA, protein) from a parent specimen, which is stored in solution as an analyte. + FRESH_SPECIMEN: + text: FRESH_SPECIMEN + description: A specimen representing the material that was directly collected from a subject (i.e. not generated through portioning, aliquoting, or analyte extraction from an existing specimen). + PORTION: + text: PORTION + description: A physical sub-part taken from an existing specimen. + SLIDE: + text: SLIDE + description: A specimen that is mounted on a slide or coverslip for microscopic analysis. + + AnalyteTypeEnum: + name: AnalyteTypeEnum + permissible_values: + FFPE DNA: + text: FFPE DNA + description: Formalin-Fixed Paraffin-Embedded DNA + Repli-G (Qiagen) DNA: + text: Repli-G (Qiagen) DNA + description: Repli-G (Qiagen) DNA + GenomePlex (Rubicon) Amplified DNA: + text: GenomePlex (Rubicon) Amplified DNA + Total RNA: + text: Total RNA + description: Total Ribonucleic Acid + Repli-G X (Qiagen) DNA: + text: Repli-G X (Qiagen) DNA + description: Repli-G X (Qiagen) DNA + RNA: + text: RNA + description: Ribonucleic Acid + Repli-G Pooled (Qiagen) DNA: + text: Repli-G Pooled (Qiagen) DNA + description: REPLI-g Pooled DNA + DNA: + text: DNA + description: DNA + EBV Immortalized Normal: + text: EBV Immortalized Normal + description: Normal Epstein-Barr Virus Immortalization + FFPE RNA: + text: FFPE RNA + description: Formalin-Fixed Paraffin-Embedded RNA + Protein: + text: Protein + description: Protein + Nuclei RNA: + text: Nuclei RNA + cfDNA: + text: cfDNA + + SourceMaterialTypeEnum: + name: SourceMaterialTypeEnum + permissible_values: + ADDITIONAL_METASTATIC: + text: ADDITIONAL_METASTATIC + ADDITIONAL_NEW_PRIMARY: + text: ADDITIONAL_NEW_PRIMARY + BENIGN_NEOPLASMS: + text: BENIGN_NEOPLASMS + BLOOD_DERIVED_CANCER_BONE_MARROW: + text: BLOOD_DERIVED_CANCER_BONE_MARROW + BLOOD_DERIVED_CANCER_BONE_MARROW_POST_TREATMENT: + text: BLOOD_DERIVED_CANCER_BONE_MARROW_POST_TREATMENT + BLOOD_DERIVED_CANCER_PERIPHERAL_BLOOD: + text: BLOOD_DERIVED_CANCER_PERIPHERAL_BLOOD + BLOOD_DERIVED_CANCER_PERIPHERAL_BLOOD_POST_TREATMENT: + text: BLOOD_DERIVED_CANCER_PERIPHERAL_BLOOD_POST_TREATMENT + BLOOD_DERIVED_LIQUID_BIOPSY: + text: BLOOD_DERIVED_LIQUID_BIOPSY + BLOOD_DERIVED_NORMAL: + text: BLOOD_DERIVED_NORMAL + BONE_MARROW_NORMAL: + text: BONE_MARROW_NORMAL + BUCCAL_CELL_NORMAL: + text: BUCCAL_CELL_NORMAL + CELL_LINE_DERIVED_XENOGRAFT_TISSUE: + text: CELL_LINE_DERIVED_XENOGRAFT_TISSUE + CELL_LINES: + text: CELL_LINES + CONTROL_ANALYTE: + text: CONTROL_ANALYTE + DNA: + text: DNA + EBV_IMMORTALIZED_NORMAL: + text: EBV_IMMORTALIZED_NORMAL + EXPANDED_NEXT_GENERATION_CANCER_MODEL: + text: EXPANDED_NEXT_GENERATION_CANCER_MODEL + FFPE_RECURRENT: + text: FFPE_RECURRENT + FFPE_SCROLLS: + text: FFPE_SCROLLS + FIBROBLASTS_FROM_BONE_MARROW_NORMAL: + text: FIBROBLASTS_FROM_BONE_MARROW_NORMAL + GRANULOCYTES: + text: GRANULOCYTES + HUMAN_TUMOR_ORIGINAL_CELLS: + text: HUMAN_TUMOR_ORIGINAL_CELLS + IN_SITU_NEOPLASMS: + text: IN_SITU_NEOPLASMS + LYMPHOID_NORMAL: + text: LYMPHOID_NORMAL + METASTATIC: + text: METASTATIC + MIXED_ADHERENT_SUSPENSION: + text: MIXED_ADHERENT_SUSPENSION + MONONUCLEAR_CELLS_FROM_BONE_MARROW_NORMAL: + text: MONONUCLEAR_CELLS_FROM_BONE_MARROW_NORMAL + NEOPLASMS_OF_UNCERTAIN_AND_UNKNOWN_BEHAVIOR: + text: NEOPLASMS_OF_UNCERTAIN_AND_UNKNOWN_BEHAVIOR + NEXT_GENERATION_CANCER_MODEL: + text: NEXT_GENERATION_CANCER_MODEL + NORMAL_ADJACENT_TISSUE: + text: NORMAL_ADJACENT_TISSUE + PLEURAL_EFFUSION: + text: PLEURAL_EFFUSION + POST_NEOADJUVANT_THERAPY: + text: POST_NEOADJUVANT_THERAPY + PRIMARY_BLOOD_DERIVED_CANCER_BONE_MARROW: + text: PRIMARY_BLOOD_DERIVED_CANCER_BONE_MARROW + PRIMARY_BLOOD_DERIVED_CANCER_PERIPHERAL_BLOOD: + text: PRIMARY_BLOOD_DERIVED_CANCER_PERIPHERAL_BLOOD + PRIMARY_TUMOR: + text: PRIMARY_TUMOR + PRIMARY_XENOGRAFT_TISSUE: + text: PRIMARY_XENOGRAFT_TISSUE + RECURRENT_BLOOD_DERIVED_CANCER_BONE_MARROW: + text: RECURRENT_BLOOD_DERIVED_CANCER_BONE_MARROW + RECURRENT_BLOOD_DERIVED_CANCER_PERIPHERAL_BLOOD: + text: RECURRENT_BLOOD_DERIVED_CANCER_PERIPHERAL_BLOOD + RECURRENT_TUMOR: + text: RECURRENT_TUMOR + RNA: + text: RNA + SALIVA: + text: SALIVA + SLIDES: + text: SLIDES + SOLID_TISSUE_NORMAL: + text: SOLID_TISSUE_NORMAL + TOTAL_RNA: + text: TOTAL_RNA + TUMOR: + text: TUMOR + TUMOR_ADJACENT_NORMAL_POST_NEOADJUVANT_THERAPY: + text: TUMOR_ADJACENT_NORMAL_POST_NEOADJUVANT_THERAPY + XENOGRAFT_TISSUE: + text: XENOGRAFT_TISSUE + NOT_ALLOWED_TO_COLLECT: + text: NOT_ALLOWED_TO_COLLECT + NOT_REPORTED: + text: NOT_REPORTED + UNKNOWN: + text: UNKNOWN + + SectionLocationEnum: + name: SectionLocationEnum + description: The location in a parent specimen from which a section/portion was excised. + permissible_values: + BOTTOM: + text: BOTTOM + description: The part of a specimen designated as its 'bottom' based on specified orientation criteria. + TOP: + text: TOP + description: The part of a specimen designated as its 'top' based on specified orientation criteria. + UNKNOWN: + text: UNKNOWN + description: An unknown location on a specimen. + + SpecimenCreationActivityTypeEnum: + name: SpecimenCreationActivityTypeEnum + description: The high-level type of activity through which the specimen was generated (i.e. via collection from the original source, or via derivation from an existing specimen) + permissible_values: + COLLECTION_FROM_SOURCE: + text: COLLECTION_FROM_SOURCE + description: An activity that collects an initial sample directly from a subject / source. + DERIVATION_FROM_SPECIMEN: + text: DERIVATION_FROM_SPECIMEN + description: An activity that derives a new specimen from an existing one. + + SpecimenCollectionMethodType: + name: SpecimenCollectionMethodType + permissible_values: + ORCHIECTOMY: + text: ORCHIECTOMY + METASTASECTOMY: + text: METASTASECTOMY + AUTOPSY: + text: AUTOPSY + UNKNOWN: + text: UNKNOWN + ASPIRATE: + text: ASPIRATE + RIGHT_HEMICOLECTOMY: + text: RIGHT_HEMICOLECTOMY + INCISIONAL_BIOPSY: + text: INCISIONAL_BIOPSY + BLOOD_DRAW: + text: BLOOD_DRAW + PERITONEAL_LAVAGE: + text: PERITONEAL_LAVAGE + OPEN_RADICAL_PROSTATECTOMY: + text: OPEN_RADICAL_PROSTATECTOMY + ABDOMINO_PERINEAL_RESECTION_OF_RECTUM: + text: ABDOMINO_PERINEAL_RESECTION_OF_RECTUM + SALPINGECTOMY: + text: SALPINGECTOMY + ENDO_RECTAL_TUMOR_RESECTION: + text: ENDO_RECTAL_TUMOR_RESECTION + BIOPSY: + text: BIOPSY + SALPINGO_OOPHORECTOMY: + text: SALPINGO_OOPHORECTOMY + NOT_ALLOWED_TO_COLLECT: + text: NOT_ALLOWED_TO_COLLECT + WHIPPLE_PROCEDURE: + text: WHIPPLE_PROCEDURE + ENUCLEATION: + text: ENUCLEATION + MODIFIED_RADICAL_MASTECTOMY: + text: MODIFIED_RADICAL_MASTECTOMY + PARACENTESIS: + text: PARACENTESIS + OPEN_CRANIOTOMY: + text: OPEN_CRANIOTOMY + WEDGE_RESECTION: + text: WEDGE_RESECTION + LAPAROSCOPIC_RADICAL_NEPHRECTOMY: + text: LAPAROSCOPIC_RADICAL_NEPHRECTOMY + OPEN_PARTIAL_NEPHRECTOMY: + text: OPEN_PARTIAL_NEPHRECTOMY + TRANSURETHRAL_RESECTION: + text: TRANSURETHRAL_RESECTION + SIGMOID_COLECTOMY: + text: SIGMOID_COLECTOMY + OOPHORECTOMY: + text: OOPHORECTOMY + TOTAL_HEPATECTOMY: + text: TOTAL_HEPATECTOMY + INDETERMINANT: + text: INDETERMINANT + SUBTOTAL_RESECTION: + text: SUBTOTAL_RESECTION + LEFT_HEMICOLECTOMY: + text: LEFT_HEMICOLECTOMY + NEEDLE_BIOPSY: + text: NEEDLE_BIOPSY + OTHER: + text: OTHER + PANCREATECTOMY: + text: PANCREATECTOMY + THORACOSCOPIC_BIOPSY: + text: THORACOSCOPIC_BIOPSY + TOTAL_MASTECTOMY: + text: TOTAL_MASTECTOMY + EXCISIONAL_BIOPSY: + text: EXCISIONAL_BIOPSY + BONE_MARROW_ASPIRATE: + text: BONE_MARROW_ASPIRATE + LOCAL_RESECTION: + text: LOCAL_RESECTION + LOBECTOMY: + text: LOBECTOMY + FINE_NEEDLE_ASPIRATION: + text: FINE_NEEDLE_ASPIRATION + OMENTECTOMY: + text: OMENTECTOMY + TUMOR_RESECTION: + text: TUMOR_RESECTION + CYSTECTOMY: + text: CYSTECTOMY + GROSS_TOTAL_RESECTION: + text: GROSS_TOTAL_RESECTION + THORACENTESIS: + text: THORACENTESIS + ANTERIOR_RESECTION_OF_RECTUM: + text: ANTERIOR_RESECTION_OF_RECTUM + TRANSPLANT: + text: TRANSPLANT + LAPAROSCOPIC_PARTIAL_NEPHRECTOMY: + text: LAPAROSCOPIC_PARTIAL_NEPHRECTOMY + LAPAROSCOPIC_RADICAL_PROSTATECTOMY_WITH_ROBOTICS: + text: LAPAROSCOPIC_RADICAL_PROSTATECTOMY_WITH_ROBOTICS + PNEUMONECTOMY: + text: PNEUMONECTOMY + PAN_PROCTO_COLECTOMY: + text: PAN_PROCTO_COLECTOMY + HYSTERECTOMY_NOS: + text: HYSTERECTOMY_NOS + CORE_BIOPSY: + text: CORE_BIOPSY + SIMPLE_MASTECTOMY: + text: SIMPLE_MASTECTOMY + LUMPECTOMY: + text: LUMPECTOMY + ENDOSCOPIC_BIOPSY: + text: ENDOSCOPIC_BIOPSY + SIMPLE_HYSTERECTOMY: + text: SIMPLE_HYSTERECTOMY + LYMPHADENECTOMY: + text: LYMPHADENECTOMY + LAPAROSCOPIC_BIOPSY: + text: LAPAROSCOPIC_BIOPSY + TUMOR_DEBULKING: + text: TUMOR_DEBULKING + ASCITES_DRAINAGE: + text: ASCITES_DRAINAGE + ENDOSCOPIC_MUCOSAL_RESECTION: + text: ENDOSCOPIC_MUCOSAL_RESECTION + LAPAROSCOPIC_RADICAL_PROSTATECTOMY_WITHOUT_ROBOTICS: + text: LAPAROSCOPIC_RADICAL_PROSTATECTOMY_WITHOUT_ROBOTICS + TOTAL_COLECTOMY: + text: TOTAL_COLECTOMY + LIQUID_BIOPSY: + text: LIQUID_BIOPSY + RADICAL_HYSTERECTOMY: + text: RADICAL_HYSTERECTOMY + SURGICAL_RESECTION: + text: SURGICAL_RESECTION + OPEN_RADICAL_NEPHRECTOMY: + text: OPEN_RADICAL_NEPHRECTOMY + TRANSVERSE_COLECTOMY: + text: TRANSVERSE_COLECTOMY + HAND_ASSISTED_LAPAROSCOPIC_RADICAL_NEPHRECTOMY: + text: HAND_ASSISTED_LAPAROSCOPIC_RADICAL_NEPHRECTOMY + PUNCH_BIOPSY: + text: PUNCH_BIOPSY + PARTIAL_HEPATECTOMY: + text: PARTIAL_HEPATECTOMY + SUPRACERVICAL_HYSTERECTOMY: + text: SUPRACERVICAL_HYSTERECTOMY + OTHER_SURGICAL_RESECTION: + text: OTHER_SURGICAL_RESECTION + NOT_REPORTED: + text: NOT_REPORTED + FULL_HYSTERECTOMY: + text: FULL_HYSTERECTOMY + TONSILLECTOMY: + text: TONSILLECTOMY + SUPRAGLOTTIC_LARYNGECTOMY: + text: SUPRAGLOTTIC_LARYNGECTOMY + SUPERFICIAL_PAROTIDECTOMY: + text: SUPERFICIAL_PAROTIDECTOMY + LARYNGOPHARYNGECTOMY: + text: LARYNGOPHARYNGECTOMY + MAXILLECTOMY: + text: MAXILLECTOMY + PARTIAL_NEPHRECTOMY: + text: PARTIAL_NEPHRECTOMY + MANDIBULECTOMY: + text: MANDIBULECTOMY + BUCCAL_MUCOSAL_RESECTION: + text: BUCCAL_MUCOSAL_RESECTION + VERTICAL_HEMILARYNGECTOMY: + text: VERTICAL_HEMILARYNGECTOMY + TOTAL_NEPHRECTOMY: + text: TOTAL_NEPHRECTOMY + TOTAL_LARYNGECTOMY: + text: TOTAL_LARYNGECTOMY + TRANSORAL_LASER_EXCISION: + text: TRANSORAL_LASER_EXCISION + PAROTIDECTOMY_NOS: + text: PAROTIDECTOMY_NOS + RADICAL_MAXILLECTOMY: + text: RADICAL_MAXILLECTOMY + ENDOLARYNGEAL_EXCISION: + text: ENDOLARYNGEAL_EXCISION + PALATECTOMY: + text: PALATECTOMY + GLOSSECTOMY: + text: GLOSSECTOMY + PARTIAL_LARYNGECTOMY: + text: PARTIAL_LARYNGECTOMY + LYMPH_NODE_DISSECTION: + text: LYMPH_NODE_DISSECTION + RADICAL_PROSTATECTOMY: + text: RADICAL_PROSTATECTOMY + DEEP_PAROTIDECTOMY: + text: DEEP_PAROTIDECTOMY + SUBTOTAL_PROSTATECTOMY: + text: SUBTOTAL_PROSTATECTOMY + RADICAL_NEPHRECTOMY: + text: RADICAL_NEPHRECTOMY + SUPRACRICOID_LARYNGECTOMY: + text: SUPRACRICOID_LARYNGECTOMY + PARTIAL_MAXILLECTOMY: + text: PARTIAL_MAXILLECTOMY + + SpecimenQualityObservationTypeEnum: + name: SpecimenQualityObservationTypeEnum + description: Types of measurements that reflect the quality of a specimen or its suitability for use. + permissible_values: + A260_A280_RATIO: + text: A260_A280_RATIO + description: Ratio of absorbance measured at a wavelength of 260 over that at a wavelength of 280. + RIBOSOMAL_RNA_28S_16S_RATIO: + text: RIBOSOMAL_RNA_28S_16S_RATIO + description: Ratio of quantity of 28s RNA over that of 16s RNA. + + SpecimenQualityObservationMethodEnum: + name: SpecimenQualityObservationMethodEnum + description: A type of method used in determining the quantity of a specimen. + permissible_values: + UV_SPEC: + text: UV_SPEC + description: A technique used to measure light absorbance across the ultraviolet and visible ranges of the electromagnetic spectrum. + PICO_GREEN: + text: PICO_GREEN + description: A technique applying the Pico488 fluorescent sensor dye that is used for quantifying the amount of double-stranded DNA (dsDNA) present in a given sample. + + SpecimenQuantityObservationTypeEnum: + name: SpecimenQuantityObservationTypeEnum + description: Measures related to the quantity of a specimen or analyte it currently contains - e.g. its weight, volume, or concentration. + permissible_values: + WEIGHT: + text: WEIGHT + description: The current weight of the specimen, at the time of recording (as opposed to an initial weight before its processing or portioning). + VOLUME: + text: VOLUME + description: The current total volume of the specimen, at the time of recording. + CONCENTRATION: + text: CONCENTRATION + description: The concentration of an extracted analyte that is present in a specimen (specifically, in a specimen of type 'analyte', or an 'aliquot' derived from an analyte). For example, the concentration of DNA in a specimen created through extracting DNA from a blood sample. + + SpecimenProcessingActivityTypeEnum: + name: SpecimenProcessingActivityTypeEnum + description: The high-level type of processing activity performed. + permissible_values: + FIXATION: + text: FIXATION + description: A processing activity that applies chemicals to preserve biological tissues from decay due to autolysis or putrefaction + FREEZING: + text: FREEZING + description: A processing activity that aims to freeze a specimen. + MOUNTING: + text: MOUNTING + description: A processing activity that aims to secure a specimen or slide in place in preparation for further examination (usually via microscopy) + PRESERVATION: + text: PRESERVATION + description: A processing activity that aims to preserve a specimen. diff --git a/src/scripts/prefix_testing/prefix_test.py b/src/scripts/prefix_testing/prefix_test.py new file mode 100644 index 0000000..4f405a1 --- /dev/null +++ b/src/scripts/prefix_testing/prefix_test.py @@ -0,0 +1,62 @@ +from linkml.generators.yamlgen import YAMLGenerator +from linkml.generators.linkmlgen import LinkmlGenerator +from linkml_runtime.linkml_model import SchemaDefinition +from linkml_runtime.utils.schemaview import SchemaView + + +def save_schema(schema: SchemaDefinition, output_path: str) -> None: + # Use YAMLGenerator to generate YAML output + # lm_gen = YAMLGenerator(schema, format="yaml") + # yaml_text = lm_gen.serialize() + # + # # Write the generated YAML to the specified output file + # with open(output_path, "w", encoding="utf-8") as f: + # f.write(yaml_text) + # print(f"Schema saved to: {output_path}") + + lm_gen = LinkmlGenerator(output_path) + linkml_text = lm_gen.serialize() + with open("remodel.yaml", "w", encoding="utf-8") as f: + f.write(linkml_text) + +def save_linkml_schema(schema: SchemaDefinition, output_path: str) -> None: + # Create a LinkmlGenerator instance to generate the schema in LinkML YAML format + sv = SchemaView(schema) + print(sv.schema.prefixes) + + lml_gen = LinkmlGenerator(schema) + linkml_text = lml_gen.serialize() + + # Write the generated LinkML YAML to the specified output file + with open(output_path, "w", encoding="utf-8") as f: + f.write(linkml_text) + print(f"LinkML schema saved to: {output_path}") + +if __name__ == "__main__": + output_file = "equipment_schema.yaml" + + schema = SchemaDefinition( + name="EquipmentSchema", + description="Schema for equipment data", + id="equipment_schema", + default_prefix="equipment_schema" + ) + + schema.default_range = "string" + schema.prefixes = { + "equipment_schema": "https://example.org/equipment_schema/", + "linkml": "https://w3id.org/linkml/", + "xsd": "http://www.w3.org/2001/XMLSchema#" + } + + + # save_schema(schema, output_file) + # Call the function to generate and save the LinkML schema + + save_linkml_schema(schema, output_file) + + + # sv = SchemaView("cmdr.yaml") + # schemav = sv.schema + # print(type(schemav)) + # print(schemav.prefixes) \ No newline at end of file diff --git a/src/transformations/cmdr_to_bdc/cmdr_bdc_transform.py b/src/transformations/cmdr_to_bdc/cmdr_bdc_transform.py new file mode 100644 index 0000000..81c3d50 --- /dev/null +++ b/src/transformations/cmdr_to_bdc/cmdr_bdc_transform.py @@ -0,0 +1,65 @@ +"""Transformation script to convert CMDR schema to BDC schema""" +from linkml_map.datamodel.transformer_model import TransformationSpecification, ClassDerivation, SlotDerivation +from linkml_map.inference.schema_mapper import SchemaMapper +from linkml_runtime.utils.formatutils import camelcase, underscore +from linkml_runtime.dumpers import yaml_dumper +from linkml_runtime.utils.schemaview import SchemaView +from pathlib import Path + + +REPO_ROOT = Path.cwd().parent.parent.parent +print(REPO_ROOT) + + +def get_bdc_class_derivations(target_schemaview) -> dict: + """ + Function to get BDC class definitions + + :param target_schemaview: SchemaView object + :param subset_classes: List of classes to subset + :return: Dictionary of class derivations incl slot derivations + """ + # Example implementation to fetch class definitions + # This should be replaced with the actual implementation + class_derivations ={} + subset_classes = target_schemaview.all_classes() + for class_name in subset_classes: + class_derivation = ClassDerivation(populated_from=class_name, + name=camelcase(class_name)) + induced_slots = target_schemaview.class_induced_slots(class_name) + for slot in induced_slots: + print(slot.name) + slot_derivation = SlotDerivation(populated_from=slot.name, name=underscore(slot.name)) + class_derivation.slot_derivations[underscore(slot.name)] = slot_derivation + class_derivations[camelcase(class_name)] = class_derivation + return class_derivations + + +def main(): + """Main function to convert CMDR schema to BDC schema.""" + schema_path = REPO_ROOT / "src" / "cmdr" / "schema" / "cmdr.yaml" # Use quotes to denote string literals + bdc_raw = REPO_ROOT / "src" / "cmdr" / "schema" / "bdc.yaml" + cmdr_sv = SchemaView(schema_path) + bdc_sv = SchemaView(bdc_raw) + class_derivations = get_bdc_class_derivations(target_schemaview=bdc_sv) + ts = TransformationSpecification(class_derivations=class_derivations) + ts.title = "CMDR to BDC transformation" + ts.id = "cmdr_to_bdc" + + yaml_dumper.dump(ts, "cmdr_to_bdc_transformation_spec.yaml") + + mapper = SchemaMapper() + mapper.source_schemaview = cmdr_sv + + target_schema_obj = mapper.derive_schema( + specification=ts, target_schema_id="cmdr-bdc-schema", target_schema_name="CMDR_BDC_schema" + ) + + # ugly bit of hacking to demonstrate end-to-end functionality + target_schema_obj.types = cmdr_sv.all_types() + + yaml_dumper.dump(target_schema_obj, "cmdr_bdc_schema.yaml") + +if __name__ == "__main__": + """Entry point for the script.""" + main()