Indivo Data Model: LabResult

Model Definition

As SDML:

{
    "__modelname__": "LabResult",
    "date": "Date"
    "abnormal_interpretation": "CodedValue",
    "accession_number": "String",
    "name": "CodedValue",
    "status": "CodedValue",
    "narrative_result": "String",
    "notes": "String",
    "quantitative_result": "QuantitativeResult"
}

As a Django Model Class:

from indivo.models import Fact
from django.db import models
from indivo.fields import CodedValueField, QuantitativeResultField

class LabResult(Fact):
    date = models.DateTimeField(null=True)
    abnormal_interpretation = CodedValueField()
    accession_number = models.CharField(max_length=255, null=True)
    name = CodedValueField()
    status = CodedValueField()
    narrative_result = models.CharField(max_length=255, null=True)
    notes = models.CharField(max_length=600, null=True)
    quantitative_result = QuantitativeResultField()
    lab_panel = models.ForeignKey('LabPanel', null=True, related_name='lab_results')

Examples

As SDMJ:

{
    "__modelname__": "LabResult",
    "date": "2009-05-16T12:00:00Z",
    
    "abnormal_interpretation_title": "Normal",
    "abnormal_interpretation_system": "http"://smartplatforms.org/terms/codes/LabResultInterpretation#",
    "abnormal_interpretation_identifier": "normal",

    "accession_number": "AC09205823577",

        "name_title": "Serum Sodium",
    "name_code_title": "Serum Sodium",
    "name_code_system": "http"://purl.bioontology.org/ontology/LNC/",
    "name_code_identifier": "2951-2",

    "status_code_title": "Final results": complete and verified",
    "status_code_system": "http"://smartplatforms.org/terms/codes/LabStatus#",
    "status_code_identifier": "final",

    "notes": "Blood sample appears to have hemolyzed",

    "quantitative_result_non_critical_range_max_value": "155",
    "quantitative_result_non_critical_range_max_unit": "mEq/L",
    "quantitative_result_non_critical_range_min_value": "120",
    "quantitative_result_non_critical_range_min_unit": "mEq/L",

    "quantitative_result_normal_range_max_value": "145",
    "quantitative_result_normal_range_max_unit": "mEq/L",
    "quantitative_result_normal_range_min_value": "135",
    "quantitative_result_normal_range_min_unit": "mEq/L",

    "quantitative_result_value_value": "140", 
    "quantitative_result_value_unit": "mEq/L"
}


As SDMX:

<Models xmlns="http://indivo.org/vocab/xml/documents#">
  <Model name="LabResult">
    <Field name="date">2009-05-16T12:00:00Z</Field>
    
    <Field name="abnormal_interpretation_code_title">Normal</Field>
    <Field name="abnormal_interpretation_code_system">http://smartplatforms.org/terms/codes/LabResultInterpretation#</Field>
    <Field name="abnormal_interpretation_code_identifier">normal</Field>

    <Field name="accession_number">AC09205823577</Field>

        <Field name="name_title">Serum Sodium</Field>
    <Field name="name_code_title">Serum Sodium</Field>
    <Field name="name_code_system">http://purl.bioontology.org/ontology/LNC/</Field>
    <Field name="name_code_identifier">2951-2</Field>

    <Field name="status_code_title">Final results: complete and verified</Field>
    <Field name="status_code_system">http://smartplatforms.org/terms/codes/LabStatus#</Field>
    <Field name="status_code_identifier">final</Field>

    <Field name="notes">Blood sample appears to have hemolyzed</Field>

    <Field name="quantitative_result_non_critical_range_max_value">155</Field>
    <Field name="quantitative_result_non_critical_range_max_unit">mEq/L</Field>
    <Field name="quantitative_result_non_critical_range_min_value">120</Field>
    <Field name="quantitative_result_non_critical_range_min_unit">mEq/L</Field>

    <Field name="quantitative_result_normal_range_max_value">145</Field>
    <Field name="quantitative_result_normal_range_max_unit">mEq/L</Field>
    <Field name="quantitative_result_normal_range_min_value">135</Field>
    <Field name="quantitative_result_normal_range_min_unit">mEq/L</Field>

    <Field name="quantitative_result_value_value">140</Field> 
    <Field name="quantitative_result_value_unit">mEq/L</Field>
  </Model>
</Models>


As a Fact object:

from indivo.models import LabResult
from indivo.lib.iso8601 import parse_iso8601_datetime as date

lab_fact = LabResult(
    date=date("2009-05-16T12:00:00Z"),
    
    abnormal_interpretation_code_title="Normal",
    abnormal_interpretation_code_system="http://smartplatforms.org/terms/codes/LabResultInterpretation#",
    abnormal_interpretation_code_identifier="normal",

    accession_number="AC09205823577",

    name_title="Serum Sodium",
    name_code_title="Serum Sodium",
    name_code_system="http://purl.bioontology.org/ontology/LNC/",
    name_code_identifier="2951-2",

    status_code_title="Final results: complete and verified",
    status_code_system="http://smartplatforms.org/terms/codes/LabStatus#",
    status_code_identifier="final",

    notes="Blood sample appears to have hemolyzed",

    quantitative_result_non_critical_range_max_value="155",
    quantitative_result_non_critical_range_max_unit="mEq/L",
    quantitative_result_non_critical_range_min_value="120",
    quantitative_result_non_critical_range_min_unit="mEq/L",

    quantitative_result_normal_range_max_value="145",
    quantitative_result_normal_range_max_unit="mEq/L",
    quantitative_result_normal_range_min_value="135",
    quantitative_result_normal_range_min_unit="mEq/L",

    quantitative_result_value_value="140", 
    quantitative_result_value_unit="mEq/L"
    )