Files
medax_pipeline/fhirImport.py
T
2026-09-08 10:59:05 +02:00

73 lines
1.8 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 get_bundle(url, search):
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:
if '?' in url:
link = url + '&_format=json'
else:
link = url + '?_format=json'
else:
link = fhir_server + search + '&_format=json'
#print(link)
if mode != 'testserver':
response = requests.get(
link,
headers=headers,
auth=auth,
timeout=300
)
else:
response = requests.get(
link,
headers=headers,
timeout=300
)
return response
def get_patient_everything(id: str):
search = '/Patient/' + id + '/$everything?'
return get_bundle(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']}")