Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Wednesday, 25 March 2020

Kry launches free service for doctors to do video consultations during COVID-19 crisis

Swedish telehealth startup Kry has launched a tool for healthcare professionals to conduct remote consultations during the coronavirus pandemic. Calls for EU citizens to self isolate to reduce the spread of COVID-19 is driving major demand for video appointments, it said.

The platform — Care Connect by Kry — is launching in Europe, with ten languages supported initially, but will shortly be opening up worldwide. CEO and co-founder, Johannes Schildt, told us it’ll be launching in North America within a matter of “days”. 

Last week US regulators relaxed rules around the use of telehealth platforms for delivering a broader range of healthcare services — opening up the market for remote consultations during the coronavirus crisis.

“We are working extremely hard at all levels because this is time critical,” said Schildt. “We want to get this out there as soon as we possibly can. Today we’re launching it in Europe, we’re aiming to have it available within days in the US and Canada.”

The web-based platform for healthcare professionals to carry out encrypted video consultations does not require a Kry account. Instead doctors sign up (and in) with an email address and are able to send a one-time SMS link to a patient’s mobile phone number — which the patient then clicks on to begin a video consultation with the doctor from their smartphone.

Kry says the clinician’s email will never be shared with the patient. 

“We have been doing this for a long time but now it’s more important than ever that you have as many as possible of the current consultations now happening in physical locations are moved to digital,” said Schildt. “It’s for all clinicians, for anyone that’s run their own practice — to enable them to move their consultations to video in an easy way.”

He said Kry has seen demand for its commercial video-chat-with-a-doctor roughly doubling in recent weeks as Europeans seek alternatives for accessing primary care during the coronavirus crisis.   

“We’ve seen a big increase in demand… from patients. But a lot of that is also not driven by COVID-19 specific things — it’s everything else,” he told TechCrunch. “Obviously you have a new virus that is spreading but you also have a lack of access to GP practices and traditional healthcare — because a lot of traditional primary care is closing down. So you still have a lot of people that have urinary track infections, eye infections, skin conditions and other things that we can help with.

“So we see a big uplift in all symptoms. What’s also very encouraging to see is that we see a big uplift in older patients… understanding the benefits of digital healthcare. Usually when we’re launching in new markets the first cohort is the young and slightly more tech savvy population.”

Schildt said Kry is recruiting clinicians “all across Europe” to cope with increased demand. 

“We’re getting a lot of senior, retired clinicians,” he told us. “We’re unlocking a lot of underused talent so we now have a lot of retired doctors joining and helping out. And they should obviously not be in an intensive care unit or at the primary healthcare center where they risk getting the disease because they are old and might be fragile but they’re usually very, very senior doctors. 

“We’re also getting a lot of doctors who are on parental leave or part time sick leave and so on. So it’s a massive exercise for us now across all our European markets.”

The 2015-founded startup has served up some 1.6 million digital doctors appointments across Europe at this stage. It said it will offer training to doctors signing up to Care Connect on how to carry out remote consultations — given many may be doing so for the first time.

While the intent with Care Connect is to support heavily burdened public healthcare services during the coronavirus pandemic, there’s clearly scope for Kry to turn the platform into an additional revenue-generating service in future — once some of the doctors it onboards now for free have become comfortable using it.

Although Schildt emphasizes that’s not why they’ve scrambled to get the product out there right now. 

“We’re building this because we feel a huge responsibility to help out,” he said. “I think that everybody has a responsibility to help out. And what we can do of course in the market that we’re in we are working super hard on all levels and we’re working very closely with different governments in the markets that we’re in — but this is also a way for us to help out in the markets where we currently don’t have our own medical staff.

“So this is a solution that could be helpful in Spain, Italy, and in other markets around the globe.”

Kry has more products to help fight COVID-19 in the pipeline — and has already launched a symptom-checker for the disease within its existing apps for patients (aka Kry, or Livi) in all its European markets. It’s also doing some home-monitoring partnerships for patients who are in quarantine, per Schildt.

He won’t be drawn on what else it’s working on — noting it’s “working very closely with some of the European governments”. “In some of those cases they have specifically asked us not to be specific about what we’re doing,” he said. 

Asked about how else it’s using symptom data generated by use of its services, he said it’s sharing aggregated data with existing paying customers, such as the UK’s National Health Service (NHS).

He also told us European governments are keen to get access to data that might help them track how the coronavirus is spreading.

“Obviously this is really interesting data — at an aggregated level — as we can see where you have symptoms starting to spread. And obviously as a big partner to some of the largest payers of healthcare in the world — [e.g.] European governments — we are monitoring this very closely together with them,” said Schildt.

“We can see in real time, more or less, where you have different symptoms that are trending — and we already, before you had the big COVID-19 outbreak, you could see that viral infections and upper respiratory infections started to trend in a bit unusual way compared to last year. And that data we’re also sharing with our main [healthcare customers, including the UK’s NHS] to help their staff understand demand.”



from TechCrunch https://ift.tt/2UgEUAG
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support