Skip to content

Instantly share code, notes, and snippets.

@PiotrJander
Created September 25, 2021 21:45
Show Gist options
  • Save PiotrJander/c8aac99a1baa2daed8c5ca4318af5af6 to your computer and use it in GitHub Desktop.
Save PiotrJander/c8aac99a1baa2daed8c5ca4318af5af6 to your computer and use it in GitHub Desktop.
from gql import Client, gql
from gql.transport.requests import RequestsHTTPTransport
from itertools import groupby
from datetime import datetime
token = 'REDACTED'
transport = RequestsHTTPTransport(
url="https://open.heydoc.co.uk/graphql", verify=True, retries=3,
headers={'x-token': token}
)
client = Client(transport=transport, fetch_schema_from_transport=False)
query = gql(
"""
query records ($dateRange: DateRange, $pagination: Pagination, $options: QueryOptions) {
records (dateRange: $dateRange, pagination: $pagination, options: $options) {
data {
consultationId
sectionTitle
term
title
observation
comments
date
}
}
}
"""
)
vars = dict(
dateRange=dict(
start="2021-09-01T00:00:00.000Z",
end="2021-09-30T00:00:00.000Z"
),
pagination=dict(
pageSize=100
)
)
result = client.execute(query, variable_values=vars)
records = result['records']['data']
test_records = [r for r in records if r["sectionTitle"] == "STI Test Results" and r["term"] is not None]
consultations = groupby(test_records, lambda x: x["consultationId"])
for c, records in consultations:
print(c)
records = list(records)
date = records[0]["date"]
date = datetime.fromisoformat(date[:-1])
diff = datetime.now() - date
if diff.seconds > 1:
for r in records:
if "awaiting" in r["term"].lower():
print("Results overdue")
break
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment