package cn.lihu.jh.module.ecg.enums; import lombok.AllArgsConstructor; import lombok.Getter; import java.util.Arrays; import java.util.List; /** * HIS 报文 header 中 action 的取值枚举。 * *
* 6.4 检查预约状态新增:S050401(pacs) / S050402(ECG) * 6.5 检查预约状态更新:S050501(pacs) / S050502(ECG) ** *
实测结论(2026-09-17 日志,共 1753 条请求):实际到达的 action 只有 * {@code S0405}、{@code S050401}、{@code S0201ECG}、{@code S0202ECG}、 * {@code S050501}、{@code S040501HIS} 六种,其中 * {@code S050402} 与 {@code S050502} 出现 0 次。 * 即院方当前走的是 pacs 编号,ECG 专属编号尚未启用。 * *
为了在院方切换编号时不丢消息,这里**同时注册两种编号**(主动兼容), * 并额外兼容申请单新增/更新的无后缀写法 {@code S0201} / {@code S0202} * (文档只定义了无后缀形式,而实测报文带 {@code ECG} 后缀)。 * * @author 心电排队装机系统 */ @Getter @AllArgsConstructor public enum ActionTypeEnum { // ---------- 6.1 申请单新增(文档为 S0201,实测报文为 S0201ECG,两种都兼容) ---------- S0201ECG("S0201ECG", "申请单创建"), S0201("S0201", "申请单创建"), // ---------- 6.2 申请单更新(文档为 S0202,实测报文为 S0202ECG) ---------- S0202ECG("S0202ECG", "申请单更新"), S0202("S0202", "申请单更新"), // ---------- 6.3 申请单状态更新(全院通用,不区分科室) ---------- S040501HIS("S040501HIS", "预约更新"), S0405HIS("S0405HIS", "申请单状态更新"), S0405("S0405", "申请单登记状态更新"), // ---------- 6.4 检查预约状态新增(pacs / ECG 两种编号都接收) ---------- S050401("S050401", "检查预约状态新增"), // pacs S050402("S050402", "检查预约状态新增"), // ECG(文档定义,当前未启用,主动兼容) // ---------- 6.5 检查预约状态更新(pacs / ECG 两种编号都接收) ---------- S050501("S050501", "检查预约状态修改"), // pacs S050502("S050502", "检查预约状态修改"); // ECG(文档定义,当前未启用,主动兼容) /** * 类型 */ private final String type; /** * 描述 */ private final String description; /** * 根据类型获取枚举。 *
* 兼容处理:入参先去除首尾空白;若未命中,再尝试忽略大小写匹配,
* 避免因 HIS 侧大小写不一致(如 {@code s0201ecg})导致整条消息被拒。
*
* @param type action 值
* @return 枚举;无法识别时返回 null
*/
public static ActionTypeEnum getByType(String type) {
if (type == null) {
return null;
}
String trimmed = type.trim();
if (trimmed.isEmpty()) {
return null;
}
// 1. 精确匹配
for (ActionTypeEnum value : values()) {
if (value.type.equals(trimmed)) {
return value;
}
}
// 2. 忽略大小写兜底
for (ActionTypeEnum value : values()) {
if (value.type.equalsIgnoreCase(trimmed)) {
return value;
}
}
return null;
}
/** 申请单新增类 action(含无后缀兼容写法) */
public static final List