C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Visual C++ in a medical device?

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ Language (Moderated)
View previous topic :: View next topic  
Author Message
James Wucher
Guest





PostPosted: Wed Nov 17, 2004 11:23 am    Post subject: Visual C++ in a medical device? Reply with quote



Greetings. I'm working on a software validation for OTS (off the
shelf) software used in a medical software product. One of the ways
to make this validaion easier is to show that it has already been
successfully used in an existing medical device. I'm asking if
anybody knows of a deployed medical device (in the United States)
which uses MS Visual C++ (6.0) as the compiler for at least part of
the code in the device.

Any help would be greatly appreciated.

Thanks,
james wucher

[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]

Back to top
David
Guest





PostPosted: Thu Nov 18, 2004 12:04 am    Post subject: Re: Visual C++ in a medical device? Reply with quote



On Wed, 17 Nov 2004 11:23:37 UTC, [email]james (AT) nonlinearideas (DOT) com[/email] (James Wucher)
wrote:

Quote:
Greetings. I'm working on a software validation for OTS (off the
shelf) software used in a medical software product. One of the ways
to make this validaion easier is to show that it has already been
successfully used in an existing medical device. I'm asking if
anybody knows of a deployed medical device (in the United States)
which uses MS Visual C++ (6.0) as the compiler for at least part of
the code in the device.

Any help would be greatly appreciated.

Thanks,
james wucher

James,

One of the projects I had worked on under IBM's OS/2 and
VisualAge C++ had been ported to Microsoft Windows NT and
used one of the Visual C++ compilers. Both were certified
instruments.

Generally you want the operating system and application
controlling your medical device to be more reliable than
your garden variety Windows Application. The degree of
difficulty starts with the failure modes of the medical
device and those must be dealt with by the failure and
recovery modes available to the controlling computer
system.

I've worked on analysis devices and life-critical
medical devices.

David

[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]

Back to top
Bob Hairgrove
Guest





PostPosted: Thu Nov 18, 2004 12:05 am    Post subject: Re: Visual C++ in a medical device? Reply with quote



On 17 Nov 2004 06:23:37 -0500, [email]james (AT) nonlinearideas (DOT) com[/email] (James Wucher)
wrote:

Quote:
Greetings. I'm working on a software validation for OTS (off the
shelf) software used in a medical software product. One of the ways
to make this validaion easier is to show that it has already been
successfully used in an existing medical device. I'm asking if
anybody knows of a deployed medical device (in the United States)
which uses MS Visual C++ (6.0) as the compiler for at least part of
the code in the device.

Uh, let me know where, and I will make it a point to avoid that
hospital or clinic if I happen to be in the area and suddenly need
treatment.

I don't know anything about medical software, but aren't there various
levels of "mission criticality" here? In all licensing agreements for
OTS software I have seen, there are explicit caveats regarding the
range of applications for which the software should be used, including
the operating system itself.

I am sure that lots of hospitals use MS-Office for routine report
writing, for example, and that this would not endanger the lives of
any patients. This probably wouldn't fall into the category of
"medical software", though. OTOH, I would want to have somewhat
stricter requirements on the reliability and performance of software
which controlled life-sustaining equipment in operating rooms, for
example, or for imaging software in a CAT scanner.

One day I had to get a stress test at the hospital (EKG riding a
bicycle). This was no big deal, but after about 2 minutes I noticed a
little dialog box on the monitor hooked up to the EKG showing a little
red "X" next to the familiar message Windows emits on abnormal
application termination.

Reading that message probably made my heart skip an extra beat or
two<g>.

--
Bob Hairgrove
[email]NoSpamPlease (AT) Home (DOT) com[/email]

[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]

Back to top
Peter Koch Larsen
Guest





PostPosted: Thu Nov 18, 2004 12:23 am    Post subject: Re: Visual C++ in a medical device? Reply with quote


"James Wucher" <james (AT) nonlinearideas (DOT) com> skrev i en meddelelse
news:be1e3179.0411160833.5a687205 (AT) posting (DOT) google.com...
Quote:
Greetings. I'm working on a software validation for OTS (off the
shelf) software used in a medical software product. One of the ways
to make this validaion easier is to show that it has already been
successfully used in an existing medical device. I'm asking if
anybody knows of a deployed medical device (in the United States)
which uses MS Visual C++ (6.0) as the compiler for at least part of
the code in the device.

Any help would be greatly appreciated.

Thanks,
james wucher

[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]


There has been, yes. I have taken part in the development of a medical
software product sold in the US. And that product had a very significant
market share over there.

