Receiving Observations

Types of observations

Luscii can generate several types of Observations:

  1. Measurement: the most common type, generated when the patient sends in a measurement. It contains the measured value and an identifier to interpret what kind of measurement it is. An Observation can consist of multiple components, for example in case of a Blood Pressure measurement there is a Systolic and a Diastolic component.
  2. Calculation: A calculation is an observation that takes one or more incoming measurements and use them to calculate a new value. A common example is BMI, which is calculated from length and weight measurements.
  3. Note: measurement observations may contain notes left by the patient taking the measurement. The note is a free text field for the patient to provide extra context with the measurement.
  4. Inactivity: Luscii can generate inactivity observations when a patient does not follow the scheduled actions. Luscii Programs can be configured to also generate an alert (Flag) for such observations. When no Flag is generated it can be assumed that the clinicians are not interested in this observation. Hence, in most cases the observation can be safely ignored, and only the Flag is relevant.
POST /luscii/measurements HTTP/1.1
Host: www.yourserver.com
Connection: close
Content-Type: application/fhir+xml
Content-Length: 123
Authorization: your-api-token
User-Agent: GuzzleHttp/6.3.3 curl/7.52.1 PHP/7.3.6
X-Webhook-Signature: 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

<?xml version="1.0" encoding="UTF-8"?>
<Observation xmlns="http://hl7.org/fhir">
    <id value="4de1543c-5d9a-4d11-bfea-41cd1c443545"/>
    <meta>
        <tag>
            <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
            <code value="ObservationCreated"/>
        </tag>
    </meta>
    <identifier>
        <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
        <value value="4de1543c-5d9a-4d11-bfea-41cd1c443545"/>
    </identifier>
    <status value="final"/>
    <code>
        <coding>
            <system value="http://snomed.info/sct"/>
            <code value="75367002"/>
            <display value="Blood pressure"/>
        </coding>
        <coding>
            <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
            <code value="legacy|blp"/>
            <display value="Blood pressure (legacy)"/>
        </coding>
    </code>
    <subject>
        <identifier>
            <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
            <value value="0a0e9381-1bc2-4965-90b2-4dad0a26f3a9"/>
        </identifier>
    </subject>
    <effectiveDateTime value="2019-03-04T10:56:01+01:00"/>
    <component>
        <code>
            <coding>
                <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
                <code value="legacy|sys"/>
                <display value="Systolic bloodpressure (legacy)"/>
            </coding>
            <coding>
                <system value="http://snomed.info/sct"/>
                <code value="72313002"/>
                <display value="Systolic blood pressure"/>
            </coding>
        </code>
        <valueQuantity>
            <value value="120"/>
        </valueQuantity>
    </component>
    <component>
        <code>
            <coding>
                <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
                <code value="legacy|dia"/>
                <display value="Diastolic bloodpressure (legacy)"/>
            </coding>
            <coding>
                <system value="http://snomed.info/sct"/>
                <code value="271650006"/>
                <display value="Diastolic blood pressure"/>
            </coding>
        </code>
        <valueQuantity>
            <value value="80"/>
        </valueQuantity>
    </component>
</Observation>
POST /luscii/measurements HTTP/1.1
Host: www.yourserver.com
Connection: close
Content-Type: application/fhir+xml
Content-Length: 123
Authorization: your-api-token
User-Agent: GuzzleHttp/6.3.3 curl/7.52.1 PHP/7.3.6
X-Webhook-Signature: 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

<?xml version="1.0" encoding="UTF-8"?>
<Observation xmlns="http://hl7.org/fhir">
    <id value="1988bc64-4db3-4658-80be-27fa86f14c5e"/>
    <meta>
        <tag>
            <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
            <code value="ObservationCreated"/>
        </tag>
    </meta>
    <identifier>
        <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
        <value value="1988bc64-4db3-4658-80be-27fa86f14c5e"/>
    </identifier>
    <status value="final"/>
    <code>
        <coding>
            <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
            <code value="instrument_id|9c67ce24-b0a5-442d-9a51-fdebf1b36549"/>
            <display value="Body mass index"/>
        </coding>
        <coding>
            <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
            <code value="instrument_version|c5659e43-2570-41fd-80b1-b6deab62f2e7"/>
            <display value="Body mass index"/>
        </coding>
    </code>
    <subject>
        <identifier>
            <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
            <value value="0a0e9381-1bc2-4965-90b2-4dad0a26f3a9"/>
        </identifier>
    </subject>
    <effectiveDateTime value="2019-03-04T10:56:01+01:00"/>
    <component>
        <code>
            <coding>
                <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
                <code value="item_id|d1f48c60-66fb-4a8b-bd9c-e96734463d1c"/>
                <display value="Body mass index"/>
            </coding>
            <coding>
                <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
                <code value="item_version|c3a0a7b5-c06f-4bb5-adab-35a8dce79877"/>
                <display value="Body mass index"/>
            </coding>
        </code>
        <valueQuantity>
            <value value="25"/>
        </valueQuantity>
    </component>
</Observation>
POST /luscii/measurements HTTP/1.1
Host: www.yourserver.com
Connection: close
Content-Type: application/fhir+xml
Content-Length: 123
Authorization: your-api-token
User-Agent: GuzzleHttp/6.3.3 curl/7.52.1 PHP/7.3.6
X-Webhook-Signature: 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

<?xml version="1.0" encoding="UTF-8"?>
<Observation xmlns="http://hl7.org/fhir">
    <id value="4de1543c-5d9a-4d11-bfea-41cd1c443545"/>
    <meta>
        <tag>
            <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
            <code value="ObservationCreated"/>
        </tag>
    </meta>
    <identifier>
        <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
        <value value="4de1543c-5d9a-4d11-bfea-41cd1c443545"/>
    </identifier>
    <status value="final"/>
    <code>
        <coding>
            <system value="http://snomed.info/sct"/>
            <code value="726527001"/>
            <display value="Weight"/>
        </coding>
        <coding>
            <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
            <code value="legacy|wgt"/>
            <display value="Weight (legacy)"/>
        </coding>
    </code>
    <subject>
        <identifier>
            <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
            <value value="0a0e9381-1bc2-4965-90b2-4dad0a26f3a9"/>
        </identifier>
    </subject>
    <effectiveDateTime value="2019-03-04T10:56:01+01:00"/>
    <dataAbsentReason>
        <coding>
            <system value="http://terminology.hl7.org/CodeSystem/data-absent-reason"/>
            <code value="not-performed"/>
        </coding>
    </dataAbsentReason>
    <note>
        <text value="This is a sample note added by the patient"/>
    </note>
</Observation>
POST /luscii/measurements HTTP/1.1
Host: www.yourserver.com
Connection: close
Content-Type: application/fhir+xml
Content-Length: 123
Authorization: your-api-token
User-Agent: GuzzleHttp/6.3.3 curl/7.52.1 PHP/7.3.6
X-Webhook-Signature: 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

<?xml version="1.0" encoding="UTF-8"?>
<Observation xmlns="http://hl7.org/fhir">
    <id value="4de1543c-5d9a-4d11-bfea-41cd1c443545"/>
    <meta>
        <tag>
            <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
            <code value="ObservationCreated"/>
        </tag>
    </meta>
    <identifier>
        <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
        <value value="4de1543c-5d9a-4d11-bfea-41cd1c443545"/>
    </identifier>
    <status value="final"/>
    <code>
        <coding>
            <system value="http://snomed.info/sct"/>
            <code value="423986002"/>
            <display value="Does not follow recommended medication schedule"/>
        </coding>
    </code>
    <subject>
        <identifier>
            <system value="urn:oid:2.16.840.1.113883.2.4.3.135"/>
            <value value="0a0e9381-1bc2-4965-90b2-4dad0a26f3a9"/>
        </identifier>
    </subject>
    <effectiveDateTime value="2019-03-04T10:56:01+01:00"/>
    <dataAbsentReason>
        <coding>
            <system value="http://terminology.hl7.org/CodeSystem/data-absent-reason"/>
            <code value="unknown"/>
        </coding>
    </dataAbsentReason>
</Observation>

Please note:

  • Actual message may or may not contain newlines and indentation.
  • The resource may be expanded with additional attributes in the future.
  • The meta tag indicates what event happened precisely for this resource.
  • The subject identifier is Luscii's patient uuid.

Identifying the type of observation

Observations contain a <code> to identify the type of measurement or observation they represented. We use different systems for this:

SystemExampleDisplayExplanation
urn:oid:2.16.840.1.113883.2.4.3.135legacy|sysSystolic bloodpressureLegacy - should not occur anymore
http://snomed.info/sct271650006Diastolic blood pressureWe use the Snomed CTsystem where we can
urn:oid:2.16.840.1.113883.2.4.3.135instrument_id|9c67ce24-b0a5-442d-9a51-fdebf1b36549Body Mass IndexA Luscii specific internal identifier if there is no Snomed CT code configured for the instrument