Hey Josh,
        Looks like you are having some of the same types of issues I
am. I am used to working in arrays, but now I am working with xpath,
and it is very unfamliar. I have recently had an equivilent problem,
and I think sharing it might help you solve yours....

What follows is a way to get the Allergies information into a sensible
array.

    foreach ($profileFeed->getEntries() as $entry) {

        $allergies = $entry->getCcr()->getAllergies()->item(0);
        $xpath = new DOMXpath($allergies->ownerDocument);
        $elements = $xpath->query("//ccr:Alerts/ccr:Alert/*");
        foreach($elements as $element){
        //      echo $element->nodeName . " " . $element-
>textContent . "<br>";

                if(strcmp($element->nodeName,'Type')== 0){
                        $count++;
                }

                $results[$count][$element->nodeName] = $element-
>textContent;
        }
    }

        foreach($results as $result_array){
                $allergy_array[$result_array['Description']] =
$result_array;
        }

        var_export($allergy_array);

Note that the * matches everything under Alert, which means that I
will loop over every sub-entry. I know that when I see "Type" that
means I am in a new Alert. Which means by counting them I can separate
the xml entries into separate php arrays.

HTH,
-FT

On Jan 6, 10:52 pm, Josh <[email protected]> wrote:
> Hi,
>
> Thanks for the help. I am able to grab the Result description text
> using your method, but how can I grab this and the Date together?
>
> $tests = $entry->getCcr()->getResults();
>        foreach ($tests as $test) {
>           $xpath= new DOMXpath($test->ownerDocument);
>   $resultName = $xpath->query("//ccr:Results/ccr:Result/ccr:Test/
> ccr:Description/ccr:Text");
> //$resultDate = $xpath->query("//ccr:Results/ccr:Result/ccr:DateTime/
> ccr:ExactDateTime");
>  foreach ($resultName as $name) {
>     echo "Test result: " . $name->nodeValue . "<br>";
>   }
>   }
>
> I need to be able to implement something like:
>     echo "Test result: " . $name->nodeValue . " , Date: " . $date-
>
> >nodeValue . "<br>";
>
> How can I accomplish this? (Two separate "foreach" clauses cannot
> bring the two data sets, Date and Name, together in the same spot.)
>
> Thanks.
>
> On Jan 6, 8:48 pm, Josh <[email protected]> wrote:
>
> > Hi,
>
> > Thanks for the help. I am able to grab the Result description text
> > using your method, but how can I grab this and the Date together?
>
> > $tests = $entry->getCcr()->getResults();
> >        foreach ($tests as $test) {
> >           $xpath= new DOMXpath($test->ownerDocument);
> >   $resultName = $xpath->query("//ccr:Results/ccr:Result/ccr:Test/
> > ccr:Description/ccr:Text");
> > //$resultDate = $xpath->query("//ccr:Results/ccr:Result/ccr:DateTime/
> > ccr:ExactDateTime");
> >  foreach ($resultName as $name => $date) {
> >     echo "Test result: " . $name->nodeValue . "<br>";
> >   }
> >   }
>
> > I need to be able to implement something like:
> >     echo "Test result: " . $name->nodeValue . " , Date: " . $date-
>
> > >nodeValue . "<br>";
>
> > How can I accomplish this? (Two separate "foreach" clauses cannot
> > bring the two data sets, Date and Name, together in the same spot.)
>
> > Thanks.
>
> > On Jan 6, 2:05 pm, "Eric (Google)" <[email protected]> wrote:
>
> > > Hi Josh,
>
> > > You should not rely on the position of elements in the CCR data.
>
> > > Instead, I would usexpathto extract the elements you're looking for:
> > > foreach ($tests as $test) {
> > >   $xpath= new DOMXpath($test->ownerDocument);
> > >   $resultName = $xpath->query("//ccr:Results/ccr:Result/ccr:Test/
> > > ccr:Description/ccr:Text");
> > >   foreach ($resultName as $name) {
> > >     echo "Test result: " . $name->nodeValue . "<br>";
> > >   }
>
> > > }
>
> > > On Jan 5, 5:54 pm, Josh <[email protected]> wrote:
>
> > > > I am working on grabbing information from Google for use on my site,
> > > > and I have a question about getting Test Results.
>
> > > > For procedures and immunizations, I have been able to get the
> > > > information using code similar to that seen below, except for the
> > > > change in the first line's "getTest()" to the appropriate category,
> > > > and the change in the third line's "Text" to Procedure and ProductName
> > > > respectively.
>
> > > > The difference that concerns me is the "item" number on line 3. For
> > > > procedures and immunizations, "item(0)" worked fine. For Test Results,
> > > > I have to use "item(1)". Is this stable code? Is the order of the
> > > > Google CCR static, and will the item number remain consistent for
> > > > grabbing the desired data? If yes, then I'll leave it as is. But if
> > > > not, what is the better way to accomplish this?
>
> > > > code fragment:
> > > >        $tests = $entry->getCcr()->getTest();
> > > >        foreach ($tests as $test) {
> > > >           $edesc = 
> > > > $test->getElementsByTagName("Text")->item(1)->nodeValue;
>
> > > >           $edate = $test->getElementsByTagName("ExactDateTime")->item
> > > > (0)->nodeValue;
> > > >           echo $edesc.' on '.$edate;
> > > >          .........etc.........
>
> > > > Thanks.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Health Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/googlehealthdevelopers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to