/Peter


[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]

Back to top
Ivan Vecerina
Guest





PostPosted: Thu Nov 18, 2004 12:41 am    Post subject: Re: Visual C++ in a medical device? Reply with quote

"James Wucher" <james (AT) nonlinearideas (DOT) com> wrote

Quote:
Greetings. I'm working on a software validation for OTS (off the
shelf) software used in a medical software product. One of the ways
to make this validaion easier is to show that it has already been
successfully used in an existing medical device. I'm asking if
anybody knows of a deployed medical device (in the United States)
which uses MS Visual C++ (6.0) as the compiler for at least part of
the code in the device.

I have worked on and delivered several FDA-certified medical devices
(interventional and/or imaging systems) which used MSVC6 as a compiler
(e.g. see http://www.cedara.com and http://www.orthopilot.com or my
personal website).
Although many companies have since shifted to Intel C++ or MSVC 7.x,
I would expect that most PC-based medical devices use code that has
been compiled with a Microsoft compiler.

This said, I wonder whence you get the idea that this matters.
When making a 510k submission, it does help to show that the
functioning/construction/design of your product is comparable
to a previously approved one.
That's the "Comparison To Predicate Device" section.
But the fact that another product has not been affected by defects
in your compiler is quite irrelevant to the safety of your product.
In your risk analysis, you have to assume (and know for fact)
that your operating system, your compiler, and the libraries that
you use do have bugs. And your HW can fail because of a cosmic
ray hit, a hard disc defect, or a simple power outage.

What you need is:
- Extensive review and testing, including stress testing.
- A detailed analysis of all the possible failures, and how these
are recovered from, or at least kept harmless until they can
be detected.
- A solid documentation & traceability of your processes (DMR, etc).
- ...
- A lot of common sense (and some political savvy).
[ It will all depend on the product, and this is pretty OT here. ]


PS:
C & C++ are hardly worse than other languages for implementing
critical systems.
An erroneous computation can be implemented in any language.
Even though some errors (e.g. overflows) can more easily remain
silent in these languages, any single critical result/decision
needs to be double-checked anyway.
What matters more is the development process being used. E.g.
some will prefer C over C++ just because processes/guidelines
have more thoroughly been time-tested in the older language.


I hope this helps,
Ivan
--
http://ivan.vecerina.com/contact/?subject=NG_POST <- e-mail contact form



[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]

Back to top
Giovanni Trematerra
Guest





PostPosted: Thu Nov 18, 2004 12:43 am    Post subject: Re: Visual C++ in a medical device? Reply with quote

James Wucher wrote:
Quote:
Greetings. I'm working on a software validation for OTS (off the
shelf) software used in a medical software product. One of the ways
to make this validaion easier is to show that it has already been
successfully used in an existing medical device. I'm asking if
anybody knows of a deployed medical device (in the United States)
which uses MS Visual C++ (6.0) as the compiler for at least part of
the code in the device.

Any help would be greatly appreciated.

Thanks,
james wucher

[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]


Hi James,
I'm a Software Designer and I work at Esaote S.p.A. - MRI Division. Our
dedicated MRI products
(http://www.esaote.com/products/MRI/products1.htm) are equipped with
software compiled with MS Visual C++ 6.0 compiler.
We sell our products in all continents.

Hope this help
===
Gianni

[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]

Back to top
Allan W
Guest





PostPosted: Thu Nov 18, 2004 12:22 pm    Post subject: Re: Visual C++ in a medical device? Reply with quote

[email]james (AT) nonlinearideas (DOT) com[/email] (James Wucher) wrote
Quote:
Greetings. I'm working on a software validation for OTS (off the
shelf) software used in a medical software product. One of the ways
to make this validaion easier is to show that it has already been
successfully used in an existing medical device. I'm asking if
anybody knows of a deployed medical device (in the United States)
which uses MS Visual C++ (6.0) as the compiler for at least part of
the code in the device.

I find this confusing.

Are you validating software that runs on a "medical device?" Or are you
validating software that runs on a standard desktop computer, but happens
to have a medical purpose?

Are you suggesting that the software you wish to validate is a compiler?
Personally, I would consider custom-built software generated specifically
for a "medical device" to be the very opposite of "off the shelf" software.
And if it wasn't custom-built for your equipment, why do you care what
compiler it was built with?

[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]

Back to top
James Wucher
Guest





PostPosted: Fri Nov 19, 2004 4:05 pm    Post subject: Re: Visual C++ in a medical device? Reply with quote

