基于`IRIS`,动态解析`HL7`消息

news2024/9/22 7:32:47

文章目录

  • 基于`IRIS`,动态解析`HL7`消息
    • 什么是`HL7`
    • `HL7` 版本
    • `HL7` 消息结构
      • 段(`Segment`)
      • 字段(`Field`)
    • `HL7` 数据类型
    • 在`IRIS`中查看`HL7`数据结构
    • 传统方式拼写`HL7`消息结构
    • 动态对象解析`HL7`消息结构。

基于IRIS,动态解析HL7消息

什么是HL7

HL7Health Level 7的简称,是一种用于在医疗信息系统中传输和交换健康信息的国际标准。HL7最初于1987年由医疗设备和系统供应商共同开发,并且成为医疗领域中最广泛使用的信息交换标准之一。

HL7的目标是促进医疗信息系统之间的互操作性,确保不同系统之间可以有效地共享和传输健康数据。它定义了一组标准化的消息格式和协议,以便医疗信息可以在不同的系统之间进行传递和解释。这些消息可以涉及患者的基本信息、诊断结果、医嘱、医疗事件等。

通过使用HL7标准,不同医疗信息系统可以实现互操作性,使得医疗机构、临床医生、药剂师和其他医疗专业人员可以更容易地访问和共享患者的健康信息。这有助于提高医疗服务的质量、安全性和效率,并支持临床决策、医疗研究和流程优化。

简单理解为HL7是一种在医疗领域里的消息格式,可类比为JSONXML等、

HL7 版本

HL7版本2 定义了一系列电子消息以支持管理、后勤、财务和临床流程。自 1987 年以来,该标准定期更新,产生了 2.1、2.2、2.3、2.3.1、2.4、2.5、2.5.1、2.6、2.7、2.7.1、2.8、2.8.1、 2.8.2 版本。v2.x 标准向后兼容。

HL7版本3采用了基于XML的消息语法,并引入了RIM作为数据模型的基础。RIM是一个概念模型,用于描述医疗信息的结构和关系。它提供了一种统一的方式来定义和表示患者信息、诊断结果、医嘱、药物信息等。

HL7版本2相比,HL7版本3更加严格和复杂,涉及更广泛的医疗信息领域。它包括许多领域特定的信息模型和消息定义,如临床文档、药物管理、实验室结果等。

HL7版本3的设计目标是提供更加精确、规范和可扩展的医疗信息交换标准。它的数据模型和消息定义具有更强的表达能力和灵活性,支持复杂的医疗信息交互和语义互操作性。

然而,尽管HL7版本3在理论上具备更强的表达能力和语义一致性,但实际应用中面临着一些挑战。HL7版本3的复杂性和学习曲线较高,导致其采用和实施的难度较大。因此,在实际应用中,HL7版本2仍然是最常用的HL7标准版本。

本篇文章以与HL7版本22.5.1版本介绍。

HL7 消息结构

HL7消息结构由不同的段(Segment)和字段(Field)组成,每个字段包含一个特定的数据元素。以下是HL7消息的常见组成部分:

  1. 消息头(Message Header):消息头包含了用于标识和控制消息的元数据,如消息类型、发送方、接收方、消息控制标识符等。
  2. 段(Segment):段是消息的基本单位,用于组织和描述特定类型的数据。常见的HL7段包括PID(患者标识段)、PV1(就诊信息段)、OBX(观测结果段)等。
  3. 字段(Field):字段是段的组成部分,用于存储特定的数据元素。每个字段都有一个唯一的编号,如PID-3(患者ID字段)或OBX-5(观测结果值字段)。
  4. 重复字段(Repeating Field):某些字段可以包含多个重复的值,例如多个电话号码或多个地址。重复字段使用相同的字段编号,并通过子字段(Subfield)来区分不同的值。
  5. 子字段(Subfield):子字段是用于区分重复字段中的不同值的子元素。子字段由分隔符进行分隔,并使用相对位置或标识符来引用。
  6. 分隔符(Delimiter):HL7消息使用特定的分隔符字符来分隔字段、段和子字段。常见的分隔符包括竖线(|)、脱字符(^)、波浪号(~)等。
  7. 控制字段(Control Field):控制字段用于标识和控制特定段或字段的属性和行为,如是否可选、重复次数、数据类型等。

