diff --git a/.DS_Store b/.DS_Store index c34a16f52..a422ca80f 100755 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index 8c2a3a12d..bcd69d2da 100755 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ share/python-wheels/ .installed.cfg *.egg MANIFEST +RELEASE.md # PyInstaller # Usually these files are written by a python script from a template diff --git a/MANIFEST.in b/MANIFEST.in index ba43eb4d7..941d1db45 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -22,7 +22,7 @@ prune src/fsh/input-cache prune src/fsh/temp prune src/fsh/template -# Common CI/dev folders you don't need in sdist (optional) +# Common CI/dev folders you don't need in sdist prune .github prune .git prune .venv diff --git a/README.md b/README.md index 5e07466f6..16a600fe8 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,7 @@

- RareLink logo + RareLink logo

-A novel rare disease framework for REDCap linking international -registries to FHIR and Phenopackets. - #### Framework [![Python CI](https://github.com/BIH-CEI/rarelink/actions/workflows/python_ci.yml/badge.svg)](https://github.com/BIH-CEI/rarelink/actions/workflows/python_ci.yml) @@ -12,7 +9,7 @@ registries to FHIR and Phenopackets. ![Python Versions](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12-blue) [![PyPI](https://img.shields.io/pypi/v/rarelink.svg)](https://pypi.org/project/rarelink/) [![Downloads](https://img.shields.io/pypi/dm/rarelink.svg?label=downloads)](https://pypi.org/project/rarelink/) -[![License: Apache v2.0](https://img.shields.io/badge/License-Apache2.0-yellow.svg)](https://opensource.org/licenses/MIT) +[![License: Apache v2.0](https://img.shields.io/badge/License-Apache2.0-yellow.svg)](https://github.com/BIH-CEI/rarelink/blob/develop/LICENSE) [![DOI](https://zenodo.org/badge/832241577.svg)](https://doi.org/10.5281/zenodo.14253810) #### Packages & Compatibility @@ -25,12 +22,15 @@ registries to FHIR and Phenopackets. [![FHIR IPS v2.0.0](https://img.shields.io/badge/FHIR_IPS-v2.0.0-purple)](https://build.fhir.org/ig/HL7/fhir-ips/) [![FHIR Genomics Reporting v3.0.0](https://img.shields.io/badge/FHIR_Genomics_Reporting-v3.0.0-yellow)](https://hl7.org/fhir/uv/genomics-reporting/STU3/general.html#findings) +A novel REDCap-based framework for rare disease interoperability linking +international registries to HL7 FHIR and GA4GH Phenopackets. The corresponding +paper was recently published in npj Genomic Medicine! +You can read it here: https://www.nature.com/articles/s41525-025-00534-z [-> This way to the RareLink documentation](https://rarelink.readthedocs.io/en/latest/) [-> This way to the RareLink FHIR Implementation Guide](https://bih-cei.github.io/rarelink/) -> **Note:** The paper has been submitted to a journal - you can find the preprint here: https://www.medrxiv.org/content/10.1101/2025.05.09.25327342v1 ________________________________________________________________________________ ## Table of Contents @@ -44,17 +44,19 @@ ________________________________________________________________________________ - [Resources](#resources-) - [License](#license) - [Acknowledgements](#acknowledgements) +- [Citing](#citing) ## Project Description -RareLink - A novel rare disease framework in REDCap that connects international -registries, FHIR, and Phenopackets. It provides comprehensive +RareLink is a novel rare disease framework based on REDCap that connects +international registries, FHIR, and Phenopackets. It provides comprehensive documentation and user guides to enable sustainable data management for your local rare disease REDCap project. Built on the [RD-CDM](https://rarelink.readthedocs.io/en/latest/1_background/1_5_rd_cdm.html), all RareLink-CDM pipelines are preconfigured to generate FHIR resources compliant with the [HL7 International Patient Summary](https://build.fhir.org/ig/HL7/fhir-ips/) +, [HL7 Genomics Reporting profiles](https://build.fhir.org/ig/HL7/genomics-reporting/) or validated GA4GH Phenopackets. For disease-specific extensions, detailed guides are available to help you develop sheets that integrate seamlessly with the RareLink framework. @@ -88,18 +90,16 @@ REDCap: data to the RareLink-CDM, which is in [LinkML](https://github.com/linkml/). This process includes syntactic mapping, local semantic encoding, validation, and data upload to REDCap for FHIR or Phenopacket export. -4. **Phenopacket Export**: Predefined configurations enable seamless export of - the RD-CDM data to validated Phenopackets utilising the [Phenopacket Mapper]((https://github.com/BIH-CEI/phenopacket_mapper)). - RareLink guides ensure compatibility for developing custom REDCap instruments - and [LinkML-based](https://github.com/linkml/) extensions. +4. **RareLink-Phenopacket Engine**: Predefined configurations enable seamless + export of the RD-CDM data and extensions to validated Phenopackets -> [User Guide](https://rarelink.readthedocs.io/en/latest/4_user_guide/4_3_phenopackets.html). 5. **HL7 FHIR Export**: RareLink uses the open-source [_toFHIR_ Engine](https://github.com/srdc/tofhir) to export data to any FHIR server, supporting profiles based on the - [HL7 International Patient Summary v2.0.2](https://build.fhir.org/ig/HL7/fhir-ips/), + [HL7 International Patient Summary v2.0.0](https://build.fhir.org/ig/HL7/fhir-ips/), the [HL7 GenomicsReporting v3.0.0](https://hl7.org/fhir/uv/genomics-reporting/STU3/index.html) - or FHIR Base Resources (v4.0.1). - - [FHIR Implementation Guide](https://bih-cei.github.io/rarelink/) -6. **RD-CDM Extensions**: [Guidelines for modeling and encoding custom data](https://rarelink.readthedocs.io/en/latest/4_user_guide/4_5_develop_redcap_instruments.html) + and FHIR Base Resources (v4.0.1). + - [RareLink FHIR Implementation Guide in draft](https://bih-cei.github.io/rarelink/) +6. **Customising RareLink & RD-CDM Extensions**: [Guidelines for modeling and encoding custom data](https://rarelink.readthedocs.io/en/latest/4_user_guide/4_5_develop_redcap_instruments.html) extensions ensure compatibility with the RareLink framework and its pipelines. ## Getting Started @@ -163,7 +163,8 @@ BIOPORTAL_API_TOKEN=your_api_token_here ### Running Tests -To ensure everything is set up correctly, run the test suite using `pytest`: +To ensure everything is set up correctly, run the test suite using `pytest` (this +may take a while...): ```bash pytest @@ -240,7 +241,7 @@ the RareLink framework: Please write an issue or exchange with other users in the discussions if you encounter any problems or wish to give feedback. Feel free to reach out to -adam.graefe@charite.de, if you are interested in collaborating and improve the +adam.graefe[at]charite.de, if you are interested in collaborating and improve the use of REDCap for rare disease research and care. ## Resources @@ -249,11 +250,11 @@ use of REDCap for rare disease research and care. - Human Phenotype Ontology (HP) [🔗](http://www.human-phenotype-ontology.org) - Monarch Initiative Disease Ontology (MONDO) [🔗](https://mondo.monarchinitiative.org/) - Online Mendelian Inheritance in Man (OMIM) [🔗](https://www.omim.org/) -- Orphanet Rare Disease Ontology (OPRHA) [🔗](https://www.orpha.net/) +- Orphanet Rare Disease Ontology (ORDO) [🔗](https://www.orpha.net/) - National Center for Biotechnology Information Taxonomy (NCBITaxon) [🔗](https://www.ncbi.nlm.nih.gov/taxonomy) - Logical Observation Identifiers Names and Codes (LOINC) [🔗](https://loinc.org/) - HUGO Gene Nomenclature Committee (HGNC) [🔗](https://www.genenames.org/) -- Gene Ontology (GENO) [🔗](https://geneontology.org/) +- Gene Ontology (GO) [🔗](https://geneontology.org/) - NCI Thesaurus OBO Edition (NCIT) [🔗](https://obofoundry.org/ontology/ncit.html) ### Submodules @@ -268,6 +269,16 @@ This project is licensed under the terms of the [open-source Apache 2.0 License] We would like to extend our thanks to everyone in the last three years for their support in the development of this project. +## Citing + +When using the software or its specifications please cite: + + +> Graefe, A.S.L., Rehburg, F., Alkarkoukly, S. et al. RareLink: scalable + REDCap-based framework for rare disease interoperability linking + international registries to FHIR and Phenopackets. + npj Genom. Med. 10, 72 (2025). https://doi.org/10.1038/s41525-025-00534-z + --- - Authors: diff --git a/docs/.DS_Store b/docs/.DS_Store index 953adf0dc..10f8d71be 100755 Binary files a/docs/.DS_Store and b/docs/.DS_Store differ diff --git a/docs/11_download_manifest.rst b/docs/11_download_manifest.rst deleted file mode 100755 index 29e197425..000000000 --- a/docs/11_download_manifest.rst +++ /dev/null @@ -1,18 +0,0 @@ -.. _11: - -Downloads Manifest -==================== - - -The downloads manifest contains links to all downloadable files in the RareLink -framework. Use this as the central source of truth for file downloads. Each file -entry includes the version, file name, and URL. - -- **Manifest File**: The manifest is hosted at `_static/downloads_manifest.json`: - :download:`View Downloads Manifest <_static/downloads_manifest.json>` - - - -.. note:: - The manifest is dynamically fetched by the RareLink CLI, allowing automated - versioning and URL updates. To learn more, visit the :ref:`2_3`. \ No newline at end of file diff --git a/docs/12_contact.rst b/docs/12_contact.rst index f10ae8b4c..eae061eb9 100644 --- a/docs/12_contact.rst +++ b/docs/12_contact.rst @@ -8,6 +8,6 @@ Please check out our github Repository for more information: You can also email us directly at: -- `adam.graefe@charite.de` +- adam.graefe[at]charite.de diff --git a/docs/1_background/1_0_background_file.rst b/docs/1_background/1_0_background_file.rst index ba5a3d5f5..577f0b8d2 100755 --- a/docs/1_background/1_0_background_file.rst +++ b/docs/1_background/1_0_background_file.rst @@ -3,6 +3,9 @@ Background ============= +.. tip:: + - **Manuscript:** RareLink was recently published in npj Genomic Medicine: https://www.nature.com/articles/s41525-025-00534-z + RareLink was developed as a response to the widespread challenges in rare disease (RD) data management, specifically the lack of interoperability and standardization in healthcare information systems. As REDCap is widely used diff --git a/docs/1_background/1_2_ontologies.rst b/docs/1_background/1_2_ontologies.rst index 63e8c903f..f18e9c918 100755 --- a/docs/1_background/1_2_ontologies.rst +++ b/docs/1_background/1_2_ontologies.rst @@ -94,8 +94,14 @@ The following codesystems are used in the RareLink Core Framework: The **Sequence Ontology** provides standardized vocabulary for genomic annotation components, enhancing sharing and analysis of genomic information. +:`MAXO `_: + The **Medical Action Ontology (MAxO)** provides a structured vocabulary for + medical procedures, interventions, therapies, and treatments for disease + with an emphasis on rare disease (RD). MAxO provides a vocabulary to + annotate diseases and phenotypes with recommended treatments and interventions. + .. note:: The versions used by the RareLink Core Framework can be found here: - `RareLink Ontologies `_. + `RareLink Ontologies `_. Further Reading --------------- diff --git a/docs/1_background/1_5_rd_cdm.rst b/docs/1_background/1_5_rd_cdm.rst index 0a74bd299..2f1cd5091 100755 --- a/docs/1_background/1_5_rd_cdm.rst +++ b/docs/1_background/1_5_rd_cdm.rst @@ -4,12 +4,12 @@ RD-CDM ======= .. tip:: - The RD-CDM v2.0.2 has been published in Nature Scientific Data. You can read + The RD-CDM has been published in Nature Scientific Data. You can read it here: https://www.nature.com/articles/s41597-025-04558-z. _________________________________________________________________________________ -RD-CDM v2.0.2 Overview +RD-CDM Overview ----------------------- The ontology-based Rare Diseases Common Data Model (RD CDM) v2.0 was developed to address @@ -24,9 +24,9 @@ involved overcoming challenges such as the lack of standardized terms for disease characteristics and the need to represent highly variable clinical data across different rare diseases. -.. figure:: ../_static/res/rd_cdm_v2_0_2.svg +.. figure:: ../_static/res/rd_cdm_v2_0_0.svg - Depicts version 2.0.2 of our ontology-based rare disease common data model (RD-CDM) based on the European Rare Disease Registry Infrastructure - Common Data Set (ERDRI-CDS), HL7 FHIR base resources v4.0.1 and the GA4GH Phenopacket Schema v2.0. The sections are derived from the ERDRI-CDS, and the section Diagnosis is extended by four subsections. For each section, all data elements and their data types. This data model does not define any cardinalities of relationships between elements or sections. + Depicts version 2.0.0 of our ontology-based rare disease common data model (RD-CDM) based on the European Rare Disease Registry Infrastructure - Common Data Set (ERDRI-CDS), HL7 FHIR base resources v4.0.1 and the GA4GH Phenopacket Schema v2.0. The sections are derived from the ERDRI-CDS, and the section Diagnosis is extended by four subsections. For each section, all data elements and their data types. This data model does not define any cardinalities of relationships between elements or sections. .. tip:: @@ -52,7 +52,7 @@ seamlessly integrated into existing healthcare systems without exceeding the avaliable resources is also essential. Addressing these complexities, the RD CDM v2.0 provides a framework that enhances the consistency of rare disease data, enabling better comparative analysis across research institutions and -healthcare settings. While the RD-CDM v2.0.2 is not a balloted version, it can +healthcare settings. While the RD-CDM v2.0.0 is not a balloted version, it can serve as a template for future standardization efforts in rare disease research. Key success factors for the RD-CDM include its ability to support secondary diff --git a/docs/2_rarelink_framework/2_0_rarelink_file.rst b/docs/2_rarelink_framework/2_0_rarelink_file.rst index ba3ea932c..ae60542ea 100755 --- a/docs/2_rarelink_framework/2_0_rarelink_file.rst +++ b/docs/2_rarelink_framework/2_0_rarelink_file.rst @@ -3,6 +3,9 @@ RareLink Framework ================== +.. tip:: + - **Manuscript:** RareLink was recently published in npj Genomic Medicine: https://www.nature.com/articles/s41525-025-00534-z + In this section we elaborate on the development of the RareLink framework, how it is designed to facilitate the management of rare disease data, and how it supports the creation of interoperable and reusable datasets. We provide an diff --git a/docs/2_rarelink_framework/2_1_rarelink_overview.rst b/docs/2_rarelink_framework/2_1_rarelink_overview.rst index e8593d641..bf6394f40 100755 --- a/docs/2_rarelink_framework/2_1_rarelink_overview.rst +++ b/docs/2_rarelink_framework/2_1_rarelink_overview.rst @@ -3,6 +3,9 @@ RareLink Overview ================= +.. tip:: + - **Manuscript:** RareLink was recently published in npj Genomic Medicine: https://www.nature.com/articles/s41525-025-00534-z + RareLink aims to maximise the utility of REDCap by providing a comprehensive framework designed specifically for rare disease (RD) research and care. At the core of RareLink is this documentation, the RareLink instruments that are diff --git a/docs/2_rarelink_framework/2_2_rarelink_cdm.rst b/docs/2_rarelink_framework/2_2_rarelink_cdm.rst index 438099925..a6d3d3f07 100755 --- a/docs/2_rarelink_framework/2_2_rarelink_cdm.rst +++ b/docs/2_rarelink_framework/2_2_rarelink_cdm.rst @@ -13,7 +13,8 @@ instrument, ensuring consistency and comprehensive data capture. .. hint:: - Read the :ref:`1_6` page to understand how REDCap instruments & data dictionaries work. - - Read the :ref:`1_5` page for more information on the Rare Disease Common Data Model. + - Read the :ref:`1_5` page for more information on the ontology-based rare + disease common data model. Contents @@ -35,7 +36,7 @@ REDCap Data Dictionary The RareLink CDM Data Dictionary is available for download as a CSV file: -:download:`Download: RareLink-CDM Data Dictionary (v2.0.2) <../../res/rarelink_cdm_datadictionary - v2_0_2.csv>` +|data_dict_download| ... Next steps ________________ @@ -67,7 +68,7 @@ standards. In other words, the RareLink REDCap instruments are displayed in a structured format that so that LinkML modules and functionalities can be used. -- Here you can view the `LinkML schema of the RareLink-CDM v2.0.2 `_. +- Here you can view the `LinkML schema of the RareLink-CDM `_. Usage _______ @@ -79,7 +80,7 @@ modules, for example: from the REDCap project is automatically processed to the LinkML presentation of the RareLink-CDM and validated against it. This ensures the data is ready to :ref:`4_3`. -- Within the data model itself, we use its `python classes and properties `_ +- Within the data model itself, we use its `python classes and properties `_ automatically generated by LinkML schema to ensure consistent use of code systems, versions and codes within one RareLink-CDM version and its mappings. - Since our RareLink-CDM is modeled and defined with LinkML, we can make use @@ -180,7 +181,7 @@ with REDCap's :ref:`rule_set`, the data dictionary requirements and to ensure alignment with: - international registries (e.g., the `European Reference Networks (ERNs) `_), -- the `HL7 FHIR International Patient Summary (IPS) v2.0.2 `_, +- the `HL7 FHIR International Patient Summary (IPS) v2.0.0 `_, - the `HL7 Genomics Reporting v3.0.0 Profiles `_, and - the `GA4GH Phenopacket Schema `_. diff --git a/docs/2_rarelink_framework/2_3_rarelink_cli.rst b/docs/2_rarelink_framework/2_3_rarelink_cli.rst index de5b1b288..67ee098ed 100755 --- a/docs/2_rarelink_framework/2_3_rarelink_cli.rst +++ b/docs/2_rarelink_framework/2_3_rarelink_cli.rst @@ -3,8 +3,6 @@ RareLink CLI ============= - - The RareLink Command Line Interface (CLI) is a tool that allows you to interact with the RareLink framework. The CLI provides a set of commands that allow you to set up and manage the RareLink framework, as well as to interact with the diff --git a/docs/3_installation/3_3_data_dictionary.rst b/docs/3_installation/3_3_data_dictionary.rst index b56d93d75..5509fd036 100755 --- a/docs/3_installation/3_3_data_dictionary.rst +++ b/docs/3_installation/3_3_data_dictionary.rst @@ -26,7 +26,7 @@ ________________________________________________________________________________ 1. **Download the instruments from the RareLink REDCap project.** -- :download:`Download RareLink CDM Data Dictionary v2.0.2 <../../res/rarelink_cdm_datadictionary - v2_0_2.csv>` +- |data_dict_download| 2. **Upload the data dictionary to your REDCap project** diff --git a/docs/4_user_guide/4_1_manual_data_capture.rst b/docs/4_user_guide/4_1_manual_data_capture.rst index 85021e51e..156f98968 100755 --- a/docs/4_user_guide/4_1_manual_data_capture.rst +++ b/docs/4_user_guide/4_1_manual_data_capture.rst @@ -431,8 +431,8 @@ ________________________________________________________________________________ .. tip:: - Define a set of rules for capturing measurements within a cohort to - improve subsequent analyses. + Define a set of rules for capturing measurements and procedures within + a cohort to improve subsequent analyses. General Notes: @@ -462,6 +462,35 @@ Fields: `OLS Platform `_ for ontology-specific searches if you cannot find the concepts you are looking for. +The **Measurements** form can also be used to capture **medical procedures** by +selecting the measurement category **``procedure``**. + +When the category **procedure** is selected: + +- The recorded information is interpreted as a **medical action** +- The data are mapped differently depending on the target standard: + +**FHIR / IPS** + - The information is exported into the **FHIR-IPS Procedure Profile** + - Procedures **must** be encoded using **SNOMED CT** + - Whenever possible, use concepts from: + - `IPS Procedures Value Set `_ + - **SNOMED CT Body Structures** (for anatomical targets) + +**GA4GH Phenopackets** + - The information is stored in the **MedicalAction** block + - Procedures may be encoded using: + - **SNOMED CT**, or + - **MAXO (Medical Action Ontology)** + - While both are supported, **MAXO is recommended** where applicable, + as current and upcoming analysis algorithms developed by the **HPO team** + increasingly rely on MAXO-based representations. + +.. note:: + Only **procedures** (not laboratory or quantitative measurements) should be + captured using the *procedure* category. All other observations should use + the appropriate measurement category (e.g. laboratory, vital signs). + Return to `top <#top>`_. diff --git a/docs/4_user_guide/4_2_import_mapper.rst b/docs/4_user_guide/4_2_import_mapper.rst index 0760a9d59..0dc70de95 100755 --- a/docs/4_user_guide/4_2_import_mapper.rst +++ b/docs/4_user_guide/4_2_import_mapper.rst @@ -60,8 +60,8 @@ The semi-automatic import process involves several key components: - :ref:`2_2` - :ref:`rarelink_cdm_linkml` - - `RareLink-CDM v2.0.2 LinkML yaml schema files `_ - - `RareLink-CDM v2.0.2 LinkML python model and classes `_ + - `RareLink-CDM LinkML yaml schema files `_ + - `RareLink-CDM LinkML python model and classes `_ - **LinkML Map**: @@ -235,7 +235,7 @@ Below you can find a **snippet of the RareLink-CDM SSSOM Template File:** # RareLink-CDM SSSOM Template File # This template maps source data elements from a registry CSV file to the target RareLink-CDM schema. # SSSOM documentation: https://mapping-commons.github.io/sssom/ - # RareLink-CDM LinkML schema: https://github.com/BIH-CEI/rarelink/tree/develop/src/rarelink_cdm/v2_0_2/schema_definitions + # RareLink-CDM LinkML schema: https://github.com/BIH-CEI/rarelink/tree/develop/src/rarelink/rarelink_cdm/schema_definitions # # Columns: # subject_id : Unique identifier for the source record (). @@ -381,7 +381,7 @@ LinkML schema using the following command: .. code-block:: bash - linkml-validate --schema src/rarelink_cdm/v2_0_2/schema_definitions/rarelink_cdm.yaml + linkml-validate --schema src/rarelink/rarelink_cdm/schema_definitions/rarelink_cdm.yaml This validation step ensures that your data conforms to the model before proceeding to further export (such as to Phenopackets) or upload to REDCap. diff --git a/docs/4_user_guide/4_3_phenopackets.rst b/docs/4_user_guide/4_3_phenopackets.rst index bf39fc646..6a1726b82 100755 --- a/docs/4_user_guide/4_3_phenopackets.rst +++ b/docs/4_user_guide/4_3_phenopackets.rst @@ -86,7 +86,7 @@ RareLink-Phenopacket engine The RareLink-Phenopacket module is developed in a modular way to allow for easy adaptation to other REDCap data structures. All data model specific -configurations and mappings of the :ref:`2_2` are within its `GitHub folder `_. +configurations and mappings of the :ref:`2_2` are within its `GitHub folder `_. Therefore, all functions and modules we developed can be used or adapted for other REDCap data models extending the :ref:`2_2` once the data model is converted to a similar :ref:`LinkML schema `. @@ -426,10 +426,17 @@ The mapping configuration is a nested dictionary with the following key componen - ``diseases`` - ``phenotypicFeatures`` - ``measurements`` + - ``medical_actions`` - ``variationDescriptor`` - ``interpretations`` - ``metadata`` + +.. tip:: + ... check out the RareLink-CDM combined.py and all other mappings + (*src/rarelink/rarelink_cdm/mappings/phenopackets/*) to see the full + structure and examples of mapping configurations: + Advanced Configuration Options ------------------------------- diff --git a/docs/6_changelog.rst b/docs/6_changelog.rst index fccf1aca2..ee7710c43 100755 --- a/docs/6_changelog.rst +++ b/docs/6_changelog.rst @@ -3,10 +3,14 @@ Changelog =========== +v2.0.5 (2025-11-19) +--------------------- + + v2.0.4 (2025-09-25) --------------------- -- FHIR Export: fixed CLI export and tofhir condig .yml and docker files for the FHIR export and module +- FHIR Export: fixed CLI export and tofhir config .yml and docker files for the FHIR export and module - FHIR IG: fixed image paths in the FHIR IG to correctly display the RD-CDM image v2.0.3 (2025-09-24) diff --git a/docs/9_acknowledgements.rst b/docs/9_acknowledgements.rst index a16d314d7..2717d78f8 100755 --- a/docs/9_acknowledgements.rst +++ b/docs/9_acknowledgements.rst @@ -9,7 +9,7 @@ e also acknowledge the following organizations for their support and collaborati - **Prof. Sylvia Thun** and colleagues from the `Core Unit Digital Health and Interoperability `_ - **Prof. Peter N. Robinson** and colleagues from the working group `Medical Computer Science and Artificial Intelligence `_ -- **Prof. Oya Beyan** from the `University Hospital Cologne Institute of Biomedical Informatics `_ +- **Prof. Oya Beyan** and colleagues from the `University Hospital Cologne Institute of Biomedical Informatics `_ - All participating colleagues from `The Monarch Initiative `_ diff --git a/docs/_build/.buildinfo b/docs/_build/.buildinfo deleted file mode 100644 index 18464289d..000000000 --- a/docs/_build/.buildinfo +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: d021756696b2642c523f80c7ebcd3d07 -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/.buildinfo.bak b/docs/_build/.buildinfo.bak deleted file mode 100644 index 3f3339ac0..000000000 --- a/docs/_build/.buildinfo.bak +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 9ad078f64c762a8b6e1aef51ff926d92 -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/.doctrees/10_license.doctree b/docs/_build/.doctrees/10_license.doctree deleted file mode 100644 index 1a0fe6db6..000000000 Binary files a/docs/_build/.doctrees/10_license.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/11_download_manifest.doctree b/docs/_build/.doctrees/11_download_manifest.doctree deleted file mode 100644 index a09a2fc82..000000000 Binary files a/docs/_build/.doctrees/11_download_manifest.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/12_contact.doctree b/docs/_build/.doctrees/12_contact.doctree deleted file mode 100644 index 0bd70a676..000000000 Binary files a/docs/_build/.doctrees/12_contact.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/1_background/1_0_background_file.doctree b/docs/_build/.doctrees/1_background/1_0_background_file.doctree deleted file mode 100644 index 628059ecd..000000000 Binary files a/docs/_build/.doctrees/1_background/1_0_background_file.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/1_background/1_1_rd_interoperability.doctree b/docs/_build/.doctrees/1_background/1_1_rd_interoperability.doctree deleted file mode 100644 index 5d34e5694..000000000 Binary files a/docs/_build/.doctrees/1_background/1_1_rd_interoperability.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/1_background/1_2_ontologies.doctree b/docs/_build/.doctrees/1_background/1_2_ontologies.doctree deleted file mode 100644 index db1cbdc8d..000000000 Binary files a/docs/_build/.doctrees/1_background/1_2_ontologies.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/1_background/1_3_ga4gh_phenopacket_schema.doctree b/docs/_build/.doctrees/1_background/1_3_ga4gh_phenopacket_schema.doctree deleted file mode 100644 index e1416f4a6..000000000 Binary files a/docs/_build/.doctrees/1_background/1_3_ga4gh_phenopacket_schema.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/1_background/1_4_hl7_fhir.doctree b/docs/_build/.doctrees/1_background/1_4_hl7_fhir.doctree deleted file mode 100644 index 482361a17..000000000 Binary files a/docs/_build/.doctrees/1_background/1_4_hl7_fhir.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/1_background/1_5_rd_cdm.doctree b/docs/_build/.doctrees/1_background/1_5_rd_cdm.doctree deleted file mode 100644 index 3775eb1d5..000000000 Binary files a/docs/_build/.doctrees/1_background/1_5_rd_cdm.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/1_background/1_6_redcap.doctree b/docs/_build/.doctrees/1_background/1_6_redcap.doctree deleted file mode 100644 index a4ca7b157..000000000 Binary files a/docs/_build/.doctrees/1_background/1_6_redcap.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/2_rarelink_framework/2_0_rarelink_file.doctree b/docs/_build/.doctrees/2_rarelink_framework/2_0_rarelink_file.doctree deleted file mode 100644 index 95f1a174f..000000000 Binary files a/docs/_build/.doctrees/2_rarelink_framework/2_0_rarelink_file.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/2_rarelink_framework/2_1_rarelink_overview.doctree b/docs/_build/.doctrees/2_rarelink_framework/2_1_rarelink_overview.doctree deleted file mode 100644 index fb4e19d94..000000000 Binary files a/docs/_build/.doctrees/2_rarelink_framework/2_1_rarelink_overview.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/2_rarelink_framework/2_2_rarelink_cdm.doctree b/docs/_build/.doctrees/2_rarelink_framework/2_2_rarelink_cdm.doctree deleted file mode 100644 index 177daa338..000000000 Binary files a/docs/_build/.doctrees/2_rarelink_framework/2_2_rarelink_cdm.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/2_rarelink_framework/2_3_rarelink_cli.doctree b/docs/_build/.doctrees/2_rarelink_framework/2_3_rarelink_cli.doctree deleted file mode 100644 index 4c2f488c9..000000000 Binary files a/docs/_build/.doctrees/2_rarelink_framework/2_3_rarelink_cli.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/3_installation/3_0_install_file.doctree b/docs/_build/.doctrees/3_installation/3_0_install_file.doctree deleted file mode 100644 index 6b2df51e0..000000000 Binary files a/docs/_build/.doctrees/3_installation/3_0_install_file.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/3_installation/3_1_setup_rarelink_framework.doctree b/docs/_build/.doctrees/3_installation/3_1_setup_rarelink_framework.doctree deleted file mode 100644 index 598e764d0..000000000 Binary files a/docs/_build/.doctrees/3_installation/3_1_setup_rarelink_framework.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/3_installation/3_2_setup_redcap_project.doctree b/docs/_build/.doctrees/3_installation/3_2_setup_redcap_project.doctree deleted file mode 100644 index 3c84b9a40..000000000 Binary files a/docs/_build/.doctrees/3_installation/3_2_setup_redcap_project.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/3_installation/3_3_data_dictionary.doctree b/docs/_build/.doctrees/3_installation/3_3_data_dictionary.doctree deleted file mode 100644 index f54afa9a1..000000000 Binary files a/docs/_build/.doctrees/3_installation/3_3_data_dictionary.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/3_installation/3_4_redcap_api.doctree b/docs/_build/.doctrees/3_installation/3_4_redcap_api.doctree deleted file mode 100644 index a2d3a7ce2..000000000 Binary files a/docs/_build/.doctrees/3_installation/3_4_redcap_api.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/4_user_guide/4_0_guide_file.doctree b/docs/_build/.doctrees/4_user_guide/4_0_guide_file.doctree deleted file mode 100644 index 43fa4b10f..000000000 Binary files a/docs/_build/.doctrees/4_user_guide/4_0_guide_file.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/4_user_guide/4_1_manual_data_capture.doctree b/docs/_build/.doctrees/4_user_guide/4_1_manual_data_capture.doctree deleted file mode 100644 index 0857e6ddb..000000000 Binary files a/docs/_build/.doctrees/4_user_guide/4_1_manual_data_capture.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/4_user_guide/4_2_import_mapper.doctree b/docs/_build/.doctrees/4_user_guide/4_2_import_mapper.doctree deleted file mode 100644 index c8e129e64..000000000 Binary files a/docs/_build/.doctrees/4_user_guide/4_2_import_mapper.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/4_user_guide/4_3_phenopackets.doctree b/docs/_build/.doctrees/4_user_guide/4_3_phenopackets.doctree deleted file mode 100644 index feb8e6799..000000000 Binary files a/docs/_build/.doctrees/4_user_guide/4_3_phenopackets.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/4_user_guide/4_4_fhir_module.doctree b/docs/_build/.doctrees/4_user_guide/4_4_fhir_module.doctree deleted file mode 100644 index 23dd960a4..000000000 Binary files a/docs/_build/.doctrees/4_user_guide/4_4_fhir_module.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/4_user_guide/4_4_tofhir_module.doctree b/docs/_build/.doctrees/4_user_guide/4_4_tofhir_module.doctree deleted file mode 100644 index 1ed949a00..000000000 Binary files a/docs/_build/.doctrees/4_user_guide/4_4_tofhir_module.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/4_user_guide/4_5_develop_redcap_instruments.doctree b/docs/_build/.doctrees/4_user_guide/4_5_develop_redcap_instruments.doctree deleted file mode 100644 index 6fc860caf..000000000 Binary files a/docs/_build/.doctrees/4_user_guide/4_5_develop_redcap_instruments.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/4_user_guide/4_6_redcap_tools.doctree b/docs/_build/.doctrees/4_user_guide/4_6_redcap_tools.doctree deleted file mode 100644 index 2695e7744..000000000 Binary files a/docs/_build/.doctrees/4_user_guide/4_6_redcap_tools.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/5_contributing.doctree b/docs/_build/.doctrees/5_contributing.doctree deleted file mode 100644 index 66b4c310f..000000000 Binary files a/docs/_build/.doctrees/5_contributing.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/6_changelog.doctree b/docs/_build/.doctrees/6_changelog.doctree deleted file mode 100644 index 2e0a7c2b4..000000000 Binary files a/docs/_build/.doctrees/6_changelog.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/7_faq.doctree b/docs/_build/.doctrees/7_faq.doctree deleted file mode 100644 index 6a2c66b45..000000000 Binary files a/docs/_build/.doctrees/7_faq.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/8_glossary.doctree b/docs/_build/.doctrees/8_glossary.doctree deleted file mode 100644 index 814b4fd25..000000000 Binary files a/docs/_build/.doctrees/8_glossary.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/9_acknowledgements.doctree b/docs/_build/.doctrees/9_acknowledgements.doctree deleted file mode 100644 index 1de013ee0..000000000 Binary files a/docs/_build/.doctrees/9_acknowledgements.doctree and /dev/null differ diff --git a/docs/_build/.doctrees/environment.pickle b/docs/_build/.doctrees/environment.pickle deleted file mode 100644 index ae1e59640..000000000 Binary files a/docs/_build/.doctrees/environment.pickle and /dev/null differ diff --git a/docs/_build/.doctrees/index.doctree b/docs/_build/.doctrees/index.doctree deleted file mode 100644 index 8d82ea001..000000000 Binary files a/docs/_build/.doctrees/index.doctree and /dev/null differ diff --git a/docs/_build/10_license.html b/docs/_build/10_license.html deleted file mode 100644 index 5fe5233bc..000000000 --- a/docs/_build/10_license.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - License — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

License

-

RareLink is licensed under open-source the BSD 3-Clause License:

-

Copyright (c) 2024 - 2025, Berlin Institute of Health, Charité Universitätsmedizin Berlin -All rights reserved.

-

Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met:

-
    -
  • Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer.

  • -
  • Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution.

  • -
  • Neither the name of the copyright holder nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission.

  • -
-

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/11_download_manifest.html b/docs/_build/11_download_manifest.html deleted file mode 100644 index 0ed55c54f..000000000 --- a/docs/_build/11_download_manifest.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - - Downloads Manifest — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Downloads Manifest

-

The downloads manifest contains links to all downloadable files in the RareLink -framework. Use this as the central source of truth for file downloads. Each file -entry includes the version, file name, and URL.

- -
-

Note

-

The manifest is dynamically fetched by the RareLink CLI, allowing automated -versioning and URL updates. To learn more, visit the RareLink CLI.

-
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/12_contact.html b/docs/_build/12_contact.html deleted file mode 100644 index 96e8182ff..000000000 --- a/docs/_build/12_contact.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - Contact — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Contact

-

Please check out our github Repository for more information: -RareLink GitHub Repository.

-

You can also reach us directly at: -- Email:

-
-
    -
  • adam.graefe@charite.de

  • -
-
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/1_background/1_0_background_file.html b/docs/_build/1_background/1_0_background_file.html deleted file mode 100644 index bf301fbd4..000000000 --- a/docs/_build/1_background/1_0_background_file.html +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - - - - Background — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Background

-

RareLink was developed as a response to the widespread challenges in rare -disease (RD) data management, specifically the lack of interoperability and -standardization in healthcare information systems. As REDCap is widely used -in clinical studies and registries for data collection, RareLink was designed -to leverage REDCap’s capabilities to facilitate the collection, processing, -and sharing of RD data. The framework ensures that RD data is -captured, processed, and exported following a predefined common data model -that facilitates downstream analysis using international standards. Furthermore, -RareLink provides a rule-based approach for the design of REDCap instruments -to extend the RD common data model with additional data elements.

-

The integration of ontology codes and the connection to the BioPortal Ontology -Server enables researchers and clinicians to use standardized terminologies, -ensuring that data can be easily shared and reused across different platforms -and research networks. By leveraging HL7 FHIR and the GA4GH Phenopacket Schema, -RareLink supports the creation of interoperable and reusable RD datasets.

-

In the following we provide an overview of the different components of the -RareLink framework, including the interoperability features, the supported -ontologies, the GA4GH Phenopacket Schema, the HL7 FHIR standard, the RD CDM, -and the REDCap data collection platform.

- -
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/1_background/1_1_rd_interoperability.html b/docs/_build/1_background/1_1_rd_interoperability.html deleted file mode 100644 index e34b568b8..000000000 --- a/docs/_build/1_background/1_1_rd_interoperability.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - - - - Rare Diseases and Interoperability — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Rare Diseases and Interoperability

-

Rare diseases (RDs), though individually rare, collectively impact a significant -global population, estimated to exceed 260 million people. These diseases are -often characterised by their genetic origins, with over 70% having a suspected -genetic basis. In Europe, a disease is classified as rare if it affects fewer -than 5 in 10,000 individuals, which highlights the challenge of addressing the -medical needs of over 17 million people across the continent. Despite the large -number of individuals affected, RDs are frequently overlooked in medical -research and care, largely due to the scarcity of available data and resources.

-

Interoperability plays a crucial role in addressing these challenges. It ensures -that clinical data can be shared and understood across systems, which is -especially important in rare disease (RD) research. Many healthcare institutions -lack standardized approaches to data collection and storage, which leads to -inconsistencies and makes data exchange difficult. Without the use of -internationally recognized ontologies and coding systems, the data collected -cannot be efficiently reused or analyzed for further research. Interoperability -frameworks, such as RareLink, address this issue by facilitating the seamless -exchange of standardized medical data, thus promoting research and care for -RD patients.

-

RareLink, for example, is an interoperability framework embedded in REDCap, -for RD registries and research. By leveraging international standards such as -HL7 FHIR and GA4GH Phenopackets, RareLink ensures that data collected can be -reused not only locally but also globally. This interoperability allows -researchers to connect with other databases and centers, enhancing the potential -for collaborative research and the development of novel treatments. Furthermore, -the inclusion of ontology codes enables precise bioinformatic analysis, which is -critical given the limited number of patients and data points available in RD -research.

-

Ultimately, the success of RD research depends heavily on the ability -to connect and compare data from different sources. The development and -implementation of frameworks like RareLink enable more efficient diagnoses, -research, and treatment options by addressing one of the core issues: -interoperability. By promoting standardized, reusable data, RareLink -provides a foundation for advancements in RD care, facilitating a -future where more patients can receive timely diagnoses and access to effective -treatments.

-
-

Tip

-
-
Read the section on Rare Diseases in the article:

Why Digital Medicine depends on Interoperability (Lehne M et al., 2019)

-
-
-
-
-

Definitons

-
    -
  • -
    FAIR Data Principles:

    Designed to improve the automated discovery and usability of data by -machines while also facilitating its reuse by individuals -(Findable, Accessible, Interoperable, Reusable).

    -
    -
    -
  • -
  • -
    Interoperability:

    The ability of different systems, applications, or devices to connect and -communicate in a coordinated manner without requiring effort from the end -user.

    -
    -
    -
  • -
  • -
    Syntactic Interoperability:

    The ability of systems to communicate through compatible formats and -protocols, such as JSON files, a format for sharing data in key-value pairs -and arrays, using human-readable text.

    -
    -
    -
  • -
  • -
    Semantic Interoperability:

    Ensures a shared and precise interpretation of medical data. Uniform data -structuring and codification enhance machine-to-machine communication, -improving accuracy and outcomes.

    -
    -
    -
  • -
  • -
    Medical Ontologies:

    Formal and explicit representations of the concepts and relationships within -an area of healthcare designed to facilitate the organisation, integration, -and exchange of knowledge across healthcare systems and applications.

    -
    -
    -
  • -
  • -
    Medical Terminologies:

    Encompass the vocabulary used in all healthcare communication and -documentation aspects, including terms for conditions, procedures, and -equipment, facilitating precise communication and supporting electronic -health information exchange.

    -
    -
    -
  • -
-
-
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/1_background/1_2_ontologies.html b/docs/_build/1_background/1_2_ontologies.html deleted file mode 100644 index ae7d3615c..000000000 --- a/docs/_build/1_background/1_2_ontologies.html +++ /dev/null @@ -1,271 +0,0 @@ - - - - - - - - - Ontologies & Terminologies — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Ontologies & Terminologies

-

RareLink uses a variety of ontologies and terminologies to standardise the -representation of data and facilitate interoperability between different data -sources. These ontologies and terminologies are used to describe the phenotypic -and genotypic features of rare diseases (RDs) and their associated genes, as -well as the relationships between them. The use of standardised vocabularies -ensures that data can be easily integrated and queried across different -databases and platforms.

-
    -
  • -
    Terminology:

    refers to a collection of preferred or officially recognized -terms within a specific domain. In the medical field, one of the most -significant terminologies for information retrieval is the Medical Subject -Headings (MeSH), which serves as a framework for indexing and searching -literature in Medline.

    -
    -
    -
  • -
  • -
    Ontologies:

    …on the other hand, go beyond mere vocabulary. They establish and define -relationships between concepts, enabling computational reasoning and -inference.

    -
    -
    -
  • -
- - -
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/1_background/1_3_ga4gh_phenopacket_schema.html b/docs/_build/1_background/1_3_ga4gh_phenopacket_schema.html deleted file mode 100644 index 8f8fff333..000000000 --- a/docs/_build/1_background/1_3_ga4gh_phenopacket_schema.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - - - GA4GH Phenopackets — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

GA4GH Phenopackets

-

The Phenopacket schema, developed by the Global Alliance for Genomics and Health -(GA4GH), is an open standard designed to facilitate the exchange of detailed -phenotypic and genomic data. It is particularly useful for capturing rich -clinical data and complex phenotypes in a structured format, making it ideal -for rare disease (RD) research. The schema enables the precise description of -a patient’s clinical features, genetic information, diagnoses, and disease -progression, all of which are critical for understanding RDs. -Phenopackets are widely adopted in bioinformatics pipelines to ensure the -standardization of data across different institutions and studies, enhancing -data reusability and interoperability.

-
-

Tip

-
-
Read the GA4GH Phenopacket Schema Paper here:

The GA4GH Phenopacket schema defines a computable representation of clinical data.

-
-
-
-
-

Phenopacket Blocks

-

The GA4GH Phenopcaket Schema v2.0:

-
-../_images/phenopacket-schema-v2-overview.svg -
-

Overview of v2.0 of the schema. Lines between elements indicate composition. Note that the OntologyClass and TimeElement -links have been omitted for legibility. The colour scheme represents: base classes, interpretation classes, -measurement classes, genomic/vrs classes, pedigree classes, -top-level classes, medical-action classes

-
-
-
-

A Phenopacket characterizes an individual or biosample, linking it to detailed -phenotypic descriptions, genetic information, diagnoses, and treatments, all -structured as building blocks. -These cover topics such as phenotype, medical actions, measurements, variant, -and pedigree, enabling a rich representation of data that can easily integrate -into larger schemas for specific use cases.

-

Central to the Phenopacket schema is the PhenotypicFeature, -which describes various characteristics such as signs, symptoms, and laboratory -findings using ontologies, like the Human Phenotype Ontology (HPO). The schema -also allows for the documentation of exclusions, severity, frequency, and onset -of features. Other essential components include Measurement, -for capturing data, Biosample, -for biological materials, and MedicalAction, -which includes the hierarchical representation of medical interventions. -The Treatment -element encompasses a range of therapeutic agents, from medications to advanced -therapies. Together, these building blocks create a comprehensive framework for -clinical information.

- -
-
-

Phenopacket Tools

-

Several tools have been developed around the Phenopacket schema, supporting the -collection, analysis, and dissemination of RD data. Tools such as the -Phenopacket validator ensure that data adhere to the schema’s strict standards, -preventing inconsistencies and improving data quality. Additionally, the GA4GH -Beacon network allows researchers to query datasets to find specific genomic -variants associated with phenotypic data encoded in Phenopackets. These tools -have helped to broaden the impact of Phenopackets in RD research by promoting -data accuracy, accessibility, and reusability across multiple platforms and -projects.

- -
-

Further Reading

- -
-
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/1_background/1_4_hl7_fhir.html b/docs/_build/1_background/1_4_hl7_fhir.html deleted file mode 100644 index 3ac611e4c..000000000 --- a/docs/_build/1_background/1_4_hl7_fhir.html +++ /dev/null @@ -1,278 +0,0 @@ - - - - - - - - - HL7 FHIR — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

HL7 FHIR

-
-

FHIR (Fast Healthcare Interoperability Resources) is an international standard -developed by Health Level 7 (HL7) for exchanging healthcare information electronically. -Initially designed as a transaction format to facilitate data exchanges between healthcare -systems, FHIR provides a flexible and modular framework. While it is essential -for ensuring interoperability across healthcare information systems, its role as -a transaction format also enables the development of specialized extensions -that provide the precision required for complex rare disease (RD) analysis. -Therefore, it remains a critical tool for enabling the smooth exchange of -electronic healthcare data between different platforms and applications.

-
-

Note

-

For our RD-CDM and the corresponding RareLink-CDM we utilise the

- -
-
-

FHIR and Rare Diseases (RDs)

-

In the context of RDs, FHIR plays a key role in improving data sharing -across institutions and research centers. Due to the scarcity and fragmentation -of RD data, standardized data exchange is crucial. FHIR enables the -standardization of clinical and genomic data, ensuring that RD-specific -information, such as phenotypic traits and genetic variants, can be captured and -shared in a structured manner. Despite its limitations in handling the -complexity of some RD data, FHIR’s widespread adoption ensures that RD data can -be integrated with other healthcare information systems, making it easier to -collaborate and share insights across various fields.

-

The HL7 International Patient Summary (IPS) -is a FHIR-based standard that aims to -provide a concise, standardized summary of a patient’s key health information. -This summary is designed to facilitate seamless healthcare transitions, -particularly for patients with complex health needs, such as those with rare -diseases. By standardizing data elements such as medications, allergies, and -relevant medical history, the IPS enhances communication between international -healthcare providers. This is especially important for RD patients, as the -inherent data scarcity requires data exchange and research on an international -level - such as by the European Reference Networks (ERNs).

-

The HL7 Genomics Reporting -standard is designed to facilitate the -exchange of detailed genomic data alongside pertinent clinical -information, including phenotypic observations. In the context of rare -diseases, this standard is critical for delivering the precise genomic -and phenotypical insights needed for accurate diagnoses and personalized -treatments. By structuring variant data, gene-disease associations, and other -molecular findings, HL7 Genomic Reporting enables healthcare providers -and researchers to effectively communicate complex results. The standard -supports extensions and customization, making it an essential tool for -advanced genomic medicine and rare disease data.

-
-
-

FHIR Overview - Clinicians

-

FHIR facilitates the exchange of healthcare information, including clinical, -administrative, public health, and research data across various settings, such -as in-patient and community care. It is applicable to both human and veterinary -medicine and aims for global usability.

-

Targeted at software developers and organizations creating interoperable -solutions, FHIR does not prescribe clinical best practices or provide user -interface and workflow guidance, as these are outside its scope. The -specification focuses on the technical aspects of exchanging clinical -information between electronic systems, presenting an overview that prioritizes -relevant content for the clinical community while allowing for deeper -exploration of technical details if desired.

-
-

Tip

- -
-
-
-

FHIR Overview - Developers

-

FHIR is designed to enable information exchange to support the provision of -healthcare in a wide variety of settings. The specification builds on and adapts -modern, widely used RESTful practices to enable the provision of integrated -healthcare across a wide range of teams and organizations.

-

The intended scope of FHIR is broad, covering human and veterinary, clinical -care, public health, clinical trials, administration and financial aspects. -The standard is intended for global use and in a wide variety of architectures -and scenarios.

-
-

Tip

- -
-
-
-

FHIR Overview - Architects

-

FHIR comprises two main components: Resources and APIs. Resources are -information models that define the essential data elements, constraints, -and relationships relevant to healthcare, analogous to physical models in XML -or JSON. APIs offer well-defined interfaces for application interoperability, -primarily using RESTful methods. Together, they establish a framework for -defining healthcare business objects, such as patients and procedures, -facilitating their computable implementation and sharing through standardized -interfaces.

-

Operationally, HL7 governs the standards development process that determines -the definition and existence of resources. Additionally, FHIR provides -mechanisms to tailor resources for specific contexts, ensuring adaptability -to diverse healthcare needs through profiling Resources.

-
-

Tip

- -
-
-
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/1_background/1_5_rd_cdm.html b/docs/_build/1_background/1_5_rd_cdm.html deleted file mode 100644 index 103ee05e4..000000000 --- a/docs/_build/1_background/1_5_rd_cdm.html +++ /dev/null @@ -1,231 +0,0 @@ - - - - - - - - - RD-CDM — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

RD-CDM

-
-

Tip

-

The RD-CDM v2.0.2 has been published in Nature Scientific Data. You can read -it here: https://www.nature.com/articles/s41597-025-04558-z.

-
-
-
-

RD-CDM v2.0.2 Overview

-

The ontology-based Rare Diseases Common Data Model (RD CDM) v2.0 was developed to address -the complexity and variability inherent in rare diseases, which number over -6,000 and often require unique approaches to research and clinical care. This -model is based on the Common Data Set from the European Rare -Disease Registry Infrastructure (ERDRI-CDS), providing a standardized structure -for data capture and analysis. We expanded on these elements to meet the -needs of international interoperability standards, aligning with both HL7 FHIR -and the GA4GH Phenopacket Schema. The development of this model -involved overcoming challenges such as the lack of standardized terms for -disease characteristics and the need to represent highly variable clinical data -across different rare diseases.

-
-../_images/rd_cdm_v2_0_2.svg -
-

Depicts version 2.0.2 of our ontology-based rare disease common data model (RD-CDM) based on the European Rare Disease Registry Infrastructure - Common Data Set (ERDRI-CDS), HL7 FHIR base resources v4.0.1 and the GA4GH Phenopacket Schema v2.0. The sections are derived from the ERDRI-CDS, and the section Diagnosis is extended by four subsections. For each section, all data elements and their data types. This data model does not define any cardinalities of relationships between elements or sections.

-
-
- -
-
-
-

Key Success Factors of a Rare Disease Common Data Model

-

Developing an RD-CDM also requires balancing between complexity and -usability. A successful model must be comprehensive enough to capture the -nuances of each rare disease, yet simple enough to be adopted across various -healthcare systems. One key difficulty is finding a common denominator for the -unique clinical requirements of diverse rare diseases while maintaining -flexibility for future expansions. Additionally, ensuring that the data can be -seamlessly integrated into existing healthcare systems without exceeding the -avaliable resources is also essential. Addressing these complexities, the -RD CDM v2.0 provides a framework that enhances the consistency of rare disease -data, enabling better comparative analysis across research institutions and -healthcare settings. While the RD-CDM v2.0.2 is not a balloted version, it can -serve as a template for future standardization efforts in rare disease research.

-

Key success factors for the RD-CDM include its ability to support secondary -uses of data, such as transferring data to central registries or enabling -federated analyses. By adhering to international interoperability standards, the -model ensures that data captured locally can be reused in broader contexts, -such as global research initiatives. This not only improves the efficiency of -rare disease research but also helps preserve the unique aspects of each -condition. The RD CDM’s flexibility allows it to evolve with the growing needs -of the rare disease community.

- -
-
-
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/1_background/1_6_redcap.html b/docs/_build/1_background/1_6_redcap.html deleted file mode 100644 index 94fac6aaf..000000000 --- a/docs/_build/1_background/1_6_redcap.html +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - - - REDCap — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

REDCap

-
-

Attention

-

To use your local REDCap project, you will need to set up a local REDCap -instance. For this please contact your local REDCap administratior. A project -name could for example be “RareLink - Your local REDCap location”.

-
-
-

Note

-

Read the REDCap Technical Overview HERE -which includes remarks on Best Practices, Dependencies, Infrastrucutre -Requirements, User Privileges, Authentication, Export, Interoperability, and more.

-
-

REDCap (Research Electronic Data Capture) is a web- and survey-based application -designed to capture data and create databases and projects for clinical research -by the Vanderbuilt University. As an open-source tool, REDCap has gained -widespread adoption across university hospitals, research institutes, and other -healthcare institutions due to its flexibility and cost-free availability. One -of the primary advantages of REDCap is its ability to be hosted locally within -the clinical information system of a hospital. This ensures that sensitive data -captured through REDCap remains within the hospital’s infrastructure, enhancing -data privacy and security. Although REDCap provides a highly flexible -environment for data collection, it does not natively define or enforce -standardized variables. This lack of native definitions for variables can lead -to inconsistencies in data capture across different projects and institutions, -potentially hindering data exchange and interoperability.

-
-

Tip

- -
-
-

REDCap Projects

-

The REDCap software and consortium support are available at no charge to non- -profit organisations that join the REDCap consortium. Joining requires -submission of a standard, online license aggreement. Currently the -REDCap consortium has 7,531 active partners in -159 countries.

-

If your local institution is a member of the REDCap consortium, you need to -contact your local REDCap Admin to create a project for you. Be aware, that -there are projects in development and production mode:

-REDCap Project Mode overview -
-

Tip

-

Here you find more explanations on the figure above: -A Comprehensive Guide to REDCap

-
-
-

Attention

-

The development mode is for testing purposes only - no real data should be -collected! Production mode is for real data collection and should be -coordinated with your local REDCap administrator. Read more HERE.

-
-
-
-

REDCap Instruments

-

Within REDCap, data collection is organized into instruments, which are -comprised of fields that capture specific data points. Each instrument can -contain multiple fields, such as text boxes, radio buttons, and dropdown -menus, allowing for the collection of diverse data types. REDCap provides a -wide range of field types to accommodate different data formats, including -text, numeric, date, and file uploads. Additionally, REDCap supports -conditional logic, enabling users to create dynamic forms that adapt based on -previous responses. This feature is particularly useful for complex surveys -and questionnaires, as it allows for a more personalized and streamlined data -collection process.

-
-

Note

-

For more information on REDCap instruments, refer to the REDCap User Guide.

-
-
-
-

REDCap Data Dictionary

-

Based on the instruments, REDCap generates a data dictionary that defines the -variables and their properties. The data dictionary serves as a reference for -the project’s data structure, providing detailed information on each variable, -such as its name, label, type, and validation rules. By defining variables in -the data dictionary, users can ensure consistency in data collection and -analysis, as well as facilitate data sharing and interoperability. The data -dictionary can be exported in various formats, such as CSV or Excel, making it -easy to share with collaborators or import into other systems.

-
-

Tip

-

For more information, check out this REDCap Data Dictionary User Guide.

-
-
-
-

REDCap API

-

The REDCap API is an interface that allows external applications to connect to REDCap remotely, and is -used for programmatically retrieving or modifying data or settings within REDCap. This includes -performing automated data imports/exports from a specified REDCap project, importing/exporting a -project’s metadata (i.e. data dictionary), and events. This is even an API method for creating whole new -projects. The API is a built-in feature of REDCap, so no installation is required. The REDCap API -implements the use of tokens as a means of authenticating and validating all API requests that are -received. Similar to the Data Import Tool in REDCap’s web interface, the API also implements data -validation when the API is used for data import purposes in order to ensure that only valid data gets -stored. The API provides a very efficient way to move data either to or from another system easily.

-
-

Tip

-

For more information on the REDCap API and activatation: REDCap API User Guide.

-
-
-
-

REDCap Ontology Services

-

Natively, REDCap can be considered a text-based data capture tool, as all -variables and vale sets can be defined as free text. However, to enhance -interoperability and data quality, REDCap can be integrated with ontology -services, such as integrating the ontology server BioPortal. -This allows users to define variables and value sets using standard -ontologies, such as the Human Phenotype Ontology (HPO), the Logical Observation -Identifiers Names and Codes (LOINC), or the Systematized Nomenclature of -Medicine (SNOMEDCT).

-
-

Tip

-

For more information on the integration of BioPortal with REDCap, read HERE.

-
-
-
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/2_rarelink_framework/2_0_rarelink_file.html b/docs/_build/2_rarelink_framework/2_0_rarelink_file.html deleted file mode 100644 index 7848b9be0..000000000 --- a/docs/_build/2_rarelink_framework/2_0_rarelink_file.html +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - - - - RareLink Framework — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- - - - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/2_rarelink_framework/2_1_rarelink_overview.html b/docs/_build/2_rarelink_framework/2_1_rarelink_overview.html deleted file mode 100644 index 1d4965d24..000000000 --- a/docs/_build/2_rarelink_framework/2_1_rarelink_overview.html +++ /dev/null @@ -1,309 +0,0 @@ - - - - - - - - - RareLink Overview — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- - - - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/2_rarelink_framework/2_2_rarelink_cdm.html b/docs/_build/2_rarelink_framework/2_2_rarelink_cdm.html deleted file mode 100644 index f5cb10701..000000000 --- a/docs/_build/2_rarelink_framework/2_2_rarelink_cdm.html +++ /dev/null @@ -1,1292 +0,0 @@ - - - - - - - - - RareLink-CDM — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- - - - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/2_rarelink_framework/2_3_rarelink_cli.html b/docs/_build/2_rarelink_framework/2_3_rarelink_cli.html deleted file mode 100644 index f6bdd07f8..000000000 --- a/docs/_build/2_rarelink_framework/2_3_rarelink_cli.html +++ /dev/null @@ -1,375 +0,0 @@ - - - - - - - - - RareLink CLI — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- - - - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/3_installation/3_0_install_file.html b/docs/_build/3_installation/3_0_install_file.html deleted file mode 100644 index c3be31b0d..000000000 --- a/docs/_build/3_installation/3_0_install_file.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - Installation — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Installation

-

This section provides installation guides for all components of the RareLink -framework.

-
-
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/3_installation/3_1_setup_rarelink_framework.html b/docs/_build/3_installation/3_1_setup_rarelink_framework.html deleted file mode 100644 index 91359934b..000000000 --- a/docs/_build/3_installation/3_1_setup_rarelink_framework.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - - - - Set up the RareLink Framework — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- - - - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/3_installation/3_2_setup_redcap_project.html b/docs/_build/3_installation/3_2_setup_redcap_project.html deleted file mode 100644 index 96e455108..000000000 --- a/docs/_build/3_installation/3_2_setup_redcap_project.html +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - - - Set up a REDCap Project — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Set up a REDCap Project

-
-

Attention

-

RareLink v2.0.2 is under testing and development. Please Contact us -before using it to ensure you have the latest updates and guidance.

-
-
-

Steps

-

To create a REDCap project, please follow these steps:

-
    -
  1. Check if your instituion hase a REDCap instance.

  2. -
  3. -
    Contact your local REDCap administrator to create your REDCap project with

    BioPortal ontology service.

    -
    -
    -
  4. -
  5. -
    Name your REDCap project, e.g.:
      -
    • RareLink - NameofyourInstitution or

    • -
    • RareLink - NameofyourProject.

    • -
    -
    -
    -
  6. -
  7. Let your institutional account be added and given API access for the project.

  8. -
  9. Follow the instructions given to you by your REDCap administator to -further set up your project.

  10. -
  11. Copy the API token for the project and keep it secure.

  12. -
  13. Run rarelink setup keys to set up the REDCap API access locally.

  14. -
-
-

Note

-

Be aware of the REDCap development and production mode. -Read the REDCap section and discuss this with your REDCap administrator!

-
-
-

Note

-

BioPortal must be connected to your REDCap instance to use the ontology -service. If you cannot see this option in your REDCap setup, contact your -REDCap administrator.

-
-
-
-
-

Next Steps and further reading

-
    -
  • Read the REDCap section to learn more about the REDCap API access.

  • -
  • Read RareLink CLI to learn more about the RareLink Command Line Interface (CLI)

  • -
  • Read RareLink User Guide to learn more about the RareLink User Guide.

  • -
-
-
- -
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/3_installation/3_3_data_dictionary.html b/docs/_build/3_installation/3_3_data_dictionary.html deleted file mode 100644 index f3df85b17..000000000 --- a/docs/_build/3_installation/3_3_data_dictionary.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - - - - Set up the Data Dictionary — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Set up the Data Dictionary

-
-

Attention

-

RareLink v2.0.2 is under testing and development. Please Contact us -before using it to ensure you have the latest updates and guidance.

-
-

To install the RareLink-CDM instruments, you will need to download the -instruments from here and follow the steps below. Make sure your REDCap project -is set up and running, otherwise follow the Set up a REDCap Project section to set up a -REDCap project. Read the RareLink-CDM section to learn more about the RareLink CDM -Instruments. In case you have any questions, please contact your local REDCap -administrator, or Contact us.

-
-

Installation

-
-
    -
  1. Download the instruments from the RareLink REDCap project.

  2. -
- -
    -
  1. Upload the data dictionary to your REDCap project

  2. -
-

To upload your data dictionary to your REDCap project automatically, type:

-
rarelink setup data-dictionary
-
-
-

Otherwise you can also import the instruments manually:

-
    -
  • Go to your REDCap project.

  • -
  • Click on the “Designer” tab on the left side of the screen.

  • -
-Designer tab - -
-
    -
  • Click on the “Data Dictionary” tab on the top of the screen.

  • -
-Data Dictionary tab - -
-
    -
  • Select the RareLink CDM Data Dictionary CSV file, or the separate instrument csv files.

  • -
  • Click on the “Import” button.

  • -
-
-
    -
  1. Verify that the instruments have been imported correctly.

  2. -
-
    -
  • Go to the “Online Designer” tab and check the data elements in each instrument.

  • -
  • -
    check with the RareLink-CDM page to verify that
      -
    • the instruments have been imported correctly.

    • -
    • the instruments are consistent with the RareLink CDM Data Dictionary.

    • -
    • the fields with BioPortal are connected properly.

    • -
    -
    -
    -
  • -
-
-
    -
  1. Activate the repeating instruments feature

  2. -
-
    -
  • Go to the Project Setup tab.

  • -
  • Within the section Enable optional modules and customizations click -on the `Enable` Repeating Instruments checkbox.

  • -
  • Enable repeating instruments for the following instruments:

  • -
-RareLink CDM Repeating Instruments - -
-
    -
  1. Start capturing data with the RareLink CDM instruments.

  2. -
-

Check out the Manual Data Capture or the Semi-Automatic Import section to learn more about the -semi-automatic import of data.

-
-
-

Continue here…

- -
-
-

Further reading…

-
    -
  • Read pages 25 & 26 of the Comprehensive Guide to REDCap for more information.

  • -
  • -
    Read the REDCap section to learn more about the general REDCap Setup,

    among others how to connect BioPortal to REDCap.

    -
    -
    -
  • -
-
-
- - -
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/3_installation/3_4_redcap_api.html b/docs/_build/3_installation/3_4_redcap_api.html deleted file mode 100644 index 29f7b00b7..000000000 --- a/docs/_build/3_installation/3_4_redcap_api.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - - Set up the REDCap API — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Set up the REDCap API

-
-

Attention

-

RareLink v2.0.2 is under testing and development. Please Contact us -before using it to ensure you have the latest updates and guidance.

-
-

The REDCap API for RareLink is a RESTful web service that allows users to -interact with REDCap programmatically. The API is designed to provide a simple -and secure way to access REDCap data and metadata. The API is built on top of -the REDCap API and provides a set of commands that allow users to perform -various operations on REDCap data.

-
-

Note

-

The REDCap API for RareLink is designed for developers and researchers who -are familiar with programming and web services. If you are not familiar -with these topics, seek help from someone who is.

-
-
-

API Set Up

-

In your terminal, write:

-
rarelink setup keys
-
-
-

This command guides you through setting up the REDCap API for RareLink. -You will be prompted to enter: -- Your REDCap instance URL. -- Your REDCap API token.

-

To view your current configuration:

-
rarelink setup view
-
-
-

To reset your REDCap API configuration:

-
rarelink setup reset
-
-
-
-

Tip

-

For help on any command, run:

-
-
rarelink --help
-
-
-
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/4_user_guide/4_0_guide_file.html b/docs/_build/4_user_guide/4_0_guide_file.html deleted file mode 100644 index cfbf4b2fa..000000000 --- a/docs/_build/4_user_guide/4_0_guide_file.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - - - - RareLink User Guide — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
- -
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/4_user_guide/4_1_manual_data_capture.html b/docs/_build/4_user_guide/4_1_manual_data_capture.html deleted file mode 100644 index ba9958896..000000000 --- a/docs/_build/4_user_guide/4_1_manual_data_capture.html +++ /dev/null @@ -1,643 +0,0 @@ - - - - - - - - - Manual Data Capture — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Manual Data Capture

-
-

Hint

-

This section offers detailed guidance for manually entering data into -RareLink CDM forms:

- -
-

Overview

- -
-
-

General Information (please read!)

-

This section provides general information about the manual data capture -process:

-
    -
  • Purpose: The manual data capture guide is designed to facilitate the -entry of patient data into the RareLink-CDM. It provides detailed instructions -for completing each section of the RareLink CDM forms.

  • -
  • Feedback: If you encounter any issues or have suggestions for improving -the manual data capture process, please find more information in the FAQ -section or write a GitHub issue. -RareLink is a collaborative effort, and we welcome your feedback.

  • -
  • ERDRI-CDS: The European Registry Registration requires specific fields to -be completed. You can find the ERDRI-CDS here -and the corresponding fields in the RareLink-CDM marked with ERDRI-CDS -in the guide.

  • -
  • Data Security: Ensure your local REDCap project is set up, and everything -is sorted with your local REDCap administrator. When capturing real patient -data, ensure that the REDCap project is in Production Mode! Read the -REDCap-Background section for more information and discuss this with your -local REDCap administrator.

  • -
  • Searching Terminologies with BioPortal: -Many RareLink sheets feature integrated BioPortal search functionality. -When searching, consider using synonyms or abbreviations, as these are also -indexed in BioPortal. If you cannot find the desired term, try searching for -broader or related terms. Alternatively, use the -OLS Platform to identify the -correct code and display for the concept you are looking for.

  • -
  • Updates: This section will continue to evolve as RareLink documentation -expands. Please check the Changelog and FAQ sections for updates and -additional information.

  • -
-
-
-

Types of Fields:

-
    -
  • Mandatory Fields *: Mandatory fields are marked within this guide with a red -asterisk (*). Ensure that all mandatory fields are completed before saving -the form.

  • -
  • Optional Fields: Fields that are not mandatory can be left blank if the -information is unknown or not required. This flexibility allows for partial -data entry while maintaining focus on required fields.

  • -
-
-
-
-

Types of Instruments:

- - - - - -

Single-Entry Form

-

–> These forms are designed for one-time data entry and capture information that -is not expected to change over time, but can be re-edited if necessary.

- - - - - -

Repeated Form

-

–> These forms are designed for capturing information that may change over time, -such as patient status, care pathway, and disease -history. You can repeat these forms to reflect changes over time.

-
    -
  • If you are within the form, you can use the “Save and Add New Instance” -at the end of the sheet button to create a new instance of the form directly.

  • -
  • Alternatively when viewing the individual record, you can click the -“+” button next to the form name. This action will create a new instance -of the form, allowing you to capture additional data points for the same -individual.

  • -
-
- Image 1 - Image 2 -

Return to top.

-
-
-
-
-

(1) Formal Criteria

- - - - - -

Single-Entry Form

-

This section contains information related to the formal criteria of -individuals:

-
    -
  • Record ID: Unique identifier for the record automatically assigned by the -local REDCap project. It is not editable, but can be used for reference within -your REDCap project, study, or registry.

  • -
  • 1.1 - Pseudonym (*, ERDRI-CDS): Unique identifier for the individual, often used as a local -patient-related identification code or registry ID

  • -
  • 1.2 - Date of Admission (*): The date of admission or data -capture. Ensure the format is YYYY-MM-DD.

  • -
-

Return to top.

-
-
-
-

(2) Personal Information

- - - - - -

Single-Entry Form

-
    -
  • This section captures personal details about the individual.

  • -
  • Fields that are not mandatory can be left blank if the information is -unknown or not required.

  • -
-
    -
  • 2.1 - Date of Birth (*, ERDRI-CDS): The individual’s date of birth. -If exact dates are not allowed to be entered, enter approximate dates in the -format 01.MM.YYYY or 01.01.YYYY.

  • -
  • 2.2 - Sex at Birth: ERDRI-CDS

  • -
  • 2.5 - Country of Birth: Refer to the ISO 3166 Country Codes to search for the country code. Enter only the three- letter ISO -code (e.g., CAN, TUR).

  • -
-

Return to top.

-
-
-
-

(3) Patient Status

- - - - - -

Repeated Form

-
    -
  • This section tracks the status of the patient over time

  • -
  • Forms can be repeated to reflect changes over time (e.g., vital status, -rare disease cases).

  • -
  • For ontology-specific searches, use OLS Platform for a smoother experience.

  • -
  • If exact dates are unknown, enter approximate dates in the format -01.MM.YYYY or 01.01.YYYY.

  • -
  • Fields that are not mandatory can be left blank if the information is -unknown or not required.

  • -
-
    -
  • patient_status_date: *

  • -
  • 3.1 - Vital Status: ERDRI-CDS

  • -
  • 3.2 - Time of Death: ERDRI-CDS

  • -
  • 3.5 - Length of Gestation at Birth: specify exact weeks and days in the -format 35+6.

  • -
  • 3.6 Undiagnosed RD Case: ERDRI-CDS

  • -
-

Return to top.

-
-
-
-

(4) Care Pathway

- - - - - -

Repeated Form

-
    -
  • It is a repeated form, with one encounter per form.

  • -
  • If possible, use the dates of the encounter.

  • -
  • In relation to the Disease sheet, you can create a comprehensive overview -of a patient’s disease history with encounters.

  • -
  • If the specific month or day is not known, select the 1st day of the -month or the 1st month of the year, respectively (e.g., 01.June.2022, -01.01.2014).

  • -
-
    -
  • 4.1 Encounter Date: ERDRI-CDS

  • -
  • 4.3 Encounter Status *: mandatory to ensure alignment with the -IPS-FHIR profiles.

  • -
  • 4.4 Encounter Type *: mandatory to ensure alignment with the IPS-FHIR -profiles - for ERDRI-CDS: please select RD specialist centre!

  • -
-

Return to top.

-
-
-
-

(5) Disease

- - - - - -

Repeated Form

-
-

Hint

-

If you have difficlties finding the rare disease, use the OLS Platform -for ontology-specific searches, for example the OLS-MONDO Search

-
-
    -
  • It is a repeated form; you can enter as many diseases as you wish with one -disease per form

  • -
  • If information for a specific field is not known, leave it blank.

  • -
  • If the specific month or day is not known, select the 1st day of the -month or the 1st month of the year (e.g., 01.June.2022, 01.01.2014).

  • -
-
    -
  • 5.1 Disease (* & ERDRI-CDS): one ontologies can be selected for -encoding. We recommend using MONDO to encode a disease.

    -
    -
      -
    • To link a disease to genetic variant(s) in Section 6.1 Genetic Findings, -enter the same MONDO or OMIM_p codes here. (OMIM_g codes refer to genes, -while OMIM_p codes refer to phenotypes (see OMIM).)

    • -
    • The ICD-11 is not integrated into BioPortal; use the ICD-11 Browser for codes like AA10.

    • -
    -
    -
  • -
  • 5.3 Age at Onset and 5.5 Age at Diagnosis (ERDRI-CDS): select -“prenatal” or “birth” where applicable, and always enter dates if available.

  • -
-

Return to top.

-
-
-
-

(6.1) Genetic Findings

- - - - - -

Repeated Form

-
-

Hint

-

If you have difficlties finding concepts, use the OLS Platform for -ontology-specific search!

-
-
    -
  • Fields that are not mandatory can be left blank if the information is -unknown or not required .Fill in all other fields about the variant, -depending on the information available and your current use case. It is a -repeated form; you can enter as many variants as needed.

  • -
-
    -
  • 6.1.1 Genomic Diagnosis (ERDRI-CDS):

    -
      -
    • To link a variant to a genetic diagnosis, select the corresponding disease, -if applicable, also to the 5.1 Disease.

    • -
    • You can also link multiple variants to a single disease -by repeating the form!

    • -
    -
  • -
  • 6.1.2 Progress Status of interpretaion: required when creating GA4GH -Phenopackets - You can find the exact definitions here: GA4GH ProgressStatus

  • -
  • 6.1.3 Interpretation Status: required when creating GA4GH Phenopackets - -you can find the exact definitions here: GA4GH InterpretationStatus

  • -
  • 6.1.6 Genetic Mutation String: If the variant is not validated or you are -unsure how to validate, enter all information in this field.

  • -
  • 6.1.7 - 6.1.9 Variant Expression [HGVS] (ERDRI-CDS): Please select -the appropriate HGVS nomenclature for the variant.

    -

    > If you are unsure, prioritize c.HGVS.

    -
    -
      -
    • Provide validated HGVS values (HGVS Nomenclature) for genomic (g.HGVS), DNA (c.HGVS), or -protein (p.HGVS) changes.

    • -
    • If the variant is not validated or you are unsure how to validate, enter -all information in the 6.1.6 Genetic Mutation String field.

    • -
    -
    -
  • -
  • HGVS Validation:

    -
    -
      -
    1. Validate mutations using ClinVar -or Varsome

    2. -
    3. Confirm the expression with the HGVS Validator.

    4. -
    5. If the validation fails, enter the details in the 6.1.6 Genetic Mutation String field.

    6. -
    7. *: Are you sure the entered HGVS expression was validated using -the variant validator? - this field is mandatory to ensure the -validation status.

    8. -
    -
    -
  • -
  • 6.1.15 Therapeutic Actionability: recommended when creating GA4GH -Phenopackets - you can find the exact definitions here: GA4GH TherapeuticActionability

  • -
-
-

Attention

-

The quality of the variant’s validated HGVS expression is crucial for the -correct interpretation of the genetic findings and creation of GA4GH -Phenopackets. If you are unsure about the validation, enter all information -in the 6.1.6 Genetic Mutation String field and consult a geneticist.

-
-

Return to top.

-
-
-
-

(6.2) Phenotypic Features

- - - - - -

Repeated Form

-
-

Tip

-

Try to define consistent guidelines for capturing phenotypic features and -their modifiers within your cohort to improve subsequent analyses.

-
-

This section provides details about phenotypic features:

-
    -
  • Use the OLS Platform for -ontology-specific searches, or visit HPO for -HPO codes.

  • -
-
    -
  • 6.2.1 Phenotypic Feature (* & ERDRI-CDS): It is a -repeated form; enter as many phenotypic features as needed.

  • -
  • 6.2.2 Status *: Always enter the status as either confirmed or refuted.

  • -
  • 6.2.3 Determination Date: If the specific month or day is not known for -the determination date, select the 1st day of the month or the 1st month of -the year (e.g., 01.June.2022, 01.01.2014).

    -
    -
      -
    • Note: If possible, capture the time a characteristic was observed by -the individual, not the time it was recorded.

    • -
    -
    -
  • -
  • -
    6.2.8 Clinical Modifiers: Encode modifiers for more detailed deep phenotyping, e.g.:
    -
    -
    -
  • -
  • 6.2.9 Evidence: as recommended by the Phenopacket Scehma, try to provide -the evidence code for the phenotypic feature, e.g. ECO:0006017 (“author -statement from published clinical study used in manual assertion”).

  • -
-

Return to top.

-
-
-
-

(6.3) Measurements

- - - - - -

Repeated Form

-
-

Tip

-

Define a set of rules for capturing measurements within a cohort to -improve subsequent analyses.

-
-
    -
  • It is a repeated form; capture information for one measurement and -repeat as many times as necessary. - Fields that are not mandatory can be left -blank if the information is unknown or not required.

  • -
-
    -
  • 6.3.0 Category *: mandatory to ensure alignment with the IPS-FHIR profiles.

  • -
  • 6.3.1 Assay *: encoded with LOINC codes. Use the LOINC Search -to find the correct code if you cannot find it in the embedded search.

  • -
  • 6.3.2 Value *: must be a value two digit decimal number.

  • -
  • 6.3.3 Value Unit *: encoded with the Units of measurement ontology (UO) -codes. Use the OLS-UO Search to -find the correct code if you cannot find it in the embedded search.

  • -
  • 6.3.4 Interpretation: NCIT encoded interpretation of the measurement. Try -remain consistent with the interpretation codes used in your cohort, -for example using the concepts Above Refernce Range -or Below Reference Range.

  • -
  • 6.3.5 Time Observed: *: mandatory to ensure alignment with the IPS-FHIR profiles.

  • -
-
-

Tip

-

OLS Platform for -ontology-specific searches if you cannot find the concepts you are looking for.

-
-

Return to top.

-
-
-
-

(6.4) Family History

- - - - - -

Repeated Form

-
    -
  • It is a repeated form; capture information for one family member per -sheet. Fields that are not mandatory can be left blank if the information is -unknown or not required.

  • -
  • Use the OLS Platform for -ontology-specific searches.

  • -
-
    -
  • 6.4.0 Pseudonym *: The pseudonym assigned to the family member must be -entered.

  • -
  • 6.4.4 Family Member Relationship *: the relationship of the family -member to the individual captured - mandatory to ensure alignment with the -IPS-FHIR profiles.

  • -
  • 6.4.5 Family Member Record Status *: the record’s status - mandatory -to ensure alignment with the IPS-FHIR profiles.

  • -
-

Return to top.

-
-
- -
-

(8) Disability

- - - - - -

Single-Entry Form

-

This section provides details about disabilities:

-
    -
  • Enter the disability code from the ICF (International Classification of -Functioning, Disability, and Health).

  • -
  • Ensure the data corresponds to the date of admission or data entry.

  • -
  • 8.1 Disability: ERDRI-CDS

  • -
-

Return to top.

-
-
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/4_user_guide/4_2_import_mapper.html b/docs/_build/4_user_guide/4_2_import_mapper.html deleted file mode 100644 index 12c5a4cfb..000000000 --- a/docs/_build/4_user_guide/4_2_import_mapper.html +++ /dev/null @@ -1,657 +0,0 @@ - - - - - - - - - Semi-Automatic Import — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Semi-Automatic Import

-

While many rare disease centres and hospitals hold specialised data in -unstructured formats, RareLink’s semi-automatic import guide provides a means -to standardize this information through LinkML to the RareLink-CDM. -Using LinkML-Map, you can -convert your local (tabular) data into a LinkML Schema JSON -representation conforming to the RareLink-CDM for subsequent import to REDCap.

-

A fully automatic conversion tool is not possible, as the RareLink-CDM is -based on Ontologies & Terminologies for which manual and professional annotation of your data to the -ontology terms is required. However, to make the process as efficient and user-friendly -as possible, we offer a semi-automatic guide with templates and examples that -significantly speed up the process of importing your data. Once your data is -processed and validated against the RareLink-CDM’s LinkML Schema, -you can export it diretly to GA4GH Phenopackets, import it to your local REDCap -project and subsequently also export it to HL7 FHIR.

-

Make sure to read the following sections in this documentation to make yourself -familiar with the model, the underlying data elements and its ontologies:

- -

If questions remain and you would like to discuss your data import with us, -please do not hesitate to Contact us. RareLink is a community-driven project -and we are happy to collaborate wherever possible.

-
-

Hint

-

In this process, you are responsible for the semantic mapping and -ontology annotation of your data elements. This step is critical for -ensuring that your data, including genetic mutations validated with HGVS, -conforms to the RareLink-CDM standard for Phenopackets and FHIR export and -expresses the correct semantic meaning of your data.

-
-
-

Overview

- -
-
-

Overview of Components

-

The semi-automatic import process involves several key components:

-
    -
  • RareLink-CDM LinkML Schema:

    -

    The target schema that defines the -structure of your data once converted. It is designed to be as close -as possible to the original REDCap data model while enabling export -to Phenopackets and FHIR. You can find it here:

    - -
  • -
  • LinkML Map:

    -

    A framework for specifying and executing mappings between -data models. You will use a SSSOM (Simple Standard for Sharing Ontological -Mappings) file to map your source data to the RareLink-CDM.

    - -
  • -
  • SSSOM Mapping File:

    -

    A tab-delimited file that defines the mapping from -your local data fields to the target elements in the RareLink-CDM. In the -SSSOM file, the object_id column represents the target value—either the -literal value (e.g., a date) or a standardized code (e.g., SNOMEDCT codes for -sex/gender). A RareLink-CDM SSSOM mapping template is provided below -as a starting point for your mappings.

    -
    -
    -
  • -
  • Semantic Ontology Annotation

    -

    The process of encoding each data element with an ontology term defined in the -value sets of the RareLink-CDM or the ontologies defiend for the respective -fields. This step ensures that the semantic meaning of your data is preserved -and that the mappings are interoperable. This process requires the most -attention and is crucial for the correct interpretation of your data. -To improve the quality of your mappings, you should use the ISO/TS 21564 MapQual -standard for evaluating the quality of data mappings between health information -systems.

    -

    The ISO/TS 21564 MapQual is an ISO technical specification that defines -best practices for evaluating the quality of data mappings between -health information systems. It provides guidelines for assessing the -semantic consistency, accuracy, and completeness of mappings, ensuring -that data is correctly annotated and interoperable.

    -

    Key steps in the encoding process include:

    -
    -
      -
    • Identification: Identify source data elements that require mapping.

    • -
    • Mapping Selection: Choose appropriate target ontology terms or codes.

    • -
    • Semantic Alignment: Ensure that each mapping preserves the intended -meaning of the source data.

    • -
    • Dual Encoding: Perform encoding and mapping independently by at least -two experts to improve objectivity and reliability.

    • -
    • Quality Assessment: Evaluate mappings for accuracy and completeness -against the established standards.

    • -
    • Documentation: Record mapping decisions, justifications, and quality -metrics for transparency and future reference.

    • -
    -
    -
  • -
-
-
-
-

Steps When Importing Data

-

The semi-automatic import process consists of the following steps:

-
-

1. Mapping

-

You begin by defining mappings from your local, tabular database to the -RareLink-CDM using a SSSOM mapping file provided by RareLink. The RareLink-CDM -has no strict minimal requirements beyond the formal criteria fields. However, -if an instrument is used, the corresponding required fields must be mapped. -Depending on the purpose of your data, additional fields should be included; -for instance, registry data should map consent fields, while analyses involving -measurements and genetics require the respective clinical and laboratory fields.

-
-

Tip

-

For more precise analyses and a more balanced cohort, we recommend defining a -ruleset for the fields mapped and encoded of your local database.

-
-
- -
-
-

1.2 Mapping Your Data

-

Use the provided SSSOM template file to map your local data to the RareLink-CDM. -This template defines standard target predicates and codes, ensuring consistency -in your mappings and facilitating interoperability.

-

RareLink-CDM SSSOM Template File

-

This template file is designed to assist users in creating mappings from their -local data sources to the RareLink-CDM target schema. It follows the SSSOM -(Simple Standard for Sharing Ontological Mappings) specification and includes -both required and additional optional columns to improve traceability and -clarity of the mapping process.

-

The template contains the following columns:

-
    -
  • subject_id: -A unique identifier for the source record or data element. This value -identifies which record in your local database is being mapped.

  • -
  • subject_label: -A human-readable label for the source record. This provides context -for the mapping and helps users quickly identify the data element.

  • -
  • predicate_id: -The mapping relation that specifies the target element in the LinkML Schema of -the RareLink-CDM. Use the default_prefix:slot_name from the -RareLink-CDM schema, for example:

    -
      -
    • rarelink_cdm:snomedct_184099003 for 2.1 Date of birth, or

    • -
    • rarelink_cdm:snomedct_281053000 for 2.2 Sex at birth.

    • -
    -
  • -
  • predicate_label: -The title of the target element from the schema, i.e. the name of the element -itself. This column provides a human-readable description of the target element being mapped. -For the examples above, these would be 2.1 Date of birth and -``2.2 Sex at birth``respectively.

  • -
  • object_id: -The target value in the RareLink-CDM. For literal fields, such as dates, -this is the actual value (e.g., “1970-02-15”). For coded fields, such as -sex, the object_id is the standardized code from the value set -(e.g., “SNOMEDCT:248152002” for female) or the code from the code system defined -by the data element (e.g., “HP:0001250” for a phenotype in element 6.2.1).

  • -
  • object_label: The human-readable label for the target value either from the -RareLink-CDM value sets or the code system defined by the data element. In -the case of dates, a “-” is sufficient.

  • -
  • match_type: -Describes the type of mapping used. Commonly this is set to “lexical” -when the mapping is based on a direct textual match.

  • -
  • mapping_date: -The date when the mapping was created. This column adds traceability -and helps with versioning of your mappings.

  • -
  • mapping_tool: -The tool or method used to generate the mapping. For example, “manual” -indicates that the mapping was curated by a human expert.

  • -
-
-

Hint

-

Download the RareLink-CDM SSSOM template file.

-
-

This template provides a minimal yet robust framework for defining your -mappings. It ensures that each mapping row clearly specifies which source -element is linked to which target element and how that connection was made. -By following this template, you can ensure that your mappings are consistent, -interoperable, and well-documented—key requirements for successful data -integration in the RareLink-CDM.

-

Below you can find a snippet of the RareLink-CDM SSSOM Template File:

-
# RareLink-CDM SSSOM Template File
-# This template maps source data elements from a registry CSV file to the target RareLink-CDM schema.
-# SSSOM documentation: https://mapping-commons.github.io/sssom/
-# RareLink-CDM LinkML schema: https://github.com/BIH-CEI/rarelink/tree/develop/src/rarelink_cdm/v2_0_2/schema_definitions
-#
-# Columns:
-#   subject_id      : Unique identifier for the source record (<record_id>).
-#   subject_label   : Human-readable label for the source record (<source_label>).
-#   predicate_id    : Fully qualified target element (e.g., rarelink_cdm:snomedct_184099003).
-#   predicate_label : Title of the target element from the schema.
-#   object_id       : Target value – a literal (e.g., date, numeric) or a standardized code with prefix.
-#   object_label    : Human-readable label for the target value (use "-" for dates/numerics when no label is needed).
-#   match_type      : Mapping derivation type (e.g., "lexical").
-#   mapping_date    : Date when the mapping was created (<mapping_date>).
-#   mapping_tool    : Method used to create the mapping (e.g., "manual").
-#
-subject_id   subject_label   predicate_id    predicate_label object_id       object_label    match_type      mapping_date    mapping_tool
-# === Formal Criteria (Singular) ===
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_422549004 "1.1 Pseudonym" <record_id>     <record_id>     lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_399423000 "1.2 Date of admission" <record_id>     <record_id>     lexical <mapping_date>  manual
-#
-# === Personal Information (Singular) ===
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_184099003 "2.1 Date of birth"     <dob>   -       lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_281053000 "2.2 Sex at birth"      <SNOMEDCT_sex_code>     <sex_label>     lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_1296886006        "2.3 Karyotypic Sex"    <karyotype_code>        <karyotype_label>       lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_263493000 "2.4 Gender Identity"   <SNOMEDCT_gender_code>  <gender_identity_label> lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_370159000 "2.5 Country of birth"  <ISO3166_code>  <ISO3166_code>  lexical <mapping_date>  manual
-#
-# === Patient Status (Repeating Allowed) ===
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_278844005 "3.1 Vital Status"      <vital_status_code>     <vital_status_label>    lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_398299004 "3.2 Time of Death"     <death_date>    <death_date>    lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_184305005 "3.3 Cause of Death"    <cause_of_death_code>   <cause_of_death_label>  lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_105727008 "3.4 Age Category"      <age_category_code>     <age_category_label>    lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_412726003 "3.5 Length of Gestation at Birth"      <gestation_length>      <gestation_length>      lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_723663001 "3.6 Undiagnosed RD Case"       <undiagnosed_flag>      <undiagnosed_flag>      lexical <mapping_date>  manual
-#
-# === Care Pathway (Repeating Allowed) ===
-<record_id>  "<source_label>"        rarelink_cdm:hl7fhir_enc_period_start   "4.1 Encounter Start"   <encounter_start_date>  -       lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:hl7fhir_enc_period_end     "4.2 Encounter End"     <encounter_end_date>    -       lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_305058001 "4.3 Encounter Status"  <encounter_status_code> <encounter_status_label>        lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:hl7fhir_encounter_class    "4.4 Encounter Class"   <encounter_class_code>  <encounter_class_label> lexical <mapping_date>  manual
-#
-# === Disease Information (Repeating Allowed) ===
-<record_id>  "<source_label>"        rarelink_cdm:disease_coding     "5.0 Disease Coding System"     <disease_coding>        <disease_coding>        lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_64572001_mondo    "5.1 Disease [MONDO]"   <disease_mondocode>     <disease_label> lexical <mapping_date>  manual
-# [...]
-# === Phenotypic Features (Repeating Allowed) ===
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_8116006   "6.2.1 Phenotypic Feature"      <phenotype1_code>       <phenotype1_label>      lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_363778006 "6.2.2 Phenotypic Feature Status"       <phenotype1_status_code>        <phenotype1_status_label>       lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_8116006_onset     "6.2.3 Determination Date"      <phenotype1_onset>      -       lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_8116006_resolut   "6.2.4 Resolution Date" <phenotype1_resolution> -       lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:hp_0003674 "6.2.5 Age of Onset"    <phenotype_age_onset>   <phenotype_age_onset>   lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:hp_0011008 "6.2.6 Temporal Pattern"        <temporal_pattern_code> <temporal_pattern_label>        lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:hp_0012824 "6.2.7 Phenotype Severity"      <phenotype_severity_code>       <phenotype_severity_label>      lexical <mapping_date>  manual
-# additional phenotype (if applicable)
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_8116006   "6.2.1 Phenotypic Feature"      <phenotype2_code>       <phenotype2_label>      lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:snomedct_8116006_onset     "6.2.3 Determination Date"      <phenotype2_onset>      -       lexical <mapping_date>  manual
-#
-# === Measurements (Repeating Allowed) ===
-# Measurement 1
-<record_id>  "<source_label>"        rarelink_cdm:ncit_c60819        "6.3.1 Assay"   <assay_A_code>  <assay_A_label> lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:ncit_c25712        "6.3.2 Measurement Value"       <measurement_A_value>   <measurement_A_value>   lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:ncit_c92571        "6.3.3 Unit"    <unit_A_code>   <unit_A_label>  lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:ncit_c41255        "6.3.4 Interpretation"  <measurement_A_interpretation_code>     <measurement_A_interpretation_label>    lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:ncit_c82577        "6.3.5 Time Observed"   <time_A_observed>       -       lexical <mapping_date>  manual
-# Measurement 2
-<record_id>  "<source_label>"        rarelink_cdm:ncit_c60819        "6.3.1 Assay"   <assay_B_code>  <assay_B_label> lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:ncit_c25712        "6.3.2 Measurement Value"       <measurement_B_value>   <measurement_B_value>   lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:ncit_c92571        "6.3.3 Unit"    <unit_B_code>   <unit_B_label>  lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:ncit_c41255        "6.3.4 Interpretation"  <measurement_B_interpretation_code>     <measurement_B_interpretation_label>    lexical <mapping_date>  manual
-<record_id>  "<source_label>"        rarelink_cdm:ncit_c82577        "6.3.5 Time Observed"   <time_B_observed>       -       lexical <mapping_date>  manual
-# [...]
-#
-# you cn find the entire template file here: https://github.com/BIH-CEI/rarelink/tree/develop/docs/_static/res/import_mapper_tsvs
-
-
-
-

Tip

-

You can view and download all the example csv and sssom mapping files:

- -
-
-
-
-
-

2. Semantic Ontology Annotation

-

According to your mappings, you must encode each data element with its -recommended ontology term of its

-
    -
  • value set (e.g.: 2.2. Sex at Birth) or

  • -
  • an ontology term of the coding system defined (e.g. 5.1 Disease [MONDO]).

  • -
-

This step ensures that the semantic meaning of your -data is preserved and that the mappings are interoperable. Within the -RareLink-CDM’s LinkML Schema you will find the slot names, the value set -encodings and the codesystems required for the encoding.

-
-

Note

-

As explained above, the ISO/TS 21564 MapQual -should be followed to ensure the quality of your mappings! In the above -section on components you find more details.

-
-

Then, write the results into the SSSOM mapping file using the template provided above -into the columns object_id and object_label while selecting the correct -predicate_id and predicate_label from the RareLink-CDM schema’s data elements.

-
-

Tip

-

Use the user-friendly Ontology Lookup Service (OLS) to find the correct -ontology terms for your data elements. You can access the OLS here: https://www.ebi.ac.uk/ols4/ontologies. -Do not forget to note the versions of the ontologies used and save it as -metadata for your dataset.

-
-
-
-
-

3. Preparation

-

Prepare for command execution by ensuring you have:

-
-
    -
  • A valid source data file (e.g., an Excel or CSV export of your local database)

  • -
  • Your SSSOM mapping file

  • -
  • The RareLink-CDM schema file (e.g., rarelink_cdm.yaml)

  • -
-
-

LinkML-Map will use these inputs to transform your data into JSON that conforms -to the RareLink-CDM model.

-

Then you can run LinkML Map:

-
linkml-tr map-data -T tr.yaml -s <path_to_rarelink_cdm.yaml> <path_to_my-data.yaml>
-
-
-
-
-
-

4. Execution and Validation

-

Run the integrated RareLink CLI command (e.g., rarelink import) to perform -the conversion. As part of the execution, validate your data against the RareLink-CDM -LinkML schema using the following command:

-
linkml-validate --schema src/rarelink_cdm/v2_0_2/schema_definitions/rarelink_cdm.yaml <path_to_your_data.json>
-
-
-

This validation step ensures that your data conforms to the model before -proceeding to further export (such as to Phenopackets) or upload to REDCap.

-
-
-
-

5. Next Steps

-

After validation, your RareLink-CDM data is ready. You may now choose to export -the data as Phenopackets or upload it to your REDCap project using the command:

-
rarelink redcap upload-records
-
-
-

or export it directly to Phenopackets using:

-
rarelink phenopackets export
-
-
-
-
-
-
-

Examples

-

Below we provide an example of a semi-structured tabular database with five -individuals along with their corresponding SSSOM mapping files.

-
-

Tip

-

You can view and download all the example csv and sssom mapping files here: -RareLink-CDM SSSOM Mapping Examples.

-
-
-
-

Example: Adult Rare Disease Registry

-

Includes clinical, laboratory, patient status, and genetic data.

-
Pseudonym,Sex,Gender,DOB,Disease_Diagnosis,Symptoms,Symptom_Dates,Lab_Measurements,Lab_Measurement_Dates,Patient_Status,Time_at_Last_Visit,Consent_Given,Genetic_Mutation,Zygosity,Mutation_Type,Genomic_Diagnosis
-ADR001,Female,Female,1970-02-15,Wilson Disease,"Hepatic dysfunction; tremors","2020-03-10;2020-04-15","Serum ceruloplasmin:12 mg/dL; ALT:85 U/L","2020-03-12;2020-03-12",Alive,2022-10-01,Y,ATP7B:c.3207C>A,Heterozygous,Missense,Wilson Disease confirmed
-ADR002,Male,Male,1982-07-30,Fabry Disease,"Angiokeratomas; Acroparesthesias","2019-06-20;2019-07-01","α-Gal A activity:Low; Creatinine:1.2 mg/dL","2019-06-22;2019-06-22",Alive,2021-12-15,Y,GLA:c.936+919G>A,Hemizygous,Deletion,Fabry Disease suspected
-ADR003,Female,Female,1965-11-05,Wilson Disease,"Jaundice; Neurological impairment","2018-02-05;2018-03-10","Serum ceruloplasmin:9 mg/dL; Bilirubin:3.2 mg/dL","2018-02-07;2018-02-07",Dead,2018-03-15,N,ATP7B:c.2304insG,Homozygous,Frameshift,Wilson Disease confirmed
-ADR004,Female,Female,1978-04-10,Fabry Disease,"Corneal verticillata; Peripheral neuropathy","2021-01-15;2021-01-20","α-Gal A activity:Borderline; ECG:Abnormal","2021-01-16;2021-01-16",Alive,2022-05-10,Y,GLA:c.937G>T,Hemizygous,Nonsense,Fabry Disease confirmed
-ADR005,Male,Male,1980-12-20,Fabry Disease,"Renal insufficiency; Cardiac issues","2020-11-05;2020-11-05","α-Gal A activity:Low; eGFR:45 mL/min","2020-11-06;2020-11-06",Alive,2022-08-22,Y,GLA:c.937G>A,Hemizygous,Missense,Fabry Disease confirmed
-
-
-

This dataset comprises records for adult patients diagnosed with rare diseases -such as Wilson Disease and Fabry Disease. It includes essential clinical data -(e.g., date of birth, sex at birth, disease diagnosis, symptoms, lab measurements, -patient status, time at last visit, and genetic mutation details). The accompanying -SSSOM mapping template guides you in mapping these source fields to the RareLink-CDM -schema.

-
# Adult Rare Disease Registry SSSOM Mapping Template
-# This template maps key fields from an adult rare disease registry CSV file
-# to the RareLink-CDM target schema.
-#
-subject_id   subject_label   predicate_id    predicate_label object_id       object_label    match_type      mapping_date    mapping_tool
-ADR001       "Patient ADR001"        rarelink_cdm:snomedct_422549004 "1.1 Pseudonym" ADR001  ADR001  lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:snomedct_184099003 "2.1 Date of birth"     1970-02-15      -       lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:snomedct_281053000 "2.2 Sex at birth"      SNOMEDCT:248152002      Female  lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:snomedct_263493000 "2.4 Gender Identity"   SNOMEDCT:446141000124107        Female gender identity  lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:snomedct_278844005 "3.1 Vital Status"      SNOMEDCT:438949009      Alive   lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:snomedct_64572001_mondo    "5.1 Disease [MONDO]"   MONDO:0012345   Wilson Disease  lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:loinc_99498_8      "5.2 Verification status"       HL7FHIR:confirmed       Confirmed       lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:snomedct_106221001_mondo   "6.1.1 Genetic Diagnosis [MONDO]"       MONDO:0012345   Wilson Disease  lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:loinc_lp7824_8     "6.1.6 Genetic Mutation String" ATP7B:c.3207C>A -       lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:loinc_53034_5      "6.1.11 Zygosity"       LOINC:LA6706-1  Heterozygous    lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:loinc_48019_4_other        "6.1.13 DNA Change Type"        LOINC:LA6698-0  Missense        lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:snomedct_309370004 "7.1 Consent Status"    hl7fhir_active  "Active"        lexical 2025-01-01      manual
-# Repeating elements: Patient ADR001 has two phenotypic features.
-ADR001       "Patient ADR001"        rarelink_cdm:snomedct_8116006   "6.2.1 Phenotypic Feature"      HP:0002480      hepatic encephalopathy  lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:snomedct_8116006_onset     "6.2.3 Determination Date"      2020-03-10      -       lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:snomedct_8116006   "6.2.1 Phenotypic Feature"      HP:0001337      tremors lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:snomedct_8116006_onset     "6.2.3 Determination Date"      2020-04-15      -       lexical 2025-01-01      manual
-# Repeating elements: Patient ADR001 has two measurements.
-ADR001       "Patient ADR001"        rarelink_cdm:ncit_c60819        "6.3.1 Assay"   LOINC:2064-4    Ceruloplasmin [Mass/volume]     lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:ncit_c25712        "6.3.2 Measurement Value"       12      12      lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:ncit_c92571        "6.3.3 Unit"    UO:0010067      milligram per deciliter lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:ncit_c82577        "6.3.5 Time Observed"   2020-03-12      -       lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:ncit_c60819        "6.3.1 Assay"   LOINC:1742-6    Alanine aminotransferase [Enzymatic activity/volume] in Serum or Plasma lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:ncit_c25712        "6.3.2 Measurement Value"       85      -       lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:ncit_c92571        "6.3.3 Unit"    UO:0000179      unit per liter  lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:ncit_c82577        "6.3.5 Time Observed"   2020-03-12      -       lexical 2025-01-01      manual
-#
-# Mappings for a second patient (ADR002)
-ADR002       "Patient ADR002"        rarelink_cdm:snomedct_422549004 "1.1 Pseudonym" ADR002  ADR002  lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:snomedct_184099003 "2.1 Date of birth"     1982-07-30      1982-07-30      lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:snomedct_281053000 "2.2 Sex at birth"      SNOMEDCT:248153007      Male    lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:snomedct_278844005 "3.1 Vital Status"      SNOMEDCT:438949009      Alive   lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:snomedct_64572001_mondo    "5.1 Disease [MONDO]"   MONDO:0010526   Fabry Disease   lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:loinc_99498_8      "5.2 Verification status"       HL7FHIR:differential    Differential    lexical 2025-01-01      manual
-ADR001       "Patient ADR001"        rarelink_cdm:snomedct_106221001_mondo   "6.1.1 Genetic Diagnosis [MONDO]"       MONDO:0010526   Fabry Disease   lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:loinc_lp7824_8     "6.1.6 Genetic Mutation String" GLA:c.936+919G>A        -       lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:loinc_53034_5      "6.1.11 Zygosity"       LOINC:LA6707-9  Hemizygous      lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:loinc_48019_4      "6.1.13 DNA Change Type"        LOINC:LA6692-3  Deletion        lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:snomedct_309370004 "7.1 Consent Status"    hl7fhir_active  "Active"        lexical 2025-01-01      manual
-# Repeating elements: Patient ADR002 has two phenotypic features.
-ADR002       "Patient ADR002"        rarelink_cdm:snomedct_8116006   "6.2.1 Phenotypic Feature"      HP:0001071      Angiokeratoma corporis diffusum lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:snomedct_8116006_onset     "6.2.3 Determination Date"      2019-06-20      -       lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:snomedct_8116006   "6.2.1 Phenotypic Feature"      HP:0031006      Acroparesthesias        lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:snomedct_8116006_onset     "6.2.3 Determination Date"      2019-07-01      -       lexical 2025-01-01      manual
-# Repeating elements: Patient ADR002 has two measurements.
-ADR002       "Patient ADR002"        rarelink_cdm:ncit_c60819        "6.3.1 Assay"   LOINC:55908-8   Alpha galactosidase A [Enzymatic activity/volume] in DBS        lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:ncit_c41255        "6.3.4 Interpretation"  NCIT:C78801     Value Below Reference Range     lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:ncit_c82577        "6.3.5 Time Observed"   2019-06-22      -       lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:ncit_c60819        "6.3.1 Assay"   LOINC:2160-0    Creatinine [Mass/volume] in Serum or Plasma     lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:ncit_c25712        "6.3.2 Measurement Value"       1.2     -       lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:ncit_c92571        "6.3.3 Unit"    UO:0010067      milligram per deciliter lexical 2025-01-01      manual
-ADR002       "Patient ADR002"        rarelink_cdm:ncit_c82577        "6.3.5 Time Observed"   2019-06-22      -       lexical 2025-01-01      manual
-#
-# Mappings for Patient three, four and five are within the file below.
-
-
-
-

Tip

-

You can view and download all the example csv and sssom mapping files here: -RareLink-CDM SSSOM Mapping Examples.

-
-
-
-
-
-

Additional Resources

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/4_user_guide/4_3_phenopackets.html b/docs/_build/4_user_guide/4_3_phenopackets.html deleted file mode 100644 index 325e6958e..000000000 --- a/docs/_build/4_user_guide/4_3_phenopackets.html +++ /dev/null @@ -1,464 +0,0 @@ - - - - - - - - - Phenopackets Module — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Phenopackets Module

-

The RareLink-Phenopacket module allows users to generate GA4GH Phenopackets -from data stored in a local REDCap project. For the RareLink-CDM the engine is -preconfigured so that Phenopackets can be instantly exported via the RareLink CLI.

-

The RareLink-Phenopacket module is designed to be modular and flexible so that -it can be adapted to other REDCap data structures. Please see the section below.

-
-

Overview:

- -
-
-

Get started

-

To use the Phenopacket export, you need a running REDCap project with API access -and the RareLink-CDM instruments set up. You also need the framework and all its -components running. You can run the following commands to set everything up:

-
    -
  • rarelink framework update to update the framework and all components.

  • -
  • rarelink setup redcap-project to set up a REDCap project with your REDCap -administrator.

  • -
  • rarelink setup keys to set up the REDCap API access locally.

  • -
-
-
- - -
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/4_user_guide/4_4_tofhir_module.html b/docs/_build/4_user_guide/4_4_tofhir_module.html deleted file mode 100644 index f33918dc6..000000000 --- a/docs/_build/4_user_guide/4_4_tofhir_module.html +++ /dev/null @@ -1,387 +0,0 @@ - - - - - - - - - FHIR Module — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

FHIR Module

-

The RareLink FHIR module implements the open-source toFHIR engine -which converts all data from the RareLink-CDM into FHIR resources. This section details the commands available in the RareLink CLI to manage the -FHIR module and associated pipelines.

-
-

Attention

-
    -
  • Please ensure you are authorized to export (real-world) data to -the configured FHIR server. This includes verifying compliance with -the ethical agreement and data protection regulations of your study -or registry

  • -
  • Be aware of your projects development and production mode. Read the -REDCap section and discuss this with your FHIR server administrator!

  • -
-
-
-

Overview

- -
-
-

Geting started

-

To use these functionalities, you need a running REDCap project with API access -and the RareLink-CDM instruments. You also need the framework and all its -components running. You can run the following commands to set everything up:

-
    -
  • rarelink framework update to update the framework and all components.

  • -
  • rarelink setup redcap-project to set up a REDCap project with your REDCap -administrator.

  • -
  • rarelink setup keys to set up the REDCap API access locally.

  • -
-
-
- - -
-

Docker Commands

-

These commands help manage Docker containers used in the RareLink framework.

-
    -
  • Stop All Containers:

    -
    -
    docker stop $(docker ps -q)
    -
    -
    -
    -
  • -
  • Remove Stopped Containers:

    -
    -
    docker rm $(docker ps -aq)
    -
    -
    -
    -
  • -
  • Restart Containers with Docker Compose:

    -
    -
    docker-compose down
    -docker-compose up -d
    -
    -
    -
    -
  • -
  • Inspect a Running Container:

    -
    -
    docker exec -it <container_name> /bin/bash
    -
    -
    -
    -
  • -
  • View Logs:

    -
    -
    docker logs -f <container_name>
    -
    -
    -

    For example:

    -
    docker logs -f tofhir
    -
    -
    -

    This shows real-time logs for the tofhir export process.

    -
    -
  • -
  • Copy Files from a Container:

    -
    -
    docker cp <container_name>:/path/to/file /local/destination
    -
    -
    -
    -
  • -
-
-
-
-

Importing FHIR to REDCap

-
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/4_user_guide/4_5_develop_redcap_instruments.html b/docs/_build/4_user_guide/4_5_develop_redcap_instruments.html deleted file mode 100644 index 9921120d5..000000000 --- a/docs/_build/4_user_guide/4_5_develop_redcap_instruments.html +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - - - Develop REDCap Instruments — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Develop REDCap Instruments

-

This section provides a guide for developing REDCap instruments around the -RareLink-CDM: that can also be processed by the Phenopacket and FHIR pipeline. -If the rules are followd upon development of the REDCap sheets, -mapping and setup steps will be required to convert the data into the -Phenopackets or FHIR format. For example, see the section Usage for other REDCap data models -of the RareLink-Phenopacket module.

-
-
-

REDCap instrument structure

-

A REDCap instrument is a collection of fields that are grouped together to -collect data for a specific purpose. The fields can be of different types, -such as text fields, radio buttons, checkboxes, etc. The fields can be -grouped into sections, and the sections can be repeated for a specific number -of times. The fields can also be validated using REDCap’s integrated -validators.

-
-
-
-

REDCap-inherent rules

-

REDCap variables and choice codes have specific limitations and requirements -you should or must comply with when creating your REDCap shets.

-
    -
  • REDCap recommends a maximum of 26 characters for variable names. If possible, -you should shorten the variable names to adhere to this limit.

  • -
  • REDCap variables must be unique and must not contain spaces or special -characters, therefore only alphanumeric characters and underscores are allowed.

  • -
-
-
- - -
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/4_user_guide/4_6_redcap_tools.html b/docs/_build/4_user_guide/4_6_redcap_tools.html deleted file mode 100644 index f897d5fa1..000000000 --- a/docs/_build/4_user_guide/4_6_redcap_tools.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - - REDCap Tools — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

REDCap Tools

-

Once you have your API access set up, you can interact with your REDCap project:

-
-

API Endpoints

-

Export Records

-

The export-records command allows users to export records from REDCap.

-
rarelink redcap export-records
-
-
-

Fetch Metadata

-

The fetch-metadata command allows users to fetch metadata from REDCap.

-
rarelink redcap fetch-metadata
-
-
-

Import Records

-

The import-records command allows users to import records into REDCap.

-
rarelink redcap upload-records
-
-
-

Validate HGVS

-

The validate-hgvs command allows users to validate HGVS strings.

-
rarelink redcap validate-hgvs
-
-
-
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/5_contributing.html b/docs/_build/5_contributing.html deleted file mode 100644 index 544dedd71..000000000 --- a/docs/_build/5_contributing.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - - Contributing — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Contributing

-
-

Attention

-

RareLink v2.0.2 is under testing and development. Please Contact us -before using it to ensure you have the latest updates and guidance.

-
-

RareLink is a community-driven project. We welcome contributions from everyone. -There are many ways to contribute to RareLink, including the following:

-
    -
  • Reporting a bug

  • -
  • Discussing the current state of the code

  • -
  • Submitting a fix

  • -
  • Proposing new features

  • -
-

Feel free to write an issue on our RareLink GitHub Repository -or reach out to us directly.

-

If you are interested in contributing to RareLink, please Contact us.

-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/6_changelog.html b/docs/_build/6_changelog.html deleted file mode 100644 index f8a1b946c..000000000 --- a/docs/_build/6_changelog.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - - Changelog — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Changelog

-
-

v2.0.2 (soon)

-

This version will be the version we publish RareLink as a stable release and -in a scientific journal.

-
-
-

v2.0.2 (Under Development)

-

The current version under development is v2.0.2.

-
-
-

Previous versions (up to v2.0):

-
    -
  • The ERKER project was the previous version of RareLink and can still be found -in the ERKER GitHub repository. However, the ERKER project is no longer -maintained and has been replaced by RareLink.

  • -
-
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/7_faq.html b/docs/_build/7_faq.html deleted file mode 100644 index 6ea0f1234..000000000 --- a/docs/_build/7_faq.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - FAQ — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

FAQ

-
    -
  • Q: How do I get started with the API?

    -

    A: You can start by reading the REDCap section to learn more about -the REDCap API access and the Set up the REDCap API section to learn more about the -RareLink API setup for your local REDCap project. However, you will need some -coding experience to interact with the API.

    -
  • -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/8_glossary.html b/docs/_build/8_glossary.html deleted file mode 100644 index 86eb4c9af..000000000 --- a/docs/_build/8_glossary.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - Glossary — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Glossary

-
-
Interoperability: definitions

The ability of different information systems, devices, or applications to -connect, in a coordinated manner, within and across organizational -boundaries to access, exchange, and cooperatively use data amongst -stakeholders.

-
-
-
-

Note

-

to be continued…

-
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/9_acknowledgements.html b/docs/_build/9_acknowledgements.html deleted file mode 100644 index 0d83a67e7..000000000 --- a/docs/_build/9_acknowledgements.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - Acknowlegements — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Acknowlegements

-

We specifically thank all the contributors to the RareLink project. W -e also acknowledge the following organizations for their support and collaboration:

- -
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/_downloads/be2e33b5e674cd00f02b65650407213c/downloads_manifest.json b/docs/_build/_downloads/be2e33b5e674cd00f02b65650407213c/downloads_manifest.json deleted file mode 100644 index 9c119449d..000000000 --- a/docs/_build/_downloads/be2e33b5e674cd00f02b65650407213c/downloads_manifest.json +++ /dev/null @@ -1,6 +0,0 @@ -{"rarelink_cdm_datadictionary": { - "version": "v2_0_2", - "file_name": "rarelink_cdm_datadictionary - v2_0_2.csv", - "url": "https://rarelink.readthedocs.io/en/latest/_downloads//rarelink_cdm_datadictionary%20-%20v2_0_2.csv" - } -} diff --git a/docs/_build/_images/DataDictionary.jpg b/docs/_build/_images/DataDictionary.jpg deleted file mode 100644 index e68b38dba..000000000 Binary files a/docs/_build/_images/DataDictionary.jpg and /dev/null differ diff --git a/docs/_build/_images/DesignerTab.jpg b/docs/_build/_images/DesignerTab.jpg deleted file mode 100644 index 3d31a9666..000000000 Binary files a/docs/_build/_images/DesignerTab.jpg and /dev/null differ diff --git a/docs/_build/_images/fhir_release4_logo.jpg b/docs/_build/_images/fhir_release4_logo.jpg deleted file mode 100644 index aa0f8cdbe..000000000 Binary files a/docs/_build/_images/fhir_release4_logo.jpg and /dev/null differ diff --git a/docs/_build/_images/rarelink-cdm-repeating-instruments.jpg b/docs/_build/_images/rarelink-cdm-repeating-instruments.jpg deleted file mode 100644 index 67b5e6bbe..000000000 Binary files a/docs/_build/_images/rarelink-cdm-repeating-instruments.jpg and /dev/null differ diff --git a/docs/_build/_images/rarelink_overview.svg b/docs/_build/_images/rarelink_overview.svg deleted file mode 100644 index 00f54f2c1..000000000 --- a/docs/_build/_images/rarelink_overview.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/_build/_images/rd_cdm_v2_0_0.jpeg b/docs/_build/_images/rd_cdm_v2_0_0.jpeg deleted file mode 100644 index b660a70c2..000000000 Binary files a/docs/_build/_images/rd_cdm_v2_0_0.jpeg and /dev/null differ diff --git a/docs/_build/_images/redcap_project_mode.jpg b/docs/_build/_images/redcap_project_mode.jpg deleted file mode 100644 index c89b58d4d..000000000 Binary files a/docs/_build/_images/redcap_project_mode.jpg and /dev/null differ diff --git a/docs/_build/_sources/10_license.rst.txt b/docs/_build/_sources/10_license.rst.txt deleted file mode 100644 index 55e4cd441..000000000 --- a/docs/_build/_sources/10_license.rst.txt +++ /dev/null @@ -1,33 +0,0 @@ -License -======= - - -RareLink is licensed under open-source the BSD 3-Clause License: - -Copyright (c) 2024 - 2025, Berlin Institute of Health, Charité Universitätsmedizin Berlin -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/docs/_build/_sources/11_download_manifest.rst.txt b/docs/_build/_sources/11_download_manifest.rst.txt deleted file mode 100644 index 29e197425..000000000 --- a/docs/_build/_sources/11_download_manifest.rst.txt +++ /dev/null @@ -1,18 +0,0 @@ -.. _11: - -Downloads Manifest -==================== - - -The downloads manifest contains links to all downloadable files in the RareLink -framework. Use this as the central source of truth for file downloads. Each file -entry includes the version, file name, and URL. - -- **Manifest File**: The manifest is hosted at `_static/downloads_manifest.json`: - :download:`View Downloads Manifest <_static/downloads_manifest.json>` - - - -.. note:: - The manifest is dynamically fetched by the RareLink CLI, allowing automated - versioning and URL updates. To learn more, visit the :ref:`2_3`. \ No newline at end of file diff --git a/docs/_build/_sources/12_contact.rst.txt b/docs/_build/_sources/12_contact.rst.txt deleted file mode 100644 index 7825b90db..000000000 --- a/docs/_build/_sources/12_contact.rst.txt +++ /dev/null @@ -1,13 +0,0 @@ -.. _12: - -Contact -======= - -Please check out our github Repository for more information: -`RareLink GitHub Repository `_. - -You can also reach us directly at: -- Email: - - `adam.graefe@charite.de` - - diff --git a/docs/_build/_sources/1_background/1_0_background_file.rst.txt b/docs/_build/_sources/1_background/1_0_background_file.rst.txt deleted file mode 100644 index ba5a3d5f5..000000000 --- a/docs/_build/_sources/1_background/1_0_background_file.rst.txt +++ /dev/null @@ -1,39 +0,0 @@ -.. _1_0: - -Background -============= - -RareLink was developed as a response to the widespread challenges in rare -disease (RD) data management, specifically the lack of interoperability and -standardization in healthcare information systems. As REDCap is widely used -in clinical studies and registries for data collection, RareLink was designed -to leverage REDCap's capabilities to facilitate the collection, processing, -and sharing of RD data. The framework ensures that RD data is -captured, processed, and exported following a predefined common data model -that facilitates downstream analysis using international standards. Furthermore, -RareLink provides a rule-based approach for the design of REDCap instruments -to extend the RD common data model with additional data elements. - -The integration of ontology codes and the connection to the BioPortal Ontology -Server enables researchers and clinicians to use standardized terminologies, -ensuring that data can be easily shared and reused across different platforms -and research networks. By leveraging HL7 FHIR and the GA4GH Phenopacket Schema, -RareLink supports the creation of interoperable and reusable RD datasets. - -In the following we provide an overview of the different components of the -RareLink framework, including the interoperability features, the supported -ontologies, the GA4GH Phenopacket Schema, the HL7 FHIR standard, the RD CDM, -and the REDCap data collection platform. - -.. toctree:: - :maxdepth: 4 - :caption: Contents - - 1_1_rd_interoperability - 1_2_ontologies - 1_3_ga4gh_phenopacket_schema - 1_4_hl7_fhir - 1_5_rd_cdm - 1_6_redcap - - diff --git a/docs/_build/_sources/1_background/1_1_rd_interoperability.rst.txt b/docs/_build/_sources/1_background/1_1_rd_interoperability.rst.txt deleted file mode 100644 index b95a3a29b..000000000 --- a/docs/_build/_sources/1_background/1_1_rd_interoperability.rst.txt +++ /dev/null @@ -1,91 +0,0 @@ -.. _1_1: - -Rare Diseases and Interoperability -=================================== - -Rare diseases (RDs), though individually rare, collectively impact a significant -global population, estimated to exceed 260 million people. These diseases are -often characterised by their genetic origins, with over 70% having a suspected -genetic basis. In Europe, a disease is classified as rare if it affects fewer -than 5 in 10,000 individuals, which highlights the challenge of addressing the -medical needs of over 17 million people across the continent. Despite the large -number of individuals affected, RDs are frequently overlooked in medical -research and care, largely due to the scarcity of available data and resources. - -Interoperability plays a crucial role in addressing these challenges. It ensures -that clinical data can be shared and understood across systems, which is -especially important in rare disease (RD) research. Many healthcare institutions -lack standardized approaches to data collection and storage, which leads to -inconsistencies and makes data exchange difficult. Without the use of -internationally recognized ontologies and coding systems, the data collected -cannot be efficiently reused or analyzed for further research. Interoperability -frameworks, such as RareLink, address this issue by facilitating the seamless -exchange of standardized medical data, thus promoting research and care for -RD patients. - -RareLink, for example, is an interoperability framework embedded in REDCap, -for RD registries and research. By leveraging international standards such as -HL7 FHIR and GA4GH Phenopackets, RareLink ensures that data collected can be -reused not only locally but also globally. This interoperability allows -researchers to connect with other databases and centers, enhancing the potential -for collaborative research and the development of novel treatments. Furthermore, -the inclusion of ontology codes enables precise bioinformatic analysis, which is -critical given the limited number of patients and data points available in RD -research. - -Ultimately, the success of RD research depends heavily on the ability -to connect and compare data from different sources. The development and -implementation of frameworks like RareLink enable more efficient diagnoses, -research, and treatment options by addressing one of the core issues: -interoperability. By promoting standardized, reusable data, RareLink -provides a foundation for advancements in RD care, facilitating a -future where more patients can receive timely diagnoses and access to effective -treatments. - -.. tip:: - Read the section on Rare Diseases in the article: - `Why Digital Medicine depends on Interoperability (Lehne M et al., 2019) `_ - - - -Definitons ----------- - -- FAIR Data Principles: - Designed to improve the automated discovery and usability of data by - machines while also facilitating its reuse by individuals - (Findable, Accessible, Interoperable, Reusable). - -- Interoperability: - The ability of different systems, applications, or devices to connect and - communicate in a coordinated manner without requiring effort from the end - user. - -- Syntactic Interoperability: - The ability of systems to communicate through compatible formats and - protocols, such as JSON files, a format for sharing data in key-value pairs - and arrays, using human-readable text. - -- Semantic Interoperability: - Ensures a shared and precise interpretation of medical data. Uniform data - structuring and codification enhance machine-to-machine communication, - improving accuracy and outcomes. - -- Medical Ontologies: - Formal and explicit representations of the concepts and relationships within - an area of healthcare designed to facilitate the organisation, integration, - and exchange of knowledge across healthcare systems and applications. - -- Medical Terminologies: - Encompass the vocabulary used in all healthcare communication and - documentation aspects, including terms for conditions, procedures, and - equipment, facilitating precise communication and supporting electronic - health information exchange. - - -Further Reading ---------------- -- `The FAIR Guiding Principles for scientific data management and stewardship (Wilkinson et al., 2016) `_ -- `Why Digital Medicine depends on Interoperability (Lehne M et al., 2019) `_ -- `Classification, Ontology, and Precision Medicine (Haendel MA et al., 2018) `_ - diff --git a/docs/_build/_sources/1_background/1_2_ontologies.rst.txt b/docs/_build/_sources/1_background/1_2_ontologies.rst.txt deleted file mode 100644 index 63e8c903f..000000000 --- a/docs/_build/_sources/1_background/1_2_ontologies.rst.txt +++ /dev/null @@ -1,111 +0,0 @@ -.. _1_2: - -Ontologies & Terminologies -========================== - -RareLink uses a variety of ontologies and terminologies to standardise the -representation of data and facilitate interoperability between different data -sources. These ontologies and terminologies are used to describe the phenotypic -and genotypic features of rare diseases (RDs) and their associated genes, as -well as the relationships between them. The use of standardised vocabularies -ensures that data can be easily integrated and queried across different -databases and platforms. - -- **Terminology**: - refers to a collection of preferred or officially recognized - terms within a specific domain. In the medical field, one of the most - significant terminologies for information retrieval is the Medical Subject - Headings (MeSH), which serves as a framework for indexing and searching - literature in Medline. - -- **Ontologies**: - ...on the other hand, go beyond mere vocabulary. They establish and define - relationships between concepts, enabling computational reasoning and - inference. - -.. tip:: - For more detail please read: `Classification, Ontology, and - Precision Medicine (Haendel MA et al., 2018) `_ - - -Ontologies used in RareLink ----------------------------- - -The following codesystems are used in the RareLink Core Framework: - -.. fields: Ontologies Used in RareLink - -:`ICD-10 & ICD-11 `_: - The **International Statistical Classification of Diseases** is used for - documenting morbidity in healthcare systems, encoding mortality statistics, - and billing purposes. The **ICD-11** encodes rare diseases more - comprehensively. - -:`ORDO `_: - The **Orphanet Rare Disease Ontology** is an open-access ontology for rare - diseases enabling queries of rare disorders and capturing relationships - between diseases. - -:`MONDO `_: - The **Monarch Initiative Disease Ontology** aims to harmonize disease - definitions across the world. It is a semi-automatically constructed - ontology merging multiple disease resources. - -:`OMIM `_: - **Online Mendelian Inheritance in Man** is an authoritative catalogue - focusing on genetic variation and phenotypic expressions. While **OMIM_g** - codes refer to specific genes, **OMIM_p** codes refer to phenotypes or - clinical manifestations associated with genetic disorders. - -:`SNOMED CT `_: - The **Systematized Nomenclature of Medicine Clinical Terms** is a - comprehensive clinical healthcare terminology providing codes, terms, and - definitions used in documentation. - -:`LOINC `_: - **Logical Observation Identifiers Names and Codes** is widely used - terminology for clinical observations and laboratory findings by - providing identifiers. - -:`UO `_: - The **Units of Measurement Ontology** is an ontology for units of - measurement used in scientific data. - -:`NCBITaxon `_: - The **NCBI Taxonomy** is a hierarchical classification of living organisms. - -:`HGNC `_: - The **Human Genome Organisation - Gene Nomenclature Committee** approves - unique symbols and names for human loci. - -:`HGVS `_: - The **Human Genome Variation Society** provides guidelines for cataloguing - variations in DNA, RNA, and protein sequences. - -:`NCIT `_: - The **National Cancer Institute Thesaurus** is a reference terminology for - cancer and biomedical research. - -:`GENO `_: - The **Genotype Ontology** is an ontology for describing genetic variation - and related concepts. - -:`SO `_: - The **Sequence Ontology** provides standardized vocabulary for genomic - annotation components, enhancing sharing and analysis of genomic information. - -.. note:: The versions used by the RareLink Core Framework can be found here: - `RareLink Ontologies `_. - -Further Reading ---------------- -- `The human phenotype ontology in 2021 `_ -- `The Sequence Ontology: a tool for the unification of genome annotations `_ -- `Rare diseases in ICD11: making rare diseases visible in health information systems through appropriate coding `_ -- `Mondo: Unifying diseases for the world, by the world `_ -- `Ordo: an ontology connecting rare disease, epidemiology and genetic data `_ -- `The use of SNOMED CT, 2013-2020: a literature review `_ -- `A 20-year evaluation of LOINC in the United States' largest integrated health system `_ -- `Genenames.org: the HGNC resources in 2023 `_ -- `HGVS recommendations for the description of sequence variants: 2016 update `_ -- `OMIM.org: Online Mendelian Inheritance in Man (OMIM®), an online catalog of human genes and genetic disorders `_ diff --git a/docs/_build/_sources/1_background/1_3_ga4gh_phenopacket_schema.rst.txt b/docs/_build/_sources/1_background/1_3_ga4gh_phenopacket_schema.rst.txt deleted file mode 100644 index 64334185d..000000000 --- a/docs/_build/_sources/1_background/1_3_ga4gh_phenopacket_schema.rst.txt +++ /dev/null @@ -1,89 +0,0 @@ -.. _1_3: - -GA4GH Phenopackets -=================== - -The Phenopacket schema, developed by the Global Alliance for Genomics and Health -(GA4GH), is an open standard designed to facilitate the exchange of detailed -phenotypic and genomic data. It is particularly useful for capturing rich -clinical data and complex phenotypes in a structured format, making it ideal -for rare disease (RD) research. The schema enables the precise description of -a patient's clinical features, genetic information, diagnoses, and disease -progression, all of which are critical for understanding RDs. -Phenopackets are widely adopted in bioinformatics pipelines to ensure the -standardization of data across different institutions and studies, enhancing -data reusability and interoperability. - -.. tip:: - Read the GA4GH Phenopacket Schema Paper here: - `The GA4GH Phenopacket schema defines a computable representation of clinical data. `_ - - -Phenopacket Blocks -------------------- - -The GA4GH Phenopcaket Schema v2.0: - -.. role:: color-base -.. role:: color-interpretation -.. role:: color-measurement -.. role:: color-genomic-vrs -.. role:: color-pedigree -.. role:: color-top-level -.. role:: color-medical-action - -.. figure:: ../images/phenopacket-schema-v2-overview.svg - - Overview of v2.0 of the schema. Lines between elements indicate composition. Note that the OntologyClass and TimeElement - links have been omitted for legibility. The colour scheme represents: :color-base:`base classes`, :color-interpretation:`interpretation classes`, - :color-measurement:`measurement classes`, :color-genomic-vrs:`genomic/vrs classes`, :color-pedigree:`pedigree classes`, - :color-top-level:`top-level classes`, :color-medical-action:`medical-action classes` - -__________________________________________________________________________________________________________________________ - -A Phenopacket characterizes an individual or biosample, linking it to detailed -phenotypic descriptions, genetic information, diagnoses, and treatments, all -structured as `building blocks `_. -These cover topics such as phenotype, medical actions, measurements, variant, -and pedigree, enabling a rich representation of data that can easily integrate -into larger schemas for specific use cases. - -Central to the Phenopacket schema is the `PhenotypicFeature `_, -which describes various characteristics such as signs, symptoms, and laboratory -findings using ontologies, like the Human Phenotype Ontology (HPO). The schema -also allows for the documentation of exclusions, severity, frequency, and onset -of features. Other essential components include `Measurement `_, -for capturing data, `Biosample `_, -for biological materials, and `MedicalAction `_, -which includes the hierarchical representation of medical interventions. -The `Treatment `_ -element encompasses a range of therapeutic agents, from medications to advanced -therapies. Together, these building blocks create a comprehensive framework for -clinical information. - -.. tip:: - `Here you can find the GA4GH Phenopacket Schema Documentation `_ - - -Phenopacket Tools ---------------------- - -Several tools have been developed around the Phenopacket schema, supporting the -collection, analysis, and dissemination of RD data. Tools such as the -Phenopacket validator ensure that data adhere to the schema's strict standards, -preventing inconsistencies and improving data quality. Additionally, the GA4GH -Beacon network allows researchers to query datasets to find specific genomic -variants associated with phenotypic data encoded in Phenopackets. These tools -have helped to broaden the impact of Phenopackets in RD research by promoting -data accuracy, accessibility, and reusability across multiple platforms and -projects. - -- `Phenopacket-tools: Building and validating GA4GH Phenopackets `_ - -Further Reading -__________________ - -- `The GA4GH Phenopacket schema defines a computable representation of clinical data `_ -- `GA4GH Phenopackets: A Practical Introduction `_ -- `A corpus of GA4GH Phenopackets: case-level phenotyping for genomic diagnostics and discovery `_ -- `Phenopacket-tools: Building and validating GA4GH Phenopackets `_ diff --git a/docs/_build/_sources/1_background/1_4_hl7_fhir.rst.txt b/docs/_build/_sources/1_background/1_4_hl7_fhir.rst.txt deleted file mode 100644 index 2ce0cad59..000000000 --- a/docs/_build/_sources/1_background/1_4_hl7_fhir.rst.txt +++ /dev/null @@ -1,122 +0,0 @@ -.. _1_4: - -HL7 FHIR -========== - -________ - -FHIR (Fast Healthcare Interoperability Resources) is an international standard -developed by Health Level 7 (HL7) for exchanging healthcare information electronically. -Initially designed as a transaction format to facilitate data exchanges between healthcare -systems, FHIR provides a flexible and modular framework. While it is essential -for ensuring interoperability across healthcare information systems, its role as -a transaction format also enables the development of specialized extensions -that provide the precision required for complex rare disease (RD) analysis. -Therefore, it remains a critical tool for enabling the smooth exchange of -electronic healthcare data between different platforms and applications. - -.. note:: - For our :ref:`1_5` and the corresponding :ref:`2_2` we utilise the - - - the `HL7 FHIR v4.0.1 base resources `_, - - the `International Patient Summary (IPS) 2.0 `_, and - - the `Genomics Reporting Profles v3.0.0 `_ - -FHIR and Rare Diseases (RDs) ------------------------------ - -In the context of RDs, FHIR plays a key role in improving data sharing -across institutions and research centers. Due to the scarcity and fragmentation -of RD data, standardized data exchange is crucial. FHIR enables the -standardization of clinical and genomic data, ensuring that RD-specific -information, such as phenotypic traits and genetic variants, can be captured and -shared in a structured manner. Despite its limitations in handling the -complexity of some RD data, FHIR's widespread adoption ensures that RD data can -be integrated with other healthcare information systems, making it easier to -collaborate and share insights across various fields. - -The `HL7 International Patient Summary (IPS) `_ -is a FHIR-based standard that aims to -provide a concise, standardized summary of a patient's key health information. -This summary is designed to facilitate seamless healthcare transitions, -particularly for patients with complex health needs, such as those with rare -diseases. By standardizing data elements such as medications, allergies, and -relevant medical history, the IPS enhances communication between international -healthcare providers. This is especially important for RD patients, as the -inherent data scarcity requires data exchange and research on an international -level - such as by the `European Reference Networks (ERNs) `_. - -The `HL7 Genomics Reporting `_ -standard is designed to facilitate the -exchange of detailed genomic data alongside pertinent clinical -information, including phenotypic observations. In the context of rare -diseases, this standard is critical for delivering the precise genomic -and phenotypical insights needed for accurate diagnoses and personalized -treatments. By structuring variant data, gene-disease associations, and other -molecular findings, HL7 Genomic Reporting enables healthcare providers -and researchers to effectively communicate complex results. The standard -supports extensions and customization, making it an essential tool for -advanced genomic medicine and rare disease data. - -FHIR Overview - Clinicians ---------------------------- -FHIR facilitates the exchange of healthcare information, including clinical, -administrative, public health, and research data across various settings, such -as in-patient and community care. It is applicable to both human and veterinary -medicine and aims for global usability. - -Targeted at software developers and organizations creating interoperable -solutions, FHIR does not prescribe clinical best practices or provide user -interface and workflow guidance, as these are outside its scope. The -specification focuses on the technical aspects of exchanging clinical -information between electronic systems, presenting an overview that prioritizes -relevant content for the clinical community while allowing for deeper -exploration of technical details if desired. - -.. tip:: - - Read more on `FHIR Overview for Clinicians `_. - -FHIR Overview - Developers ---------------------------- - -FHIR is designed to enable information exchange to support the provision of -healthcare in a wide variety of settings. The specification builds on and adapts -modern, widely used RESTful practices to enable the provision of integrated -healthcare across a wide range of teams and organizations. - -The intended scope of FHIR is broad, covering human and veterinary, clinical -care, public health, clinical trials, administration and financial aspects. -The standard is intended for global use and in a wide variety of architectures -and scenarios. - -.. tip:: - - Read more on `FHIR Overview for Developers `_. - -FHIR Overview - Architects ---------------------------- - -FHIR comprises two main components: Resources and APIs. Resources are -information models that define the essential data elements, constraints, -and relationships relevant to healthcare, analogous to physical models in XML -or JSON. APIs offer well-defined interfaces for application interoperability, -primarily using RESTful methods. Together, they establish a framework for -defining healthcare business objects, such as patients and procedures, -facilitating their computable implementation and sharing through standardized -interfaces. - -Operationally, HL7 governs the standards development process that determines -the definition and existence of resources. Additionally, FHIR provides -mechanisms to tailor resources for specific contexts, ensuring adaptability -to diverse healthcare needs through profiling Resources. - -.. tip:: - - Read more on `FHIR Overview for Architects `_. - -Further Reading ---------------- -- `Why digital medicine depends on interoperability `_ -- `HL7 FHIR-based tools and initiatives to support clinical research: a scoping review `_ -- `HL7 FHIR Overview `_ -- `FHIR Genomics Implementation Guide `_ - - diff --git a/docs/_build/_sources/1_background/1_5_rd_cdm.rst.txt b/docs/_build/_sources/1_background/1_5_rd_cdm.rst.txt deleted file mode 100644 index 0a74bd299..000000000 --- a/docs/_build/_sources/1_background/1_5_rd_cdm.rst.txt +++ /dev/null @@ -1,78 +0,0 @@ -.. _1_5: - -RD-CDM -======= - -.. tip:: - The RD-CDM v2.0.2 has been published in Nature Scientific Data. You can read - it here: https://www.nature.com/articles/s41597-025-04558-z. - -_________________________________________________________________________________ - -RD-CDM v2.0.2 Overview ------------------------ - -The ontology-based Rare Diseases Common Data Model (RD CDM) v2.0 was developed to address -the complexity and variability inherent in rare diseases, which number over -6,000 and often require unique approaches to research and clinical care. This -model is based on the Common Data Set from the European Rare -Disease Registry Infrastructure (ERDRI-CDS), providing a standardized structure -for data capture and analysis. We expanded on these elements to meet the -needs of international interoperability standards, aligning with both HL7 FHIR -and the GA4GH Phenopacket Schema. The development of this model -involved overcoming challenges such as the lack of standardized terms for -disease characteristics and the need to represent highly variable clinical data -across different rare diseases. - -.. figure:: ../_static/res/rd_cdm_v2_0_2.svg - - Depicts version 2.0.2 of our ontology-based rare disease common data model (RD-CDM) based on the European Rare Disease Registry Infrastructure - Common Data Set (ERDRI-CDS), HL7 FHIR base resources v4.0.1 and the GA4GH Phenopacket Schema v2.0. The sections are derived from the ERDRI-CDS, and the section Diagnosis is extended by four subsections. For each section, all data elements and their data types. This data model does not define any cardinalities of relationships between elements or sections. - - -.. tip:: - Further Links: - - - `RD-CDM Paper `_ - - `RD-CDM GitHub Repository `_ - - `RD-CDM Documentation `_ - - `RD-CDM Resources and Downloads `_ - -_________________________________________________________________________________ - -Key Success Factors of a Rare Disease Common Data Model -------------------------------------------------------- - -Developing an RD-CDM also requires balancing between complexity and -usability. A successful model must be comprehensive enough to capture the -nuances of each rare disease, yet simple enough to be adopted across various -healthcare systems. One key difficulty is finding a common denominator for the -unique clinical requirements of diverse rare diseases while maintaining -flexibility for future expansions. Additionally, ensuring that the data can be -seamlessly integrated into existing healthcare systems without exceeding the -avaliable resources is also essential. Addressing these complexities, the -RD CDM v2.0 provides a framework that enhances the consistency of rare disease -data, enabling better comparative analysis across research institutions and -healthcare settings. While the RD-CDM v2.0.2 is not a balloted version, it can -serve as a template for future standardization efforts in rare disease research. - -Key success factors for the RD-CDM include its ability to support secondary -uses of data, such as transferring data to central registries or enabling -federated analyses. By adhering to international interoperability standards, the -model ensures that data captured locally can be reused in broader contexts, -such as global research initiatives. This not only improves the efficiency of -rare disease research but also helps preserve the unique aspects of each -condition. The RD CDM's flexibility allows it to evolve with the growing needs -of the rare disease community. - -.. tip:: - Read `Review of Key Elements in Developing a Common Data Model for Rare Diseases: Identifying Common Success Factors (Graefe ASL, et al. 2024) `_. - -_________________________________________________________________________________ - -Further Reading ---------------- -- `European Rare Disease Infrastructure Common Data Set (ERDRI-CDS) `_ -- `An ontology-based rare disease common data model harmonising international registries, FHIR, and Phenopackets `_ -- `A Common Data Model for Rare Diseases based on the ERDRI-CDS, HL7 FHIR, and the GA4GH Phenopackets Schema v2.0 `_ -- `Review of Key Elements in Developing a Common Data Model for Rare Diseases: Identifying Common Success Factors `_ - diff --git a/docs/_build/_sources/1_background/1_6_redcap.rst.txt b/docs/_build/_sources/1_background/1_6_redcap.rst.txt deleted file mode 100644 index 8e629ee01..000000000 --- a/docs/_build/_sources/1_background/1_6_redcap.rst.txt +++ /dev/null @@ -1,134 +0,0 @@ -.. _1_6: - -REDCap -====== - -.. attention:: - To use your local REDCap project, you will need to set up a local REDCap - instance. For this please contact your local REDCap administratior. A project - name could for example be "RareLink - Your local REDCap location". - -.. note:: - Read the REDCap Technical Overview `HERE `_ - which includes remarks on Best Practices, Dependencies, Infrastrucutre - Requirements, User Privileges, Authentication, Export, Interoperability, and more. - -REDCap (Research Electronic Data Capture) is a web- and survey-based application -designed to capture data and create databases and projects for clinical research -by the Vanderbuilt University. As an open-source tool, REDCap has gained -widespread adoption across university hospitals, research institutes, and other -healthcare institutions due to its flexibility and cost-free availability. One -of the primary advantages of REDCap is its ability to be hosted locally within -the clinical information system of a hospital. This ensures that sensitive data -captured through REDCap remains within the hospital’s infrastructure, enhancing -data privacy and security. Although REDCap provides a highly flexible -environment for data collection, it does not natively define or enforce -standardized variables. This lack of native definitions for variables can lead -to inconsistencies in data capture across different projects and institutions, -potentially hindering data exchange and interoperability. - - -.. tip:: - - Read more here on how to `Join & Get REDCap `_. - - Read the `REDCap FAQs `_. - -REDCap Projects ---------------- -The REDCap software and consortium support are available at no charge to non- -profit organisations that join the REDCap consortium. Joining requires -submission of a standard, online license aggreement. Currently the -`REDCap consortium `_ has 7,531 active partners in -159 countries. - -If your local institution is a member of the REDCap consortium, you need to -contact your local REDCap Admin to create a project for you. Be aware, that -there are projects in development and production mode: - -.. image:: ../_static/res/redcap_project_mode.jpg - :alt: REDCap Project Mode overview - :align: center - -.. tip:: - Here you find more explanations on the figure above: - `A Comprehensive Guide to REDCap `_ - -.. attention:: - The development mode is for testing purposes only - no real data should be - collected! Production mode is for real data collection and should be - coordinated with your local REDCap administrator. Read more `HERE `_. - -REDCap Instruments ------------------- -Within REDCap, data collection is organized into instruments, which are -comprised of fields that capture specific data points. Each instrument can -contain multiple fields, such as text boxes, radio buttons, and dropdown -menus, allowing for the collection of diverse data types. REDCap provides a -wide range of field types to accommodate different data formats, including -text, numeric, date, and file uploads. Additionally, REDCap supports -conditional logic, enabling users to create dynamic forms that adapt based on -previous responses. This feature is particularly useful for complex surveys -and questionnaires, as it allows for a more personalized and streamlined data -collection process. - -.. note:: - For more information on REDCap instruments, refer to the `REDCap User Guide `_. - -REDCap Data Dictionary ----------------------- - -Based on the instruments, REDCap generates a data dictionary that defines the -variables and their properties. The data dictionary serves as a reference for -the project’s data structure, providing detailed information on each variable, -such as its name, label, type, and validation rules. By defining variables in -the data dictionary, users can ensure consistency in data collection and -analysis, as well as facilitate data sharing and interoperability. The data -dictionary can be exported in various formats, such as CSV or Excel, making it -easy to share with collaborators or import into other systems. - -.. tip:: - For more information, check out this `REDCap Data Dictionary User Guide `_. - -REDCap API ----------- - -The REDCap API is an interface that allows external applications to connect to REDCap remotely, and is -used for programmatically retrieving or modifying data or settings within REDCap. This includes -performing automated data imports/exports from a specified REDCap project, importing/exporting a -project’s metadata (i.e. data dictionary), and events. This is even an API method for creating whole new -projects. The API is a built-in feature of REDCap, so no installation is required. The REDCap API -implements the use of tokens as a means of authenticating and validating all API requests that are -received. Similar to the Data Import Tool in REDCap’s web interface, the API also implements data -validation when the API is used for data import purposes in order to ensure that only valid data gets -stored. The API provides a very efficient way to move data either to or from another system easily. - -.. tip:: - For more information on the REDCap API and activatation: `REDCap API User Guide `_. - -REDCap Ontology Services ------------------------- - -Natively, REDCap can be considered a text-based data capture tool, as all -variables and vale sets can be defined as free text. However, to enhance -interoperability and data quality, REDCap can be integrated with ontology -services, such as integrating the ontology server `BioPortal `_. -This allows users to define variables and value sets using standard -ontologies, such as the Human Phenotype Ontology (HPO), the Logical Observation -Identifiers Names and Codes (LOINC), or the Systematized Nomenclature of -Medicine (SNOMEDCT). - -.. tip:: - For more information on the integration of BioPortal with REDCap, read `HERE `_. - - -Further Reading ---------------- -- `Research Electronic Data Capture (REDCap) `_ -- `Research Development Using REDCap Software `_ -- `REDCap on FHIR: Clinical Data Interoperability Services `_ -- `REDCap API Documentation `_ -- `A systematic overview of rare disease patient registries: challenges in design, quality management, and maintenance `_ - - - - - diff --git a/docs/_build/_sources/2_rarelink_framework/2_0_rarelink_file.rst.txt b/docs/_build/_sources/2_rarelink_framework/2_0_rarelink_file.rst.txt deleted file mode 100644 index ba3ea932c..000000000 --- a/docs/_build/_sources/2_rarelink_framework/2_0_rarelink_file.rst.txt +++ /dev/null @@ -1,23 +0,0 @@ -.. _2_0: - -RareLink Framework -================== - -In this section we elaborate on the development of the RareLink framework, how -it is designed to facilitate the management of rare disease data, and how it -supports the creation of interoperable and reusable datasets. We provide an -overview of the different components of the RareLink framework, including the -native REDCap sheets, the entire project set up, the supported ontologies, the -GA4GH Phenopacket Schema and the HL7 FHIR standard. - -.. toctree:: - :maxdepth: 4 - :caption: Contents - - 2_1_rarelink_overview - 2_2_rarelink_cdm - 2_3_rarelink_cli - - - - diff --git a/docs/_build/_sources/2_rarelink_framework/2_1_rarelink_overview.rst.txt b/docs/_build/_sources/2_rarelink_framework/2_1_rarelink_overview.rst.txt deleted file mode 100644 index f30319119..000000000 --- a/docs/_build/_sources/2_rarelink_framework/2_1_rarelink_overview.rst.txt +++ /dev/null @@ -1,158 +0,0 @@ -.. _2_1: - -RareLink Overview -================= - -.. attention:: - RareLink v2.0.2 is under testing and development. Please :ref:`12` us - before using it to ensure you have the latest updates and guidance. - -RareLink aims to maximise the utility of REDCap by providing a comprehensive -framework designed specifically for rare disease (RD) research and care. -At the core of RareLink is this documentation, the RareLink instruments that are -based on the :ref:`1_5`, its user guides and the -surrounding preconfigured pipelines and software architecture. This framework -ensures that data capture is both consistent and compliant with HL7 FHIR and -GA4GH Phenopackets, without the need for additional coding or mapping. -As a result, RareLink allows researchers and clinicians to collect and process -RD data seamlessly within the REDCap environment. - -.. figure:: ../_static/res/rarelink_overview.svg - - Overview of the RareLink framework integrated with a local REDCap instance. - The framework comprises the RareLink instruments based on the RD-CDM, the - RareLink API, the toFHIR & CDIS module for export and import to HL7 FHIR IPS - and Genomic Reporting Resources, and the RareLink-Phenopackets module for - direct export to GA4GH Phenopackets. Additionally, the LinkML-based import - mapper facilitates data import from tabular databases into REDCap, while - the Manual Data Capture Guide assists with the manual data capture of - RD-CDM data in a local REDCap project. Click `here `_ - to see the figure in full size. - -.. note:: - You will need your own REDCap instance to deploy the RareLink framework. - See the :ref:`3_2` for more information. -_____________________________________________________________________________________ - -RareLink Framework components ------------------------------ - -_____________________________________________________________________________________ - -Semi-Automatic Import -______________________ - - In many Rare Disease specialised centres, registries or hospitals, data is - stored in tabular databases (e.g. Excel). RareLink's Import Mapper that is - utilising the `Phenopacket Mapper `_ - API can be used to convert and import data from these databases into the - REDCap RareLink format and your local REDCap project. - - .. admonition:: Continue here... - - - Guide for the :ref:`3_4`. - - User guide for :ref:`4_2`. - -_____________________________________________________________________________________ - -Manual Data Capture -___________________ - - RareLink provides a preconfigured data collection sheets based on the :ref:`1_5` - and user guides for manual data capture to ensure precision and correctness - of data captured. Further, RareLink defines guidelines for developing more - specialised REDCap sheets around the RD-CDM so that the data captured can - also be processed by our framework to generate FHIR Resources and Phenopackets. - - .. admonition:: Continue here... - - - Guide to install the :ref:`3_1`. - - Guide to develop the :ref:`3_2`. - - User guide for :ref:`4_1`. - -_____________________________________________________________________________________ - -Local REDCap Project Setup and API -__________________________________ - - RareLink is designed to be deployed and installed in a local REDCap instance. - Using the guidelines provided, or using our preconfigured RareLink-REDCap and - setting up the RareLink API, you can ensure that the data captured is compliant - with the our framework to generate FHIR Resources and Phenopackets. - - .. admonition:: Continue here... - - - How to :ref:`3_3`. - - How to deploy and :ref:`3_4`. - -_____________________________________________________________________________________ - -RareLink & Phenopackets -_______________________ - - RareLink utilises the Phenopacket Mapper to convert the data captured in - REDCap into Phenopackets. The RD-CDM and the corresponding RareLink - instruments are preconfigured within our GitHub repository to generate - Phenopackets automatically. - - .. admonition:: Continue here... - - - How to set up the :ref:`3_1` and the :ref:`3_4`. - - Guide to :ref:`4_3`. - - Phenopacket Mapper Repository: https://github.com/BIH-CEI/phenopacket_mapper - - Documentation: https://bih-cei.github.io/phenopacket_mapper/latest/ - - -RareLink & toFHIR -__________________ - - RareLink utilises `toFHIR `_ - from `SRDC `_ to convert the data captured - in REDCap into FHIR Resources. The RD-CDM and the corresponding RareLink - instruments are preconfigured within our GitHub repository to generate - International Patient Summary (IPS) v2.0, Genomoic Reporting v3.0.0, and - FHIR v4.0.1-base profile compliant FHIR Resources automatically. Below you - can find more information on how to set up the RareLink API and toFHIR - module in your local REDCap project to generate FHIR Resources. - - .. admonition:: Continue here... - - - How to set up the :ref:`3_1` and the :ref:`3_4`. - - Guide to :ref:`4_4`. - - toFHIR Repository: https://github.com/srdc/tofhirs - - Website: https://onfhir.io/tofhir/ - -_____________________________________________________________________________________ - - -RareLink & FHIR Import -_______________________ - - RareLink provides a detailed guide on how to link a FHIR server and import - FHIR Resources into REDCap utilising the REDCap modules Clinical Data - Interoperability Services (CDIS). - This module must be installed and activated at your local REDCap site by the - REDCap administrator. The guide includes a step by step guide on how to - import FHIR Resources into REDCap and how to map the FHIR Resources to the - RD-CDM. - - .. admonition:: Continue here.. - - - CDIS REDCap: https://projectredcap.org/software/cdis/ - - CDIS Paper: https://doi.org/10.1016/j.jbi.2021.103871 - - User guide for :ref:`cdis-module` - -_____________________________________________________________________________________ - -.. admonition:: Continue here... - - How to set up the :ref:`3_1` - - How to set up the :ref:`3_2` - - How to set up the :ref:`3_3` - - How to set up the :ref:`3_4` - - User guide for :ref:`4_1` - - User guide for :ref:`4_2` - - User guide for :ref:`4_3` - - User guide for :ref:`4_4` - - User guide for :ref:`4_5` - - User guide for :ref:`4_6` - diff --git a/docs/_build/_sources/2_rarelink_framework/2_2_rarelink_cdm.rst.txt b/docs/_build/_sources/2_rarelink_framework/2_2_rarelink_cdm.rst.txt deleted file mode 100644 index 51fa29feb..000000000 --- a/docs/_build/_sources/2_rarelink_framework/2_2_rarelink_cdm.rst.txt +++ /dev/null @@ -1,1077 +0,0 @@ -.. _2_2: - -RareLink-CDM -============= - -.. attention:: - RareLink v2.0.2 is under testing and development (the REDCap sheets may - be subject to change). Please :ref:`12` us before using it to ensure you have - the latest updates and guidance. - - -In this section, we provide an overview of the instruments that are part of the -RareLink Common Data Model (CDM), which is based on the :ref:`1_5`. -We have implemented the :ref:`1_5`'s definitions, codes, and mappings -into the REDCap instruments by encoding the variables and value sets in the -REDCap data dictionary. Each section of the model corresponds to a distinct -instrument, ensuring consistency and comprehensive data capture. - -.. hint:: - - Read the :ref:`1_6` page to understand how REDCap instruments & data dictionaries work. - - Read the :ref:`1_5` page for more information on the Rare Disease Common Data Model. - - -Contents ----------- - -- :ref:`rarelink_cdm_datadictionary` -- :ref:`rarelink_cdm_linkml` -- :ref:`rule-set` -- :ref:`field-anotations` -- :ref:`cdm_overview` - - -_____________________________________________________________________________________ - -.. _rarelink_cdm_datadictionary: - -REDCap Data Dictionary ------------------------ - -The RareLink CDM Data Dictionary is available for download as a CSV file: - -:download:`Download: RareLink-CDM Data Dictionary (v2.0.2) <../../res/rarelink_cdm_datadictionary - v2_0_2.csv>` - -... Next steps -________________ - -- ... read :ref:`3_1` for more information on how to manually import and set up - the RareLink-CDM Data Dictionary into your local REDCap project. -- ... or run the following commands to directly import the data dictionary into - your REDCap project using the :ref:`2_3`: - -.. code-block:: bash - - rarelink setup keys - rarelink setup data-dictionary - -Return to `top <#top>`_. - -_____________________________________________________________________________________ - -.. _rarelink_cdm_linkml: - -LinkML Schema ---------------- - -The RareLink-CDM has been encoded in the LinkML schema format to allow for -interoperability with other data models and standards. The LinkML schema -is an open-data modeling language and provides a machine-readable representation -of the RareLink-CDM, including the data elements, codes, and mappings to other -standards. In other words, the RareLink REDCap instruments are displayed in a -structured format that so that LinkML modules and functionalities can be used. - - -- Here you can view the `LinkML schema of the RareLink-CDM v2.0.2 `_. - -Usage -_______ - -We use RareLink-CDM-LinkML schema and functionalities in various RareLink -modules, for example: - -- When running ``rarelink redcap export-records`` you will see, that the data - from the REDCap project is automatically processed to the LinkML presentation - of the RareLink-CDM and validated against it. This ensures the data is ready - to :ref:`4_3`. -- Within the data model itself, we use its `python classes and properties `_ - automatically generated by LinkML schema to ensure consistent use of code - systems, versions and codes within one RareLink-CDM version and its mappings. -- Since our RareLink-CDM is modeled and defined with LinkML, we can make use - of the `LinkML Schema Automator `_ - for :ref:`4_2` from existing (tabular) databases. This allows import it into - a REDCap project and allows you to :ref:`4_3` or :ref:`4_4`. - -LinkML - further links -________________________ - -To know more about LinkML, check out: - -- The `LinkML GitHub repository `_ or -- the `LinkML Schema Documentation `_. - -Feel free to :ref:`12` us in case you would like to be connected to the LinkML -community or our colleagues from the `Monarch Initiative `_. - - - -Return to `top <#top>`_. - - -_____________________________________________________________________________________ - -.. _rule-set: - -Rules for REDCap codes and codesystems ---------------------------------------- - -REDCap variables and choice codes have specific limitations and requirements: - -- *REDCap* recommends a **maximum of 26 characters for variable names**. We have - shortened the variable names to adhere to this limitation. -- **REDCap variables** must be unique and must not contain spaces or special - characters, i.e. only alphanumeric characters and underscores. -- **REDCap choice codes** must be unique and must not contain spaces or special - characters, i.e. only alphanumeric characters and underscores. - -To address these, we have defined a set of rules for the REDCap variables and -choice codes in the RareLink-CDM Data Dictionary. The rules are as follows: - -1) The REDCap variable names are based on the :ref:`1_5` codes and display names. -2) The REDCap choices are based on the :ref:`1_5` codes and display names. -3) The REDCap variable names are shortened to adhere to the 26-character limit. -4) The REDCap variable names are unique and do not contain spaces or special characters. -5) The REDCap choice codes are unique and do not contain spaces or special characters. -6) All codes begin with the official codesystem prefix (e.g. HP, SNOMED, etc.) as a lower case string followed by an underscore and the code. -7) All codes are defined in the Field Annotations of each data element. - -Return to `top <#top>`_. - -_____________________________________________________________________________________ - -.. _field-anotations: - -REDCap Field Annotations -------------------------- - -Within the Field Annotation field of each REDCap element, we have defined each -element's metadata according to the :ref:`1_5` standard, including the following: - -- **Variable**: Corresponding to the data element code, codesystem, and display name. -- **Choices**: If applicable, the corresponding choices codesystem, and display name. -- **Version(s)**: If applicable, the corresponding codesystem versions used in the REDCap data element -- **Mapping**: If applicable, the corresponding mapping to the :ref:`1_4` or :ref:`1_3` standard. - -Example Field Annotation of 6.2.6 Temporal Pattern: - -.. code-block:: bash - - Variable: - HP:0012824 | Severity - Choices: - - HP:0012827 | Borderline - - HP:0012825 | Mild - - HP:0012826 | Moderate - - HP:0012829 | Profound - - HP:0012828 | Severe - Version(s): - - HPO Version 2025-05-06 - Mapping: - - HL7 FHIR Expression v4.0.1: Observation.interpretation - - GA4GH Phenopacket Schema v2.0 Element: PhenotypicFeature.severity - -Return to `top <#top>`_. - -_____________________________________________________________________________________ - -.. _cdm_overview: - -RareLink-CDM Instruments -------------------------- - -The RareLink-CDM instruments translate the `ontology-based Rare Disease Common Data Model (RD-CDM) `_ -into REDCap instruments. Slight adjustments to the RD-CDM were made to comply -with REDCap's :ref:`rule_set`, the data dictionary requirements and to ensure -alignment with: - -- international registries (e.g., the `European Reference Networks (ERNs) `_), -- the `HL7 FHIR International Patient Summary (IPS) v2.0.2 `_, -- the `HL7 Genomics Reporting v3.0.0 Profiles `_, and -- the `GA4GH Phenopacket Schema `_. - -Each instrument corresponds to a specific section of the RD-CDM and its -adpations are described in the section below for each section: - -- :ref:`formal-criteria` -- :ref:`personal-information` -- :ref:`patient-status` -- :ref:`care-pathway` -- :ref:`disease` -- :ref:`genetic-findings` -- :ref:`phenotypic-features` -- :ref:`measurements` -- :ref:`family-history` -- :ref:`consent` -- :ref:`disability` - -Return to `Top <#top>`_. - -.. tip:: - When capturing data manually in you REDCap project, we recommend using the Guide - for :ref:`4_1`! The information below rather details the structure of the :ref:`1_5` - within REDCap (i.e. therefore as the RareLink-CDM). - -_____________________________________________________________________________________ - - -Legend: Structure of the Schema below -______________________________________ - -Each instrument follows a consistent format for documentation and representation -of variables. Below is an explanation of the sections and terms used: - -**Instrument Header** -"""""""""""""""""""""""""""""""" - -Each instrument begins with: - -- **Title**: The name of the instrument and its corresponding REDCap identifier - in parentheses (e.g., ``rarelink_1_formal_criteria``). -- **Purpose**: A brief description of the instrument's objective. -- A box indicating whether the instrument is a **Single-Entry Form** (used once per individual): - -+-----------------------+ -| **Single-Entry Form** | -+-----------------------+ - -... or a **Repeating Form** (used multiple times per individual): - -+-------------------+ -| **Repeated Form** | -+-------------------+ - -**Variables & Adjustments** -"""""""""""""""""""""""""""""""" - -Each variable is documented with the following attributes: - -1. **Variable Name and Description**: - - - Listed with its sequence number and corresponding identifier - (e.g., 1.1 Pseudonym (``snomedct_422549004)``). - - Includes a brief explanation of the variable's purpose, if necessary. - -2. **Cardinality**: - - - Specifies whether the variable is **Required** or **Optional** and its occurrence: - - - ``1..1`` for exactly one occurrence, - - ``0..1`` for one optional occurence, or - - ``1..*`` / ``0..*`` for multiple required/optional occurences. - -3. **Validation**: - - - Describes the expected format or encoding for the variable - (e.g., **Free Text**, **Dropdown (choices encoded according to** :ref:`1_5`), - or specific ontology references like ``BIOPORTAL:MONDO``). - -.. note:: - - All repeating forms are optional, therefore the cardinality is always ``0..*``. - However, as soon as an instrument is used, specific elements may be required (``1..1``) - to comply with specific HL7 FHIR or Phenopacket requirements. - -_____________________________________________________________________________________ - -.. _formal-criteria: - -(1) Formal Criteria (``rarelink_1_formal_criteria``) -______________________________________________________ - -**Purpose**: Captures eligibility and registration information for individuals. - -+-----------------------+ -| **Single-Entry Form** | -+-----------------------+ - -**Variables & Adjustments**: - -- 1.1 Pseudonym (``snomedct_422549004``) - - - Cardinality: Required (1..1) - - Validation: Free Text - -- 1.2 Date of Admission (``snomedct_399423000``) - - - Cardinality: Required (1..1) - - Validation: Date format (YYYY-MM-DD) - -Return to `Instruments Overview `_. -Return to `top <#top>`_. - -_____________________________________________________________________________________ - -.. _personal-information: - -(2) Personal Information (``rarelink_2_personal_information``) -______________________________________________________________ - -**Purpose**: Captures demographic and personal details of individuals. - -+-----------------------+ -| **Single-Entry Form** | -+-----------------------+ - -**Variables & Adjustments**: - -- 2.1 Date of Birth (``snomedct_184099003``) - - - Cardinality: Required (1..1) - - Validation: Date format (YYYY-MM-DD) - -- 2.2 Sex at Birth (``snomedct_281053000``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to :ref:`1_5`) - -- 2.3 Karyotypic Sex (``snomedct_1296886006``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to :ref:`1_5`) - -- 2.4 Gender Identity (``snomedct_263495000``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to :ref:`1_5`) - -- 2.5 Country of Birth (``snomedct_370159000``) - - - Cardinality: Optional - - Validation: Free Text - -Return to `Instruments Overview `_. -Return to `top <#top>`_. - -_____________________________________________________________________________________ - -.. _patient-status: - -(3) Patient Status (``rarelink_3_patient_status``) -____________________________________________________ - -**Purpose**: Tracks changes in patient conditions over time. - -+-------------------+ -| **Repeated Form** | -+-------------------+ - -**Variables & Adjustments**: - -- Date of Completion for the Sheet (``patient_status_date``) - - - Novel Variable: Date of completion for the sheet - - Cardinality: Required (1..1) - - Validation: Date format (YYYY-MM-DD) - -- 3.1 Vital Status (``snomedct_278844005``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 3.2 Time of Death (``snomedct_398299004``) - - - Cardinality: Optional - - Validation: Date format (YYYY-MM-DD) - -- 3.3 Cause of Death [ICD10CM] (``snomedct_184305005``) - - - Cardinality: Optional - - Validation: `BIOPORTAL:ICD10CM` - -- 3.4 Age Category (``snomedct_105727008``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 3.5 Length of Gestation at Birth [weeks+days] (``snomedct_412726003``) - - - Cardinality: Optional - - Validation: Free Text - -- 3.6 Undiagnosed RD Case (``snomedct_723663001``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - - -Return to `Instruments Overview `_. -Return to `top <#top>`_. - -_____________________________________________________________________________________ - -.. _care-pathway: - -(4) Care Pathway (``rarelink_4_care_pathway``) -____________________________________________________ - -**Purpose**: Tracks details of individual encounters in the care pathway. - -+-------------------+ -| **Repeated Form** | -+-------------------+ - -**Variables & Adjustments**: - -- 4.1 Encounter Start (``hl7fhir_enc_period_start``) - - - Cardinality: Optional - - Validation: Date format (YYYY-MM-DD) - -- 4.2 Encounter End (``hl7fhir_enc_period_end``) - - - Cardinality: Optional - - Validation: Date format (YYYY-MM-DD) - -- 4.3 Encounter Status (``snomedct_305058001``) - - - Cardinality: Required (1..1) - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 4.4 Encounter Class (``hl7fhir_encounter_class``) - - - Cardinality: Required (1..1) - - Validation: Dropdown (choices encoded according to ref:`1_5`) - - -Return to `Instruments Overview `_. -Return to `top <#top>`_. - -_____________________________________________________________________________________ - -.. _disease: - -(5) Disease (``rarelink_5_disease``) -____________________________________________________ - -**Purpose**: Captures detailed information about the diseases affecting -individuals. - -+-------------------+ -| **Repeated Form** | -+-------------------+ - -**Variables & Adjustments**: - -- Disease Coding (``disease_coding``) - - - Novel Variable: Selection of code system for disease information (only one - code system allowed per disease entry. We recommend using MONDO). - - Cardinality: Required (1..1) - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -**Disease Information (Grouped Fields)**: - -The following fields capture the disease information using different encoding systems. The relevant field depends on the choice made in ``disease_coding``: - -- 5.1 Disease [MONDO] (``snomedct_64572001_mondo``) - - - Cardinality: Required (1..1) if ``disease_coding`` = 'mondo' - - Validation: `BIOPORTAL:MONDO` - -- 5.1 Disease [ORDO] (``snomedct_64572001_ordo``) - - - Cardinality: Required (1..1) if ``disease_coding`` = 'ordo' - - Validation: `BIOPORTAL:ORDO` - -- 5.1 Disease [ICD10CM] (``snomedct_64572001_icd10cm``) - - - Cardinality: Required (1..1) if ``disease_coding`` = 'icd10cm' - - Validation: `BIOPORTAL:ICD10CM` - -- 5.1 Disease [ICD11] (``snomedct_64572001_icd11``) - - - Cardinality: Required (1..1) if ``disease_coding`` = 'icd11' - - Validation: Free Text (`BIOPORTAL does not support ICD11 yet`) - -- 5.1 Disease [OMIM_P] (``snomedct_64572001_omim_p``) - - - Cardinality: Required (1..1) if ``disease_coding`` = 'omim' - - Validation: `BIOPORTAL:OMIM` - -**Additional Fields**: - -- 5.2 Verification Status (``loinc_99498_8``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 5.3 Age at Onset (``snomedct_424850005``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 5.4 Date of Onset (``snomedct_298059007``) - - - Cardinality: Optional - - Validation: Date format (YYYY-MM-DD) - -- 5.5 Age at Diagnosis (``snomedct_423493009``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 5.6 Date of Diagnosis (``snomedct_432213005``) - - - Cardinality: Optional - - Validation: Date format (YYYY-MM-DD) - -- 5.7 Body Site [SNOMED CT] (``snomedct_363698007``) - - - Cardinality: Optional - - Validation: `BIOPORTAL:SNOMEDCT` - -- 5.8 Clinical Status (``snomedct_263493007``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 5.9 Disease Severity (``snomedct_246112005``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - - -Return to `Instruments Overview `_. -Return to `top <#top>`_. - -_____________________________________________________________________________________ - -.. _genetic-findings: - -(6.1) Genetic Findings (``rarelink_6_1_genetic_findings``) -____________________________________________________ - -**Purpose**: Captures information about genetic variants and their clinical significance. - -+-------------------+ -| **Repeated Form** | -+-------------------+ - -**Variables & Adjustments**: - -- Genetic Diagnosis Code (``genetic_diagnosis_code``) - - - Novel Variable: Allows the user to choose the corresponding code system for - a genetic diagnosis related to the variant. - - Cardinality: Required (1..1) - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -**Genomic Diagnosis (Grouped Fields)**: - -The following fields capture the genomic diagnosis using different code systems. -The relevant field depends on the choice made in ``genetic_diagnosis_code``: - -- 6.1.1 Genomic Diagnosis [MONDO] (``snomedct_106221001_mondo``) - - - Cardinality: Required (1..1) if ``genetic_diagnosis_code`` = 'mondo' - - Validation: `BIOPORTAL:MONDO` - -- 6.1.1 Genomic Diagnosis [OMIM_p] (``snomedct_106221001_omim_p``) - - - Cardinality: Required (1..1) if ``genetic_diagnosis_code`` = 'omim' - - Validation: `BIOPORTAL:OMIM` - -**Variant Information**: - -- 6.1.2 Progress Status of Interpretation (``ga4gh_progress_status``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.1.3 Interpretation Status (``ga4gh_interp_status``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.1.4 Structural Variant Analysis Method (``loinc_81304_8``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.1.5 Reference Genome (``loinc_62374_4``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.1.6 Genetic Mutation String (``loinc_lp7824_8``) - - - Cardinality: Optional - - Validation: Free Text - -**HGVS Variant Information**: - -- Variant Expression (``variant_expression``) - - - Novel Variable: Ensures users select the type of validated HGVS expression. - - Cardinality: Required (1..1) - - Validation: Dropdown (choices: g.HGVS, c.HGVS, p.HGVS) - -- 6.1.7 Genomic DNA Change [g.HGVS] (``loinc_81290_9``) - - - Cardinality: Required (1..1) if ``variant_expression`` = 'ghgvs' - - Validation: Free Text - -- 6.1.8 Sequence DNA Change [c.HGVS] (``loinc_48004_6``) - - - Cardinality: Required (1..1) if ``variant_expression`` = 'chgvs' - - Validation: Free Text - -- 6.1.9 Amino Acid Change [p.HGVS] (``loinc_48005_3``) - - - Cardinality: Required (1..1) if ``variant_expression`` = 'phgvs' - - Validation: Free Text - -- Variant Validation (``variant_validation``) - - - Novel Variable: Ensures users confirm that HGVS expressions were validated using the variant validator. - - Cardinality: Required if any HGVS field is filled. - - Validation: Radio (Yes/No) - -**Variant Information**: - -- 6.1.10 Gene [HGNC-NR] (``loinc_48018_6``) - - - Cardinality: Optional - - Validation: `BIOPORTAL:HGNC-NR` - -- 6.1.11 Zygosity (``loinc_53034_5``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.1.11A Zygosity - Other [LOINC] (``loinc_53034_5_other``) - - - Cardinality: Required (1..1) if ``loinc_53034_5`` = 'Other' - - Validation: `BIOPORTAL:LOINC` - -- 6.1.12 Genomic Source Class (``loinc_48002_0``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.1.13 DNA Change Type (``loinc_48019_4``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.1.13A DNA Change Type - Other [LOINC] (``loinc_48019_4_other``) - - - Cardinality: Required (1..1) if ``loinc_48019_4`` = 'Other' - - Validation: `BIOPORTAL:LOINC` - -- 6.1.14 Clinical Significance [ACMG] (``loinc_53037_8``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.1.15 Therapeutic Actionability (``ga4gh_therap_action``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.1.16 Clinical Annotation Level Of Evidence (``loinc_93044_6``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - - -Return to `Instruments Overview `_. -Return to `top <#top>`_. - -_____________________________________________________________________________________ - -.. _phenotypic-features: - -(6.2) Phenotypic Feature (``rarelink_6_2_phenotypic_feature``) -______________________________________________________________ - -**Purpose**: Captures observed physical and clinical characteristics using -standardized terminologies. - -+-------------------+ -| **Repeated Form** | -+-------------------+ - -**Variables & Adjustments**: - -- 6.2.1 Phenotypic Feature (``snomedct_8116006``) - - - Cardinality: Required (1..1) - - Validation: `BIOPORTAL:HP` - -- 6.2.2 Status (``snomedct_363778006``) - - - Cardinality: Required (1..1) - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.2.3 Determination Date (``snomedct_8116006_onset``) - - - Cardinality: Optional - - Validation: Date format (YYYY-MM-DD) - -- 6.2.4 Resolution Date (``snomedct_8116006_resolut``) - - - Cardinality: Optional - - Validation: Date format (YYYY-MM-DD) - -- 6.2.5 Age of Onset (``hp_0003674``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.2.6 Temporal Pattern (``hp_0011008``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.2.7 Phenotype Severity (``hp_0012824``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.2.9 Evidence for the phenotype [ECO] (``phenotypicfeature_evidence``) - - - Cardinality: Optional - - Validation: `BIOPORTAL:ECO` - -**Clinical Modifiers adjustments**: - -The following fields capture clinical modifiers for a specific phenotypic -feature that were defined within the RareLink-CDM - based on the general -corresponding :ref:`1_5` field: - -- 6.2.8A Clinical Modifier [HP] (``hp_0012823_hp1``) - - - Cardinality: Optional - - Validation: `BIOPORTAL:HP` - -- 6.2.8B Clinical Modifier [HP] (``hp_0012823_hp2``) - - - Cardinality: Optional (Required if ``hp_0012823_hp1`` is filled) - - Validation: `BIOPORTAL:HP` - -- 6.2.8C Clinical Modifier [HP] (``hp_0012823_hp3``) - - - Cardinality: Optional (Required if ``hp_0012823_hp2`` is filled) - - Validation: `BIOPORTAL:HP` - -- 6.2.8D If applicable, what was the causing organism? [NCBITAXON] - (``hp_0012823_ncbitaxon``) - - - Cardinality: Optional - - Validation: `BIOPORTAL:NCBITAXON` - -- 6.2.8E If applicable, what was the primary body site? [SNOMED] - (``hp_0012823_snomed``) - - - Cardinality: Optional - - Validation: `BIOPORTAL:SNOMEDCT` - -Return to `Instruments Overview `_. -Return to `top <#top>`_. - -_____________________________________________________________________________________ - - -.. _measurements: - -(6.3) Measurements (``rarelink_6_3_measurements``) -____________________________________________________ - -**Purpose**: Captures various types of measurements including vital signs, laboratory tests, imaging, procedures, and more, aligned with IPS and Phenopackets profiles. - -+-------------------+ -| **Repeated Form** | -+-------------------+ - -**Key Adjustments**: - -1. **Vital Signs Panel**: Added ``6.3.1A Vital Signs Panel`` and - ``6.3.1A Other Vital Sign`` to align with the IPS vital status profile. -2. **Procedure-Specific Fields**: Integrated ``Procedure as NCIT or SNOMED?`` - and related fields for ``NCIT`` and ``SNOMED`` procedures to support IPS - procedure profiles. -3. **Complex Logic**: Highlighted branching logic based on - ``measurement_category`` to handle vital signs, laboratory, imaging, - procedures, and other measurement types. - -**Variables & Adjustments**: - -- 6.3.0A Category (``measurement_category``) - - - Cardinality: Required (1..1) - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.3.0B Status (``measurement_status``) - - - Cardinality: Required (1..1) - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -**Vital Signs**: - -- 6.3.1A Vital Signs Panel (``ln_85353_1``) - - - Cardinality: Optional (if ``measurement_category`` = "vital-signs") - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.3.1A Other Vital Sign (``ln_85353_1_other``) - - - Cardinality: Optional (Required if ``ln_85353_1`` = "other") - - Validation: `BIOPORTAL:LOINC` - -**Measurement Details**: - -- 6.3.1 Assay (``ncit_c60819``) - - - Cardinality: Optional (if ``measurement_category`` ≠ "vital-signs" and ≠ "procedure") - - Validation: `BIOPORTAL:LOINC` - -- 6.3.2 Value (``ncit_c25712``) - - - Cardinality: Optional (if ``measurement_category`` ≠ "procedure") - - Validation: Decimal number (e.g., 0.00–999999.99) - -- 6.3.3 Value Unit (``ncit_c92571``) - - - Cardinality: Optional (if ``measurement_category`` ≠ "vital-signs" or ``ln_85353_1_other`` is filled, and ≠ "procedure") - - Validation: `BIOPORTAL:UO` - -- 6.3.4 Interpretation (``ncit_c41255``) - - - Cardinality: Optional (if ``measurement_category`` ≠ "procedure") - - Validation: `BIOPORTAL:NCIT` - -- 6.3.5 Time Observed (``ncit_c82577``) - - - Cardinality: Required (1..1) - - Validation: Date format (YYYY-MM-DD) - -**Procedure-Specific Fields**: - -- Procedure as NCIT or SNOMED? (``procedure``) - - - Cardinality: Optional (if ``measurement_category`` = "procedure") - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.3.6A Procedure [NCIT] (``snomedct_122869004_ncit``) - - - Cardinality: Optional (if ``procedure`` = "ncit") - - Validation: `BIOPORTAL:NCIT` - -- 6.3.6B Procedure [SNOMED] (``snomedct_122869004_snomed``) - - - Cardinality: Optional (if ``procedure`` = "snomed") - - Validation: `BIOPORTAL:SNOMEDCT` - -- 6.3.7 Procedure [SNOMED] (``snomedct_122869004``) - - - Cardinality: Required (1..1, if ``measurement_category`` = "procedure") - - Validation: `BIOPORTAL:SNOMEDCT` - -- 6.3.7A Body Site [SNOMED] (``snomedct_122869004_bdsite``) - - - Cardinality: Optional (if ``measurement_category`` = "procedure") - - Validation: `BIOPORTAL:SNOMEDCT` - -- 6.3.7B Procedure Status [SNOMED] (``snomedct_122869004_status``) - - - Cardinality: Required (1..1, if ``measurement_category`` = "procedure") - - Validation: Dropdown (choices encoded according to ref:`1_5`) - - -Return to `Instruments Overview `_. -Return to `top <#top>`_. - -_____________________________________________________________________________________ - - -.. _family-history: - -(6.4) Family History (``rarelink_6_4_family_history``) -____________________________________________________ - -**Purpose**: Captures family history details of the individual, including -relationships, health statuses, and genetic information. - -+-------------------+ -| **Repeated Form** | -+-------------------+ - -**Key Adjustments**: - -1. **Pseudonym Field**: Added ``family_history_pseudonym`` to identify family - members across records. -2. **Required Fields**: Marked fields like ``family_history_pseudonym``, - ``snomedct_444018008``, and ``hl7fhir_fmh_status`` as mandatory for FHIR - base resource FamilyMemberHistory compatibility. -3. **Branching Logic**: Added logic for deceased family members to ensure fields - like ``loinc_54112_8`` and ``loinc_92662_6`` are completed if applicable. - - -**Variables & Adjustments**: - -- 6.4.0 Pseudonym (``family_history_pseudonym``) - - - Cardinality: Required (1..1) - - Validation: Free Text - -- 6.4.1 Propositus/-a (``snomedct_64245008``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.4.2 Relationship to Index Case (``snomedct_408732007``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.4.3 Consanguinity (``snomedct_842009``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.4.4 Family Member Relationship (``snomedct_444018008``) - - - Cardinality: Required (1..1) - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.4.5 Family Member Record Status (``hl7fhir_fmh_status``) - - - Cardinality: Required (1..1) - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.4.6 Family Member Sex (``loinc_54123_5``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.4.7 Family Member Age (``loinc_54141_7``) - - - Cardinality: Optional - - Validation: Integer (0–200) - -- 6.4.8 Family Member Date of Birth (``loinc_54124_3``) - - - Cardinality: Optional - - Validation: Date format (YYYY-MM-DD) - -- 6.4.9 Family Member Deceased (``snomedct_740604001``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 6.4.10 Family Member Cause of Death [ICD10CM] (``loinc_54112_8``) - - - Cardinality: Optional (available if ``snomedct_740604001`` = "snomedct_373066001") - - Validation: `BIOPORTAL:ICD10CM` - -- 6.4.11 Family Member Deceased Age (``loinc_92662_6``) - - - Cardinality: Optional (available if ``snomedct_740604001`` = "snomedct_373066001") - - Validation: Integer (0–200) - -- 6.4.12 Family Member Disease [MONDO] (``loinc_75315_2``) - - - Cardinality: Optional - - Validation: `BIOPORTAL:MONDO` - - -Return to `Instruments Overview `_. -Return to `top <#top>`_. - -_____________________________________________________________________________________ - -.. _consent: -(7) Consent (``rarelink_7_consent``) -____________________________________ - -**Purpose**: Captures the status and scope of consent provided by the patient -for research, data reuse, and other purposes. - -+-----------------------+ -| **Single-Entry Form** | -+-----------------------+ - -**Key Adjustments**: - -1. **Required Fields**: Fields like ``snomedct_309370004``, - ``snomedct_386318002``, ``rarelink_consent_contact``, and - ``rarelink_consent_data`` are mandatory to align with consent management - requirements. -2. **Biobank Information**: Added fields for biological samples and biobank - links to support research-focused data capture. -3. **Dropdown Logic**: Defined consistent encoding for dropdown fields to - ensure proper selection for consent-related decisions. - -**Variables & Adjustments**: - -- 7.1 Consent Status (``snomedct_309370004``) - - - Cardinality: Required (1..1) - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 7.2 Consent Date (``hl7fhir_consent_datetime``) - - - Cardinality: Optional - - Validation: Date format (YYYY-MM-DD) - -- 7.3 Health Policy Monitoring (``snomedct_386318002``) - - - Cardinality: Required (1..1) - - Validation: Free Text - -- 7.4 Agreement to be Contacted for Research Purposes (``rarelink_consent_contact``) - - - Cardinality: Required (1..1) - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 7.5 Consent to the Reuse of Data (``rarelink_consent_data``) - - - Cardinality: Required (1..1) - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 7.6 Biological Sample (``snomedct_123038009``) - - - Cardinality: Optional - - Validation: Dropdown (choices encoded according to ref:`1_5`) - -- 7.7 Link to a Biobank (``rarelink_biobank_link``) - - - Cardinality: Optional - - Validation: Free Text - -Return to `Instruments Overview `_. -Return to `top <#top>`_. - -_____________________________________________________________________________________ - -.. _disability: - -(8) Disability (``rarelink_8_disability``) -__________________________________________ - -**Purpose**: Captures information related to the classification of an individual's functioning and disability. - -+-----------------------+ -| **Single-Entry Form** | -+-----------------------+ - -**Key Adjustments**: - -1. **ICF Integration**: The variable ``rarelink_icf_score`` allows for the - classification of functioning and disability using the International - Classification of Functioning, Disability, and Health (ICF) framework. -2. **Documentation Support**: Links to relevant documentation and guidance - provided to ensure proper data entry and standardization. -3. **Optional Field**: The field is optional, catering to cases where detailed - disability classification is not required. - -**Variables & Adjustments**: - -- 8.1 Classification of Functioning / Disability (``rarelink_icf_score``) - - - Cardinality: Optional - - Validation: Free Text (encoded according to `BIOPORTAL:ICF`) - -Return to `Instruments Overview `_. -Return to `top <#top>`_. \ No newline at end of file diff --git a/docs/_build/_sources/2_rarelink_framework/2_3_rarelink_cli.rst.txt b/docs/_build/_sources/2_rarelink_framework/2_3_rarelink_cli.rst.txt deleted file mode 100644 index f93da13ed..000000000 --- a/docs/_build/_sources/2_rarelink_framework/2_3_rarelink_cli.rst.txt +++ /dev/null @@ -1,273 +0,0 @@ -.. _2_3: - -RareLink CLI -============= - -.. attention:: - RareLink v2.0.2 is under testing and development. Please :ref:`12` us - before using it to ensure you have the latest updates and guidance. - - -The RareLink Command Line Interface (CLI) is a tool that allows you to interact -with the RareLink framework. The CLI provides a set of commands that allow you -to set up and manage the RareLink framework, as well as to interact with the -data stored in the framework. The CLI is designed to be user-friendly and -intuitive, and it provides a simple and efficient way to work with the RareLink -framework. - -**Overview** - -- :ref:`rarelink_cli_framework` -- :ref:`rarelink_cli_setup` -- :ref:`rarelink_cli_redcap` -- :ref:`rarelink_cli_fhir` -- :ref:`rarelink_cli_phenopackets` - -_____________________________________________________________________________________ - - -.. _rarelink_cli_framework: - -1. Framework Setup (``framework``) -_________________________________ - -Commands related to setting up and managing the overall RareLink framework: - -_____________________________________________________________________________________ - -.. code-block:: console - - rarelink framework reset - -This command clears all framework configurations and reverts it to its initial -setup state. - -_____________________________________________________________________________________ - -.. code-block:: console - - rarelink framework status - -This command provides a summary of the framework's current status and -version installed. - -_____________________________________________________________________________________ - -.. code-block:: console - - rarelink framework update - -This command updates the framework, submodules and other components -to the latest version. - -_____________________________________________________________________________________ - -.. _rarelink_cli_setup: - -2. REDCap Setup (``setup``) -________________________________ - -Commands focused on configuring REDCap, setting up projects, and initializing -API access: - -_____________________________________________________________________________________ - - -.. code-block:: console - - rarelink redcap-setup --help - -- guided project setup, documentation links, admin instructions - -_____________________________________________________________________________________ - - -.. code-block:: console - - rarelink setup redcap-project - -- Start here if you want to set up your local REDCap Project for RareLink! - -_____________________________________________________________________________________ - -.. code-block:: console - - rarelink setup keys - -- Configure the RareLink framework by setting up API keys and variables. This - process ensures the .env file contains necessary configurations - see :ref:`3_4` - for more details, functionalities, and instructions. - -_____________________________________________________________________________________ - - -.. code-block:: console - - rarelink setup dictionary - -- Upload the most current RareLink-CDM Data Dictionary to an existing - REDCap project. - -_____________________________________________________________________________________ - -.. code-block:: console - - rarelink setup view - -- View the current RareLink API configuration and its location. - - -_____________________________________________________________________________________ - -.. code-block:: console - - rarelink setup reset - -- Reset all RareLink configuration by wiping the .env and JSON files. - -.. note:: - The API Keys are sensitive information and should be stored securely. - Do not share them with anyone outside your organisation. Within this - repository the .env file and the JSON files are ignored by the .gitignore - file to prevent accidental sharing of sensitive information. - - -.. _rarelink_cli_redcap: - - -3. REDCap Tools (``redcap``) -___________________________________ - -Commands for interacting with an already-configured REDCap instance, i.e. your -local REDCap project. - -.. code-block:: console - - rarelink redcap --help - -The overview of all redcap-tools functionalities and commands. - -_____________________________________________________________________________________ - -.. code-block:: console - - rarelink redcap download-records - -Download records from your REDCap project as JSON files and save them locally. - -.. attention:: - If your project is in PRODUCTION mode, the downloaded data might be sensitive. - It must only be stored within your organisational site's approved storage. - Read here more about the :ref:`1_6` project modes and discuss this - with your REDCap administrator. - -.. hint:: - If your dataset includes genetic HGVS mutations, please run - ``rarelink redcap validate-hgvs`` after downloading records to ensure proper - phenopackets and genomics quality of the genetic data. - -_____________________________________________________________________________________ - -.. code-block:: console - - rarelink redcap validate-hgvs - -Validate and encode HGVS strings in the downloaded records to ensure proper -phenopackets and genomics quality of the genetic data. This command will -iterate through your downloaded data, validate all HGVS strings and give you a -summary of the validation process. - -_____________________________________________________________________________________ - -.. code-block:: console - - rarelink redcap fetch-metadata - -- Fetch all metadata from your current REDCap project. - -_____________________________________________________________________________________ - -.. code-block:: console - - rarelink redcap upload-records - -- Upload records to your REDCap project from JSON files stored locally. - -.. warning:: - This command will overwrite existing records with the same record_id in your - REDCap project. Make sure have unique ``record_id``s or back up your data - before running this command, e.g. by running - `rarelink redcap download-records`. - -_____________________________________________________________________________________ - - -.. _rarelink_cli_fhir: - -4. FHIR configuration and pipelines (``fhir``) -______________________________________________ - - Setup, manage, and execute the REDCap-FHIR module. - -_____________________________________________________________________________________ - -.. code-block:: console - - rarelink fhir --help - -The overview of all FHIR functionalities and commands. - -_____________________________________________________________________________________ - -.. code-block:: console - - rarelink fhir setup - -- Configure the toFHIR pipeline for the RareLink framework. - -_____________________________________________________________________________________ - -.. code-block:: console - - rarelink fhir hapi-server - -- Set up a local HAPI FHIR server with Docker, avoiding conflicts. - -_____________________________________________________________________________________ - -.. code-block:: console - - rarelink fhir restart-dockers - -- Stop, remove, and restart all relevant Docker containers. - -_____________________________________________________________________________________ - -.. code-block:: console - - rarelink fhir export - -- Export data to the configured FHIR server using the toFHIR pipeline. - - -.. note:: - For this you need your REDCap project running and API access configured. - Run `rarelink redcap-setup redcap-project-setup` and `rarelink redcap-setup - redcap-api-setup start` to set up a REDCap project and API access. - -- `download-records` (fetch records as JSON files) - -_____________________________________________________________________________________ - -.. _rarelink_cli_phenopackets: - -5. Phenopacket Export (``phenopackets``) -________________________________________ - -Export data to Phenopackets using the ToPhenopacket pipeline. - -.. code-block:: console - - rarelink phenopackets export - -- Exports REDCap from your configured project data to local Phenopackets. \ No newline at end of file diff --git a/docs/_build/_sources/3_installation/3_0_install_file.rst.txt b/docs/_build/_sources/3_installation/3_0_install_file.rst.txt deleted file mode 100644 index 196692a4a..000000000 --- a/docs/_build/_sources/3_installation/3_0_install_file.rst.txt +++ /dev/null @@ -1,19 +0,0 @@ -.. _3_0: - -Installation -==================== - -This section provides installation guides for all components of the RareLink -framework. - - -.. toctree:: - :hidden: - - 3_1_setup_rarelink_framework - 3_2_setup_redcap_project - 3_3_data_dictionary - 3_4_redcap_api - - - \ No newline at end of file diff --git a/docs/_build/_sources/3_installation/3_1_setup_rarelink_framework.rst.txt b/docs/_build/_sources/3_installation/3_1_setup_rarelink_framework.rst.txt deleted file mode 100644 index 1ca11ed9f..000000000 --- a/docs/_build/_sources/3_installation/3_1_setup_rarelink_framework.rst.txt +++ /dev/null @@ -1,126 +0,0 @@ -.. _3_1: - -Set up the RareLink Framework -============================= - -.. attention:: - RareLink v2.0.2 is under testing and development. Please :ref:`12` us - before using it to ensure you have the latest updates and guidance. - - -Getting Started ---------------- - -Follow these steps to set up the project locally and run tests. - -1. Clone the repository: - -.. code-block:: bash - - git clone https://github.com/BIH-CEI/rarelink.git - cd rarelink - -2. Create a virtual environment: - -.. code-block:: bash - - python3 -m venv .venv - source .venv/bin/activate # On macOS/Linux - .venv\Scripts\activate # On Windows - -3. Install dependencies: - -.. code-block:: bash - - pip install . - -4. Configure all api keys necessary to use rarelink by running the following -command: - -.. code-block:: bash - - rarelink setup keys - - This command will prompt you to enter the following keys: - - BioPortal API key - - REDCap API key - - REDCap URL - - REDCap project ID - -.. note:: - You can create your free BioPortal account here: `BioPortal `_ - -5. Run tests: - Use `pytest` to run the test suite. - -.. code-block:: bash - - pytest - -_____________________________________________________________________________________ - -RareLink Framework CLI config ------------------------------------- - -Use the following commands to update the framework and its components, view -its status or reset the framework. See :ref:`2_3` for more information. - -.. code-block:: bash - - rarelink framework --help - rarelink framework update - rarelink framework status - rarelink framework reset - -_____________________________________________________________________________________ - - -Import Mapper Configuration -___________________________ - -Via the RareLink CLI type: - -.. code-block:: bash - - to be implemented - -This command guides you through setting up the Import Mapper pipeline for RareLink. -You will be prompted to enter: -- Your location of your local (tabular) database. -- Your REDCap project URL and API token. -- Your location where to store the Import Mapper configurations. - -_____________________________________________________________________________________ - -Phenopacket Pipeline Configuration -___________________________________ - -Via the RareLink CLI type: - -.. code-block:: bash - - to be implemented - -This command guides you through setting up the Phenopacket pipeline for RareLink. -You will be prompted to enter: -- Your location where to store the Phenopackets. - -_____________________________________________________________________________________ - -FHIR Pipeline Configuration -___________________________ - -.. code-block:: bash - - rarelink fhir setup - -This command guides you through setting up the FHIR pipeline for RareLink. -You will be prompted to enter: - -- Your FHIR server URL. -- If required, your FHIR server username & password. - -.. note:: - All sensitive information will also be stored in the - hidden configuration file. - diff --git a/docs/_build/_sources/3_installation/3_2_setup_redcap_project.rst.txt b/docs/_build/_sources/3_installation/3_2_setup_redcap_project.rst.txt deleted file mode 100644 index 399c2ded9..000000000 --- a/docs/_build/_sources/3_installation/3_2_setup_redcap_project.rst.txt +++ /dev/null @@ -1,73 +0,0 @@ -.. _3_2: - -Set up a REDCap Project -======================== - -.. attention:: - RareLink v2.0.2 is under testing and development. Please :ref:`12` us - before using it to ensure you have the latest updates and guidance. - - - -Steps ------- - -To create a REDCap project, please follow these steps: - -0. Check if your instituion hase a REDCap instance. -1. Contact your local REDCap administrator to create your REDCap project with - BioPortal ontology service. -2. Name your REDCap project, e.g.: - - ``RareLink - NameofyourInstitution`` or - - ``RareLink - NameofyourProject``. -3. Let your institutional account be added and given API access for the project. -4. Follow the instructions given to you by your **REDCap administator** to - further set up your project. -5. Copy the API token for the project and keep it secure. -6. Run ``rarelink setup keys`` to set up the REDCap API access locally. - -.. note:: - Be aware of the REDCap **development and production mode**. - Read the :ref:`1_6` section and discuss this with your REDCap administrator! - -.. note:: - BioPortal must be connected to your REDCap instance to use the ontology - service. If you cannot see this option in your REDCap setup, contact your - REDCap administrator. - -_____________________________________________________________________________________ - -Next Steps and further reading -------------------------------- - -- Read the :ref:`1_6` section to learn more about the REDCap API access. -- Read :ref:`2_3` to learn more about the RareLink Command Line Interface (CLI) -- Read :ref:`4_0` to learn more about the RareLink User Guide. -_____________________________________________________________________________________ - - -RareLink CLI Commands ----------------------- - -.. code-block:: bash - - rarelink setup redcap-project - -- This command will guide you through the same steps above. If you have - questions, please reach out to us or your local REDCap administrator. - - -- Make sure to run - -.. code-block:: bash - - rarelink setup keys - -after you have set up the REDCap project to store the REDCap API token. - -.. attention:: - The REDCap API token is a sensitive information. Keep it secure and do - not share it with others. - -_____________________________________________________________________________________ - diff --git a/docs/_build/_sources/3_installation/3_3_data_dictionary.rst.txt b/docs/_build/_sources/3_installation/3_3_data_dictionary.rst.txt deleted file mode 100644 index 398550beb..000000000 --- a/docs/_build/_sources/3_installation/3_3_data_dictionary.rst.txt +++ /dev/null @@ -1,141 +0,0 @@ -.. _3_3: - - -Set up the Data Dictionary -========================== - -.. attention:: - RareLink v2.0.2 is under testing and development. Please :ref:`12` us - before using it to ensure you have the latest updates and guidance. - -To install the RareLink-CDM instruments, you will need to download the -instruments from here and follow the steps below. Make sure your REDCap project -is set up and running, otherwise follow the :ref:`3_2` section to set up a -REDCap project. Read the :ref:`2_2` section to learn more about the RareLink CDM -Instruments. In case you have any questions, please contact your local REDCap -administrator, or :ref:`12` us. - -Installation -------------- - -_____________________________________________________________________________________ - -1. **Download the instruments from the RareLink REDCap project.** - -- :download:`Download RareLink CDM Data Dictionary v2.0.2 <../../res/rarelink_cdm_datadictionary - v2_0_2.csv>` - -2. **Upload the data dictionary to your REDCap project** - -To upload your data dictionary to your REDCap project automatically, type: - -.. code-block:: console - - rarelink setup data-dictionary - -Otherwise you can also import the instruments manually: - -- Go to your REDCap project. -- Click on the "Designer" tab on the left side of the screen. - -.. image:: ../_static/res/redcap_gui_screenshots/DesignerTab.jpg - :alt: Designer tab - :align: center - :width: 400px - -_____________________________________________________________________________________ - -- Click on the "Data Dictionary" tab on the top of the screen. - - -.. image:: ../_static/res/redcap_gui_screenshots/DataDictionary.jpg - :alt: Data Dictionary tab - :align: center - :width: 400px - -_____________________________________________________________________________________ - -- Select the RareLink CDM Data Dictionary CSV file, or the separate instrument csv files. -- Click on the "Import" button. - -_____________________________________________________________________________________ - -3. **Verify that the instruments have been imported correctly.** - -- Go to the "Online Designer" tab and check the data elements in each instrument. -- check with the :ref:`2_2` page to verify that - - the instruments have been imported correctly. - - the instruments are consistent with the RareLink CDM Data Dictionary. - - the fields with BioPortal are connected properly. - - -_____________________________________________________________________________________ - -4. **Activate the repeating instruments feature** - -- Go to the ``Project Setup`` tab. -- Within the section Enable optional modules and customizations click - on the **`Enable` Repeating Instruments** checkbox. -- Enable repeating instruments for the following instruments: - -.. image:: ../_static/res/rarelink-cdm-repeating-instruments.jpg - :alt: RareLink CDM Repeating Instruments - :align: center - :width: 400px - -_____________________________________________________________________________________ - -5. **Start capturing data with the RareLink CDM instruments.** - -Check out the :ref:`4_1` or the :ref:`4_2` section to learn more about the -semi-automatic import of data. - -_____________________________________________________________________________________ - -.. admonition:: Continue here... - - - :ref:`4_1` section to learn on how to use the RareLink CDM instruments. - - :ref:`4_2` section to learn on how to import data from tabular databases. - - :ref:`4_3` section to learn on how to export data to Phenopackets. - - :ref:`4_3` section to learn on how to export data to FHIR. - -.. admonition:: Further reading... - - - Read pages 25 & 26 of the `Comprehensive Guide to REDCap `_ for more information. - - Read the :ref:`1_6` section to learn more about the general REDCap Setup, - among others how to connect BioPortal to REDCap. - -Separate RareLink-CDM Instruments ----------------------------------- - -The :ref:`2_2` section provides an overview of the RareLink-CDM which is -based on the **ontology-based rare disease common data model** harmonising -international registries, FHIR, and Phenopackets (:ref:`1_5`). However, for many -use cases, it may be necessary to use only a subset of the instruments. - -For such cases, please note: - -1. If you use the RareLink-CDM instruments, you will **not need to enter data - for all instruments** - many of these instruments can be left empty or deleted. -2. The RareLink-CDM instruments are designed to be used in a **modular way**, - so you can use only the instruments that are relevant to your study. -3. However, if an instrument is used in your study, it is important to fill - in all ``mandatory`` the fields in that instrument to ensure correct FHIR - and Phenopacket export. Please read: - - - Section :ref:`cdm-instruments-overview` - - & :ref:`4_1` -4. The sheets ``(1) Formal Criteria`` and ``(2) Personal Information`` **must** - always be filled in to ensure correct FHIR and Phenopacket export! -5. Feel free to :ref:`12` us in case you have any questions or need help. - -Extensional RareLink-CDM Instruments ------------------------------------- - -The :ref:`2_2` section provides an overview of the RareLink-CDM which is -based on the **ontology-based rare disease common data model** (:ref:`1_5`). -However, for many use cases, it is necessary to extend the data model with -additional fields or instruments. This can be done by following the -established RareLink guidelines given in the :ref:`4_5` section. Feel free to -:ref:`12` us in case you have any questions or need help. - - diff --git a/docs/_build/_sources/3_installation/3_4_redcap_api.rst.txt b/docs/_build/_sources/3_installation/3_4_redcap_api.rst.txt deleted file mode 100644 index 812bb33ce..000000000 --- a/docs/_build/_sources/3_installation/3_4_redcap_api.rst.txt +++ /dev/null @@ -1,53 +0,0 @@ -.. _3_4: - -Set up the REDCap API -====================== - -.. attention:: - RareLink v2.0.2 is under testing and development. Please :ref:`12` us - before using it to ensure you have the latest updates and guidance. - - -The REDCap API for RareLink is a RESTful web service that allows users to -interact with REDCap programmatically. The API is designed to provide a simple -and secure way to access REDCap data and metadata. The API is built on top of -the REDCap API and provides a set of commands that allow users to perform -various operations on REDCap data. - -.. note:: - The REDCap API for RareLink is designed for developers and researchers who - are familiar with programming and web services. If you are not familiar - with these topics, seek help from someone who is. - -API Set Up ----------- - -In your terminal, write: - -.. code-block:: bash - - rarelink setup keys - -This command guides you through setting up the REDCap API for RareLink. -You will be prompted to enter: -- Your REDCap instance URL. -- Your REDCap API token. - -To view your current configuration: - -.. code-block:: bash - - rarelink setup view - -To reset your REDCap API configuration: - -.. code-block:: bash - - rarelink setup reset - -.. tip:: - For help on any command, run: - -.. code-block:: bash - - rarelink --help diff --git a/docs/_build/_sources/4_user_guide/4_0_guide_file.rst.txt b/docs/_build/_sources/4_user_guide/4_0_guide_file.rst.txt deleted file mode 100644 index 4e72a9e18..000000000 --- a/docs/_build/_sources/4_user_guide/4_0_guide_file.rst.txt +++ /dev/null @@ -1,21 +0,0 @@ -.. _4_0: - -RareLink User Guide -==================== - -This section provides user guides for all components of the RareLink framework. - -.. toctree:: - :maxdepth: 4 - :caption: Contents: - - 4_1_manual_data_capture - 4_2_import_mapper - 4_3_phenopackets - 4_4_tofhir_module - 4_5_develop_redcap_instruments - 4_6_redcap_tools - - - - diff --git a/docs/_build/_sources/4_user_guide/4_1_manual_data_capture.rst.txt b/docs/_build/_sources/4_user_guide/4_1_manual_data_capture.rst.txt deleted file mode 100644 index eadf0d6c1..000000000 --- a/docs/_build/_sources/4_user_guide/4_1_manual_data_capture.rst.txt +++ /dev/null @@ -1,540 +0,0 @@ -.. _4_1: - -Manual Data Capture -==================== - -.. hint:: - This section offers detailed guidance for manually entering data into - RareLink CDM forms: - - - For more information about the RareLink CDM, visit :ref:`2_2`. - - - Instructions for installing the RareLink CDM instruments in REDCap are available at :ref:`3_1`. - -**Overview** - -- :ref:`manualguide_general_information` -- :ref:`manualguide_formal_criteria` -- :ref:`manualguide_personal_information` -- :ref:`manualguide_patient_status` -- :ref:`manualguide_care_pathway` -- :ref:`manualguide_disease` -- :ref:`manualguide_genetic_findings` -- :ref:`manualguide_phenotypic_features` -- :ref:`manualguide_measurements` -- :ref:`manualguide_family_history` -- :ref:`manualguide_consent` -- :ref:`manualguide_disability` - -_________________________________________________________________________________ - - -.. _general_information: - -General Information (please read!) -------------------------------------- - -This section provides general information about the manual data capture -process: - -- **Purpose**: The manual data capture guide is designed to facilitate the - entry of patient data into the :ref:`2_2`. It provides detailed instructions - for completing each section of the RareLink CDM forms. -- **Feedback**: If you encounter any issues or have suggestions for improving - the manual data capture process, please find more information in the :ref:`7` - section or `write a GitHub issue `_. - RareLink is a collaborative effort, and we welcome your feedback. -- **ERDRI-CDS**: The European Registry Registration requires specific fields to - be completed. You can find the `ERDRI-CDS here `_ - and the corresponding fields in the RareLink-CDM marked with ``ERDRI-CDS`` - in the guide. -- **Data Security**: Ensure your local REDCap project is set up, and everything - is sorted with your local REDCap administrator. When capturing real patient - data, ensure that the REDCap project is in **Production Mode**! Read the - :ref:`1_6`-Background section for more information and discuss this with your - local REDCap administrator. -- **Searching Terminologies with** `BioPortal `_: - Many RareLink sheets feature integrated BioPortal search functionality. - When searching, consider using synonyms or abbreviations, as these are also - indexed in BioPortal. If you cannot find the desired term, try searching for - broader or related terms. Alternatively, use the - `OLS Platform `_ to identify the - correct code and display for the concept you are looking for. -- **Updates**: This section will continue to evolve as RareLink documentation - expands. Please check the :ref:`6` and :ref:`7` sections for updates and - additional information. - -_________________________________________________________________________________ - - -Types of Fields: -"""""""""""""""""" - -- **Mandatory Fields** ``*``: Mandatory fields are marked within this guide with a red - asterisk (``*``). Ensure that all mandatory fields are completed before saving - the form. -- **Optional Fields**: Fields that are not mandatory can be left blank if the - information is unknown or not required. This flexibility allows for partial - data entry while maintaining focus on required fields. - -_________________________________________________________________________________ - -Types of Instruments: -""""""""""""""""""""""" - -+-----------------------+ -| **Single-Entry Form** | -+-----------------------+ - ---> These forms are designed for one-time data entry and capture information that -is not expected to change over time, but can be re-edited if necessary. - -+-------------------+ -| **Repeated Form** | -+-------------------+ - ---> These forms are designed for capturing information that may change over time, -such as patient status, care pathway, and disease -history. You can repeat these forms to reflect changes over time. - -- If you are within the form, you can use the **"Save and Add New Instance"** - at the end of the sheet button to create a new instance of the form directly. -- Alternatively when viewing the individual record, you can click the - **"+" button next to the form name**. This action will create a new instance - of the form, allowing you to capture additional data points for the same - individual. - -.. raw:: html - -
- Image 1 - Image 2 -
- - -Return to `top <#top>`_. - -_________________________________________________________________________________ - - -.. _manualguide_formal_criteria: - -(1) Formal Criteria ------------------------------ - -+-----------------------+ -| **Single-Entry Form** | -+-----------------------+ - -This section contains information related to the formal criteria of -individuals: - -- **Record ID**: Unique identifier for the record automatically assigned by the - local REDCap project. It is not editable, but can be used for reference within - your REDCap project, study, or registry. -- **1.1 - Pseudonym** (``*``, ``ERDRI-CDS``): Unique identifier for the individual, often used as a local - patient-related identification code or registry ID -- **1.2 - Date of Admission** (``*``): The date of admission or data - capture. Ensure the format is YYYY-MM-DD. - -Return to `top <#top>`_. - -_________________________________________________________________________________ - -.. _manualguide_personal_information: - -(2) Personal Information ----------------------------------- - -+-----------------------+ -| **Single-Entry Form** | -+-----------------------+ - -General Notes: -~~~~~~~~~~~~~~~~~~ - -- This section captures personal details about the individual. -- Fields that are not mandatory can be left blank if the information is - unknown or not required. - -Fields: -~~~~~~~~~~ - -- **2.1 - Date of Birth** (``*``, ``ERDRI-CDS``): The individual's date of birth. - If exact dates are not allowed to be entered, enter approximate dates in the - format ``01.MM.YYYY`` or ``01.01.YYYY``. -- **2.2 - Sex at Birth**: ``ERDRI-CDS`` -- **2.5 - Country of Birth**: Refer to the `ISO 3166 Country Codes `_ to search for the country code. Enter only the three- letter ISO - code (e.g., ``CAN``, ``TUR``). - - -Return to `top <#top>`_. - -_________________________________________________________________________________ - -.. _manualguide_patient_status: - -(3) Patient Status ------------------------------ - -+-------------------+ -| **Repeated Form** | -+-------------------+ - - -General Notes: -~~~~~~~~~~~~~~~~~~ - -- This section tracks the status of the patient over time -- Forms can be **repeated** to reflect changes over time (e.g., vital status, - rare disease cases). -- For ontology-specific searches, use `OLS Platform `_ for a smoother experience. -- If exact dates are unknown, enter approximate dates in the format - ``01.MM.YYYY`` or ``01.01.YYYY``. -- Fields that are not mandatory can be left blank if the information is - unknown or not required. - -Fields: -~~~~~~~~~~ - -- **patient_status_date**: ``*`` -- **3.1 - Vital Status**: ``ERDRI-CDS`` -- **3.2 - Time of Death**: ``ERDRI-CDS`` -- **3.5 - Length of Gestation at Birth**: specify exact weeks and days in the - format ``35+6``. -- **3.6 Undiagnosed RD Case**: ``ERDRI-CDS`` - - -Return to `top <#top>`_. - -_________________________________________________________________________________ - -.. _manualguide_care_pathway: - -(4) Care Pathway --------------------------- - -+-------------------+ -| **Repeated Form** | -+-------------------+ - -General Notes: -~~~~~~~~~~~~~~~~~~ - -- It is a **repeated** form, with one encounter per form. -- If possible, use the dates of the encounter. -- In relation to the **Disease sheet**, you can create a comprehensive overview - of a patient's disease history with encounters. -- If the specific month or day is not known, select the 1st day of the - month or the 1st month of the year, respectively (e.g., ``01.June.2022``, - ``01.01.2014``). - -Fields: -~~~~~~~~~~ - -- **4.1 Encounter Date**: ``ERDRI-CDS`` -- **4.3 Encounter Status** ``*``: mandatory to ensure alignment with the - IPS-FHIR profiles. -- **4.4 Encounter Type** ``*``: mandatory to ensure alignment with the IPS-FHIR - profiles - for ``ERDRI-CDS``: please select `RD specialist centre`! - -Return to `top <#top>`_. - -_________________________________________________________________________________ - -.. _manualguide_disease: - -(5) Disease ----------------------- - -+-------------------+ -| **Repeated Form** | -+-------------------+ - -.. hint:: - If you have difficlties finding the rare disease, use the `OLS Platform `_ - for ontology-specific searches, for example the `OLS-MONDO Search `_ - -General Notes: -~~~~~~~~~~~~~~~~~~ - -- It is a **repeated** form; you can enter as many diseases as you wish with one - disease per form -- If information for a specific field is not known, leave it blank. -- If the specific month or day is not known, select the 1st day of the - month or the 1st month of the year (e.g., ``01.June.2022``, ``01.01.2014``). - -Fields: -~~~~~~~~~~ - -- **5.1 Disease** (``*`` & ``ERDRI-CDS``): one ontologies can be selected for - encoding. We recommend using *MONDO* to encode a disease. - - - To link a disease to genetic variant(s) in Section **6.1 Genetic Findings**, - enter the same *MONDO* or *OMIM_p* codes here. (*OMIM_g* codes refer to genes, - while *OMIM_p* codes refer to phenotypes (see `OMIM `_).) - - The **ICD-11** is not integrated into BioPortal; use the `ICD-11 Browser - `_ for codes like `AA10`. - -- **5.3 Age at Onset** and **5.5 Age at Diagnosis** (``ERDRI-CDS``): select - "prenatal" or "birth" where applicable, and always enter dates if available. - -Return to `top <#top>`_. - -_________________________________________________________________________________ - -.. _manualguide_genetic_findings: - -(6.1) Genetic Findings ------------------------------- - -+-------------------+ -| **Repeated Form** | -+-------------------+ - -.. hint:: - If you have difficlties finding concepts, use the `OLS Platform `_ for - ontology-specific search! - -General Notes: -~~~~~~~~~~~~~~~~~~ -- Fields that are not mandatory can be left blank if the information is - unknown or not required .Fill in all other fields about the variant, - depending on the information available and your current use case. It is a - **repeated** form; you can enter as many variants as needed. - -Fields: -~~~~~~~~~~ - -- **6.1.1 Genomic Diagnosis** (``ERDRI-CDS``): - - - To link a variant to a genetic diagnosis, select the corresponding disease, - if applicable, also to the **5.1 Disease**. - - You can also link multiple variants to a single disease - by repeating the form! - -- **6.1.2 Progress Status of interpretaion**: required when creating GA4GH - Phenopackets - You can find the exact definitions here: `GA4GH ProgressStatus `_ -- **6.1.3 Interpretation Status**: required when creating GA4GH Phenopackets - - you can find the exact definitions here: `GA4GH InterpretationStatus `_ -- **6.1.6 Genetic Mutation String**: If the variant is not validated or you are - unsure how to validate, enter all information in this field. -- **6.1.7 - 6.1.9 Variant Expression [HGVS]** (``ERDRI-CDS``): Please select - the appropriate HGVS nomenclature for the variant. - - > **If you are unsure, prioritize** ``c.HGVS``. - - - Provide validated HGVS values (`HGVS Nomenclature `_) for genomic (g.HGVS), DNA (c.HGVS), or - protein (p.HGVS) changes. - - If the variant is not validated or you are unsure how to validate, enter - all information in the **6.1.6 Genetic Mutation String** field. - -- **HGVS Validation**: - - 1. Validate mutations using `ClinVar `_ - or `Varsome `_ - 2. Confirm the expression with the `HGVS Validator `_. - 3. If the validation fails, enter the details in the **6.1.6 Genetic Mutation String** field. - 4. ``*``: **Are you sure the entered HGVS expression was validated using - the variant validator?** - this field is mandatory to ensure the - validation status. - -- **6.1.15 Therapeutic Actionability**: recommended when creating GA4GH - Phenopackets - you can find the exact definitions here: `GA4GH TherapeuticActionability `_ - -.. attention:: - The quality of the variant's validated HGVS expression is crucial for the - correct interpretation of the genetic findings and creation of GA4GH - Phenopackets. If you are unsure about the validation, enter all information - in the **6.1.6 Genetic Mutation String** field and consult a geneticist. - -Return to `top <#top>`_. - -_________________________________________________________________________________ - -.. _manualguide_phenotypic_features: - -(6.2) Phenotypic Features ---------------------------------- - -+-------------------+ -| **Repeated Form** | -+-------------------+ - -.. tip:: - Try to define consistent guidelines for capturing phenotypic features and - their modifiers within your cohort to improve subsequent analyses. - -This section provides details about phenotypic features: - -General Notes: -~~~~~~~~~~~~~~~~~~ -- Use the `OLS Platform `_ for - ontology-specific searches, or visit `HPO `_ for - HPO codes. - -Fields: -~~~~~~~~~~ - -- **6.2.1 Phenotypic Feature** (``*`` & ``ERDRI-CDS``): It is a - **repeated** form; enter as many phenotypic features as needed. -- **6.2.2 Status** ``*``: Always enter the status as either confirmed or refuted. -- **6.2.3 Determination Date**: If the specific month or day is not known for - the determination date, select the 1st day of the month or the 1st month of - the year (e.g., ``01.June.2022``, ``01.01.2014``). - - - **Note:** If possible, capture the time a characteristic was observed by - the individual, *not* the time it was recorded. - -- **6.2.8 Clinical Modifiers**: Encode modifiers for more detailed deep phenotyping, e.g.: - - subclasses of `HP:0012823 (Clinical modifier) `_, - - infectious agents using NCBITAXON, - - or the body site using SNOMED. -- **6.2.9 Evidence**: as recommended by the Phenopacket Scehma, try to provide - the evidence code for the phenotypic feature, *e.g. ECO:0006017 ("author - statement from published clinical study used in manual assertion")*. - - -Return to `top <#top>`_. - -_________________________________________________________________________________ - -.. _manualguide_measurements: - -(6.3) Measurements ----------------------------- - -+-------------------+ -| **Repeated Form** | -+-------------------+ - - -.. tip:: - Define a set of rules for capturing measurements within a cohort to - improve subsequent analyses. - - -General Notes: -~~~~~~~~~~~~~~~~~~ - -- It is a **repeated** form; capture information for one measurement and - repeat as many times as necessary. - Fields that are not mandatory can be left - blank if the information is unknown or not required. - -Fields: -~~~~~~~~~~ - -- **6.3.0 Category** ``*``: mandatory to ensure alignment with the IPS-FHIR profiles. -- **6.3.1 Assay** ``*``: encoded with LOINC codes. Use the `LOINC Search `_ - to find the correct code if you cannot find it in the embedded search. -- **6.3.2 Value** ``*``: must be a value two digit decimal number. -- **6.3.3 Value Unit** ``*``: encoded with the Units of measurement ontology (UO) - codes. Use the `OLS-UO Search `_ to - find the correct code if you cannot find it in the embedded search. -- **6.3.4 Interpretation**: NCIT encoded interpretation of the measurement. Try - remain consistent with the interpretation codes used in your cohort, - for example using the concepts `Above Refernce Range `_ - or `Below Reference Range `_. -- **6.3.5 Time Observed**: ``*``: mandatory to ensure alignment with the IPS-FHIR profiles. - -.. tip:: - `OLS Platform `_ for - ontology-specific searches if you cannot find the concepts you are looking for. - - -Return to `top <#top>`_. - -_________________________________________________________________________________ - -.. _manualguide_family_history: - -(6.4) Family History ----------------------------- - -+-------------------+ -| **Repeated Form** | -+-------------------+ - -General Notes: -~~~~~~~~~~~~~~~~~~ - -- It is a **repeated** form; capture information for one family member per - sheet. Fields that are not mandatory can be left blank if the information is - unknown or not required. -- Use the `OLS Platform `_ for - ontology-specific searches. - -Fields: -~~~~~~~~~~ - -- **6.4.0 Pseudonym** ``*``: The pseudonym assigned to the family member must be - entered. -- **6.4.4 Family Member Relationship** ``*``: the relationship of the family - member to the individual captured - mandatory to ensure alignment with the - IPS-FHIR profiles. -- **6.4.5 Family Member Record Status** ``*``: the record's status - mandatory - to ensure alignment with the IPS-FHIR profiles. - -Return to `top <#top>`_. - -_________________________________________________________________________________ - -.. _manualguide_consent: - -(7) Consent ---------------------- - -+-----------------------+ -| **Single-Entry Form** | -+-----------------------+ - -This section captures consent-specific data: - -General Notes: -~~~~~~~~~~~~~~~~~~ - -- Specify consent details for registry use. -- The fields marked with ``ERDRI-CDS`` are required for the European Registry - Registration. - -Fields: -~~~~~~~~~~ - -- **7.1 Consent Status**: ``*``` -- **7.3 Health Policy Monitoring** ``*``: if unsure, you can enter any string - that indicates an unknown status for this field. -- **7.4 Agreement to be contacted for research purposes**: ``*`` & ``ERDRI-CDS`` -- **7.5 Consent to the reuse of data**: ``*`` & ``ERDRI-CDS`` -- **7.6 Biological sample** : ``ERDRI-CDS`` -- **7.7 Link to a biobank** (``ERDRI-CDS``): If applicable, provide a link to - the BioBank, if applicable. - - -Return to `top <#top>`_. - -_________________________________________________________________________________ - -.. _manualguide_disability: - -(8) Disability -------------------------- - -+-----------------------+ -| **Single-Entry Form** | -+-----------------------+ - -This section provides details about disabilities: - -- Enter the disability code from the ICF (International Classification of - Functioning, Disability, and Health). -- Ensure the data corresponds to the date of admission or data entry. -- **8.1 Disability**: ``ERDRI-CDS`` - -Return to `top <#top>`_. - -_________________________________________________________________________________ - - \ No newline at end of file diff --git a/docs/_build/_sources/4_user_guide/4_2_import_mapper.rst.txt b/docs/_build/_sources/4_user_guide/4_2_import_mapper.rst.txt deleted file mode 100644 index d7a2d3554..000000000 --- a/docs/_build/_sources/4_user_guide/4_2_import_mapper.rst.txt +++ /dev/null @@ -1,517 +0,0 @@ -.. _4_2: - -Semi-Automatic Import -=========================== - -While many rare disease centres and hospitals hold specialised data in -unstructured formats, **RareLink's semi-automatic import guide** provides a means -to standardize this information through `LinkML `_ to the :ref:`2_2`. -Using `LinkML-Map `_, you can -convert your local (tabular) data into a :ref:`rarelink_cdm_linkml` JSON -representation conforming to the :ref:`2_2` for subsequent import to REDCap. - -A fully automatic conversion tool is not possible, as the :ref:`2_2` is -based on :ref:`1_2` for which **manual and professional annotation of your data to the -ontology terms is required**. However, to make the process as efficient and user-friendly -as possible, we offer a semi-automatic guide with templates and examples that -significantly speed up the process of importing your data. Once your data is -processed and validated against the :ref:`2_2`'s :ref:`rarelink_cdm_linkml`, -you can export it diretly to :ref:`1_3`, import it to your local :ref:`1_6` -project and subsequently also export it to :ref:`1_4`. - -Make sure to read the following sections in this documentation to make yourself -familiar with the model, the underlying data elements and its ontologies: - -- :ref:`1_2` -- :ref:`1_5` -- :ref:`2_2` - -If questions remain and you would like to discuss your data import with us, -please do not hesitate to :ref:`12` us. RareLink is a community-driven project -and we are happy to collaborate wherever possible. - -.. hint:: - In this process, **you are responsible for the semantic mapping and - ontology annotation** of your data elements. This step is critical for - ensuring that your data, including genetic mutations validated with HGVS, - conforms to the RareLink-CDM standard for Phenopackets and FHIR export and - expresses the correct semantic meaning of your data. - -_________________________ - -**Overview** - -.. contents:: - :local: - :depth: 3 - -_________________________ - -Overview of Components ------------------------- -The semi-automatic import process involves several key components: - -- **RareLink-CDM LinkML Schema**: - - The target schema that defines the - structure of your data once converted. It is designed to be as close - as possible to the original REDCap data model while enabling export - to Phenopackets and FHIR. You can find it here: - - - :ref:`2_2` - - :ref:`rarelink_cdm_linkml` - - `RareLink-CDM v2.0.2 LinkML yaml schema files `_ - - `RareLink-CDM v2.0.2 LinkML python model and classes `_ - -- **LinkML Map**: - - A framework for specifying and executing mappings between - data models. You will use a SSSOM (Simple Standard for Sharing Ontological - Mappings) file to map your source data to the RareLink-CDM. - - - `LinkML Map Documentation `_ - -- **SSSOM Mapping File**: - - A tab-delimited file that defines the mapping from - your local data fields to the target elements in the RareLink-CDM. In the - SSSOM file, the *object_id* column represents the target value—either the - literal value (e.g., a date) or a standardized code (e.g., SNOMEDCT codes for - sex/gender). A RareLink-CDM SSSOM mapping template is provided below - as a starting point for your mappings. - - - `SSSOM Specification `_ - -- **Semantic Ontology Annotation** - - The process of encoding each data element with an ontology term defined in the - value sets of the :ref:`2_2` or the ontologies defiend for the respective - fields. This step ensures that the semantic meaning of your data is preserved - and that the mappings are interoperable. This process requires the most - attention and is crucial for the correct interpretation of your data. - To improve the quality of your mappings, you should use the `ISO/TS 21564 MapQual `_ - standard for evaluating the quality of data mappings between health information - systems. - - The **ISO/TS 21564 MapQual** is an ISO technical specification that defines - best practices for evaluating the quality of data mappings between - health information systems. It provides guidelines for assessing the - semantic consistency, accuracy, and completeness of mappings, ensuring - that data is correctly annotated and interoperable. - - Key steps in the encoding process include: - - - **Identification:** Identify source data elements that require mapping. - - **Mapping Selection:** Choose appropriate target ontology terms or codes. - - **Semantic Alignment:** Ensure that each mapping preserves the intended - meaning of the source data. - - **Dual Encoding:** Perform encoding and mapping independently by at least - two experts to improve objectivity and reliability. - - **Quality Assessment:** Evaluate mappings for accuracy and completeness - against the established standards. - - **Documentation:** Record mapping decisions, justifications, and quality - metrics for transparency and future reference. - -_________________________ - -Steps When Importing Data --------------------------- -The semi-automatic import process consists of the following steps: - -1. Mapping -____________ - -You begin by defining mappings from your local, tabular database to the -RareLink-CDM using a SSSOM mapping file provided by RareLink. The RareLink-CDM -has no strict minimal requirements beyond the formal criteria fields. However, -if an instrument is used, the corresponding required fields must be mapped. -Depending on the purpose of your data, additional fields should be included; -for instance, registry data should map consent fields, while analyses involving -measurements and genetics require the respective clinical and laboratory fields. - -.. tip:: - For more precise analyses and a more balanced cohort, we recommend defining a - ruleset for the fields mapped and encoded of your local database. - -____ - - -1.1 Understanding the RareLink-CDM data model -"""""""""""""""""""""""""""""""""""""""""""""""" - -You should familiarize yourself with the RareLink-CDM schema in detail to -understand the target data model, the structure of the data elements and -REDCap instruments, and the recommended ontologies. For this, please go through -the data model and its derivate in REDCap in detail: - -- :ref:`1_5` -- Read the `paper on the RareLink-CDM `_ -- :ref:`2_2` and its :ref:`rarelink_cdm_linkml` - -.. note:: - When selecting one data field from a REDCap instrument, you must also map - all fields or define the code or a constant for all fields that are required - by the instrument. You can find the required fields in the :ref:`cdm_overview` - documentation where the cardinality is set to **required (1..1)**. - -____ - -1.2 Mapping Your Data -"""""""""""""""""""""""" - -Use the provided SSSOM template file to map your local data to the RareLink-CDM. -This template defines standard target predicates and codes, ensuring consistency -in your mappings and facilitating interoperability. - -**RareLink-CDM SSSOM Template File** - -This template file is designed to assist users in creating mappings from their -local data sources to the RareLink-CDM target schema. It follows the SSSOM -(Simple Standard for Sharing Ontological Mappings) specification and includes -both required and additional optional columns to improve traceability and -clarity of the mapping process. - -The template contains the following columns: - -- **subject_id**: - A unique identifier for the source record or data element. This value - identifies which record in your local database is being mapped. - -- **subject_label**: - A human-readable label for the source record. This provides context - for the mapping and helps users quickly identify the data element. - -- **predicate_id**: - The mapping relation that specifies the target element in the :ref:`rarelink_cdm_linkml` of - the :ref:`2_2`. Use the ``default_prefix:slot_name`` from the - RareLink-CDM schema, for example: - - - ``rarelink_cdm:snomedct_184099003`` for 2.1 Date of birth, or - - ``rarelink_cdm:snomedct_281053000`` for 2.2 Sex at birth. - -- **predicate_label**: - The title of the target element from the schema, i.e. the *name* of the element - itself. This column provides a human-readable description of the target element being mapped. - For the examples above, these would be ``2.1 Date of birth`` and - ``2.2 Sex at birth``respectively. - -- **object_id**: - The target value in the RareLink-CDM. For literal fields, such as dates, - this is the actual value (e.g., "1970-02-15"). For coded fields, such as - sex, the object_id is the standardized code from the value set - (e.g., "SNOMEDCT:248152002" for female) or the code from the code system defined - by the data element (e.g., "HP:0001250" for a phenotype in element 6.2.1). - -- **object_label**: The human-readable label for the target value either from the - RareLink-CDM value sets or the code system defined by the data element. In - the case of dates, a "-" is sufficient. - -- **match_type**: - Describes the type of mapping used. Commonly this is set to "lexical" - when the mapping is based on a direct textual match. - -- **mapping_date**: - The date when the mapping was created. This column adds traceability - and helps with versioning of your mappings. - -- **mapping_tool**: - The tool or method used to generate the mapping. For example, "manual" - indicates that the mapping was curated by a human expert. - -.. hint:: - - :download:`Download the RareLink-CDM SSSOM template file <../../res/import_mapper_tsvs/rarelink_cdm_sssom_template.tsv>`. - -This template provides a minimal yet robust framework for defining your -mappings. It ensures that each mapping row clearly specifies which source -element is linked to which target element and how that connection was made. -By following this template, you can ensure that your mappings are consistent, -interoperable, and well-documented—key requirements for successful data -integration in the RareLink-CDM. - -Below you can find a **snippet of the RareLink-CDM SSSOM Template File:** - -.. code-block:: tsv - - # RareLink-CDM SSSOM Template File - # This template maps source data elements from a registry CSV file to the target RareLink-CDM schema. - # SSSOM documentation: https://mapping-commons.github.io/sssom/ - # RareLink-CDM LinkML schema: https://github.com/BIH-CEI/rarelink/tree/develop/src/rarelink_cdm/v2_0_2/schema_definitions - # - # Columns: - # subject_id : Unique identifier for the source record (). - # subject_label : Human-readable label for the source record (). - # predicate_id : Fully qualified target element (e.g., rarelink_cdm:snomedct_184099003). - # predicate_label : Title of the target element from the schema. - # object_id : Target value – a literal (e.g., date, numeric) or a standardized code with prefix. - # object_label : Human-readable label for the target value (use "-" for dates/numerics when no label is needed). - # match_type : Mapping derivation type (e.g., "lexical"). - # mapping_date : Date when the mapping was created (). - # mapping_tool : Method used to create the mapping (e.g., "manual"). - # - subject_id subject_label predicate_id predicate_label object_id object_label match_type mapping_date mapping_tool - # === Formal Criteria (Singular) === - "" rarelink_cdm:snomedct_422549004 "1.1 Pseudonym" lexical manual - "" rarelink_cdm:snomedct_399423000 "1.2 Date of admission" lexical manual - # - # === Personal Information (Singular) === - "" rarelink_cdm:snomedct_184099003 "2.1 Date of birth" - lexical manual - "" rarelink_cdm:snomedct_281053000 "2.2 Sex at birth" lexical manual - "" rarelink_cdm:snomedct_1296886006 "2.3 Karyotypic Sex" lexical manual - "" rarelink_cdm:snomedct_263493000 "2.4 Gender Identity" lexical manual - "" rarelink_cdm:snomedct_370159000 "2.5 Country of birth" lexical manual - # - # === Patient Status (Repeating Allowed) === - "" rarelink_cdm:snomedct_278844005 "3.1 Vital Status" lexical manual - "" rarelink_cdm:snomedct_398299004 "3.2 Time of Death" lexical manual - "" rarelink_cdm:snomedct_184305005 "3.3 Cause of Death" lexical manual - "" rarelink_cdm:snomedct_105727008 "3.4 Age Category" lexical manual - "" rarelink_cdm:snomedct_412726003 "3.5 Length of Gestation at Birth" lexical manual - "" rarelink_cdm:snomedct_723663001 "3.6 Undiagnosed RD Case" lexical manual - # - # === Care Pathway (Repeating Allowed) === - "" rarelink_cdm:hl7fhir_enc_period_start "4.1 Encounter Start" - lexical manual - "" rarelink_cdm:hl7fhir_enc_period_end "4.2 Encounter End" - lexical manual - "" rarelink_cdm:snomedct_305058001 "4.3 Encounter Status" lexical manual - "" rarelink_cdm:hl7fhir_encounter_class "4.4 Encounter Class" lexical manual - # - # === Disease Information (Repeating Allowed) === - "" rarelink_cdm:disease_coding "5.0 Disease Coding System" lexical manual - "" rarelink_cdm:snomedct_64572001_mondo "5.1 Disease [MONDO]" lexical manual - # [...] - # === Phenotypic Features (Repeating Allowed) === - "" rarelink_cdm:snomedct_8116006 "6.2.1 Phenotypic Feature" lexical manual - "" rarelink_cdm:snomedct_363778006 "6.2.2 Phenotypic Feature Status" lexical manual - "" rarelink_cdm:snomedct_8116006_onset "6.2.3 Determination Date" - lexical manual - "" rarelink_cdm:snomedct_8116006_resolut "6.2.4 Resolution Date" - lexical manual - "" rarelink_cdm:hp_0003674 "6.2.5 Age of Onset" lexical manual - "" rarelink_cdm:hp_0011008 "6.2.6 Temporal Pattern" lexical manual - "" rarelink_cdm:hp_0012824 "6.2.7 Phenotype Severity" lexical manual - # additional phenotype (if applicable) - "" rarelink_cdm:snomedct_8116006 "6.2.1 Phenotypic Feature" lexical manual - "" rarelink_cdm:snomedct_8116006_onset "6.2.3 Determination Date" - lexical manual - # - # === Measurements (Repeating Allowed) === - # Measurement 1 - "" rarelink_cdm:ncit_c60819 "6.3.1 Assay" lexical manual - "" rarelink_cdm:ncit_c25712 "6.3.2 Measurement Value" lexical manual - "" rarelink_cdm:ncit_c92571 "6.3.3 Unit" lexical manual - "" rarelink_cdm:ncit_c41255 "6.3.4 Interpretation" lexical manual - "" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" - lexical manual - # Measurement 2 - "" rarelink_cdm:ncit_c60819 "6.3.1 Assay" lexical manual - "" rarelink_cdm:ncit_c25712 "6.3.2 Measurement Value" lexical manual - "" rarelink_cdm:ncit_c92571 "6.3.3 Unit" lexical manual - "" rarelink_cdm:ncit_c41255 "6.3.4 Interpretation" lexical manual - "" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" - lexical manual - # [...] - # - # you cn find the entire template file here: https://github.com/BIH-CEI/rarelink/tree/develop/docs/_static/res/import_mapper_tsvs - -.. tip:: - You can view and download all the example csv and sssom mapping files: - - - `RareLink-CDM SSSOM Mapping Examples `_ or - - - :download:`download the TSV template file directly <../../res/import_mapper_tsvs/rarelink_cdm_sssom_template.tsv>`. - -____ - - -2. Semantic Ontology Annotation -_________________________________ - -According to your mappings, you must encode each data element with its -recommended ontology term of its - -- **value set** (e.g.: 2.2. Sex at Birth) or -- **an ontology term of the coding system** defined (e.g. 5.1 Disease [MONDO]). - -This step ensures that the semantic meaning of your -data is preserved and that the mappings are interoperable. Within the -:ref:`2_2`'s :ref:`rarelink_cdm_linkml` you will find the slot names, the value set -encodings and the codesystems required for the encoding. - -.. note:: - - As explained above, the `ISO/TS 21564 MapQual `_ - should be followed to ensure the quality of your mappings! In the above - section on components you find more details. - -Then, write the results into the SSSOM mapping file using the template provided above -into the columns ``object_id`` and ``object_label`` while selecting the correct -``predicate_id`` and ``predicate_label`` from the RareLink-CDM schema's data elements. - -.. tip:: - - Use the user-friendly Ontology Lookup Service (OLS) to find the correct - ontology terms for your data elements. You can access the OLS here: https://www.ebi.ac.uk/ols4/ontologies. - Do not forget to note the versions of the ontologies used and save it as - metadata for your dataset. - -____ - - -3. Preparation -_________________________________ - -Prepare for command execution by ensuring you have: - - - A valid source data file (e.g., an Excel or CSV export of your local database) - - Your SSSOM mapping file - - The RareLink-CDM schema file (e.g., ``rarelink_cdm.yaml``) - -LinkML-Map will use these inputs to transform your data into JSON that conforms -to the RareLink-CDM model. - -Then you can run LinkML Map: - -.. code-block:: bash - - linkml-tr map-data -T tr.yaml -s - -____ - - -4. Execution and Validation -_________________________________ - -Run the integrated RareLink CLI command (e.g., ``rarelink import``) to perform -the conversion. As part of the execution, validate your data against the RareLink-CDM -LinkML schema using the following command: - -.. code-block:: bash - - linkml-validate --schema src/rarelink_cdm/v2_0_2/schema_definitions/rarelink_cdm.yaml - -This validation step ensures that your data conforms to the model before -proceeding to further export (such as to Phenopackets) or upload to REDCap. - -____ - -5. Next Steps -_________________________________ - -After validation, your RareLink-CDM data is ready. You may now choose to export -the data as Phenopackets or upload it to your REDCap project using the command: - -.. code-block:: bash - - rarelink redcap upload-records - -or export it directly to Phenopackets using: - -.. code-block:: bash - - rarelink phenopackets export - -____ - -Examples ----------- -Below we provide an example of a semi-structured tabular database with five -individuals along with their corresponding SSSOM mapping files. - -.. tip:: - You can view and download all the example csv and sssom mapping files here: - `RareLink-CDM SSSOM Mapping Examples `_. - -____ - -Example: Adult Rare Disease Registry -____________________________________________ - -Includes clinical, laboratory, patient status, and genetic data. - -.. code-block:: csv - - Pseudonym,Sex,Gender,DOB,Disease_Diagnosis,Symptoms,Symptom_Dates,Lab_Measurements,Lab_Measurement_Dates,Patient_Status,Time_at_Last_Visit,Consent_Given,Genetic_Mutation,Zygosity,Mutation_Type,Genomic_Diagnosis - ADR001,Female,Female,1970-02-15,Wilson Disease,"Hepatic dysfunction; tremors","2020-03-10;2020-04-15","Serum ceruloplasmin:12 mg/dL; ALT:85 U/L","2020-03-12;2020-03-12",Alive,2022-10-01,Y,ATP7B:c.3207C>A,Heterozygous,Missense,Wilson Disease confirmed - ADR002,Male,Male,1982-07-30,Fabry Disease,"Angiokeratomas; Acroparesthesias","2019-06-20;2019-07-01","α-Gal A activity:Low; Creatinine:1.2 mg/dL","2019-06-22;2019-06-22",Alive,2021-12-15,Y,GLA:c.936+919G>A,Hemizygous,Deletion,Fabry Disease suspected - ADR003,Female,Female,1965-11-05,Wilson Disease,"Jaundice; Neurological impairment","2018-02-05;2018-03-10","Serum ceruloplasmin:9 mg/dL; Bilirubin:3.2 mg/dL","2018-02-07;2018-02-07",Dead,2018-03-15,N,ATP7B:c.2304insG,Homozygous,Frameshift,Wilson Disease confirmed - ADR004,Female,Female,1978-04-10,Fabry Disease,"Corneal verticillata; Peripheral neuropathy","2021-01-15;2021-01-20","α-Gal A activity:Borderline; ECG:Abnormal","2021-01-16;2021-01-16",Alive,2022-05-10,Y,GLA:c.937G>T,Hemizygous,Nonsense,Fabry Disease confirmed - ADR005,Male,Male,1980-12-20,Fabry Disease,"Renal insufficiency; Cardiac issues","2020-11-05;2020-11-05","α-Gal A activity:Low; eGFR:45 mL/min","2020-11-06;2020-11-06",Alive,2022-08-22,Y,GLA:c.937G>A,Hemizygous,Missense,Fabry Disease confirmed - -This dataset comprises records for adult patients diagnosed with rare diseases -such as Wilson Disease and Fabry Disease. It includes essential clinical data -(e.g., date of birth, sex at birth, disease diagnosis, symptoms, lab measurements, -patient status, time at last visit, and genetic mutation details). The accompanying -SSSOM mapping template guides you in mapping these source fields to the RareLink-CDM -schema. - -.. code-block:: tsv - - # Adult Rare Disease Registry SSSOM Mapping Template - # This template maps key fields from an adult rare disease registry CSV file - # to the RareLink-CDM target schema. - # - subject_id subject_label predicate_id predicate_label object_id object_label match_type mapping_date mapping_tool - ADR001 "Patient ADR001" rarelink_cdm:snomedct_422549004 "1.1 Pseudonym" ADR001 ADR001 lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:snomedct_184099003 "2.1 Date of birth" 1970-02-15 - lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:snomedct_281053000 "2.2 Sex at birth" SNOMEDCT:248152002 Female lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:snomedct_263493000 "2.4 Gender Identity" SNOMEDCT:446141000124107 Female gender identity lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:snomedct_278844005 "3.1 Vital Status" SNOMEDCT:438949009 Alive lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:snomedct_64572001_mondo "5.1 Disease [MONDO]" MONDO:0012345 Wilson Disease lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:loinc_99498_8 "5.2 Verification status" HL7FHIR:confirmed Confirmed lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:snomedct_106221001_mondo "6.1.1 Genetic Diagnosis [MONDO]" MONDO:0012345 Wilson Disease lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:loinc_lp7824_8 "6.1.6 Genetic Mutation String" ATP7B:c.3207C>A - lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:loinc_53034_5 "6.1.11 Zygosity" LOINC:LA6706-1 Heterozygous lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:loinc_48019_4_other "6.1.13 DNA Change Type" LOINC:LA6698-0 Missense lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:snomedct_309370004 "7.1 Consent Status" hl7fhir_active "Active" lexical 2025-01-01 manual - # Repeating elements: Patient ADR001 has two phenotypic features. - ADR001 "Patient ADR001" rarelink_cdm:snomedct_8116006 "6.2.1 Phenotypic Feature" HP:0002480 hepatic encephalopathy lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:snomedct_8116006_onset "6.2.3 Determination Date" 2020-03-10 - lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:snomedct_8116006 "6.2.1 Phenotypic Feature" HP:0001337 tremors lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:snomedct_8116006_onset "6.2.3 Determination Date" 2020-04-15 - lexical 2025-01-01 manual - # Repeating elements: Patient ADR001 has two measurements. - ADR001 "Patient ADR001" rarelink_cdm:ncit_c60819 "6.3.1 Assay" LOINC:2064-4 Ceruloplasmin [Mass/volume] lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:ncit_c25712 "6.3.2 Measurement Value" 12 12 lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:ncit_c92571 "6.3.3 Unit" UO:0010067 milligram per deciliter lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2020-03-12 - lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:ncit_c60819 "6.3.1 Assay" LOINC:1742-6 Alanine aminotransferase [Enzymatic activity/volume] in Serum or Plasma lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:ncit_c25712 "6.3.2 Measurement Value" 85 - lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:ncit_c92571 "6.3.3 Unit" UO:0000179 unit per liter lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2020-03-12 - lexical 2025-01-01 manual - # - # Mappings for a second patient (ADR002) - ADR002 "Patient ADR002" rarelink_cdm:snomedct_422549004 "1.1 Pseudonym" ADR002 ADR002 lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:snomedct_184099003 "2.1 Date of birth" 1982-07-30 1982-07-30 lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:snomedct_281053000 "2.2 Sex at birth" SNOMEDCT:248153007 Male lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:snomedct_278844005 "3.1 Vital Status" SNOMEDCT:438949009 Alive lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:snomedct_64572001_mondo "5.1 Disease [MONDO]" MONDO:0010526 Fabry Disease lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:loinc_99498_8 "5.2 Verification status" HL7FHIR:differential Differential lexical 2025-01-01 manual - ADR001 "Patient ADR001" rarelink_cdm:snomedct_106221001_mondo "6.1.1 Genetic Diagnosis [MONDO]" MONDO:0010526 Fabry Disease lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:loinc_lp7824_8 "6.1.6 Genetic Mutation String" GLA:c.936+919G>A - lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:loinc_53034_5 "6.1.11 Zygosity" LOINC:LA6707-9 Hemizygous lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:loinc_48019_4 "6.1.13 DNA Change Type" LOINC:LA6692-3 Deletion lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:snomedct_309370004 "7.1 Consent Status" hl7fhir_active "Active" lexical 2025-01-01 manual - # Repeating elements: Patient ADR002 has two phenotypic features. - ADR002 "Patient ADR002" rarelink_cdm:snomedct_8116006 "6.2.1 Phenotypic Feature" HP:0001071 Angiokeratoma corporis diffusum lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:snomedct_8116006_onset "6.2.3 Determination Date" 2019-06-20 - lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:snomedct_8116006 "6.2.1 Phenotypic Feature" HP:0031006 Acroparesthesias lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:snomedct_8116006_onset "6.2.3 Determination Date" 2019-07-01 - lexical 2025-01-01 manual - # Repeating elements: Patient ADR002 has two measurements. - ADR002 "Patient ADR002" rarelink_cdm:ncit_c60819 "6.3.1 Assay" LOINC:55908-8 Alpha galactosidase A [Enzymatic activity/volume] in DBS lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:ncit_c41255 "6.3.4 Interpretation" NCIT:C78801 Value Below Reference Range lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2019-06-22 - lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:ncit_c60819 "6.3.1 Assay" LOINC:2160-0 Creatinine [Mass/volume] in Serum or Plasma lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:ncit_c25712 "6.3.2 Measurement Value" 1.2 - lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:ncit_c92571 "6.3.3 Unit" UO:0010067 milligram per deciliter lexical 2025-01-01 manual - ADR002 "Patient ADR002" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2019-06-22 - lexical 2025-01-01 manual - # - # Mappings for Patient three, four and five are within the file below. - -.. tip:: - You can view and download all the example csv and sssom mapping files here: - `RareLink-CDM SSSOM Mapping Examples `_. - -_____ - -Additional Resources ----------------------- -- `LinkML Map Documentation `_ -- `SSSOM Specification `_ -- `RareLink-CDM Documentation `_ -- `RareLink GitHub Repository `_ -- `RareLink-CDM SSSOM Mapping Examples `_ -- :download:`Download the RareLink-CDM SSSOM template file <../../res/import_mapper_tsvs/rarelink_cdm_sssom_template.tsv>` \ No newline at end of file diff --git a/docs/_build/_sources/4_user_guide/4_3_phenopackets.rst.txt b/docs/_build/_sources/4_user_guide/4_3_phenopackets.rst.txt deleted file mode 100644 index 85c26dd31..000000000 --- a/docs/_build/_sources/4_user_guide/4_3_phenopackets.rst.txt +++ /dev/null @@ -1,362 +0,0 @@ -.. _4_3: - -Phenopackets Module -====================== - -The RareLink-Phenopacket module allows users to generate :ref:`1_3` -from data stored in a local REDCap project. For the :ref:`2_2` the engine is -preconfigured so that Phenopackets can be instantly exported via the :ref:`2_3`. - -The RareLink-Phenopacket module is designed to be modular and flexible so that -it can be adapted to other REDCap data structures. Please see the section below. - -_____________________________________________________________________________________ - -**Overview**: - -- :ref:`get_started` -- :ref:`rarelink-phenopacket-export` -- :ref:`rarelink-phenopacket-engine` - - - :ref:`phenopacket-validation` - - :ref:`rarelink-phenopacket-preconfigurations` - - :ref:`phenopackets-other-redcap-data-models` - - :ref:`phenopacket-mappings` - - :ref:`label-dicts` - - :ref:`mapping-dicts` - -_____________________________________________________________________________________ - -.. _get_started: - -Get started -------------------- - -To use the Phenopacket export, you need a running REDCap project with API access -and the RareLink-CDM instruments set up. You also need the framework and all its -components running. You can run the following commands to set everything up: - -- ``rarelink framework update`` to update the framework and all components. -- ``rarelink setup redcap-project`` to set up a REDCap project with your REDCap - administrator. -- ``rarelink setup keys`` to set up the REDCap API access locally. - -_____________________________________________________________________________________ - - -.. _rarelink-phenopacket-export: - - -RareLink-CDM to Phenopackets ------------------------------ - -Once you have data captured in you REDCap project using the :ref:`2_2` REDCap -instruments, you can export the data to Phenopackets. The data is exported to -one Phenopacket JSON file per individual and can be used for further analysis. - -- For this, simply run: - -.. code-block:: bash - - rarelink phenopackets export - -And you will be guided through the exporting process. The Phenopackets will be -exported to the configured output directory (default is your Downloads folder). - -.. note:: - - Make sure you **comply with your local data protection regulations and ethical - agreements** before exporting the data! - - The section :ref:`family-history` is not implemented yet. This section may - be included in future versions of the RareLink-Phenopacket module. - -.. hint:: - Read the :ref:`rarelink-phenopacket-preconfigurations` below to see how the - RareLink-Phenopacket modules is configured to handle specific fields for - dates, data privacy, and preferences over certain fields for the Phenopacket - export. - - -_____________________________________________________________________________________ - - -.. _rarelink-phenopacket-engine: - - -RareLink-Phenopacket engine ---------------------------- - -The RareLink-Phenopacket module is developed in a modular way to allow for easy -adaptation to other REDCap data structures. All data model specific -configurations and mappings of the :ref:`2_2` are within its `GitHub folder `_. -Therefore, all functions and modules we developed can be used or adapted for -other REDCap data models extending the :ref:`2_2` once the data model is -converted to a similar :ref:`LinkML schema `. - -Overview -_________ - -To provide an overview, the RareLink-Phenopacket module consists of the following -components: - -- ``mappings`` (`GitHub Folder `_): - Contains all the mappings from the REDCap data model to the - respective blocks in the Phenopacket schema without containing data-model - specific values or codes. -- ``DataProcessor`` (`Python Class `_): - Contains all functions to process any REDCap data to Phenopacket-compliant - data, including *field fetching*, *data drocessing*, *data validation*, - *Label & Mapping*, *repeated element*, and *generation* methods. -- ``create`` (`Python function `_): - Contains the main function to generate Phenopackets from the processed data. -- ``write`` (`Python function `_): - Contains the function to write the generated Phenopackets to a JSON file. -- ``phenopacket pipeline`` (`Python function `_): - Contains the pipeline to generate Phenopackets from the processed data. - -________ - -.. _phenopacket-validation: - -Phenopackets validation -________________________ - -The engine utilizes the `Phenopackets Python Library `_ -and its Python classes to generate Phenopackets. These classes include inherent -validation mechanisms, which raise errors if a required field is missing or if a -field is not in the correct format. - -If further validation is needed, you can use the -`Validation Module `_ of the -`pyphetools Python Package `_. - -_____________________________________________________________________________________ - -.. _rarelink-phenopacket-preconfigurations: - -Preconfigurations -____________________ - -The engine provides several preconfigurations to streamline data processing. -These include: - -1. **Date conversions** - - The engine converts dates to an - `a Phenopacket Age element as a ISO8601 duration `_ - with - - - **Year** and - - **Month** - - ... for the following elements: - - - ``Individual.timeAtLastEncounter`` - - ``VitalStatus.timeOfDeath`` - - ``PhenotypicFeature.onset`` - - ``PhenotypicFeature.resolution`` - - ``Disease.onset`` - - For example, the resulting ISO8601 duration is formatted as follows: - - .. code-block:: yaml - - age: - iso8601duration: "P25Y3M" - - - the ``Individual.dateOfBirth`` must be a Phenopacket TimeStamp element. - Therefore, for data privacy only the year and month are exported from REDCap. - - -2. **Preferences**: - - ``PhenotypicFeature.onset``: The engine prefers the ISO8601Duration - defined in section 6.2.3 *Phenotype Determination* over the Age -_________ - - -.. _phenopackets-other-redcap-data-models: - -Usage for other REDCap data models -____________________________________ - -If you want to adapt the RareLink-Phenopacket module to another REDCap data model, -you can follow these steps: - -1. Develop your REDCap sheets and instruments according to the :ref:`4_5` - section. Try to use the RareLink-CDM for as much as you can - this will - make the mapping and export process easier. - -2. (OPTIONAL): Convert your REDCap data model to a :ref:`LinkML schema `. - This can be done by following the instructions in the :ref:`2_2` section. - -3. Convert your REDCap data model using the ``redcap_to_linkml`` function you - in the RareLink Utils. This will convert your REDCap data to a - JSON schema that handles repeating elements more inherently. This allows - the ``mappings`` to handle repeating elements and Phenopacket Blocks. - -4. Write the specific mappings from your REDCap data model to the Phenopacket - schema, using the templates for the mappings below (:ref:`phenopacket-mappings`). - -5. Develop label dictionaries for all value sets of your data model, - mapping codes to human-readable labels (best to use the ontologie's - `preferred label`) . Use the templates for the label dictionaries below ( - :ref:`label-dicts`). This will allow the ``DataProcessor`` class to fetch - the labels for the codes in your data model using the ``fetch_label`` method. - - - For REDCap fields that are connected to BIOPORTAL directly, the label will - be automatically fetched via the BIOPORTAL API. - -6. Develop mapping dictionaries for your data model, mapping codes to - standardized terms or enums. Use the templates for the mapping dictionaries - below (:ref:`mapping-dicts`). - -7. Use the mappings in the ``mappings`` folder of the RareLink-Phenopacket - module as a template to adapt the mappings to other Phenopacket blocks or - extensions in your model. - -8. Adapt the ``create`` function to your needs, if necessary extending it with - the relevant Phenopacket blocks and elements and importing your additional - mapping dictionaries. - -9. Run the Phenopacket pipleine by running: - -.. code:: bash - - rarelink phenopackets export - -_____________________________________________________________________________________ - -.. _phenopacket-mappings: - -Mapping example to Phenopacket Blocks -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This section provides general examples of how to structure repeating and -non-repeating data blocks. Customize the right-hand side values to fit specific -user fields. The left-hand values are derived from the respective Phenopacket -blocks `Disease `_ -and `Individual `_. - -.. code-block:: bash - - INDIVIDUAL_BLOCK = { - "id_field": "", - "date_of_birth_field": "", - "time_at_last_encounter_field": "", - "sex_field": "", - "karyotypic_sex_field": "", - "gender_field": "", - } - - DISEASE_BLOCK = { - "redcap_repeat_instrument": "", - "term_field_1": "", - "term_field_2": "", - "term_field_3": "", - "term_field_4": "", - "term_field_5": "", - "excluded_field": "", - "onset_date_field": "", - "onset_category_field": "", - "primary_site_field": "", - } - -**Notes**: - -- Replace `` and other placeholders with the specific field - names or codes used in your REDCap project or dataset. -- For repeating blocks, ensure the `redcap_repeat_instrument` value matches the - instrument name configured in REDCap. -- Customize as needed for other field mappings. - - -_____________________________________________________________________________________ - - -.. _label-dicts: - -Example for Label Dictionaries -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The label dictionaries map codes to human-readable labels defined in your -value sets. Replace the placeholders with specific codes and labels relevant to -your use case. Make sure to include the function below in your .py file -``get_mapping_by_name`` so that the ``DataProcessor`` can access the mappings -correctly. All codes that are not defined in here, will be fetched from -the BIOPORTAL API by the ``DataProcessor``. - -.. code-block:: bash - - label_dicts = { - "CategoryName1": { - "": "", - "": "", - "": "", - "": "", - "": "", - }, - "CategoryName2": { - "": "", - "": "", - "": "", - "": "", - }, - } - - def get_mapping_by_name(name, to_boolean=False): - for mapping_dict in mapping_dicts: - if mapping_dict["name"] == name: - mapping = mapping_dict["mapping"] - if to_boolean: - return {key: value.lower() == "true" for key, value in mapping.items()} - return mapping - raise KeyError(f"No mapping found for name: {name}") - - -_____________________________________________________________________________________ - -.. _mapping-dicts: - -General Example for Mapping Dictionaries -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The mapping dictionaries map codes to standardized terms or enums defined, with -mapped values corresponding to Phenopacket-specific elements. Replace the -placeholders with relevant codes and Phenopacket terms. - -.. code-block:: bash - - mapping_dicts = [ - { - "name": "", - "mapping": { - "": "", # Example: "FEMALE" - "": "", # Example: "MALE" - "": "", # Example: "UNKNOWN_SEX" - "": "", # Example: "OTHER_SEX" - "": "", # Example: "NOT_RECORDED" - }, - }, - { - "name": "", - "mapping": { - "": "", - "": "", - "": "", - }, - }, - ] - -**Notes**: - -- **Mapping Name:** Replace `` with descriptive names for the - mapping (e.g., `"map_sex"`, `"map_disease"`). -- **Codes:** Replace `` with actual codes (e.g., `snomedct_248152002`). -- **Phenopacket Terms:** Replace `` with specific - Phenopacket-standardized terms (e.g., `"FEMALE"`, `"UNKNOWN_SEX"`). -- Add additional mappings as necessary to include all relevant - Phenopacket-specific elements. - - - - diff --git a/docs/_build/_sources/4_user_guide/4_4_tofhir_module.rst.txt b/docs/_build/_sources/4_user_guide/4_4_tofhir_module.rst.txt deleted file mode 100644 index bd6a93a89..000000000 --- a/docs/_build/_sources/4_user_guide/4_4_tofhir_module.rst.txt +++ /dev/null @@ -1,257 +0,0 @@ -.. _4_4: - -FHIR Module -============= - -The RareLink FHIR module implements the `open-source toFHIR engine `_ -which converts all data from the :ref:`2_2` into FHIR resources. This section details the commands available in the RareLink CLI to manage the -FHIR module and associated pipelines. - -.. attention:: - - Please ensure you are **authorized to export (real-world) data** to - the configured FHIR server. This includes verifying compliance with - the ethical agreement and data protection regulations of your study - or registry - - Be aware of your projects **development and production mode**. Read the - :ref:`1_6` section and discuss this with your FHIR server administrator! - -_____________________________________________________________________________________ - -**Overview** - -- :ref:`get_started` -- :ref:`fhir_profiles` -- :ref:`cli_fhir_commands` - - :ref:`setup_command` - - :ref:`hapi_server_command` - - :ref:`export_command` - - :ref:`restart_docker_command` - - :ref:`docker_commands` -- :ref:`cdis-module` - -_____________________________________________________________________________________ - -.. _get_started: - -Geting started ---------------- - -To use these functionalities, you need a running REDCap project with API access -and the RareLink-CDM instruments. You also need the framework and all its -components running. You can run the following commands to set everything up: - -- ``rarelink framework update`` to update the framework and all components. -- ``rarelink setup redcap-project`` to set up a REDCap project with your REDCap - administrator. -- ``rarelink setup keys`` to set up the REDCap API access locally. - -_____________________________________________________________________________________ - -.. _fhir_profiles: - -RareLink-CDM FHIR Profiles ---------------------------- - -These FHIR resources generated are based on the HL7 FHIR `International Patient Summary (IPS) `_ -and `Genomoics Reporting `_ -profiles. The :ref:`2_2` FHIR profiles include these dependencies to generate -the FHIR resources that are compliant with the IPS and the GenomicsReporting -profiles. For more information on FHIR, please read the background section -:ref:`1_4`. - -.. hint:: - You can check out the :ref:`2_2` FHIR Profiles in **draft** `here `_ - -_____________________________________________________________________________________ - -.. _cli_fhir_commands: - -RareLink-CLI FHIR Commands --------------------------- - -.. _setup_command: - -1. Setup Command -___________________ - -.. code-block:: bash - - rarelink fhir setup - -**What it does**: - -- Configures the `toFHIR` pipeline for RareLink. -- Validates required setup files (`.env`, `redcap-projects.json`). -- Prompts for the FHIR server URL and saves it to `.env`. - -**Requirements**: - -- Docker and Docker Compose must be installed. -- A FHIR server must be accessible or created locally using ``rarelink fhir hapi-server``. - -**Steps**: - -1. Ensure the `.env` file exists and contains: - -.. code:: bash - - BIOPORTAL_API_TOKEN: - REDCAP_URL: - REDCAP_PROJECT_ID: - REDCAP_API_TOKEN: - -... otherwise run ``rarelink setup keys`` to set them up. - -2. Run the command and provide the FHIR server URL. -3. Confirm Docker is installed, or follow prompts to install it. - -_____________________________________________________________________________________ - -.. _hapi_server_command: - -2. HAPI Server Command -________________________ - -.. code-block:: bash - - rarelink fhir hapi-server - -**What it does**: - -- Sets up a local HAPI FHIR server using Docker. -- Creates a Docker network (`shared-network`) if not present. -- Runs the HAPI FHIR server container. - -**Requirements**: - -- Docker must be installed. - -**Steps**: - -1. Run the command. -2. If the server container already exists, it restarts it. -3. Access the server at `http://localhost:8080`. - -**Hints**: - -- Data is stored in the Docker container. Avoid removing it to preserve data. -- Use this command if no external FHIR server is available. - - -_____________________________________________________________________________________ - -.. _export_command: - -3. Export Command -_____________________ - -.. code-block:: bash - - rarelink fhir export - -**What it does**: - -- Exports data from REDCap to the configured FHIR server. -- Validates `.env` and `redcap-projects.json` files. -- Runs the ToFHIR pipeline using Docker Compose. - -**Requirements**: - -- `.env` and `redcap-projects.json` must be valid. -- Docker and Docker Compose must be installed. - -**Steps**: - -1. Validate setup files using ``rarelink fhir setup``. -2. Ensure the ethical agreement for exporting data is fulfilled. -3. Run the command to start the ToFHIR pipeline. - -**Logs**: - -- Use ``docker logs -f tofhir`` to monitor the export process in real time. - -_____________________________________________________________________________________ - -.. _restart_docker_command: - -4. Restart Docker Command -____________________________ - -.. code-block:: bash - - rarelink fhir restart-dockers - -**What it does**: - -- Stops all running Docker containers. -- Removes stopped containers. -- Restarts the necessary containers using `docker-compose`. - -**Steps**: - -1. Run the command. -2. Monitor logs if needed (e.g., `docker logs -f `). - -_____________________________________________________________________________________ - -.. _docker_commands: - -Docker Commands ----------------- - -These commands help manage Docker containers used in the RareLink framework. - -- **Stop All Containers**: - - .. code-block:: bash - - docker stop $(docker ps -q) - -- **Remove Stopped Containers**: - - .. code-block:: bash - - docker rm $(docker ps -aq) - -- **Restart Containers with Docker Compose**: - - .. code-block:: bash - - docker-compose down - docker-compose up -d - -- **Inspect a Running Container**: - - .. code-block:: bash - - docker exec -it /bin/bash - -- **View Logs**: - - .. code-block:: bash - - docker logs -f - - For example: - - .. code-block:: bash - - docker logs -f tofhir - - This shows real-time logs for the `tofhir` export process. - -- **Copy Files from a Container**: - - .. code-block:: bash - - docker cp :/path/to/file /local/destination - -_____________________________________________________________________________________ - -.. _cdis-module: - -Importing FHIR to REDCap -------------------------- - - - diff --git a/docs/_build/_sources/4_user_guide/4_5_develop_redcap_instruments.rst.txt b/docs/_build/_sources/4_user_guide/4_5_develop_redcap_instruments.rst.txt deleted file mode 100644 index 85c160c66..000000000 --- a/docs/_build/_sources/4_user_guide/4_5_develop_redcap_instruments.rst.txt +++ /dev/null @@ -1,134 +0,0 @@ -.. _4_5: - -Develop REDCap Instruments -=========================== - -This section provides a guide for developing REDCap instruments around the -:ref:`2_2`: that can also be processed by the Phenopacket and FHIR pipeline. -If the rules are followd upon development of the REDCap sheets, -mapping and setup steps will be required to convert the data into the -Phenopackets or FHIR format. For example, see the section :ref:`phenopackets-other-redcap-data-models` -of the :ref:`rarelink-phenopacket-module`. - -_____________________________________________________________________________________ - -REDCap instrument structure ---------------------------- - -A REDCap instrument is a collection of fields that are grouped together to -collect data for a specific purpose. The fields can be of different types, -such as text fields, radio buttons, checkboxes, etc. The fields can be -grouped into sections, and the sections can be repeated for a specific number -of times. The fields can also be validated using REDCap's integrated -validators. - -_____________________________________________________________________________________ - -.. _rule-set: - -REDCap-inherent rules ----------------------- - -REDCap variables and choice codes have specific limitations and requirements -you **should or must** comply with when creating your REDCap shets. - -- REDCap recommends a maximum of 26 characters for variable names. If possible, - you should shorten the variable names to adhere to this limit. -- REDCap variables must be unique and must not contain spaces or special - characters, therefore only alphanumeric characters and underscores are allowed. - -_____________________________________________________________________________________ - -RareLink obligatory rules ---------------------------- - -1) Data element output -________________________ - -The **output (i.e. the answer) to each question in your REDCap instrument MUST be encoded -with** :ref:`1_2` codes or pass on a validated data field! This is crucial, -so that the output of a data element is a code or a validated format that can -be processed by the RareLink framework. - - ... in regard to the different REDCap field types: - - - ``Single Choice Dropdown & Radio-Button fields``: the choices (i.e. the - data elemen'ts value set) **must** be encoded with :ref:`1_2` codes, - their official BIOPORTAL prefixes and their respective *preferred labels*. - - - e.g.: **snomedct_32218000** or **hp_5200403**. - - - ``Checkboxes (Multiple Answers)fields`` **CANNOT** be processed by the - RareLink framework and **should not be used**. Even if the choices are - encoded with ontology codes, the output are *`1`* or *`0`* for - each choice while altering the variable names. - - - ``Text fields``: can be used for free text input, but the data **must** - either... - - - use REDCap's integrated validators, for example for dates, numbers, etc. - A string or text should only be used when the target data element in - :ref:`1_4` or :ref:`1_3` is a string or text field. - - - or use an integrated `BioPortal `_ - **validation service** to validate the free text input. If you cannot - see this option in your REDCap setup, contact you REDCap administrator. - This can be set free of charge. - - -2) REDCap expression repository -________________________________ - -**REDCap expression repository**: for exporting data to FHIR or Phenopackets, -you will always need the versions of the :ref:`1_2` you are using. REDCap -does not natively include an expression repository, however you can use the -``Field Annotations`` field in each data element to store the version of the -ontology or terminology you are using. You can also use an Excel or word sheet, -but we recommend keeping these in there so that they are part your project's -:ref:`1_6` data dictionary. - -- Like our :ref:`2_2`, you can also convert your model into a - :ref:`rarelink_cdm_linkml` which also provides the possibility to dedicating a - section to the codesystems used. (CAVE: this requires coding experince). - -- To give more context to the data element, you can also include the mapping to - the FHIR expression or the GA4GH Phenopacket Schema element, - like in the example below. - -.. code-block:: bash - - Variable: - HP:0012824 | Severity - Choices: - - HP:0012827 | Borderline - - HP:0012825 | Mild - - HP:0012826 | Moderate - - HP:0012829 | Profound - - HP:0012828 | Severe - Version(s): - - HPO Version 2025-05-06 - Mapping: - - HL7 FHIR Expression v4.0.1: Observation.interpretation - - GA4GH Phenopacket Schema v2.0 Element: PhenotypicFeature.severity - - -RareLink optional rules ------------------------------ - -- The REDCap variable names should also be encoded with :ref:`1_2` codes and - their respective *preferred labels* and using their official prefix - (e.g. *hp_*, *snomedct_*, etc.) so that the concept of an element itself is - clear. Also, sometimes FHIR requires a *CodeableConcept* for a specific - element. - -- If you include the codes in the variable names, you can use suffixes to - differentiate between the codes and the variable names. For example, - ``snomedct_123456_onset``, or ``snomedct_123456_age``. - -- For repeating sections, we recommend using the REDCap **Repeating Instruments** - feature for separate instruments, which allows you to repeat a section of - questions for a specific number of times. See :ref:`3_3` for more information - on how to activate this feature. - - -Return to `top <#top>`_. \ No newline at end of file diff --git a/docs/_build/_sources/4_user_guide/4_6_redcap_tools.rst.txt b/docs/_build/_sources/4_user_guide/4_6_redcap_tools.rst.txt deleted file mode 100644 index 30afb3bf5..000000000 --- a/docs/_build/_sources/4_user_guide/4_6_redcap_tools.rst.txt +++ /dev/null @@ -1,47 +0,0 @@ -.. _4_6: - -REDCap Tools -============== - -Once you have your API access set up, you can interact with your REDCap project: - - -API Endpoints ----------------- - -**Export Records** - -The `export-records` command allows users to export records from REDCap. - -.. code-block:: bash - - rarelink redcap export-records - - -**Fetch Metadata** - -The `fetch-metadata` command allows users to fetch metadata from REDCap. - -.. code-block:: bash - - rarelink redcap fetch-metadata - - -**Import Records** - -The `import-records` command allows users to import records into REDCap. - -.. code-block:: bash - - rarelink redcap upload-records - -**Validate HGVS** - -The `validate-hgvs` command allows users to validate HGVS strings. - -.. code-block:: bash - - rarelink redcap validate-hgvs - - - diff --git a/docs/_build/_sources/5_contributing.rst.txt b/docs/_build/_sources/5_contributing.rst.txt deleted file mode 100644 index 658605789..000000000 --- a/docs/_build/_sources/5_contributing.rst.txt +++ /dev/null @@ -1,22 +0,0 @@ -.. _5_: - - -Contributing -============== - -.. attention:: - RareLink v2.0.2 is under testing and development. Please :ref:`12` us - before using it to ensure you have the latest updates and guidance. - -RareLink is a community-driven project. We welcome contributions from everyone. -There are many ways to contribute to RareLink, including the following: - -- Reporting a bug -- Discussing the current state of the code -- Submitting a fix -- Proposing new features - -Feel free to write an issue on our `RareLink GitHub Repository `_ -or reach out to us directly. - -If you are interested in contributing to RareLink, please :ref:`12` us. \ No newline at end of file diff --git a/docs/_build/_sources/6_changelog.rst.txt b/docs/_build/_sources/6_changelog.rst.txt deleted file mode 100644 index 030f8240e..000000000 --- a/docs/_build/_sources/6_changelog.rst.txt +++ /dev/null @@ -1,25 +0,0 @@ -.. _6: - -Changelog -=========== - - -v2.0.2 (soon) ------------------- - -This version will be the version we publish RareLink as a stable release and -in a scientific journal. - - -v2.0.2 (Under Development) --------------------------------- - -The current version under development is v2.0.2. - - -Previous versions (up to v2.0): --------------------------------- - -- The ERKER project was the previous version of RareLink and can still be found - in the `ERKER GitHub repository `_. However, the ERKER project is no longer - maintained and has been replaced by RareLink. \ No newline at end of file diff --git a/docs/_build/_sources/7_faq.rst.txt b/docs/_build/_sources/7_faq.rst.txt deleted file mode 100644 index dc8cad127..000000000 --- a/docs/_build/_sources/7_faq.rst.txt +++ /dev/null @@ -1,14 +0,0 @@ -.. _7: - -FAQ -==================== - - -- **Q**: How do I get started with the API? - - **A**: You can start by reading the :ref:`1_6` section to learn more about - the REDCap API access and the :ref:`3_4` section to learn more about the - RareLink API setup for your local REDCap project. However, you will need some - coding experience to interact with the API. - - diff --git a/docs/_build/_sources/8_glossary.rst.txt b/docs/_build/_sources/8_glossary.rst.txt deleted file mode 100644 index 4a23d9bd0..000000000 --- a/docs/_build/_sources/8_glossary.rst.txt +++ /dev/null @@ -1,20 +0,0 @@ -Glossary -==================== - -.. glossary:: - Interoperability: definitions - - The ability of different information systems, devices, or applications to - connect, in a coordinated manner, within and across organizational - boundaries to access, exchange, and cooperatively use data amongst - stakeholders. - -.. note:: - to be continued... - - - - - - - \ No newline at end of file diff --git a/docs/_build/_sources/9_acknowledgements.rst.txt b/docs/_build/_sources/9_acknowledgements.rst.txt deleted file mode 100644 index a16d314d7..000000000 --- a/docs/_build/_sources/9_acknowledgements.rst.txt +++ /dev/null @@ -1,16 +0,0 @@ -Acknowlegements -==================== - -We specifically thank all the contributors to the RareLink project. W -e also acknowledge the following organizations for their support and collaboration: - -- `Berlin Institute of Health (BIH) at Charité Universitätsmedizin Berlin `_: - - - **Prof. Sylvia Thun** and colleagues from the `Core Unit Digital Health and Interoperability `_ - - **Prof. Peter N. Robinson** and colleagues from the working group `Medical Computer Science and Artificial Intelligence `_ - -- **Prof. Oya Beyan** from the `University Hospital Cologne Institute of Biomedical Informatics `_ -- All participating colleagues from `The Monarch Initiative `_ - - - diff --git a/docs/_build/_sources/index.rst.txt b/docs/_build/_sources/index.rst.txt deleted file mode 100644 index 173875de2..000000000 --- a/docs/_build/_sources/index.rst.txt +++ /dev/null @@ -1,195 +0,0 @@ -Welcome to the RareLink REDCap Documentation! -============================================= - -.. image:: https://readthedocs.org/projects/rarelink/badge/?version=latest - :target: https://rarelink.readthedocs.io/en/latest/?badge=latest - :alt: Documentation Status - -.. attention:: - RareLink v2.0.2 is under testing and development. Please :ref:`12` us - before using it to ensure you have the latest updates and guidance. - -RareLink is a novel framework designed for managing and processing rare disease -(RD) data within the REDCap. Rare diseases affect over 260 million individuals -worldwide, yet data quality and scarcity pose significant challenges in research -and clinical care. RareLink aims to standardize and streamline RD data management -around REDCap by providing a structured project setup that ensures consistency -across data collection instruments, variables, and data dictionaries. RareLink -has integrated the `ontology-based rare disease common data model (RD-CDM) `_ -into its core, allowing its linkage and preconifgured export to data the -standards HL7 FHIR and the GA4GH Phenopacket Schema. In the following you will -find detailed information on the RareLink framework, including its background, -components, installation instructions, user guide, and full examples. - -________________________________________________________________________________ - -.. figure:: ../_static/res/rarelink_overview.svg - - Overview of the RareLink framework integrated with a local REDCap instance. - The framework comprises the RareLink instruments based on the RD-CDM, the - RareLink API, the toFHIR & CDIS module for export and import to HL7 FHIR IPS - and Genomic Reporting Resources, and the RareLink-Phenopackets module for - direct export to GA4GH Phenopackets. Additionally, the LinkML-based import - mapper facilitates data import from tabular databases into REDCap, while - the Manual Data Capture Guide assists with the manual data capture of - RD-CDM data in a local REDCap project. Click `here `_ - to see the figure in full size. - -________________________________________________________________________________ - -.. note:: - - **GitHub Repository:** https://github.com/BIH-CEI/RareLink - - The manuscript is currently being prepared for submission. A preprint - will be available soon. - -________________________________________________________________________________ - -The documentation is structured as follows: - -Sections ---------- -1) :doc:`1_background/1_0_background_file` - Introduction, definitions, and explanation of all the background information, - technologies, and systems used in the RareLink framework. - -2) :doc:`2_rarelink_framework/2_0_rarelink_file` - Overview and detailed information on the RareLink framework, its components, - and architecture. - -3) :doc:`3_installation/3_0_install_file` - Installation guides for all components of the RareLink framework. - -4) :doc:`4_user_guide/4_0_guide_file` - User guides for all components of the RareLink framework. - -5) :doc:`5_contributing` -6) :doc:`6_changelog` -7) :doc:`7_faq` -8) :doc:`8_glossary` -9) :doc:`9_acknowledgements` -10) :doc:`10_license` -11) :doc:`11_download_manifest` - -________________________________________________________________________________ - -1) Background ---------------- - -- :doc:`1_background/1_0_background_file` -- :doc:`1_background/1_1_rd_interoperability` -- :doc:`1_background/1_2_ontologies` -- :doc:`1_background/1_3_ga4gh_phenopacket_schema` -- :doc:`1_background/1_4_hl7_fhir` -- :doc:`1_background/1_5_rd_cdm` -- :doc:`1_background/1_6_redcap` - -________________________________________________________________________________ - -2) RareLink Framework ----------------------- - -- :doc:`2_rarelink_framework/2_1_rarelink_overview` -- :doc:`2_rarelink_framework/2_2_rarelink_cdm` -- :doc:`2_rarelink_framework/2_3_rarelink_cli` - -________________________________________________________________________________ - -3) Installation ------------------ - -- :doc:`3_installation/3_1_setup_rarelink_framework` -- :doc:`3_installation/3_2_setup_redcap_project` -- :doc:`3_installation/3_3_data_dictionary` -- :doc:`3_installation/3_4_redcap_api` - -4) User Guide --------------- - -- :doc:`4_user_guide/4_1_manual_data_capture` -- :doc:`4_user_guide/4_2_import_mapper` -- :doc:`4_user_guide/4_3_phenopackets` -- :doc:`4_user_guide/4_4_fhir_module` -- :doc:`4_user_guide/4_5_develop_redcap_instruments` -- :doc:`4_user_guide/4_6_redcap_tools` - -________________________________________________________________________________ - - -Additional Information ------------------------ -- :doc:`5_contributing` -- :doc:`6_changelog` -- :doc:`7_faq` -- :doc:`8_glossary` -- :doc:`9_acknowledgements` -- :doc:`10_license` -- :doc:`11_download_manifest` -- :doc:`12_contact` - -________________________________________________________________________________ - -.. toctree:: - :caption: Background - :maxdepth: 2 - :hidden: - - 1_background/1_1_rd_interoperability - 1_background/1_2_ontologies - 1_background/1_3_ga4gh_phenopacket_schema - 1_background/1_4_hl7_fhir - 1_background/1_5_rd_cdm - 1_background/1_6_redcap - -.. toctree:: - :caption: RareLink Framework - :maxdepth: 2 - :hidden: - - 2_rarelink_framework/2_1_rarelink_overview - 2_rarelink_framework/2_2_rarelink_cdm - 2_rarelink_framework/2_3_rarelink_cli - -.. toctree:: - :caption: Installation - :maxdepth: 2 - :hidden: - - 3_installation/3_1_setup_rarelink_framework - 3_installation/3_2_setup_redcap_project - 3_installation/3_3_data_dictionary - 3_installation/3_4_redcap_api - -.. toctree:: - :caption: User Guide - :maxdepth: 2 - :hidden: - - 4_user_guide/4_1_manual_data_capture - 4_user_guide/4_2_import_mapper - 4_user_guide/4_3_phenopackets - 4_user_guide/4_4_fhir_module - 4_user_guide/4_5_develop_redcap_instruments - 4_user_guide/4_6_redcap_tools - -.. toctree:: - :caption: Additional Information - :maxdepth: 2 - :hidden: - - 5_contributing - 6_changelog - 7_faq - 8_glossary - 9_acknowledgements - 10_license - 11_download_manifest - 12_contact - - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/docs/_build/_static/_sphinx_javascript_frameworks_compat.js b/docs/_build/_static/_sphinx_javascript_frameworks_compat.js deleted file mode 100644 index 81415803e..000000000 --- a/docs/_build/_static/_sphinx_javascript_frameworks_compat.js +++ /dev/null @@ -1,123 +0,0 @@ -/* Compatability shim for jQuery and underscores.js. - * - * Copyright Sphinx contributors - * Released under the two clause BSD licence - */ - -/** - * small helper function to urldecode strings - * - * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL - */ -jQuery.urldecode = function(x) { - if (!x) { - return x - } - return decodeURIComponent(x.replace(/\+/g, ' ')); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -}; - -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - var bbox = node.parentElement.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} diff --git a/docs/_build/_static/basic.css b/docs/_build/_static/basic.css deleted file mode 100644 index 7ebbd6d07..000000000 --- a/docs/_build/_static/basic.css +++ /dev/null @@ -1,914 +0,0 @@ -/* - * Sphinx stylesheet -- basic theme. - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -div.section::after { - display: block; - content: ''; - clear: left; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 230px; - margin-left: -100%; - font-size: 90%; - word-wrap: break-word; - overflow-wrap : break-word; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -div.sphinxsidebar #searchbox form.search { - overflow: hidden; -} - -div.sphinxsidebar #searchbox input[type="text"] { - float: left; - width: 80%; - padding: 0.25em; - box-sizing: border-box; -} - -div.sphinxsidebar #searchbox input[type="submit"] { - float: left; - width: 20%; - border-left: none; - padding: 0.25em; - box-sizing: border-box; -} - - -img { - border: 0; - max-width: 100%; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin-top: 10px; -} - -ul.search li { - padding: 5px 0; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li p.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; - margin-left: auto; - margin-right: auto; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable { - width: 100%; -} - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable ul { - margin-top: 0; - margin-bottom: 0; - list-style-type: none; -} - -table.indextable > tbody > tr > td > ul { - padding-left: 0em; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -/* -- domain module index --------------------------------------------------- */ - -table.modindextable td { - padding: 2px; - border-collapse: collapse; -} - -/* -- general body styles --------------------------------------------------- */ - -div.body { - min-width: 360px; - max-width: 800px; -} - -div.body p, div.body dd, div.body li, div.body blockquote { - -moz-hyphens: auto; - -ms-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; -} - -a.headerlink { - visibility: hidden; -} - -a:visited { - color: #551A8B; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink, -caption:hover > a.headerlink, -p.caption:hover > a.headerlink, -div.code-block-caption:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -img.align-left, figure.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; -} - -img.align-right, figure.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; -} - -img.align-center, figure.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -img.align-default, figure.align-default, .figure.align-default { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-default { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar, -aside.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px; - background-color: #ffe; - width: 40%; - float: right; - clear: right; - overflow-x: auto; -} - -p.sidebar-title { - font-weight: bold; -} - -nav.contents, -aside.topic, -div.admonition, div.topic, blockquote { - clear: left; -} - -/* -- topics ---------------------------------------------------------------- */ - -nav.contents, -aside.topic, -div.topic { - border: 1px solid #ccc; - padding: 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- content of sidebars/topics/admonitions -------------------------------- */ - -div.sidebar > :last-child, -aside.sidebar > :last-child, -nav.contents > :last-child, -aside.topic > :last-child, -div.topic > :last-child, -div.admonition > :last-child { - margin-bottom: 0; -} - -div.sidebar::after, -aside.sidebar::after, -nav.contents::after, -aside.topic::after, -div.topic::after, -div.admonition::after, -blockquote::after { - display: block; - content: ''; - clear: both; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - margin-top: 10px; - margin-bottom: 10px; - border: 0; - border-collapse: collapse; -} - -table.align-center { - margin-left: auto; - margin-right: auto; -} - -table.align-default { - margin-left: auto; - margin-right: auto; -} - -table caption span.caption-number { - font-style: italic; -} - -table caption span.caption-text { -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -th { - text-align: left; - padding-right: 5px; -} - -table.citation { - border-left: solid 1px gray; - margin-left: 1px; -} - -table.citation td { - border-bottom: none; -} - -th > :first-child, -td > :first-child { - margin-top: 0px; -} - -th > :last-child, -td > :last-child { - margin-bottom: 0px; -} - -/* -- figures --------------------------------------------------------------- */ - -div.figure, figure { - margin: 0.5em; - padding: 0.5em; -} - -div.figure p.caption, figcaption { - padding: 0.3em; -} - -div.figure p.caption span.caption-number, -figcaption span.caption-number { - font-style: italic; -} - -div.figure p.caption span.caption-text, -figcaption span.caption-text { -} - -/* -- field list styles ----------------------------------------------------- */ - -table.field-list td, table.field-list th { - border: 0 !important; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -/* -- hlist styles ---------------------------------------------------------- */ - -table.hlist { - margin: 1em 0; -} - -table.hlist td { - vertical-align: top; -} - -/* -- object description styles --------------------------------------------- */ - -.sig { - font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; -} - -.sig-name, code.descname { - background-color: transparent; - font-weight: bold; -} - -.sig-name { - font-size: 1.1em; -} - -code.descname { - font-size: 1.2em; -} - -.sig-prename, code.descclassname { - background-color: transparent; -} - -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - -.sig-param.n { - font-style: italic; -} - -/* C++ specific styling */ - -.sig-inline.c-texpr, -.sig-inline.cpp-texpr { - font-family: unset; -} - -.sig.c .k, .sig.c .kt, -.sig.cpp .k, .sig.cpp .kt { - color: #0033B3; -} - -.sig.c .m, -.sig.cpp .m { - color: #1750EB; -} - -.sig.c .s, .sig.c .sc, -.sig.cpp .s, .sig.cpp .sc { - color: #067D17; -} - - -/* -- other body styles ----------------------------------------------------- */ - -ol.arabic { - list-style: decimal; -} - -ol.loweralpha { - list-style: lower-alpha; -} - -ol.upperalpha { - list-style: upper-alpha; -} - -ol.lowerroman { - list-style: lower-roman; -} - -ol.upperroman { - list-style: upper-roman; -} - -:not(li) > ol > li:first-child > :first-child, -:not(li) > ul > li:first-child > :first-child { - margin-top: 0px; -} - -:not(li) > ol > li:last-child > :last-child, -:not(li) > ul > li:last-child > :last-child { - margin-bottom: 0px; -} - -ol.simple ol p, -ol.simple ul p, -ul.simple ol p, -ul.simple ul p { - margin-top: 0; -} - -ol.simple > li:not(:first-child) > p, -ul.simple > li:not(:first-child) > p { - margin-top: 0; -} - -ol.simple p, -ul.simple p { - margin-bottom: 0; -} - -aside.footnote > span, -div.citation > span { - float: left; -} -aside.footnote > span:last-of-type, -div.citation > span:last-of-type { - padding-right: 0.5em; -} -aside.footnote > p { - margin-left: 2em; -} -div.citation > p { - margin-left: 4em; -} -aside.footnote > p:last-of-type, -div.citation > p:last-of-type { - margin-bottom: 0em; -} -aside.footnote > p:last-of-type:after, -div.citation > p:last-of-type:after { - content: ""; - clear: both; -} - -dl.field-list { - display: grid; - grid-template-columns: fit-content(30%) auto; -} - -dl.field-list > dt { - font-weight: bold; - word-break: break-word; - padding-left: 0.5em; - padding-right: 5px; -} - -dl.field-list > dd { - padding-left: 0.5em; - margin-top: 0em; - margin-left: 0em; - margin-bottom: 0em; -} - -dl { - margin-bottom: 15px; -} - -dd > :first-child { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -.sig dd { - margin-top: 0px; - margin-bottom: 0px; -} - -.sig dl { - margin-top: 0px; - margin-bottom: 0px; -} - -dl > dd:last-child, -dl > dd:last-child > :last-child { - margin-bottom: 0; -} - -dt:target, span.highlighted { - background-color: #fbe54e; -} - -rect.highlighted { - fill: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa; -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -.guilabel, .menuselection { - font-family: sans-serif; -} - -.accelerator { - text-decoration: underline; -} - -.classifier { - font-style: oblique; -} - -.classifier:before { - font-style: normal; - margin: 0 0.5em; - content: ":"; - display: inline-block; -} - -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; -} - -.translated { - background-color: rgba(207, 255, 207, 0.2) -} - -.untranslated { - background-color: rgba(255, 207, 207, 0.2) -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ -} - -pre, div[class*="highlight-"] { - clear: both; -} - -span.pre { - -moz-hyphens: none; - -ms-hyphens: none; - -webkit-hyphens: none; - hyphens: none; - white-space: nowrap; -} - -div[class*="highlight-"] { - margin: 1em 0; -} - -td.linenos pre { - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - display: block; -} - -table.highlighttable tbody { - display: block; -} - -table.highlighttable tr { - display: flex; -} - -table.highlighttable td { - margin: 0; - padding: 0; -} - -table.highlighttable td.linenos { - padding-right: 0.5em; -} - -table.highlighttable td.code { - flex: 1; - overflow: hidden; -} - -.highlight .hll { - display: block; -} - -div.highlight pre, -table.highlighttable pre { - margin: 0; -} - -div.code-block-caption + div { - margin-top: 0; -} - -div.code-block-caption { - margin-top: 1em; - padding: 2px 5px; - font-size: small; -} - -div.code-block-caption code { - background-color: transparent; -} - -table.highlighttable td.linenos, -span.linenos, -div.highlight span.gp { /* gp: Generic.Prompt */ - user-select: none; - -webkit-user-select: text; /* Safari fallback only */ - -webkit-user-select: none; /* Chrome/Safari */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* IE10+ */ -} - -div.code-block-caption span.caption-number { - padding: 0.1em 0.3em; - font-style: italic; -} - -div.code-block-caption span.caption-text { -} - -div.literal-block-wrapper { - margin: 1em 0; -} - -code.xref, a code { - background-color: transparent; - font-weight: bold; -} - -h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { - background-color: transparent; -} - -.viewcode-link { - float: right; -} - -.viewcode-back { - float: right; - font-family: sans-serif; -} - -div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -span.eqno a.headerlink { - position: absolute; - z-index: 1; -} - -div.math:hover a.headerlink { - visibility: visible; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file diff --git a/docs/_build/_static/check-solid.svg b/docs/_build/_static/check-solid.svg deleted file mode 100644 index 92fad4b5c..000000000 --- a/docs/_build/_static/check-solid.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/_build/_static/clipboard.min.js b/docs/_build/_static/clipboard.min.js deleted file mode 100644 index 54b3c4638..000000000 --- a/docs/_build/_static/clipboard.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * clipboard.js v2.0.8 - * https://clipboardjs.com/ - * - * Licensed MIT © Zeno Rocha - */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 - - - - diff --git a/docs/_build/_static/copybutton.css b/docs/_build/_static/copybutton.css deleted file mode 100644 index f1916ec7d..000000000 --- a/docs/_build/_static/copybutton.css +++ /dev/null @@ -1,94 +0,0 @@ -/* Copy buttons */ -button.copybtn { - position: absolute; - display: flex; - top: .3em; - right: .3em; - width: 1.7em; - height: 1.7em; - opacity: 0; - transition: opacity 0.3s, border .3s, background-color .3s; - user-select: none; - padding: 0; - border: none; - outline: none; - border-radius: 0.4em; - /* The colors that GitHub uses */ - border: #1b1f2426 1px solid; - background-color: #f6f8fa; - color: #57606a; -} - -button.copybtn.success { - border-color: #22863a; - color: #22863a; -} - -button.copybtn svg { - stroke: currentColor; - width: 1.5em; - height: 1.5em; - padding: 0.1em; -} - -div.highlight { - position: relative; -} - -/* Show the copybutton */ -.highlight:hover button.copybtn, button.copybtn.success { - opacity: 1; -} - -.highlight button.copybtn:hover { - background-color: rgb(235, 235, 235); -} - -.highlight button.copybtn:active { - background-color: rgb(187, 187, 187); -} - -/** - * A minimal CSS-only tooltip copied from: - * https://codepen.io/mildrenben/pen/rVBrpK - * - * To use, write HTML like the following: - * - *

Short

- */ - .o-tooltip--left { - position: relative; - } - - .o-tooltip--left:after { - opacity: 0; - visibility: hidden; - position: absolute; - content: attr(data-tooltip); - padding: .2em; - font-size: .8em; - left: -.2em; - background: grey; - color: white; - white-space: nowrap; - z-index: 2; - border-radius: 2px; - transform: translateX(-102%) translateY(0); - transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); -} - -.o-tooltip--left:hover:after { - display: block; - opacity: 1; - visibility: visible; - transform: translateX(-100%) translateY(0); - transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); - transition-delay: .5s; -} - -/* By default the copy button shouldn't show up when printing a page */ -@media print { - button.copybtn { - display: none; - } -} diff --git a/docs/_build/_static/copybutton.js b/docs/_build/_static/copybutton.js deleted file mode 100644 index 2ea7ff3e2..000000000 --- a/docs/_build/_static/copybutton.js +++ /dev/null @@ -1,248 +0,0 @@ -// Localization support -const messages = { - 'en': { - 'copy': 'Copy', - 'copy_to_clipboard': 'Copy to clipboard', - 'copy_success': 'Copied!', - 'copy_failure': 'Failed to copy', - }, - 'es' : { - 'copy': 'Copiar', - 'copy_to_clipboard': 'Copiar al portapapeles', - 'copy_success': '¡Copiado!', - 'copy_failure': 'Error al copiar', - }, - 'de' : { - 'copy': 'Kopieren', - 'copy_to_clipboard': 'In die Zwischenablage kopieren', - 'copy_success': 'Kopiert!', - 'copy_failure': 'Fehler beim Kopieren', - }, - 'fr' : { - 'copy': 'Copier', - 'copy_to_clipboard': 'Copier dans le presse-papier', - 'copy_success': 'Copié !', - 'copy_failure': 'Échec de la copie', - }, - 'ru': { - 'copy': 'Скопировать', - 'copy_to_clipboard': 'Скопировать в буфер', - 'copy_success': 'Скопировано!', - 'copy_failure': 'Не удалось скопировать', - }, - 'zh-CN': { - 'copy': '复制', - 'copy_to_clipboard': '复制到剪贴板', - 'copy_success': '复制成功!', - 'copy_failure': '复制失败', - }, - 'it' : { - 'copy': 'Copiare', - 'copy_to_clipboard': 'Copiato negli appunti', - 'copy_success': 'Copiato!', - 'copy_failure': 'Errore durante la copia', - } -} - -let locale = 'en' -if( document.documentElement.lang !== undefined - && messages[document.documentElement.lang] !== undefined ) { - locale = document.documentElement.lang -} - -let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; -if (doc_url_root == '#') { - doc_url_root = ''; -} - -/** - * SVG files for our copy buttons - */ -let iconCheck = ` - ${messages[locale]['copy_success']} - - -` - -// If the user specified their own SVG use that, otherwise use the default -let iconCopy = ``; -if (!iconCopy) { - iconCopy = ` - ${messages[locale]['copy_to_clipboard']} - - - -` -} - -/** - * Set up copy/paste for code blocks - */ - -const runWhenDOMLoaded = cb => { - if (document.readyState != 'loading') { - cb() - } else if (document.addEventListener) { - document.addEventListener('DOMContentLoaded', cb) - } else { - document.attachEvent('onreadystatechange', function() { - if (document.readyState == 'complete') cb() - }) - } -} - -const codeCellId = index => `codecell${index}` - -// Clears selected text since ClipboardJS will select the text when copying -const clearSelection = () => { - if (window.getSelection) { - window.getSelection().removeAllRanges() - } else if (document.selection) { - document.selection.empty() - } -} - -// Changes tooltip text for a moment, then changes it back -// We want the timeout of our `success` class to be a bit shorter than the -// tooltip and icon change, so that we can hide the icon before changing back. -var timeoutIcon = 2000; -var timeoutSuccessClass = 1500; - -const temporarilyChangeTooltip = (el, oldText, newText) => { - el.setAttribute('data-tooltip', newText) - el.classList.add('success') - // Remove success a little bit sooner than we change the tooltip - // So that we can use CSS to hide the copybutton first - setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) - setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) -} - -// Changes the copy button icon for two seconds, then changes it back -const temporarilyChangeIcon = (el) => { - el.innerHTML = iconCheck; - setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) -} - -const addCopyButtonToCodeCells = () => { - // If ClipboardJS hasn't loaded, wait a bit and try again. This - // happens because we load ClipboardJS asynchronously. - if (window.ClipboardJS === undefined) { - setTimeout(addCopyButtonToCodeCells, 250) - return - } - - // Add copybuttons to all of our code cells - const COPYBUTTON_SELECTOR = 'div.highlight pre'; - const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) - codeCells.forEach((codeCell, index) => { - const id = codeCellId(index) - codeCell.setAttribute('id', id) - - const clipboardButton = id => - `` - codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) - }) - -function escapeRegExp(string) { - return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string -} - -/** - * Removes excluded text from a Node. - * - * @param {Node} target Node to filter. - * @param {string} exclude CSS selector of nodes to exclude. - * @returns {DOMString} Text from `target` with text removed. - */ -function filterText(target, exclude) { - const clone = target.cloneNode(true); // clone as to not modify the live DOM - if (exclude) { - // remove excluded nodes - clone.querySelectorAll(exclude).forEach(node => node.remove()); - } - return clone.innerText; -} - -// Callback when a copy button is clicked. Will be passed the node that was clicked -// should then grab the text and replace pieces of text that shouldn't be used in output -function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { - var regexp; - var match; - - // Do we check for line continuation characters and "HERE-documents"? - var useLineCont = !!lineContinuationChar - var useHereDoc = !!hereDocDelim - - // create regexp to capture prompt and remaining line - if (isRegexp) { - regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') - } else { - regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') - } - - const outputLines = []; - var promptFound = false; - var gotLineCont = false; - var gotHereDoc = false; - const lineGotPrompt = []; - for (const line of textContent.split('\n')) { - match = line.match(regexp) - if (match || gotLineCont || gotHereDoc) { - promptFound = regexp.test(line) - lineGotPrompt.push(promptFound) - if (removePrompts && promptFound) { - outputLines.push(match[2]) - } else { - outputLines.push(line) - } - gotLineCont = line.endsWith(lineContinuationChar) & useLineCont - if (line.includes(hereDocDelim) & useHereDoc) - gotHereDoc = !gotHereDoc - } else if (!onlyCopyPromptLines) { - outputLines.push(line) - } else if (copyEmptyLines && line.trim() === '') { - outputLines.push(line) - } - } - - // If no lines with the prompt were found then just use original lines - if (lineGotPrompt.some(v => v === true)) { - textContent = outputLines.join('\n'); - } - - // Remove a trailing newline to avoid auto-running when pasting - if (textContent.endsWith("\n")) { - textContent = textContent.slice(0, -1) - } - return textContent -} - - -var copyTargetText = (trigger) => { - var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); - - // get filtered text - let exclude = '.linenos'; - - let text = filterText(target, exclude); - return formatCopyText(text, '', false, true, true, true, '', '') -} - - // Initialize with a callback so we can modify the text before copy - const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) - - // Update UI with error/success messages - clipboard.on('success', event => { - clearSelection() - temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) - temporarilyChangeIcon(event.trigger) - }) - - clipboard.on('error', event => { - temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) - }) -} - -runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/docs/_build/_static/copybutton_funcs.js b/docs/_build/_static/copybutton_funcs.js deleted file mode 100644 index dbe1aaad7..000000000 --- a/docs/_build/_static/copybutton_funcs.js +++ /dev/null @@ -1,73 +0,0 @@ -function escapeRegExp(string) { - return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string -} - -/** - * Removes excluded text from a Node. - * - * @param {Node} target Node to filter. - * @param {string} exclude CSS selector of nodes to exclude. - * @returns {DOMString} Text from `target` with text removed. - */ -export function filterText(target, exclude) { - const clone = target.cloneNode(true); // clone as to not modify the live DOM - if (exclude) { - // remove excluded nodes - clone.querySelectorAll(exclude).forEach(node => node.remove()); - } - return clone.innerText; -} - -// Callback when a copy button is clicked. Will be passed the node that was clicked -// should then grab the text and replace pieces of text that shouldn't be used in output -export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { - var regexp; - var match; - - // Do we check for line continuation characters and "HERE-documents"? - var useLineCont = !!lineContinuationChar - var useHereDoc = !!hereDocDelim - - // create regexp to capture prompt and remaining line - if (isRegexp) { - regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') - } else { - regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') - } - - const outputLines = []; - var promptFound = false; - var gotLineCont = false; - var gotHereDoc = false; - const lineGotPrompt = []; - for (const line of textContent.split('\n')) { - match = line.match(regexp) - if (match || gotLineCont || gotHereDoc) { - promptFound = regexp.test(line) - lineGotPrompt.push(promptFound) - if (removePrompts && promptFound) { - outputLines.push(match[2]) - } else { - outputLines.push(line) - } - gotLineCont = line.endsWith(lineContinuationChar) & useLineCont - if (line.includes(hereDocDelim) & useHereDoc) - gotHereDoc = !gotHereDoc - } else if (!onlyCopyPromptLines) { - outputLines.push(line) - } else if (copyEmptyLines && line.trim() === '') { - outputLines.push(line) - } - } - - // If no lines with the prompt were found then just use original lines - if (lineGotPrompt.some(v => v === true)) { - textContent = outputLines.join('\n'); - } - - // Remove a trailing newline to avoid auto-running when pasting - if (textContent.endsWith("\n")) { - textContent = textContent.slice(0, -1) - } - return textContent -} diff --git a/docs/_build/_static/css/badge_only.css b/docs/_build/_static/css/badge_only.css deleted file mode 100644 index 88ba55b96..000000000 --- a/docs/_build/_static/css/badge_only.css +++ /dev/null @@ -1 +0,0 @@ -.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px} \ No newline at end of file diff --git a/docs/_build/_static/css/fonts/Roboto-Slab-Bold.woff b/docs/_build/_static/css/fonts/Roboto-Slab-Bold.woff deleted file mode 100644 index 6cb600001..000000000 Binary files a/docs/_build/_static/css/fonts/Roboto-Slab-Bold.woff and /dev/null differ diff --git a/docs/_build/_static/css/fonts/Roboto-Slab-Bold.woff2 b/docs/_build/_static/css/fonts/Roboto-Slab-Bold.woff2 deleted file mode 100644 index 7059e2314..000000000 Binary files a/docs/_build/_static/css/fonts/Roboto-Slab-Bold.woff2 and /dev/null differ diff --git a/docs/_build/_static/css/fonts/Roboto-Slab-Regular.woff b/docs/_build/_static/css/fonts/Roboto-Slab-Regular.woff deleted file mode 100644 index f815f63f9..000000000 Binary files a/docs/_build/_static/css/fonts/Roboto-Slab-Regular.woff and /dev/null differ diff --git a/docs/_build/_static/css/fonts/Roboto-Slab-Regular.woff2 b/docs/_build/_static/css/fonts/Roboto-Slab-Regular.woff2 deleted file mode 100644 index f2c76e5bd..000000000 Binary files a/docs/_build/_static/css/fonts/Roboto-Slab-Regular.woff2 and /dev/null differ diff --git a/docs/_build/_static/css/fonts/fontawesome-webfont.eot b/docs/_build/_static/css/fonts/fontawesome-webfont.eot deleted file mode 100644 index e9f60ca95..000000000 Binary files a/docs/_build/_static/css/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/docs/_build/_static/css/fonts/fontawesome-webfont.svg b/docs/_build/_static/css/fonts/fontawesome-webfont.svg deleted file mode 100644 index 855c845e5..000000000 --- a/docs/_build/_static/css/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,2671 +0,0 @@ - - - - -Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 - By ,,, -Copyright Dave Gandy 2016. All rights reserved. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/_build/_static/css/fonts/fontawesome-webfont.ttf b/docs/_build/_static/css/fonts/fontawesome-webfont.ttf deleted file mode 100644 index 35acda2fa..000000000 Binary files a/docs/_build/_static/css/fonts/fontawesome-webfont.ttf and /dev/null differ diff --git a/docs/_build/_static/css/fonts/fontawesome-webfont.woff b/docs/_build/_static/css/fonts/fontawesome-webfont.woff deleted file mode 100644 index 400014a4b..000000000 Binary files a/docs/_build/_static/css/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/docs/_build/_static/css/fonts/fontawesome-webfont.woff2 b/docs/_build/_static/css/fonts/fontawesome-webfont.woff2 deleted file mode 100644 index 4d13fc604..000000000 Binary files a/docs/_build/_static/css/fonts/fontawesome-webfont.woff2 and /dev/null differ diff --git a/docs/_build/_static/css/fonts/lato-bold-italic.woff b/docs/_build/_static/css/fonts/lato-bold-italic.woff deleted file mode 100644 index 88ad05b9f..000000000 Binary files a/docs/_build/_static/css/fonts/lato-bold-italic.woff and /dev/null differ diff --git a/docs/_build/_static/css/fonts/lato-bold-italic.woff2 b/docs/_build/_static/css/fonts/lato-bold-italic.woff2 deleted file mode 100644 index c4e3d804b..000000000 Binary files a/docs/_build/_static/css/fonts/lato-bold-italic.woff2 and /dev/null differ diff --git a/docs/_build/_static/css/fonts/lato-bold.woff b/docs/_build/_static/css/fonts/lato-bold.woff deleted file mode 100644 index c6dff51f0..000000000 Binary files a/docs/_build/_static/css/fonts/lato-bold.woff and /dev/null differ diff --git a/docs/_build/_static/css/fonts/lato-bold.woff2 b/docs/_build/_static/css/fonts/lato-bold.woff2 deleted file mode 100644 index bb195043c..000000000 Binary files a/docs/_build/_static/css/fonts/lato-bold.woff2 and /dev/null differ diff --git a/docs/_build/_static/css/fonts/lato-normal-italic.woff b/docs/_build/_static/css/fonts/lato-normal-italic.woff deleted file mode 100644 index 76114bc03..000000000 Binary files a/docs/_build/_static/css/fonts/lato-normal-italic.woff and /dev/null differ diff --git a/docs/_build/_static/css/fonts/lato-normal-italic.woff2 b/docs/_build/_static/css/fonts/lato-normal-italic.woff2 deleted file mode 100644 index 3404f37e2..000000000 Binary files a/docs/_build/_static/css/fonts/lato-normal-italic.woff2 and /dev/null differ diff --git a/docs/_build/_static/css/fonts/lato-normal.woff b/docs/_build/_static/css/fonts/lato-normal.woff deleted file mode 100644 index ae1307ff5..000000000 Binary files a/docs/_build/_static/css/fonts/lato-normal.woff and /dev/null differ diff --git a/docs/_build/_static/css/fonts/lato-normal.woff2 b/docs/_build/_static/css/fonts/lato-normal.woff2 deleted file mode 100644 index 3bf984332..000000000 Binary files a/docs/_build/_static/css/fonts/lato-normal.woff2 and /dev/null differ diff --git a/docs/_build/_static/css/theme.css b/docs/_build/_static/css/theme.css deleted file mode 100644 index 0f14f1064..000000000 --- a/docs/_build/_static/css/theme.css +++ /dev/null @@ -1,4 +0,0 @@ -html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search .wy-dropdown>aactive,.wy-side-nav-search .wy-dropdown>afocus,.wy-side-nav-search>a:hover,.wy-side-nav-search>aactive,.wy-side-nav-search>afocus{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon,.wy-side-nav-search>a.icon{display:block}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.switch-menus{position:relative;display:block;margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-side-nav-search>div.switch-menus>div.language-switch,.wy-side-nav-search>div.switch-menus>div.version-switch{display:inline-block;padding:.2em}.wy-side-nav-search>div.switch-menus>div.language-switch select,.wy-side-nav-search>div.switch-menus>div.version-switch select{display:inline-block;margin-right:-2rem;padding-right:2rem;max-width:240px;text-align-last:center;background:none;border:none;border-radius:0;box-shadow:none;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-size:1em;font-weight:400;color:hsla(0,0%,100%,.3);cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none}.wy-side-nav-search>div.switch-menus>div.language-switch select:active,.wy-side-nav-search>div.switch-menus>div.language-switch select:focus,.wy-side-nav-search>div.switch-menus>div.language-switch select:hover,.wy-side-nav-search>div.switch-menus>div.version-switch select:active,.wy-side-nav-search>div.switch-menus>div.version-switch select:focus,.wy-side-nav-search>div.switch-menus>div.version-switch select:hover{background:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.5)}.wy-side-nav-search>div.switch-menus>div.language-switch select option,.wy-side-nav-search>div.switch-menus>div.version-switch select option{color:#000}.wy-side-nav-search>div.switch-menus>div.language-switch:has(>select):after,.wy-side-nav-search>div.switch-menus>div.version-switch:has(>select):after{display:inline-block;width:1.5em;height:100%;padding:.1em;content:"\f0d7";font-size:1em;line-height:1.2em;font-family:FontAwesome;text-align:center;pointer-events:none;box-sizing:border-box}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/docs/_build/_static/custom.css b/docs/_build/_static/custom.css deleted file mode 100644 index 12aa6e162..000000000 --- a/docs/_build/_static/custom.css +++ /dev/null @@ -1,56 +0,0 @@ -.list-table { - max-width: 100px; /* Adjust as needed */ - width: 50%; /* Make it responsive */ -} - -/* Adjust the logo size and alignment */ -/* .wy-side-nav-search { - background-image: url("../res/RareLink SpinxDocs Logo.png"); - background-repeat: no-repeat; - background-position: center top; - padding-top: 100px; /* Adjust as needed to ensure no overlap */ -/* } */ */ - -.logo { - max-width: 50px; /* Set the maximum width (adjust as needed) */ - height: 50px; /* Maintain the aspect ratio */ - margin: 50px; /* Center the logo if necessary */ - display: 50px; /* Ensures proper centering and layout */ -} - -.wy-menu a[href*="background.html"] { - display: none; -} - -/* Prevent unnecessary scrolling by restricting parent container height */ -.wy-side-nav-search { - padding-top: 0; - scroll-behavior: auto; /* Remove unnecessary padding */ -} - -.wy-nav-side { - margin-top: 0; /* Remove unnecessary margins */ - overflow: hidden; /* Prevent extra scrolling */ -} - -.rst-content { - margin-top: 0; - padding-top: 0; -} - - -/* Control the overall layout to remove extra space */ -body { - overflow-y: auto; /* Ensure vertical scrolling only when needed */ -} - - -.literal-custom { - background-color: #f0f0f0; /* Light grey background */ - color: #007ACC; /* Dark blue text color */ - font-weight: bold; /* Bold text */ - padding: 2px 4px; /* Padding for better readability */ - border-radius: 3px; /* Rounded corners */ - font-family: "Courier New", Courier, monospace; /* Monospace font */ -} - diff --git a/docs/_build/_static/custom.js b/docs/_build/_static/custom.js deleted file mode 100644 index dd6f3c190..000000000 --- a/docs/_build/_static/custom.js +++ /dev/null @@ -1,7 +0,0 @@ -document.addEventListener("DOMContentLoaded", function () { - // Disable scroll preservation for the sidebar - var nav = document.querySelector(".wy-side-nav-search"); - if (nav) { - nav.style.scrollBehavior = "auto"; - } -}); \ No newline at end of file diff --git a/docs/_build/_static/doctools.js b/docs/_build/_static/doctools.js deleted file mode 100644 index 0398ebb9f..000000000 --- a/docs/_build/_static/doctools.js +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Base JavaScript utilities for all Sphinx HTML documentation. - */ -"use strict"; - -const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ - "TEXTAREA", - "INPUT", - "SELECT", - "BUTTON", -]); - -const _ready = (callback) => { - if (document.readyState !== "loading") { - callback(); - } else { - document.addEventListener("DOMContentLoaded", callback); - } -}; - -/** - * Small JavaScript module for the documentation. - */ -const Documentation = { - init: () => { - Documentation.initDomainIndexTable(); - Documentation.initOnKeyListeners(); - }, - - /** - * i18n support - */ - TRANSLATIONS: {}, - PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), - LOCALE: "unknown", - - // gettext and ngettext don't access this so that the functions - // can safely bound to a different name (_ = Documentation.gettext) - gettext: (string) => { - const translated = Documentation.TRANSLATIONS[string]; - switch (typeof translated) { - case "undefined": - return string; // no translation - case "string": - return translated; // translation exists - default: - return translated[0]; // (singular, plural) translation tuple exists - } - }, - - ngettext: (singular, plural, n) => { - const translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated !== "undefined") - return translated[Documentation.PLURAL_EXPR(n)]; - return n === 1 ? singular : plural; - }, - - addTranslations: (catalog) => { - Object.assign(Documentation.TRANSLATIONS, catalog.messages); - Documentation.PLURAL_EXPR = new Function( - "n", - `return (${catalog.plural_expr})` - ); - Documentation.LOCALE = catalog.locale; - }, - - /** - * helper function to focus on search bar - */ - focusSearchBar: () => { - document.querySelectorAll("input[name=q]")[0]?.focus(); - }, - - /** - * Initialise the domain index toggle buttons - */ - initDomainIndexTable: () => { - const toggler = (el) => { - const idNumber = el.id.substr(7); - const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); - if (el.src.substr(-9) === "minus.png") { - el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; - toggledRows.forEach((el) => (el.style.display = "none")); - } else { - el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; - toggledRows.forEach((el) => (el.style.display = "")); - } - }; - - const togglerElements = document.querySelectorAll("img.toggler"); - togglerElements.forEach((el) => - el.addEventListener("click", (event) => toggler(event.currentTarget)) - ); - togglerElements.forEach((el) => (el.style.display = "")); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); - }, - - initOnKeyListeners: () => { - // only install a listener if it is really needed - if ( - !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && - !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS - ) - return; - - document.addEventListener("keydown", (event) => { - // bail for input elements - if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; - // bail with special keys - if (event.altKey || event.ctrlKey || event.metaKey) return; - - if (!event.shiftKey) { - switch (event.key) { - case "ArrowLeft": - if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; - - const prevLink = document.querySelector('link[rel="prev"]'); - if (prevLink && prevLink.href) { - window.location.href = prevLink.href; - event.preventDefault(); - } - break; - case "ArrowRight": - if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; - - const nextLink = document.querySelector('link[rel="next"]'); - if (nextLink && nextLink.href) { - window.location.href = nextLink.href; - event.preventDefault(); - } - break; - } - } - - // some keyboard layouts may need Shift to get / - switch (event.key) { - case "/": - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; - Documentation.focusSearchBar(); - event.preventDefault(); - } - }); - }, -}; - -// quick alias for translations -const _ = Documentation.gettext; - -_ready(Documentation.init); diff --git a/docs/_build/_static/documentation_options.js b/docs/_build/_static/documentation_options.js deleted file mode 100644 index 0bc78fff0..000000000 --- a/docs/_build/_static/documentation_options.js +++ /dev/null @@ -1,13 +0,0 @@ -const DOCUMENTATION_OPTIONS = { - VERSION: '2.0.2.dev1', - LANGUAGE: 'en', - COLLAPSE_INDEX: false, - BUILDER: 'html', - FILE_SUFFIX: '.html', - LINK_SUFFIX: '.html', - HAS_SOURCE: true, - SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false, - SHOW_SEARCH_SUMMARY: true, - ENABLE_SEARCH_SHORTCUTS: true, -}; \ No newline at end of file diff --git a/docs/_build/_static/downloads_manifest.json b/docs/_build/_static/downloads_manifest.json deleted file mode 100644 index 9c119449d..000000000 --- a/docs/_build/_static/downloads_manifest.json +++ /dev/null @@ -1,6 +0,0 @@ -{"rarelink_cdm_datadictionary": { - "version": "v2_0_2", - "file_name": "rarelink_cdm_datadictionary - v2_0_2.csv", - "url": "https://rarelink.readthedocs.io/en/latest/_downloads//rarelink_cdm_datadictionary%20-%20v2_0_2.csv" - } -} diff --git a/docs/_build/_static/file.png b/docs/_build/_static/file.png deleted file mode 100644 index a858a410e..000000000 Binary files a/docs/_build/_static/file.png and /dev/null differ diff --git a/docs/_build/_static/fonts/Lato/lato-bold.eot b/docs/_build/_static/fonts/Lato/lato-bold.eot deleted file mode 100644 index 3361183a4..000000000 Binary files a/docs/_build/_static/fonts/Lato/lato-bold.eot and /dev/null differ diff --git a/docs/_build/_static/fonts/Lato/lato-bold.ttf b/docs/_build/_static/fonts/Lato/lato-bold.ttf deleted file mode 100644 index 29f691d5e..000000000 Binary files a/docs/_build/_static/fonts/Lato/lato-bold.ttf and /dev/null differ diff --git a/docs/_build/_static/fonts/Lato/lato-bold.woff b/docs/_build/_static/fonts/Lato/lato-bold.woff deleted file mode 100644 index c6dff51f0..000000000 Binary files a/docs/_build/_static/fonts/Lato/lato-bold.woff and /dev/null differ diff --git a/docs/_build/_static/fonts/Lato/lato-bold.woff2 b/docs/_build/_static/fonts/Lato/lato-bold.woff2 deleted file mode 100644 index bb195043c..000000000 Binary files a/docs/_build/_static/fonts/Lato/lato-bold.woff2 and /dev/null differ diff --git a/docs/_build/_static/fonts/Lato/lato-bolditalic.eot b/docs/_build/_static/fonts/Lato/lato-bolditalic.eot deleted file mode 100644 index 3d4154936..000000000 Binary files a/docs/_build/_static/fonts/Lato/lato-bolditalic.eot and /dev/null differ diff --git a/docs/_build/_static/fonts/Lato/lato-bolditalic.ttf b/docs/_build/_static/fonts/Lato/lato-bolditalic.ttf deleted file mode 100644 index f402040b3..000000000 Binary files a/docs/_build/_static/fonts/Lato/lato-bolditalic.ttf and /dev/null differ diff --git a/docs/_build/_static/fonts/Lato/lato-bolditalic.woff b/docs/_build/_static/fonts/Lato/lato-bolditalic.woff deleted file mode 100644 index 88ad05b9f..000000000 Binary files a/docs/_build/_static/fonts/Lato/lato-bolditalic.woff and /dev/null differ diff --git a/docs/_build/_static/fonts/Lato/lato-bolditalic.woff2 b/docs/_build/_static/fonts/Lato/lato-bolditalic.woff2 deleted file mode 100644 index c4e3d804b..000000000 Binary files a/docs/_build/_static/fonts/Lato/lato-bolditalic.woff2 and /dev/null differ diff --git a/docs/_build/_static/fonts/Lato/lato-italic.eot b/docs/_build/_static/fonts/Lato/lato-italic.eot deleted file mode 100644 index 3f826421a..000000000 Binary files a/docs/_build/_static/fonts/Lato/lato-italic.eot and /dev/null differ diff --git a/docs/_build/_static/fonts/Lato/lato-italic.ttf b/docs/_build/_static/fonts/Lato/lato-italic.ttf deleted file mode 100644 index b4bfc9b24..000000000 Binary files a/docs/_build/_static/fonts/Lato/lato-italic.ttf and /dev/null differ diff --git a/docs/_build/_static/fonts/Lato/lato-italic.woff b/docs/_build/_static/fonts/Lato/lato-italic.woff deleted file mode 100644 index 76114bc03..000000000 Binary files a/docs/_build/_static/fonts/Lato/lato-italic.woff and /dev/null differ diff --git a/docs/_build/_static/fonts/Lato/lato-italic.woff2 b/docs/_build/_static/fonts/Lato/lato-italic.woff2 deleted file mode 100644 index 3404f37e2..000000000 Binary files a/docs/_build/_static/fonts/Lato/lato-italic.woff2 and /dev/null differ diff --git a/docs/_build/_static/fonts/Lato/lato-regular.eot b/docs/_build/_static/fonts/Lato/lato-regular.eot deleted file mode 100644 index 11e3f2a5f..000000000 Binary files a/docs/_build/_static/fonts/Lato/lato-regular.eot and /dev/null differ diff --git a/docs/_build/_static/fonts/Lato/lato-regular.ttf b/docs/_build/_static/fonts/Lato/lato-regular.ttf deleted file mode 100644 index 74decd9eb..000000000 Binary files a/docs/_build/_static/fonts/Lato/lato-regular.ttf and /dev/null differ diff --git a/docs/_build/_static/fonts/Lato/lato-regular.woff b/docs/_build/_static/fonts/Lato/lato-regular.woff deleted file mode 100644 index ae1307ff5..000000000 Binary files a/docs/_build/_static/fonts/Lato/lato-regular.woff and /dev/null differ diff --git a/docs/_build/_static/fonts/Lato/lato-regular.woff2 b/docs/_build/_static/fonts/Lato/lato-regular.woff2 deleted file mode 100644 index 3bf984332..000000000 Binary files a/docs/_build/_static/fonts/Lato/lato-regular.woff2 and /dev/null differ diff --git a/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot b/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot deleted file mode 100644 index 79dc8efed..000000000 Binary files a/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot and /dev/null differ diff --git a/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf b/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf deleted file mode 100644 index df5d1df27..000000000 Binary files a/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf and /dev/null differ diff --git a/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff b/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff deleted file mode 100644 index 6cb600001..000000000 Binary files a/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff and /dev/null differ diff --git a/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 b/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 deleted file mode 100644 index 7059e2314..000000000 Binary files a/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 and /dev/null differ diff --git a/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot b/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot deleted file mode 100644 index 2f7ca78a1..000000000 Binary files a/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot and /dev/null differ diff --git a/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf b/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf deleted file mode 100644 index eb52a7907..000000000 Binary files a/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf and /dev/null differ diff --git a/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff b/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff deleted file mode 100644 index f815f63f9..000000000 Binary files a/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff and /dev/null differ diff --git a/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 b/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 deleted file mode 100644 index f2c76e5bd..000000000 Binary files a/docs/_build/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 and /dev/null differ diff --git a/docs/_build/_static/jquery.js b/docs/_build/_static/jquery.js deleted file mode 100644 index c4c6022f2..000000000 --- a/docs/_build/_static/jquery.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t -
Languages
- ${config.projects.translations - .map( - (translation) => ` -
- ${translation.language.code} -
- `, - ) - .join("\n")} - - `; - return languagesHTML; - } - - function renderVersions(config) { - if (!config.versions.active.length) { - return ""; - } - const versionsHTML = ` -
-
Versions
- ${config.versions.active - .map( - (version) => ` -
- ${version.slug} -
- `, - ) - .join("\n")} -
- `; - return versionsHTML; - } - - function renderDownloads(config) { - if (!Object.keys(config.versions.current.downloads).length) { - return ""; - } - const downloadsNameDisplay = { - pdf: "PDF", - epub: "Epub", - htmlzip: "HTML", - }; - - const downloadsHTML = ` -
-
Downloads
- ${Object.entries(config.versions.current.downloads) - .map( - ([name, url]) => ` -
- ${downloadsNameDisplay[name]} -
- `, - ) - .join("\n")} -
- `; - return downloadsHTML; - } - - document.addEventListener("readthedocs-addons-data-ready", function (event) { - const config = event.detail.data(); - - const flyout = ` -
- - Read the Docs - v: ${config.versions.current.slug} - - -
-
- ${renderLanguages(config)} - ${renderVersions(config)} - ${renderDownloads(config)} -
-
On Read the Docs
-
- Project Home -
-
- Builds -
-
- Downloads -
-
-
-
Search
-
-
- -
-
-
-
- - Hosted by Read the Docs - -
-
- `; - - // Inject the generated flyout into the body HTML element. - document.body.insertAdjacentHTML("beforeend", flyout); - - // Trigger the Read the Docs Addons Search modal when clicking on the "Search docs" input from inside the flyout. - document - .querySelector("#flyout-search-form") - .addEventListener("focusin", () => { - const event = new CustomEvent("readthedocs-search-show"); - document.dispatchEvent(event); - }); - }) -} - -if (themeLanguageSelector || themeVersionSelector) { - function onSelectorSwitch(event) { - const option = event.target.selectedIndex; - const item = event.target.options[option]; - window.location.href = item.dataset.url; - } - - document.addEventListener("readthedocs-addons-data-ready", function (event) { - const config = event.detail.data(); - - const versionSwitch = document.querySelector( - "div.switch-menus > div.version-switch", - ); - if (themeVersionSelector) { - let versions = config.versions.active; - if (config.versions.current.hidden || config.versions.current.type === "external") { - versions.unshift(config.versions.current); - } - const versionSelect = ` - - `; - - versionSwitch.innerHTML = versionSelect; - versionSwitch.firstElementChild.addEventListener("change", onSelectorSwitch); - } - - const languageSwitch = document.querySelector( - "div.switch-menus > div.language-switch", - ); - - if (themeLanguageSelector) { - if (config.projects.translations.length) { - // Add the current language to the options on the selector - let languages = config.projects.translations.concat( - config.projects.current, - ); - languages = languages.sort((a, b) => - a.language.name.localeCompare(b.language.name), - ); - - const languageSelect = ` - - `; - - languageSwitch.innerHTML = languageSelect; - languageSwitch.firstElementChild.addEventListener("change", onSelectorSwitch); - } - else { - languageSwitch.remove(); - } - } - }); -} - -document.addEventListener("readthedocs-addons-data-ready", function (event) { - // Trigger the Read the Docs Addons Search modal when clicking on "Search docs" input from the topnav. - document - .querySelector("[role='search'] input") - .addEventListener("focusin", () => { - const event = new CustomEvent("readthedocs-search-show"); - document.dispatchEvent(event); - }); -}); \ No newline at end of file diff --git a/docs/_build/_static/language_data.js b/docs/_build/_static/language_data.js deleted file mode 100644 index c7fe6c6fa..000000000 --- a/docs/_build/_static/language_data.js +++ /dev/null @@ -1,192 +0,0 @@ -/* - * This script contains the language-specific data used by searchtools.js, - * namely the list of stopwords, stemmer, scorer and splitter. - */ - -var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; - - -/* Non-minified version is copied as a separate JS file, if available */ - -/** - * Porter Stemmer - */ -var Stemmer = function() { - - var step2list = { - ational: 'ate', - tional: 'tion', - enci: 'ence', - anci: 'ance', - izer: 'ize', - bli: 'ble', - alli: 'al', - entli: 'ent', - eli: 'e', - ousli: 'ous', - ization: 'ize', - ation: 'ate', - ator: 'ate', - alism: 'al', - iveness: 'ive', - fulness: 'ful', - ousness: 'ous', - aliti: 'al', - iviti: 'ive', - biliti: 'ble', - logi: 'log' - }; - - var step3list = { - icate: 'ic', - ative: '', - alize: 'al', - iciti: 'ic', - ical: 'ic', - ful: '', - ness: '' - }; - - var c = "[^aeiou]"; // consonant - var v = "[aeiouy]"; // vowel - var C = c + "[^aeiouy]*"; // consonant sequence - var V = v + "[aeiou]*"; // vowel sequence - - var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 - var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 - var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 - var s_v = "^(" + C + ")?" + v; // vowel in stem - - this.stemWord = function (w) { - var stem; - var suffix; - var firstch; - var origword = w; - - if (w.length < 3) - return w; - - var re; - var re2; - var re3; - var re4; - - firstch = w.substr(0,1); - if (firstch == "y") - w = firstch.toUpperCase() + w.substr(1); - - // Step 1a - re = /^(.+?)(ss|i)es$/; - re2 = /^(.+?)([^s])s$/; - - if (re.test(w)) - w = w.replace(re,"$1$2"); - else if (re2.test(w)) - w = w.replace(re2,"$1$2"); - - // Step 1b - re = /^(.+?)eed$/; - re2 = /^(.+?)(ed|ing)$/; - if (re.test(w)) { - var fp = re.exec(w); - re = new RegExp(mgr0); - if (re.test(fp[1])) { - re = /.$/; - w = w.replace(re,""); - } - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = new RegExp(s_v); - if (re2.test(stem)) { - w = stem; - re2 = /(at|bl|iz)$/; - re3 = new RegExp("([^aeiouylsz])\\1$"); - re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re2.test(w)) - w = w + "e"; - else if (re3.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - else if (re4.test(w)) - w = w + "e"; - } - } - - // Step 1c - re = /^(.+?)y$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(s_v); - if (re.test(stem)) - w = stem + "i"; - } - - // Step 2 - re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step2list[suffix]; - } - - // Step 3 - re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step3list[suffix]; - } - - // Step 4 - re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - re2 = /^(.+?)(s|t)(ion)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - if (re.test(stem)) - w = stem; - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = new RegExp(mgr1); - if (re2.test(stem)) - w = stem; - } - - // Step 5 - re = /^(.+?)e$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - re2 = new RegExp(meq1); - re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) - w = stem; - } - re = /ll$/; - re2 = new RegExp(mgr1); - if (re.test(w) && re2.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - - // and turn initial Y back to y - if (firstch == "y") - w = firstch.toLowerCase() + w.substr(1); - return w; - } -} - diff --git a/docs/_build/_static/minus.png b/docs/_build/_static/minus.png deleted file mode 100644 index d96755fda..000000000 Binary files a/docs/_build/_static/minus.png and /dev/null differ diff --git a/docs/_build/_static/plus.png b/docs/_build/_static/plus.png deleted file mode 100644 index 7107cec93..000000000 Binary files a/docs/_build/_static/plus.png and /dev/null differ diff --git a/docs/_build/_static/pygments.css b/docs/_build/_static/pygments.css deleted file mode 100644 index 0d49244ed..000000000 --- a/docs/_build/_static/pygments.css +++ /dev/null @@ -1,75 +0,0 @@ -pre { line-height: 125%; } -td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } -span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } -td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -.highlight .hll { background-color: #ffffcc } -.highlight { background: #eeffcc; } -.highlight .c { color: #408090; font-style: italic } /* Comment */ -.highlight .err { border: 1px solid #FF0000 } /* Error */ -.highlight .k { color: #007020; font-weight: bold } /* Keyword */ -.highlight .o { color: #666666 } /* Operator */ -.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */ -.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #007020 } /* Comment.Preproc */ -.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */ -.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ -.highlight .gd { color: #A00000 } /* Generic.Deleted */ -.highlight .ge { font-style: italic } /* Generic.Emph */ -.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ -.highlight .gr { color: #FF0000 } /* Generic.Error */ -.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.highlight .gi { color: #00A000 } /* Generic.Inserted */ -.highlight .go { color: #333333 } /* Generic.Output */ -.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ -.highlight .gs { font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.highlight .gt { color: #0044DD } /* Generic.Traceback */ -.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ -.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ -.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ -.highlight .kp { color: #007020 } /* Keyword.Pseudo */ -.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #902000 } /* Keyword.Type */ -.highlight .m { color: #208050 } /* Literal.Number */ -.highlight .s { color: #4070a0 } /* Literal.String */ -.highlight .na { color: #4070a0 } /* Name.Attribute */ -.highlight .nb { color: #007020 } /* Name.Builtin */ -.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ -.highlight .no { color: #60add5 } /* Name.Constant */ -.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ -.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ -.highlight .ne { color: #007020 } /* Name.Exception */ -.highlight .nf { color: #06287e } /* Name.Function */ -.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ -.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ -.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ -.highlight .nv { color: #bb60d5 } /* Name.Variable */ -.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ -.highlight .w { color: #bbbbbb } /* Text.Whitespace */ -.highlight .mb { color: #208050 } /* Literal.Number.Bin */ -.highlight .mf { color: #208050 } /* Literal.Number.Float */ -.highlight .mh { color: #208050 } /* Literal.Number.Hex */ -.highlight .mi { color: #208050 } /* Literal.Number.Integer */ -.highlight .mo { color: #208050 } /* Literal.Number.Oct */ -.highlight .sa { color: #4070a0 } /* Literal.String.Affix */ -.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ -.highlight .sc { color: #4070a0 } /* Literal.String.Char */ -.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */ -.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ -.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ -.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ -.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ -.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ -.highlight .sx { color: #c65d09 } /* Literal.String.Other */ -.highlight .sr { color: #235388 } /* Literal.String.Regex */ -.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ -.highlight .ss { color: #517918 } /* Literal.String.Symbol */ -.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ -.highlight .fm { color: #06287e } /* Name.Function.Magic */ -.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ -.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ -.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ -.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */ -.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/docs/_build/_static/res/RD CDM UML.png b/docs/_build/_static/res/RD CDM UML.png deleted file mode 100644 index 00480fe70..000000000 Binary files a/docs/_build/_static/res/RD CDM UML.png and /dev/null differ diff --git a/docs/_build/_static/res/RD CDM UML.svg b/docs/_build/_static/res/RD CDM UML.svg deleted file mode 100644 index 529005ee1..000000000 --- a/docs/_build/_static/res/RD CDM UML.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/_build/_static/res/RareLink SpinxDocs Logo.png b/docs/_build/_static/res/RareLink SpinxDocs Logo.png deleted file mode 100644 index a1160a04f..000000000 Binary files a/docs/_build/_static/res/RareLink SpinxDocs Logo.png and /dev/null differ diff --git a/docs/_build/_static/res/fhir_release4_logo.jpg b/docs/_build/_static/res/fhir_release4_logo.jpg deleted file mode 100644 index aa0f8cdbe..000000000 Binary files a/docs/_build/_static/res/fhir_release4_logo.jpg and /dev/null differ diff --git a/docs/_build/_static/res/import_mapper_tsvs/example_1_sssom.csv b/docs/_build/_static/res/import_mapper_tsvs/example_1_sssom.csv deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/_build/_static/res/import_mapper_tsvs/example_2.csv b/docs/_build/_static/res/import_mapper_tsvs/example_2.csv deleted file mode 100644 index 638ee0bee..000000000 --- a/docs/_build/_static/res/import_mapper_tsvs/example_2.csv +++ /dev/null @@ -1,6 +0,0 @@ -Patient_ID,Sex,Gender,DOB,RD_Diagnosis,Symptoms,Symptom_Dates,Lab_Measurements,Lab_Measurement_Dates,Patient_Status,Time_at_Last_Visit,Consent_Given,Genetic_Mutation,Zygosity,Mutation_Type,Genomic_Diagnosis -PEDS101,Female,Female,2012-05-05,Tuberous Sclerosis Complex,"Seizures; Skin hypomelanotic macules","2018-07-10;2018-07-10","EEG:Abnormal; CT:Subependymal calcifications","2018-07-11;2018-07-11",Alive,2022-11-01,Y,TSC2:c.1832G>A,Heterozygous,Missense,TSC confirmed -PEDS102,Male,,2013-08-15,Nephronophthisis,"Polyuria; Polydipsia; Growth retardation","2019-03-20;2019-03-20;2019-03-20","Serum creatinine:0.8 mg/dL; Urinalysis:Dilute","2019-03-22;2019-03-22",Alive,2022-10-05,Y,NPHP1:del,Homozygous,Deletion,Nephronophthisis confirmed -PEDS103,Female,Female,2011-11-30,Tuberous Sclerosis Complex,"Infantile spasms; Cardiac rhabdomyomas","2017-01-05;2017-01-05","EEG:Hypsarrhythmia; Echo:Multiple masses","2017-01-06;2017-01-06",Alive,2022-09-10,Y,TSC1:c.214C>T,Heterozygous,Nonsense,TSC confirmed -PEDS104,Male,Male,2012-02-28,Nephronophthisis,"Polyuria; Anemia","2018-08-15;2018-08-15","Hemoglobin:10.5 g/dL; Creatinine:0.9 mg/dL","2018-08-16;2018-08-16",Alive,2022-07-20,N,NPHP4:c.320del,Heterozygous,Frameshift,Nephronophthisis suspected -PEDS105,Female,,2013-12-10,Tuberous Sclerosis Complex,"Cortical tubers; Seizures","2018-10-01;2018-10-01","MRI:Cortical dysplasia; EEG:Abnormal","2018-10-02;2018-10-02",Alive,2022-08-30,Y,TSC2:c.1456_1457del,Heterozygous,Frameshift,TSC confirmed diff --git a/docs/_build/_static/res/import_mapper_tsvs/example_2_sssom.csv b/docs/_build/_static/res/import_mapper_tsvs/example_2_sssom.csv deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/_build/_static/res/import_mapper_tsvs/example_2_sssom.tsv b/docs/_build/_static/res/import_mapper_tsvs/example_2_sssom.tsv deleted file mode 100644 index 588bd1ea6..000000000 --- a/docs/_build/_static/res/import_mapper_tsvs/example_2_sssom.tsv +++ /dev/null @@ -1,30 +0,0 @@ -# Pediatric Rare Disease Study SSSOM Mapping Template -# This template maps data from a pediatric rare disease study CSV file to the RareLink-CDM. -# -subject_id subject_label predicate_id predicate_label object_id object_label match_type mapping_date mapping_tool -PEDS101 "Patient PEDS101" rarelink_cdm:snomedct_184099003 "2.1 Date of birth" 2012-05-05 2012-05-05 lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:snomedct_281053000 "2.2 Sex at birth" SNOMEDCT:248152002 Female lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:snomedct_64572001_mondo "5.1 Disease [MONDO]" MONDO:0034567 "Tuberous Sclerosis Complex" lexical 2025-01-01 manual -# Repeating element: Lab Measurements for PEDS101 (multiple assays) -PEDS101 "Patient PEDS101" rarelink_cdm:ncit_c60819 "6.3.1 Assay" LOINC:LP6239-0 "EEG" lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2018-07-11 2018-07-11 lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:ncit_c60819 "6.3.1 Assay" LOINC:LP12345 "CT" lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2018-07-11 2018-07-11 lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:snomedct_278844005 "3.1 Vital Status" SNOMEDCT:438949009 Alive lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2022-11-01 2022-11-01 lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:snomedct_309370004 "7.1 Consent Status" hl7fhir_active "Active" lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:loinc_lp7824_8 "6.1 Genetic Mutation String" TSC2:c.1832G>A TSC2:c.1832G>A lexical 2025-01-01 manual -# Mappings for a second pediatric patient -PEDS102 "Patient PEDS102" rarelink_cdm:snomedct_184099003 "2.1 Date of birth" 2013-08-15 2013-08-15 lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:snomedct_281053000 "2.2 Sex at birth" SNOMEDCT:248153007 Male lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:snomedct_64572001_mondo "5.1 Disease [MONDO]" MONDO:0045678 "Nephronophthisis" lexical 2025-01-01 manual -# Repeating element: For PEDS102, add repeated lab measurement rows -PEDS102 "Patient PEDS102" rarelink_cdm:ncit_c60819 "6.3.1 Assay" LOINC:718-7 "Serum creatinine:0.8 mg/dL" lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2019-03-22 2019-03-22 lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:snomedct_278844005 "3.1 Vital Status" SNOMEDCT:438949009 Alive lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2022-10-05 2022-10-05 lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:snomedct_309370004 "7.1 Consent Status" hl7fhir_active "Active" lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:loinc_lp7824_8 "6.1 Genetic Mutation String" NPHP1:del NPHP1:del lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:loinc_53034_5 "6.1.11 Zygosity" LOINC:LA6705-3 Homozygous lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:loinc_48019_4 "6.1.13 DNA Change Type" LOINC:LA6692-3 Deletion lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:snomedct_64572001_mondo "5.1 Disease [MONDO]" MONDO:0008171 "Nephronophthisis confirmed" lexical 2025-01-01 manual \ No newline at end of file diff --git a/docs/_build/_static/res/import_mapper_tsvs/example_3.csv b/docs/_build/_static/res/import_mapper_tsvs/example_3.csv deleted file mode 100644 index 5f1593871..000000000 --- a/docs/_build/_static/res/import_mapper_tsvs/example_3.csv +++ /dev/null @@ -1,6 +0,0 @@ -ID,Gender,DOB,RD_Diagnosis,Symptoms,Symptom_Dates,Lab_Measurements,Lab_Measurement_Dates,Patient_Status,Time_at_Last_Visit,Consent_Given,Genetic_Mutation,Zygosity,Mutation_Type,Genomic_Diagnosis,Additional_Genetic_Info -GEN201,Female,1980-03-15,Hereditary Hemorrhagic Telangiectasia,"Epistaxis; Telangiectasia on lips","2019-05-10;2019-05-10","Hemoglobin:13.5 g/dL; Iron:Low","2019-05-11;2019-05-11",Alive,2022-11-30,Y,ENG:c.100A>T,Heterozygous,Missense,HHT confirmed,"Variant of uncertain significance" -GEN202,Male,1975-06-20,Cystic Fibrosis (atypical),"Chronic cough; Recurrent respiratory infections","2018-12-05;2018-12-05","Sweat chloride:65 mmol/L; FEV1:55%","2018-12-06;2018-12-06",Alive,2022-10-15,Y,CFTR:c.1521_1523delCTT,Homozygous,In-frame deletion,Cystic Fibrosis confirmed,"Classic mutation" -GEN203,Female,1988-09-10,Gaucher Disease Type 1,"Bone pain; Hepatosplenomegaly","2020-04-10;2020-04-10","Chitotriosidase:Elevated; Platelet count:100K/uL","2020-04-11;2020-04-11",Alive,2022-12-01,Y,GBA:c.1226A>G,Heterozygous,Missense,Gaucher Disease suspected,"Compound heterozygosity not ruled out" -GEN204,Female,1979-11-25,Hereditary Angioedema,"Recurrent abdominal pain; Swelling episodes","2017-08-15;2017-08-15","C1-INH:Low; C4:Low","2017-08-16;2017-08-16",Alive,2022-09-20,N,SERPING1:c.710_711del,Heterozygous,Frameshift,Hereditary Angioedema confirmed,"Likely pathogenic" -GEN205,Male,1982-01-05,Cystic Fibrosis (atypical),"Pancreatic insufficiency; Frequent lung infections","2019-03-10;2019-03-10","Sweat chloride:60 mmol/L; BMI:18","2019-03-11;2019-03-11",Alive,2022-08-30,Y,CFTR:c.1652G>A,Heterozygous,Missense,Cystic Fibrosis atypical,"Mild phenotype observed" diff --git a/docs/_build/_static/res/import_mapper_tsvs/example_3_sssom.csv b/docs/_build/_static/res/import_mapper_tsvs/example_3_sssom.csv deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/_build/_static/res/import_mapper_tsvs/example_3_sssom.tsv b/docs/_build/_static/res/import_mapper_tsvs/example_3_sssom.tsv deleted file mode 100644 index ea22e48fb..000000000 --- a/docs/_build/_static/res/import_mapper_tsvs/example_3_sssom.tsv +++ /dev/null @@ -1,33 +0,0 @@ -# Genetic Analysis of Rare Conditions SSSOM Mapping Template -# This template maps data from a genetic analysis study CSV file to the RareLink-CDM. -# -subject_id subject_label predicate_id predicate_label object_id object_label match_type mapping_date mapping_tool -GEN201 "Patient GEN201" rarelink_cdm:snomedct_184099003 "2.1 Date of birth" 1980-03-15 1980-03-15 lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:snomedct_263495000 "2.4 Gender Identity" SNOMEDCT:446141000124107 "Female gender identity" lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:snomedct_64572001_mondo "5.1 Disease [MONDO]" MONDO:0012345 "Hereditary Hemorrhagic Telangiectasia" lexical 2025-01-01 manual -# Repeating phenotypic features for GEN201 -GEN201 "Patient GEN201" rarelink_cdm:snomedct_8116006 "6.2.1 Phenotypic Feature" HP:0001250 "Epistaxis" lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:snomedct_8116006 "6.2.1 Phenotypic Feature" HP:0001249 "Telangiectasia on lips" lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:snomedct_8116006_onset "6.2.3 Determination Date" 2019-05-10 2019-05-10 lexical 2025-01-01 manual -# Lab measurement for GEN201 (example: Hemoglobin) -GEN201 "Patient GEN201" rarelink_cdm:ncit_c25712 "6.3.2 Measurement Value" 13.5 "13.5" lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:ncit_c92571 "6.3.3 Unit" LOINC:LP14458-6 "g/dL" lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:snomedct_278844005 "3.1 Vital Status" SNOMEDCT:438949009 "Alive" lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2022-11-30 2022-11-30 lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:snomedct_309370004 "7.1 Consent Status" hl7fhir_active "Active" lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:loinc_lp7824_8 "6.1 Genetic Mutation String" ENG:c.100A>T ENG:c.100A>T lexical 2025-01-01 manual -# GEN202: Second patient in Genetic Analysis with repeated phenotypic features -GEN202 "Patient GEN202" rarelink_cdm:snomedct_184099003 "2.1 Date of birth" 1975-06-20 1975-06-20 lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:snomedct_263495000 "2.4 Gender Identity" SNOMEDCT:446151000124109 "Male gender identity" lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:snomedct_64572001_mondo "5.1 Disease [MONDO]" MONDO:0009061 Cystic Fibrosis lexical 2025-01-01 manual -# Repeating phenotypic features for GEN202: -GEN202 "Patient GEN202" rarelink_cdm:snomedct_8116006 "6.2.1 Phenotypic Feature" HP:0012735 "Chronic cough" lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:snomedct_8116006 "6.2.1 Phenotypic Feature" HP:0002208 "Recurrent respiratory infections" lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:snomedct_8116006_onset "6.2.3 Determination Date" 2018-12-05 2018-12-05 lexical 2025-01-01 manual -# Lab measurement for GEN202: abnormal EEG -GEN202 "Patient GEN202" rarelink_cdm:ncit_c60819 "6.3.2 Measurement Assay" LOINC:LP6239-0 "EEG" lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:ncit_c41255 "6.3.4 Interpretation" NCIT:C25401 "Abnormal" lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:snomedct_278844005 "3.1 Vital Status" SNOMEDCT:438949009 "Alive" lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2022-10-15 2022-10-15 lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:snomedct_309370004 "7.1 Consent Status" hl7fhir_active "Active" lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:loinc_lp7824_8 "6.1 Genetic Mutation String" CFTR:c.1521_1523delCTT CFTR:c.1521_1523delCTT lexical 2025-01-01 manual \ No newline at end of file diff --git a/docs/_build/_static/res/import_mapper_tsvs/old_files/example_2.csv b/docs/_build/_static/res/import_mapper_tsvs/old_files/example_2.csv deleted file mode 100644 index 638ee0bee..000000000 --- a/docs/_build/_static/res/import_mapper_tsvs/old_files/example_2.csv +++ /dev/null @@ -1,6 +0,0 @@ -Patient_ID,Sex,Gender,DOB,RD_Diagnosis,Symptoms,Symptom_Dates,Lab_Measurements,Lab_Measurement_Dates,Patient_Status,Time_at_Last_Visit,Consent_Given,Genetic_Mutation,Zygosity,Mutation_Type,Genomic_Diagnosis -PEDS101,Female,Female,2012-05-05,Tuberous Sclerosis Complex,"Seizures; Skin hypomelanotic macules","2018-07-10;2018-07-10","EEG:Abnormal; CT:Subependymal calcifications","2018-07-11;2018-07-11",Alive,2022-11-01,Y,TSC2:c.1832G>A,Heterozygous,Missense,TSC confirmed -PEDS102,Male,,2013-08-15,Nephronophthisis,"Polyuria; Polydipsia; Growth retardation","2019-03-20;2019-03-20;2019-03-20","Serum creatinine:0.8 mg/dL; Urinalysis:Dilute","2019-03-22;2019-03-22",Alive,2022-10-05,Y,NPHP1:del,Homozygous,Deletion,Nephronophthisis confirmed -PEDS103,Female,Female,2011-11-30,Tuberous Sclerosis Complex,"Infantile spasms; Cardiac rhabdomyomas","2017-01-05;2017-01-05","EEG:Hypsarrhythmia; Echo:Multiple masses","2017-01-06;2017-01-06",Alive,2022-09-10,Y,TSC1:c.214C>T,Heterozygous,Nonsense,TSC confirmed -PEDS104,Male,Male,2012-02-28,Nephronophthisis,"Polyuria; Anemia","2018-08-15;2018-08-15","Hemoglobin:10.5 g/dL; Creatinine:0.9 mg/dL","2018-08-16;2018-08-16",Alive,2022-07-20,N,NPHP4:c.320del,Heterozygous,Frameshift,Nephronophthisis suspected -PEDS105,Female,,2013-12-10,Tuberous Sclerosis Complex,"Cortical tubers; Seizures","2018-10-01;2018-10-01","MRI:Cortical dysplasia; EEG:Abnormal","2018-10-02;2018-10-02",Alive,2022-08-30,Y,TSC2:c.1456_1457del,Heterozygous,Frameshift,TSC confirmed diff --git a/docs/_build/_static/res/import_mapper_tsvs/old_files/example_2_sssom.tsv b/docs/_build/_static/res/import_mapper_tsvs/old_files/example_2_sssom.tsv deleted file mode 100644 index 588bd1ea6..000000000 --- a/docs/_build/_static/res/import_mapper_tsvs/old_files/example_2_sssom.tsv +++ /dev/null @@ -1,30 +0,0 @@ -# Pediatric Rare Disease Study SSSOM Mapping Template -# This template maps data from a pediatric rare disease study CSV file to the RareLink-CDM. -# -subject_id subject_label predicate_id predicate_label object_id object_label match_type mapping_date mapping_tool -PEDS101 "Patient PEDS101" rarelink_cdm:snomedct_184099003 "2.1 Date of birth" 2012-05-05 2012-05-05 lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:snomedct_281053000 "2.2 Sex at birth" SNOMEDCT:248152002 Female lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:snomedct_64572001_mondo "5.1 Disease [MONDO]" MONDO:0034567 "Tuberous Sclerosis Complex" lexical 2025-01-01 manual -# Repeating element: Lab Measurements for PEDS101 (multiple assays) -PEDS101 "Patient PEDS101" rarelink_cdm:ncit_c60819 "6.3.1 Assay" LOINC:LP6239-0 "EEG" lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2018-07-11 2018-07-11 lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:ncit_c60819 "6.3.1 Assay" LOINC:LP12345 "CT" lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2018-07-11 2018-07-11 lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:snomedct_278844005 "3.1 Vital Status" SNOMEDCT:438949009 Alive lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2022-11-01 2022-11-01 lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:snomedct_309370004 "7.1 Consent Status" hl7fhir_active "Active" lexical 2025-01-01 manual -PEDS101 "Patient PEDS101" rarelink_cdm:loinc_lp7824_8 "6.1 Genetic Mutation String" TSC2:c.1832G>A TSC2:c.1832G>A lexical 2025-01-01 manual -# Mappings for a second pediatric patient -PEDS102 "Patient PEDS102" rarelink_cdm:snomedct_184099003 "2.1 Date of birth" 2013-08-15 2013-08-15 lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:snomedct_281053000 "2.2 Sex at birth" SNOMEDCT:248153007 Male lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:snomedct_64572001_mondo "5.1 Disease [MONDO]" MONDO:0045678 "Nephronophthisis" lexical 2025-01-01 manual -# Repeating element: For PEDS102, add repeated lab measurement rows -PEDS102 "Patient PEDS102" rarelink_cdm:ncit_c60819 "6.3.1 Assay" LOINC:718-7 "Serum creatinine:0.8 mg/dL" lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2019-03-22 2019-03-22 lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:snomedct_278844005 "3.1 Vital Status" SNOMEDCT:438949009 Alive lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2022-10-05 2022-10-05 lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:snomedct_309370004 "7.1 Consent Status" hl7fhir_active "Active" lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:loinc_lp7824_8 "6.1 Genetic Mutation String" NPHP1:del NPHP1:del lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:loinc_53034_5 "6.1.11 Zygosity" LOINC:LA6705-3 Homozygous lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:loinc_48019_4 "6.1.13 DNA Change Type" LOINC:LA6692-3 Deletion lexical 2025-01-01 manual -PEDS102 "Patient PEDS102" rarelink_cdm:snomedct_64572001_mondo "5.1 Disease [MONDO]" MONDO:0008171 "Nephronophthisis confirmed" lexical 2025-01-01 manual \ No newline at end of file diff --git a/docs/_build/_static/res/import_mapper_tsvs/old_files/example_3.csv b/docs/_build/_static/res/import_mapper_tsvs/old_files/example_3.csv deleted file mode 100644 index 5f1593871..000000000 --- a/docs/_build/_static/res/import_mapper_tsvs/old_files/example_3.csv +++ /dev/null @@ -1,6 +0,0 @@ -ID,Gender,DOB,RD_Diagnosis,Symptoms,Symptom_Dates,Lab_Measurements,Lab_Measurement_Dates,Patient_Status,Time_at_Last_Visit,Consent_Given,Genetic_Mutation,Zygosity,Mutation_Type,Genomic_Diagnosis,Additional_Genetic_Info -GEN201,Female,1980-03-15,Hereditary Hemorrhagic Telangiectasia,"Epistaxis; Telangiectasia on lips","2019-05-10;2019-05-10","Hemoglobin:13.5 g/dL; Iron:Low","2019-05-11;2019-05-11",Alive,2022-11-30,Y,ENG:c.100A>T,Heterozygous,Missense,HHT confirmed,"Variant of uncertain significance" -GEN202,Male,1975-06-20,Cystic Fibrosis (atypical),"Chronic cough; Recurrent respiratory infections","2018-12-05;2018-12-05","Sweat chloride:65 mmol/L; FEV1:55%","2018-12-06;2018-12-06",Alive,2022-10-15,Y,CFTR:c.1521_1523delCTT,Homozygous,In-frame deletion,Cystic Fibrosis confirmed,"Classic mutation" -GEN203,Female,1988-09-10,Gaucher Disease Type 1,"Bone pain; Hepatosplenomegaly","2020-04-10;2020-04-10","Chitotriosidase:Elevated; Platelet count:100K/uL","2020-04-11;2020-04-11",Alive,2022-12-01,Y,GBA:c.1226A>G,Heterozygous,Missense,Gaucher Disease suspected,"Compound heterozygosity not ruled out" -GEN204,Female,1979-11-25,Hereditary Angioedema,"Recurrent abdominal pain; Swelling episodes","2017-08-15;2017-08-15","C1-INH:Low; C4:Low","2017-08-16;2017-08-16",Alive,2022-09-20,N,SERPING1:c.710_711del,Heterozygous,Frameshift,Hereditary Angioedema confirmed,"Likely pathogenic" -GEN205,Male,1982-01-05,Cystic Fibrosis (atypical),"Pancreatic insufficiency; Frequent lung infections","2019-03-10;2019-03-10","Sweat chloride:60 mmol/L; BMI:18","2019-03-11;2019-03-11",Alive,2022-08-30,Y,CFTR:c.1652G>A,Heterozygous,Missense,Cystic Fibrosis atypical,"Mild phenotype observed" diff --git a/docs/_build/_static/res/import_mapper_tsvs/old_files/example_3_sssom.tsv b/docs/_build/_static/res/import_mapper_tsvs/old_files/example_3_sssom.tsv deleted file mode 100644 index ea22e48fb..000000000 --- a/docs/_build/_static/res/import_mapper_tsvs/old_files/example_3_sssom.tsv +++ /dev/null @@ -1,33 +0,0 @@ -# Genetic Analysis of Rare Conditions SSSOM Mapping Template -# This template maps data from a genetic analysis study CSV file to the RareLink-CDM. -# -subject_id subject_label predicate_id predicate_label object_id object_label match_type mapping_date mapping_tool -GEN201 "Patient GEN201" rarelink_cdm:snomedct_184099003 "2.1 Date of birth" 1980-03-15 1980-03-15 lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:snomedct_263495000 "2.4 Gender Identity" SNOMEDCT:446141000124107 "Female gender identity" lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:snomedct_64572001_mondo "5.1 Disease [MONDO]" MONDO:0012345 "Hereditary Hemorrhagic Telangiectasia" lexical 2025-01-01 manual -# Repeating phenotypic features for GEN201 -GEN201 "Patient GEN201" rarelink_cdm:snomedct_8116006 "6.2.1 Phenotypic Feature" HP:0001250 "Epistaxis" lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:snomedct_8116006 "6.2.1 Phenotypic Feature" HP:0001249 "Telangiectasia on lips" lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:snomedct_8116006_onset "6.2.3 Determination Date" 2019-05-10 2019-05-10 lexical 2025-01-01 manual -# Lab measurement for GEN201 (example: Hemoglobin) -GEN201 "Patient GEN201" rarelink_cdm:ncit_c25712 "6.3.2 Measurement Value" 13.5 "13.5" lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:ncit_c92571 "6.3.3 Unit" LOINC:LP14458-6 "g/dL" lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:snomedct_278844005 "3.1 Vital Status" SNOMEDCT:438949009 "Alive" lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2022-11-30 2022-11-30 lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:snomedct_309370004 "7.1 Consent Status" hl7fhir_active "Active" lexical 2025-01-01 manual -GEN201 "Patient GEN201" rarelink_cdm:loinc_lp7824_8 "6.1 Genetic Mutation String" ENG:c.100A>T ENG:c.100A>T lexical 2025-01-01 manual -# GEN202: Second patient in Genetic Analysis with repeated phenotypic features -GEN202 "Patient GEN202" rarelink_cdm:snomedct_184099003 "2.1 Date of birth" 1975-06-20 1975-06-20 lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:snomedct_263495000 "2.4 Gender Identity" SNOMEDCT:446151000124109 "Male gender identity" lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:snomedct_64572001_mondo "5.1 Disease [MONDO]" MONDO:0009061 Cystic Fibrosis lexical 2025-01-01 manual -# Repeating phenotypic features for GEN202: -GEN202 "Patient GEN202" rarelink_cdm:snomedct_8116006 "6.2.1 Phenotypic Feature" HP:0012735 "Chronic cough" lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:snomedct_8116006 "6.2.1 Phenotypic Feature" HP:0002208 "Recurrent respiratory infections" lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:snomedct_8116006_onset "6.2.3 Determination Date" 2018-12-05 2018-12-05 lexical 2025-01-01 manual -# Lab measurement for GEN202: abnormal EEG -GEN202 "Patient GEN202" rarelink_cdm:ncit_c60819 "6.3.2 Measurement Assay" LOINC:LP6239-0 "EEG" lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:ncit_c41255 "6.3.4 Interpretation" NCIT:C25401 "Abnormal" lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:snomedct_278844005 "3.1 Vital Status" SNOMEDCT:438949009 "Alive" lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:ncit_c82577 "6.3.5 Time Observed" 2022-10-15 2022-10-15 lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:snomedct_309370004 "7.1 Consent Status" hl7fhir_active "Active" lexical 2025-01-01 manual -GEN202 "Patient GEN202" rarelink_cdm:loinc_lp7824_8 "6.1 Genetic Mutation String" CFTR:c.1521_1523delCTT CFTR:c.1521_1523delCTT lexical 2025-01-01 manual \ No newline at end of file diff --git a/docs/_build/_static/res/import_mapper_tsvs/rarelink_cdm_sssom_template.csv b/docs/_build/_static/res/import_mapper_tsvs/rarelink_cdm_sssom_template.csv deleted file mode 100644 index 70f492c57..000000000 --- a/docs/_build/_static/res/import_mapper_tsvs/rarelink_cdm_sssom_template.csv +++ /dev/null @@ -1,18 +0,0 @@ -subject_id,subject_label,predicate_id,predicate_label,object_id,match_type,mapping_date,mapping_tool -,,rarelink:snomedct_184099003,"2.1 Date of birth",,lexical,2023-01-01,manual -,,rarelink:snomedct_281053000,"2.2 Sex at birth",SNOMEDCT:248152002,lexical,2023-01-01,manual -,,rarelink:snomedct_1296886006,"2.3 Karyotypic Sex",,lexical,2023-01-01,manual -,,rarelink:snomedct_263493000,"2.4 Gender Identity",SNOMEDCT:446141000124107,lexical,2023-01-01,manual -,,rarelink:snomedct_370159000,"2.5 Country of birth",,lexical,2023-01-01,manual -,,rarelink:snomedct_422549004,"1.1 Pseudonym",,lexical,2023-01-01,manual -,,rarelink:snomedct_278844005,"3.1 Vital Status",,lexical,2023-01-01,manual -,,rarelink:snomedct_64572001_mondo,"5.1 Disease [MONDO]",,lexical,2023-01-01,manual -,,rarelink:loinc_lp7824_8,"6.1 Genetic Mutation String",,lexical,2023-01-01,manual -,,rarelink:snomedct_8116006,"6.2.1 Phenotypic Feature",,lexical,2023-01-01,manual -,,rarelink:ncit_c82577,"6.3.5 Time Observed",,lexical,2023-01-01,manual -ADR001,"Patient ADR001",rarelink:snomedct_8116006,"6.2.1 Phenotypic Feature",HP:0001250,lexical,2023-01-01,manual -ADR001,"Patient ADR001",rarelink:snomedct_8116006,"6.2.1 Phenotypic Feature",HP:0003674,lexical,2023-01-01,manual -ADR002,"Patient ADR002",rarelink:snomedct_184099003,"2.1 Date of birth",1982-07-30,lexical,2023-01-01,manual -ADR002,"Patient ADR002",rarelink:snomedct_281053000,"2.2 Sex at birth",SNOMEDCT:248153007,lexical,2023-01-01,manual -ADR003,"Patient ADR003",rarelink:snomedct_184099003,"2.1 Date of birth",1965-11-05,lexical,2023-01-01,manual -ADR003,"Patient ADR003",rarelink:snomedct_281053000,"2.2 Sex at birth",SNOMEDCT:248152002,lexical,2023-01-01,manual diff --git a/docs/_build/_static/res/phenopacket-schema-v2-overview.png b/docs/_build/_static/res/phenopacket-schema-v2-overview.png deleted file mode 100644 index d6a0ab98a..000000000 Binary files a/docs/_build/_static/res/phenopacket-schema-v2-overview.png and /dev/null differ diff --git a/docs/_build/_static/res/rarelink-cdm-repeating-instruments.jpg b/docs/_build/_static/res/rarelink-cdm-repeating-instruments.jpg deleted file mode 100644 index 67b5e6bbe..000000000 Binary files a/docs/_build/_static/res/rarelink-cdm-repeating-instruments.jpg and /dev/null differ diff --git a/docs/_build/_static/res/rarelink_overview.svg b/docs/_build/_static/res/rarelink_overview.svg deleted file mode 100644 index 00f54f2c1..000000000 --- a/docs/_build/_static/res/rarelink_overview.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/_build/_static/res/rd_cdm_v2_0_0.jpeg b/docs/_build/_static/res/rd_cdm_v2_0_0.jpeg deleted file mode 100644 index b660a70c2..000000000 Binary files a/docs/_build/_static/res/rd_cdm_v2_0_0.jpeg and /dev/null differ diff --git a/docs/_build/_static/res/redcap_gui_screenshots/DataDictionary.jpg b/docs/_build/_static/res/redcap_gui_screenshots/DataDictionary.jpg deleted file mode 100644 index e68b38dba..000000000 Binary files a/docs/_build/_static/res/redcap_gui_screenshots/DataDictionary.jpg and /dev/null differ diff --git a/docs/_build/_static/res/redcap_gui_screenshots/DesignerTab.jpg b/docs/_build/_static/res/redcap_gui_screenshots/DesignerTab.jpg deleted file mode 100644 index 3d31a9666..000000000 Binary files a/docs/_build/_static/res/redcap_gui_screenshots/DesignerTab.jpg and /dev/null differ diff --git a/docs/_build/_static/res/redcap_gui_screenshots/repeating_buttons.jpg b/docs/_build/_static/res/redcap_gui_screenshots/repeating_buttons.jpg deleted file mode 100644 index 8cb81c12d..000000000 Binary files a/docs/_build/_static/res/redcap_gui_screenshots/repeating_buttons.jpg and /dev/null differ diff --git a/docs/_build/_static/res/redcap_gui_screenshots/repeating_buttons_2.jpg b/docs/_build/_static/res/redcap_gui_screenshots/repeating_buttons_2.jpg deleted file mode 100644 index b89386812..000000000 Binary files a/docs/_build/_static/res/redcap_gui_screenshots/repeating_buttons_2.jpg and /dev/null differ diff --git a/docs/_build/_static/res/redcap_project_mode.jpg b/docs/_build/_static/res/redcap_project_mode.jpg deleted file mode 100644 index c89b58d4d..000000000 Binary files a/docs/_build/_static/res/redcap_project_mode.jpg and /dev/null differ diff --git a/docs/_build/_static/res/redcap_world_map.jpg b/docs/_build/_static/res/redcap_world_map.jpg deleted file mode 100644 index 3f5c127e2..000000000 Binary files a/docs/_build/_static/res/redcap_world_map.jpg and /dev/null differ diff --git a/docs/_build/_static/searchtools.js b/docs/_build/_static/searchtools.js deleted file mode 100644 index 2c774d17a..000000000 --- a/docs/_build/_static/searchtools.js +++ /dev/null @@ -1,632 +0,0 @@ -/* - * Sphinx JavaScript utilities for the full-text search. - */ -"use strict"; - -/** - * Simple result scoring code. - */ -if (typeof Scorer === "undefined") { - var Scorer = { - // Implement the following function to further tweak the score for each result - // The function takes a result array [docname, title, anchor, descr, score, filename] - // and returns the new score. - /* - score: result => { - const [docname, title, anchor, descr, score, filename, kind] = result - return score - }, - */ - - // query matches the full name of an object - objNameMatch: 11, - // or matches in the last dotted part of the object name - objPartialMatch: 6, - // Additive scores depending on the priority of the object - objPrio: { - 0: 15, // used to be importantResults - 1: 5, // used to be objectResults - 2: -5, // used to be unimportantResults - }, - // Used when the priority is not in the mapping. - objPrioDefault: 0, - - // query found in title - title: 15, - partialTitle: 7, - // query found in terms - term: 5, - partialTerm: 2, - }; -} - -// Global search result kind enum, used by themes to style search results. -class SearchResultKind { - static get index() { return "index"; } - static get object() { return "object"; } - static get text() { return "text"; } - static get title() { return "title"; } -} - -const _removeChildren = (element) => { - while (element && element.lastChild) element.removeChild(element.lastChild); -}; - -/** - * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping - */ -const _escapeRegExp = (string) => - string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string - -const _displayItem = (item, searchTerms, highlightTerms) => { - const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; - const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; - const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; - const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; - const contentRoot = document.documentElement.dataset.content_root; - - const [docName, title, anchor, descr, score, _filename, kind] = item; - - let listItem = document.createElement("li"); - // Add a class representing the item's type: - // can be used by a theme's CSS selector for styling - // See SearchResultKind for the class names. - listItem.classList.add(`kind-${kind}`); - let requestUrl; - let linkUrl; - if (docBuilder === "dirhtml") { - // dirhtml builder - let dirname = docName + "/"; - if (dirname.match(/\/index\/$/)) - dirname = dirname.substring(0, dirname.length - 6); - else if (dirname === "index/") dirname = ""; - requestUrl = contentRoot + dirname; - linkUrl = requestUrl; - } else { - // normal html builders - requestUrl = contentRoot + docName + docFileSuffix; - linkUrl = docName + docLinkSuffix; - } - let linkEl = listItem.appendChild(document.createElement("a")); - linkEl.href = linkUrl + anchor; - linkEl.dataset.score = score; - linkEl.innerHTML = title; - if (descr) { - listItem.appendChild(document.createElement("span")).innerHTML = - " (" + descr + ")"; - // highlight search terms in the description - if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js - highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); - } - else if (showSearchSummary) - fetch(requestUrl) - .then((responseData) => responseData.text()) - .then((data) => { - if (data) - listItem.appendChild( - Search.makeSearchSummary(data, searchTerms, anchor) - ); - // highlight search terms in the summary - if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js - highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); - }); - Search.output.appendChild(listItem); -}; -const _finishSearch = (resultCount) => { - Search.stopPulse(); - Search.title.innerText = _("Search Results"); - if (!resultCount) - Search.status.innerText = Documentation.gettext( - "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." - ); - else - Search.status.innerText = Documentation.ngettext( - "Search finished, found one page matching the search query.", - "Search finished, found ${resultCount} pages matching the search query.", - resultCount, - ).replace('${resultCount}', resultCount); -}; -const _displayNextItem = ( - results, - resultCount, - searchTerms, - highlightTerms, -) => { - // results left, load the summary and display it - // this is intended to be dynamic (don't sub resultsCount) - if (results.length) { - _displayItem(results.pop(), searchTerms, highlightTerms); - setTimeout( - () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), - 5 - ); - } - // search finished, update title and status message - else _finishSearch(resultCount); -}; -// Helper function used by query() to order search results. -// Each input is an array of [docname, title, anchor, descr, score, filename, kind]. -// Order the results by score (in opposite order of appearance, since the -// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. -const _orderResultsByScoreThenName = (a, b) => { - const leftScore = a[4]; - const rightScore = b[4]; - if (leftScore === rightScore) { - // same score: sort alphabetically - const leftTitle = a[1].toLowerCase(); - const rightTitle = b[1].toLowerCase(); - if (leftTitle === rightTitle) return 0; - return leftTitle > rightTitle ? -1 : 1; // inverted is intentional - } - return leftScore > rightScore ? 1 : -1; -}; - -/** - * Default splitQuery function. Can be overridden in ``sphinx.search`` with a - * custom function per language. - * - * The regular expression works by splitting the string on consecutive characters - * that are not Unicode letters, numbers, underscores, or emoji characters. - * This is the same as ``\W+`` in Python, preserving the surrogate pair area. - */ -if (typeof splitQuery === "undefined") { - var splitQuery = (query) => query - .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) - .filter(term => term) // remove remaining empty strings -} - -/** - * Search Module - */ -const Search = { - _index: null, - _queued_query: null, - _pulse_status: -1, - - htmlToText: (htmlString, anchor) => { - const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); - for (const removalQuery of [".headerlink", "script", "style"]) { - htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); - } - if (anchor) { - const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); - if (anchorContent) return anchorContent.textContent; - - console.warn( - `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` - ); - } - - // if anchor not specified or not found, fall back to main content - const docContent = htmlElement.querySelector('[role="main"]'); - if (docContent) return docContent.textContent; - - console.warn( - "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." - ); - return ""; - }, - - init: () => { - const query = new URLSearchParams(window.location.search).get("q"); - document - .querySelectorAll('input[name="q"]') - .forEach((el) => (el.value = query)); - if (query) Search.performSearch(query); - }, - - loadIndex: (url) => - (document.body.appendChild(document.createElement("script")).src = url), - - setIndex: (index) => { - Search._index = index; - if (Search._queued_query !== null) { - const query = Search._queued_query; - Search._queued_query = null; - Search.query(query); - } - }, - - hasIndex: () => Search._index !== null, - - deferQuery: (query) => (Search._queued_query = query), - - stopPulse: () => (Search._pulse_status = -1), - - startPulse: () => { - if (Search._pulse_status >= 0) return; - - const pulse = () => { - Search._pulse_status = (Search._pulse_status + 1) % 4; - Search.dots.innerText = ".".repeat(Search._pulse_status); - if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); - }; - pulse(); - }, - - /** - * perform a search for something (or wait until index is loaded) - */ - performSearch: (query) => { - // create the required interface elements - const searchText = document.createElement("h2"); - searchText.textContent = _("Searching"); - const searchSummary = document.createElement("p"); - searchSummary.classList.add("search-summary"); - searchSummary.innerText = ""; - const searchList = document.createElement("ul"); - searchList.setAttribute("role", "list"); - searchList.classList.add("search"); - - const out = document.getElementById("search-results"); - Search.title = out.appendChild(searchText); - Search.dots = Search.title.appendChild(document.createElement("span")); - Search.status = out.appendChild(searchSummary); - Search.output = out.appendChild(searchList); - - const searchProgress = document.getElementById("search-progress"); - // Some themes don't use the search progress node - if (searchProgress) { - searchProgress.innerText = _("Preparing search..."); - } - Search.startPulse(); - - // index already loaded, the browser was quick! - if (Search.hasIndex()) Search.query(query); - else Search.deferQuery(query); - }, - - _parseQuery: (query) => { - // stem the search terms and add them to the correct list - const stemmer = new Stemmer(); - const searchTerms = new Set(); - const excludedTerms = new Set(); - const highlightTerms = new Set(); - const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); - splitQuery(query.trim()).forEach((queryTerm) => { - const queryTermLower = queryTerm.toLowerCase(); - - // maybe skip this "word" - // stopwords array is from language_data.js - if ( - stopwords.indexOf(queryTermLower) !== -1 || - queryTerm.match(/^\d+$/) - ) - return; - - // stem the word - let word = stemmer.stemWord(queryTermLower); - // select the correct list - if (word[0] === "-") excludedTerms.add(word.substr(1)); - else { - searchTerms.add(word); - highlightTerms.add(queryTermLower); - } - }); - - if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js - localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) - } - - // console.debug("SEARCH: searching for:"); - // console.info("required: ", [...searchTerms]); - // console.info("excluded: ", [...excludedTerms]); - - return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; - }, - - /** - * execute search (requires search index to be loaded) - */ - _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - const allTitles = Search._index.alltitles; - const indexEntries = Search._index.indexentries; - - // Collect multiple result groups to be sorted separately and then ordered. - // Each is an array of [docname, title, anchor, descr, score, filename, kind]. - const normalResults = []; - const nonMainIndexResults = []; - - _removeChildren(document.getElementById("search-progress")); - - const queryLower = query.toLowerCase().trim(); - for (const [title, foundTitles] of Object.entries(allTitles)) { - if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { - for (const [file, id] of foundTitles) { - const score = Math.round(Scorer.title * queryLower.length / title.length); - const boost = titles[file] === title ? 1 : 0; // add a boost for document titles - normalResults.push([ - docNames[file], - titles[file] !== title ? `${titles[file]} > ${title}` : title, - id !== null ? "#" + id : "", - null, - score + boost, - filenames[file], - SearchResultKind.title, - ]); - } - } - } - - // search for explicit entries in index directives - for (const [entry, foundEntries] of Object.entries(indexEntries)) { - if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { - for (const [file, id, isMain] of foundEntries) { - const score = Math.round(100 * queryLower.length / entry.length); - const result = [ - docNames[file], - titles[file], - id ? "#" + id : "", - null, - score, - filenames[file], - SearchResultKind.index, - ]; - if (isMain) { - normalResults.push(result); - } else { - nonMainIndexResults.push(result); - } - } - } - } - - // lookup as object - objectTerms.forEach((term) => - normalResults.push(...Search.performObjectSearch(term, objectTerms)) - ); - - // lookup as search terms in fulltext - normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); - - // let the scorer override scores with a custom scoring function - if (Scorer.score) { - normalResults.forEach((item) => (item[4] = Scorer.score(item))); - nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); - } - - // Sort each group of results by score and then alphabetically by name. - normalResults.sort(_orderResultsByScoreThenName); - nonMainIndexResults.sort(_orderResultsByScoreThenName); - - // Combine the result groups in (reverse) order. - // Non-main index entries are typically arbitrary cross-references, - // so display them after other results. - let results = [...nonMainIndexResults, ...normalResults]; - - // remove duplicate search results - // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept - let seen = new Set(); - results = results.reverse().reduce((acc, result) => { - let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); - if (!seen.has(resultStr)) { - acc.push(result); - seen.add(resultStr); - } - return acc; - }, []); - - return results.reverse(); - }, - - query: (query) => { - const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); - const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); - - // for debugging - //Search.lastresults = results.slice(); // a copy - // console.info("search results:", Search.lastresults); - - // print the results - _displayNextItem(results, results.length, searchTerms, highlightTerms); - }, - - /** - * search for object names - */ - performObjectSearch: (object, objectTerms) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const objects = Search._index.objects; - const objNames = Search._index.objnames; - const titles = Search._index.titles; - - const results = []; - - const objectSearchCallback = (prefix, match) => { - const name = match[4] - const fullname = (prefix ? prefix + "." : "") + name; - const fullnameLower = fullname.toLowerCase(); - if (fullnameLower.indexOf(object) < 0) return; - - let score = 0; - const parts = fullnameLower.split("."); - - // check for different match types: exact matches of full name or - // "last name" (i.e. last dotted part) - if (fullnameLower === object || parts.slice(-1)[0] === object) - score += Scorer.objNameMatch; - else if (parts.slice(-1)[0].indexOf(object) > -1) - score += Scorer.objPartialMatch; // matches in last name - - const objName = objNames[match[1]][2]; - const title = titles[match[0]]; - - // If more than one term searched for, we require other words to be - // found in the name/title/description - const otherTerms = new Set(objectTerms); - otherTerms.delete(object); - if (otherTerms.size > 0) { - const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); - if ( - [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) - ) - return; - } - - let anchor = match[3]; - if (anchor === "") anchor = fullname; - else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; - - const descr = objName + _(", in ") + title; - - // add custom score for some objects according to scorer - if (Scorer.objPrio.hasOwnProperty(match[2])) - score += Scorer.objPrio[match[2]]; - else score += Scorer.objPrioDefault; - - results.push([ - docNames[match[0]], - fullname, - "#" + anchor, - descr, - score, - filenames[match[0]], - SearchResultKind.object, - ]); - }; - Object.keys(objects).forEach((prefix) => - objects[prefix].forEach((array) => - objectSearchCallback(prefix, array) - ) - ); - return results; - }, - - /** - * search for full-text terms in the index - */ - performTermsSearch: (searchTerms, excludedTerms) => { - // prepare search - const terms = Search._index.terms; - const titleTerms = Search._index.titleterms; - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - - const scoreMap = new Map(); - const fileMap = new Map(); - - // perform the search on the required terms - searchTerms.forEach((word) => { - const files = []; - const arr = [ - { files: terms[word], score: Scorer.term }, - { files: titleTerms[word], score: Scorer.title }, - ]; - // add support for partial matches - if (word.length > 2) { - const escapedWord = _escapeRegExp(word); - if (!terms.hasOwnProperty(word)) { - Object.keys(terms).forEach((term) => { - if (term.match(escapedWord)) - arr.push({ files: terms[term], score: Scorer.partialTerm }); - }); - } - if (!titleTerms.hasOwnProperty(word)) { - Object.keys(titleTerms).forEach((term) => { - if (term.match(escapedWord)) - arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); - }); - } - } - - // no match but word was a required one - if (arr.every((record) => record.files === undefined)) return; - - // found search word in contents - arr.forEach((record) => { - if (record.files === undefined) return; - - let recordFiles = record.files; - if (recordFiles.length === undefined) recordFiles = [recordFiles]; - files.push(...recordFiles); - - // set score for the word in each file - recordFiles.forEach((file) => { - if (!scoreMap.has(file)) scoreMap.set(file, {}); - scoreMap.get(file)[word] = record.score; - }); - }); - - // create the mapping - files.forEach((file) => { - if (!fileMap.has(file)) fileMap.set(file, [word]); - else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); - }); - }); - - // now check if the files don't contain excluded terms - const results = []; - for (const [file, wordList] of fileMap) { - // check if all requirements are matched - - // as search terms with length < 3 are discarded - const filteredTermCount = [...searchTerms].filter( - (term) => term.length > 2 - ).length; - if ( - wordList.length !== searchTerms.size && - wordList.length !== filteredTermCount - ) - continue; - - // ensure that none of the excluded terms is in the search result - if ( - [...excludedTerms].some( - (term) => - terms[term] === file || - titleTerms[term] === file || - (terms[term] || []).includes(file) || - (titleTerms[term] || []).includes(file) - ) - ) - break; - - // select one (max) score for the file. - const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); - // add result to the result list - results.push([ - docNames[file], - titles[file], - "", - null, - score, - filenames[file], - SearchResultKind.text, - ]); - } - return results; - }, - - /** - * helper function to return a node containing the - * search summary for a given text. keywords is a list - * of stemmed words. - */ - makeSearchSummary: (htmlText, keywords, anchor) => { - const text = Search.htmlToText(htmlText, anchor); - if (text === "") return null; - - const textLower = text.toLowerCase(); - const actualStartPosition = [...keywords] - .map((k) => textLower.indexOf(k.toLowerCase())) - .filter((i) => i > -1) - .slice(-1)[0]; - const startWithContext = Math.max(actualStartPosition - 120, 0); - - const top = startWithContext === 0 ? "" : "..."; - const tail = startWithContext + 240 < text.length ? "..." : ""; - - let summary = document.createElement("p"); - summary.classList.add("context"); - summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; - - return summary; - }, -}; - -_ready(Search.init); diff --git a/docs/_build/_static/sphinx_highlight.js b/docs/_build/_static/sphinx_highlight.js deleted file mode 100644 index 8a96c69a1..000000000 --- a/docs/_build/_static/sphinx_highlight.js +++ /dev/null @@ -1,154 +0,0 @@ -/* Highlighting utilities for Sphinx HTML documentation. */ -"use strict"; - -const SPHINX_HIGHLIGHT_ENABLED = true - -/** - * highlight a given string on a node by wrapping it in - * span elements with the given class name. - */ -const _highlight = (node, addItems, text, className) => { - if (node.nodeType === Node.TEXT_NODE) { - const val = node.nodeValue; - const parent = node.parentNode; - const pos = val.toLowerCase().indexOf(text); - if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") - ) { - let span; - - const closestNode = parent.closest("body, svg, foreignObject"); - const isInSVG = closestNode && closestNode.matches("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.classList.add(className); - } - - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - const rest = document.createTextNode(val.substr(pos + text.length)); - parent.insertBefore( - span, - parent.insertBefore( - rest, - node.nextSibling - ) - ); - node.nodeValue = val.substr(0, pos); - /* There may be more occurrences of search term in this node. So call this - * function recursively on the remaining fragment. - */ - _highlight(rest, addItems, text, className); - - if (isInSVG) { - const rect = document.createElementNS( - "http://www.w3.org/2000/svg", - "rect" - ); - const bbox = parent.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute("class", className); - addItems.push({ parent: parent, target: rect }); - } - } - } else if (node.matches && !node.matches("button, select, textarea")) { - node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); - } -}; -const _highlightText = (thisNode, text, className) => { - let addItems = []; - _highlight(thisNode, addItems, text, className); - addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) - ); -}; - -/** - * Small JavaScript module for the documentation. - */ -const SphinxHighlight = { - - /** - * highlight the search words provided in localstorage in the text - */ - highlightSearchWords: () => { - if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight - - // get and clear terms from localstorage - const url = new URL(window.location); - const highlight = - localStorage.getItem("sphinx_highlight_terms") - || url.searchParams.get("highlight") - || ""; - localStorage.removeItem("sphinx_highlight_terms") - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - - // get individual terms from highlight string - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); - if (terms.length === 0) return; // nothing to do - - // There should never be more than one element matching "div.body" - const divBody = document.querySelectorAll("div.body"); - const body = divBody.length ? divBody[0] : document.querySelector("body"); - window.setTimeout(() => { - terms.forEach((term) => _highlightText(body, term, "highlighted")); - }, 10); - - const searchBox = document.getElementById("searchbox"); - if (searchBox === null) return; - searchBox.appendChild( - document - .createRange() - .createContextualFragment( - '" - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - localStorage.removeItem("sphinx_highlight_terms") - }, - - initEscapeListener: () => { - // only install a listener if it is really needed - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; - - document.addEventListener("keydown", (event) => { - // bail for input elements - if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; - // bail with special keys - if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; - if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { - SphinxHighlight.hideSearchWords(); - event.preventDefault(); - } - }); - }, -}; - -_ready(() => { - /* Do not call highlightSearchWords() when we are on the search page. - * It will highlight words from the *previous* search query. - */ - if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); - SphinxHighlight.initEscapeListener(); -}); diff --git a/docs/_build/doctrees/10_license.doctree b/docs/_build/doctrees/10_license.doctree old mode 100755 new mode 100644 index 5cf0612fc..e669ac75d Binary files a/docs/_build/doctrees/10_license.doctree and b/docs/_build/doctrees/10_license.doctree differ diff --git a/docs/_build/doctrees/11_download_manifest.doctree b/docs/_build/doctrees/11_download_manifest.doctree new file mode 100644 index 000000000..a8f09d158 Binary files /dev/null and b/docs/_build/doctrees/11_download_manifest.doctree differ diff --git a/docs/_build/doctrees/12_contact.doctree b/docs/_build/doctrees/12_contact.doctree new file mode 100644 index 000000000..be8a0884e Binary files /dev/null and b/docs/_build/doctrees/12_contact.doctree differ diff --git a/docs/_build/doctrees/1_background/1_0_background_file.doctree b/docs/_build/doctrees/1_background/1_0_background_file.doctree old mode 100755 new mode 100644 index 628059ecd..45b8b4e28 Binary files a/docs/_build/doctrees/1_background/1_0_background_file.doctree and b/docs/_build/doctrees/1_background/1_0_background_file.doctree differ diff --git a/docs/_build/doctrees/1_background/1_1_rd_interoperability.doctree b/docs/_build/doctrees/1_background/1_1_rd_interoperability.doctree old mode 100755 new mode 100644 index 5ecab723d..a79155881 Binary files a/docs/_build/doctrees/1_background/1_1_rd_interoperability.doctree and b/docs/_build/doctrees/1_background/1_1_rd_interoperability.doctree differ diff --git a/docs/_build/doctrees/1_background/1_2_ontologies.doctree b/docs/_build/doctrees/1_background/1_2_ontologies.doctree old mode 100755 new mode 100644 index 1d981956d..a17f9bc41 Binary files a/docs/_build/doctrees/1_background/1_2_ontologies.doctree and b/docs/_build/doctrees/1_background/1_2_ontologies.doctree differ diff --git a/docs/_build/doctrees/1_background/1_3_ga4gh_phenopacket_schema.doctree b/docs/_build/doctrees/1_background/1_3_ga4gh_phenopacket_schema.doctree old mode 100755 new mode 100644 index bc89204a5..16f6223e1 Binary files a/docs/_build/doctrees/1_background/1_3_ga4gh_phenopacket_schema.doctree and b/docs/_build/doctrees/1_background/1_3_ga4gh_phenopacket_schema.doctree differ diff --git a/docs/_build/doctrees/1_background/1_4_hl7_fhir.doctree b/docs/_build/doctrees/1_background/1_4_hl7_fhir.doctree old mode 100755 new mode 100644 index c22976645..a47504499 Binary files a/docs/_build/doctrees/1_background/1_4_hl7_fhir.doctree and b/docs/_build/doctrees/1_background/1_4_hl7_fhir.doctree differ diff --git a/docs/_build/doctrees/1_background/1_5_rd_cdm.doctree b/docs/_build/doctrees/1_background/1_5_rd_cdm.doctree old mode 100755 new mode 100644 index 6a81cd710..ba6bac67f Binary files a/docs/_build/doctrees/1_background/1_5_rd_cdm.doctree and b/docs/_build/doctrees/1_background/1_5_rd_cdm.doctree differ diff --git a/docs/_build/doctrees/1_background/1_6_redcap.doctree b/docs/_build/doctrees/1_background/1_6_redcap.doctree old mode 100755 new mode 100644 index ec164e94e..d44b00dfc Binary files a/docs/_build/doctrees/1_background/1_6_redcap.doctree and b/docs/_build/doctrees/1_background/1_6_redcap.doctree differ diff --git a/docs/_build/doctrees/2_rarelink_framework/2_0_rarelink_file.doctree b/docs/_build/doctrees/2_rarelink_framework/2_0_rarelink_file.doctree old mode 100755 new mode 100644 index 994a0a99d..faca13f0e Binary files a/docs/_build/doctrees/2_rarelink_framework/2_0_rarelink_file.doctree and b/docs/_build/doctrees/2_rarelink_framework/2_0_rarelink_file.doctree differ diff --git a/docs/_build/doctrees/2_rarelink_framework/2_1_rarelink_overview.doctree b/docs/_build/doctrees/2_rarelink_framework/2_1_rarelink_overview.doctree old mode 100755 new mode 100644 index 969e29405..ca2975063 Binary files a/docs/_build/doctrees/2_rarelink_framework/2_1_rarelink_overview.doctree and b/docs/_build/doctrees/2_rarelink_framework/2_1_rarelink_overview.doctree differ diff --git a/docs/_build/doctrees/2_rarelink_framework/2_2_rarelink_cdm.doctree b/docs/_build/doctrees/2_rarelink_framework/2_2_rarelink_cdm.doctree new file mode 100644 index 000000000..8c3549db7 Binary files /dev/null and b/docs/_build/doctrees/2_rarelink_framework/2_2_rarelink_cdm.doctree differ diff --git a/docs/_build/doctrees/2_rarelink_framework/2_2_rarelink_cdm_instruments.doctree b/docs/_build/doctrees/2_rarelink_framework/2_2_rarelink_cdm_instruments.doctree deleted file mode 100755 index 15c301213..000000000 Binary files a/docs/_build/doctrees/2_rarelink_framework/2_2_rarelink_cdm_instruments.doctree and /dev/null differ diff --git a/docs/_build/doctrees/2_rarelink_framework/2_3_rarelink_cli.doctree b/docs/_build/doctrees/2_rarelink_framework/2_3_rarelink_cli.doctree new file mode 100644 index 000000000..652b21396 Binary files /dev/null and b/docs/_build/doctrees/2_rarelink_framework/2_3_rarelink_cli.doctree differ diff --git a/docs/_build/doctrees/2_rarelink_framework/2_3_rarelink_core_redcap_project.doctree b/docs/_build/doctrees/2_rarelink_framework/2_3_rarelink_core_redcap_project.doctree deleted file mode 100755 index 2e01e8cfc..000000000 Binary files a/docs/_build/doctrees/2_rarelink_framework/2_3_rarelink_core_redcap_project.doctree and /dev/null differ diff --git a/docs/_build/doctrees/2_rarelink_framework/2_4_rarelink_cli.doctree b/docs/_build/doctrees/2_rarelink_framework/2_4_rarelink_cli.doctree deleted file mode 100755 index c23d4403d..000000000 Binary files a/docs/_build/doctrees/2_rarelink_framework/2_4_rarelink_cli.doctree and /dev/null differ diff --git a/docs/_build/doctrees/3_installation/3_0_install_file.doctree b/docs/_build/doctrees/3_installation/3_0_install_file.doctree old mode 100755 new mode 100644 index 77fca0892..7aeccfdc6 Binary files a/docs/_build/doctrees/3_installation/3_0_install_file.doctree and b/docs/_build/doctrees/3_installation/3_0_install_file.doctree differ diff --git a/docs/_build/doctrees/3_installation/3_1_setup_rarelink_framework.doctree b/docs/_build/doctrees/3_installation/3_1_setup_rarelink_framework.doctree old mode 100755 new mode 100644 index 09818687b..3d8f429bb Binary files a/docs/_build/doctrees/3_installation/3_1_setup_rarelink_framework.doctree and b/docs/_build/doctrees/3_installation/3_1_setup_rarelink_framework.doctree differ diff --git a/docs/_build/doctrees/3_installation/3_2_setup_redcap_project.doctree b/docs/_build/doctrees/3_installation/3_2_setup_redcap_project.doctree old mode 100755 new mode 100644 index b18a04d13..c527edfaf Binary files a/docs/_build/doctrees/3_installation/3_2_setup_redcap_project.doctree and b/docs/_build/doctrees/3_installation/3_2_setup_redcap_project.doctree differ diff --git a/docs/_build/doctrees/3_installation/3_3_data_dictionary.doctree b/docs/_build/doctrees/3_installation/3_3_data_dictionary.doctree new file mode 100644 index 000000000..247f0c4c8 Binary files /dev/null and b/docs/_build/doctrees/3_installation/3_3_data_dictionary.doctree differ diff --git a/docs/_build/doctrees/3_installation/3_3_setup_rarelink_instruments.doctree b/docs/_build/doctrees/3_installation/3_3_setup_rarelink_instruments.doctree deleted file mode 100755 index f3afd1260..000000000 Binary files a/docs/_build/doctrees/3_installation/3_3_setup_rarelink_instruments.doctree and /dev/null differ diff --git a/docs/_build/doctrees/3_installation/3_4_redcap_api.doctree b/docs/_build/doctrees/3_installation/3_4_redcap_api.doctree old mode 100755 new mode 100644 index 5afd972d3..9667d33cd Binary files a/docs/_build/doctrees/3_installation/3_4_redcap_api.doctree and b/docs/_build/doctrees/3_installation/3_4_redcap_api.doctree differ diff --git a/docs/_build/doctrees/4_user_guide/4_0_guide_file.doctree b/docs/_build/doctrees/4_user_guide/4_0_guide_file.doctree old mode 100755 new mode 100644 index 253153ee7..dfc0138e9 Binary files a/docs/_build/doctrees/4_user_guide/4_0_guide_file.doctree and b/docs/_build/doctrees/4_user_guide/4_0_guide_file.doctree differ diff --git a/docs/_build/doctrees/4_user_guide/4_1_manual_data_capture.doctree b/docs/_build/doctrees/4_user_guide/4_1_manual_data_capture.doctree old mode 100755 new mode 100644 index 0348711f9..89ccc45ef Binary files a/docs/_build/doctrees/4_user_guide/4_1_manual_data_capture.doctree and b/docs/_build/doctrees/4_user_guide/4_1_manual_data_capture.doctree differ diff --git a/docs/_build/doctrees/4_user_guide/4_2_import_mapper.doctree b/docs/_build/doctrees/4_user_guide/4_2_import_mapper.doctree old mode 100755 new mode 100644 index e766e2d92..cc136f6b0 Binary files a/docs/_build/doctrees/4_user_guide/4_2_import_mapper.doctree and b/docs/_build/doctrees/4_user_guide/4_2_import_mapper.doctree differ diff --git a/docs/_build/doctrees/4_user_guide/4_3_phenopacket_mapper.doctree b/docs/_build/doctrees/4_user_guide/4_3_phenopacket_mapper.doctree deleted file mode 100755 index d50095cf8..000000000 Binary files a/docs/_build/doctrees/4_user_guide/4_3_phenopacket_mapper.doctree and /dev/null differ diff --git a/docs/_build/doctrees/4_user_guide/4_3_phenopackets.doctree b/docs/_build/doctrees/4_user_guide/4_3_phenopackets.doctree new file mode 100644 index 000000000..56fcb3839 Binary files /dev/null and b/docs/_build/doctrees/4_user_guide/4_3_phenopackets.doctree differ diff --git a/docs/_build/doctrees/4_user_guide/4_4_fhir_module.doctree b/docs/_build/doctrees/4_user_guide/4_4_fhir_module.doctree new file mode 100644 index 000000000..2322d332f Binary files /dev/null and b/docs/_build/doctrees/4_user_guide/4_4_fhir_module.doctree differ diff --git a/docs/_build/doctrees/4_user_guide/4_4_tofhir_module.doctree b/docs/_build/doctrees/4_user_guide/4_4_tofhir_module.doctree deleted file mode 100755 index 169623317..000000000 Binary files a/docs/_build/doctrees/4_user_guide/4_4_tofhir_module.doctree and /dev/null differ diff --git a/docs/_build/doctrees/4_user_guide/4_5_develop_redcap_instruments.doctree b/docs/_build/doctrees/4_user_guide/4_5_develop_redcap_instruments.doctree old mode 100755 new mode 100644 index 63e8e431f..f9e4e1344 Binary files a/docs/_build/doctrees/4_user_guide/4_5_develop_redcap_instruments.doctree and b/docs/_build/doctrees/4_user_guide/4_5_develop_redcap_instruments.doctree differ diff --git a/docs/_build/doctrees/4_user_guide/4_6_redcap_project_interaction.doctree b/docs/_build/doctrees/4_user_guide/4_6_redcap_project_interaction.doctree deleted file mode 100755 index cc30551ad..000000000 Binary files a/docs/_build/doctrees/4_user_guide/4_6_redcap_project_interaction.doctree and /dev/null differ diff --git a/docs/_build/doctrees/4_user_guide/4_6_redcap_tools.doctree b/docs/_build/doctrees/4_user_guide/4_6_redcap_tools.doctree new file mode 100644 index 000000000..23a5c4a0d Binary files /dev/null and b/docs/_build/doctrees/4_user_guide/4_6_redcap_tools.doctree differ diff --git a/docs/_build/doctrees/5_contributing.doctree b/docs/_build/doctrees/5_contributing.doctree new file mode 100644 index 000000000..4c880c03c Binary files /dev/null and b/docs/_build/doctrees/5_contributing.doctree differ diff --git a/docs/_build/doctrees/5_examples/5_0_examples_file.doctree b/docs/_build/doctrees/5_examples/5_0_examples_file.doctree deleted file mode 100755 index 0ea70431c..000000000 Binary files a/docs/_build/doctrees/5_examples/5_0_examples_file.doctree and /dev/null differ diff --git a/docs/_build/doctrees/5_examples/5_1_example_redcap_project.doctree b/docs/_build/doctrees/5_examples/5_1_example_redcap_project.doctree deleted file mode 100755 index 5937ea48d..000000000 Binary files a/docs/_build/doctrees/5_examples/5_1_example_redcap_project.doctree and /dev/null differ diff --git a/docs/_build/doctrees/5_examples/5_2_example_redcap_instruments.doctree b/docs/_build/doctrees/5_examples/5_2_example_redcap_instruments.doctree deleted file mode 100755 index 674d9fb06..000000000 Binary files a/docs/_build/doctrees/5_examples/5_2_example_redcap_instruments.doctree and /dev/null differ diff --git a/docs/_build/doctrees/5_examples/5_3_example_semiaut_import.doctree b/docs/_build/doctrees/5_examples/5_3_example_semiaut_import.doctree deleted file mode 100755 index 2b2492581..000000000 Binary files a/docs/_build/doctrees/5_examples/5_3_example_semiaut_import.doctree and /dev/null differ diff --git a/docs/_build/doctrees/5_examples/5_4_example_phenopacket_mapper.doctree b/docs/_build/doctrees/5_examples/5_4_example_phenopacket_mapper.doctree deleted file mode 100755 index b174fbb74..000000000 Binary files a/docs/_build/doctrees/5_examples/5_4_example_phenopacket_mapper.doctree and /dev/null differ diff --git a/docs/_build/doctrees/5_examples/5_5_example_tofhir_module.doctree b/docs/_build/doctrees/5_examples/5_5_example_tofhir_module.doctree deleted file mode 100755 index 1abbe2d4c..000000000 Binary files a/docs/_build/doctrees/5_examples/5_5_example_tofhir_module.doctree and /dev/null differ diff --git a/docs/_build/doctrees/6_changelog.doctree b/docs/_build/doctrees/6_changelog.doctree old mode 100755 new mode 100644 index ced821b57..b9b8d3df1 Binary files a/docs/_build/doctrees/6_changelog.doctree and b/docs/_build/doctrees/6_changelog.doctree differ diff --git a/docs/_build/doctrees/7_faq.doctree b/docs/_build/doctrees/7_faq.doctree old mode 100755 new mode 100644 index 511234593..5a8c91a99 Binary files a/docs/_build/doctrees/7_faq.doctree and b/docs/_build/doctrees/7_faq.doctree differ diff --git a/docs/_build/doctrees/8_glossary.doctree b/docs/_build/doctrees/8_glossary.doctree old mode 100755 new mode 100644 index 1c2b78c7c..8e5cc195e Binary files a/docs/_build/doctrees/8_glossary.doctree and b/docs/_build/doctrees/8_glossary.doctree differ diff --git a/docs/_build/doctrees/9_acknowledgements.doctree b/docs/_build/doctrees/9_acknowledgements.doctree old mode 100755 new mode 100644 index da4ddcead..10049d638 Binary files a/docs/_build/doctrees/9_acknowledgements.doctree and b/docs/_build/doctrees/9_acknowledgements.doctree differ diff --git a/docs/_build/doctrees/acknowledgements.doctree b/docs/_build/doctrees/acknowledgements.doctree deleted file mode 100755 index bcee7f4c9..000000000 Binary files a/docs/_build/doctrees/acknowledgements.doctree and /dev/null differ diff --git a/docs/_build/doctrees/background/background_file.doctree b/docs/_build/doctrees/background/background_file.doctree deleted file mode 100755 index 8b8b6646b..000000000 Binary files a/docs/_build/doctrees/background/background_file.doctree and /dev/null differ diff --git a/docs/_build/doctrees/background/ga4gh_phenopacket_schema.doctree b/docs/_build/doctrees/background/ga4gh_phenopacket_schema.doctree deleted file mode 100755 index 45f9e2bfc..000000000 Binary files a/docs/_build/doctrees/background/ga4gh_phenopacket_schema.doctree and /dev/null differ diff --git a/docs/_build/doctrees/background/hl7_fhir.doctree b/docs/_build/doctrees/background/hl7_fhir.doctree deleted file mode 100755 index 8fec68956..000000000 Binary files a/docs/_build/doctrees/background/hl7_fhir.doctree and /dev/null differ diff --git a/docs/_build/doctrees/background/ontologies.doctree b/docs/_build/doctrees/background/ontologies.doctree deleted file mode 100755 index 6431c66dd..000000000 Binary files a/docs/_build/doctrees/background/ontologies.doctree and /dev/null differ diff --git a/docs/_build/doctrees/background/rd_cdm.doctree b/docs/_build/doctrees/background/rd_cdm.doctree deleted file mode 100755 index ab0b1d3bc..000000000 Binary files a/docs/_build/doctrees/background/rd_cdm.doctree and /dev/null differ diff --git a/docs/_build/doctrees/background/rd_interoperability.doctree b/docs/_build/doctrees/background/rd_interoperability.doctree deleted file mode 100755 index c04bc7173..000000000 Binary files a/docs/_build/doctrees/background/rd_interoperability.doctree and /dev/null differ diff --git a/docs/_build/doctrees/background/redcap.doctree b/docs/_build/doctrees/background/redcap.doctree deleted file mode 100755 index 7214cd2b6..000000000 Binary files a/docs/_build/doctrees/background/redcap.doctree and /dev/null differ diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle old mode 100755 new mode 100644 index 0bbbce6d1..60b51007b Binary files a/docs/_build/doctrees/environment.pickle and b/docs/_build/doctrees/environment.pickle differ diff --git a/docs/_build/doctrees/examples/example_ontobridge.doctree b/docs/_build/doctrees/examples/example_ontobridge.doctree deleted file mode 100755 index 78179d158..000000000 Binary files a/docs/_build/doctrees/examples/example_ontobridge.doctree and /dev/null differ diff --git a/docs/_build/doctrees/examples/example_phenopacket_mapper.doctree b/docs/_build/doctrees/examples/example_phenopacket_mapper.doctree deleted file mode 100755 index 2af7999ee..000000000 Binary files a/docs/_build/doctrees/examples/example_phenopacket_mapper.doctree and /dev/null differ diff --git a/docs/_build/doctrees/examples/example_redcap_instruments.doctree b/docs/_build/doctrees/examples/example_redcap_instruments.doctree deleted file mode 100755 index 4c74a12b3..000000000 Binary files a/docs/_build/doctrees/examples/example_redcap_instruments.doctree and /dev/null differ diff --git a/docs/_build/doctrees/examples/example_redcap_project.doctree b/docs/_build/doctrees/examples/example_redcap_project.doctree deleted file mode 100755 index e70028f7b..000000000 Binary files a/docs/_build/doctrees/examples/example_redcap_project.doctree and /dev/null differ diff --git a/docs/_build/doctrees/examples/example_tofhir_module.doctree b/docs/_build/doctrees/examples/example_tofhir_module.doctree deleted file mode 100755 index a7ba7a94d..000000000 Binary files a/docs/_build/doctrees/examples/example_tofhir_module.doctree and /dev/null differ diff --git a/docs/_build/doctrees/examples/examples_file.doctree b/docs/_build/doctrees/examples/examples_file.doctree deleted file mode 100755 index b76bf9750..000000000 Binary files a/docs/_build/doctrees/examples/examples_file.doctree and /dev/null differ diff --git a/docs/_build/doctrees/faq.doctree b/docs/_build/doctrees/faq.doctree deleted file mode 100755 index 3a4f5b451..000000000 Binary files a/docs/_build/doctrees/faq.doctree and /dev/null differ diff --git a/docs/_build/doctrees/glossary.doctree b/docs/_build/doctrees/glossary.doctree deleted file mode 100755 index cec96a48b..000000000 Binary files a/docs/_build/doctrees/glossary.doctree and /dev/null differ diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree old mode 100755 new mode 100644 index aaff0a2fe..30a28a688 Binary files a/docs/_build/doctrees/index.doctree and b/docs/_build/doctrees/index.doctree differ diff --git a/docs/_build/doctrees/installation/install_file.doctree b/docs/_build/doctrees/installation/install_file.doctree deleted file mode 100755 index 0ee6ec6ab..000000000 Binary files a/docs/_build/doctrees/installation/install_file.doctree and /dev/null differ diff --git a/docs/_build/doctrees/installation/rarelink_instruments.doctree b/docs/_build/doctrees/installation/rarelink_instruments.doctree deleted file mode 100755 index eb1af02c4..000000000 Binary files a/docs/_build/doctrees/installation/rarelink_instruments.doctree and /dev/null differ diff --git a/docs/_build/doctrees/installation/redcap_api.doctree b/docs/_build/doctrees/installation/redcap_api.doctree deleted file mode 100755 index 9edbf40ff..000000000 Binary files a/docs/_build/doctrees/installation/redcap_api.doctree and /dev/null differ diff --git a/docs/_build/doctrees/installation/redcap_project.doctree b/docs/_build/doctrees/installation/redcap_project.doctree deleted file mode 100755 index 89dd1a0c2..000000000 Binary files a/docs/_build/doctrees/installation/redcap_project.doctree and /dev/null differ diff --git a/docs/_build/doctrees/user_guide/guide_file.doctree b/docs/_build/doctrees/user_guide/guide_file.doctree deleted file mode 100755 index 5e859c801..000000000 Binary files a/docs/_build/doctrees/user_guide/guide_file.doctree and /dev/null differ diff --git a/docs/_build/doctrees/user_guide/manual_data_capture.doctree b/docs/_build/doctrees/user_guide/manual_data_capture.doctree deleted file mode 100755 index 41713a896..000000000 Binary files a/docs/_build/doctrees/user_guide/manual_data_capture.doctree and /dev/null differ diff --git a/docs/_build/doctrees/user_guide/ontobridge.doctree b/docs/_build/doctrees/user_guide/ontobridge.doctree deleted file mode 100755 index 64313dcc3..000000000 Binary files a/docs/_build/doctrees/user_guide/ontobridge.doctree and /dev/null differ diff --git a/docs/_build/doctrees/user_guide/phenopacket_mapper.doctree b/docs/_build/doctrees/user_guide/phenopacket_mapper.doctree deleted file mode 100755 index a14e7f420..000000000 Binary files a/docs/_build/doctrees/user_guide/phenopacket_mapper.doctree and /dev/null differ diff --git a/docs/_build/doctrees/user_guide/redcap_api.doctree b/docs/_build/doctrees/user_guide/redcap_api.doctree deleted file mode 100755 index a494f67ff..000000000 Binary files a/docs/_build/doctrees/user_guide/redcap_api.doctree and /dev/null differ diff --git a/docs/_build/doctrees/user_guide/tofhir_module.doctree b/docs/_build/doctrees/user_guide/tofhir_module.doctree deleted file mode 100755 index 6496824c8..000000000 Binary files a/docs/_build/doctrees/user_guide/tofhir_module.doctree and /dev/null differ diff --git a/docs/_build/genindex.html b/docs/_build/genindex.html deleted file mode 100644 index f2b7ede8e..000000000 --- a/docs/_build/genindex.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - Index — RareLink REDCap Documentation 2.0.2.dev1 documentation - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
-
    -
  • - -
  • -
  • -
-
-
-
-
- - -

Index

- -
- I - -
-

I

- - -
- - - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo index 26e895885..b5a3eccbb 100644 --- a/docs/_build/html/.buildinfo +++ b/docs/_build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 501d3d1fbf9658a133c4569be302d283 +config: 464fa9d75306d64cd35473965feae718 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/html/.buildinfo.bak b/docs/_build/html/.buildinfo.bak deleted file mode 100644 index 8b10754ab..000000000 --- a/docs/_build/html/.buildinfo.bak +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 7bad59e97ffa42076200bc3bc9f049e5 -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/html/.doctrees/0_background/0_background_file.doctree b/docs/_build/html/.doctrees/0_background/0_background_file.doctree deleted file mode 100755 index 3b3caa9a2..000000000 Binary files a/docs/_build/html/.doctrees/0_background/0_background_file.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/0_background/1_rd_interoperability.doctree b/docs/_build/html/.doctrees/0_background/1_rd_interoperability.doctree deleted file mode 100755 index 7c17eac8d..000000000 Binary files a/docs/_build/html/.doctrees/0_background/1_rd_interoperability.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/0_background/2_ontologies.doctree b/docs/_build/html/.doctrees/0_background/2_ontologies.doctree deleted file mode 100755 index 724a41bc4..000000000 Binary files a/docs/_build/html/.doctrees/0_background/2_ontologies.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/0_background/3_ga4gh_phenopacket_schema.doctree b/docs/_build/html/.doctrees/0_background/3_ga4gh_phenopacket_schema.doctree deleted file mode 100755 index f449dcb24..000000000 Binary files a/docs/_build/html/.doctrees/0_background/3_ga4gh_phenopacket_schema.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/0_background/4_hl7_fhir.doctree b/docs/_build/html/.doctrees/0_background/4_hl7_fhir.doctree deleted file mode 100755 index 52cbcd768..000000000 Binary files a/docs/_build/html/.doctrees/0_background/4_hl7_fhir.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/0_background/5_rd_cdm.doctree b/docs/_build/html/.doctrees/0_background/5_rd_cdm.doctree deleted file mode 100755 index 7385732c6..000000000 Binary files a/docs/_build/html/.doctrees/0_background/5_rd_cdm.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/0_background/6_redcap_rarelink.doctree b/docs/_build/html/.doctrees/0_background/6_redcap_rarelink.doctree deleted file mode 100755 index f1eb98791..000000000 Binary files a/docs/_build/html/.doctrees/0_background/6_redcap_rarelink.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/10_license.doctree b/docs/_build/html/.doctrees/10_license.doctree old mode 100755 new mode 100644 index 1a0fe6db6..b420b4385 Binary files a/docs/_build/html/.doctrees/10_license.doctree and b/docs/_build/html/.doctrees/10_license.doctree differ diff --git a/docs/_build/html/.doctrees/11_download_manifest.doctree b/docs/_build/html/.doctrees/11_download_manifest.doctree index a09a2fc82..09b715247 100644 Binary files a/docs/_build/html/.doctrees/11_download_manifest.doctree and b/docs/_build/html/.doctrees/11_download_manifest.doctree differ diff --git a/docs/_build/html/.doctrees/12_contact.doctree b/docs/_build/html/.doctrees/12_contact.doctree index 0bd70a676..e83509409 100644 Binary files a/docs/_build/html/.doctrees/12_contact.doctree and b/docs/_build/html/.doctrees/12_contact.doctree differ diff --git a/docs/_build/html/.doctrees/1_background/0_background_file.doctree b/docs/_build/html/.doctrees/1_background/0_background_file.doctree deleted file mode 100755 index ec413f626..000000000 Binary files a/docs/_build/html/.doctrees/1_background/0_background_file.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/1_background/1_0_background_file.doctree b/docs/_build/html/.doctrees/1_background/1_0_background_file.doctree old mode 100755 new mode 100644 index 628059ecd..e1b051163 Binary files a/docs/_build/html/.doctrees/1_background/1_0_background_file.doctree and b/docs/_build/html/.doctrees/1_background/1_0_background_file.doctree differ diff --git a/docs/_build/html/.doctrees/1_background/1_0_introduction_file.doctree b/docs/_build/html/.doctrees/1_background/1_0_introduction_file.doctree deleted file mode 100644 index b03e17efb..000000000 Binary files a/docs/_build/html/.doctrees/1_background/1_0_introduction_file.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/1_background/1_1_rd_interoperability.doctree b/docs/_build/html/.doctrees/1_background/1_1_rd_interoperability.doctree old mode 100755 new mode 100644 index 5ecab723d..823b0224c Binary files a/docs/_build/html/.doctrees/1_background/1_1_rd_interoperability.doctree and b/docs/_build/html/.doctrees/1_background/1_1_rd_interoperability.doctree differ diff --git a/docs/_build/html/.doctrees/1_background/1_2_ontologies.doctree b/docs/_build/html/.doctrees/1_background/1_2_ontologies.doctree old mode 100755 new mode 100644 index 98adae2e2..a6b5e1f8b Binary files a/docs/_build/html/.doctrees/1_background/1_2_ontologies.doctree and b/docs/_build/html/.doctrees/1_background/1_2_ontologies.doctree differ diff --git a/docs/_build/html/.doctrees/1_background/1_3_ga4gh_phenopacket_schema.doctree b/docs/_build/html/.doctrees/1_background/1_3_ga4gh_phenopacket_schema.doctree old mode 100755 new mode 100644 index 8879aa5ae..60f29c31c Binary files a/docs/_build/html/.doctrees/1_background/1_3_ga4gh_phenopacket_schema.doctree and b/docs/_build/html/.doctrees/1_background/1_3_ga4gh_phenopacket_schema.doctree differ diff --git a/docs/_build/html/.doctrees/1_background/1_4_hl7_fhir.doctree b/docs/_build/html/.doctrees/1_background/1_4_hl7_fhir.doctree old mode 100755 new mode 100644 index c22976645..52486bd8d Binary files a/docs/_build/html/.doctrees/1_background/1_4_hl7_fhir.doctree and b/docs/_build/html/.doctrees/1_background/1_4_hl7_fhir.doctree differ diff --git a/docs/_build/html/.doctrees/1_background/1_5_rd_cdm.doctree b/docs/_build/html/.doctrees/1_background/1_5_rd_cdm.doctree old mode 100755 new mode 100644 index 6a81cd710..89283a3fd Binary files a/docs/_build/html/.doctrees/1_background/1_5_rd_cdm.doctree and b/docs/_build/html/.doctrees/1_background/1_5_rd_cdm.doctree differ diff --git a/docs/_build/html/.doctrees/1_background/1_6_redcap.doctree b/docs/_build/html/.doctrees/1_background/1_6_redcap.doctree old mode 100755 new mode 100644 index ec164e94e..33ff6b77e Binary files a/docs/_build/html/.doctrees/1_background/1_6_redcap.doctree and b/docs/_build/html/.doctrees/1_background/1_6_redcap.doctree differ diff --git a/docs/_build/html/.doctrees/1_background/1_rd_interoperability.doctree b/docs/_build/html/.doctrees/1_background/1_rd_interoperability.doctree deleted file mode 100755 index 2a2063458..000000000 Binary files a/docs/_build/html/.doctrees/1_background/1_rd_interoperability.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/1_background/2_ontologies.doctree b/docs/_build/html/.doctrees/1_background/2_ontologies.doctree deleted file mode 100755 index a1768ec7d..000000000 Binary files a/docs/_build/html/.doctrees/1_background/2_ontologies.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/1_background/3_ga4gh_phenopacket_schema.doctree b/docs/_build/html/.doctrees/1_background/3_ga4gh_phenopacket_schema.doctree deleted file mode 100755 index 7620f34a1..000000000 Binary files a/docs/_build/html/.doctrees/1_background/3_ga4gh_phenopacket_schema.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/1_background/4_hl7_fhir.doctree b/docs/_build/html/.doctrees/1_background/4_hl7_fhir.doctree deleted file mode 100755 index df76b9703..000000000 Binary files a/docs/_build/html/.doctrees/1_background/4_hl7_fhir.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/1_background/5_rd_cdm.doctree b/docs/_build/html/.doctrees/1_background/5_rd_cdm.doctree deleted file mode 100755 index 7b10dffe6..000000000 Binary files a/docs/_build/html/.doctrees/1_background/5_rd_cdm.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/1_background/6_redcap.doctree b/docs/_build/html/.doctrees/1_background/6_redcap.doctree deleted file mode 100755 index d82b39ae5..000000000 Binary files a/docs/_build/html/.doctrees/1_background/6_redcap.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/1_background/6_redcap_rarelink.doctree b/docs/_build/html/.doctrees/1_background/6_redcap_rarelink.doctree deleted file mode 100755 index fd4b00997..000000000 Binary files a/docs/_build/html/.doctrees/1_background/6_redcap_rarelink.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/2_rarelink/0_rarelink_file.doctree b/docs/_build/html/.doctrees/2_rarelink/0_rarelink_file.doctree deleted file mode 100755 index e5d0276ef..000000000 Binary files a/docs/_build/html/.doctrees/2_rarelink/0_rarelink_file.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/2_rarelink/1_rarelink_core.doctree b/docs/_build/html/.doctrees/2_rarelink/1_rarelink_core.doctree deleted file mode 100755 index c4033e53d..000000000 Binary files a/docs/_build/html/.doctrees/2_rarelink/1_rarelink_core.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/2_rarelink/2_rarelink_cdm_instruments.doctree b/docs/_build/html/.doctrees/2_rarelink/2_rarelink_cdm_instruments.doctree deleted file mode 100755 index b32f08157..000000000 Binary files a/docs/_build/html/.doctrees/2_rarelink/2_rarelink_cdm_instruments.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/2_rarelink/3_rarelink_core_redcap_project.doctree b/docs/_build/html/.doctrees/2_rarelink/3_rarelink_core_redcap_project.doctree deleted file mode 100755 index 9e7a13554..000000000 Binary files a/docs/_build/html/.doctrees/2_rarelink/3_rarelink_core_redcap_project.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/2_rarelink/3_rarelink_redcap_project.doctree b/docs/_build/html/.doctrees/2_rarelink/3_rarelink_redcap_project.doctree deleted file mode 100755 index 1220285d6..000000000 Binary files a/docs/_build/html/.doctrees/2_rarelink/3_rarelink_redcap_project.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/2_rarelink_framework/0_rarelink_file.doctree b/docs/_build/html/.doctrees/2_rarelink_framework/0_rarelink_file.doctree deleted file mode 100755 index d82392855..000000000 Binary files a/docs/_build/html/.doctrees/2_rarelink_framework/0_rarelink_file.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/2_rarelink_framework/1_rarelink_core.doctree b/docs/_build/html/.doctrees/2_rarelink_framework/1_rarelink_core.doctree deleted file mode 100755 index e6e0362b1..000000000 Binary files a/docs/_build/html/.doctrees/2_rarelink_framework/1_rarelink_core.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/2_rarelink_framework/2_0_rarelink_file.doctree b/docs/_build/html/.doctrees/2_rarelink_framework/2_0_rarelink_file.doctree old mode 100755 new mode 100644 index 95f1a174f..2e331d94e Binary files a/docs/_build/html/.doctrees/2_rarelink_framework/2_0_rarelink_file.doctree and b/docs/_build/html/.doctrees/2_rarelink_framework/2_0_rarelink_file.doctree differ diff --git a/docs/_build/html/.doctrees/2_rarelink_framework/2_1_rarelink_core.doctree b/docs/_build/html/.doctrees/2_rarelink_framework/2_1_rarelink_core.doctree deleted file mode 100755 index ff45dfb0d..000000000 Binary files a/docs/_build/html/.doctrees/2_rarelink_framework/2_1_rarelink_core.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/2_rarelink_framework/2_1_rarelink_overview.doctree b/docs/_build/html/.doctrees/2_rarelink_framework/2_1_rarelink_overview.doctree old mode 100755 new mode 100644 index 77bd5cfb3..077b6890e Binary files a/docs/_build/html/.doctrees/2_rarelink_framework/2_1_rarelink_overview.doctree and b/docs/_build/html/.doctrees/2_rarelink_framework/2_1_rarelink_overview.doctree differ diff --git a/docs/_build/html/.doctrees/2_rarelink_framework/2_2_rarelink_cdm.doctree b/docs/_build/html/.doctrees/2_rarelink_framework/2_2_rarelink_cdm.doctree index f3051f0e4..7ad2c64b1 100644 Binary files a/docs/_build/html/.doctrees/2_rarelink_framework/2_2_rarelink_cdm.doctree and b/docs/_build/html/.doctrees/2_rarelink_framework/2_2_rarelink_cdm.doctree differ diff --git a/docs/_build/html/.doctrees/2_rarelink_framework/2_2_rarelink_cdm_instruments.doctree b/docs/_build/html/.doctrees/2_rarelink_framework/2_2_rarelink_cdm_instruments.doctree deleted file mode 100755 index b9004774b..000000000 Binary files a/docs/_build/html/.doctrees/2_rarelink_framework/2_2_rarelink_cdm_instruments.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/2_rarelink_framework/2_3_rarelink_cli.doctree b/docs/_build/html/.doctrees/2_rarelink_framework/2_3_rarelink_cli.doctree index 08673ba69..ec7706cc4 100644 Binary files a/docs/_build/html/.doctrees/2_rarelink_framework/2_3_rarelink_cli.doctree and b/docs/_build/html/.doctrees/2_rarelink_framework/2_3_rarelink_cli.doctree differ diff --git a/docs/_build/html/.doctrees/2_rarelink_framework/2_3_rarelink_core_redcap_project.doctree b/docs/_build/html/.doctrees/2_rarelink_framework/2_3_rarelink_core_redcap_project.doctree deleted file mode 100755 index 2e01e8cfc..000000000 Binary files a/docs/_build/html/.doctrees/2_rarelink_framework/2_3_rarelink_core_redcap_project.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/2_rarelink_framework/2_4_rarelink_cli.doctree b/docs/_build/html/.doctrees/2_rarelink_framework/2_4_rarelink_cli.doctree deleted file mode 100755 index c23d4403d..000000000 Binary files a/docs/_build/html/.doctrees/2_rarelink_framework/2_4_rarelink_cli.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/2_rarelink_framework/2_rarelink_cdm_instruments.doctree b/docs/_build/html/.doctrees/2_rarelink_framework/2_rarelink_cdm_instruments.doctree deleted file mode 100755 index d1d01dda9..000000000 Binary files a/docs/_build/html/.doctrees/2_rarelink_framework/2_rarelink_cdm_instruments.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/2_rarelink_framework/3_rarelink_core_redcap_project.doctree b/docs/_build/html/.doctrees/2_rarelink_framework/3_rarelink_core_redcap_project.doctree deleted file mode 100755 index e39528dcf..000000000 Binary files a/docs/_build/html/.doctrees/2_rarelink_framework/3_rarelink_core_redcap_project.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_0_install_file.doctree b/docs/_build/html/.doctrees/3_installation/3_0_install_file.doctree old mode 100755 new mode 100644 index 6b2df51e0..f80b69fd1 Binary files a/docs/_build/html/.doctrees/3_installation/3_0_install_file.doctree and b/docs/_build/html/.doctrees/3_installation/3_0_install_file.doctree differ diff --git a/docs/_build/html/.doctrees/3_installation/3_1_rarelink_cdm_instruments.doctree b/docs/_build/html/.doctrees/3_installation/3_1_rarelink_cdm_instruments.doctree deleted file mode 100755 index 4b1e0938f..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_1_rarelink_cdm_instruments.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_1_rarelink_instruments.doctree b/docs/_build/html/.doctrees/3_installation/3_1_rarelink_instruments.doctree deleted file mode 100755 index 4b5dbda39..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_1_rarelink_instruments.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_1_setup_rarelink_framework.doctree b/docs/_build/html/.doctrees/3_installation/3_1_setup_rarelink_framework.doctree old mode 100755 new mode 100644 index d1756e729..fe58f1348 Binary files a/docs/_build/html/.doctrees/3_installation/3_1_setup_rarelink_framework.doctree and b/docs/_build/html/.doctrees/3_installation/3_1_setup_rarelink_framework.doctree differ diff --git a/docs/_build/html/.doctrees/3_installation/3_2_extensional_instruments.doctree b/docs/_build/html/.doctrees/3_installation/3_2_extensional_instruments.doctree deleted file mode 100755 index e0e61aaf1..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_2_extensional_instruments.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_2_redcap_api.doctree b/docs/_build/html/.doctrees/3_installation/3_2_redcap_api.doctree deleted file mode 100755 index ad61e295c..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_2_redcap_api.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_2_redcap_project.doctree b/docs/_build/html/.doctrees/3_installation/3_2_redcap_project.doctree deleted file mode 100755 index 7cf98c092..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_2_redcap_project.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_2_setup_redcap_project.doctree b/docs/_build/html/.doctrees/3_installation/3_2_setup_redcap_project.doctree old mode 100755 new mode 100644 index 4d904ea89..61dbcccc9 Binary files a/docs/_build/html/.doctrees/3_installation/3_2_setup_redcap_project.doctree and b/docs/_build/html/.doctrees/3_installation/3_2_setup_redcap_project.doctree differ diff --git a/docs/_build/html/.doctrees/3_installation/3_3_data_dictionary.doctree b/docs/_build/html/.doctrees/3_installation/3_3_data_dictionary.doctree index 89fbb9c47..4e2a0ec5f 100644 Binary files a/docs/_build/html/.doctrees/3_installation/3_3_data_dictionary.doctree and b/docs/_build/html/.doctrees/3_installation/3_3_data_dictionary.doctree differ diff --git a/docs/_build/html/.doctrees/3_installation/3_3_rarelink_core_project.doctree b/docs/_build/html/.doctrees/3_installation/3_3_rarelink_core_project.doctree deleted file mode 100755 index 653a3d5b6..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_3_rarelink_core_project.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_3_redcap_api.doctree b/docs/_build/html/.doctrees/3_installation/3_3_redcap_api.doctree deleted file mode 100755 index 161283dba..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_3_redcap_api.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_3_redcap_project.doctree b/docs/_build/html/.doctrees/3_installation/3_3_redcap_project.doctree deleted file mode 100755 index 92871eb0e..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_3_redcap_project.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_3_setup_rarelink_instruments.doctree b/docs/_build/html/.doctrees/3_installation/3_3_setup_rarelink_instruments.doctree deleted file mode 100755 index f3afd1260..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_3_setup_rarelink_instruments.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_4_import_mapper.doctree b/docs/_build/html/.doctrees/3_installation/3_4_import_mapper.doctree deleted file mode 100755 index 123376559..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_4_import_mapper.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_4_rarelink_core_project.doctree b/docs/_build/html/.doctrees/3_installation/3_4_rarelink_core_project.doctree deleted file mode 100755 index 34c9160ef..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_4_rarelink_core_project.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_4_rarelink_pipelines.doctree b/docs/_build/html/.doctrees/3_installation/3_4_rarelink_pipelines.doctree deleted file mode 100755 index c5de248af..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_4_rarelink_pipelines.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_4_redcap_api.doctree b/docs/_build/html/.doctrees/3_installation/3_4_redcap_api.doctree old mode 100755 new mode 100644 index 84fef5ce7..a3bea8bf6 Binary files a/docs/_build/html/.doctrees/3_installation/3_4_redcap_api.doctree and b/docs/_build/html/.doctrees/3_installation/3_4_redcap_api.doctree differ diff --git a/docs/_build/html/.doctrees/3_installation/3_5_import_mapper.doctree b/docs/_build/html/.doctrees/3_installation/3_5_import_mapper.doctree deleted file mode 100755 index 00eb57b8f..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_5_import_mapper.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_5_rarelink_pipelines.doctree b/docs/_build/html/.doctrees/3_installation/3_5_rarelink_pipelines.doctree deleted file mode 100755 index 130d741ed..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_5_rarelink_pipelines.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_5_tofhir_pipeline.doctree b/docs/_build/html/.doctrees/3_installation/3_5_tofhir_pipeline.doctree deleted file mode 100755 index 708b261fb..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_5_tofhir_pipeline.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_6_phenopacket_pipeline.doctree b/docs/_build/html/.doctrees/3_installation/3_6_phenopacket_pipeline.doctree deleted file mode 100755 index f35dfd482..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_6_phenopacket_pipeline.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/3_7_fhir_pipeline.doctree b/docs/_build/html/.doctrees/3_installation/3_7_fhir_pipeline.doctree deleted file mode 100755 index df43dd47e..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/3_7_fhir_pipeline.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/install_file.doctree b/docs/_build/html/.doctrees/3_installation/install_file.doctree deleted file mode 100755 index fdccb9797..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/install_file.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/rarelink_instruments.doctree b/docs/_build/html/.doctrees/3_installation/rarelink_instruments.doctree deleted file mode 100755 index a9624815d..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/rarelink_instruments.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/redcap_api.doctree b/docs/_build/html/.doctrees/3_installation/redcap_api.doctree deleted file mode 100755 index 858becc97..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/redcap_api.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/3_installation/redcap_project.doctree b/docs/_build/html/.doctrees/3_installation/redcap_project.doctree deleted file mode 100755 index b7d00f1d4..000000000 Binary files a/docs/_build/html/.doctrees/3_installation/redcap_project.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/4_user_guide/3_4_guide_file.doctree b/docs/_build/html/.doctrees/4_user_guide/3_4_guide_file.doctree deleted file mode 100755 index 336020e54..000000000 Binary files a/docs/_build/html/.doctrees/4_user_guide/3_4_guide_file.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/4_user_guide/4_0_guide_file.doctree b/docs/_build/html/.doctrees/4_user_guide/4_0_guide_file.doctree old mode 100755 new mode 100644 index 43fa4b10f..0088fec7a Binary files a/docs/_build/html/.doctrees/4_user_guide/4_0_guide_file.doctree and b/docs/_build/html/.doctrees/4_user_guide/4_0_guide_file.doctree differ diff --git a/docs/_build/html/.doctrees/4_user_guide/4_1_manual_data_capture.doctree b/docs/_build/html/.doctrees/4_user_guide/4_1_manual_data_capture.doctree old mode 100755 new mode 100644 index 049161e4e..c2cb1b524 Binary files a/docs/_build/html/.doctrees/4_user_guide/4_1_manual_data_capture.doctree and b/docs/_build/html/.doctrees/4_user_guide/4_1_manual_data_capture.doctree differ diff --git a/docs/_build/html/.doctrees/4_user_guide/4_2_import_mapper.doctree b/docs/_build/html/.doctrees/4_user_guide/4_2_import_mapper.doctree old mode 100755 new mode 100644 index e539b1b86..dfbcc192b Binary files a/docs/_build/html/.doctrees/4_user_guide/4_2_import_mapper.doctree and b/docs/_build/html/.doctrees/4_user_guide/4_2_import_mapper.doctree differ diff --git a/docs/_build/html/.doctrees/4_user_guide/4_2_ontobridge.doctree b/docs/_build/html/.doctrees/4_user_guide/4_2_ontobridge.doctree deleted file mode 100755 index c837d9a5b..000000000 Binary files a/docs/_build/html/.doctrees/4_user_guide/4_2_ontobridge.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/4_user_guide/4_2_semiautomatic_data_capture.doctree b/docs/_build/html/.doctrees/4_user_guide/4_2_semiautomatic_data_capture.doctree deleted file mode 100755 index e11626eac..000000000 Binary files a/docs/_build/html/.doctrees/4_user_guide/4_2_semiautomatic_data_capture.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/4_user_guide/4_2_semiautomatic_import.doctree b/docs/_build/html/.doctrees/4_user_guide/4_2_semiautomatic_import.doctree deleted file mode 100755 index c2fb978d5..000000000 Binary files a/docs/_build/html/.doctrees/4_user_guide/4_2_semiautomatic_import.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/4_user_guide/4_3_phenopacket_mapper.doctree b/docs/_build/html/.doctrees/4_user_guide/4_3_phenopacket_mapper.doctree deleted file mode 100755 index 08093ead9..000000000 Binary files a/docs/_build/html/.doctrees/4_user_guide/4_3_phenopacket_mapper.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/4_user_guide/4_3_phenopackets.doctree b/docs/_build/html/.doctrees/4_user_guide/4_3_phenopackets.doctree index f5af3624f..e7b33d672 100644 Binary files a/docs/_build/html/.doctrees/4_user_guide/4_3_phenopackets.doctree and b/docs/_build/html/.doctrees/4_user_guide/4_3_phenopackets.doctree differ diff --git a/docs/_build/html/.doctrees/4_user_guide/4_4_fhir_module.doctree b/docs/_build/html/.doctrees/4_user_guide/4_4_fhir_module.doctree new file mode 100644 index 000000000..0cbca9f5e Binary files /dev/null and b/docs/_build/html/.doctrees/4_user_guide/4_4_fhir_module.doctree differ diff --git a/docs/_build/html/.doctrees/4_user_guide/4_4_redcap_api.doctree b/docs/_build/html/.doctrees/4_user_guide/4_4_redcap_api.doctree deleted file mode 100755 index 3e7fad80b..000000000 Binary files a/docs/_build/html/.doctrees/4_user_guide/4_4_redcap_api.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/4_user_guide/4_4_tofhir_module.doctree b/docs/_build/html/.doctrees/4_user_guide/4_4_tofhir_module.doctree deleted file mode 100755 index 9062f6b6c..000000000 Binary files a/docs/_build/html/.doctrees/4_user_guide/4_4_tofhir_module.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/4_user_guide/4_5_develop_redcap_instruments.doctree b/docs/_build/html/.doctrees/4_user_guide/4_5_develop_redcap_instruments.doctree old mode 100755 new mode 100644 index 1ecd2930a..625449f22 Binary files a/docs/_build/html/.doctrees/4_user_guide/4_5_develop_redcap_instruments.doctree and b/docs/_build/html/.doctrees/4_user_guide/4_5_develop_redcap_instruments.doctree differ diff --git a/docs/_build/html/.doctrees/4_user_guide/4_5_redcap_api.doctree b/docs/_build/html/.doctrees/4_user_guide/4_5_redcap_api.doctree deleted file mode 100755 index 879d1da1c..000000000 Binary files a/docs/_build/html/.doctrees/4_user_guide/4_5_redcap_api.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/4_user_guide/4_6_redcap_project_interaction.doctree b/docs/_build/html/.doctrees/4_user_guide/4_6_redcap_project_interaction.doctree deleted file mode 100755 index cc30551ad..000000000 Binary files a/docs/_build/html/.doctrees/4_user_guide/4_6_redcap_project_interaction.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/4_user_guide/4_6_redcap_tools.doctree b/docs/_build/html/.doctrees/4_user_guide/4_6_redcap_tools.doctree index 7bdcc273a..0c30b082f 100644 Binary files a/docs/_build/html/.doctrees/4_user_guide/4_6_redcap_tools.doctree and b/docs/_build/html/.doctrees/4_user_guide/4_6_redcap_tools.doctree differ diff --git a/docs/_build/html/.doctrees/4_user_guide/guide_file.doctree b/docs/_build/html/.doctrees/4_user_guide/guide_file.doctree deleted file mode 100755 index 0148fca55..000000000 Binary files a/docs/_build/html/.doctrees/4_user_guide/guide_file.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/4_user_guide/manual_data_capture.doctree b/docs/_build/html/.doctrees/4_user_guide/manual_data_capture.doctree deleted file mode 100755 index 604bc5d44..000000000 Binary files a/docs/_build/html/.doctrees/4_user_guide/manual_data_capture.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/4_user_guide/ontobridge.doctree b/docs/_build/html/.doctrees/4_user_guide/ontobridge.doctree deleted file mode 100755 index 3b4a78478..000000000 Binary files a/docs/_build/html/.doctrees/4_user_guide/ontobridge.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/4_user_guide/phenopacket_mapper.doctree b/docs/_build/html/.doctrees/4_user_guide/phenopacket_mapper.doctree deleted file mode 100755 index 0687f085d..000000000 Binary files a/docs/_build/html/.doctrees/4_user_guide/phenopacket_mapper.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/4_user_guide/redcap_api.doctree b/docs/_build/html/.doctrees/4_user_guide/redcap_api.doctree deleted file mode 100755 index 5475005d0..000000000 Binary files a/docs/_build/html/.doctrees/4_user_guide/redcap_api.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/4_user_guide/tofhir_module.doctree b/docs/_build/html/.doctrees/4_user_guide/tofhir_module.doctree deleted file mode 100755 index 4fb6a8ecc..000000000 Binary files a/docs/_build/html/.doctrees/4_user_guide/tofhir_module.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/5_contributing.doctree b/docs/_build/html/.doctrees/5_contributing.doctree index b4fc36890..0bc868c5f 100644 Binary files a/docs/_build/html/.doctrees/5_contributing.doctree and b/docs/_build/html/.doctrees/5_contributing.doctree differ diff --git a/docs/_build/html/.doctrees/5_examples/5_0_examples_file.doctree b/docs/_build/html/.doctrees/5_examples/5_0_examples_file.doctree deleted file mode 100755 index 0ea70431c..000000000 Binary files a/docs/_build/html/.doctrees/5_examples/5_0_examples_file.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/5_examples/5_1_example_redcap_project.doctree b/docs/_build/html/.doctrees/5_examples/5_1_example_redcap_project.doctree deleted file mode 100755 index 5937ea48d..000000000 Binary files a/docs/_build/html/.doctrees/5_examples/5_1_example_redcap_project.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/5_examples/5_2_example_redcap_instruments.doctree b/docs/_build/html/.doctrees/5_examples/5_2_example_redcap_instruments.doctree deleted file mode 100755 index 674d9fb06..000000000 Binary files a/docs/_build/html/.doctrees/5_examples/5_2_example_redcap_instruments.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/5_examples/5_3_example_semiaut_import.doctree b/docs/_build/html/.doctrees/5_examples/5_3_example_semiaut_import.doctree deleted file mode 100755 index 2b2492581..000000000 Binary files a/docs/_build/html/.doctrees/5_examples/5_3_example_semiaut_import.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/5_examples/5_4_example_phenopacket_mapper.doctree b/docs/_build/html/.doctrees/5_examples/5_4_example_phenopacket_mapper.doctree deleted file mode 100755 index b174fbb74..000000000 Binary files a/docs/_build/html/.doctrees/5_examples/5_4_example_phenopacket_mapper.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/5_examples/5_5_example_tofhir_module.doctree b/docs/_build/html/.doctrees/5_examples/5_5_example_tofhir_module.doctree deleted file mode 100755 index 1abbe2d4c..000000000 Binary files a/docs/_build/html/.doctrees/5_examples/5_5_example_tofhir_module.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/5_examples/example_ontobridge.doctree b/docs/_build/html/.doctrees/5_examples/example_ontobridge.doctree deleted file mode 100755 index a8b1fc8a2..000000000 Binary files a/docs/_build/html/.doctrees/5_examples/example_ontobridge.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/5_examples/example_phenopacket_mapper.doctree b/docs/_build/html/.doctrees/5_examples/example_phenopacket_mapper.doctree deleted file mode 100755 index a24ec57da..000000000 Binary files a/docs/_build/html/.doctrees/5_examples/example_phenopacket_mapper.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/5_examples/example_redcap_instruments.doctree b/docs/_build/html/.doctrees/5_examples/example_redcap_instruments.doctree deleted file mode 100755 index 60c16598d..000000000 Binary files a/docs/_build/html/.doctrees/5_examples/example_redcap_instruments.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/5_examples/example_redcap_project.doctree b/docs/_build/html/.doctrees/5_examples/example_redcap_project.doctree deleted file mode 100755 index 6033a51d3..000000000 Binary files a/docs/_build/html/.doctrees/5_examples/example_redcap_project.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/5_examples/example_tofhir_module.doctree b/docs/_build/html/.doctrees/5_examples/example_tofhir_module.doctree deleted file mode 100755 index 6af550a57..000000000 Binary files a/docs/_build/html/.doctrees/5_examples/example_tofhir_module.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/5_examples/examples_file.doctree b/docs/_build/html/.doctrees/5_examples/examples_file.doctree deleted file mode 100755 index 9d1ede431..000000000 Binary files a/docs/_build/html/.doctrees/5_examples/examples_file.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/6_changelog.doctree b/docs/_build/html/.doctrees/6_changelog.doctree old mode 100755 new mode 100644 index 8b36418a5..c8afc7b5a Binary files a/docs/_build/html/.doctrees/6_changelog.doctree and b/docs/_build/html/.doctrees/6_changelog.doctree differ diff --git a/docs/_build/html/.doctrees/7_faq.doctree b/docs/_build/html/.doctrees/7_faq.doctree old mode 100755 new mode 100644 index 6a2c66b45..27841a717 Binary files a/docs/_build/html/.doctrees/7_faq.doctree and b/docs/_build/html/.doctrees/7_faq.doctree differ diff --git a/docs/_build/html/.doctrees/8_glossary.doctree b/docs/_build/html/.doctrees/8_glossary.doctree old mode 100755 new mode 100644 index 814b4fd25..1536c55bd Binary files a/docs/_build/html/.doctrees/8_glossary.doctree and b/docs/_build/html/.doctrees/8_glossary.doctree differ diff --git a/docs/_build/html/.doctrees/9_acknowledgements.doctree b/docs/_build/html/.doctrees/9_acknowledgements.doctree old mode 100755 new mode 100644 index 1de013ee0..243da84c1 Binary files a/docs/_build/html/.doctrees/9_acknowledgements.doctree and b/docs/_build/html/.doctrees/9_acknowledgements.doctree differ diff --git a/docs/_build/html/.doctrees/acknowledgements.doctree b/docs/_build/html/.doctrees/acknowledgements.doctree deleted file mode 100755 index bcee7f4c9..000000000 Binary files a/docs/_build/html/.doctrees/acknowledgements.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/background/0_background_file.doctree b/docs/_build/html/.doctrees/background/0_background_file.doctree deleted file mode 100755 index 011f81855..000000000 Binary files a/docs/_build/html/.doctrees/background/0_background_file.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/background/1_rd_interoperability.doctree b/docs/_build/html/.doctrees/background/1_rd_interoperability.doctree deleted file mode 100755 index 10d07583d..000000000 Binary files a/docs/_build/html/.doctrees/background/1_rd_interoperability.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/background/2_ontologies.doctree b/docs/_build/html/.doctrees/background/2_ontologies.doctree deleted file mode 100755 index ebfaffea5..000000000 Binary files a/docs/_build/html/.doctrees/background/2_ontologies.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/background/3_ga4gh_phenopacket_schema.doctree b/docs/_build/html/.doctrees/background/3_ga4gh_phenopacket_schema.doctree deleted file mode 100755 index 928c0e8b7..000000000 Binary files a/docs/_build/html/.doctrees/background/3_ga4gh_phenopacket_schema.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/background/4_hl7_fhir.doctree b/docs/_build/html/.doctrees/background/4_hl7_fhir.doctree deleted file mode 100755 index 8520797a9..000000000 Binary files a/docs/_build/html/.doctrees/background/4_hl7_fhir.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/background/5_rd_cdm.doctree b/docs/_build/html/.doctrees/background/5_rd_cdm.doctree deleted file mode 100755 index 58758d152..000000000 Binary files a/docs/_build/html/.doctrees/background/5_rd_cdm.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/background/6_redcap_rarelink.doctree b/docs/_build/html/.doctrees/background/6_redcap_rarelink.doctree deleted file mode 100755 index eed0b3006..000000000 Binary files a/docs/_build/html/.doctrees/background/6_redcap_rarelink.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/background/background_file.doctree b/docs/_build/html/.doctrees/background/background_file.doctree deleted file mode 100755 index 3c63379f5..000000000 Binary files a/docs/_build/html/.doctrees/background/background_file.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/background/ga4gh_phenopacket_schema.doctree b/docs/_build/html/.doctrees/background/ga4gh_phenopacket_schema.doctree deleted file mode 100755 index 45f9e2bfc..000000000 Binary files a/docs/_build/html/.doctrees/background/ga4gh_phenopacket_schema.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/background/hl7_fhir.doctree b/docs/_build/html/.doctrees/background/hl7_fhir.doctree deleted file mode 100755 index 8fec68956..000000000 Binary files a/docs/_build/html/.doctrees/background/hl7_fhir.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/background/ontologies.doctree b/docs/_build/html/.doctrees/background/ontologies.doctree deleted file mode 100755 index 11379ebbe..000000000 Binary files a/docs/_build/html/.doctrees/background/ontologies.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/background/rd_cdm.doctree b/docs/_build/html/.doctrees/background/rd_cdm.doctree deleted file mode 100755 index ab0b1d3bc..000000000 Binary files a/docs/_build/html/.doctrees/background/rd_cdm.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/background/rd_interoperability.doctree b/docs/_build/html/.doctrees/background/rd_interoperability.doctree deleted file mode 100755 index c04bc7173..000000000 Binary files a/docs/_build/html/.doctrees/background/rd_interoperability.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/background/redcap.doctree b/docs/_build/html/.doctrees/background/redcap.doctree deleted file mode 100755 index 7214cd2b6..000000000 Binary files a/docs/_build/html/.doctrees/background/redcap.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/background/redcap_rarelink.doctree b/docs/_build/html/.doctrees/background/redcap_rarelink.doctree deleted file mode 100755 index f96bf2a4f..000000000 Binary files a/docs/_build/html/.doctrees/background/redcap_rarelink.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/environment.pickle b/docs/_build/html/.doctrees/environment.pickle old mode 100755 new mode 100644 index 258298a70..fd93e99f2 Binary files a/docs/_build/html/.doctrees/environment.pickle and b/docs/_build/html/.doctrees/environment.pickle differ diff --git a/docs/_build/html/.doctrees/examples/example_ontobridge.doctree b/docs/_build/html/.doctrees/examples/example_ontobridge.doctree deleted file mode 100755 index 78179d158..000000000 Binary files a/docs/_build/html/.doctrees/examples/example_ontobridge.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/examples/example_phenopacket_mapper.doctree b/docs/_build/html/.doctrees/examples/example_phenopacket_mapper.doctree deleted file mode 100755 index 2af7999ee..000000000 Binary files a/docs/_build/html/.doctrees/examples/example_phenopacket_mapper.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/examples/example_redcap_instruments.doctree b/docs/_build/html/.doctrees/examples/example_redcap_instruments.doctree deleted file mode 100755 index 4c74a12b3..000000000 Binary files a/docs/_build/html/.doctrees/examples/example_redcap_instruments.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/examples/example_redcap_project.doctree b/docs/_build/html/.doctrees/examples/example_redcap_project.doctree deleted file mode 100755 index e70028f7b..000000000 Binary files a/docs/_build/html/.doctrees/examples/example_redcap_project.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/examples/example_tofhir_module.doctree b/docs/_build/html/.doctrees/examples/example_tofhir_module.doctree deleted file mode 100755 index a7ba7a94d..000000000 Binary files a/docs/_build/html/.doctrees/examples/example_tofhir_module.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/examples/examples_file.doctree b/docs/_build/html/.doctrees/examples/examples_file.doctree deleted file mode 100755 index b76bf9750..000000000 Binary files a/docs/_build/html/.doctrees/examples/examples_file.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/faq.doctree b/docs/_build/html/.doctrees/faq.doctree deleted file mode 100755 index 3a4f5b451..000000000 Binary files a/docs/_build/html/.doctrees/faq.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/glossary.doctree b/docs/_build/html/.doctrees/glossary.doctree deleted file mode 100755 index cec96a48b..000000000 Binary files a/docs/_build/html/.doctrees/glossary.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/index.doctree b/docs/_build/html/.doctrees/index.doctree old mode 100755 new mode 100644 index 08aed86ba..3b1d482bf Binary files a/docs/_build/html/.doctrees/index.doctree and b/docs/_build/html/.doctrees/index.doctree differ diff --git a/docs/_build/html/.doctrees/installation/install_file.doctree b/docs/_build/html/.doctrees/installation/install_file.doctree deleted file mode 100755 index 0ee6ec6ab..000000000 Binary files a/docs/_build/html/.doctrees/installation/install_file.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/installation/rarelink_instruments.doctree b/docs/_build/html/.doctrees/installation/rarelink_instruments.doctree deleted file mode 100755 index eb1af02c4..000000000 Binary files a/docs/_build/html/.doctrees/installation/rarelink_instruments.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/installation/redcap_api.doctree b/docs/_build/html/.doctrees/installation/redcap_api.doctree deleted file mode 100755 index 9edbf40ff..000000000 Binary files a/docs/_build/html/.doctrees/installation/redcap_api.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/installation/redcap_project.doctree b/docs/_build/html/.doctrees/installation/redcap_project.doctree deleted file mode 100755 index 89dd1a0c2..000000000 Binary files a/docs/_build/html/.doctrees/installation/redcap_project.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/rarelink/0_rarelink_file.doctree b/docs/_build/html/.doctrees/rarelink/0_rarelink_file.doctree deleted file mode 100755 index 67885e811..000000000 Binary files a/docs/_build/html/.doctrees/rarelink/0_rarelink_file.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/user_guide/guide_file.doctree b/docs/_build/html/.doctrees/user_guide/guide_file.doctree deleted file mode 100755 index 5e859c801..000000000 Binary files a/docs/_build/html/.doctrees/user_guide/guide_file.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/user_guide/manual_data_capture.doctree b/docs/_build/html/.doctrees/user_guide/manual_data_capture.doctree deleted file mode 100755 index 41713a896..000000000 Binary files a/docs/_build/html/.doctrees/user_guide/manual_data_capture.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/user_guide/ontobridge.doctree b/docs/_build/html/.doctrees/user_guide/ontobridge.doctree deleted file mode 100755 index 64313dcc3..000000000 Binary files a/docs/_build/html/.doctrees/user_guide/ontobridge.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/user_guide/phenopacket_mapper.doctree b/docs/_build/html/.doctrees/user_guide/phenopacket_mapper.doctree deleted file mode 100755 index a14e7f420..000000000 Binary files a/docs/_build/html/.doctrees/user_guide/phenopacket_mapper.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/user_guide/redcap_api.doctree b/docs/_build/html/.doctrees/user_guide/redcap_api.doctree deleted file mode 100755 index a494f67ff..000000000 Binary files a/docs/_build/html/.doctrees/user_guide/redcap_api.doctree and /dev/null differ diff --git a/docs/_build/html/.doctrees/user_guide/tofhir_module.doctree b/docs/_build/html/.doctrees/user_guide/tofhir_module.doctree deleted file mode 100755 index 6496824c8..000000000 Binary files a/docs/_build/html/.doctrees/user_guide/tofhir_module.doctree and /dev/null differ diff --git a/docs/_build/html/0_background/0_background_file.html b/docs/_build/html/0_background/0_background_file.html deleted file mode 100755 index 405d837f4..000000000 --- a/docs/_build/html/0_background/0_background_file.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - Background — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Background

-

RareLink was developed as a response to the widespread challenges in rare -disease (RD) data management, specifically the lack of interoperability and -standardization in healthcare information systems. As REDCap is widely used -in clinical studies and registries for data collection, RareLink was designed -to leverage REDCap’s capabilities to facilitate the collection, processing, -and sharing of RD data. The framework ensures that RD data is -captured, processed, and exported following a predefined common data model -that facilitates downstream analysis using international standards. Furthermore, -RareLink provides a rule-based approach for the design of REDCap instruments -to extend the RD common data model with additional data elements.

-

The integration of ontology codes and the connection to the BioPortal Ontology -Server enables researchers and clinicians to use standardized terminologies, -ensuring that data can be easily shared and reused across different platforms -and research networks. By leveraging HL7 FHIR and the GA4GH Phenopacket Schema, -RareLink supports the creation of interoperable and reusable RD datasets.

-

In the following we provide an overview of the different components of the -RareLink framework, including the interoperability features, the supported -ontologies, the GA4GH Phenopacket Schema, the HL7 FHIR standard, the RD CDM, -and the REDCap data collection platform.

- -
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/0_background/1_rd_interoperability.html b/docs/_build/html/0_background/1_rd_interoperability.html deleted file mode 100755 index 2481a53d1..000000000 --- a/docs/_build/html/0_background/1_rd_interoperability.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - Rare Diseases and Interoperability — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Rare Diseases and Interoperability

-

Rare diseases (RDs), though individually rare, collectively impact a significant -global population, estimated to exceed 260 million people. These diseases are -often characterised by their genetic origins, with over 70% having a suspected -genetic basis. In Europe, a disease is classified as rare if it affects fewer -than 5 in 10,000 individuals, which highlights the challenge of addressing the -medical needs of over 17 million people across the continent. Despite the large -number of individuals affected, RDs are frequently overlooked in medical -research and care, largely due to the scarcity of available data and resources.

-

Interoperability plays a crucial role in addressing these challenges. It ensures -that clinical data can be shared and understood across systems, which is -especially important in rare disease research. Many healthcare institutions -lack standardized approaches to data collection and storage, which leads to -inconsistencies and makes data exchange difficult. Without the use of -internationally recognized ontologies and coding systems, the data collected -cannot be efficiently reused or analyzed for further research. Interoperability -frameworks, such as RareLink, address this issue by facilitating the seamless -exchange of standardized medical data, thus promoting research and care for -RD patients.

-

RareLink, for example, is an interoperability framework embedded in REDCap, -for RD registries and research. By leveraging international standards such as -HL7 FHIR and GA4GH Phenopackets, RareLink ensures that data collected can be -reused not only locally but also globally. This interoperability allows -researchers to connect with other databases and centers, enhancing the potential -for collaborative research and the development of novel treatments. Furthermore, -the inclusion of ontology codes enables precise bioinformatic analysis, which is -critical given the limited number of patients and data points available in RD -research.

-

Ultimately, the success of rare disease research depends heavily on the ability -to connect and compare data from different sources. The development and -implementation of frameworks like RareLink enable more efficient diagnoses, -research, and treatment options by addressing one of the core issues: -interoperability. By promoting standardized, reusable data, RareLink -provides a foundation for advancements in rare disease care, facilitating a -future where more patients can receive timely diagnoses and access to effective -treatments.

-
    -
  • -
    FAIR Data Principles:

    Designed to improve the automated discovery and usability of data by -machines while also facilitating its reuse by individuals -(Findable, Accessible, Interoperable, Reusable).

    -
    -
    -
  • -
  • -
    Interoperability:

    The ability of different systems, applications, or devices to connect and -communicate in a coordinated manner without requiring effort from the end -user.

    -
    -
    -
  • -
  • -
    Syntactic Interoperability:

    The ability of systems to communicate through compatible formats and -protocols, such as JSON files, a format for sharing data in key-value pairs -and arrays, using human-readable text.

    -
    -
    -
  • -
  • -
    Semantic Interoperability:

    Ensures a shared and precise interpretation of medical data. Uniform data -structuring and codification enhance machine-to-machine communication, -improving accuracy and outcomes.

    -
    -
    -
  • -
-
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/0_background/2_ontologies.html b/docs/_build/html/0_background/2_ontologies.html deleted file mode 100755 index 7a17968eb..000000000 --- a/docs/_build/html/0_background/2_ontologies.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - Ontologies and Terminologies — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Ontologies and Terminologies

-

RareLink uses a variety of ontologies and terminologies to standardise the -representation of data and facilitate interoperability between different data -sources. These ontologies and terminologies are used to describe the phenotypic -and genotypic features of rare diseases (RDs) and their associated genes, as -well as the relationships between them. The use of standardised vocabularies -ensures that data can be easily integrated and queried across different -databases and platforms.

-
    -
  • An ontology -is a formal and explicit representations of the concepts and relationships -within an area of healthcare designed to facilitate the organisation, -integration, and exchange of knowledge across healthcare systems and -applications.

  • -
  • Terminologies -encompass the vocabulary used in all healthcare communication and documentation -aspects, including terms for conditions, procedures, and equipment, facilitating -precise communication and supporting electronic health information exchange.

  • -
- -
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/0_background/3_ga4gh_phenopacket_schema.html b/docs/_build/html/0_background/3_ga4gh_phenopacket_schema.html deleted file mode 100755 index 711438587..000000000 --- a/docs/_build/html/0_background/3_ga4gh_phenopacket_schema.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - GA4GH Phenopacket Schema — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

GA4GH Phenopacket Schema

-

The Phenopacket schema, developed by the Global Alliance for Genomics and Health -(GA4GH), is an open standard designed to facilitate the exchange of detailed -phenotypic and genomic data. It is particularly useful for capturing rich -clinical data and complex phenotypes in a structured format, making it ideal -for rare disease (RD) research. The schema enables the precise description of -a patient’s clinical features, genetic information, diagnoses, and disease -progression, all of which are critical for understanding rare diseases. -Phenopackets are widely adopted in bioinformatics pipelines to ensure the -standardization of data across different institutions and studies, enhancing -data reusability and interoperability.

-

RareLink integrates the Phenopacket schema to streamline RD data management by -ensuring that clinical and genomic data from patients are encoded in a -standardized format. By adopting this schema, RareLink allows for more precise -and seamless sharing of patient data across different healthcare institutions -and research projects. This integration helps overcome the challenge of -fragmented RD data, as Phenopackets offer a universal language for describing -the clinical characteristics of RD patients. In doing so, RareLink significantly -enhances the bioinformatic output, making it easier to connect RD patient -registries with broader genomic research databases, improving the potential for -discovering new therapies.

-

Several tools have been developed around the Phenopacket schema, supporting the -collection, analysis, and dissemination of RD data. Tools such as the -Phenopacket validator ensure that data adhere to the schema’s strict standards, -preventing inconsistencies and improving data quality. Additionally, the GA4GH -Beacon network allows researchers to query datasets to find specific genomic -variants associated with phenotypic data encoded in Phenopackets. These tools -have helped to broaden the impact of Phenopackets in RD research by promoting -data accuracy, accessibility, and reusability across multiple platforms and -projects.

-

The incorporation of the Phenopacket schema into RareLink has enabled -significant advancements in RD research by ensuring that high-quality, -standardized data is consistently captured, shared, and analyzed. This not only -facilitates collaboration between research centers and hospitals but also -accelerates the discovery of potential treatments by making data accessible to -bioinformaticians and clinicians worldwide. As more tools and frameworks are -built around the Phenopacket schema, the potential for breakthroughs in RD -diagnosis and treatment continues to grow.

-GA4GH Phenopacket Schema -
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/0_background/4_hl7_fhir.html b/docs/_build/html/0_background/4_hl7_fhir.html deleted file mode 100755 index da42ddbe4..000000000 --- a/docs/_build/html/0_background/4_hl7_fhir.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - HL7 FHIR (Fast Healthcare Interoperability Resources) — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

HL7 FHIR (Fast Healthcare Interoperability Resources)

-

FHIR (Fast Healthcare Interoperability Resources) is an international standard -developed by HL7 for exchanging healthcare information electronically. Initially -designed as a transaction format to facilitate data exchanges between healthcare -systems, FHIR provides a flexible and modular framework. While it is essential -for ensuring interoperability across healthcare information systems, its role as -a transaction format means that it may not always provide the precision needed -for complex rare disease (RD) analysis. However, it remains a critical tool for -enabling the smooth exchange of healthcare data between different platforms -and applications.

-

In the context of rare diseases, FHIR plays a key role in improving data sharing -across institutions and research centers. Due to the scarcity and fragmentation -of RD data, standardized data exchange is crucial. FHIR enables the -standardization of clinical and genomic data, ensuring that RD-specific -information, such as phenotypic traits and genetic variants, can be captured and -shared in a structured manner. Despite its limitations in handling the -complexity of some RD data, FHIR’s widespread adoption ensures that RD data can -be integrated with other healthcare information systems, making it easier to -collaborate and share insights across various fields.

-

RareLink incorporates FHIR to enhance its data processing capabilities, enabling -the conversion of clinical and research data into FHIR-compatible formats. This -allows data to be exported for use in registries, uploaded to FHIR servers, or -adopted by other healthcare systems. By supporting FHIR, RareLink ensures -that rare disease data can enrich routine healthcare datasets, helping to bridge -the gap between clinical care and research. Additionally, the ability to process -and export data into FHIR enables RD researchers to leverage existing FHIR -tools, thereby expanding the utility of their data across different applications.

-

Although FHIR may not cover all the nuanced aspects required for in-depth RD -analysis, it is indispensable for achieving interoperability within healthcare -systems. Its integration in RareLink ensures that data collected from rare -disease patients can be reused effectively across various platforms, thereby -supporting both clinical care and bioinformatic research into rare conditions.

-
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/0_background/5_rd_cdm.html b/docs/_build/html/0_background/5_rd_cdm.html deleted file mode 100755 index b72f41b74..000000000 --- a/docs/_build/html/0_background/5_rd_cdm.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - Rare Disease Common Data Model v2.0 — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Rare Disease Common Data Model v2.0

-

The Rare Diseases Common Data Model (RD CDM) v2.0 was developed to address -the complexity and variability inherent in rare diseases, which number over -6,000 and often require unique approaches to research and clinical care. This -model is based on the Common Data Elements (CDEs) from the European Rare -Disease Registry Infrastructure (ERDRI-CDS), providing a standardized structure -for data capture and analysis. We expanded on these elements to meet the -needs of international interoperability standards, aligning with both HL7 FHIR -and the GA4GH Phenopacket Schema. The development of this model -involved overcoming challenges such as the lack of standardized terms for -disease characteristics and the need to represent highly variable clinical data -across different rare diseases.

-

Developing an RD CDM also requires balancing between complexity and -usability. A successful model must be comprehensive enough to capture the -nuances of each rare disease, yet simple enough to be adopted across various -healthcare systems. One key difficulty is finding a common denominator for the -unique clinical requirements of diverse rare diseases while maintaining -flexibility for future expansions. Additionally, ensuring that the data can be -seamlessly integrated into existing healthcare systems without exceeding the -avaliable resources is also essential. Addressing these complexities, the -RD CDM v2.0 provides a framework that enhances the consistency of rare disease -data, enabling better comparative analysis across research institutions and -healthcare settings. While the RD CDM v2.0 is not a balloted version, it can -serve as a template for future standardization efforts in rare disease research.

-

Key success factors for the RD CDM include its ability to support secondary -uses of data, such as transferring data to central registries or enabling -federated analyses. By adhering to international interoperability standards, the -model ensures that data captured locally can be reused in broader contexts, -such as global research initiatives. This not only improves the efficiency of -rare disease research but also helps preserve the unique aspects of each -condition. The RD CDM’s flexibility allows it to evolve with the growing needs -of the rare disease community.

-

RareLink integrates this RD CDM v2.0 at its core, utilizing its REDCap sheets, -instruments, and project setup to streamline data management processes. The -native data processing pipelines within RareLink ensure that clinicians and -researchers can generate Phenopackets and FHIR resources without needing -additional coding or mapping. This seamless integration allows for immediate -use of the system, saving time and effort while ensuring that data can be -captured in a standard-compliant format from the start.

-

By leveraging the RD CDM v2.0, RareLink provides a comprehensive platform for -managing rare disease data. Its integration with FHIR and the GA4GH -Phenopacket Schema allows for the processing and export of rare disease data -into formats suitable for registry use and broader healthcare information -systems. This makes RareLink a critical tool for ensuring that rare disease data -is interoperable, reusable, and can be effectively utilized for research and -clinical care. For disease-specific extensions around the RD CDM v2.0, RareLink -provides a rule-based approach to customize REDCap instruments and -ensure that the model can be adapted to meet the unique needs of different rare -diseases.

-Overview RD CDM v2.0 -
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/0_background/6_redcap_rarelink.html b/docs/_build/html/0_background/6_redcap_rarelink.html deleted file mode 100755 index 42e8caad4..000000000 --- a/docs/_build/html/0_background/6_redcap_rarelink.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - REDCap — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

REDCap

-

REDCap (Research Electronic Data Capture) is a web- and survey-based application -designed to capture data and create databases and projects for clinical research -by the Vanderbuilt University. As an open-source tool, REDCap has gained -widespread adoption across university hospitals, research institutes, and other -healthcare institutions due to its flexibility and cost-free availability. One -of the primary advantages of REDCap is its ability to be hosted locally within -the clinical information system of a hospital. This ensures that sensitive data -captured through REDCap remains within the hospital’s infrastructure, enhancing -data privacy and security.

-

Although REDCap provides a highly flexible environment for data collection, it -does not natively define or enforce standardized variables. This lack of native -definitions for variables can lead to inconsistencies in data capture across -different projects and institutions, potentially hindering data exchange and -interoperability. To address these issues, a wide range of modules and add-ons -have been designed and developed, allowing users to extend REDCap’s -functionality and tailor it to specific research needs. The REDCap API also -allows for seamless integration with external systems, enabling automated data -transfers and further enhancing the platform’s utility in research environments.

-

RareLink maximizes the utility of REDCap by providing a comprehensive framework -designed specifically for rare disease (RD) research and care. At the core of -RareLink is the Rare Disease Common Data Model (RD CDM), which integrates -pre-configured REDCap sheets, instruments, and project setups. This framework -ensures that data capture is both consistent and compliant with international -standards, such as HL7 FHIR and GA4GH Phenopackets, without the need for -additional coding or mapping. As a result, RareLink allows researchers and -clinicians to collect and process rare disease data seamlessly within the REDCap -environment.

-

By embedding standardized data collection instruments and native data processing -pipelines, RareLink addresses one of the primary limitations of REDCap—its lack -of native variable definitions. With RareLink, data can be captured, processed, -and exported in interoperable formats suitable for rare disease registries and -healthcare information systems. The integration of FHIR resources and -Phenopackets enables rare disease data to be shared across institutions, -facilitating collaboration and improving the potential for meaningful research -and clinical advancements in RD care.

-

RareLink enhances the functionality of REDCap by transforming it into a powerful -tool for rare disease data management. By leveraging the REDCap API and built-in -tools, RareLink ensures that the data captured in REDCap can be seamlessly -integrated into broader research ecosystems, maximizing its utility and -interoperability for rare disease research and patient care.

-
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/10_license.html b/docs/_build/html/10_license.html old mode 100755 new mode 100644 index 0f2a9e29f..ef88563d7 --- a/docs/_build/html/10_license.html +++ b/docs/_build/html/10_license.html @@ -6,8 +6,8 @@ - License — RareLink REDCap Documentation 2.0.2.dev1 documentation - + License — RareLink REDCap Documentation 2.0.5 documentation + @@ -15,7 +15,7 @@ - + @@ -36,9 +36,9 @@ - - RareLink REDCap Documentation - + + +
@@ -50,40 +50,163 @@
Built with Sphinx using a diff --git a/docs/_build/html/1_background/1_3_ga4gh_phenopacket_schema.html b/docs/_build/html/1_background/1_3_ga4gh_phenopacket_schema.html old mode 100755 new mode 100644 index cf3f0458b..9abc0fb57 --- a/docs/_build/html/1_background/1_3_ga4gh_phenopacket_schema.html +++ b/docs/_build/html/1_background/1_3_ga4gh_phenopacket_schema.html @@ -6,8 +6,8 @@ - GA4GH Phenopackets — RareLink REDCap Documentation 2.0.2.dev1 documentation - + GA4GH Phenopackets — RareLink REDCap Documentation 2.0.5 documentation + @@ -15,7 +15,7 @@ - + @@ -36,9 +36,9 @@ - - RareLink REDCap Documentation - + + +
@@ -50,45 +50,163 @@
Built with Sphinx using a diff --git a/docs/_build/html/1_background/1_4_hl7_fhir.html b/docs/_build/html/1_background/1_4_hl7_fhir.html old mode 100755 new mode 100644 index 2841dbb37..15d2c5160 --- a/docs/_build/html/1_background/1_4_hl7_fhir.html +++ b/docs/_build/html/1_background/1_4_hl7_fhir.html @@ -6,8 +6,8 @@ - HL7 FHIR — RareLink REDCap Documentation 2.0.2.dev1 documentation - + HL7 FHIR — RareLink REDCap Documentation 2.0.5 documentation + @@ -15,7 +15,7 @@ - + @@ -36,9 +36,9 @@ - - RareLink REDCap Documentation - + + +
@@ -50,47 +50,163 @@

FHIR Overview - Developers

-

FHIR (Fast Healthcare Interoperability Resources) is designed to enable -information exchange to support the provision of healthcare in a wide variety -of settings. The specification builds on and adapts modern, widely used RESTful -practices to enable the provision of integrated healthcare across a wide range -of teams and organizations.

+

FHIR is designed to enable information exchange to support the provision of +healthcare in a wide variety of settings. The specification builds on and adapts +modern, widely used RESTful practices to enable the provision of integrated +healthcare across a wide range of teams and organizations.

The intended scope of FHIR is broad, covering human and veterinary, clinical care, public health, clinical trials, administration and financial aspects. The standard is intended for global use and in a wide variety of architectures @@ -197,7 +325,7 @@

FHIR Overview - Developers

Tip

@@ -214,11 +342,11 @@

FHIR Overview - Architects

Tip

@@ -244,7 +372,7 @@

Further Reading -

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

+

© Copyright 2025, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

Built with
Sphinx using a diff --git a/docs/_build/html/1_background/1_5_rd_cdm.html b/docs/_build/html/1_background/1_5_rd_cdm.html old mode 100755 new mode 100644 index 3e7ccdfea..055b1f377 --- a/docs/_build/html/1_background/1_5_rd_cdm.html +++ b/docs/_build/html/1_background/1_5_rd_cdm.html @@ -6,8 +6,8 @@ - RD-CDM — RareLink REDCap Documentation 2.0.2.dev1 documentation - + RD-CDM — RareLink REDCap Documentation 2.0.5 documentation + @@ -15,7 +15,7 @@ - + @@ -36,9 +36,9 @@ - - RareLink REDCap Documentation - + + +
@@ -50,45 +50,163 @@
Built with Sphinx using a diff --git a/docs/_build/html/1_background/1_rd_interoperability.html b/docs/_build/html/1_background/1_rd_interoperability.html deleted file mode 100755 index 7b62669d7..000000000 --- a/docs/_build/html/1_background/1_rd_interoperability.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - - - Rare Diseases and Interoperability — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Rare Diseases and Interoperability

-

Rare diseases (RDs), though individually rare, collectively impact a significant -global population, estimated to exceed 260 million people. These diseases are -often characterised by their genetic origins, with over 70% having a suspected -genetic basis. In Europe, a disease is classified as rare if it affects fewer -than 5 in 10,000 individuals, which highlights the challenge of addressing the -medical needs of over 17 million people across the continent. Despite the large -number of individuals affected, RDs are frequently overlooked in medical -research and care, largely due to the scarcity of available data and resources.

-

Interoperability plays a crucial role in addressing these challenges. It ensures -that clinical data can be shared and understood across systems, which is -especially important in rare disease research. Many healthcare institutions -lack standardized approaches to data collection and storage, which leads to -inconsistencies and makes data exchange difficult. Without the use of -internationally recognized ontologies and coding systems, the data collected -cannot be efficiently reused or analyzed for further research. Interoperability -frameworks, such as RareLink, address this issue by facilitating the seamless -exchange of standardized medical data, thus promoting research and care for -RD patients.

-

RareLink, for example, is an interoperability framework embedded in REDCap, -for RD registries and research. By leveraging international standards such as -HL7 FHIR and GA4GH Phenopackets, RareLink ensures that data collected can be -reused not only locally but also globally. This interoperability allows -researchers to connect with other databases and centers, enhancing the potential -for collaborative research and the development of novel treatments. Furthermore, -the inclusion of ontology codes enables precise bioinformatic analysis, which is -critical given the limited number of patients and data points available in RD -research.

-

Ultimately, the success of rare disease research depends heavily on the ability -to connect and compare data from different sources. The development and -implementation of frameworks like RareLink enable more efficient diagnoses, -research, and treatment options by addressing one of the core issues: -interoperability. By promoting standardized, reusable data, RareLink -provides a foundation for advancements in rare disease care, facilitating a -future where more patients can receive timely diagnoses and access to effective -treatments.

-
-

Tip

-
-
Read section on Rare Diseases in the article:

Why Digital Medicine depends on Interoperability (Lehne M et al., 2019)

-
-
-
-
-

Definitons

-
    -
  • -
    FAIR Data Principles:

    Designed to improve the automated discovery and usability of data by -machines while also facilitating its reuse by individuals -(Findable, Accessible, Interoperable, Reusable).

    -
    -
    -
  • -
  • -
    Interoperability:

    The ability of different systems, applications, or devices to connect and -communicate in a coordinated manner without requiring effort from the end -user.

    -
    -
    -
  • -
  • -
    Syntactic Interoperability:

    The ability of systems to communicate through compatible formats and -protocols, such as JSON files, a format for sharing data in key-value pairs -and arrays, using human-readable text.

    -
    -
    -
  • -
  • -
    Semantic Interoperability:

    Ensures a shared and precise interpretation of medical data. Uniform data -structuring and codification enhance machine-to-machine communication, -improving accuracy and outcomes.

    -
    -
    -
  • -
  • -
    Ontologies:

    Formal and explicit representations of the concepts and relationships within -an area of healthcare designed to facilitate the organisation, integration, -and exchange of knowledge across healthcare systems and applications.

    -
    -
    -
  • -
  • -
    Terminologies:

    Encompass the vocabulary used in all healthcare communication and -documentation aspects, including terms for conditions, procedures, and -equipment, facilitating precise communication and supporting electronic -health information exchange.

    -
    -
    -
  • -
-
-
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/1_background/2_ontologies.html b/docs/_build/html/1_background/2_ontologies.html deleted file mode 100755 index 10d1b1bf9..000000000 --- a/docs/_build/html/1_background/2_ontologies.html +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - - - - Ontologies & Terminologies — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Ontologies & Terminologies

-

RareLink uses a variety of ontologies and terminologies to standardise the -representation of data and facilitate interoperability between different data -sources. These ontologies and terminologies are used to describe the phenotypic -and genotypic features of rare diseases (RDs) and their associated genes, as -well as the relationships between them. The use of standardised vocabularies -ensures that data can be easily integrated and queried across different -databases and platforms.

-
    -
  • -
    Terminology:

    refers to a collection of preferred or officially recognized -terms within a specific domain. In the medical field, one of the most -significant terminologies for information retrieval is the Medical Subject -Headings (MeSH), which serves as a framework for indexing and searching -literature in Medline.

    -
    -
    -
  • -
  • -
    Ontologies:

    …on the other hand, go beyond mere vocabulary. They establish and define -relationships between concepts, enabling computational reasoning and -inference.

    -
    -
    -
  • -
- - -
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/1_background/3_ga4gh_phenopacket_schema.html b/docs/_build/html/1_background/3_ga4gh_phenopacket_schema.html deleted file mode 100755 index efeb5e5e7..000000000 --- a/docs/_build/html/1_background/3_ga4gh_phenopacket_schema.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - - - GA4GH Phenopacket Schema — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

GA4GH Phenopacket Schema

-

The Phenopacket schema, developed by the Global Alliance for Genomics and Health -(GA4GH), is an open standard designed to facilitate the exchange of detailed -phenotypic and genomic data. It is particularly useful for capturing rich -clinical data and complex phenotypes in a structured format, making it ideal -for rare disease (RD) research. The schema enables the precise description of -a patient’s clinical features, genetic information, diagnoses, and disease -progression, all of which are critical for understanding rare diseases. -Phenopackets are widely adopted in bioinformatics pipelines to ensure the -standardization of data across different institutions and studies, enhancing -data reusability and interoperability.

-
-

Tip

-
-
Read the GA4GH Phenopacket Schema Paper here:

The GA4GH Phenopacket schema defines a computable representation of clinical data

-
-
-
-
-

Phenopacket Building Blocks

-

The GA4GH Phenopcaket Schema v2.0:

-GA4GH Phenopacket Schema - -

A Phenopacket characterizes an individual or biosample, linking it to detailed -phenotypic descriptions, genetic information, diagnoses, and treatments, all -structured as building blocks. -These cover topics such as phenotype, medical actions, measurements, variant, -and pedigree, enabling a rich representation of data that can easily integrate -into larger schemas for specific use cases.

-

Central to the Phenopacket schema is the PhenotypicFeature, -which describes various characteristics such as signs, symptoms, and laboratory -findings using ontology, like the Human Phenotype Ontology (HPO). The schema -also allows for the documentation of exclusions, severity, frequency, and onset -of features. Other essential components inclute Measurement, -for capturing data, Biosample, -for biological materials, and MedicalAction, -which includes the hierarchical representation of medical interventions. -The Treatment -element encompasses a range of therapeutic agents, from medications to advanced -therapies. Together, these building blocks create a comprehensive framework for -clinical information.

- -
-
-

Phenopacket Tools

-

Several tools have been developed around the Phenopacket schema, supporting the -collection, analysis, and dissemination of RD data. Tools such as the -Phenopacket validator ensure that data adhere to the schema’s strict standards, -preventing inconsistencies and improving data quality. Additionally, the GA4GH -Beacon network allows researchers to query datasets to find specific genomic -variants associated with phenotypic data encoded in Phenopackets. These tools -have helped to broaden the impact of Phenopackets in RD research by promoting -data accuracy, accessibility, and reusability across multiple platforms and -projects.

-
-
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/1_background/4_hl7_fhir.html b/docs/_build/html/1_background/4_hl7_fhir.html deleted file mode 100755 index 4ef0027bc..000000000 --- a/docs/_build/html/1_background/4_hl7_fhir.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - - - HL7 FHIR (Fast Healthcare Interoperability Resources) — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

HL7 FHIR (Fast Healthcare Interoperability Resources)

-HL7 FHIR Logo - -

FHIR (Fast Healthcare Interoperability Resources) is an international standard -developed by HL7 for exchanging healthcare information electronically. Initially -designed as a transaction format to facilitate data exchanges between healthcare -systems, FHIR provides a flexible and modular framework. While it is essential -for ensuring interoperability across healthcare information systems, its role as -a transaction format means that it may not always provide the precision needed -for complex rare disease (RD) analysis. However, it remains a critical tool for -enabling the smooth exchange of healthcare data between different platforms -and applications.

- -
-

FHIR and Rare Diseases

-

In the context of rare diseases, FHIR plays a key role in improving data sharing -across institutions and research centers. Due to the scarcity and fragmentation -of RD data, standardized data exchange is crucial. FHIR enables the -standardization of clinical and genomic data, ensuring that RD-specific -information, such as phenotypic traits and genetic variants, can be captured and -shared in a structured manner. Despite its limitations in handling the -complexity of some RD data, FHIR’s widespread adoption ensures that RD data can -be integrated with other healthcare information systems, making it easier to -collaborate and share insights across various fields.

-

The International Patient Summary (IPS) -is a FHIR-based standard that aims to -provide a concise, standardized summary of a patient’s key health information. -This summary is designed to facilitate seamless healthcare transitions, -particularly for patients with complex health needs, such as those with rare -diseases. By standardizing data elements such as medications, allergies, and -relevant medical history, the IPS enhances communication between international -healthcare providers. This is especially important for RD patients, as the -inherent data scarcity requires data exchange and research on an international -level - such as by the European Reference Networks (ERNs).

-
-
-

FHIR Overview - Clinicians

-

FHIR (Fast Healthcare Interoperability Resources) facilitates the exchange of -healthcare information, including clinical, administrative, public health, and -research data across various settings, such as in-patient and community care. -It is applicable to both human and veterinary medicine and aims for global -usability.

-

Targeted at software developers and organizations creating interoperable -solutions, FHIR does not prescribe clinical best practices or provide user -interface and workflow guidance, as these are outside its scope. The -specification focuses on the technical aspects of exchanging clinical -information between electronic systems, presenting an overview that prioritizes -relevant content for the clinical community while allowing for deeper -exploration of technical details if desired.

-
-

Tip

- -
-
-
-

FHIR Overview - Developers

-

FHIR (Fast Healthcare Interoperability Resources) is designed to enable -information exchange to support the provision of healthcare in a wide variety -of settings. The specification builds on and adapts modern, widely used RESTful -practices to enable the provision of integrated healthcare across a wide range -of teams and organizations.

-

The intended scope of FHIR is broad, covering human and veterinary, clinical -care, public health, clinical trials, administration and financial aspects. -The standard is intended for global use and in a wide variety of architectures -and scenarios.

-
-

Tip

- -
-
-
-

FHIR Overview - Architects

-

FHIR comprises two main components: Resources and APIs. Resources are -information models that define the essential data elements, constraints, -and relationships relevant to healthcare, analogous to physical models in XML -or JSON. APIs offer well-defined interfaces for application interoperability, -primarily using RESTful methods. Together, they establish a framework for -defining healthcare business objects, such as patients and procedures, -facilitating their computable implementation and sharing through standardized -interfaces.

-

Operationally, HL7 governs the standards development process that determines -the definition and existence of resources. Additionally, FHIR provides -mechanisms to tailor resources for specific contexts, ensuring adaptability -to diverse healthcare needs through Profiling Resources.

-
-

Tip

- -
-
-
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/1_background/5_rd_cdm.html b/docs/_build/html/1_background/5_rd_cdm.html deleted file mode 100755 index ca7dccedd..000000000 --- a/docs/_build/html/1_background/5_rd_cdm.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - - Rare Disease Common Data Model v2.0.2 — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Rare Disease Common Data Model v2.0.2

-
-

Attention

-

The RD CDM v2.0.2 is currently under review and will be published soon.

-
-
-

RD-CDM v2.0.2 Overview

-

The ontology-based Rare Diseases Common Data Model (RD CDM) v2.0 was developed to address -the complexity and variability inherent in rare diseases, which number over -6,000 and often require unique approaches to research and clinical care. This -model is based on the Common Data Elements (CDEs) from the European Rare -Disease Registry Infrastructure (ERDRI-CDS), providing a standardized structure -for data capture and analysis. We expanded on these elements to meet the -needs of international interoperability standards, aligning with both HL7 FHIR -and the GA4GH Phenopacket Schema. The development of this model -involved overcoming challenges such as the lack of standardized terms for -disease characteristics and the need to represent highly variable clinical data -across different rare diseases.

-Overview RD CDM v2.0 - - -
-
-

Key Success Factors of a Rare Disease Common Data Model

-

Developing an RD CDM also requires balancing between complexity and -usability. A successful model must be comprehensive enough to capture the -nuances of each rare disease, yet simple enough to be adopted across various -healthcare systems. One key difficulty is finding a common denominator for the -unique clinical requirements of diverse rare diseases while maintaining -flexibility for future expansions. Additionally, ensuring that the data can be -seamlessly integrated into existing healthcare systems without exceeding the -avaliable resources is also essential. Addressing these complexities, the -RD CDM v2.0 provides a framework that enhances the consistency of rare disease -data, enabling better comparative analysis across research institutions and -healthcare settings. While the RD CDM v2.0 is not a balloted version, it can -serve as a template for future standardization efforts in rare disease research.

-

Key success factors for the RD CDM include its ability to support secondary -uses of data, such as transferring data to central registries or enabling -federated analyses. By adhering to international interoperability standards, the -model ensures that data captured locally can be reused in broader contexts, -such as global research initiatives. This not only improves the efficiency of -rare disease research but also helps preserve the unique aspects of each -condition. The RD CDM’s flexibility allows it to evolve with the growing needs -of the rare disease community.

- -
-
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/1_background/6_redcap.html b/docs/_build/html/1_background/6_redcap.html deleted file mode 100755 index 22028cb3e..000000000 --- a/docs/_build/html/1_background/6_redcap.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - - - REDCap (Research Electronic Data Capture) — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

REDCap (Research Electronic Data Capture)

-
-

Note

-

Read the REDCap Technical Overview HERE -which includes remarks on Best Practices, Dependencies, Infrastrucutre -Requirements, User Privilages, Authentication, Export, Interoperability, and more.

-
-

REDCap (Research Electronic Data Capture) is a web- and survey-based application -designed to capture data and create databases and projects for clinical research -by the Vanderbuilt University. As an open-source tool, REDCap has gained -widespread adoption across university hospitals, research institutes, and other -healthcare institutions due to its flexibility and cost-free availability. One -of the primary advantages of REDCap is its ability to be hosted locally within -the clinical information system of a hospital. This ensures that sensitive data -captured through REDCap remains within the hospital’s infrastructure, enhancing -data privacy and security. Although REDCap provides a highly flexible -environment for data collection, it does not natively define or enforce -standardized variables. This lack of native definitions for variables can lead -to inconsistencies in data capture across different projects and institutions, -potentially hindering data exchange and interoperability.

-
-

Tip

- -
-
-

REDCap Projects

-

The REDCap software and consortium support are available at no charge to non- -profit organisations that join the REDCap consortium. Joining requires -submission of a standard, online license aggreement. Currently the -REDCap consortium has 7,531 active partners in -159 countries.

-

If your local institution is a member of the REDCap consortium, you need to -contact your local REDCap Admin to create a project for you. Be aware, that -there are projects in development and production mode:

-REDCap Project Mode overview -
-

Tip

-

Here you find more explanations on the figure above: -A Comprehensive Guide to REDCap

-
-
-

Attention

-

The development mode is for testing purposes only - no real data should be -collected! Production mode is for real data collection and should be -coordinated with your local REDCap administrator. Read more HERE.

-
-
-
-

REDCap Instruments

-

Within REDCap, data collection is organized into instruments, which are -comprised of fields that capture specific data points. Each instrument can -contain multiple fields, such as text boxes, radio buttons, and dropdown -menus, allowing for the collection of diverse data types. REDCap provides a -wide range of field types to accommodate different data formats, including -text, numeric, date, and file uploads. Additionally, REDCap supports -conditional logic, enabling users to create dynamic forms that adapt based on -previous responses. This feature is particularly useful for complex surveys -and questionnaires, as it allows for a more personalized and streamlined data -collection process.

-
-

Note

-

For more information on REDCap instruments, refer to the REDCap User Guide.

-
-
-
-

REDCap API

-

The REDCap API is an interface that allows external applications to connect to REDCap remotely, and is -used for programmatically retrieving or modifying data or settings within REDCap. This includes -performing automated data imports/exports from a specified REDCap project, importing/exporting a -project’s metadata (i.e. data dictionary), events. This is even an API method for creating whole new -projects. The API is a built-in feature of REDCap, so no installation is required. The REDCap API -implements the use of tokens as a means of authenticating and validating all API requests that are -received. Similar to the Data Import Tool in REDCap’s web interface, the API also implements data -validation when the API is used for data import purposes in order to ensure that only valid data gets -stored. The API provides a very efficient way to move data either to or from another system easily.

-
-

Tip

-

For more information on the REDCap API and activatation: REDCap API User Guide.

-
-
-
-

REDCap Ontology Services

-

Natively, REDCap can be considered a text-based data capture tool, as all -variables and vale sets can be defined as free text. However, to enhance -interoperability and data quality, REDCap can be integrated with ontology -services, such as integrating the ontology server BioPortal. -This allows users to define variables and value sets using standard -ontologies, such as the Human Phenotype Ontology (HPO), the Logical Observation -Identifiers Names and Codes (LOINC), or the Systematized Nomenclature of -Medicine (SNOMED).

-
-

Tip

-

For more information on the integration of BioPortal with REDCap, read HERE.

-
-
-
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/1_background/6_redcap_rarelink.html b/docs/_build/html/1_background/6_redcap_rarelink.html deleted file mode 100755 index 788bdff0e..000000000 --- a/docs/_build/html/1_background/6_redcap_rarelink.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - REDCap — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

REDCap

-

REDCap (Research Electronic Data Capture) is a web- and survey-based application -designed to capture data and create databases and projects for clinical research -by the Vanderbuilt University. As an open-source tool, REDCap has gained -widespread adoption across university hospitals, research institutes, and other -healthcare institutions due to its flexibility and cost-free availability. One -of the primary advantages of REDCap is its ability to be hosted locally within -the clinical information system of a hospital. This ensures that sensitive data -captured through REDCap remains within the hospital’s infrastructure, enhancing -data privacy and security.

-

Although REDCap provides a highly flexible environment for data collection, it -does not natively define or enforce standardized variables. This lack of native -definitions for variables can lead to inconsistencies in data capture across -different projects and institutions, potentially hindering data exchange and -interoperability. To address these issues, a wide range of modules and add-ons -have been designed and developed, allowing users to extend REDCap’s -functionality and tailor it to specific research needs. The REDCap API also -allows for seamless integration with external systems, enabling automated data -transfers and further enhancing the platform’s utility in research environments.

-

RareLink maximizes the utility of REDCap by providing a comprehensive framework -designed specifically for rare disease (RD) research and care. At the core of -RareLink is the Rare Disease Common Data Model (RD CDM), which integrates -pre-configured REDCap sheets, instruments, and project setups. This framework -ensures that data capture is both consistent and compliant with international -standards, such as HL7 FHIR and GA4GH Phenopackets, without the need for -additional coding or mapping. As a result, RareLink allows researchers and -clinicians to collect and process rare disease data seamlessly within the REDCap -environment.

-

By embedding standardized data collection instruments and native data processing -pipelines, RareLink addresses one of the primary limitations of REDCap—its lack -of native variable definitions. With RareLink, data can be captured, processed, -and exported in interoperable formats suitable for rare disease registries and -healthcare information systems. The integration of FHIR resources and -Phenopackets enables rare disease data to be shared across institutions, -facilitating collaboration and improving the potential for meaningful research -and clinical advancements in RD care.

-

RareLink enhances the functionality of REDCap by transforming it into a powerful -tool for rare disease data management. By leveraging the REDCap API and built-in -tools, RareLink ensures that the data captured in REDCap can be seamlessly -integrated into broader research ecosystems, maximizing its utility and -interoperability for rare disease research and patient care.

-
-

Further Reading

- -
-
- - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/2_rarelink/0_rarelink_file.html b/docs/_build/html/2_rarelink/0_rarelink_file.html deleted file mode 100755 index c35f3f3b8..000000000 --- a/docs/_build/html/2_rarelink/0_rarelink_file.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - 2. RareLink — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- - - - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/2_rarelink/1_rarelink_core.html b/docs/_build/html/2_rarelink/1_rarelink_core.html deleted file mode 100755 index 0c322667d..000000000 --- a/docs/_build/html/2_rarelink/1_rarelink_core.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - 2.1. RareLink Core — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- - - - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/2_rarelink/2_rarelink_cdm_instruments.html b/docs/_build/html/2_rarelink/2_rarelink_cdm_instruments.html deleted file mode 100755 index 3f7d87ca3..000000000 --- a/docs/_build/html/2_rarelink/2_rarelink_cdm_instruments.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - 2.2. RareLink CDM Instruments — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- - - - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/2_rarelink/3_rarelink_core_redcap_project.html b/docs/_build/html/2_rarelink/3_rarelink_core_redcap_project.html deleted file mode 100755 index e59294dad..000000000 --- a/docs/_build/html/2_rarelink/3_rarelink_core_redcap_project.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - 2.3. RareLink Core REDCap Project — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- - - - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/2_rarelink/3_rarelink_redcap_project.html b/docs/_build/html/2_rarelink/3_rarelink_redcap_project.html deleted file mode 100755 index 75d91d114..000000000 --- a/docs/_build/html/2_rarelink/3_rarelink_redcap_project.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - RareLink Core REDCap Project — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- - - - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/2_rarelink_framework/0_rarelink_file.html b/docs/_build/html/2_rarelink_framework/0_rarelink_file.html deleted file mode 100755 index b4713757e..000000000 --- a/docs/_build/html/2_rarelink_framework/0_rarelink_file.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - 2. RareLink Framework — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- - - - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/2_rarelink_framework/1_rarelink_core.html b/docs/_build/html/2_rarelink_framework/1_rarelink_core.html deleted file mode 100755 index 0f1b925c1..000000000 --- a/docs/_build/html/2_rarelink_framework/1_rarelink_core.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - 2.1. RareLink Core — rarelink 0.0.1 documentation - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- - - - -
-
-
- -
- -
-

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_build/html/2_rarelink_framework/2_0_rarelink_file.html b/docs/_build/html/2_rarelink_framework/2_0_rarelink_file.html old mode 100755 new mode 100644 index 806427ea5..5b817f826 --- a/docs/_build/html/2_rarelink_framework/2_0_rarelink_file.html +++ b/docs/_build/html/2_rarelink_framework/2_0_rarelink_file.html @@ -6,8 +6,8 @@ - RareLink Framework — RareLink REDCap Documentation 2.0.2.dev1 documentation - + RareLink Framework — RareLink REDCap Documentation 2.0.5 documentation + @@ -15,7 +15,7 @@ - + @@ -34,9 +34,9 @@ - - RareLink REDCap Documentation - + + +
@@ -48,40 +48,163 @@
@@ -187,32 +321,51 @@

Local REDCap Project Setup and API

Continue here…


+ @@ -252,7 +408,7 @@

RareLink & Phenopackets -

© Copyright 2024, Berlin Institute of Health, Charité Universitätsmedizin Berlin.

+

© Copyright 2025, Berlin Institute of Health - Charité Universitätsmedizin Berlin.

Built with
Sphinx using a diff --git a/docs/_build/html/2_rarelink_framework/2_2_rarelink_cdm.html b/docs/_build/html/2_rarelink_framework/2_2_rarelink_cdm.html index a04853664..c6a011ac0 100644 --- a/docs/_build/html/2_rarelink_framework/2_2_rarelink_cdm.html +++ b/docs/_build/html/2_rarelink_framework/2_2_rarelink_cdm.html @@ -6,8 +6,8 @@ - RareLink-CDM — RareLink REDCap Documentation 2.0.2.dev1 documentation - + RareLink-CDM — RareLink REDCap Documentation 2.0.5 documentation + @@ -15,7 +15,7 @@ - + @@ -36,9 +36,9 @@ - - RareLink REDCap Documentation - + + +
@@ -50,16 +50,51 @@
-

Return to Top.

+

Return to top.


@@ -184,7 +294,7 @@

… Next steps -
  • Here you can view the LinkML schema of the RareLink-CDM v2.0.2.

  • +
  • Here you can view the LinkML schema of the RareLink-CDM.

  • Usage

    @@ -194,18 +304,18 @@

    Usage

    When running rarelink redcap export-records you will see, that the data from the REDCap project is automatically processed to the LinkML presentation of the RareLink-CDM and validated against it. This ensures the data is ready -to Generate Phenopackets.

    +to Phenopackets Module.

  • Within the data model itself, we use its python classes and properties automatically generated by LinkML schema to ensure consistent use of code systems, versions and codes within one RareLink-CDM version and its mappings.

  • Since our RareLink-CDM is modeled and defined with LinkML, we can make use of the LinkML Schema Automator -for Semi-Automatic Data Capture from existing (tabular) databases. This allows import it into -a REDCap project and allow you to Generate Phenopackets or Generate FHIR Resources.

  • +for Semi-Automatic Import from existing (tabular) databases. This allows import it into +a REDCap project and allows you to Phenopackets Module or FHIR Module.

    - +
    +

    For more advanced use cases, you can use the PhenopacketMappingFactory to create +mappings for different data models:

    +
    from rarelink.phenopackets.factory import PhenopacketMappingFactory, get_phenopacket_mappings
    +
    +# Get mappings for RareLink CDM (default)
    +rarelink_mappings = get_phenopacket_mappings()
    +
    +# Get mappings for a custom data model
    +custom_mappings = get_phenopacket_mappings(model_name="your_model")
    +
    +# Creating phenopackets with specific model mappings
    +from rarelink.phenopackets import create_phenopacket
    +
    +# Create phenopacket using the specified mappings
    +phenopacket = create_phenopacket(
    +    data=record_data,
    +    created_by="Your Name",
    +    mapping_configs=custom_mappings
    +)
    +
    +
    +

    The factory approach provides additional helper functions for working with different +data models:

    +
      +
    1. Converting to Multi-Instrument Format

      +
      updated_config = PhenopacketMappingFactory.convert_to_multi_instrument_format(
      +    config=mappings,
      +    block_name="phenotypicFeatures"
      +)
      +
      +
      +
    2. +
    3. Merging Configurations

      +
      merged_config = PhenopacketMappingFactory.merge_configurations(
      +    base_config=base_mappings,
      +    override_config=custom_overrides
      +)
      +
      +
      +
    4. +
    +
    +

    Common issues and their solutions:

    +
      +
    1. No phenotypic features or diseases are generated

      +
        +
      • Check that the instrument names in your mapping configuration match the actual +instrument names in your data

      • +
      • Verify that the field paths in your mapping block point to the correct fields

      • +
      • Enable debug mode (--debug) for more detailed logs

      • +
      +
    2. +
    3. Field values not found

      +
        +
      • For RareLink CDM, remember that data is in a field named differently from the +instrument (e.g., “rarelink_5_disease” instrument has data in “disease” field)

      • +
      • For CIEINR-like models, data is in a field with the same name as the instrument

      • +
      +
    4. +
    5. Multi-onset features not working

      +
        +
      • Ensure “multi_onset” is set to True in your configuration

      • +
      • Verify that “onset_date_fields” contains the correct field names

      • +
      • Check that the date fields contain valid date values

      • +
      +
    6. +
    7. Error: “No mapping found for name”

      +
        +
      • Ensure your mapping dictionaries include the requested mapping name

      • +
      • Verify that the get_mapping_by_name function is properly implemented

      • +
      +
    8. +
    9. Timeout errors

      +
        +
      • Increase the timeout value with --timeout 7200 or higher

      • +
      • Process fewer records at a time

      • +
      +
    10. +
    11. Missing labels for codes

      +
        +
      • Add the codes to your label dictionaries

      • +
      • Check BIOPORTAL API access if using external label lookups

      • +
      +
    12. +
    @@ -368,14 +944,14 @@

    Overview