Vital Signs Element Documentation
Overview
Section titled “Overview”Vital Signs elements represent measured physiological parameters like blood pressure, heart rate, temperature, and other clinical measurements taken during patient care.
Function
Section titled “Function”builder.add_vital_finding( code: CodeInput, value: Optional[Union[str, float]] = None, unit: Optional[str] = None, date: Optional[DateTimeInput] = None, interpretation: Optional[Union[Interpretation, str]] = None, notes: Optional[str] = None, id: Optional[str] = None,) -> ObservationParameters
Section titled “Parameters”Required Parameters
Section titled “Required Parameters”- code: The vital sign type or measurement name
Optional Parameters
Section titled “Optional Parameters”- value: The measured value (numeric or string)
- unit: Unit of measurement (e.g., “mmHg”, “bpm”, “°C”)
- date: When the measurement was taken
- interpretation: Clinical interpretation of the result
- notes: Additional notes about the measurement
- id: Custom resource ID
Basic Usage
Section titled “Basic Usage”Simple Vital Sign (Preferred with CodeableConcept)
Section titled “Simple Vital Sign (Preferred with CodeableConcept)”from fhir_sdk import FHIRDocumentBuilderfrom fhir_sdk.types import create_codeable_concept
builder = FHIRDocumentBuilder()builder.add_patient(name="John Doe", age=30)builder.add_encounter()
# Add blood pressure measurementvital = builder.add_vital_finding( code=create_codeable_concept( text="Blood Pressure", code="85354007", system="http://snomed.info/sct", display="Blood pressure" ), value="120/80", unit="mmHg")Using String (Alternative)
Section titled “Using String (Alternative)”vital = builder.add_vital_finding( code="Blood Pressure", value="120/80", unit="mmHg")Numeric Value with Interpretation
Section titled “Numeric Value with Interpretation”from fhir_sdk import Interpretation
vital = builder.add_vital_finding( code=create_codeable_concept( text="Heart Rate", code="364075005", system="http://snomed.info/sct" ), value=72, unit="bpm", interpretation=Interpretation.NORMAL)Interpretation Options
Section titled “Interpretation Options”from fhir_sdk import Interpretation
# Using enum (preferred)vital = builder.add_vital_finding( code="Temperature", value=38.5, unit="°C", interpretation=Interpretation.HIGH)
# Using string (alternative)vital = builder.add_vital_finding( code="Temperature", value=36.7, unit="°C", interpretation="normal")Available interpretations:
Interpretation.NORMALor"normal"Interpretation.HIGHor"high"Interpretation.LOWor"low"Interpretation.ABNORMALor"abnormal"
Common Vital Signs with LOINC Codes
Section titled “Common Vital Signs with LOINC Codes”Blood Pressure
Section titled “Blood Pressure”vital = builder.add_vital_finding( code=create_codeable_concept( text="Blood Pressure", code="85354007", system="http://snomed.info/sct", display="Blood pressure" ), value="120/80", unit="mmHg", interpretation=Interpretation.NORMAL)Heart Rate
Section titled “Heart Rate”vital = builder.add_vital_finding( code=create_codeable_concept( text="Heart Rate", code="8867-4", system="http://loinc.org", display="Heart rate" ), value=75, unit="bpm")Body Temperature
Section titled “Body Temperature”vital = builder.add_vital_finding( code=create_codeable_concept( text="Body Temperature", code="8310-5", system="http://loinc.org", display="Body temperature" ), value=98.6, unit="°F")Respiratory Rate
Section titled “Respiratory Rate”vital = builder.add_vital_finding( code=create_codeable_concept( text="Respiratory Rate", code="9279-1", system="http://loinc.org" ), value=16, unit="breaths/min")Body Weight
Section titled “Body Weight”vital = builder.add_vital_finding( code=create_codeable_concept( text="Body Weight", code="29463-7", system="http://loinc.org" ), value=70, unit="kg")Height
Section titled “Height”vital = builder.add_vital_finding( code=create_codeable_concept( text="Body Height", code="8302-2", system="http://loinc.org" ), value=175, unit="cm")Value Types and Units
Section titled “Value Types and Units”Numeric Values
Section titled “Numeric Values”# Integer valuesvital = builder.add_vital_finding(code="Heart Rate", value=72, unit="bpm")
# Decimal valuesvital = builder.add_vital_finding(code="Temperature", value=98.6, unit="°F")String Values
Section titled “String Values”# Compound measurementsvital = builder.add_vital_finding(code="Blood Pressure", value="120/80", unit="mmHg")
# Qualitative resultsvital = builder.add_vital_finding(code="Pain Scale", value="5/10")Time-stamped Measurements
Section titled “Time-stamped Measurements”from datetime import datetime
vital = builder.add_vital_finding( code="Blood Pressure", value="130/85", unit="mmHg", date=datetime.now(), notes="Taken after 5 minutes rest")Measurements Without Values
Section titled “Measurements Without Values”# For measurements that couldn't be takenvital = builder.add_vital_finding( code="Weight", notes="Unable to obtain - patient unable to stand")Common Units
Section titled “Common Units”- Blood Pressure: “mmHg”
- Heart Rate: “bpm” (beats per minute)
- Temperature: “°C”, “°F”
- Weight: “kg”, “lb”
- Height: “cm”, “in”
- Respiratory Rate: “breaths/min”
- Oxygen Saturation: ”%“
Best Practices
Section titled “Best Practices”- Use create_codeable_concept with LOINC codes for vital signs when available
- Include appropriate units for all numeric measurements
- Add interpretation for values outside normal ranges
- Record measurement time for trend analysis
- Include notes for unusual circumstances or measurement conditions
- Use consistent units within your application
- Record “unable to obtain” measurements with explanatory notes
- Vital signs are categorized as “vital-signs” observations
- Values can be numeric (with units) or string (for complex measurements)
- Interpretation helps identify abnormal values quickly
- Multiple measurements can track trends over time
- Date/time stamps are important for monitoring changes