ADT_A01消息示例:

MSH|^~\&|ADT1|MCM|LABADT|MCM|198808181126|SECURITY|ADT^A01|MSG00001-|P|2.5.1
EVN|A01|198808181123
PID|||PATID1234^5^M11^^AN||JONES^WILLIAM^A^III||19610615|M||2106-3|677 DELAWARE AVENUE^^EVERETT^MA^02149|GL|(919)379-1212|(919)271-3434~(919)277-3114||S||PATID12345001^2^M10^^ACSN|123456789|9-87654^NC
NK1|1|JONES^BARBARA^K|SPO|||||20011105
NK1|1|JONES^MICHAEL^A|FTH
PV1|1|I|2000^2012^01||||004777^LEBAUER^SIDNEY^J.|||SUR||-||ADM|A0
AL1|1||^PENICILLIN||CODE16~CODE17~CODE18
AL1|2||^CAT DANDER||CODE257
DG1|001|I9|1550|MAL NEO LIVER, PRIMARY|19880501103005|F
DG1|001|I9|1550|MAL NEO LIVER, PRIMARY|19880501103005|A
PR1|2234|M11|111^CODE151|COMMON PROCEDURES|198809081123
ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^SMITH^ELLEN|199505011211
PR1|2234|M11|111^CODE151|COMMON PROCEDURES|198809081124
ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^SMITH^ELLEN|199505011212
PR1|2234|M11|111^CODE151|COMMON PROCEDURES|198809081125
ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^SMITH^ELLEN|199505011213
ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^SMITH^ELLEN|199505011214
ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^SMITH^ELLEN|199505011215
GT1|1122|1519|BILL^GATES^A
GT1|1122|1519|BILL^GATES^B
IN1|001|A357|1234|BCMD|||||132987
IN2|ID1551001|SSN12345677
ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^ELLEN|199505011201
ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^ELLEN|199505011202
ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^ELLEN|199505011203
IN1|001|A357|1234|BCMD|||||132988
IN2|ID1551001|SSN12345678
IN3|ID1551002|SSN12345679
IN3|ID1551002|SSN12345680
ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^ELLEN|199505011204
ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^ELLEN|199505011205
ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^ELLEN|199505011206
ACC|20230510154848^20230510154851|^111

HL7 标准包含256个事件、116个消息类型、139个段、55种数据类型、408个数据字典,涉及79种编码系统。