Thanks to everyone for all your input. In response to the concerns
about using VC6 for the application, the company I work for is charged
with performing the safety analysis; the application has already been
developed, and we have no control (unfortunately) upon choices that
were made long in the past.

That being said, the risk of the compiler itself (as was pointed out)
can/should be mitigated by proper testing and processes to ensure some
acceptable level of overall safety. In fact, part of our job, as the
reviewers of the project, is to verify those processes have been
implemented/executed correctly (e.g. FMEA, SHA, and lots of other
painful, time-consuming, and absolutely necessary acronyms).

Our OTS component validation is (a small) part of our overall
validation for our customer. While I personally question the use of
"the component has been used in device X" as serious evidence of its
"safety", this argument has been used successfully as part of a case
of evidence for component validation in the past.

I appreciate the replies where devices were named. I'll contact the
vendors and see if any of them are willing to go on the record.

Any other insights/input are certainly welcome.

Thanks,
James Wucher

[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]
Back to top
George Neuner
Guest





PostPosted: Sun Nov 21, 2004 4:57 am    Post subject: Re: Visual C++ in a medical device? Reply with quote

Previously, George Neuner <gneuner2/@comcast.net> wrote:

Quote:
I've also worked with dedicated real time OSes: VxWorks, QNS

^
Quote:
and Virtuoso.

Typo ... should have been QNX.

George
--
for email reply remove "/" from address

[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]

Back to top
George Neuner
Guest





PostPosted: Sun Nov 21, 2004 5:01 am    Post subject: Re: Visual C++ in a medical device? Reply with quote

On 17 Nov 2004 19:05:11 -0500, Bob Hairgrove <invalid (AT) bigfoot (DOT) com>
wrote:

Quote:
On 17 Nov 2004 06:23:37 -0500, [email]james (AT) nonlinearideas (DOT) com[/email] (James Wucher)
wrote:

Greetings. I'm working on a software validation for OTS (off the
shelf) software used in a medical software product. One of the ways
to make this validaion easier is to show that it has already been
successfully used in an existing medical device. I'm asking if
anybody knows of a deployed medical device (in the United States)
which uses MS Visual C++ (6.0) as the compiler for at least part of
the code in the device.

Uh, let me know where, and I will make it a point to avoid that
hospital or clinic if I happen to be in the area and suddenly need
treatment.

I don't know anything about medical software, but aren't there various
levels of "mission criticality" here? In all licensing agreements for
OTS software I have seen, there are explicit caveats regarding the
range of applications for which the software should be used, including
the operating system itself.

I am sure that lots of hospitals use MS-Office for routine report
writing, for example, and that this would not endanger the lives of
any patients. This probably wouldn't fall into the category of
"medical software", though. OTOH, I would want to have somewhat
stricter requirements on the reliability and performance of software
which controlled life-sustaining equipment in operating rooms, for
example, or for imaging software in a CAT scanner.

One day I had to get a stress test at the hospital (EKG riding a
bicycle). This was no big deal, but after about 2 minutes I noticed a
little dialog box on the monitor hooked up to the EKG showing a little
red "X" next to the familiar message Windows emits on abnormal
application termination.

Reading that message probably made my heart skip an extra beat or
two<g>.

Although I'm not currently aware of any diagnostic use of Windows or
Visual C/C++, I know from experience that knee jerk negative reactions
to the possiblility are not warranted.

I worked for 10 years in embedded software, including more than a few
spent writing FDA approved, real time industrial machine vision
quality assurance software ... on Windows using Visual C++. I worked
on QA systems used in drug manufacturing that were assembly line
driven and required guaranteed output response in under 200ms. These
systems were multithread apps and included a graphic UI that showed
the operator real time views of inspected parts for process monitoring
and touchscreen controls for operator input.

When running only our own application software embedded in a known OS
configuration, we found Windows to be very stable. Initial versions
based on Windows 3.11 and VC1.5 could run 24/7 for many weeks without
requiring reset. Later versions based on NT/VC 5&6 and 2K/VC7 could
run 24/7 indefinately provided the user properly archived log files
(user initiated due to removable backup media but performed from
within the application) and didn't allow their hard disk to fill up
(the application would complain about low space if it ever occurred).

And before you ask sarcastically: the apps were "multithreaded" even
on Windows 3.11 - seperate windowless tasks were used for background
operations, interrupts were turned into messages, and we used a custom
task switcher to prioritize processing.


That said:

