medax_pipeline/fhirImport.py
2025-04-16 22:12:19 +02:00

67 lines
1.6 KiB
Python

import requests
from typing import List, Dict, Any
from dotenv import load_dotenv
import os
from requests.auth import HTTPBasicAuth
# Load environment variables from .env file
load_dotenv()
def getBundle(url: str, search: str):
headers = {
'Accept': 'application/fhir+json',
'Content-Type': 'application/fhir+json'
}
# Get configuration from environment variables
mode = os.getenv('MODE')
fhir_server = os.getenv('FHIR_SERVER_URL')
if mode != 'testsever':
username = os.getenv('FHIR_SERVER_USER')
password = os.getenv('FHIR_SERVER_PW')
if not fhir_server:
raise ValueError("FHIR_SERVER_URL not found in environment variables")
if (not username or not password) and mode != 'testserver':
raise ValueError("FHIR_USERNAME and FHIR_SERVER_PW must be set in environment variables")
# Setup basic authentication
auth = HTTPBasicAuth(username, password)
if url is not None:
link = url + '?_format=json'
else:
link = fhir_server + search + '&_format=json'
#print(link)
if mode != 'testserver':
response = requests.get(
link,
headers=headers,
auth=auth
)
else:
response = requests.get(
link,
headers=headers,
)
return response
def getPatientEverything(id: str):
search = '/Patient/' + id + '/$everything?'
return getBundle(None, search)
# Example usage
if __name__ == "__main__":
bundles = get_bundles(None)
data = bundles.json()
# Process the bundles
for entry in data['entry']:
print(f"{entry['fullUrl']}")