Closed jrwils closed 1 month ago
https://canvasmedical.atlassian.net/browse/KOALA-1776
This PR adds a GraphQL client to be used to fetch data from home-app.
Example of how it can be used in a plugin:
from canvas_sdk.events import EventType from canvas_sdk.protocols import BaseProtocol from logger import log from data_access_layer.client import GQL_CLIENT class Protocol(BaseProtocol): RESPONDS_TO = [EventType.Name(EventType.PATIENT_UPDATED)] PATIENT_QUERY = """ query PatientGet($patientKey: String!) { patient(patientKey: $patientKey) { firstName lastName birthDate } } """ PATIENT_CONDITIONS_QUERY = """ query GetPatientConditions($patientKey: String!) { conditions(patientKey: $patientKey) { edges { node { externallyExposableId onsetDate coding { edges { node { display code system } } } } } } } """ def compute(self): log.info(f"Received Patient Created Event for patient key {self.target}") log.info(f"Retrieving data about the patient") # Get Patient Data patient_data = GQL_CLIENT.query(self.PATIENT_QUERY, params={"patientKey": self.target}) log.info(patient_data) # Get Patient's Conditions log.info("Getting patient conditions") patient_conditions = GQL_CLIENT.query(self.PATIENT_CONDITIONS_QUERY, params={"patientKey": self.target}) log.info(patient_conditions) # Print condition info for condition in patient_conditions["conditions"]["edges"]: for condition_coding in condition["node"]["coding"]["edges"]: log.info(condition_coding["node"]["code"]) log.info(condition_coding["node"]["system"]) log.info(condition_coding["node"]["display"]) log.info("") return []
https://canvasmedical.atlassian.net/browse/KOALA-1776
This PR adds a GraphQL client to be used to fetch data from home-app.
Example of how it can be used in a plugin: