Category Archives: Question

Question: v2 network device information

Question:

I am looking for HL7 messages by which I can identify the vendor and type of devices I have in my network (e.g. Medlink – Xray, Alaris – IV pump). Are there specific messages I should be looking at to achieve this? Are the PRT segment and OBX-18 the relevant sources of information?

Answer:

HL7 V2 does not have a specific message to just identify which devices are on the network.  All messages where devices are referenced are about something else where the device plays a role.

Now, if you want to stretch HL7 V2, one could consider an ORU message with an OBR reflecting the “network device connection” report and then one or OBX segments with one or more PRT segments where OBX describes the observed device at a particular address with status.  Or however the report needs to be structured.

But aren’t there other standards/structures that can help discover connected devices on a network and report on them?  Depends on the use case probably what makes most sense, but HL7 V2 seems a stretch.

h/t Hans Buitendijk (co-chair, OO) for the answer

 

Question: #FHIR Terminology services

Question:

Do you know if there is an HL7  official list of vendors supporting the HL7 FIHR terminology service?
Also, are there any plans to certify HL7 FHIR terminology services?

Answer:

There’s no official list. The nearest we get to maintaining a list was in this wiki page, but the specific list seems to have fallen off. So here’s my list:

  • Ontoserver – official terminology service for Australia. Looks like it;s on the path to being adopted in other countries as well
  • Apelon DTS – open source, and a full blown terminology service that is filling out their FHIR API
  • Art-Decor – provides FHIR API to the content in art-decor
  • Terminz – focused on providing terminology services in NZ
  • VSAC – provides some FHIR terminology services for the value sets already in VSAC
  • HAPI – provides some terminology services but I’m not sure how complete and tested this is
  • FHIRServer (my server)

Of these, I believe that the most thoroughly tested (at least on the FHIR API side) are Ontoserver and my server. My server runs tx.fhir.org which provides terminology services across the public FHIR community, but needs a lot of work to turn into a general purpose server. Ontoserver is a general purpose server and is very thoroughly tested through the Australian NCTS process.

We’ve talked about certifying terminology services, and we’re getting to the point of stability where it’s time to do that. HL7 hasn’t done that before, and we don’t know whether we should, or IHE should. But IHE hasn’t done testing on specifications they don’t own before, and the terminology service vendors haven’t decided whether they see a market advantage in certification yet (and how much certification $$ is viable) – so it’s basically an open question right now.

 

Question: Where’s the Fax Number?

Question:

Where Can I found Fax number in PID Segment?

Answer:

If you look at a standard display of the fields in the PID segment (this one, or this one), there’s no fax number, just home and work phone numbers … in spite of the healthcare system being obsessed with faxing. So where is it? (and, while we’re at it, there’s no field for email either…)

Well, HL7 finally did something about this in v2.7, in 2011:

PID-40 Patient Telecommunication Information (XTN)

This field contains the patient’s personal telecommunication contact information. This field replaces PID-13 – Phone Number – Home and PID-14 – Phone Number – Business with the intention that the components of the XTN data type be used to identify phone usage (Telecommunication use code) and type of equipment (telecommunication equipment type). Jointly, these components will describe the nature of the telecommunication data contained in this field

The important thing about this is XTN component 3 which carries one of these codes:

  • PH Telephone
  • FX Fax
  • MD Modem
  • CP Cellular or Mobile Phone
  • SAT Satellite Phone
  • BP Beeper
  • Internet Internet Address
  • X.400 X.400 email address
  • TDD Telecommunications Device for the Deaf
  • TTY Teletypewriter

Actually some of those show their age… but records are forever, and healthcare institutions have records going back a long way.

Yay for faxing

Aside: healthcare is well known for reliance on faxing, and not only the fax protocol, but on physical paper based faxing. A lot of the commentary about healthcare’s reliance on faxing misses the second point, and I think it matters.

See, most of the discussion about fixing the dependency on faxing relates to replacing the fax protocol with some kind of digital transfer protocol. but you can do that with faxing right now – it’s just a protocol, and any healthcare institution can replace the physical fax with a network fax receiver and start handling PDFs. Yes, digital protocols can make that even better by transferring some processible information like patient identifiers. Which matters, maybe, if there is shared patient identifiers. but even when there is, you still routinely see photos of stacks of papers produced by faxing… when there’s no protocol related reason for that to happen. I presume that there’s some deeper resistance to handling information electronically.

So I think that the problems are deeper than a protocol replacement – mainly a mix of technology policy & acceptance problems, and that paper faxing got grandfathered in before security started getting tight – and the fact that faxing paper doesn’t scale well is a feature in that respect. Change don’t come easy…

