Storing SOAP Notes as FHIR Resources

Ottehr allows practitioners to document patient encounters and store structured data in a form of FHIR resources. There is a multitude of ways to record HPI, patient's complaints, subjective and objecting observations, assessment and plan of treatment. Below is the description of how we store Subjective, Objective, Assessment and Plan (SOAP) data.

Patient-provided information is stored as FHIR QuestionnaireResponse (opens in a new tab) resources. Check out Customizing Paperwork for more details on patient-provided information.

For coding of resources, SNOMED clinical terms are the simplest starting point. The details could be downloaded from the NIH National Library of Medicine (opens in a new tab) directly or could be looked up using online SNOMED CT browser (opens in a new tab) provided by IHTSDO (opens in a new tab). ICD-10 codes can be obtained via SNOMED to ICD-10 Map (opens in a new tab) or can be converted using NIH API (opens in a new tab).

HPI & Medical History

HPI & Medical History screen including side-by-side patient and provider entered information such as chief complaint, allergies, medications, and surgical history
  • Chief Complaint is stored as a FHIR Condition (opens in a new tab) resource, where the properties are stored as following:

    • subject is a reference to the FHIR Patient
    • encounter is a reference to the FHIR Encounter
    • condition code is stored as ICD-10 code
    • free form text by the provider is stored as a note
  • Each of the Medical Conditions is stored as a FHIR Condition (opens in a new tab) resource, where the properties are stored as following:

    • subject is a reference to the FHIR Patient
    • encounter is a reference to the FHIR Encounter
    • condition code is stored as ICD-10 code
    • free form text by the provider is stored as a note
  • Current Medications are stored as a FHIR MedicationStatement (opens in a new tab) resources, where the properties are stored as following:

    • subject is a reference to the FHIR Patient
    • context is a reference to the FHIR Encounter
    • code is stored using our eRx references to FHIR Medication (opens in a new tab) resources
    • note stores free-form text from provider
  • Allergies are stored as a FHIR AllergyIntolerance (opens in a new tab) resources, where the properties are stored as following:

    • subject is a reference to the FHIR Patient
    • encounter is a reference to the FHIR Encounter
    • code is stored using our eRx references to allergies
    • note stores free-form text from provider
  • Surgical History are stored as a set of FHIR Procedure (opens in a new tab) resources, where the properties are stored for each:

    • subject is a reference to the FHIR Patient
    • context is a reference to the FHIR Encounter
    • code is stored using CPT Procedure code (e.g. 29581, APPLY MULTLAY COMPRS LWR LEG)
    • note stores free-form text from provider
  • HPI & ROS are stored as FHIR Observation (opens in a new tab) resources, where the properties are stored for each:

    • subject is a reference to the FHIR Patient
    • encounter is a reference to the FHIR Encounter
    • code stores free-form text from provider
    • note stores free-form text from provider
  • Images are stored as a FHIR DocumentReference (opens in a new tab) resources, with links to contents stored on Z3 and linked to encounter.

    • subject is a reference to the FHIR Patient
    • encounter is a reference to the FHIR Encounter
    • content contains the attachment pointing to Z3 (e.g. { "attachment": { "url": "<z3url>", "title": "Some Image" "contentType": "image/png" }} )

Medical Exam

Medical exam screen including recordings of vitals data, general observations, and localized notes
  • Vitals are patient reported and stored as FHIR QuestionnaireResponse resources

  • Exam Observations are stored as a set of multiple FHIR Observation (opens in a new tab) resources. The UI organizes those resources into "cards" visually, based on custom meta tags and body site. Each exam observation (depending on the type) is mapped as follows:

    • subject is a reference to the FHIR Patient
    • encounter is a reference to the FHIR Encounter
    • bodySite is a SNOMED code of body geography (e.g. 302548004, Entire head or 1290041000, Entire left eye proper)
    • code stores is a SNOMED code of finding (e.g. 420103007, Watery eye or 300196000, Ear normal)
    • valueBoolean stores whether data type of the value is a "yes/no" answer (useful for rendering)
    • note stores free-form text from provider (useful for general section comments to be rendered on a "card")
    • meta stores information about what type of field it is, e.g. "tag": [{"code": "pupils-symmetric", "system": "https://fhir.zapehr.com/r4/StructureDefinitions/exam-observation-field"}]

Assessment

Assessment page including diagnoses, coding, and medical decisions

Plan

Plan screen including patient instructions, documents, follow-up notes, and work and school excuse notes
  • Disposition is adding a disposition code to the FHIR Encounter. Disposition code is added as a private extension:

    • disposition array stores disposition codes, e.g. "coding": [{"code": "uc-lab", "system": "https://fhir.zapehr.com/r4/StructureDefinitions/discharge-disposition"}]
  • Patient Instructions are stored as a FHIR Communication (opens in a new tab) resources, with the following data stored for each:

    • subject is a reference to the FHIR Patient
    • encounter is a reference to the FHIR Encounter
    • note stores free-form text
  • All Documents (generated and uploaded) are stored as a FHIR DocumentReference (opens in a new tab) resources, with links to contents stored on Z3 and linked from encounter.

    • subject is a reference to the FHIR Patient
    • encounter is a reference to the FHIR Encounter
    • content contains the attachment pointing to Z3 (e.g. { "attachment": { "url": "<z3url>", "title": "Some Document" "contentType": "application/pdf" }} )
  • Specialty and Other Followups are stored as a FHIR ServiceRequest (opens in a new tab) resources, with the following data stored for each:

    • subject is a reference to the FHIR Patient
    • encounter is a reference to the FHIR Encounter
    • occurrenceTiming is a FHIR Timing (opens in a new tab) type, describing when the next follow up should occur
    • performerType is using SNOMED codes to describe type of visit (e.g. 106289002, Dentist)