SocketClient.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package com.diagbot.util;
  2. import ca.uhn.hl7v2.model.Message;
  3. import ca.uhn.hl7v2.parser.PipeParser;
  4. import ca.uhn.hl7v2.util.Terser;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.io.OutputStream;
  10. import java.net.Socket;
  11. public class SocketClient {
  12. public static void main(String[] args) throws Exception {
  13. String msg1 = "MSH|^~\\&|HIS^1|MediInfo|MediII^1|MediInfo|20201106092139||ADT^A01^ADT_A01|62c6a92b14bf4ac3b2c1223eaec56354|P|2.4\n" +
  14. "EVN|A01|20201106092139||||20201106092139\n" +
  15. "PID||1101722206^0|1101722206^^^JG01~000251286^^^JG02~~~~1101722206^^^JG06~~~~1101722206^^^JG10|0|ChenXiangNian^陈相年||19821227000000|F|||浙江金华义乌北苑街道季宅一区92-1-406&北苑街道季宅一区92-1-406^^330700^330000^445700^^H~^^^^^^W^义乌市北苑街道季宅一区92-1-406~^^^^^^R||^^02^^^^15067919181|||M^已婚|||422827198212272025|||01^苗族|湖北省恩施土家族苗族市|||||^中国||0||0\n" +
  16. "NK1|1|^蒋中友|配偶||~^^^^^^13967414569~^^^^^^15067919181||||||||^^义乌市北苑街道季宅一区92-1-406\n" +
  17. "PV1|1|I|508^^^51944&乳腺外科^^乳腺外科病区||||376^^冯庆菁^^^^^^^^^^^0827&乳腺组||||||||||698^^黄晓芸|01|10530126||XJ01||||||||0|||||||||||||51944||20201106092003||||||1|V|30281\n" +
  18. "OBX|1|NM|25^年龄||37|岁|||||F|||20201106092003\n" +
  19. "DG1|1|N63.x00||双乳房肿块微创||A\n" +
  20. "IN1|1|^^^0|0";
  21. String msg2 = "MSH|^~\\&|HIS^1|MediInfo|MediII^1|MediInfo|20201106090519||ADT^A01^ADT_A01|f769b50c01f54ce7abdfa42652ca1f0a|P|2.4\n" +
  22. "EVN|A01|20201106090519||||20201106090519\n" +
  23. "PID||1100652958^0|1100652958^^^JG01~000165210^^^JG02~~~~C09ADC576^^^JG06~6601176457^^^JG07~C09ADC576^^^JG08~~1100652958^^^JG10|0|DingShengJue^丁胜珏||19901031000000|F|||浙江金华义乌北苑街道星城嘉园1-2-505&北苑街道星城嘉园1-2-505^^330700^330000^322000^^H~^^^^^^W^义乌市北苑街道星城嘉园1-2-505~^^^^^^R||^^02^^^^15057918211|||M^已婚||C09ADC576|33078219901031002X|||^汉族|浙江省金华市|||||^中国||0||0\n" +
  24. "NK1|1|^李荷香|婆婆||~^^^^^^15024561473~^^^^^^15057918211||||||||^^义乌市北苑街道星城嘉园1-2-505\n" +
  25. "PV1|2|I|521^^^52103&产科^^幸福颐家西||||374^^陈林海^^^^^^^^^^^0767&产A组||||||||||422^^王璐|190|10530088||XJH14||||||||0|||||||||||||52103||20201106090237||||||2|V|E0456\n" +
  26. "OBX|1|NM|25^年龄||30|岁|||||F|||20201106090237\n" +
  27. "DG1|1|Z33.X52||双胎妊娠 晚期妊娠||A\n" +
  28. "IN1|1|^^^0^330782\\T\\3\\T\\330782D1560000051020459524740972:C09ADC576\\T\\丁胜珏\\T\\14\\T\\\\T\\\\T\\00\\T\\\\T\\C09ADC576\\T\\6601176457\\T\\\\T\\C09ADC576\\T\\\\T\\\\T\\\\T\\|0";
  29. String msg3 = "MSH|^~\\&|HIS^1|MediInfo|MediII^1|MediInfo|20201106084358||ADT^A01^ADT_A01|44fd408115f54b1fa99ee0b5358c00cf|P|2.4\n" +
  30. "EVN|A01|20201106084358||||20201106084358\n" +
  31. "PID||1101525977^0|1101525977^^^JG01~000251284^^^JG02~~~~C0A6C2F40^^^JG06~6600631838^^^JG07~C0A6C2F40^^^JG08~~1101525977^^^JG10|0|ChenZhiMin^陈志敏||19920117000000|F|||浙江金华义乌北苑街道畈东村10组&北苑街道畈东村10组^^330700^330000^^^H~^^^^^^W^义乌市畈东村61-2-501~^^^^^^R||^^02^^^^15988507440|||M^已婚||C0A6C2F40|330782199201174323|||^汉族||||||^中国||0||0\n" +
  32. "NK1|1|^朱超群|配偶||~^^^^^^15356905170~^^^^^^15988507440||||||||^^义乌市畈东村61-2-501\n" +
  33. "PV1|1|I|502^^^52103&产科^^产一西||||441^^金苏君^^^^^^^^^^^0767&产A组||||||||||441^^金苏君|01|10530087||XJ01||||||||0|||||||||||||52103||20201106084133||||||1|V|30281\n" +
  34. "OBX|1|NM|25^年龄||28|岁|||||F|||20201106084133\n" +
  35. "DG1|1|Z33.X52||晚期妊娠||A\n" +
  36. "IN1|1|^^^0|0";
  37. String msg4 = "MSH|^~\\&|HIS^1|MediInfo|MediII^1|MediInfo|20201106081925||ADT^A01^ADT_A01|29f25ac25d1e4336897adaf3ce0989a9|P|2.4\n" +
  38. "EVN|A01|20201106081925||||20201106081925\n" +
  39. "PID||1101579562^0|1101579562^^^JG01~000251282^^^JG02~~~~1101579562^^^JG06~~~~1101579562^^^JG10|0|YangGanYao^杨乾垚||20170403000000|M|||浙江金华义乌城西街道万商华府3-3-20&城西街道万商华府3-3-20^^330700^330000^325100^^H~^^^^^^W^义乌市城西街道万商华府3-3-20~^^^^^^R||^^02^^^^13600595050|||S^未婚||||||^汉族||||||^中国||0||0\n" +
  40. "NK1|1|^杨显忠|父亲||~^^^^^^13738907387~^^^^^^13600595050||||||||^^义乌市城西街道万商华府3-3-20\n" +
  41. "PV1|1|I|510^^^52424&儿科(住)^^普儿病区||||443^^徐兰飞^^^^^^^^^^^0527&儿科住院医生||||||||||10216^^丁俊超|01|10530085||XJ01||||||||0|||||||||||||52424||20201106081502||||||1|V|E0456\n" +
  42. "OBX|1|NM|25^年龄||3|岁|||||F|||20201106081502\n" +
  43. "DG1|1|J02.900||急性咽炎||A\n" +
  44. "IN1|1|^^^0|0";
  45. String msg5 = "MSH|^~\\&|HIS^1|MediInfo|MediII^1|MediInfo|20201106061324||ADT^A01^ADT_A01|13d8a19057c04029b50d77aba6b2e335|P|2.4\n" +
  46. "EVN|A01|20201106061324||||20201106061324\n" +
  47. "PID||1101560659^0|1101560659^^^JG01~000251058^^^JG02~~~~1101560659^^^JG06~~~~1101560659^^^JG10|0|HuangLu^黄璐||19940306000000|F|||安徽省郎溪县毕桥镇长何新村白塘6号^^^340000^^^H~^^^^^^W^江东街道西谷村42栋2单元~^^^^^^R||^^02^^^^18969399075|||O^其他|||342522199403063943|||01||||||||0||0\n" +
  48. "NK1|1|^赵品超|11|&义乌青口西谷42-2-5|~^^^^^^18969399075~^^^^^^18969399075||||||||^^江东街道西谷村42栋2单元\n" +
  49. "PV1|1|I|503^^^52103&产科^^产二东||||816^^程芙蓉^^^^^^^^^^^0767&产A组||||||||||10213^^陈婷|01|10530071||XJ01||||||||0|||||||||||||52103||20201106061141||||||1|V|860\n" +
  50. "OBX|1|NM|25^年龄||26|岁|||||F|||20201106061141\n" +
  51. "DG1|1|O42.900||胎膜早破||A\n" +
  52. "IN1|1|^^^0|0";
  53. String msg6 = "MSH|^~\\&|HIS^1|MediInfo|MediII^1|MediInfo|20201106160446||OMP^O09|a34fce72b13647a69a6181f030eaa3b5|P|2.4\n" +
  54. "PID||1101632180^0|1101632180^^^JG01~000243746^^^JG02~~~~C22874529^^^JG06~6600709192^^^JG07~C22874529^^^JG08~~1101632180^^^JG10|0|FengZhangYue^冯樟月||19630402000000|F|||浙江金华义乌佛堂镇田心二村3组&佛堂镇田心二村3组^^330700^330000^322000^^H~^^^^^^W^-~^^^^^^R||^^02^^^^13957929996|||M^已婚||C22874529|33072519630402612X|||^汉族|浙江金华义乌|||||^中国||0||0\n" +
  55. "PV1|1|I|508^^833西^51944&乳腺外科^^乳腺外科病区||||10205^^徐高^^^^^^^^^^^0827&乳腺组||||||||||10205^^徐高|190|10529960||XJH12||||20201106150700||||0|||||||||||||51944||20201105153342||||||1|V|E0456\n" +
  56. "ORC|NW|1028500307||1028500307^1^1|CM|二甲双胍缓释片0.5G*1 2片 自备|1^BID^1天2次^20201106155606^^^1^^1|||||10304^^周广慧||||8^文本^0\n" +
  57. "RXO|^二甲双胍缓释片0.5G*1 2片 自备||||||||||1|||||||||0^^^^^0\n" +
  58. "RXR|75^口服^0";
  59. String msg7 = "MSH|^~\\&|LIS|LIS|MediII|MediII|20201108134546||OUL^R21^OUL_R21|B38ECFCD3F310B0FE0530D049FC0610E|P|2.4\n" +
  60. "PID|1|1100487485|1100487485^^^JG01~^^^JG02~^^^JG03~^^^JG04~^^^JG05~1100487485^^^JG06~^^^JG07~^^^JG08~^^^JG09~1100487485^^^JG10||^蒋颜颜||19960601|F\n" +
  61. "NTE|1||妊娠\n" +
  62. "PV1|1|O||R|||||||||||||||1007690958||||||||||||||||||||||||||||||||V\n" +
  63. "ORC|OK|1006650223^^1008548799|^^201108MYE00040||||||20201107153754|||10199^^冯玉|51964^^^^^^^^中医妇科||||51964^中医妇科\n" +
  64. "OBR|1|1006650223^^201108MYE00040||0000000824^安检3(+1)项|||20201107154637|||||5177302^免疫室||20201107154720|002&血清|||||24|岁|20201108134438|||F|||||||||C0030&&王京|C0046&&朱玲玲\n" +
  65. "NTE|1||~建议定期跟踪随访RPR并检测TPPA!\n" +
  66. "OBX|1|ST|0387^人免疫缺陷病毒抗原.抗体^^^HIV-Ag/Ab||阴性||阴性|N|||F|||||002^0^AA^阴性\n" +
  67. "OBX|2|ST|0190^丙型肝炎抗体^^^HCV-Ab||阴性||阴性|N|||F|||||002^0^AA^阴性\n" +
  68. "OBX|3|ST|0191^丙型肝炎核心抗原^^^HCV-Ag||阴性||阴性|N|||F|||||002^0^AA^阴性\n" +
  69. "OBX|4|ST|0189^梅毒螺旋体抗体^^^TP-Ab||阳性||阴性|A|||F|||||002^0^BA^阴性\n" +
  70. "OBX|5|ST|6078^梅毒甲苯胺红不加热血清试验^^^TRUST||弱阳性||阴性|A|||F|||||002^0^BA^阴性";
  71. // socketClient2F(msg1);
  72. // String sUid = UUID.randomUUID().toString();
  73. String msg9="MSH|^~\\&|PACS|PACS|MediII|MediII|20201117130815||ORU^R01|CEC9D0B4761646978F1F147620C5F374|P|2.4\n" +
  74. "PID||1101737952|1101737952~000251952~||XiangHuiJieZhiZi^项慧杰之子||20201113000000|M|||浙江金华义乌城店路575号&城店路575号||^^^^^^15088205523|^^^^^^||S^未婚||||||^汉族||||||^中国\n" +
  75. "PV1||I||R|||349^^金志彪|||||||||||01|10533496||XJ01|||||||||||||||||||||51766||20201117093701|||||||V\n" +
  76. "ORC|UX|1002650202|DR93790||CM||||20201117105016|B0140^^王晓庆||778^^陈淑君|51772^^^^^^^^放射科|||^|51766^新生儿科^|||82^1|||||F\n" +
  77. "OBR|1|1002650202|DR93790^^121649959|92091^小儿胸腹联合片^^DR^胸部||||||||51772^放射科^||||||||||20201117130815|^82|DR|C|||||||||B0140&&王晓庆|B0008&&陈爱萍\n" +
  78. "NTE|1||\n" +
  79. "OBX|1|CE|IMP|| 胸廓两侧对称,气管居中。两侧肺野纹理增多,未见明显实质性病变。双侧肋膈角锐利。心影及横膈未见明显异常。\\X000d\\\n" +
  80. " 腹部肠腔内可见部分积气,未见肠腔异常扩张,肠壁间距不宽,肠曲至侧腹壁距离不宽,未见阳性结石和钙化,双侧腹脂线清晰。\\X000d\\\n" +
  81. "||||||F\n" +
  82. "OBX|2|TX|GDT|| 1.两侧肺野纹理增多,请结合临床。\\X000d\\\n" +
  83. " 2.腹部目前未见明显异常征象。\\X000d\\\n" +
  84. "||||||F\n" +
  85. "OBX|3|RP|ZMF||||||||F";
  86. msg9 = msg9.replaceAll("\n", "\r").replace("\u000B", "").replace("\u001C", "").replace("\\\r","");
  87. PipeParser pipeParser = PipeParser.getInstanceWithNoValidation();
  88. Message message = pipeParser.parse(msg9);
  89. Terser terser = new Terser(message);
  90. System.out.println(terser);
  91. //// String station = "PID-8";//所取字段位置
  92. // String val1 = terser.get("/.ORDER_OBSERVATION/NTE-1");
  93. // StringBuilder responseMsg = new StringBuilder();
  94. // responseMsg.append("MSH|")
  95. // .append(terser.get("/." + "MSH-2") + "|")
  96. // .append(terser.get("/." + "MSH-3") + "|")
  97. // .append(terser.get("/." + "MSH-4") + "|")
  98. // .append(terser.get("/." + "MSH-5") + "|")
  99. // .append(terser.get("/." + "MSH-6") + "|")
  100. // .append(terser.get("/." + "MSH-7") + "||")
  101. // .append("ACK|" + sUid + "|")
  102. // .append(terser.get("/." + "MSH-11") + "|")
  103. // .append(terser.get("/." + "MSH-12") + "\n")
  104. // .append("MSA|AA|")
  105. // .append(terser.get("/." + "MSH-10"));
  106. // System.out.println(responseMsg);
  107. }
  108. public static void socketClient2F(String message) throws IOException {
  109. final Logger logger = LoggerFactory.getLogger(SocketClient.class);
  110. String host = "127.0.0.1";
  111. int port = 8091;
  112. Socket socket = new Socket(host, port);
  113. // 建立连接后获得输出流
  114. OutputStream outputStream = socket.getOutputStream();
  115. //首先需要计算得知消息的长度
  116. byte[] sendBytes = message.getBytes("UTF-8");
  117. //然后将消息的长度优先发送出去
  118. // outputStream.write(sendBytes.length >> 8);
  119. // outputStream.write(sendBytes.length);
  120. //然后将消息再次发送出去
  121. outputStream.write(sendBytes);
  122. outputStream.flush();
  123. socket.shutdownOutput();
  124. InputStream inputStream = socket.getInputStream();
  125. byte[] bytes = new byte[1024];
  126. int len;
  127. StringBuilder sb = new StringBuilder();
  128. while ((len = inputStream.read(bytes)) != -1) {
  129. // 注意指定编码格式,发送方和接收方一定要统一,建议使用UTF-8
  130. sb.append(new String(bytes, 0, len, "UTF-8"));
  131. }
  132. System.out.println(sb);
  133. outputStream.close();
  134. inputStream.close();
  135. socket.close();
  136. }
  137. }