I once watched a system driver on NT4 prevent interrupts for 90us.
That was disappointing as I had previously measured the average
end-to-end context switch time from hardware interrupt to user space
handler execution at less than 50us on a 233Mhz Pentium II.

The variablilty of OS delay didn't matter for any of the applications
I was working on as I didn't require sub-millisecond response. But
the variability does make (at least certain versions of) Windows
completely unsuitable for many dedicated hardware control
applications.

The company only grudgingly moved applications to Win2K (because we
could no longer get NT device driver support from hardware vendors).
Many people felt that Win2K was less reliable than NT4 as an embedded
platform because of the many new features.



I've also worked with dedicated real time OSes: VxWorks, QNS and
Virtuoso. In general, I have found them only marginally better to
work with for most embedded purposes - their major attraction is that
kernel response time comes with vendor guarantees. I have had many
of the same problems on those platforms as with Windows - device
drivers crashing, unanticipated feature interactions, unidentifiable
gremlins, vendor patches and workarounds for system bugs, etc.

Windows is certainly not alone in causing developer problems.

George
--
for email reply remove "/" from address

[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]


Back to top
George Neuner
Guest





PostPosted: Sun Nov 21, 2004 6:53 am    Post subject: Re: Visual C++ in a medical device? Reply with quote

On 17 Nov 2004 19:05:11 -0500, Bob Hairgrove <invalid (AT) bigfoot (DOT) com>
wrote:

Quote:
On 17 Nov 2004 06:23:37 -0500, [email]james (AT) nonlinearideas (DOT) com[/email] (James Wucher)
wrote:

Greetings. I'm working on a software validation for OTS (off the
shelf) software used in a medical software product. One of the ways
to make this validaion easier is to show that it has already been
successfully used in an existing medical device. I'm asking if
anybody knows of a deployed medical device (in the United States)
which uses MS Visual C++ (6.0) as the compiler for at least part of
the code in the device.

Uh, let me know where, and I will make it a point to avoid that
hospital or clinic if I happen to be in the area and suddenly need
treatment.


It occurs to me that my previous post wandered from compilers to
operating systems and applications ... which wasn't the topic of the
original post.


So WRT compilers, I 've used Visual C/C++ versions 1.5, 4,5,6 & 7;
Borland C/C++ versions 2 & 3; Intel C v5 (don't recall if that was C++
also); several versions of GCC (some stock and some vendor
supplemented) and an ADI compiler based on the Amsterdam Kit.

I've found no inherent problems with Microsoft C or C++ compilers that
would prevent me from recommending them for embedded use over any
other non domain specific compiler. For control of diagnostic or
surgical equipment, the main issue in my mind would be who wrote the
software and does the code run on bare hardware or under an OS.

George
--
for email reply remove "/" from address

[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]

Back to top
Thomas Mang
Guest





PostPosted: Thu Dec 02, 2004 4:18 am    Post subject: Re: Visual C++ in a medical device? Reply with quote


"David" <FlyLikeAnEagle (AT) United (DOT) Com> schrieb im Newsbeitrag
news:rOdGr40LMPU3-pn2-pgVqXyug0CL6 (AT) localhost (DOT) ..
Quote:
On Wed, 17 Nov 2004 11:23:37 UTC, [email]james (AT) nonlinearideas (DOT) com[/email] (James Wucher)
wrote:

Greetings. I'm working on a software validation for OTS (off the
shelf) software used in a medical software product. One of the ways
to make this validaion easier is to show that it has already been
successfully used in an existing medical device. I'm asking if
anybody knows of a deployed medical device (in the United States)
which uses MS Visual C++ (6.0) as the compiler for at least part of
the code in the device.

Any help would be greatly appreciated.

Thanks,
james wucher

James,

One of the projects I had worked on under IBM's OS/2 and
VisualAge C++ had been ported to Microsoft Windows NT and
used one of the Visual C++ compilers. Both were certified
instruments.

Generally you want the operating system and application
controlling your medical device to be more reliable than
your garden variety Windows Application. The degree of
difficulty starts with the failure modes of the medical
device and those must be dealt with by the failure and
recovery modes available to the controlling computer
system.

I've worked on analysis devices and life-critical
medical devices.


Sorry for asking quite late, but my previous post was obviously lost
somewhere.....

I have a question regarding your life-critical medical devices:

How much time did you spend in code review and possible bug analysis? I
think when a button in a GUI-interface is not aligned correctly, that's not
nice but doesn't cause serious damage. When you perform some mathematical
operations, and the result is wrong, the problem is worse. However, when
software is used in areas descibed above, any small bug can have extremely
fatal consequences.

