import streamlit as st #from fhir.resources.observation import Observation from datetime import datetime import requests import json # FHIR server endpoint #base_url = "https:///fhir/" # Function to create an Observation resource #def create_observation_resource(activity, category, calories, duration, distance, heart_rate): #observation = Observation() #observation.status = "final" #observation.category = [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", #"code": "activity"}]}] #observation.code = {"coding": [{"system": "http://loinc.org", "code": "55409-7", "display": "Exercise tracking panel"}]} #observation.effectiveDateTime = datetime.now().isoformat() #observation.component = [] #if activity: #observation.component.append({"code": {"coding": [{"system": "http://loinc.org", "code": "73985-4", "display": "Exercise activity"}]}, "valueString": activity}) #if category: #observation.component.append({"code": {"coding": [{"system": "http://loinc.org", "code": "73986-2", "display": "Exercise aerobic category"}]}, "valueString": category}) #if calories: #observation.component.append({"code": {"coding": [{"system": "http://loinc.org", "code": "55421-2", "display": "Calories burned Machine estimate"}]}, "valueQuantity": {"value": calories, "unit": "kcal"}}) #if duration: #observation.component.append({"code": {"coding": [{"system": "http://loinc.org", "code": "55411-3", "display": "Exercise duration"}]}, "valueQuantity": {"value": duration, "unit": "min"}}) #if distance: #observation.component.append({"code": {"coding": [{"system": "http://loinc.org", "code": "55412-1", "display": "Exercise distance unspecified time"}]}, "valueQuantity": {"value": distance, "unit": "[mi_us];km"}}) #if heart_rate: #observation.component.append({"code": {"coding": [{"system": "http://loinc.org", "code": "55422-0", "display": "Heart rate Encounter maximum"}]}, "valueQuantity": {"value": heart_rate, "unit": "{beats}/min"}}) #return observation # Function to create an Observation resource on the FHIR server #def create_observation(observation): # headers = {"Content-Type": "application/fhir+json"} # response = requests.post(base_url + "Observation", data=json.dumps(observation.as_json()), headers=headers) # if response.status_code == 201: # st.success("Observation created successfully!") # else: # st.error("Error creating Observation.") # Streamlit user interface def app(): st.title("SMART FHIR Assessment - Exercise") activity = st.text_input("Exercise activity") category = st.selectbox("Exercise aerobic category", ["", "Aerobic", "Anaerobic"]) calories = st.number_input("Calories burned (Machine estimate)", min_value=0, step=1) duration = st.number_input("Exercise duration (minutes)", min_value=0, step=1) distance = st.number_input("Exercise distance (miles) time", min_value=0, step=1) heart_rate = st.number_input("Heart rate Encounter maximum", min_value=0, step=1) #if st.button("Record Exercise"): # observation = create_observation_resource(activity, category, calories, duration, distance, heart_rate) # create_observation(observation) app()