Mobile
devices have made instant access to medical records by medical professionals a
reality. This two-part series, “Accessing Medical Records on Mobile Devices”
began with a review of how medical
records may be accessed with Android™ devices. The final part of the series concludes with how to utilize an
iOS™ (Apple®) mobile device to access medical records.
Medical
professionals can use a mobile phone or a tablet device to access patient
data. Accusoft, a leader in Windows SDKs, has moved into the mobile space
with exciting new offerings that give medical professionals mobile access to a
wide array of medical data. This whitepaper will focus on two recent
software development toolkit releases and how they can be used to enable access
to medical records on iOS devices: AIMTools™ and Barcode Xpress Mobile™.
Use Case: Patient Medical Records
The use of barcoded
bracelets for patients is now commonplace, and for obvious reasons: it provides
positive identification, even if a patient is unable to do so themselves. This
enhances patient safety and greatly reduces the chance of a medical error arising
from dosing (or worse, operating on) the wrong patient. The New England
Journal of Medicine recently documented a study in an
article titled, “Effect of Bar-Code Technology on the Safety of Medication
Administration”. The results of the study confirmed the use of barcode
technology for dosing and administering patient medications led to a
significant reduction in errors.
Many facilities encode
patient bracelets with 1D barcodes, such as Code 128. Code 128 is an
alphanumeric symbology, which is well suited for encoding information like a
patient ID or name. It can also be read easily and accurately by commonly
available laser scanners.
Ease of Use
Barcode Xpress Mobile™
for iOS provides a clean, flexible and easy to use way to create a mobile
application for scanning barcodes. It has an interface tailored specifically
to iOS that uses Accusoft’s very fast and accurate barcode recognition library.
Creating a barcode recognition application has never been easier. The source
code supplied with the SDK can be used as an example, or customized and used as
the basis of your own application. It does all of the work to gather and
process images, leaving you free to concentrate on using the values decoded
from the barcodes. Here’s a snippet of code that shows just how easy it is to
start using Barcode Xpress Mobile for iOS through its public interface, named
BXInterface:
BXLicense* license = [[BXLicense alloc] initWithData:@"Your OEM Key Here"
solutionName:@"Your Solution Name Here"
key1:0 key2:0 key3:0 key4:0 ];
barcodeXpress = [[BXInterface alloc] initWithLicense:license];
[license release];
[barcodeXpress SetCameraCallback :self :@selector(onCameraUpdate:)];
[barcodeXpress SetRecognitionCallback :self :@selector(onBarcodeRecognition:)];
[barcodeXpress SetProcessingCallback :self :@selector(onProcessingBarcode:)];
AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] init];
[barcodeXpress StartRecognition :previewLayer];
At this point, the program is up and running in an event-driven
manner. BXInterface takes care of configuring the camera to use the
optimum resolution it can provide. It uses the appropriate number of
processing threads for the number of available CPU cores. It samples the
video camera frame buffer and asynchronously sends those images to Barcode
Xpress for recognition. When a barcode is recognized, BXInterface
notifies the user interface through the onBarcodeRecognition
callback.
You customize the callback to use the decoded barcode value.
Medical Bracelets using 1D Barcodes
Here is a 1D Barcode on
a bracelet containing just a patient ID, encoded using the Code 128
symbology. We’ll show how Barcode Xpress Mobile for iOS can be used to create
an identification application.
Here’s the bracelet on a
patient’s arm:
And here’s Barcode
Xpress Mobile for iOS, reading the barcode and displaying the patient ID:
Using the Decoded Data
We’ve previously shown
how to begin gathering and decoding images with the camera on an iOS device.
Once the barcode has been decoded, the data (“A32581239”) is available for use
in the onBarcodeRecognition
callback method. For example, suppose this
patient ID is an index to a patient record that contains images on the
hospital’s server. We can retrieve these images using the index from the
barcode that was read by Barcode Xpress for iOS. Once retrieved, the images
can be displayed on the mobile device.
Let’s see how we can use
this callback to retrieve a file. In a real world implementation, due to
security considerations and HIPPA requirements, HTTP would not be sufficient.
This code fragment is intended to demonstrate the concept of using a barcode
value, and should not be used in an implementation. Security is left as a
separate exercise for the reader.
- (void)onBarcodeRecognition :(NSDictionary*)data {
BXResult *bxr = [data objectForKey:@"result"];
NSString *stringURL = [NSString stringWithFormat:@"http://www.YOUR_SITE.com/%@.jpg",
bxr.m_value];
NSURL *url = [NSURL URLWithString:stringURL];
NSData *patientImage = [NSData dataWithContentsOfURL:url];
if (patientImage) {
NSString *imagePath =
[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)
objectAtIndex:0]
stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.jpg",
bxr.m_value]];
[patientImage writeToFile:imagePath atomically:YES];
}
return;
}
Viewing Medical Images on iOS
Now
that your application has obtained the patient’s ID using the barcode, and
retrieved images associated with that ID, you need a way to view and manipulate
the images. Many of the lossless image formats used in medical imaging,
including 8 through 16-bit grayscale JPEG 2000 and Lossless JPEG, are not
supported natively by the iOS operating system. In order to interactively view
and work with these images, they would need to be converted to a lossy
supported format like JPEG.
That
is, until now.
The
Accusoft AIMTools SDK allows developers to write apps that work with the
original image data without the need for conversion or round trips to a
server. This means that a native iOS app can interact with all of the original
image data, while de-compressing and converting the parts of the image
important to the user of the application. Window leveling, zooming and other
common operations can be performed locally with no need for a call back to the
server for more image conversion. This significantly increases the app’s
responsiveness and dramatically improves the user’s experience.
A
trial version of the AIMTools for iOS SDK can be downloaded from the Accusoft website for free. The SDK contains an ImageViewer sample that illustrates
how to build a full-featured image viewer using the SDK, complete with
thumbnail generation, cropping, zooming and window leveling. Developers are
encouraged to use the ImageViewer Xcode project to evaluate the AIMTools kit
using their own images. The sample code can then be used as a starting point
for Development.
Figure 1 – Screen Shots of the AIMTools for iOS ImageViewer Sample
The
sample code provided in the ImageViewer sample serves as a higher level of
abstraction to the AIMTools C API. AIMTools provides very granular image
manipulation capabilities when needed, but the ImageViewer sample attempts to
hide this granularity at first and focus on the most common imaging operations.
The FileDetailViewController class performs decompression of the image on a
background thread by calling the executeExpand()
method. The executeExpand()
method calls into the AIMTools C API using the source C files included in the
demo sample code. These C source files available in the sample can also be used
as-is in any new development project to hide the C implementation details from
the Developer, allowing them to concentrate on Objective-C and application
design.
Conclusion
Access to patient records and the viewing of medical images are key
components of a complete mobile EMR/EHR solution. However, the iOS environment
does not natively support viewing of JPEG 2000 and Lossless JPEG images. Mobile
SDKs from Accusoft help you overcome this limitation and build the applications
your clients need in the medical space to maximize productivity.
If you haven’t done so already, please be sure to look back at our
coverage of barcode
decoding and medical image viewing on Android.
You can find Accusoft product downloads and features at www.accusoft.com. Explore our barcode web demo at http://demos.accusoft.com/barcodexpressdemo to
test our barcode recognition accuracy or download a trial version of our mobile
barcode SDK, Barcode Xpress Mobile, at http://www.accusoft.com/barcodemobiledemo.htm. The AIMTools demo video and SDK
download are available at http://www.accusoft.com/aimtools.htm. Please contact info@accusoft.com for more information.
About the Authors
Rob Rimbold is a Senior Software Engineer with Accusoft. He has over 20
years of multi-discipline software development experience. Rob graduated with a
Bachelor of Science in Computer Science from
The University of Lowell in Massachusetts.
Scott Wilson is a Project Manager with Accusoft. He has had over 20
years of software development and management experience. Scott graduated with a
Bachelor of Science in Computer Science from
McMaster University in Hamilton, Canada.
Steve Wilson is a Product Group Director with
Accusoft. Steve is responsible for leading his team to develop new products as
well as increase the feature sets within several Accusoft product lines. He
brings a strong technical background to the management team, as well as
experience managing diverse offshore and onshore development teams. Steve graduated
with a Bachelor of Science in Computer Science from the University of South
Florida.