Question: LOINC code for smoking start date

Question:

My team is currently working with FHIR DSTU2, and part of the project that we are working on requires  SMOKING information, particularly the date the patient started smoking.  Part of this work is also mapping this particular information to LOINC, and basically our issue is that we are unable to find anything that refers to a patient’s smoking start date in LOINC.  What would be your suggested work around for the above?

We did find quit date, which good – just not start date.

Answer:

Well, there’s no LOINC code to match 74010-0 (Date quit tobacco smoking). So the best option is to make up your own code, and propose that LOINC add a matching code, then change to use that once that’s done.

You can propose new LOINC codes here: https://loinc.org/submissions/

Question: HL7 v2 referrals in Australia

Question:

It seems there are lots of different ways to format a letter type message in Australian Health IT

  1. Pretend its a path report and use ORU with the appropriate LOINC code. This seems the most common
  2. Do it “properly”: use REF
  3. Use PIT, still around I understand
  4. MyEHR CDA type

And within that

  1. 1/ use the FT plain-text format
  2. 2/ embed as an RTF document
  3. 3/ embed as PDF

So that’s 12 permutations at least and I’m sure I’m missing some. Which options have the best chance of getting parsed/rendered correctly by the current crop of GP software (MDW, Best Practice, Zedmed, etc)

Answer:

Well, I think that right now there is no great answer to this question. I consulted Peter Young from Telstra Health, who is leading a vendor consortium that is working with Australian Digital Health Agency (ADHA) on this particular issue. Peter says:

There is work underway in collaboration between HL7 Australia, ADHA and a number of industry players to create a standard mechanism of sharing messages between clinical applications and capable of being transmitted via SMD based on an HL7 Ref I12. It leverages the recently published pathology messaging profile and is part of a broader program led by ADHA  to improve interoperability between applications. Initially there is a baseline specification that provides essential structured data with a clinical document that can be in  either of RTF, pdf, html or text. The idea is that receiving applications will support any document format; if not natively, at least use a viewer. The work plan also includes extensions to add more structured data.  Most of the major clinical and messaging vendors are involved in the work program.

The link to the simplified profile is https://confluence.hl7australia.com/display/OO/Appendix+8+Simplified+REF+profile

I think that the best bet right now is the REF I12 message, with PDF for the letter. But this is an area of active work.

Question: #FHIR Documents and Composition

Question

What is the relationship between FHIR Documents and  composition resources? Meaning, what is the best way to capture/store in FHIR, documents that are not necessarily related to clinical info (file, images, file reference links to external content systems etc)

If I have several documents that need to be associated to a patient and organizations and was looking for your thoughts on best practices you have seen

Answer

Documents like this – files, images, reference links to content systems – these are best handled using DocumentReference.  Composition is used for documents that have tightly controlled content. a mix of narrative and data.

Question: Extending systems to deal with non-#FHIR type content

Question

What has your experience been with developers, developing on a FHIR model that requires FHIR resources — but also has a need for non-standard FHIR data (something like supply chain data or Blockchain external hashed data). Is the recommendation to shoe horn this into extensions  or have data models that live side-by-side with FHIR?

Answer

There’s no single answer to this question, because it depends on the other kind of data. Generally, there’s 3 approaches I’ve seen:

  1. Use extensions in existing resources (particularly Basic). This approach is only good while the extensions are pretty narrow and limited, and closely related to the existing FHIR functionality
  2. Use some other content model, and figure out how the functionality links. This approach is good where there is another content model. For example, in my server, I use SCIM for managing the user accounts. I use the SCIM content to link a user account to a FHIR resource like “Patient” so that I know which patient the user represents (if any) and I refer to the SCIM user identity in AuditEvent resources (as a URL)
  3. Make up your own content but follow the FHIR patterns – effectively, custom FHIR resources. Use extensions to reference them. This approach is good where you have quite a bit of content/functionality, but there’s no external standard to follow

Which is best depends on what you’re doing.

A note about the custom resources idea: this is legal – you can do whatever you want with the names the FHIR doesn’t define. e.g. [base]/User. And if you choose to put something there, that happens to look a bit like a FHIR resource.. that’s still whatever you want. But things like ‘can I describe it from the CapabilityStatement’ and ‘can I search into the space’ are not technically legal, and there’s always a risk that HL7 will use the name in the next version of FHIR, making your solution locked in to being non-conformant. We’ve investigated making some policy around these questions to make custom resources manageable, but we’ve never managed to get the energy to push agreements over the line.

Question: Validity of AllergyIntolerance extension in #FHIR

Question:

