Zend_Gdata_Health.xml 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.gdata.health">
  5. <title>Verwenden von Google Health</title>
  6. <para>
  7. Die Google Health Data <acronym>API</acronym> wurde entwickelt um es Entwicklern zu erlauben
  8. die folgenden 2 Dinge zu tun:
  9. <itemizedlist>
  10. <listitem>
  11. <para>
  12. Das Google Gesundheitsprofil eines Benutzers lesen oder nach medizinischen
  13. Einträgen zu suchen die einem speziellen Kriterium entsprechen und dann die
  14. Ergebnisse zu verwenden um personalisierte Funktionalitäten basierend auf diesen
  15. Daten anzubieten.
  16. </para>
  17. </listitem>
  18. <listitem>
  19. <para>
  20. Neue Medizinische Daten zu einem Benutzerprofil hinzuzufügen indem CCR Daten
  21. eingefügt werden wenn eine Notiz an ein Benutzerprofil gesendet wird. Es ist zu
  22. beachten das die CCR Daten als <acronym>XML</acronym> Blob im &lt;atom&gt;
  23. Eintrag gespeichert werden. Die Bibliothek bietet keine direkten
  24. Zugriffsmethoden zu dem Objektmodell an aber es hat Helfer für das extrahieren
  25. von speziellen Feldern.
  26. </para>
  27. </listitem>
  28. </itemizedlist>
  29. </para>
  30. <para>
  31. Es gibt drei Hauptfeeds, die alle eine Authentifikation benötigen. Anders als andere Google
  32. Data <acronym>API</acronym>s hat jede der Google Health Feeds ein begrenztes Set von
  33. <acronym>HTTP</acronym> Anweisungen die auf Ihm ausgeführt werden können, abhängig von der
  34. Authentifizierungsmethode die man verwendet (ClientLogin oder AuthSub/OAuth). Für eine Liste
  35. von gestatteten Anweisungen siehe <ulink
  36. url="http://code.google.com/apis/health/reference.html#Authentication">http://code.google.com/apis/health/reference.html#Authentication</ulink>.
  37. <itemizedlist>
  38. <listitem>
  39. <para>
  40. <firstterm>Profil Feed</firstterm> verwende den Profilfeed um das
  41. Gesundheitsprofil eines Benutzers nach speziellen Informationen zu durchsuchen.
  42. </para>
  43. </listitem>
  44. <listitem>
  45. <para>
  46. <firstterm>Registrierungs Feed</firstterm>
  47. verwende den Registrierungsfeed um neue CCR Daten in ein Profil einzupflegen.
  48. </para>
  49. </listitem>
  50. <listitem>
  51. <para>
  52. <firstterm>Profil Listen Feed</firstterm> der Profil Listen Feed sollte
  53. verwendet werden um festzustellen mit welchem Gesundheitsprofil eines Benutzer
  54. interagiert werden soll. Dieser Feed ist nur vorhanden wenn man ClientLogin
  55. verwendet.
  56. </para>
  57. </listitem>
  58. </itemizedlist>
  59. </para>
  60. <para>
  61. Siehe <ulink
  62. url="http://code.google.com/apis/health/">http://code.google.com/apis/health</ulink> für
  63. weitere Informationen über die Google Health <acronym>API</acronym>.
  64. </para>
  65. <sect2 id="zend.gdata.health.connect">
  66. <title>Zum Health Service verbinden</title>
  67. <para>
  68. Die Google Health <acronym>API</acronym> basiert, wie alle Google Data
  69. <acronym>API</acronym>s, auf dem Atom Publishing Protokoll (APP), einem
  70. <acronym>XML</acronym> basierenden Format für die Verwaltung von Web-basierenden
  71. Ressourcen. Verkehr zwischen einem Client und dem Google Health Servern findet über
  72. <acronym>HTTP</acronym> statt und erlaubt authentifizierte Verbindungen.
  73. </para>
  74. <para>
  75. Bevor eine Transaktion stattfinden kann, muß eine Verbindung erstellt werden. Das
  76. Erstellen einer Verbindung zu den Health Servern beinhaltet zwei Schritte: Erstellung
  77. eines <acronym>HTTP</acronym> Clients und diesen Client an eine
  78. <classname>Zend_Gdata_Health</classname> Instanz binden.
  79. </para>
  80. <sect3 id="zend.gdata.health.connect.authentication">
  81. <title>Authentifikation</title>
  82. <para>
  83. Die Google Health <acronym>API</acronym> erlaubt den programmtechnischen Zugriff auf
  84. das Gesundheitsprofil eines Benutzer. Es gibt drei Authentifizierungsschemata die
  85. von Google Health unterstützt werden:
  86. </para>
  87. <itemizedlist>
  88. <listitem>
  89. <para>
  90. <firstterm>ClientLogin</firstterm>
  91. bietet direkte Benutzername/Passwort Authentifikation zu den Health Servern.
  92. Da diese Methoden erwarten das Benutzer Ihr Passwort der Anwendung angeben
  93. müssen, wird dieses Authentifizierungsschema nur für
  94. installierte/Desktopanwendungen empfohlen.
  95. </para>
  96. </listitem>
  97. <listitem>
  98. <para>
  99. <firstterm>AuthSub</firstterm>
  100. erlaubt es einen Benutzer seine privaten Daten zu teilen. Das bietet das
  101. selbe Level der bequemlichkeit wir ClientLogin, aber ohne das
  102. Sicherheitsrisiko, was es zu einer idealen Wahl für Web-basierende
  103. Anwendungen macht. Für Google Health muß AuthSub in einem registrierten und
  104. sicheren Modus verwendet werden -- was bedeutet das alle Anfragen zur
  105. <acronym>API</acronym> digital signiert werden müssen.
  106. </para>
  107. </listitem>
  108. <listitem>
  109. <para>
  110. <firstterm>OAuth</firstterm>
  111. ist eine alternative zu AuthSub. Auch wenn dieses Authentifizierungschema
  112. nicht in diesem Dokument diskutiert wird, können weitere Informationen hier
  113. gefunden werden: <ulink
  114. url="http://code.google.com/apis/health/developers_guide_protocol.html#OAuth">Health
  115. Data <acronym>API</acronym> Developer's Guide</ulink>.
  116. </para>
  117. </listitem>
  118. </itemizedlist>
  119. <para>
  120. Siehe
  121. <ulink url="http://code.google.com/apis/gdata/auth.html">Authentication Overview in
  122. the Google Data <acronym>API</acronym> documentation</ulink> für weitere
  123. Informationen über jede Authentifizierungsmethode.
  124. </para>
  125. </sect3>
  126. <sect3 id="zend.gdata.health.connect.service">
  127. <title>Erstellen einer Health Service Instanz</title>
  128. <para>
  129. Um mit Google Health zu interagieren, bietet die Client Bibliothek die Serviceklasse
  130. <classname>Zend_Gdata_Health</classname>. Diese Klasse bietet ein übliches Interface
  131. zu den Google Data und Atom Publishing Protokoll Modellen und hilft bei der
  132. Durchführung von Anfragen von und zur Health <acronym>API</acronym>.
  133. </para>
  134. <para>
  135. Sobald man sich für ein Authentifizierungsschema entschieden hat, ist der nächste
  136. Schritt die Erstellung einer Instanz von <classname>Zend_Gdata_Health</classname>.
  137. Dieser Klasse sollte eine Instanz von <classname>Zend_Gdata_HttpClient</classname>
  138. übergeben werden. Diese bietet ein Interface für- AuthSub/OAuth und ClientLogin um
  139. einen speziell authentifizierten <acronym>HTTP</acronym> Client zu erstellen.
  140. </para>
  141. <para>
  142. Um mit dem H9 des Entwicklers (/h9) statt Google Health (/health) nimmt der
  143. Konstruktor von <classname>Zend_Gdata_Health</classname> ein optionales drittes
  144. Argument mit dem man den H9 Service Name 'weaver' spezifizieren kann.
  145. </para>
  146. <para>
  147. Das folgende Beispiel zeigt wie eine Health Service Klasse bei Verwendung der
  148. ClientLogin Authentifizierung erstellt wird:
  149. </para>
  150. <programlisting language="php"><![CDATA[
  151. // Parameter für die ClientLogin Authentifikation
  152. $healthServiceName = Zend_Gdata_Health::HEALTH_SERVICE_NAME;
  153. //$h9ServiceName = Zend_Gdata_Health::H9_SANDBOX_SERVICE_NAME;
  154. $user = "user@gmail.com";
  155. $pass = "pa$$w0rd";
  156. // Erstellt einen authentifizierten HTTP Client
  157. $client = Zend_Gdata_ClientLogin::getHttpClient($user,
  158. $pass,
  159. $healthServiceName);
  160. // Erstellt eine Instanz des Health Services
  161. $service = new Zend_Gdata_Health($client);
  162. ]]></programlisting>
  163. <para>
  164. Ein Health Service der AuthSub verwendet kann ähnlich erstellt werden, im einem
  165. etwas längeren Aussehen. AuthSub ist das empfohlene Interface um mit Google Health
  166. zu kommunizieren weil jeder Token direkt zu einem speziellen Profil im Account des
  167. Benutzers verlinkt wird. Anders als andere Google Data <acronym>API</acronym>s, ist
  168. es notwendig das alle Anfragen von der eigenen Anwendung digital signiert werden.
  169. </para>
  170. <programlisting language="php"><![CDATA[
  171. /*
  172. * Empfängt die aktuelle URL damit der AuthSub Server weiß wohin er den
  173. * Benutzer routen soll nachdem die Authentifizierung komplett ist.
  174. */
  175. function getCurrentUrl() {
  176. $phpRequestUri = htmlentities(substr($_SERVER['REQUEST_URI'],
  177. 0,
  178. strcspn($_SERVER['REQUEST_URI'],
  179. "\n\r")),
  180. ENT_QUOTES);
  181. if (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') {
  182. $protocol = 'https://';
  183. } else {
  184. $protocol = 'http://';
  185. }
  186. $host = $_SERVER['HTTP_HOST'];
  187. if ($_SERVER['SERVER_PORT'] != '' &&
  188. (($protocol == 'http://' && $_SERVER['SERVER_PORT'] != '80') ||
  189. ($protocol == 'https://' && $_SERVER['SERVER_PORT'] != '443'))) {
  190. $port = ':' . $_SERVER['SERVER_PORT'];
  191. } else {
  192. $port = '';
  193. }
  194. return $protocol . $host . $port . $phpRequestUri;
  195. }
  196. /*
  197. * Leitet einen Benutzer zu AuthSub um wenn er keinen gültigen Session Token
  198. * hat. Wenn er von AuthSub mit einem einmal-zu-verwendenden Token zurückkommt,
  199. * wird ein neuer HTTP Client initialisiert und der Token mit eine langlebigen
  200. * Sessiontoken getauscht.
  201. */
  202. function setupClient($singleUseToken = null) {
  203. $client = null;
  204. // Einen neuen AuthSub Token holen?
  205. if (!$singleUseToken) {
  206. $next = getCurrentUrl();
  207. $scope = 'https://www.google.com/health/feeds';
  208. $authSubHandler = 'https://www.google.com/health/authsub';
  209. $secure = 1;
  210. $session = 1;
  211. $authSubURL = Zend_Gdata_AuthSub::getAuthSubTokenUri($next,
  212. $scope,
  213. $secure,
  214. $session,
  215. $authSubHandler);
  216. // 1 - Erlaubt es Notizen zu schicken und das Lesen von Profildaten
  217. $permission = 1;
  218. $authSubURL .= '&permission=' . $permission;
  219. echo '<a href="' . $authSubURL . '">Dein Google Health Account</a>';
  220. } else {
  221. $client = new Zend_Gdata_HttpClient();
  222. // Setzen des privaten Schlüssels mit dem nachfolgende Anfragen
  223. // signiert werden
  224. $client->setAuthSubPrivateKeyFile('/path/to/your/rsa_private_key.pem',
  225. null,
  226. true);
  227. $sessionToken =
  228. Zend_Gdata_AuthSub::getAuthSubSessionToken(trim($singleUseToken),
  229. $client);
  230. // Setzt den langlebigen Sessiontoken für nachfolgende Anfragen
  231. $client->setAuthSubToken($sessionToken);
  232. }
  233. return $client;
  234. }
  235. // -> Skriptausführung beginnt hier <-
  236. session_start();
  237. $client = setupClient(@$_GET['token']);
  238. // Erstellt eine Instanz des Health Services
  239. $userH9Sandbox = false;
  240. $healthService = new Zend_Gdata_Health($client,
  241. 'googleInc-MyTestAppName-v1.0',
  242. $userH9Sandbox);
  243. ]]></programlisting>
  244. <para>
  245. Achtung: der Rest dieses Dokument wird annehmen das man AuthSub für die
  246. Authentifikation verwendet.
  247. </para>
  248. </sect3>
  249. </sect2>
  250. <sect2 id="zend.gdata.health.profilefeed">
  251. <title>Profil Feed</title>
  252. <para>
  253. Um den Profil Feed des Benutzers abzufragen, muß man sicherstellen das der initiale
  254. AuthSub Token angefragt wird wobei der <property>permission</property> Parameter auf
  255. <emphasis>1</emphasis> gesetzt ist. Der Prozess des extrahierens von Daten aus dem
  256. Profil benötigt zwei Schritte. Das Senden einer Anfrage und dem durchlaufen des
  257. resultierenden Feeds.
  258. </para>
  259. <sect3 id="zend.gdata.health.profilefeed.query">
  260. <title>Eine strukturierte Anfrage senden</title>
  261. <para>
  262. Man kann strukturierte Anfragen senden um spezielle Einträge von einem
  263. Benutzerprofil zu erhalten.
  264. </para>
  265. <para>
  266. Wenn man die Health <acronym>API</acronym> verwendet um ein Profil zu empfangen,
  267. werden speziell konstruierte Anfrage <acronym>URL</acronym>s verwendet um zu
  268. beschreiben welche (CCR) Daten zurückgegeben werden sollen. Die Klasse
  269. <classname>Zend_Gdata_Health_Query</classname> hilft dabei diese Aufgabe zu
  270. vereinfachen indem automatisch eine Abfrage <acronym>URL</acronym> erstellt wird
  271. basierend auf den Parametern die man gesetzt hat.
  272. </para>
  273. <sect4 id="zend.gdata.health.profilefeed.query.construct">
  274. <title>Den Feed abfragen</title>
  275. <para>
  276. Um eine Abfrage eines Profil Feeds durchzuführen, muß eine neue Instanz von
  277. <classname>Zend_Gdata_Health_Query</classname> erzeugt und die
  278. <methodname>getHealthProfileFeed()</methodname> Methode des Services aufgerufen
  279. werden:
  280. </para>
  281. <programlisting language="php"><![CDATA[
  282. $healthService = new Zend_Gdata_Health($client);
  283. // Beispielabfrage für die besten 10 Medikationen mit jeweils 2 Elementen
  284. $query = new Zend_Gdata_Health_Query();
  285. $query->setDigest("true");
  286. $query->setGrouped("true");
  287. $query->setMaxResultsGroup(10);
  288. $query->setMaxResultsInGroup(2);
  289. $query->setCategory("medication");
  290. $profileFeed = $healthService->getHealthProfileFeed($query);
  291. ]]></programlisting>
  292. <para>
  293. Wenn man <methodname>setDigest("true")</methodname> verwendet werden alle CCR
  294. Daten des Benutzers in einem einzelnen Atom <emphasis>&lt;entry&gt;</emphasis>
  295. zurückgegeben.
  296. </para>
  297. <para>
  298. Dem <methodname>setCategory()</methodname> Helfer kann ein zusätzlicher
  299. Parameter übergeben werden um spezifischere CCR Informationen zurückzuerhalten.
  300. Um zum Beispiel nur die Medikation Lipitor zurückzugeben verwendet man
  301. <methodname>setCategory("medication", "Lipitor")</methodname>. Die selbe Methode
  302. kann bei anderen Kategorien wie Konditionen, Allergien, Labor Ergebnisse, usw.
  303. angewendet werden.
  304. </para>
  305. <para>
  306. Eine komplette Liste der unterstützten Abfrageparameter ist im <ulink
  307. url="http://code.google.com/apis/health/reference.html#Parameters">Kapitel
  308. der Abfrageparameter</ulink> des Health <acronym>API</acronym> Referenz
  309. Guides vorhanden.
  310. </para>
  311. </sect4>
  312. </sect3>
  313. <sect3 id="zend.gdata.health.profilefeed.iterate">
  314. <title>Durch die Profil Einträge iterieren</title>
  315. <para>
  316. Jeder Google Health Eintrag enthält CCR Daten, trotzem führt die Verwendung des
  317. Abfrageparameters <property>digest</property> mit <constant>TRUE</constant> dazu
  318. dass alle CCR Elemente (die dieser Abfrage entsprechen) in einen einzelnen Atom
  319. <emphasis>&lt;entry&gt;</emphasis> zusammengefügt werden.
  320. </para>
  321. <para>
  322. Um die kompletten CCR Informationen von einem Eintrag zu erhalten, muß ein Aufruf
  323. zur <methodname>getCcr()</methodname> Methode der
  324. <classname>Zend_Gdata_Health_ProfileEntry</classname> Klasse durchgeführt werden.
  325. Das gibt ein <classname>Zend_Gdata_Health_Extension_CCR</classname> zurück:
  326. </para>
  327. <programlisting language="php"><![CDATA[
  328. $entries = $profileFeed->getEntries();
  329. foreach ($entries as $entry) {
  330. $medications = $entry->getCcr()->getMedications();
  331. //$conditions = $entry->getCcr()->getConditions();
  332. //$immunizations = $entry->getCcr()->getImmunizations();
  333. // Das CCR XML ausgeben (das werden nur die Medikationen des Eintrags sein)
  334. foreach ($medications as $med) {
  335. $xmlStr = $med->ownerDocument->saveXML($med);
  336. echo "<pre>" . $xmlStr . "</pre>";
  337. }
  338. }
  339. ]]></programlisting>
  340. <para>
  341. Hier wird die <methodname>getCcr()</methodname> Methode in Verbindung mit einem
  342. magischen Helfer verwendet um nur die Medikationsdaten aufzureißen und aus den CCR
  343. des Eintrags zu extrahieren. Der hierbei erwähnte magische Helfer nimmt das Formular
  344. <methodname>getCATEGORYNAME()</methodname>, wobei <constant>CATEGORYNAME</constant>
  345. eine unterstützte Kategorie von Google Health ist. Für mögliche Kategorien kann in
  346. den <ulink url="http://code.google.com/apis/health/reference.html#CatQueries">Google
  347. Health Referenz Guide</ulink> gesehen werden.
  348. </para>
  349. <para>
  350. Um effizienter zu sein, können auch Kategorie Abfragen verwendet werden um nur die
  351. notwendigen CCRs von den Google Health Servern zu erhalten. Dann muß durch diese
  352. Ergebnisse iteriert werden:
  353. </para>
  354. <programlisting language="php"><![CDATA[
  355. $query = new Zend_Gdata_Health_Query();
  356. $query->setDigest("true");
  357. $query->setCategory("condition");
  358. $profileFeed = $healthService->getHealthProfileFeed($query);
  359. // Da die Abfrage digest=true enthält, wird nur der Atom Eintrag zurückgegeben
  360. $entry = $profileFeed->entry[0];
  361. $conditions = $entry->getCcr()->getConditions();
  362. // Die CCR Daten ausgeben (das sind nur die Konditionen des Profils)
  363. foreach ($conditions as $cond) {
  364. $xmlStr = $cond->ownerDocument->saveXML($cond);
  365. echo "<pre>" . $xmlStr . "</pre>";
  366. }
  367. ]]></programlisting>
  368. </sect3>
  369. </sect2>
  370. <sect2 id="zend.gdata.health.profilelist">
  371. <title>Profil Listen Feed</title>
  372. <para>
  373. Beachte: Dieser Feed ist nur vorhanden wenn man ClientLogin verwendet
  374. </para>
  375. <para>
  376. Da ClientLogin bei jedem seiner Feeds eine Profil ID benötigt, sollten Anwendungen
  377. diesen Feed als erstes abfragen um die richtigen Profile auszuwählen. Der Profil Listen
  378. Feed gibt Atom Einträge zurück die jedem Profil im Benutzeraccount von Google Health
  379. entsprechen. Die ProfilID wird im Atom <emphasis>&lt;content&gt;</emphasis> und der Name
  380. im <emphasis>&lt;title&gt;</emphasis> Element zurückgegeben.
  381. </para>
  382. <sect3 id="zend.gdata.health.profilelist.query">
  383. <title>Den Feed abfragen</title>
  384. <para>
  385. Um eine Abfrage gegen den Profil Listen Feed durchzuführen muß die
  386. <methodname>getHealthProfileListFeed()</methodname> Methode des Services aufgerufen
  387. werden:
  388. </para>
  389. <programlisting language="php"><![CDATA[
  390. $client = Zend_Gdata_ClientLogin::getHttpClient('user@gmail.com',
  391. 'pa$$word',
  392. 'health');
  393. $healthService = new Zend_Gdata_Health($client);
  394. $feed = $healthService->getHealthProfileListFeed();
  395. // Jeden Namen und jede ID des Profils ausgeben
  396. $entries = $feed->getEntries();
  397. foreach ($entries as $entry) {
  398. echo '<p>Profil Name: ' . $entry->getProfileName() . '<br>';
  399. echo 'Profil ID: ' . $entry->getProfileID() . '</p>';
  400. }
  401. ]]></programlisting>
  402. <para>
  403. Sobald man sich entschieden hat welches Profil verwendet werden soll, wird
  404. <methodname>setProfileID()</methodname> mit der Profil ID als Argument aufgerufen.
  405. Das begrenzt die weiteren <acronym>API</acronym> Abfragen auf genau das betreffende
  406. Profil:
  407. </para>
  408. <programlisting language="php"><![CDATA[
  409. // Verwende das erste Profil
  410. $profileID = $feed->entry[0]->getProfileID();
  411. $healthService->setProfileID($profileID);
  412. $profileFeed = $healthService->getHealthProfileFeed();
  413. $profileID = $healthService->getProfileID();
  414. echo '<p><b>Abgefragte Profil ID</b>: ' . $profileID . '</p>';
  415. ]]></programlisting>
  416. </sect3>
  417. </sect2>
  418. <sect2 id="zend.gdata.health.notice">
  419. <title>Notizen an des Register Feed versenden</title>
  420. <para>
  421. Individuelle Antworten zum registrierten Feed sind als Notizen bekannt. Notizen werden
  422. von Dritt-Anwendungen gesendet um den Benutzer über ein neues Event zu informieren. Mit
  423. AuthSub/OAuth, sind Notizen einfach etwas womit die eigene Anwendung neue CCR
  424. Informationen zu einem Benutzerprofil hinzufügen kann. Notizen können reinen Text
  425. enthalten (inklusive einiger <acronym>XHTML</acronym> Elemente), ein CCR Dokument oder
  426. beides. Als Beispiel können Notizen gesendet werden um Benutzer daran zu erinnern das
  427. Sie spezielle Rezepte nehmen sollen, oder sie können Laborergebnisse im CCR Format
  428. enthalten.
  429. </para>
  430. <sect3 id="zend.gdata.health.notice.send">
  431. <title>Senden einer Notiz</title>
  432. <para>
  433. Notizen können durch das Verwenden der <methodname>sendHealthNotice()</methodname>
  434. Methode des Health Services gesendet werden:
  435. </para>
  436. <programlisting language="php"><![CDATA[
  437. $healthService = new Zend_Gdata_Health($client);
  438. $subject = "Der Titel der Notiz ist hier";
  439. $body = "Der Notizinhalt kann einige <b>html</b> Elemente enthalten";
  440. $ccr = '<ContinuityOfCareRecord xmlns="urn:astm-org:CCR">
  441. <Body>
  442. <Problems>
  443. <Problem>
  444. <DateTime>
  445. <Type><Text>Start Datum</Text></Type>
  446. <ExactDateTime>2007-04-04T07:00:00Z</ExactDateTime>
  447. </DateTime>
  448. <Description>
  449. <Text>Medikament gegen Aorta Verengung</Text>
  450. <Code>
  451. <Value>410.10</Value>
  452. <CodingSystem>ICD9</CodingSystem>
  453. <Version>2004</Version>
  454. </Code>
  455. </Description>
  456. <Status><Text>Aktiv</Text></Status>
  457. </Problem>
  458. </Problems>
  459. </Body>
  460. </ContinuityOfCareRecord>';
  461. $responseEntry = $healthService->sendHealthNotice($subject,
  462. $body,
  463. "html",
  464. $ccr);
  465. ]]></programlisting>
  466. </sect3>
  467. </sect2>
  468. </sect1>