Question: How to code Substance Administration in CDA?

Question:

I have a question for storing Substance Administration information using CDA R-MIM.
I found that there is only one element under Substance Administration to store dosage, called DoseQuantity, which is not enough for storing full information for a prescribed medication. For example, in a clinical statement, “Neomycin 500 mg 1 tablet b.i.d.” where the dosage should be 500mg and 1 tablet. How can I deal with them? Or I only record “1 tablet”? How about if the clinical statement only looks like “Neomycin 500 mg b.i.d.”? Should “500 mg” be recorded?

This answer to this question has a guest author: Lloyd McKenzie, all round v3 expert and past co-chair of the pharmacy committee at HL7 (thanks Lloyd).


Dosage in v3 is a complex combination of several attributes:

  • SubstanceAdministration.effectiveTime conveys information such as start and end date, as well as frequency and things like “Institution Specified”.  (GTS hides all sorts of wonderful things)
  • ManufacturedProduct.id, LabeledDrug.code and Material.code all identify what drug is being used.  Which you populate depends on what you have (UPC and similar manufacturer-assigned ids for ManufacturedProduct.id, NDC codes and other drug codes in LabeledDrug.code, Material.code for other things like radiation, food, etc.)
  • SubstranceAdministration.administrationUnitCode allows you to convey special dosages like “scoop”, “puff”, etc. which are not the form of the drug, nor discrete measurements
  • doseQuantity allows you to convey the quantity, and when the quantity is a measured amount, the unit (mg, ml, etc.)
  • rateQuantity allows you to convey the period of time over which a single dose is administered for IVs, etc.

Unfortunately there’s a few key RIM structures that CDA doesn’t expose

  • LabeledDrug.formCode.  That’s where something like “tablet” would appear.
  • Contained ingredients with a “quantity” attributes.  That’s where strength would go

Given that you don’t have either, you’ve got two choices:

  • Adopt one or both as RIM extensions to CDA
  • Encode them as part of the drug code/drug name

So in your examples, you’d have the following:

 Neomycin 500mg tablet: LabeledDrug.name
 bid: SubstanceAdministration.effectiveTime[PIVL_TS].period = 12 h
 1: SubstranceAdministration.doseQuantity

If you really want to have “500mg” and “tablet” as separate attributes, you’ll have to create the necessary RIM structures.  (Refer to the pharmacy model for indications of how.)

If you don’t have the tablet part, you also have the option of the following:

 Neomycin: LabeledDrug.name
 bid: SubstanceAdministration.effectiveTime[PIVL_TS].period = 12 h
 500 mg: SubstranceAdministration.doseQuantity

The pharmacy committee has put together a really handy document that explains how to encode a variety of dosage instructions, including more complex tapering doses, alternating doses, etc.  There will be a few situations where CDA isn’t fully expressive enough, but it will at least give you a starting point.  You can find the current draft of the document here: http://archive.hl7.org/v3ballotarchive/v3ballot2009sep/html/domains/uvrx/Dosage%20Definitions%20V2.0Draft.pdf

6 Comments

  1. Sarah Gaunt says:

    Great explanation – thanks Lloyd…

  2. James Chan says:

    Thank you very much. The document provides useful information for me to better format my Substance Administration class.
    I have another question relate to the SBADM class. It is about a statement of stopping a medication instructed by a physician (e.g. “Due to her bradycardia, I am stopping her Cardizem at this time”). I was wondering how I can set up a structure to contain this kind of information. Is there an indicator for a stopped medication? I considered to use statusCode to make it, but not sure how to use it correctly.

  3. Lloyd McKenzie says:

    The status for a stopped medication is “aborted”. I.e. “Author originally intended this to occur, but a decision was made to terminate the action before it had run to originally intended completion”.

    If you want to capture details about stopping the order (who stopped it, when, why, etc.), you’ll need to use a ControlAct with a subject relationship to the SubstanceAdministration. The code attribute on the SubstanceAdministration would contain the triggerEvent id for “abort prescription”. (Refer to the pharmacy ballot for the specific id.)

    You’d do the same thing to record a suspend (hold) or resume.

  4. James Chan says:

    Would it work if I set the statusCode = ‘aborted’ of a substanceAdministration class; then add an entryRelationship (with typeCode = ‘RSON’) linked to an Act to indicate the reason of stopping/suspending the medication?

  5. Lloyd McKenzie says:

    Not terribly well. The RSON would be for the SBADM class itself. The semantic of a RSON relationship to a SubstanceAdministration is “this is the indication/reason” for the prescription. If you want to talk about the reason for changing the status of a prescription, then you need to attach that to the record of the status change, not the prescription itself. And the record of the status change is a ControlAct. CACT is a legal classCode for a CDA Entry, so there shouldn’t be a problem modeling it.

  6. Lloyd McKenzie says:

    I stand corrected on CACT being a legal code. It was available in the vocabulary version used for CDA, but for whatever reason, it was constrained out in the value-set definitions. So the only way to appropriately talk about a status change (other than communicating the bare status) is with an extension. :<

Leave a Reply

Your email address will not be published. Required fields are marked *

*

question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>