Kaip integruoti su EPIC EHR naudojant „Python“ ir „Smart“ „FHIR API“

Ei, „Healthtech“ statytojai!
Sparčiai besivystančiame sveikatos priežiūros pasaulyje, galimybė saugiai pasiekti prieigą Elektroniniai sveikatos įrašai (EHR) yra žaidimų keitiklis. Epasviena iš plačiausiai priimtų EHR sistemų, siūlo šią galimybę per Protingas iš „Apis Minis“ – Įgalinama kūrėjams kurti galingas programas, susijusias su pacientų duomenimis.
Šiame vadove mes eisime pro tai, kaip integruoti su epu naudojant Pythonsvertas „OAuth 2.0“ kliento kredencialų srautas Norėdami sukurti saugų „Backend Services“ programa. Tokio tipo programa yra ideali Sistemos komunikacija sistemoje kur nereikia prisijungti vartotojui.


📘 Ko išmoksi
- Kaip užregistruoti programą „Epic“ kūrėjų portale
- Nustatykite paprastą „Python Backend“ projektą
- Autentifikuoti naudojimą JWT
- Ištraukite paciento duomenis iš epinio FHIR API
✅ 1 žingsnis: Užregistruokite savo programą „Epic Developer“ portale
Pradėkite apsilankę „Epic“ kūrėjų svetainėje: https://fhir.epic.com/
- Prisijunkite arba sukurkite paskyrą.
- Eikite į Mano programos> Sukurkite naują programą.
- Pasirinkite „Backend Services“ programa.
- Įveskite:
- Programos pavadinimas
- Aprašymas
- FOD versija: R4
- Po ApimtysPasirinkite:
- Įkelkite savo viešąjį raktą (paaiškinta 2 žingsnyje).
- Išsaugoti Kliento ID ir Bazinis bazinis URL su sąlyga.
🔐 2 veiksmas: sugeneruokite savo raktų porą
Jums reikės privataus ir viešojo RSA raktų poros, kad pasirašytumėte JWT ir autentifikuotumėte EPIC.
Vykdykite šiuos dalykus savo terminale:
bash
# Generate private key
openssl genrsa -out private_key.pem 2048
# Generate public key
openssl rsa -in private_key.pem -pubout -out public_key.pem
Upload public_key.pem to the EPIC Developer Portal.
Keep private_key.pem safe — this stays on your backend only.
🗂️ 3 žingsnis: sukurkite savo „Python“ projekto struktūrą
Čia yra švarus ir minimalus projekto sąranka:
epic_ehr_integration/
├── auth.py # Handles authentication logic
├── fhir.py # Fetches patient data
├── private_key.pem # Your private RSA key
├── main.py # Entry point
└── requirements.txt
⚙️ 4 žingsnis: „Python“ aplinkos nustatymas
Create requirements.txt with the following dependencies:
nginx
requests
PyJWT
cryptography
Then install them:
bash
CopyEdit
pip install -r requirements.txt
5 žingsnis: autentifikuokite naudojant JWT (Auth.py)
# auth.py
import time
import jwt
import requests
CLIENT_ID = "your-epic-client-id"
TOKEN_URL = "https://fhir.epic.com/interconnect-fhir-oauth/oauth2/token"
PRIVATE_KEY_PATH = "private_key.pem"
def get_access_token():
with open(PRIVATE_KEY_PATH, "r") as key_file:
private_key = key_file.read()
now = int(time.time())
payload = {
"iss": CLIENT_ID,
"sub": CLIENT_ID,
"aud": TOKEN_URL,
"jti": str(now),
"exp": now + 300 # Token valid for 5 minutes
}
jwt_token = jwt.encode(payload, private_key, algorithm="RS384")
headers = { "Content-Type": "application/x-www-form-urlencoded" }
data = {
"grant_type": "client_credentials",
"client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
"client_assertion": jwt_token,
"scope": "system/Patient.read"
}
response = requests.post(TOKEN_URL, data=data, headers=headers)
response.raise_for_status()
return response.json()("access_token")
📥 6 žingsnis: Gaukite paciento duomenis (fhir.py)
# fhir.py
import requests
def get_patient_list(access_token, base_url):
headers = {"Authorization": f"Bearer {access_token}"}
url = f"{base_url}/Patient?_count=10" # Retrieve 10 patients
response = requests.get(url, headers=headers)
response.raise_for_status()
return response.json()
▶ ūrimas 7 veiksmas: paleiskite programą (main.py)
# main.py
from auth import get_access_token
from fhir import get_patient_list
FHIR_BASE_URL = "https://fhir.epic.com/interconnect-fhir-oauth/api/FHIR/R4"
def main():
token = get_access_token()
patients = get_patient_list(token, FHIR_BASE_URL)
for entry in patients.get("entry", ()):
patient = entry("resource")
name = patient.get("name", ({}))(0)
full_name = f"{name.get('given', (''))(0)} {name.get('family', '')}"
print(f"Patient ID: {patient('id')}, Name: {full_name}")
if __name__ == "__main__":
main()
🧠 Išvada
Dabar turite visiškai veikiantį „Python“ užpakalį, integruotą su „Epic“ FHIR API, naudodamiesi saugiu OAUTH 2.0 Autentifikavimas. Ši sąranka leidžia programiškai gauti pacientų įrašus-galingą pagrindą kurti EHR susijusias sveikatos priežiūros programas.
Galite išplėsti šį projektą, kad įtrauktumėte:
- Susidurti su detalėmis
- Klinikinės pastabos
- Laboratorijos rezultatai
- Rašymo atgal funkcionalumas (su tinkamais leidimais)
Pradinio įgyvendinimo išlaikymas paprastas užtikrina saugumą ir mastelį, kai vystosi jūsų programa. Nesvarbu, ar kuriate klinikinį prietaisų skydelį, analizės įrankį, ar sveikatos stebėjimo paslaugą, šis modelis yra įrodytas, gamybai paruoštas požiūris.


