c# - 处理/阅读这些文件的更好方法(HCFA 医疗 claim 表)

标签 c# file text

我正在寻找一些关于用 C# 读取文件来处理场景的更好方法的建议;具体的场景,除非你是做医疗的,否则一般人都不会熟悉,所以我先简单说明一下。

我为健康计划工作,我们通过多种方式(EDI、纸质等)收到医生的 claim 。标准医疗 claim 的纸质表格是“HCFA”或“CMS 1500”表格。我们的一些签约医生使用的软件可以生成 claim 并将其保存在 HCFA“布局”中,但保存在文本文件中(因此,您可以将其视为纸质表格,但没有背景/框/等).我附上了一张虚拟 claim 文件的图片,显示了它的样子。

claim 信息当前从文本文件中提取并转换为 XML。整个过程工作正常,但我想让它更好更容易维护。该场景存在一个主要挑战:每个医生办公室可能会以略有不同的布局向我们提交这些文本文件。这意味着,医生 A 可能在第 10 行的第 3 个字符处有患者姓名,而医生 B 可能会发送一个文件,其中姓名在第 11 行的第 4 个字符处开始,依此类推。是的,我们应该做的是强制执行标准布局,任何希望以这种方式提交的医生都必须遵守该布局。然而,管理层表示,我们(开发人员)必须自己处理不同的可能性,我们可能不会要求他们做任何特别的事情,因为他们想保持良好的关系。

目前,每个不同的医生办公室都有一个“映射表”设置一行。该表的每个字段都有列(例如患者姓名、成员(member) ID 号、出生日期等)。其中每一个都根据我们从医生那里收到的第一个文件获得一个值(我们手动设置 map )。因此,列 PATIENT_NAME 可能在映射表中定义为“10,3,25”,这意味着该名称从第 10 行的第 3 个字符开始,最长可达 25 个字符。这是一个痛苦的过程,无论是 (a) 为每个医生创建 map - 这很乏味,以及 (b) 可维护性,因为他们有时会突然改变布局,然后我们必须为该医生重新绘制整个 map .

文件逐行读入,每行添加到一个

 List<string>

完成此操作后,我们执行以下操作,获取 map 数据并读取文件行列表并获取字段值(回想一下,每个映射字段都是一个类似“10,3,25”的值(没有引号)):

ClaimMap M = ClaimMap.GetMapForDoctor(17);

List<HCFA_Claim> ClaimSet = new List<HCFA_Claim>();

foreach (List<string> cl in Claims) //Claims is List<List<string>>, where we have a List<string> for each claim in the text file (it can have more than one, and the file is split up into separate claims earlier in the process)   
{
     HCFA_Claim c = new HCFA_Claim();
    c.Patient = new Patient();
    c.Patient.FullName = cl[Int32.Parse(M.Name.Split(',')[0]) - 1].Substring(Int32.Parse(M.Name.Split(',')[1]) - 1, Int32.Parse(M.Name.Split(',')[2])).Trim();
        //...and so on...       
     ClaimSet.Add(c);
}                

抱歉,这么长...但我觉得有必要提供一些背景/解释。有没有更好/更有创意的方法来做这样的事情?

最佳答案

鉴于缺乏标准化,我认为您当前的解决方案虽然不理想,但可能是您能做的最好的。鉴于这种情况,我至少会隔离问题,例如文件读取、文件解析、文件转换为标准 xml、映射表访问等到使用明显模式的简单组件,例如DI、策略、工厂、存储库等需要将系统从对映射表和当前解析算法的底层依赖中分离出来。

关于c# - 处理/阅读这些文件的更好方法(HCFA 医疗 claim 表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8930659/

相关文章:

c# - 如何在 xaml 中填充宽度的窗口中绘制一条线

file - 如何在matlab中将数据保存在32位二进制文​​件中?

java - 在运行时编写和实现新的 Java 类文件

android - 如何从 txt 文件中获取某些值?

python - 如何编写正则表达式来匹配以空格分隔的多行列数据

c# - 以编程方式编辑 Excel 2013 Powerpivot 数据源连接

c# - C#运行时动态创建Label的宽度

css - 是否可以为内联文本创建框阴影效果?

android - Toast 中的文本居中

c# - 使用 Entity Framework 模型插入数据