Loading Now

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

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/

  1. Prisijunkite arba sukurkite paskyrą.
  2. Eikite į Mano programos> Sukurkite naują programą.
  3. Pasirinkite „Backend Services“ programa.
  4. Įveskite:
    • Programos pavadinimas
    • Aprašymas
    • FOD versija: R4
  5. Po ApimtysPasirinkite:
  6. Įkelkite savo viešąjį raktą (paaiškinta 2 žingsnyje).
  7. 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.



Source link

Gal būt praleidote

Draugai: - Marketingo paslaugos - Teisinės konsultacijos - Skaidrių skenavimas - Fotofilmų kūrimas - Karščiausios naujienos - Ultragarsinis tyrimas - Saulius Narbutas - Įvaizdžio kūrimas - Veidoskaita - Nuotekų valymo įrenginiai -  Padelio treniruotės - Pranešimai spaudai -