MiForum 医学信息学论坛's Archiver

ermulong 发表于 2008-4-1 08:42

临床上年龄计算有什么要求,如何计算合理

临床上年龄计算有什么要求,如何计算合理。

发现不同公司的信息系统,在年龄的计算的算法各不相同,医院对新生儿以及儿童的年龄又有相关要求。有些无所适从

[[i] 本帖最后由 ermulong 于 2008-4-1 08:45 编辑 [/i]]

ermulong 发表于 2008-4-1 09:30

多少岁到月,多少岁内到天。

住院病人是以入院日期为准,还是以当前日期为准

如何保证HIS与RIS与LIS年龄的一致

danelchen 发表于 2008-4-1 09:51

个人以为,年龄以当前日期为准。
关于精度,个人临床经验:48小时以内精确到小时,6个月以内精确到天,6岁以内精确到月。但是不同临床的不同专业对年龄的精度会有不同的需求。
至于如何保证一致,这个和时间一致性的重要性一样。可以通过笨办法,各系统保证算法一致,费事的办法各系统调用一个年龄计算的服务。

个人观点,有时偏颇,欢迎批评指正。

ermulong 发表于 2008-4-1 15:05

以当前日期为准,会出现以下情况:
开申请日期为20岁,到发结果时是21岁,不知是否合适。
如果电子病历的年龄是动态的,也会出现20岁变成21岁的情况,有两个年龄不知妥否。
手工病历时,一份病历中一般只有一个年龄

还会出现检查检验登记时是20,到发结果哪一天,电子病历哪一天动态变化已经是21了,而检查报告是20

[[i] 本帖最后由 ermulong 于 2008-4-1 15:16 编辑 [/i]]

ermulong 发表于 2008-4-1 15:14

我遇到的情况有:
一、14岁以下到月,1岁以下到天
二、1岁以下到月,1月以下到天

算法有:
dim   j   as   integer   =   date2.year   -   date1.year   
                  dim   k   as   int16   =   date2.month   -   date1.month   
                  dim   m   as   int16   =   date2.day   -   date1.day   
                  if   k   <   0   then   
                          j   =   j   -   1   
                  elseif   k   =   0   then   
                          if   m   <   0   then   
                                  j   =   j   -   1   
                          end   if   
                  end   if   

或者:
除365天的

danelchen 发表于 2008-4-1 22:55

如果专指到各种临床业务行为,逻辑上应当把年龄计算到采样时间、检查时间。当然在前面所说的各个时间精度分界点来说精度颗粒度越粗,年龄跨度造成的差值影响就越小。以楼上举例来说,临床上对于20岁与21岁的差别对临床业务造成的影响往往忽略不计。而在越小的精度上来说由于计算精度的提高也使其跨度值带来的影响相对减小。

danelchen 发表于 2008-4-1 23:01

[quote]原帖由 [i]ermulong[/i] 于 2008-4-1 15:05 发表 [url=http://bbs.miforum.net/redirect.php?goto=findpost&pid=77493&ptid=9699][img]http://bbs.miforum.net/images/common/back.gif[/img][/url]
以当前日期为准,会出现以下情况:
开申请日期为20岁,到发结果时是21岁,不知是否合适。
如果电子病历的年龄是动态的,也会出现20岁变成21岁的情况,有两个年龄不知妥否。
手工病历时,一份病历中一般只有一个年龄

还会出现检查 ... [/quote]

从这个例子来说20岁是合适并准确的,不同时间点应当反映该时间点时的实际状态,而不是当前状态。也就是说,年龄需要根据业务逻辑进行计算,应当按照当前时间计算的和应当按照发生时间计算的都应当遵守实际发生的业务逻辑。

所以严格的说年龄都应当加上定语:如当前年龄、发病年龄、手术时年龄。但往往我们应为习惯都统称为年龄。

在面向对象的设计思路时,这种状态值应当根据业务逻辑作为一个对象的状态属性出现。而不应当作为持久化的属性出现。

uchinaboy 发表于 2008-4-1 23:54

出生年月

Judy 发表于 2008-4-22 20:01

出生年月日是患者实体中的一个属性.而不是年龄.当然,在一些检查/检验实体中,年龄确是一个有意义的属性.年龄计算可以直接用一个SQL语句,由患者实体的出生日期计算得到,也可以用其它的方式得到.这里的SQL语句是用一个PLSQL的函数完成的.从语句上看,实践证明能够得到医院的认可.
CREATE OR REPLACE FUNCTION "F_AGE" (
Birthday in date ,
Date_Contrast in date := sysdate
)
Return varchar2
as
Age varchar2(50) ;
Temp_Month varchar2(50);

Begin
select trunc(months_between(Date_Contrast,Birthday),0) into Temp_Month from dual;

If Temp_Month >=72 then
select trunc(Temp_Month/12,0) || '岁' into Age from dual;
Return Age;
End if;

If Temp_Month >=12 then
select trunc(Temp_Month/12,0) || '岁' || to_char(Temp_Month-trunc(Temp_Month/12,0)*12) || '月' into Age from dual;
Return Age;
End if;

If Temp_Month >=1 then
select Temp_Month || '月' || decode(trunc(Date_Contrast-add_months(Birthday,Temp_Month),0),0,1,trunc(Date_Contrast-add_months(Birthday,Temp_Month),0)) || '天' into Age from dual;
Return Age;
End if;

If Temp_Month =0 then
select decode(trunc(Date_Contrast-add_months(Birthday,Temp_Month),0),0,1,trunc(Date_Contrast-add_months(Birthday,Temp_Month),0)) || '天' into Age from dual;
Return Age;
End if;

End;

Judy 发表于 2008-4-22 20:04

至于有人说:申请单上是20,报告单上是21,这是符合逻辑的.因为,申请的时候,这个人就是20隔了几天,出报告时,他就是21.没什么可说的.

medsoft 发表于 2008-4-24 17:27

大家要看这样的讨论有没有实际意义,我认为这样的意义不大,因为在实际临床过程中,并不会特别关注这几天时间上的差异,做过医生的人是知道的。
对年龄最敏感的是儿科,但儿科的给药剂量一般是以体重为计算单位的。
所以我感觉是,48小时内精确到小时,2个月以下精确到天,2岁以下精确到月,2岁以上精确到年。
但有一点,在住院期间,病历记录中,应反映患者年龄的变化,特别是儿科。年龄是相对值,不是绝对值,应以病历记录当时日期为准计算年龄。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.