67 lines
1.6 KiB
Python
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']}")
|