You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript删除HL7 OBX 5.1字段中首个\.后的内容

问题分析
  • 匹配目标转义错误:你要匹配的是\.字符串,在JS字符串字面量中需要写为'\\.'才能正确表示反斜杠+小数点的组合,你当前定义的模式变量后续判断逻辑完全没有用到。
  • 自定义substring函数逻辑错误:函数内部硬编码调用了外部变量OBX_TestValue,没有使用传入的参数ssstringToTrim;且JS的String.substring()不支持负索引,传-1会被识别为0,会返回空字符串。
  • 触发条件逻辑完全错误:OBX_TestValue.indexOf(OBX_TestValue)永远返回0,你的判断条件是>0,所以裁剪逻辑永远不会执行。
  • 修改后的值没有回写:你只是修改了局部变量OBX_TestValue,没有把处理后的结果写回next报文对象中,修改不会生效。
修复后完整代码
/* 匹配目标:反斜杠+小数点 */
const trimStartStr = '\\.';

/* 单输入消息处理 */
const next = output.append(input[0]);

// 遍历观察消息、订单、结果组
const cntObs = next.getRepeatCount("ObservationMessage");
for (var i = 0; i < cntObs; i++) {
    const cntOrders = next.getRepeatCount(`ObservationMessage[${i}]/Order`);
    for (var j = 0; j < cntOrders; j++) {
        const cntResults = next.getRepeatCount(`ObservationMessage[${i}]/Order[${j}]/Results`);
        for (var k = 0; k < cntResults; k++) {
            const fieldPath = `ObservationMessage[${i}]/Order[${j}]/Results[${k}]/OBX/ObservationValue`;
            let OBX_TestValue = next.getField(fieldPath);
            // 查找需要裁剪的起始位置
            const trimIndex = OBX_TestValue.indexOf(trimStartStr);
            if (trimIndex > 0) {
                // 裁剪字符串,保留匹配位置之前的内容
                OBX_TestValue = OBX_TestValue.substring(0, trimIndex);
                // 把修改后的值写回报文
                next.setField(fieldPath, OBX_TestValue);
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者softgi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:36:05