在FDA监管的软件中使用Spring Hibernate

时间:2011-11-17 00:07:25

标签: java hibernate spring medical safety-critical

我们正在使用java,spring,hibernate和其他一些现成的库来开发诊断应用程序。根据FDA指南(和咨询公司),如果开源库位于应用程序的关键路径中,则应对其进行白盒测试(因为我们有源代码)。

如果我必须读取数据库表行,由于事务,hibernate hql-sql,jdbc api参与该过程,将需要100次api调用才能从db获取单行。

这是否意味着我必须验证这些API调用中的每一个。?

我们是否应该将java也视为第三方库并验证我们在应用程序中使用的每个api调用?

不足以对这些库进行黑盒测试吗?

是否有使用spring / hibernate和其他开源库的医疗设备/诊断/医院软件?

我非常有兴趣知道你们中有些人是否遇到过这种情况以及你们是如何解决这个问题的?

感谢您的时间!感谢。

1 个答案:

答案 0 :(得分:11)

我不是FDA要求的专家,甚至没有参与其中5年。但...

首先,如果我没有弄错并且事情没有改变,美国食品和药物管理局没有对“关键路径”做任何说明 - 他们谈论的是“安全至关重要”的事情 - 如果事情失败,可能会导致受伤或死亡。如果你能找到一种“降低风险”的方法 - 确保不会发生这种情况,无论Hibernate如何搞砸,我认为你已经摆脱困境。你可能非常非常努力地思考如何实现这一点。

例如,如果系统只是什么都不做是安全的(而不是做错误的事情),那么你可以编写一个消息摘要每条记录,包括您查找记录的密钥。如果您可以证明任何无法正确写入或读取记录的行为都会被检测到,那么您可能会暂时无法进行一些验证。我不知道你是如何使用Hibernate的 - 这可能不会涵盖所有内容。我只是想让它以正确的方式思考。

在大多数情况下,这包括一些冗余数据,允许您验证检索的内容,以及冗余的写入验证读取操作,以确保您编写了您认为自己编写的内容。这通常涉及许多反直觉的设计 - 将您的最佳实践的心理套件放在一边,让安全关键设计的要求引导您。此外,不要将可靠性与安全性混淆。他们是不同的;有时他们甚至会发生冲突。

您可以使用Hibernate单元和集成测试进行验证。我不知道。我怀疑这需要大量的逆向工程和文档来满足需求。

如果您真的只使用大型复杂库的一小部分,并且找不到任何方法来减轻安全关键性,那么自己动手实际上可能是正确的方法。做一个诚实的成本效益分析。

对于安全关键系统中常用的某些软件产品,您可以购买用于此目的的验证套件。可能不是Hibernate,但值得检查。即使在这种情况下,我认为你需要做相当多的尽职调查。

如果您打算继续编写医疗软件,那么您可以尝试阅读并接受一些培训。

我认为General Principles of Software Validation仍然是FDA的主要指导。此外,直接点,请参阅Guidance ... on Off-The-Shelf Software Use in Medical Devices。你会读到很多模糊或意想不到的东西。使用您的顾问澄清。这些仍然是最新的(我认为),但是真的很旧,所以FDA的真正期望将会发展。

我还认为研究计划安全的系统如何在现实世界中失败是值得的。我查看了诸如挑战者,海湾漏油事件,福岛以及涉及航空电子设备和/或飞行员错误的飞机失事等事情。一本很好的书,虽然它已经过时了但是Safeware。一个原因是加强对墨菲及其法律的尊重。另一个是了解组织在压力下失败以满足他们所做出的安全承诺的方式。你可能会以某种方式参与一些艰难的决定。获得要做的事情的第二手经验。

最后 - 忽略您不熟悉FDA 医疗设备软件要求的人所提出的任何“不要打扰”的建议,并且没有写作安全的经验 - 具有监管要求的关键软件(航空电子经验可能相关)。这是不同的。