#!/usr/bin/env python3 # -*- coding: utf-8 -*- import requests from pathlib import Path TOKEN_PATH = Path("token.txt") CLINIC_SLUG = "mudr-buzalkova" BATCH_SIZE = 100 TARGET_ID = "cbf6000d-a6ca-4059-88b7-dfdc27220762" # ← sem tvoje ID # ⭐ Updated GraphQL with lastMessage included GRAPHQL_QUERY = r""" query ClinicRequestGrid_ListPatientRequestsForClinic2( $clinicSlug: String!, $queueId: String, $queueAssignment: QueueAssignmentFilter!, $pageInfo: PageInfo!, $locale: Locale!, $state: PatientRequestState ) { requestsResponse: listPatientRequestsForClinic2( clinicSlug: $clinicSlug, queueId: $queueId, queueAssignment: $queueAssignment, pageInfo: $pageInfo, state: $state ) { count patientRequests { id displayTitle(locale: $locale) createdAt updatedAt doneAt removedAt lastMessage { id createdAt updatedAt } extendedPatient { name surname identificationNumber } } } } """ def read_token(path: Path) -> str: tok = path.read_text(encoding="utf-8").strip() if tok.startswith("Bearer "): tok = tok.split(" ", 1)[1] return tok def fetch_active(headers, offset): variables = { "clinicSlug": CLINIC_SLUG, "queueId": None, "queueAssignment": "ANY", "pageInfo": {"first": BATCH_SIZE, "offset": offset}, "locale": "cs", "state": "ACTIVE", } payload = { "operationName": "ClinicRequestGrid_ListPatientRequestsForClinic2", "query": GRAPHQL_QUERY, "variables": variables, } r = requests.post("https://api.medevio.cz/graphql", json=payload, headers=headers, timeout=30) if r.status_code != 200: print("HTTP status:", r.status_code) print(r.text) r.raise_for_status() data = r.json().get("data", {}).get("requestsResponse", {}) return data.get("patientRequests", []), data.get("count", 0) def main(): token = read_token(TOKEN_PATH) headers = { "Authorization": f"Bearer {token}", "Content-Type": "application/json" } print(f"=== Hledám updatedAt a lastMessage pro pozadavek {TARGET_ID} ===\n") offset = 0 total_count = None found = False while True: batch, count = fetch_active(headers, offset) if total_count is None: total_count = count if not batch: break for r in batch: if r["id"] == TARGET_ID: print("Nalezeno!\n") print(f"id: {r['id']}") print(f"updatedAt: {r['updatedAt']}") lm = r.get("lastMessage") or {} print(f"lastMessage.createdAt: {lm.get('createdAt')}") print(f"lastMessage.updatedAt: {lm.get('updatedAt')}") found = True break if found: break if offset + BATCH_SIZE >= count: break offset += BATCH_SIZE if not found: print("❌ Požadavek nebyl nalezen mezi ACTIVE.") print("\n=== HOTOVO ===") if __name__ == "__main__": main()