dgx-spark-playbooks/nvidia/station-healthcare-agent/assets/scripts/test-fhir.py
2026-05-26 18:25:53 +00:00

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()