g11n issues in embedded systems med dev
TRANSCRIPT
1
Globalization Issues in Embedded Systems[Medical Devices]
Jon RitzdorfSolutions Architect
“a special-purpose computer system designed to perform one or a few dedicated functions”
Embedded vs. General-Purpose(Personal Computer)
BenefitsUsually PortableCheap(er) to produceReliable
Defining “Embedded” Systems
VS.VS.
2
Prevalence in the Medical Field
Got Global?
During development embedded device development is locallyfocused
North American market, maybe UK/AUS
If considered at all, going “global” is an afterthought
“We’ll worry about Japan later”
“After we get this product released locally, then we’ll deal with Brazil”
3
A Slippery Slope
Waiting until a product is fully
developed before making it “global-ready” is risky
Time
$$$
Market Share
Cost is exponentially more to retool after the fact
vs. doing it right from the beginning
Top 5 Challenges
Main hurdles in creating “global-ready” embedded systems for the medical field
Date / Time / Number Conventions
Patient Names
Non-English Character Support & Display
“Custom” User Interfaces
User Interface “Real-Estate”
4
Date / Time / NumberDate / Time / Number
What day is this?01/02/03
US: January 2, 2003France: February 1, 2003Japan: February 3, 2001
What number is this?1.234
US: One – point – Two – Three – FourGermany: One-thousand Two-hundred and Thirty-four
1,234
Date / Time / Number
Time8:00 PM
Japan: 20:00
Not all countries use a 12-hour clock!
Of note…Also can’t assume “:” is always used to separate hours:minutes:seconds!
Italy: 20.00
5
2/11
3:00p12a 6a 12p 6p
4.00 U
Date / Time / Number
Date / Time / Number: Solutions?
Ideally, build in “locale awareness”for date/time/number*
date/time formattingnumber/date/timeseparators
*Java Locale Class, C++ Locale Class, .NET Culture Class…
OR, ISO 8601 – Universally understood date/time formats
CCYY-MM-DD = 2008-07-0824-hour clock = 20:00
06/24/083:00pm4,000.00 U
24.06.0815:004.000,00 U
6
Date / Time / Number:Solutions?
97,44 %
Français
Patient NamesPatient Names
Different patient name conventions are rarely supported
John SmithGiven name + Family Name
Smith, JohnFamily Name, Given name
7
Patient Names
ChineseAlways family-name followed by given-name
毛泽东 (Mao Zedong)
HungarianFamily-name followed by given-name (no middle names)
Kovács Júlia
IndonesianSingle names are common
SuhartoLonger names without family-names
Diah Permata Megawati Setiawati Soekarnoputri
Patient Names
8
Patient Names
VS.VS.
StevenSteven
毛泽东毛泽东
Patient Names: Solutions?
Two major forms of name conventions
“Western order”Names can be broken into multiple fields| First | Middle | Last |
“Eastern order”One field for the entire nameOften written | Last First | but anything can be input
9
Names…and Data too!
Other patient name globalization challengesCollation/Sorting
Not all langs. sort A-Z like English!Not all langs. have an alphabet!
Other patient data related challengesNational IDs AddressesPhone numbersWhat we might consider “private” information
Religion (required in Indonesia)
NonNon--English Character SupportEnglish Character Support
Characters outside of the English alphabet can cause multiple issues in embedded systems
10
Non-English Character Support: I/O
Support all international users and Input/output of all scripts without:
breaking functionality
incurring data loss
display problems
…generally frustrating or angering a potential user of the product
головная боль??????? ????
Non-English Character Support:Keyboards & Display
Other character support globalization challengesKeyboard SupportUser Interface Support
11
Non-English Character Support
Why the problems?
Old ProductEmbedded system programming = “low-level” code
Little to no support outside ASCII
New ProductNo thought given to global user base in design, engineering and programming phases
Non-English Character Support:Solutions?
If for a Future Product…
Force teams to think “global”
“Don’t forget about potential users in [insert country here]!”
Embrace UNICODE as your character set…
Holds scripts of the world’s major languages
Pass, parse or manipulate data in any language
Ideally, program in languages with UNICODEas native (default) for text
Java, C#, [Fill in the blank].NET, XML
12
Non-English Character Support:Solutions?
If for an Existing Product…
Have teams test existing products with non-English text
A great learning experience
Breaks almost everything ☺
Implement UNICODE into core text operations…
Not so easy for “old” code
Non-English Character Support:Solutions?
If old code is stubborn to comply…
Maybe time to consider a “New & Improved” version?
Mostly issues with older C/C++ embedded systems
Back at the drawing board?Huge advances in embedded platforms over the past 5 years
Windows CE Embedded.NET Micro FrameworkJava ME (Micro Edition)Embedded Linux
13
““CustomCustom”” User InterfacesUser Interfaces
“Custom” User Interfaces
Traditionally a must for all embedded systems
There was no UI toolkit for “low-level”programming languages
Resource restrictions made implementations of “Windows” style interfaces impossible
UI Types of the past…Line drawn (vector) interfacesRaster (bitmap) images with text on topASCII (English) Only interface
Support for only ASCII (English) text and a simple 1-byte font
14
“Custom” User Interfaces
Inspiration can be found in the telecom industry
“Custom” User Interfaces
Medical devices stuck in the past?
Neuromodulation Device company last week: “We can’t support accents in our UI…the code is 10 years old. Have the translators use unaccented words.”
German
French
Korean
15
“Custom” User Interfaces: Solutions?
Custom UIs & monolingual support should be “nostalgic”
UI frameworks with international support are available for every major programming language/platform
Memory/processing power cheaper (and smaller) than ever
Multilingual fonts are widely available (Thanks to Unicode!)
Consider a new UI built on established frameworks with STRONG international support…don’t build your own!
Qt Embedded (multi-platform)
GTK+ & “Pango” (multi-platform)
MFC/ATL (Windows CE Embedded)
WPF (.NET Micro Framework)
User Interface User Interface ““RealReal--EstateEstate””
Med. Dev. are oftenverycrow-ded
16
User Interface “Real-Estate”
Leads to many globalization issuesAesthetics
small fontsoverlapping
Translation relatedlength limits & abbreviationsconcatenation
User Interface “Real-Estate”
Setup Close
SchließenAbbrechen
CancelEinstellungen
安裝 關閉取消
Setup CloseCancel
17
User Interface “Real-Estate”
Space for expansion in three areas are crucial for other languages1. Overall screen space
don’t crowd controls on one screen
2. X and Y axis for each controlroom to grow up and out
3. Spacing between controlsroom to make larger controls if text still doesn’t fit
Setup CloseCancelexpandexpand
expandexpand
expandexpand
User Interface “Real-Estate”
Dynamic resizing/moving of controls in a user interface ALSO saves time
Setup CloseCancel
Einstellungen SchließenAbbrechen
18
User Interface “Real-Estate”: Solutions?
For tight screens consider…Extra dialogsTabbed interfacesIcons/visuals in lieu of text
Provide any unresolved length limitations up front beforetranslation begins
Abbreviations might be available, but don’t assume anythingAbbreviations can exist in English and not in other langs.
…and vice-versa!
Shrinking fonts to fit text is OK…sometimes
安裝 關閉取消
Good Examples?
St. Jude Medical: MerlinRuns on Embedded Linux and Qt
19
Good Examples?
Zoe Medical: Well@Home & Nightingale PPM2Runs on Windows Embedded CE (.NET)
Perfect Examples?