public function testSaveImage()
 {
     $expectedFileContent = 'image';
     $entity = Measurement::createNew()->setChartImage(base64_encode($expectedFileContent));
     $filename = sprintf("%s/jpg.%s", sys_get_temp_dir(), rand(1, 9999999));
     $entity->saveImage($filename);
     $this->assertStringEqualsFile($filename, $expectedFileContent);
 }
 /**
  * {@inheritdoc}
  */
 public function getMeasurements($chartIdentifier)
 {
     $url = sprintf('/api/Storage/Chart/%s/Measurements', $chartIdentifier);
     $data = $this->doRequest($url);
     return Measurement::createArrayFromJson($data);
 }
 public function jsonInstantiationDataProvider()
 {
     return array(array('Grow\\Client\\Model\\Chart', array("ChartImage" => base64_encode('image'), "BMI" => 16.9, "TOW" => 3423, "Ethnicity" => "Unclassified", "Height" => 163, "Weight" => 45, "Parity" => 4, "DateCreated" => '2015-01-26 10:12:16', "EDD" => '2015-01-07', "Centiles" => array(array("CentileIdentifier" => 31095, "BirthWeight" => 3450, "Gender" => 1, "DetectedSGA" => false, "ReferralForSuspectedSGA" => false, "Outcome" => 0, "AntenatalCareUnit" => 2, "Gestation" => 283, "Centile" => 38.9, "GestationFormatted" => "40 weeks 3 days", "DateCreated" => "2015-01-26 10:44:46")), "Measurements" => array(array("MeasurementIdentifier" => 1018, "Type" => 0, "Value" => 32, "DateCreated" => "2015-01-26 10:25:17", "Date" => "2014-09-20"))), Chart::createNew()->setChartImage(base64_encode('image'))->setBmi(16.9)->setTow(3423)->setEthnicity("Unclassified")->setHeight(163)->setWeight(45)->setParity(4)->setDateCreated(new DateTime('2015-01-26 10:12:16'))->setEdd(new DateTime('2015-01-07'))->setCentiles(array(Centile::createNew()->setCentileIdentifier(31095)->setBirthWeight(3450)->setGender(1)->setDetectedSga(false)->setReferralForSuspectedSga(false)->setOutcome(0)->setAntenatalCareUnit(2)->setGestation(283)->setCentile(38.9)->setGestationFormatted("40 weeks 3 days")->setDateCreated(new DateTime("2015-01-26 10:44:46"))))->setMeasurements(array(Measurement::createNew()->setMeasurementIdentifier(1018)->setType(0)->setValue(32)->setDateCreated(new DateTime("2015-01-26 10:25:17"))->setDate(new DateTime("2014-09-20"))))));
 }
$measurementTypes = $apiClient->getMeasurementTypes();
$hospitals = $apiClient->getHospitals();
$babies = array(Baby::createNew()->setBirthOrderNumber(0)->setBirthWeight(3550)->setGender($genders->current()->getIdentifier())->setGestation(275)->setName('Baby1')->setUnknown(false), Baby::createNew()->setBirthOrderNumber(1)->setUnknown(true));
$imageConfig = ImageConfig::createNew()->setGreyscale(false)->setGridlinesByWeight(false)->setScalePercent(200)->setShowExtraCentiles(false);
$pdfConfig = PdfConfig::createNew()->setGreyscale(false)->setGridlinesByWeight(false)->setShowExtraCentiles(false);
$chart = Chart::createNew()->setBabies($babies)->setDob(new DateTime("1990-01-01 01:01:01"))->setEdd($edd)->setEthnicity($ethnicities->current()->getIdentifier())->setFirstname("SampleFN")->setLastname("SampleLN")->setMotherRef("SampleMR")->setGetPdf(true)->setGetImage(true)->setHeight(163)->setImageConfig($imageConfig)->setPdfConfig($pdfConfig)->setWeight(45);
$chartResponse = $apiClient->addChart($chart);
$chartIdentifier = $chart->getChartIdentifier();
$chartIdentifierPrefix = $apiClient->getChartIdentifierPrefix($chartIdentifier);
$prefixedChartIdentifier = sprintf("%s%s", (string) $chartIdentifierPrefix, $chartIdentifier);
echo sprintf("Chart #%s added.\n", $chartIdentifier);
$imageFilename = sprintf("/tmp/%s.jpg", $chartIdentifier);
$chartResponse->saveImage($imageFilename);
echo sprintf("Chart's image saved as '%s'.\n", $imageFilename);
$pdfFilename = sprintf("/tmp/%s.pdf", $chartIdentifier);
$chartResponse->savePdf($pdfFilename);
echo sprintf("Chart's pdf saved as '%s'.\n", $pdfFilename);
// getChart($chartIdentifier, DateTime $edd, ImageConfig $imageConfig);
// Measurement - Add
$measurement = Measurement::createNew()->setDate(new DateTime())->setType($measurementTypes->current()->getIdentifier())->setValue(32)->setImageConfig($imageConfig);
$measurement = $apiClient->addMeasurement($prefixedChartIdentifier, $measurement);
$measurementIdentifier = $measurement->getMeasurementIdentifier();
echo sprintf("Measurement #%s added to chart #%s.\n", $measurementIdentifier, $chartIdentifier);
$measurementImageFilename = sprintf("/tmp/%s.%s.jpg", $chartIdentifier, $measurementIdentifier);
$measurement->saveImage($measurementImageFilename);
echo sprintf("Measurement's image saved as '%s'. You can see x-mark with value of 32 on it.\n", $measurementImageFilename);
// Centile - Add
$centile = Centile::createNew()->setAntenatalCareUnit($hospitals->current()->getIdentifier())->setBabyDob($edd)->setBirthWeight(3450)->setDetectedSga(false)->setEdd($edd)->setGender($genders->current()->getIdentifier())->setOutcome($outcomes->current()->getIdentifier())->setReferralForSuspectedSga(false);
$centile = $apiClient->addCentile($prefixedChartIdentifier, $centile);
$centileIdentifier = $centile->getCentileIdentifier();
echo sprintf("Centile #%s added.\nGestation: %s\n", $centileIdentifier, $centile->getGestationFormatted());
 /**
  * {@inheritdoc}
  */
 public static function createFromJson($json)
 {
     $chart = self::createNew();
     // if ($json['ChartIdentifier']) {
     //     $chart->setChartIdentifier($json['ChartIdentifier']);
     // }
     return $chart->setChartImage($json['ChartImage'])->setBmi($json['BMI'])->setTow($json['TOW'])->setEthnicity($json['Ethnicity'])->setHeight($json['Height'])->setWeight($json['Weight'])->setParity($json['Parity'])->setDateCreated(new DateTime($json['DateCreated']))->setEdd(new DateTime($json['EDD']))->setCentiles(Centile::createArrayFromJson($json['Centiles']))->setMeasurements(Measurement::createArrayFromJson($json['Measurements']));
 }