段(Segment

  • MSH - 消息头包含有关消息本身的信息。该信息包括消息的发送者和接收者、消息的类型以及发送的日期和时间。每个HL7消息都将MSH指定为其第一段。
  • EVN - 事件类型
  • PID - 患者信息包含有关患者人口统计信息,例如姓名、患者ID和地址。
  • NK1 - 近亲信息细分包含患者近亲的联系信息。
  • PV1 - 患者就诊信息部分包含有关患者住院时的信息,例如分配的位置和推荐医生。
  • PV2 - 患者就诊附加信息
  • AL1 - 病人过敏信息
  • DG1 - 诊断
  • ROL - 角色
  • IN1 - 保险
  • IN2 - 保险附加信息
  • ACC - 事故
  • ORC - 医嘱命令所做的检查项目
  • OBR - 关于诊断以及观察的请求信息,用于记录医嘱信息。
  • OBX - 用于记录观察的结果。
  • QRD - 查询定义段,用来定义查询的内容,查询时间、编码格式、优先等级、ID号、请求数据的最大值、请求方的信息、所要请求的内容、数据编码的部门信息。
  • QRF - 进一步定义查询内容。
  • DSP - 重复消息段,装载LIS返回的报告结果,需要用循环的方式把数据取出。

字段(Field

HL7消息的每个段都包含一个或多个字段。默认情况下,竖线(|)分割。

例如段AL1

AL1|1||^PENICILLIN||CODE16~CODE17~CODE18
  • AL1 - 消息头。
  • 第一位1表示 - SetIDAL1
  • 第二位""表示 - AllergenTypeCode
  • 第三位^PENICILLIN表示 - AllergenCodeMnemonicDescript
  • 第四位""表示 - AllergySeverityCode
  • 第五位CODE16~CODE17~CODE18表示 - AllergyReactionCode

其中|分隔符中可以包含其他的分隔符:

  • ^ 组件分隔符,表示该位置有多个属性,例如:|123^yx| 该位置是患者信息,123是患者编号,yx是患者名字
  • ~ 重复分隔符,例如:|CODE16~CODE17~CODE18CODE16不同的重复代码
  • & 子组件分隔符,例如:|KATE^SMITH&yx^ELLEN

HL7 数据类型

类型编码类型说明
ST字符串
TX文本数据
FT格式化文本
NM数字
SI序列ID
SN结构化数据
IDHL7表的编码值
IS用户定义表的编码
EI实体标识符
DT日期
TM时间
CE编码要素
CX具有校验数位的扩展符合ID
XCN扩展符合ID号和ID
XAD扩展地址
XPN扩展姓名
XTN扩展通讯号码

IRIS中查看HL7数据结构

Portal中点击 Interoperability->交互操作->HL7 V2.X -> HL7 V2.X Schema结构。进入到Schema界面。

在这里插入图片描述

在界面展示了HL7所有版本,第一个页签展示了所有消息陆慕,我们点击之前的ADT_A01消息示例。

在这里插入图片描述

选择消息后可消息结构与返回消息类型。我们继续点击2.5.1:ADT_A01

在这里插入图片描述

界面展示了ADT_A01消息所有可用的段Segment,图中表示如下:

  • 1注解处 - 实线消息段表示为必填消息段。
  • 2注解处 - 虚线消息段表示为可选消息段。另外消息段名称后有括号()标识,表示为可重复消息段。
  • 3注解处 - 表示消息段组,表示可重复的消息段组,例如PR1grp()包含了可重复的PR1ROL()消息组。
  • 4注解处 - 表示如果消息组不为空,那么PR1为必填消息段。

在这里插入图片描述

点击消息段可展示对应消息段所有字段,这里点击MSH

  • 1注解处 - 表示字段是否必填。R-必填,O -选填
  • 2注解处 - 数据结构,可点击查看组件。组件用^分隔。
  • 3注解处 - 码表,表示该字段的值为枚举值,必须为码表里的值。

在这里插入图片描述

以上就是IRIS中查看HL7消息结构的简单介绍,接下来我们用代码写HL7消息。

传统方式拼写HL7消息结构

首先我们来看一下用硬编码方式拼写如下HL7消息:

AL1|2||^CAT DANDER||CODE257

硬编码流程如下:

  1. 首先通过Portal查看HL7消息结构中AL1消息段。
  2. 找到AL1消息段字段的位置,在执行拼串。
ClassMethod HardCodeHL7()
{
	s fs = "|"
	s Segment = "AL1"
	s SetIDAL1 = 1
	s AllergenTypeCode = ""
	s AllergenCodeMnemonicDescript = "^PENICILLIN"
	s AllergySeverityCode = ""
	s AllergyReactionCode = "CODE16~CODE17~CODE18"
	s str = Segment _ fs _ SetIDAL1 _ fs _ AllergenTypeCode _ fs _ AllergenCodeMnemonicDescript _ fs _ AllergySeverityCode _ fs _ AllergyReactionCode
	q str
}
USER>w ##class(IHE.HL7.Demo).HardCodeHL7()
AL1|1||^PENICILLIN||CODE16~CODE17~CODE18

大家对于这种方式发现什么问题了吗?

问题如下:

  • 最直观的就是通过数位置拼串,一个位置数错,后面的所有串都是错的。
  • 大量重复的拼分隔符。
  • 如消息结构示例33消息段,那么工作量巨大,还容易出错。
  • 而且这只是拼HL7消息,如果解析HL7消息反过来数位置,简直就是灾难。

动态对象解析HL7消息结构。

基于以上传统方式的弊端,使用动态对象解析HL7消息结构。用法如下:

  • 解析消息示例:
s obj = ##class(IHE.HL7.Util).HL72OBJ(rawContent)
  • rawContent - hl7消息字符串

  • 获取消息字段通过动态对象点属性即可获取到值。

ClassMethod HL72OBJ(id)
{
	s hl7Obj = ##class(EnsLib.HL7.Message).%OpenId(id)
	s rawContent = hl7Obj.RawContent
	s obj = ##class(IHE.HL7.Util).HL72OBJ(rawContent)
	q obj
}
USER>s obj = ##class(IHE.HL7.Demo).HL72OBJ(10)
 
USER>w obj.MSH.EncodingCharacters
^~\&
USER>w obj.MSH.VersionID
2.5.1
USER>w obj.PID.PatientIdentifierList
PATID1234^5^M11^^AN
USER>zw  ##class(IHE.HL7.Demo).HL72OBJ(10)
{"MSH":{"FieldSeparator":"|","EncodingCharacters":"^~\\&","SendingApplication":"ADT1","SendingFacility":"MCM","ReceivingApplication":"LABADT","ReceivingFacility":"MCM","DateTimeOfMessage":"198808181126","Security":"SECURITY","MessageType":"ADT^A01","MessageControlID":"MSG00001-","ProcessingID":"P","VersionID":"2.5.1"},"EVN":{"EventTypeCode":"A01","RecordedDateTime":"198808181123"},"PID":{"SetIDPID":"","PatientID":"","PatientIdentifierList":"PATID1234^5^M11^^AN","AlternatePatientIDPID":"","PatientName":"JONES^WILLIAM^A^III","MothersMaidenName":"","DateTimeofBirth":"19610615","AdministrativeSex":"M","PatientAlias":"","Race":"2106-3","PatientAddress":"677 DELAWARE AVENUE^^EVERETT^MA^02149","CountyCode":"GL","PhoneNumberHome":"(919)379-1212","PhoneNumberBusiness":"(919)271-3434~(919)277-3114","PrimaryLanguage":"","MaritalStatus":"S","Religion":"","PatientAccountNumber":"PATID12345001^2^M10^^ACSN","SSNNumberPatient":"123456789","DriversLicenseNumberPatient":"9-87654^NC"},"NK1()":[{"SetIDNK1":"1","Name":"JONES^BARBARA^K","Relationship":"SPO","Address":"","PhoneNumber":"","BusinessPhoneNumber":"","ContactRole":"","StartDate":"20011105"},{"SetIDNK1":"1","Name":"JONES^MICHAEL^A","Relationship":"FTH"}],"PV1":{"SetIDPV1":"1","PatientClass":"I","AssignedPatientLocation":"2000^2012^01","AdmissionType":"","PreadmitNumber":"","PriorPatientLocation":"","AttendingDoctor":"004777^LEBAUER^SIDNEY^J.","ReferringDoctor":"","ConsultingDoctor":"","HospitalService":"SUR","TemporaryLocation":"","PreadmitTestIndicator":"-","ReadmissionIndicator":"","AdmitSource":"ADM","AmbulatoryStatus":"A0"},"AL1()":[{"SetIDAL1":"1","AllergenTypeCode":"","AllergenCodeMnemonicDescript":"^PENICILLIN","AllergySeverityCode":"","AllergyReactionCode":"CODE16~CODE17~CODE18"},{"SetIDAL1":"2","AllergenTypeCode":"","AllergenCodeMnemonicDescript":"^CAT DANDER","AllergySeverityCode":"","AllergyReactionCode":"CODE257"}],"DG1()":[{"SetIDDG1":"001","DiagnosisCodingMethod":"I9","DiagnosisCodeDG1":"1550","DiagnosisDescription":"MAL NEO LIVER, PRIMARY","DiagnosisDateTime":"19880501103005","DiagnosisType":"F"},{"SetIDDG1":"001","DiagnosisCodingMethod":"I9","DiagnosisCodeDG1":"1550","DiagnosisDescription":"MAL NEO LIVER, PRIMARY","DiagnosisDateTime":"19880501103005","DiagnosisType":"A"}],"PR1grp()":[{"PR1":{"SetIDPR1":"2234","ProcedureCodingMethod":"M11","ProcedureCode":"111^CODE151","ProcedureDescription":"COMMON PROCEDURES","ProcedureDateTime":"198809081123"},"ROL()":[{"RoleInstanceID":"45^RECORDER^ROLE MASTER LIST","ActionCode":"AD","RoleROL":"RO","RolePerson":"KATE^SMITH^ELLEN","RoleBeginDateTime":"199505011211"}]},{"PR1":{"SetIDPR1":"2234","ProcedureCodingMethod":"M11","ProcedureCode":"111^CODE151","ProcedureDescription":"COMMON PROCEDURES","ProcedureDateTime":"198809081124"},"ROL()":[{"RoleInstanceID":"45^RECORDER^ROLE MASTER LIST","ActionCode":"AD","RoleROL":"RO","RolePerson":"KATE^SMITH^ELLEN","RoleBeginDateTime":"199505011212"}]},{"PR1":{"SetIDPR1":"2234","ProcedureCodingMethod":"M11","ProcedureCode":"111^CODE151","ProcedureDescription":"COMMON PROCEDURES","ProcedureDateTime":"198809081125"},"ROL()":[{"RoleInstanceID":"45^RECORDER^ROLE MASTER LIST","ActionCode":"AD","RoleROL":"RO","RolePerson":"KATE^SMITH^ELLEN","RoleBeginDateTime":"199505011213"},{"RoleInstanceID":"45^RECORDER^ROLE MASTER LIST","ActionCode":"AD","RoleROL":"RO","RolePerson":"KATE^SMITH^ELLEN","RoleBeginDateTime":"199505011214"},{"RoleInstanceID":"45^RECORDER^ROLE MASTER LIST","ActionCode":"AD","RoleROL":"RO","RolePerson":"KATE^SMITH^ELLEN","RoleBeginDateTime":"199505011215"}]}],"GT1()":[{"SetIDGT1":"1122","GuarantorNumber":"1519","GuarantorName":"BILL^GATES^A"},{"SetIDGT1":"1122","GuarantorNumber":"1519","GuarantorName":"BILL^GATES^B"}],"IN1grp()":[{"IN1":{"SetIDIN1":"001","InsurancePlanID":"A357","InsuranceCompanyID":"1234","InsuranceCompanyName":"BCMD","InsuranceCompanyAddress":"","InsuranceCoContactPerson":"","InsuranceCoPhoneNumber":"","GroupNumber":"","GroupName":"132987"},"IN2":{"InsuredsEmployeeID":"ID1551001","InsuredsSocialSecurityNumber":"SSN12345677"},"ROL()":[{"RoleInstanceID":"45^RECORDER^ROLE MASTER LIST","ActionCode":"AD","RoleROL":"RO","RolePerson":"KATE^ELLEN","RoleBeginDateTime":"199505011201"},{"RoleInstanceID":"45^RECORDER^ROLE MASTER LIST","ActionCode":"AD","RoleROL":"RO","RolePerson":"KATE^ELLEN","RoleBeginDateTime":"199505011202"},{"RoleInstanceID":"45^RECORDER^ROLE MASTER LIST","ActionCode":"AD","RoleROL":"RO","RolePerson":"KATE^ELLEN","RoleBeginDateTime":"199505011203"}]},{"IN1":{"SetIDIN1":"001","InsurancePlanID":"A357","InsuranceCompanyID":"1234","InsuranceCompanyName":"BCMD","InsuranceCompanyAddress":"","InsuranceCoContactPerson":"","InsuranceCoPhoneNumber":"","GroupNumber":"","GroupName":"132988"},"IN2":{"InsuredsEmployeeID":"ID1551001","InsuredsSocialSecurityNumber":"SSN12345678"},"IN3()":[{"SetIDIN3":"ID1551002","CertificationNumber":"SSN12345679"},{"SetIDIN3":"ID1551002","CertificationNumber":"SSN12345680"}],"ROL()":[{"RoleInstanceID":"45^RECORDER^ROLE MASTER LIST","ActionCode":"AD","RoleROL":"RO","RolePerson":"KATE^ELLEN","RoleBeginDateTime":"199505011204"},{"RoleInstanceID":"45^RECORDER^ROLE MASTER LIST","ActionCode":"AD","RoleROL":"RO","RolePerson":"KATE^ELLEN","RoleBeginDateTime":"199505011205"},{"RoleInstanceID":"45^RECORDER^ROLE MASTER LIST","ActionCode":"AD","RoleROL":"RO","RolePerson":"KATE^ELLEN","RoleBeginDateTime":"199505011206"}]}],"ACC":{"AccidentDateTime":"20230510154848^20230510154851","AccidentCode":"^111"}}  ; <DYNAMIC OBJECT>
  • 组装HL7消息示例:

    s hl7 = ##class(IHE.HL7.Util).OBJ2HL7(obj)
    
    • obj - 动态对象
  • 为了组装大量消息,就以上述返回值直接转为HL7消息。包含33个消息端。

ClassMethod OBJ2HL7(id)
{
	s hl7Obj = ##class(EnsLib.HL7.Message).%OpenId(id)
	s rawContent = hl7Obj.RawContent
	s obj = ##class(IHE.HL7.Util).HL72OBJ(rawContent)
	s hl7 = ##class(IHE.HL7.Util).OBJ2HL7(obj)
	q hl7
}
USER>zw ##class(IHE.HL7.Demo).OBJ2HL7(10)

"MSH|^~\&|ADT1|MCM|LABADT|MCM|198808181126|SECURITY|ADT^A01|MSG00001-|P|2.5.1"_$c(13)_"EVN|A01|198808181123"_$c(13)_"PID|||PATID1234^5^M11^^AN||JONES^WILLIAM^A^III||19610615|M||2106-3|677 DELAWARE AVENUE^^EVERETT^MA^02149|GL|(919)379-1212|(919)271-3434~(919)277-3114||S||PATID12345001^2^M10^^ACSN|123456789|9-87654^NC"_$c(13)_"NK1|1|JONES^BARBARA^K|SPO|||||20011105"_$c(13)_"NK1|1|JONES^MICHAEL^A|FTH"_$c(13)_"PV1|1|I|2000^2012^01||||004777^LEBAUER^SIDNEY^J.|||SUR||-||ADM|A0"_$c(13)_"AL1|1||^PENICILLIN||CODE16~CODE17~CODE18"_$c(13)_"AL1|2||^CAT DANDER||CODE257"_$c(13)_"DG1|001|I9|1550|MAL NEO LIVER, PRIMARY|19880501103005|F"_$c(13)_"DG1|001|I9|1550|MAL NEO LIVER, PRIMARY|19880501103005|A"_$c(13)_"PR1|2234|M11|111^CODE151|COMMON PROCEDURES|198809081123"_$c(13)_"ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^SMITH^ELLEN|199505011211"_$c(13)_"PR1|2234|M11|111^CODE151|COMMON PROCEDURES|198809081124"_$c(13)_"ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^SMITH^ELLEN|199505011212"_$c(13)_"PR1|2234|M11|111^CODE151|COMMON PROCEDURES|198809081125"_$c(13)_"ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^SMITH^ELLEN|199505011213"_$c(13)_"ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^SMITH^ELLEN|199505011214"_$c(13)_"ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^SMITH^ELLEN|199505011215"_$c(13)_"GT1|1122|1519|BILL^GATES^A"_$c(13)_"GT1|1122|1519|BILL^GATES^B"_$c(13)_"IN1|001|A357|1234|BCMD|||||132987"_$c(13)_"IN2|ID1551001|SSN12345677"_$c(13)_"ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^ELLEN|199505011201"_$c(13)_"ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^ELLEN|199505011202"_$c(13)_"ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^ELLEN|199505011203"_$c(13)_"IN1|001|A357|1234|BCMD|||||132988"_$c(13)_"IN2|ID1551001|SSN12345678"_$c(13)_"IN3|ID1551002|SSN12345679"_$c(13)_"IN3|ID1551002|SSN12345680"_$c(13)_"ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^ELLEN|199505011204"_$c(13)_"ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^ELLEN|199505011205"_$c(13)_"ROL|45^RECORDER^ROLE MASTER LIST|AD|RO|KATE^ELLEN|199505011206"_$c(13)_"ACC|20230510154848^20230510154851|^111"_$c(13)

在这里插入图片描述

  • 7Edit工具验证通过:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/511300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud:微服务保护之隔离和降级

1.FeignClient整合Sentinel SpringCloud中&#xff0c;微服务调用都是通过Feign来实现的&#xff0c;因此做客户端保护必须整合Feign和Sentinel。 1.1.修改配置&#xff0c;开启sentinel功能 修改OrderService的application.yml文件&#xff0c;开启Feign的Sentinel功能&…

详细版易学版TypeScript - 类

一、类 - 类的属性和方法 class MyPreson {// 类的属性// 属性需要在类里先定义并确定类型&#xff0c;才可以在constructor里面用this访问name: stringage: numberconstructor(name: string, age: number) {this.name name;this.age age;}// 类的方法sendStr(str: string) {…

工业4.0时代来临,POWERLINK协议在千兆网卡下的性能

“工业 4.0”的高歌猛进&#xff0c; “智能制造”&#xff0c;“智慧工厂”的呼声越来越响亮。这些需求使得数据传输量越来越大&#xff0c;实时性越来越高&#xff0c;因此我们将 POWERLINK 从 100Mbps 升级到1000Mbps。测试下POWERLINK这种工业总线协议的性能&#xff0c;最…

jest基础指示

describ&#xff08;类似java中的class&#xff0c;在这里定义的变量可以在所有it中使用&#xff09; 针对某一方面的测试&#xff0c;一个描述性的东西&#xff0c;针对某一个方面的测试&#xff0c;或者说是一个作用域 一组测试用例的集合。 有两个参数&#xff0c;参数1 &…

Vue 3.0 学习笔记

Vue 3 学习笔记 文章目录 Vue 3 学习笔记[toc]一、初识vue3二、 常用Composition API&#xff08;组合式API&#xff09;**1. setup函数****2. ref函数****3. reactive函数****4. Vue3.0中的响应式原理****Vue2.x的响应式****Vue3.x的响应式** **5. reactivce对比ref****6. set…

为什么我在大厂待了三个月就选择离开?我聊聊应届生该选择大厂还是小公司

我在互联网大厂只待了3个月就离开了&#xff0c;主要原因不是大厂的福利或者薪资不够好&#xff0c;只是因为我发现在大厂里每天都有开不完的会&#xff0c;忙碌到没有自己的生活。当时我每天10点上班&#xff0c;晚上要工作到11甚至是12点&#xff0c;甚至半夜两三点都接到过工…

LangChain-Agents 入门指南

LangChain-Agents 入门指南 LangChain-Agents 入门指南注册 Serpapi运行高级 Agents API 测试运行 Google Search其它 Here’s the table of contents: LangChain-Agents 入门指南 LangChain是一个使用LLMs构建应用程序的工具箱&#xff0c;包含Models、Prompts、Indexes、Mem…

Vue3-黑马(二)

目录&#xff1a; &#xff08;1&#xff09;vue3-ref与reactive &#xff08;2&#xff09;vue3-基础-属性绑定与事件绑定 &#xff08;3&#xff09;vue3-基础-表单绑定 &#xff08;1&#xff09;vue3-ref与reactive ref函数可以把普通的数据变成响应式的数据&#xff0…

Firewall Testing Checklist 分析

不管是在服务器、云技术、嵌入式、车载等场景&#xff0c;防火墙的作用尤为重要&#xff0c;下面从信息收集、管理审核流程、操作系统安全、已实现规则和检查配置&#xff0c;这五个方面来进行分析firewall的具体作用和能力&#xff0c;然后提供一些实用的网络firewall工具给大…

【Spring框架全系列】SpringBoot配置文件相关操作

&#x1f307;哈喽&#xff0c;大家好&#xff0c;我是小浪。上篇博客我们已经学习了如何创建一个Spring项目&#xff0c;那么创建Spirng项目还可以直接通过在Spring官网的方式来创建&#xff0c;做法也非常的简单&#xff0c;感兴趣的小伙伴可以在C站搜个教程尝试一下&#xf…

22年广东河南省赛-隐藏信息探索

任务十: 1、访问服务器的FTP服务,下载图片QR,从图片中获取flag,并将flag提交; QR.png的内容如下,可以看到,找到二维码的前三块都被反转了,需要反转回来,把这个二维码做成一个正方形,使用截图工具分隔、配合画图工具拼接+旋转。平均分为4块,分出4个方块。即可。 2、…

django 基本使用

django 下载 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django查看版本 django-admin --version 4.2.1创建项目 django-admin startproject project创建一个 app python manage.py startapp app注册 app project/settings # app名称.apps.app名称Config…

2023河南省赛vp题解

目录 A题&#xff1a; B题 C题 D题 E题 F题 G题 H题 I题 J题 K题 L题 A题&#xff1a; 1.思路&#xff1a;考虑暴力枚举和双hash&#xff0c;可以在O(n)做完。 2.代码实现&#xff1a; #include<bits/stdc.h> #define sz(x) (int) x.size() #define rep(i,z,…

头歌计算机算法设计与分析:随机化算法

第1关&#xff1a;硬币实验 任务描述 相关知识随机数 编程要求 测试说明任务描述 本关任务&#xff1a;计算机产生的伪随机数来模拟抛硬币试验。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.如何获取数组的长度&#xff0c;2.如何遍历数组。 随机数 随机…

基于 SpringBoot+WebSocket 无DB实现在线聊天室

0 项目说明 0.1 样例展示 0.2 源码地址 GitHub&#xff1a;https://github.com/ShiJieCloud/web-chat Gitee&#xff1a;https://gitee.com/suitbaby/web-chat GitCode&#xff1a;I’m Jie / web-chat GitCode 1 WebSocket 简介 1.1 HTTP 常用的 HTTP 协议是一种无状态…

【牛客刷题专栏】0x27:JZ29 顺时针打印矩阵(C语言编程题)

前言 个人推荐在牛客网刷题(点击可以跳转)&#xff0c;它登陆后会保存刷题记录进度&#xff0c;重新登录时写过的题目代码不会丢失。个人刷题练习系列专栏&#xff1a;个人CSDN牛客刷题专栏。 题目来自&#xff1a;牛客/题库 / 在线编程 / 剑指offer&#xff1a; 目录 前言问…

2023年Pycharm安装教程,附详细图解

简介 PyCharm是一款Python IDE&#xff0c;其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具&#xff0c;比如&#xff0c; 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等等。此外&#xff0c;该IDE提供了一些高级功能&a…

面向对象构造顺序与析构顺序详解

#include<bits/stdc.h> using namespace std;class animal{public:animal(){cout<<"调用animal构造"<<endl;}~animal(){cout<<"调用animal析构"<<endl;} };class verhical{public:verhical(){cout<<"调用verhica…

服装供应链管理包含哪些内容,如何选择服装供应链管理系统?

服装供应链管理是指对服装工厂的采购、生产、物流、仓储和销售等环节的管理&#xff0c;包括原材料的采购、成品的制造、配送、零售等多个环节。 选择合适的服装供应链管理系统&#xff0c;能够帮助服装工厂提高供应链管理的效率、优化库存管理、降低运营成本、保证服装生产的品…

TCP协议三次握手四次挥手详细分析

在学习TCP协议的时候&#xff0c;接触最多的就是TCP的三次握手和四次挥手。关于这个的介绍大多数都是文字和图示来分析的&#xff0c;但是具体到协议的内容时&#xff0c;有可能还是不清楚&#xff0c;下面我就通过具体协议来分析一下这个过程。 这里使用Wireshark网络分析工具…