MIABIS on FHIR Implementation Guide
1.0.0 - CI Build
MIABIS on FHIR Implementation Guide - Local Development build (v1.0.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
FHIR stores are databases optimized for storing and managing FHIR resources. They provide a RESTful API for creating, reading, updating, and deleting structured healthcare and research data.
MIABIS on FHIR profiles are designed to work with any FHIR-compliant store. However, we recommend using the Blaze FHIR Store due to its performance in federated research environments.
FHIR stores expose a REST API that allows interaction with FHIR resources using standard HTTP methods. You can use POST, GET, PUT and DELETE to manage data.
Example:
POST /fhir/Patient HTTP/1.1
Host: fhir.example.com
Content-Type: application/fhir+json
Authorization: Bearer <access_token>
{
"resourceType": "Patient",
"id": "example-patient-id",
"name": [
{
"use": "official",
"family": "Doe",
"given": ["John"]
}
],
"gender": "male",
"birthDate": "1980-01-01"
}
You can use FHIR validation tools like:
Example Validation Request:
# Run FHIR Validator over CLI with a file to validate (e.g., Patient resource)
java -jar fhir-validator.jar -input file:/path/to/your/resource-file.json
This JSON:
{
"sampleId": "sampleId",
"sampleCollectionId": "bbmri:exampleID",
"sampleType": "BuffyCoat",
"patientId": "example-patient-id",
"collectedDate": "2011-04-05T13:00:00Z",
"storageTemperature": "RT",
"usageRestriction": "This is a restriction of sample usage"
}
Would map to:
"resourceType" : "Specimen",
"id" : "example",
"meta" : {
"profile" : [
🔗 "https://fhir.bbmri-eric.eu/StructureDefinition/miabis-sample"
]
},
"text" : {
"status" : "extensions",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: Specimen example</b></p><a name=\"example\"> </a><a name=\"hcexample\"> </a><a name=\"example-en-US\"> </a><div style=\"display: inline-block; background-color: #d9e0e7; padding: 6px; margin: 4px; border: 1px solid #8da1b4; border-radius: 5px; line-height: 60%\"><p style=\"margin-bottom: 0px\"/><p style=\"margin-bottom: 0px\">Profile: <a href=\"StructureDefinition-miabis-sample.html\">Sample</a></p></div><p><b>Sample Collection</b>: <code>https://directory.bbmri-eric.eu/</code>/bbmri:exampleID</p><p><b>identifier</b>: sampleId</p><p><b>type</b>: <span title=\"Codes:{https://fhir.bbmri-eric.eu/CodeSystem/miabis-detailed-samply-type-cs BuffyCoat}\">Buffy coat</span></p><p><b>subject</b>: <a href=\"Patient-example.html\">Anonymous Patient Male, DoB: 1980-01-01 ( donorId)</a></p><h3>Collections</h3><table class=\"grid\"><tr><td style=\"display: none\">-</td><td><b>Collected[x]</b></td></tr><tr><td style=\"display: none\">*</td><td>2011-04-05 13:00:00+0000</td></tr></table><h3>Processings</h3><table class=\"grid\"><tr><td style=\"display: none\">-</td><td><b>Extension</b></td></tr><tr><td style=\"display: none\">*</td><td/></tr></table><p><b>note</b>: This is a restriction of sample usage</p></div>"
},
"extension" : [
{
"url" : "https://fhir.bbmri-eric.eu/StructureDefinition/miabis-sample-collection-extension",
"valueIdentifier" : {
"system" : "https://directory.bbmri-eric.eu/",
"value" : "bbmri:exampleID"
}
}
],
"identifier" : [
{
"value" : "sampleId"
}
],
"type" : {
"coding" : [
{
"system" : "https://fhir.bbmri-eric.eu/CodeSystem/miabis-detailed-samply-type-cs",
"code" : "BuffyCoat"
}
]
},
"subject" : {
🔗 "reference" : "Patient/example"
},
"collection" : {
"collectedDateTime" : "2011-04-05T13:00:00Z"
},
"processing" : [
{
"extension" : [
{
"url" : "https://fhir.bbmri-eric.eu/StructureDefinition/miabis-sample-storage-temperature-extension",
"valueCodeableConcept" : {
"coding" : [
{
"system" : "https://fhir.bbmri-eric.eu/CodeSystem/miabis-storage-temperature-cs",
"code" : "RT"
}
]
}
}
]
}
],
"note" : [
{
"text" : "This is a restriction of sample usage"
}
]
}
More examples for individual Resources can be found on pages for respective profiles.
FHIR allows extensions to represent additional data while maintaining compatibility with standard profiles. If your data includes fields not covered by MIABIS, consider using FHIR extensions or custom profiles to capture the missing attributes.
FHIR supports various search parameters that allow querying data efficiently. You can filter based on specific attributes, retrieve linked resources, and apply advanced query mechanisms.
Example Query:
GET /fhir/Patient?name=family:doe HTTP/1.1
Host: fhir.example.com
Authorization: Bearer <access_token>
CQL (Clinical Quality Language) is a standardized, human-readable language designed to express clinical logic and quality measures. In the context of MIABIS on FHIR, CQL can be used to define rules for the interpretation and validation of data within biobank resources.
CQL can be used to query, validate, and enforce data consistency across FHIR resources. For example, it could be used to check if a Specimen
resource meets the necessary criteria (such as proper sample collection dates or valid specimen types) before it is added to a FHIR store.
It can also define complex relationships between resources, ensuring that biobank data is consistent and adheres to predefined rules.
In MIABIS on FHIR, CQL can help automate the validation of FHIR-based biobank data against MIABIS profiles, ensuring that resources are compatible with both the MIABIS model and other interoperable systems that use FHIR.
For more information on CQL and how to implement it, refer to FHIR CQL Documentation.
For questions, feedback, or technical assistance, you can: