If you’re like me, someone who has been building web applications for 15 years or so, then like me, you probably freaked out the first time you pasted a screenshot into your gmail.  You thought, “what just happened?”  You thought, “wait, this shouldn’t be possible!”  And your immediate next thought was, “omg, how do I do that?”

This is not a ubiquitous functionality at the moment–I’m not able to paste a screenshot into Yahoo! Mail or WordPress right now, nor did I have a need to figure out a way to paste anything using Internet Explorer or Firefox.  In building a Knowledge Base for our SecureVideo.com support team to be able to serve content onto our website, we decided to implement the ability for them to paste a screenshot to our server using AJAX, have the server show the URL, and then allow them to upload HTML and include the screenshots by creating image tags using the TinyMCE HTML Editor.

Anyone can implement TinyMCE by googling, but the tricky part was getting the paste and AJAX to work, and mind you, as of the time of this writing, this only works in Chrome.  That’s fine for me since our support team uses Chrome, but if you can’t control the browser choice, then this method will not be as valuable to you.

First, you need to capture the paste event on your web page.  This is done using some Chrome-specific Javascript to handle the paste event, and jquery to send the image to the server via AJAX.

        
   document.onkeydown = function (e) { return on_keyboard_action(e); }
   document.onkeyup = function (e) { return on_keyboardup_action(e); }

   var ctrl_pressed = false;

   function on_keyboard_action(event) {
       k = event.keyCode;
       //ctrl
       if (k == 17) {
           if (ctrl_pressed == false)
               ctrl_pressed = true;
           if (!window.Clipboard)
               pasteCatcher.focus();
       }
   }
   function on_keyboardup_action(event) {
       //ctrl
       if (k == 17)
           ctrl_pressed = false;
   }

   // Paste in from Chrome clipboard
   window.addEventListener("paste", pasteHandler);
   function pasteHandler(e) {
       if (e.clipboardData) {
           var items = e.clipboardData.items;
           if (items) {
               for (var i = 0; i < items.length; i++) {
                   // Only process anything if we have an image
                   if (items[i].type.indexOf("image") !== -1) {
                       // Get the pasted item as a File Blob
                       var blob = items[i].getAsFile();

                       // Reader will read the file
                       var reader = new FileReader();

                       // This fires after we have a base64 load of the file 
                       reader.onload = function (event) {
                           // Once reader loads, sent the blob to the server
                           $.ajax({
                               type: "POST",
                               url: '/Knowledge/Screencap',
                               data: event.target.result,
                               success: function (resultHtml) {
                                   // Show the uploaded image
                                   $("#screencap-container").html(resultHtml);
                               }
                           });
                       };
                       // Convert the blob from clipboard to base64
                       // After this finishes, reader.onload event will fire
                       reader.readAsDataURL(blob);
                   }
               }
           }
       }
   }

Once you’ve got the paste and AJAX calls set up, the user pastes an image, and then the AJAX call sends your base64 encoded image to the server.  Here’s the actual content sent in the HTTP POST:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABVYAAA...

On the ASP.NET MVC side, I was not able to get the controller to automatically bind the posted data into a controller parameter.  It’s probably possible, but I’m under some time pressure, so I just examined the HTTP Request’s Input Stream, and picked the image from there.

      
   public ActionResult Screencap()
   {
      // Get the raw input stream (return to the start of the stream first!)
      Request.InputStream.Position = 0;
      string payload = new StreamReader(Request.InputStream).ReadToEnd();

      string indicator = "base64,";
      int imageStartIdx = payload.IndexOf(indicator);
      if (imageStartIdx >= 0)
      {
          string base64Image = payload.Substring(imageStartIdx + indicator.Length);
          byte[] fileBytes = Convert.FromBase64String(base64Image);
          System.IO.File.WriteAllBytes(saveToPath, fileBytes);
      }
      // Return the URL of the newly saved file for display on the browser
      return Content(PathManager.ToUrl(saveToPath));
   }

Now my support staff can add Knowledge Articles, including lots and lots of screenshots (a good thing), without ever leaving the browser window!…

Read More

Did you know that SecureVideo.com is not just for people in the medical field that need to abide by HIPAA laws?

The truth is, anyone looking for an easy, secure, low-cost video conferencing connection could use SecureVideo.  Our meetings are peer-to-peer.   That means your video session isn’t routed through any servers and it can’t be saved or recorded by SecureVideo.com, nor subpoenaed from us.   Your meetings stay confidential, as if you were talking to a person face-to-face.

In general, much of our daily communication is nonverbal.  Unlike phone calls, you can read more of your clients’ or associates’ nonverbal cues through a videoconference call.  This comes in handy, especially since we spend so time communicating electronically, missing the tone and body language that accompany the actual text we read.

SecureVideo customers also benefit from the scheduler included with all SecureVideo plans and branding features you get with the Individual PLUS or Enterprise Plan.   These features enable more of your clients to keep their appointments with you.   Plus, your session invites appear to come from your own videoconferencing platform: YourCompanyNameHere.securevideo.com.   How cool is that?

Video conferencing has become a necessary tool for communication in any field.   For example, lawyers can use it to gather oral statements for a deposition, without involving expensive or lengthy travel.  Or allow loan officers to interview their borrowers remotely and process applications in collaboration with other bank branches.  It could also give Human Resource managers a way to conduct interviews with talented candidates, without restricting their choices to local applicants.

You know your workflow best.  When your business calls for secure, face-to-face communication, you have options.  Try us for free.…

Read More

Doctor’s visits online?  Having multiple carriers to choose from?  Are we living in a futuristic time or what?!  Like many of you out there, I’m new to the field of telemedicine.  Not as a practitioner but as a Technical Support Agent.

I recently moved from the bustling, densely populated San Francisco Bay Area to a picturesque town in rural western Massachusetts.  Adjusting to vast open landscapes and honking bands of geese in a town of 7,000 is radical.  One of the realities living here is a shortage of skilled medical professionals.  Looking for a new doctor has been a feat.  Office after office I’ve called across neighboring towns are not accepting new clients.  The best lead I’ve found is a health center with a waitlist of 100 people for a new doctor they hope to hire by the end of November.   It made perfect sense to learn that telehealth sprouted from the need to serve people in remote areas, according to an interview with Dr. Joseph Kvedar by Lylah M. Alphonse, Managing Editor of Special Reports for U.S. News & World Report.

Using technology to build access and connections with people is so important to our time.  Equally important is privacy.  As we send information into cyberspace, we certainly want it kept securely and ethically.  Patient privacy is of utmost concern in providing online healthcare.  SecureVideo offers a person to person, HIPAA-compliant solution that helps people gain access to care that otherwise might not be available.  We do not have the ability to record sessions, so information shared over SecureVideo.com stays private always.

As I’m reading up about telemental health, I see that the Google giants are also jumping into remote person-to-person videoconferencing solutions, called Helpouts.  Their service hinges upon people helping people in real-time.  They have different categories of Helpouts, including Health where some health providers are making themselves available.  I thought it would be worthwhile to review how SecureVideo and Google Hangouts stack up for those of you looking into videoconferencing solutions for healthcare.

SecureVideo:

Affordable. We do not take a fixed % of your session. There are three different plans ranging from $2-$4 per session.  If you are new to videoconferencing, our free account offers you four sessions a month.

True privacy.  HIPAA-compliant one to one connection.  We do not record your sessions.

Sophisticated scheduler and appointment reminder system reduces no-shows.

Branding.  Use your own color schemes, logos, etc.  All outgoing communication to clients will read from you instead of SecureVideo.com

Business Associate Agreement (BAA).  We can provide a written assurance to properly safeguard protected health information.

Easy PayPal integration. Optional for Individual Plus and Enterprise customers.  Allows your clients to pay for services directly through your session page.

Take your existing business online.  SecureVideo is a great solution for your established or budding practice.

Easy!  You can be up and running literally in minutes.

Google Helpouts:

Up to 20% per transaction.  There is a lack of clarity around how they charge for a health Helpout, but as of Jan. 2014 there will be a fixed percentage charged per transaction.

-A public Google+ page is required to promote your business.

-A Google wallet account is required for set up.

Screening. You must go through a third party screening process to verify your credentials.

-Helpouts offer BAA agreements.  Originally, I had thought they didn’t.  It’s a good thing, since they are required by the United States Department of Health and Human Services for HIPAA compliance.  However, the world recently discovered that the NSA and the British equivalent, GCHQ hacked into Google’s overseas servers.  Levi Sumagaysay, Editor of  SiliconBeat, the San Jose Mercury News’ Tech Blog, wrote “there are more government requests for Google user data than ever, with the number doubling in the past three years.”

100% money back guarantee for clients only when you allow Google to record your sessions for quality assurance.  They seem to be waiving this for Health hangouts to meet HIPAA compliance.

Your privacy is questionable.   This the major sticking point.  On October 30, 2013, The New York Times reported that the National Securtiy Agency tapped Google’s and Yahoo’s fiber-optic cables.  The GCHQ has the “ability to tap into and store huge volumes of data drawn from fibre-optic cables for up to 30 days so that it can be shifted and analysed,” according to an article in June by the Guardian.  Google has shown concern for this kind of spying and has been working on encryption since news of snooping leaked over the summer.  It is clear however, that NSA and GCHQ have the capacity to intercept recordings of calls, emails, and other data- including videoconfrencing sessions.

Without a doubt, Google’s Helpouts page is impressive.  There is a very cool video that reminded me how much I’ve always wanted to take guitar lessons.  But when you cut through the color schemes, the cool video, and the big name:  SecureVideo offers more for less.  Less hassle.  Less artificial constructions that keep you steps away from simple and direct one-to-one connections.  Patients are waiting with real concerns.  Don’t make them wait any longer than necessary.  Meet them with more of you and a lot more privacy.…

Read More