TNM癌症分期图书馆

nedda的Python项目详细描述


内达达0.2
自动TNM癌症分期库 < BR>
0.2版的新增功能: < BR>
我们完全改变了接收tnm参数并返回正确阶段的方式。在之前的版本中,
我们有不同的staging类的天真实现,这些类将由工厂方法根据
给定ICD。在每一个类中,我们都有一组正则表达式,如果这样可以选择正确的阶段。 < BR>
这是一种非常简单的方法,也是一种糟糕的代码。那只是一个出发点。它有很大的贫乏
混合数据和代码,尽管对少数癌症类型实现起来很简单,但不可能保证
从长远来看。 < BR>
感谢教授[Maria Laura Magalh_es Gomes]的帮助(http://lattes.cnpq.br/5671580360415081)和
[保罗•安东尼奥•丰塞卡•马查多](http://www.mat.ufmg.br/~pafm/),来自[联邦大学数学系]
米纳斯杰拉斯(http://www.mat.ufmg.br),我们能够做一个更智能的实现。 < BR>
tnm staging的问题基本上包括将一组值映射到不同的bucket。那是可以解决的
使用一个散列函数,python编程语言在其字典数据结构上内置了这个函数。 < BR>
在此洞察之后,我们更改了实现方式并创建了一个csv文件,其中包含不同的tnm可能性
适用于多种癌症类型及其相应的分期。 < BR>
此csv文件作为字典加载到内存中,tnm组合是对应于值的键。AS
据我们所知,python中的字典查找速度非常快,而且编写起来非常简单:如果找到给定的键,则相应的
返回stage。否则,就找不到舞台。 < BR>
我们还创建了一个小型django应用程序,允许用户从选择框中输入icd代码、t、n、m
并得到正确的阶段作为回报。该应用程序允许在合适的地方输入dukes、psa和gleason值。 < BR>
**什么是癌症?** < BR>
通俗地说,事实是"癌症"一词实际上指的是大量不同的疾病。它们有一个共同的事实,那就是它们是细胞的异常繁殖,它们有能力扩散到身体的其他器官和部位。美国国家癌症研究所用有趣的词语"*一组相关疾病*"来描述癌症[1]。 < BR>
癌症几乎可以出现在动物组织上。在人体上,每一个器官和每一种细胞都有不同类型的癌症。提到美国最常见的类型,2015年的数字[2]: < BR>
癌症类型新病例死亡|
-|
膀胱74000 16000|
乳房(女性)231840 40290|
乳房(男性)2350 440|
结肠和直肠(联合)132700 | 子宫内膜|
肾(肾细胞和肾盂)癌61560 14080|
白血病(所有类型)54270 24450|
肺(含支气管)221200 158040|
黑色素瘤73870 9940| 非霍奇金淋巴瘤|
胰腺48960 40560| 前列腺220800 27540|
甲状腺62450 1950| < BR>
**什么是癌症分期?** < BR>
根据ajcc癌症分期手册的介绍: < BR>
>;"癌症停滞素G在对抗癌症的战斗中起着关键作用。它构成了了解人群癌症发病率的变化、疾病初始表现的程度以及癌症治疗改善的总体影响的基础。分期是确定纳入临床试验的组的基础。最重要的是,分期为那些患有癌症的患者和他们的医生提供了确定预后和战胜癌症的可能性以及为他们的病例确定最佳治疗方法的关键基准。 < BR>
不同类型的癌症根据其分期有完全不同的治疗方案和预测。例如,一个很小的局部乳腺癌决定了一个特定的治疗路径,并且有很好的(95%以上)完全治愈(或缓解)的机会。不幸的是,如果早期没有发现同一类型的癌症,它会生长并扩散到淋巴系统(局部和远处)和其他器官(转移性疾病)。在这种情况下,治疗方案是不同的,治愈的机会要远得多。 < BR>
**癌症是如何分期的?** < BR>
有一个称为tnm的系统来对每种癌症进行分类。它由国际医学界通过一个叫做uicc的组织来维护。对于每种类型的癌症,都有一个表格将某些值映射到特定的阶段。这些值被称为t-肿瘤的大小,n-受影响的区域节点,m-转移疾病的存在。一些癌症也可以考虑其他的计算值。例如,要计算前列腺癌的分期,还必须使用psa和gleason的值。对于colon,一个称为dukes的值。 < BR>
医生必须知道这些值,并手动查找特定表格,以正确分类癌症。这些表格在医疗手册上提供,并定期更新。 < BR>
**内达能为您提供什么帮助?** < BR>
nedda是一个python库,它在给定icd代码和t、n和m值的情况下计算得到的暂存。它仍然是一个原型。我们打算将nedda与我们为gnu health开发的肿瘤学模块结合使用[4],这是一个开源的免费模块(就像在freedom和free beer.gpl 3 rocks中一样!)卫生行政系统。 < BR>
**如何使用nedda** < BR>
nedda仍然有一个非常简单的接口。其思想是将icd、t、n和m值传递给库,并获得stager对象,该对象验证输入并计算不同类型癌症的正确分期。 < BR>
genericstager对象可以通过两种方式使用。首先,它可以通过只将ICD传递给构造函数来创建:
``巨蟒
从nedda.staging.staging导入genericstager
gs=genericstager('c50')
< BR>
在这种情况下,gs对象将用于提供可用的ts、ns和ms:
``巨蟒
gs.获取列表()
['m0','m1']
获取列表()
['tis'、't0'、't1'、't2'、't3'、't4']
gs.获取列表()
['m0','m1']
< BR>
如果您只想知道这类癌症的可用tnm选择,并且还不想分期特定病例,那么这非常有用。我们的web应用程序使用此功能返回要在用户上选择的选项
用户选择ICD代码后的界面。 < BR>
使用genericstager的另一种方法是传入特定分段计算所需的所有值,然后调用其stage字段: < BR>
``巨蟒
gs=genericstager('c50','t1','n1','m0')
< BR>
如果您致电:
``巨蟒
舞台
< BR>
您将得到响应:
``巨蟒 "IIA/"
< BR>
一个简单的web服务 < BR>
我们现在还有一个django应用程序,可以用作web服务或独立应用程序。为了运行它,应该安装django库(1.8或更高版本)。应用程序可以从内部运行e Web_Services目录作为常规django应用程序: 'Br/''Bash
$nedda/web_service/python manage.py运行服务器
< BR>
我们仍在进行测试,并试图使web界面不那么难看。 < BR>
就目前而言,基本上就是这样。nedda主要治疗乳腺癌、子宫颈癌、结直肠癌、肺癌、前列腺癌、子宫体癌和胃癌。我们已经在这里发布了这样一个图像状态的存储库,希望社区能给出一些架构和功能的想法,当然,还有关于编码的贡献! < BR>
**内达是如何工作的?** < BR>
nedda查看icd代码并从不同的列表中选择要返回的stager。每一种癌症都有不同的tnm分类表,因此很难成为普通癌症。然后,来自不同正则表达式集的nedda将通知的参数匹配到一个确定的阶段。最后,这只是一种非常奇特的方法来执行大量嵌套的"ifs",并以可维护的方式对所有这些表进行编码。 < BR>
nedda还根据不同的癌症类型验证给不同列表的ts、ns和ms。如果给出不可能的组合,则认为tnm无效,并注册一条简单消息。我们也做了很多测试。 < BR>
欢迎您就如何以更优雅的方式执行这组复杂的嵌套ifs提出任何想法!如果你现在神秘的学科,如图论,线性代数,向量空间,聚类,并认为你的知识可以帮助我们,请成为我的客人和"告诉我你学到了什么,因为这些问题对这样一个简单的人来说太深了"(超级流浪汉)。 < BR>
**内达是谁?** < BR>
nedda novaes是巴西马里兰州贝洛奥里藏特的一位肿瘤学家。她目前在一家名为Santa Casa de Misericórdia de Minas Gerais的大型医院工作,主要负责公共卫生和贫困患者。
她超越了人们简单(但极其复杂和专注)的科学和医疗。她真的很关心这种可怕疾病的社会、心理和人的方面,特别是与贫困和不太理想的社会条件有关的时候。
她是创作这个项目的灵感来源,也是创作这个枯燥而封闭的主题的灵感来源。 她碰巧也是我妈妈! < BR>< BR>
[1[什么是癌症](http://www.cancer.gov/about-cancer/what-is-cancer)
[2]美国癌症协会:2015年癌症事实和数字。佐治亚州亚特兰大:美国癌症协会,2015年。
[3]癌症分期手册。来自AJCC癌症分期手册。七号
[4][GNU健康](http://health.gnu.org/) < BR>
版权所有2015[sílex sistemas ltda.](http://www.silexsistemas.com.br)
归属非商业性股份4.0国际(CC BY-NC-SA 4.0)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用于切换状态结果的枚举的java输入   检测*NIX上打开的端口时出现java问题   java捕获和保存屏幕截图   java SLF4JLogback:基于日志级别的多模式   Java从字符串中删除动态子字符串   在spring引导中contextLoads测试时运行java Liquibase   基于规则集的任意嵌套POJO的java任意就地转换   java如何做,边做边循环这段代码?   java是什么导致jmh测量中的错误?   java Spring RabbitTemplate执行方法可见性   java jms创建连接http超时weblogic   java如何在JMapViewer中的两点之间放置像箭头一样的图像   在我的形状计算器Java程序中使用带有Switch/Case语句的循环   字符串如何在Java中比较字符和数字