How to extend severity in AllergyIntolerance resource.  Is the following resource where severity is extended done correctly?

<AllergyIntolerance xmlns="http://hl7.org/fhir">
  <id value="uWErIN0G0" />
  <recordedDate value="05/10/1980" />
  <patient>
    <reference value="Patient/DFQA_ghn000003" />
    <display value="Newman, Alice Jones" />
  </patient>
  <substance>
    <coding>
      <system value="RxNorm" />
      <code value="1659592" />
    </coding>
    <text value="ampicillin-sulbactam" />
  </substance>
  <status value="confirmed" />
  <event>
    <manifestation>
      <coding />
      <text value="urticaria (hives)" />
    </manifestation>
    <severity>
      <extension url="http://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.113883.3.88.12.3221.6.8">
        <valueCodeableConcept>
          <coding>
            <system value="" />
            <code value="371923003" />
            <display value="mild to moderate" />
          </coding>
        </valueCodeableConcept>
      </extension>
    </severity>
  </event>
</AllergyIntolerance>

Answer:

Severity is a code, with cardinality 0..1 and a required binding to mild | moderate | severe. You can replace the code with an extension, as is done here, so that part is valid. But it’s much better to provide both a code out of the defined choices, so that systems that only know those choices can process the information correctly, while those that know the refined list can process the refined list:

    <severity value="mild">
      <extension url="http://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.113883.3.88.12.3221.6.8">
        <valueCodeableConcept>
          <coding>
            <system value="" />
            <code value="371923003" />
            <display value="mild to moderate" />
          </coding>
        </valueCodeableConcept>
      </extension>
    </severity>

Aside: you could map this code to either mild or moderate, yes. Choosing either is better than choosing neither.

There’s several other issues here, though:

  • The URL given that identifies the extension actually identifies the value set, not the extension (aka the data element). The correct thing to do would be to define an extension that use the value set (see at the bottom of the post)
  • According to the value set definition, this is a SNOMED CT code, and the system should be filled out
  • the recorded date format is not a valid XML date
  • the system for RxNorm is not correct
  • manifestation coding can’t be empty

Here it is corrected:

<AllergyIntolerance xmlns="http://hl7.org/fhir">
  <id value="uWErIN0G0" />
  <recordedDate value="1980-10-05" />
  <patient>
    <reference value="Patient/DFQA_ghn000003" />
    <display value="Newman, Alice Jones" />
  </patient>
  <substance>
    <coding>
      <system value="http://www.nlm.nih.gov/research/umls/rxnorm" />
      <code value="1659592" />
    </coding>
    <text value="ampicillin-sulbactam" />
  </substance>
  <status value="confirmed" />
  <event>
    <manifestation>
      <text value="urticaria (hives)" />
    </manifestation>
    <severity>
      <extension url="http://example.org/fhir/StructureDefinition/my-extension">
        <valueCodeableCoding>
          <system value="http://snomed.info/sct" />
          <code value="371923003" />
          <display value="mild to moderate" />
        </valueCodeableCoding>
      </extension>
    </severity>
  </event>
</AllergyIntolerance>

With an associated Extension definition:

<?xml version="1.0" encoding="utf-8"?>
<StructureDefinition xmlns="http://hl7.org/fhir">
  <meta>
    <lastUpdated value="2017-07-12T07:05:27.311+10:00" />
  </meta>
  <url value="http://example.org/fhir/StructureDefinition/my-extension" />
  <name value="RefinedSeverity" />
  <status value="draft" />
  <date value="2017-07-12T07:02:31.9614187+10:00" />
  <publisher value="Health Intersections" />
  <description value="My definition for FHIR extension" />
  <purpose value="an extension" />
  <fhirVersion value="3.0.1" />
  <kind value="complex-type" />
  <abstract value="false" />
  <contextType value="resource"/> 
  <context value="AllergyIntolerance.event.severity"/> 
  <type value="Extension" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Extension" />
  <derivation value="constraint" />
  <differential>
    <element id="Extension">
      <path value="Extension" />
      <definition value="This is a description of the level of the severity of the problem." />
    </element>
    <element id="Extension.url">
      <path value="Extension.url" />
      <fixedUri value="http://example.org/fhir/StructureDefinition/my-extension" />
    </element>
    <element id="Extension.value[x]:valueCoding">
      <path value="Extension.valueCoding" />
      <sliceName value="Severity" />
      <type>
        <code value="Coding" />
      </type>
      <binding>
        <strength value="required" />
        <description value="This is a description of the level of the severity of the problem." />
        <valueSetUri value="http://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.113883.3.88.12.3221.6.8" />
      </binding>
    </element>
  </differential>
</StructureDefinition>