I'd like to hear more about the quality management of your product (e.g. how
many people involved; process; time...).


Also, how did you handle the problem of imperfect compilers?
I have worked with more than one compiler simply producing bad code for well
formed programs. Usually when enabling optimizations, but also in
non-optimizing modes. How did you deal with this?
Did you always check the assembler - output to find out if the compiler had
bugs in code generation?

Thanks for your time,


Thomas



[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]


Back to top
David
Guest





PostPosted: Fri Dec 03, 2004 5:06 pm    Post subject: Re: Visual C++ in a medical device? Reply with quote


Hello Thomas,

Quote:

Sorry for asking quite late, but my previous post was obviously lost
somewhere.....

That's okay, I've been offline for a week or so taking care of other
things.

Quote:
I have a question regarding your life-critical medical devices:

How much time did you spend in code review and possible bug analysis? I
think when a button in a GUI-interface is not aligned correctly, that's not
nice but doesn't cause serious damage. When you perform some mathematical
operations, and the result is wrong, the problem is worse. However, when
software is used in areas descibed above, any small bug can have extremely
fatal consequences.

If you approach a problem from an "engineering point of view" you are
better
able to define your quality levels than if you are "coding first and meeting
the requirements later". The medical, aerospace, and electronics industries
(to name a few) have certain standards for the various stages for the
creation, maintenance, and assurance of safety critical products. These
steps are useful to other products, including games, but are generally
ignored or not even considered.

Most developers quickly discover the quality issue. Some people can
code faster than others, some create tighter code, some generate fewer
errors, some may have practices that help find, prevent, eliminate,
or recover from errors, and so on.

Products that require a high level of quality, reliability, predictable
failure modes, documented interfaces, support and so on usually take more
effort to develop. The level of effort for this can be improved with
experience and good organization skills. For a particular industry, there
are also stricter definitions of what is acceptable and what is flexible.

On any given project you will spend most of your time considering failure
modes and making sure the product does what you expect. This differs from
what most "coders" consider productive since it doesn't seem like they are
producing anything. Yes, you may consider the quality of your tools and
products during the lifetime of your product. That is an important issue
when the product matters.

While I'll spend time revising some of the more trivial UI (they're not
just GUI) you also try to design up front to meet your audience. An error
in alignment might not matter but then again maybe it would. It certainly
helps that the most critical portions of your product get addressed most.

I was approached by a friend that needed a job and was asked to do some
embedded work for what appeared to be "the telecom or cable industry".
The employer was looking for cheap labor to build a new product line.
Okay, but does a cheaper developer matter? No. The whole process does
and quality is part of the picture. In the end my friend declined the
job as he (probably correctly) decided they didn't want to create a
good product, they wanted to create a sellable product quickly.

Yes, small bugs matter a great deal. They probably do to a lesser
extent in less critical products, but you should be aware of what you
are trying to build and what it will be used for. From a development
standpoint you should always be thinking of what the implications are
of your actions.

If you made a mistake a short time ago, how long does it take for you
to find it, determine the correct course of action, and if need be, to
correct it?

Quote:
I'd like to hear more about the quality management of your product (e.g. how
many people involved; process; time...).

Medical devices in my group get a large amount of review. We're not a
huge
company, but we are established and have many products. Everyone has
quality
in mind and is part of that process. Time depends largly on experience. A
brand new device takes quite a while to develop. A largely similar device
for which we have experience building and supporting will take less time.

While you seem to be concerned with the process, and should be, I'm not
sure if we're on the same page regarding what "the product" is. The product
for us is everything. Everything we've ever built and all the people it
affects.

Consider a heart monitor. In the software world you will be concerned
that
it works properly, does monitor the heart, and presumably is built on
hardware
that is acceptable for the purpose. Okay, is that enough? No. Who uses
this
device? It could be a home product, RN, doctor, or part of another product
such as an automatic defibralator. How does this change the importance of
the various components of the product and how it is used by the people it
affects?

Quote:
Also, how did you handle the problem of imperfect compilers?
I have worked with more than one compiler simply producing bad code for well
formed programs. Usually when enabling optimizations, but also in
non-optimizing modes. How did you deal with this?
Did you always check the assembler - output to find out if the compiler had
bugs in code generation?

This has been a problem but you usually figure out what is trustworthy or
not. Where it matters you do much more validation.

The short answer you your question is more like "all of it".

David

[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ Language (Moderated) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.