mirror of
https://github.com/NVIDIA/dgx-spark-playbooks.git
synced 2026-06-23 14:49:31 +00:00
67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
"""
|
|
Quick test script to verify the FHIR test server is reachable
|
|
and has usable patient data for the demo.
|
|
|
|
Run: python scripts/test-fhir.py
|
|
"""
|
|
|
|
import json
|
|
import sys
|
|
|
|
import requests
|
|
|
|
BASE = "https://r4.smarthealthit.org"
|
|
|
|
|
|
def test_endpoint(path, label):
|
|
url = f"{BASE}{path}"
|
|
try:
|
|
r = requests.get(url, timeout=10)
|
|
r.raise_for_status()
|
|
data = r.json()
|
|
count = len(data.get("entry", []))
|
|
print(f" {label}: {count} results")
|
|
return data
|
|
except Exception as e:
|
|
print(f" {label}: FAILED -- {e}")
|
|
return None
|
|
|
|
|
|
def main():
|
|
print(f"Testing FHIR server at {BASE}\n")
|
|
|
|
patients = test_endpoint("/Patient?_count=10", "Patients")
|
|
if not patients or not patients.get("entry"):
|
|
print("\nNo patients found. Server may be down.")
|
|
sys.exit(1)
|
|
|
|
pid = patients["entry"][0]["resource"]["id"]
|
|
name = patients["entry"][0]["resource"].get("name", [{}])[0]
|
|
display = f"{name.get('given', ['?'])[0]} {name.get('family', '?')}"
|
|
print(f"\nUsing test patient: {display} (ID: {pid})\n")
|
|
|
|
test_endpoint(f"/Condition?patient={pid}&_count=50", "Conditions")
|
|
test_endpoint(f"/Observation?patient={pid}&_count=50", "Observations (labs/vitals)")
|
|
test_endpoint(f"/MedicationRequest?patient={pid}&_count=50", "Medications")
|
|
test_endpoint(f"/Encounter?patient={pid}&_count=50", "Encounters")
|
|
|
|
print(f"\nGood patient for demo: {display} (ID: {pid})")
|
|
print("Use this patient ID in your demo commands.\n")
|
|
|
|
conditions = requests.get(f"{BASE}/Condition?patient={pid}&_count=50", timeout=10).json()
|
|
if conditions.get("entry"):
|
|
print("Active conditions:")
|
|
for e in conditions["entry"]:
|
|
code = e["resource"]["code"]["coding"][0]
|
|
status = (
|
|
e["resource"]
|
|
.get("clinicalStatus", {})
|
|
.get("coding", [{}])[0]
|
|
.get("code", "?")
|
|
)
|
|
print(f" [{status}] {code.get('display', '?')} ({code.get('code', '?')})")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|