Verwenden von Google HealthDie Google Health Data API wurde entwickelt um es Entwicklern zu erlauben die folgenden 2 Dinge zu tun:
Es gibt drei Hauptfeeds, die alle eine Authentifikation benötigen. Anders als andere Google Data APIs hat jede der Google Health Feeds ein begrenztes Set von HTTP Anweisungen die auf Ihm ausgeführt werden können, abhängig von der Authentifizierungsmethode die man verwendet (ClientLogin oder AuthSub/OAuth). Für eine Liste von gestatteten Anweisungen siehe » http://code.google.com/apis/health/reference.html#Authentication.
Siehe » http://code.google.com/apis/health für weitere Informationen über die Google Health API. Zum Health Service verbindenDie Google Health API basiert, wie alle Google Data APIs, auf dem Atom Publishing Protokoll (APP), einem XML basierenden Format für die Verwaltung von Web-basierenden Ressourcen. Verkehr zwischen einem Client und dem Google Health Servern findet über HTTP statt und erlaubt authentifizierte Verbindungen. Bevor eine Transaktion stattfinden kann, muß eine Verbindung erstellt werden. Das Erstellen einer Verbindung zu den Health Servern beinhaltet zwei Schritte: Erstellung eines HTTP Clients und diesen Client an eine Zend_Gdata_Health Instanz binden. AuthentifikationDie Google Health API erlaubt den programmtechnischen Zugriff auf das Gesundheitsprofil eines Benutzer. Es gibt drei Authentifizierungsschemata die von Google Health unterstützt werden:
Siehe » Authentication Overview in the Google Data API documentation für weitere Informationen über jede Authentifizierungsmethode. Erstellen einer Health Service InstanzUm mit Google Health zu interagieren, bietet die Client Bibliothek die Serviceklasse Zend_Gdata_Health. Diese Klasse bietet ein übliches Interface zu den Google Data und Atom Publishing Protokoll Modellen und hilft bei der Durchführung von Anfragen von und zur Health API. Sobald man sich für ein Authentifizierungsschema entschieden hat, ist der nächste Schritt die Erstellung einer Instanz von Zend_Gdata_Health. Dieser Klasse sollte eine Instanz von Zend_Gdata_HttpClient übergeben werden. Diese bietet ein Interface für- AuthSub/OAuth und ClientLogin um einen speziell authentifizierten HTTP Client zu erstellen. Um mit dem H9 des Entwicklers (/h9) statt Google Health (/health) nimmt der Konstruktor von Zend_Gdata_Health ein optionales drittes Argument mit dem man den H9 Service Name 'weaver' spezifizieren kann. Das folgende Beispiel zeigt wie eine Health Service Klasse bei Verwendung der ClientLogin Authentifizierung erstellt wird:
Ein Health Service der AuthSub verwendet kann ähnlich erstellt werden, im einem etwas längeren Aussehen. AuthSub ist das empfohlene Interface um mit Google Health zu kommunizieren weil jeder Token direkt zu einem speziellen Profil im Account des Benutzers verlinkt wird. Anders als andere Google Data APIs, ist es notwendig das alle Anfragen von der eigenen Anwendung digital signiert werden.
Achtung: der Rest dieses Dokument wird annehmen das man AuthSub für die Authentifikation verwendet. Profil FeedUm den Profil Feed des Benutzers abzufragen, muß man sicherstellen das der initiale AuthSub Token angefragt wird wobei der permission Parameter auf 1 gesetzt ist. Der Prozess des extrahierens von Daten aus dem Profil benötigt zwei Schritte. Das Senden einer Anfrage und dem durchlaufen des resultierenden Feeds. Eine strukturierte Anfrage sendenMan kann strukturierte Anfragen senden um spezielle Einträge von einem Benutzerprofil zu erhalten. Wenn man die Health API verwendet um ein Profil zu empfangen, werden speziell konstruierte Anfrage URLs verwendet um zu beschreiben welche (CCR) Daten zurückgegeben werden sollen. Die Klasse Zend_Gdata_Health_Query hilft dabei diese Aufgabe zu vereinfachen indem automatisch eine Abfrage URL erstellt wird basierend auf den Parametern die man gesetzt hat. Den Feed abfragenUm eine Abfrage eines Profil Feeds durchzuführen, muß eine neue Instanz von Zend_Gdata_Health_Query erzeugt und die getHealthProfileFeed() Methode des Services aufgerufen werden:
Wenn man setDigest("true") verwendet werden alle CCR Daten des Benutzers in einem einzelnen Atom <entry> zurückgegeben. Dem setCategory() Helfer kann ein zusätzlicher Parameter übergeben werden um spezifischere CCR Informationen zurückzuerhalten. Um zum Beispiel nur die Medikation Lipitor zurückzugeben verwendet man setCategory("medication", "Lipitor"). Die selbe Methode kann bei anderen Kategorien wie Konditionen, Allergien, Labor Ergebnisse, usw. angewendet werden. Eine komplette Liste der unterstützten Abfrageparameter ist im » Kapitel der Abfrageparameter des Health API Referenz Guides vorhanden. Durch die Profil Einträge iterierenJeder Google Health Eintrag enthält CCR Daten, trotzem führt die Verwendung des Abfrageparameters digest mit TRUE dazu dass alle CCR Elemente (die dieser Abfrage entsprechen) in einen einzelnen Atom <entry> zusammengefügt werden. Um die kompletten CCR Informationen von einem Eintrag zu erhalten, muß ein Aufruf zur getCcr() Methode der Zend_Gdata_Health_ProfileEntry Klasse durchgeführt werden. Das gibt ein Zend_Gdata_Health_Extension_CCR zurück:
Hier wird die getCcr() Methode in Verbindung mit einem magischen Helfer verwendet um nur die Medikationsdaten aufzureißen und aus den CCR des Eintrags zu extrahieren. Der hierbei erwähnte magische Helfer nimmt das Formular getCATEGORYNAME(), wobei CATEGORYNAME eine unterstützte Kategorie von Google Health ist. Für mögliche Kategorien kann in den » Google Health Referenz Guide gesehen werden. Um effizienter zu sein, können auch Kategorie Abfragen verwendet werden um nur die notwendigen CCRs von den Google Health Servern zu erhalten. Dann muß durch diese Ergebnisse iteriert werden:
Profil Listen FeedBeachte: Dieser Feed ist nur vorhanden wenn man ClientLogin verwendet Da ClientLogin bei jedem seiner Feeds eine Profil ID benötigt, sollten Anwendungen diesen Feed als erstes abfragen um die richtigen Profile auszuwählen. Der Profil Listen Feed gibt Atom Einträge zurück die jedem Profil im Benutzeraccount von Google Health entsprechen. Die ProfilID wird im Atom <content> und der Name im <title> Element zurückgegeben. Den Feed abfragenUm eine Abfrage gegen den Profil Listen Feed durchzuführen muß die getHealthProfileListFeed() Methode des Services aufgerufen werden:
Sobald man sich entschieden hat welches Profil verwendet werden soll, wird setProfileID() mit der Profil ID als Argument aufgerufen. Das begrenzt die weiteren API Abfragen auf genau das betreffende Profil:
Notizen an des Register Feed versendenIndividuelle Antworten zum registrierten Feed sind als Notizen bekannt. Notizen werden von Dritt-Anwendungen gesendet um den Benutzer über ein neues Event zu informieren. Mit AuthSub/OAuth, sind Notizen einfach etwas womit die eigene Anwendung neue CCR Informationen zu einem Benutzerprofil hinzufügen kann. Notizen können reinen Text enthalten (inklusive einiger XHTML Elemente), ein CCR Dokument oder beides. Als Beispiel können Notizen gesendet werden um Benutzer daran zu erinnern das Sie spezielle Rezepte nehmen sollen, oder sie können Laborergebnisse im CCR Format enthalten. Senden einer NotizNotizen können durch das Verwenden der sendHealthNotice() Methode des Health Services gesendet werden:
|
|