- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试将数据从监视器获取到 Android 应用程序,我已将 IHE - PCD-01 事务作为模型。
方案很简单,就是基于实现显示器和平板的互联,显示器不断发送信息,应用监听。
但我不明白的是我是否需要在每条消息后收到 ACK。有人可以帮我解决这个问题吗?
最佳答案
TL;DR 是的,这里没有什么特别的,支持由 MSH-15、MSH-16 字段驱动的通常的 HL7 ACK/NACK。
默认情况下对所有内容进行 ACK 是“更好安全然后抱歉”
文档“IHE 患者护理设备 (PCD),技术框架,第 2 卷 (PCD TF-2) 交易,修订版 1.0 - 最终文本,2011 年 8 月 12 日”,网址为 http://www.ihe.net/technical_framework/upload/ihe_pcd_tf_vol2_ft_2011-08-12.pdf说
..The common static definition of the HL7 acknowledgement (ACK) message is described in Appendix G, "HL7 Implementation Notes"..
说
G.1 Network Guidelines
The HL7 2.6 standard does not define a network communications protocol. Beginning with HL7 2.2, the definitions of lower layer protocols were moved to the Implementation Guide, but are not HL7 requirements. The IHE Framework makes these recommendations:
Applications shall use the Minimal Lower Layer Protocol defined in Appendix C of the HL7 Implementation Guide.
An application that wants to send a message (initiate a transaction) will initiate a network connection to start the transaction. The receiver application will respond with an acknowledgement or response to query but will not initiate new transactions on this network connection
G.1.1 Acknowledgment Modes
ACKNOWLEDGMENT MESSAGES
Acknowledgment messages may be defined on an application basis. However the simple general acknowledgment message (ACK) may be used where the application does not define a special message (application level acknowledgment) and in other cases as described in Section 2.9, "Message Processing Rules".
The IHE PCD transaction PCD-03 supports „enhanced mode‟ acknowledgements. See discussion under PCD-03 Transactions as well as in B.1 MSH – Message Header Segment and B.2 MSA – Message Acknowledgement Segment
和文档“Health Level Seven, Version 2.6 © 2007, Chapter 2: Control”来自“HL7 Messaging Standard Version 2.6”包,可以从http://www.hl7.org/implement/standards/product_brief.cfm?product_id=185 下载。描述接受和验证行为
2.9.2 Message response using the original processing rules
..too long to quote..
2.9.3 Response using enhanced acknowledgement
..too long to quote..
取决于 HL7 消息中 MSH-15 Accept Acknowledgment Type
和 MSH-16 Application Acknowledgment Type
字段的值
HL7 标准的上述章节包含您想要阅读和实现/支持的内容。
编辑:
简单地说,在 HL7 协议(protocol)中,在发送的每条消息中,发送方都可以通过在消息头段中标记适当的字段来请求 ACK
接收。 IHE 不会删除此规则,也不强制执行任何其他规则,但可以在应用程序基础上定义任何其他约定。正确的预期行为由 HL7 规范定义,为了正确执行并创建符合要求的实现(没有给您的第 3 方带来隐藏的惊喜),您可能需要多次阅读它(另请参见 Stack Overflow: How can I make my system HL7 certified?)
例如这就是HAPI库处理 ACKing, fragment 来自 http://sourceforge.net/p/hl7api/code/764/tree/tags/Root_REL_1_2/hapi-mvn/hapi-base/src/main/java/ca/uhn/hl7v2/protocol/impl/ProcessorImpl.java
/**
* @see ca.uhn.hl7v2.protocol.Processor#cycle(boolean)
*/
public void cycle(boolean expectingAck) throws HL7Exception {
log.debug("In cycle({})", expectingAck);
cleanReservations();
cleanAcceptAcks();
cleanReservedMessages();
Transportable in = null;
try {
if (expectingAck) {
in = tryReceive(myContext.getLocallyDrivenTransportLayer());
} else {
in = tryReceive(myContext.getRemotelyDrivenTransportLayer());
}
} catch (TransportException e) {
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {}
throw e;
}
// log
if (in != null) {
log.debug("Received message: {}", in.getMessage());
} else {
log.debug("Received no message");
}
// If we have a message, handle it
if (in != null) {
String acceptAckNeeded = null;
// String appAckNeeded = null;
String ackCode = null;
String ackId = null;
try {
String[] fieldPaths = {"MSH-15", "MSH-16", "MSA-1", "MSA-2"};
String[] fields = PreParser.getFields(in.getMessage(), fieldPaths);
acceptAckNeeded = fields[0];
// appAckNeeded = fields[1];
ackCode = fields[2];
ackId = fields[3];
} catch (HL7Exception e) {
log.warn("Failed to parse accept ack fields in incoming message", e);
}
if (ackId != null && ackCode != null && ackCode.startsWith("C")) {
long expiryTime = System.currentTimeMillis() + 1000 * 60;
myAcceptAcks.put(ackId, new ExpiringTransportable(in, expiryTime));
} else {
AcceptAcknowledger.AcceptACK ack = AcceptAcknowledger.validate(getContext(), in);
if ((acceptAckNeeded != null && acceptAckNeeded.equals(AL))
|| (acceptAckNeeded != null && acceptAckNeeded.equals(ER) && !ack.isAcceptable())
|| (acceptAckNeeded != null && acceptAckNeeded.equals(SU) && ack.isAcceptable())) {
trySend(myContext.getRemotelyDrivenTransportLayer(), ack.getMessage());
}
if (ack.isAcceptable()) {
if (isReserved(ackId)) {
log.debug("Received expected ACK message with ACK ID: {}", ackId);
removeReservation(ackId);
long expiryTime = System.currentTimeMillis() + 1000 * 60 * 5;
myAvailableMessages.put(ackId, new ExpiringTransportable(in, expiryTime));
} else {
log.debug("Sending message to router");
Transportable out = myContext.getRouter().processMessage(in);
sendAppResponse(out);
}
} else {
// TODO: should we do something more here? Might be nice to
// allow a configurable handler for this situation
log.warn("Incoming message was not acceptable");
}
}
} else {
String transport = expectingAck ? " Locally driven " : "Remotely driven";
log.debug("{} TransportLayer.receive() returned null.", transport);
}
sleepIfNeeded();
log.debug("Exiting cycle()");
}
关于android - IHE 和 HL7。 PCD-01 确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26779901/
我认为我正在努力正确定义以下不明确的操作码:LD HL,SP+r8 和 JP (HL) 操作码 (0xE9) > 和 0xF8 分别) 在我的实现中,LD HL,SP+r8 将 HL 设置为 SP+r
我尝试创建一个多线程单例模式类。 标题: class HL{ public: static HL* getInstance(); ......... priva
Windows 7、Emacs 25.1 如果我想改变 hl-line 的背景颜色,我会这样做: (set-face-background 'hl-line "#333333") 好的。但是如何为 h
我使用的是 solr 3.5,并在我的搜索查询中设置了 hl.fragsize = 100 ,但我的片段不完全包含 100 个字符,事实上,平均片段大小是 120。 任何人都可以对这个问题有想法吗?
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
这可以通过以下方式实现: 11 pop hl 10 push hl 在 21 个周期内。我发现的唯一选择是 ex (sp),hl,它需要 19 个周期。缺点是内容必须在我处理完它们后才能恢复到原来的值
我有一个动态文本字段 bar_*在我的索引中,并希望 Solr 返回该字段的突出显示。所以我运行的是: q=gold&hl=true&hl.fl=bar_* 它按预期工作,但以防万一我向 hl.fl
我使用以下代码在全局范围内启用 hl-mode。 (global-hl-line-mode t) 在指定模式下关闭 hl-line 功能。我用下面的代码来做。 (add-hook 'org-mode-
Emacs的hl-line-mode正是我所需要的,但我想更改为可怕的黄色,有人知道我该怎么做吗? 最佳答案 我使用(set-face-background hl-line-face "gray13"
我通过评估突出显示当前行: (hl-line-mode) 也可以全局设置: (global-hl-line-mode nil) 问题是这种方式行突出显示会覆盖highlight-phrase。所以我的
我使用波纹管代码来保护一段 .net 程序。我们选择使用 api 而不是经典的 Envelope 方法,因为我们想要自定义行为而不仅仅是普通窗口“找不到 key ” 我的问题是如何保护供应商代码,因为
我通常让 hl-line 对当前背景采用稍暗的阴影。这在编辑缓冲区时效果很好。但是,在某些缓冲区中,例如 Org 议程和 Gnus 组缓冲区,我想使用更漂亮的颜色(代替光标)。 具体来说,我想更改 g
我使用 Cocoa Emacs 23.1.91,并且我希望始终关闭 hl-line-mode,因为我不喜欢使用它。我可以通过 M-x hl-line-mode 为每个缓冲区关闭它,但这很乏味。任何帮助
我只想知道是否可以制作一个标签或任何其他整数并将其显示到我的游戏 View 中。 var pvElf = SKLabelNode(fontNamed:"Chalkduster") pvElf.text
好的。好吧,我知道这个问题很有可能会在前 10 分钟内结束,但我还是要问这个问题,因为我已经花了将近一天半的时间来寻找解决方案。仍然,我无法弄清楚这一点。尽管有演示,但在 Internet 上甚至在
当我启用 hl-line-mode 时,文件的最后一行只突出显示到它的最后一个字符(如果该行为空,则根本不会突出显示),而不是像其他行一样一直突出显示。一个肮脏的修复是在文件末尾添加一个空行,但我想知
标题基本概括了所有内容。当我:source $MYVIMRC或 :source ~/.vimrc ,重新出现上次搜索。我可以用 :noh 轻松地再次关闭它,但每次我都会重新出现 :source . 这
我们如何配置(或修复?)hl-line,使其背景高亮显示在堆栈中的最后(或第一个?)。 也就是说:如果 hl-line 突出显示某些单词已经具有背景颜色的行,则 hl-line 不应使用自己的背景颜色
使用 solr,我尝试使用 hl.formatter 选项和 hl.simple.pre/post 突出显示一些文本。 我的问题是 hl.simple.pre/post 代码有时没有出现在突出显示的结
我正在尝试为 dired 模式启用 hl-line-mode,但它不起作用。启用 global-hl-mode 有效,但它是每个缓冲区,而不仅仅是我不想要的缓冲区。 (defun hl-mode-fo
我是一名优秀的程序员,十分优秀!