Hi 开发者社区的成员们,大家好!
欢迎关注我们第7期 InterSystems Ideas News!
本期分享如下:
✓ 创意门户已收集了 200 多个创意
✓ 由社区成员实施的创意
✓ 在 Grand Prix 23 竞赛中实施一个创意并获得技术奖励
✓ 最近发布的创意
Hi 开发者社区的成员们,大家好!
欢迎关注我们第7期 InterSystems Ideas News!
本期分享如下:
✓ 创意门户已收集了 200 多个创意
✓ 由社区成员实施的创意
✓ 在 Grand Prix 23 竞赛中实施一个创意并获得技术奖励
✓ 最近发布的创意
有两个类描述记录映射:
RecordMap 描述了记录的外部结构,实现了记录解析器和记录编写器。记录映射业务服务读取并解析传入数据并创建一条消息,该消息是生成的记录类的一个实例。业务流程可以读取、修改或生成生成的记录类的实例。最后,记录映射业务操作使用实例中的数据将 RecordMap 用作格式化模板来写入传出数据。 RecordMap 类和生成的记录类都具有描述数据的层次结构,但生成的对象结构不必与 RecordMap 结构相同。
当创建一个新的记录映射并将其保存在管理门户中时,此操作定义了一个扩展 RecordMap 类的类。为了定义生成的记录类,您必须在管理门户中单击“生成”,这会调用 EnsLib.RecordMap.Generator中的 GenerateObject()方法。仅编译 RecordMap 类定义不会为生成的记录类创建代码。必须使用管理门户或从终端或代码调用 Generator.GenerateObject() 方法。
RecordMap 由一系列字段和组合组成:
Record Mapper 左侧面板显示 Record Map 中定义的字段的摘要。如果您选择一个字段,右侧面板将访问字段属性。例如:
记录映射由一系列字段和组合组成。每个组合由一系列字段和组合组成。 Make Composite 和 Make Field 按钮在复合字段和数据字段之间切换。对于复合字段,只需指定名称和指示字段为必填项的标志。单击记录映射上的绿色加号图标以将字段或组合添加到顶层。单击组合的加号允许向其添加字段或组合。
在将字段添加到记录映射时,可以打开示例文件以查看其数据如何映射到您正在创建的记录。
对于定界记录映射,复合字段中的字段具有不同的分隔符。例如,在记录中,顶级字段由逗号分隔,但在组合中,字段由分号分隔。对于固定宽度的记录映射,复合字段有助于在概念上组织数据,但不会影响输入消息的处理。
当在 Record Mapper 中创建复合字段时,复合字段将默认名称设置为与复合结构匹配的限定名称。限定的字段名称确定生成的记录类中字段的结构。如果将字段名称修改为具有不同的限定名称,则记录映射中复合字段的级别独立于生成的记录类中字段的结构
对于每个数据字段,输入以下属性:
字段名称。
当我写这篇文章时,比特币的价格还不到其成功顶峰时期的五分之一。因此,当我开始向某人讲述我的区块链经历时,我听到的第一句话是毫不掩饰的怀疑:“现在谁需要这个区块链东西?”
没错,区块链炒作已经减弱。然而,它所基于的技术将继续存在并将继续在特定领域使用。互联网通常提供大量描述这些技术的一般用法的材料

在记录映射中,可以在多个位置使用文字控制字符和可打印字符。例如,可以指定制表符(常用控制字符)和逗号(可打印字符)作为分隔符。还可以将控制字符指定为填充字符或记录终止符之一。要在这些上下文之一中指定控制字符,必须为该字符指定十六进制转义序列。如果选择空格或制表符作为填充字符,或选择 CRLF(回车后跟换行符)、CR 或 LF 作为 Record Mapper 中的记录终止符,管理门户会自动生成十六进制表示。如果指定另一个控制字符作为填充字符或记录终止符或任何控制字符作为分隔符,则必须在相应的表单域中输入十六进制表示。下表列出了常用控制字符的十六进制转义序列:
| Character | Hexadecimal representation |
|---|---|
| Tab | \x09 |
| Line feed | \x0A |
| Carriage return | \x0D |
| Space | \x20 |
注意:如果在 RecordMap 中指定了记录终止符,则传入消息必须与记录终止符完全匹配。例如,如果指定 CRLF (\x0D\x0A),则传入消息记录必须与该序列匹配。
无论是从向导生成的映射开始输入新记录映射的属性,还是编辑现有映射,过程都是相同的。
M里边有
sha256WithRSASign
加密算法么
在某些情况下,可能需要以编程方式访问指标属性。例如,可能希望业务流程直接读取或设置度量属性。为此,请在新选项卡中使用 Ens.BusinessMetricOpens 的 GetMetric() 和 SetMetric() 类方法。
GetMetric() 方法GetMetric() 类方法从业务指标缓存中读取指定指标属性的当前值。按如下方式调用此方法:
Set value = ##class(Ens.BusinessMetric).GetMetric(metric,property)
其中 metric 是业务指标的名称(配置名称,而不是类名),property 是指标属性的名称。如果 GetMetric() 无法读取指定值,它会返回一个空字符串。
要从多维指标属性中读取值,有第三个可选参数,用于指定要读取属性的哪个子节点。例如:
Set value(1) = ##class(Ens.BusinessMetric).GetMetric(metric,property,1)
SetMetric() 方法SetMetric() 类方法设置业务指标缓存中指定指标属性的值。

众所周知,人工智能的世界已经到来,每个人都想利用它为自己谋取利益。
有许多平台通过订阅或私人免费提供人工智能服务。然而,由于在计算领域产生的大量“噪音”而脱颖而出的是 Open AI,这主要归功于其最著名的服务:ChatGPT 和 DALL-E。
什么是Open AI?Open AI 是一个非营利性人工智能研究实验室,由 Sam Altman、Ilya Sutskever、Greg Brockman、Wojciech Zaremba、Elon Musk、John Schulman 和 Andrej Karpathy 于 2015 年发起,旨在促进和开发友好的人工智能,造福于人类所有的。
自成立以来,这些人已经发布了一些令人着迷的产品,如果用于良好的目的,可能会成为真正强大的工具。然而,与任何其他新技术一样,它们构成了可能被用来犯罪或作恶的威胁。
我决定测试 ChatGPT 服务,并询问它人工智能的定义是什么。我收到的答案是在互联网上找到的概念的积累,并以人类会回应的方式进行了总结。
简而言之,人工智能只能使用用于训练它的信息进行回复。利用其内部算法和训练期间输入的数据,它可以撰写文章、诗歌,甚至计算机代码片段。
人工智能将对这个行业产生重大影响,并最终彻底改变一切……。也许对人工智能将如何影响我们的未来的期望被夸大了,所以我们应该开始为了共同利益而正确地使用它。
本节介绍业务指标类中的其他选项。
业务指标类可以定义操作,可以将这些操作公开为仪表板中的用户选项。一个操作可以执行客户端活动(例如过滤和刷新仪表板)和服务器端活动(例如调用您自己的 API)的组合。作用机制很一般。
要定义操作,请实施业务指标类的 %OnGetActionList() 和 %OnDashboardAction() 方法。有关这些方法的信息,请参阅实施 商业智能中的定义自定义操作。
Implementing OnInit()例如,还可以覆盖业务指标类的 OnInit() 回调以初始化任何属性。如果这样做,必须确保它显式调用其超类 BusinessMetric 提供的 OnInit() 方法,如下所示。如果不是,则相应的仪表板元素无法正常显示:
Method OnInit() As %Status
{
// . . .要定义单实例业务指标,请定义一个满足以下要求的类:
Ens.BusinessMetric的子类。对于此类,ADAPTER 参数是 Ens.InboundAdapter,它提供了 CallInterval 设置。这确保定期调用业务指标。
OnCalculateMetrics() 方法。要定义一个简单的业务指标属性,请将一个属性添加到业务指标类,如下所示:
Property MetricProperty As Ens.DataType.Metric;
此属性可以包含数字或字符串值。
其中 MetricProperty 是业务指标属性的名称。例如:
/// This metric tracks A/R totals
Property AccountsReceivable As Ens.DataType.Metric;
此属性可以包含数字或字符串值。
这是在 Ensemble 中实现“微服务”设计的初学者指南。 “微服务”是当今流行的一个词,具有广泛的解释。我的解释是:“微服务”是一种“NoSQL 服务”。一个什么?答案在文章中。
我们了解了 SQL 和 NoSQL 数据库之间的区别。对我来说,SOA Web 服务和“微服务”之间的区别几乎相同。我将通过一个例子来解释它。
请注意,虽然这是一本初学者指南,但我假定我对数据建模、RESTful 服务和 Ensemble 有深入的技术知识。
我的例子很简单。我想为我的家人订一张机票。我使用www.skyscanner.hu ,但它可以是任何预订网站。那我该怎么办?在着陆页上,我输入了航班信息:我需要从布达佩斯到布拉格并返回的机票,10 月29日起飞,11 月 1日返回,直飞航班,经济舱四人。提交搜索表单后,我会返回可用选项。我选择一个并输入乘客详细信息、折扣计划,最后通过 PayPal 付款。直截了当。
在更详细的版本中:后台发生了什么。
n 开始预订
n 输入选择条件
n 生成匹配航班列表
n 选择航班
n 临时封号
n 输入乘客详细信息
n 根据标价应用一些折扣程序计算机票
n 切换到 PayPal 支付
n 完成预订,释放临时块
当任务是使用 SOAP Web 服务开发后端时,最常见的架构如下:
n 将有支持预订的 SOAP 服务。假设它称为 FlightBookingService。
上篇文章IRIS, Caché监控指导 - 警告和告警 发出后收到要求介绍一下发送SNMP通知的具体操作,这里介绍一下。
我省去了SNMP的原理,这个有需要的可以网上查找。这里只做一个配置的操作:测试怎么从一个Windows上安装的IRIS实例发送IRIS Alert给另一台Linux服务器。
因为安全原因,Windows 10不再默认安装中启动SNMP,用户需要手工安装SNMP启动服务。以下两个文章是古老的Window 2003和新的Windows 10中配置SNMP的安装,给各位做个参考。
简单的总结一下:Windows系统中有两个服务:
执行逐字符替换的字符串函数。
$TRANSLATE(string,identifier[,associator])
string - 目标字符串。它可以是字段名称、文字、主机变量或 SQL 表达式。identifier - 要在字符串中搜索的字符。它可以是字符串或数字文字、主变量或 SQL 表达式。associator - 可选 — 与标识符中的每个字符对应的替换字符。它可以是字符串或数字文字、主变量或 SQL 表达式。$TRANSLATE 函数在返回值字符串中执行逐字符替换。它一次处理一个字符的字符串参数。它将字符串中的每个字符与标识符参数中的每个字符进行比较。如果 $TRANSLATE 找到匹配项,它会记下该字符的位置。
$TRANSLATE 的双参数形式从输出字符串中删除标识符参数中的所有字符实例。$TRANSLATE 的三参数形式将在字符串中找到的每个标识符字符的所有实例都替换为位置对应的关联字符。替换是基于字符而不是字符串执行的。如果标识符参数包含的字符多于关联参数,则从输出字符串中删除标识符参数中多余的字符。如果标识符参数包含的字符少于关联参数,则忽略关联参数中多余的字符。$TRANSLATE 区分大小写。
$TRANSLATE 不能用于将 NULL 替换为字符。
大家好!
InterSystems Grand Prix 2023 结合了 InterSystems IRIS 数据平台的所有主要功能!
因此,我们邀请您使用以下功能并收集额外的技术奖励,以帮助您赢得奖品!
如下:
SQLState: () NativeError: [20009] Message: ,这个怎么错误码值在哪找原因呢.png)
DR 异步DR 异步如果在镜像中包含一个或多个 DR 异步以提供灾难恢复功能,则最好通过计划的故障转移到每个 DR 异步来定期测试此功能。要执行此测试,或者当出于任何其他原因(例如包含故障转移成员的数据中心计划停电)而想要故障转移到 DR 异步时,请使用以下过程:
IRIS C 提升为故障转移成员;因为 IRIS A 可用,所以不会要求您选择故障转移伙伴。 IRIS C 成为备份, IRIS B(如果存在)降级为 DR 异步。注意:如果镜像仅包含一个故障转移成员,则过程相同;不需要选择故障转移伙伴, IRIS C 成为备份,因此镜像现在有两个故障转移成员。
IRIS C 变为活动状态时(请参阅备份状态和自动故障转移),在 IRIS A 上执行正常关闭。自动故障转移被触发,允许 IRIS C 接管为主。IRIS C 上执行任何测试后,重新启动 IRIS A,它会自动加入镜像作为备份。或者,如果你想重启主服务器以保持同步而不自动成为备份,因为在真正的灾难中它不太可能可用,可以在重启之前将它降级为 DR 异步(通过它的 ISCAgent),然后准备好后将其提升为故障转移成员。有关执行此操作的信息,请参阅将备份降级为 DR 异步。
在数字化时代,数据的重要性无可置疑。数据作为新型生产要素,不仅在宏观政策层面得到党和政府的大力推动,也是医院高质量发展的关键和改变医疗行业的驱动力。随着医疗信息化的迅猛发展,我们正迈向一个数据随处可及、人人可用易用的医疗信息化时代。这一时代将数据与人的需求相结合,致力于让数据能“主动”找到需要他们的医护人员和患者,每一个行业从业者,都应致力于为医护人员和患者提供简单易用的软件解决方案,减少工作量,提高效率,推动医疗行业的进步。
数据与人的融合是实现医疗行业数字化转型的核心。当然,医疗数据的收集、存储和管理对于提供高质量的医疗服务至关重要。然而,仅仅有大量的数据并不足够,我们需要将数据与人的需求紧密结合起来。这意味着我们应该让更多的数据关联起来,并且能服务于更多的人群,让患者能够随时随地访问他们的电子病历,让医生和科研人员也能及时有效地获取病人在医院围墙内外进行治疗和健康管理的数据,并且以直观易懂的方式呈现给医护人员和患者,使他们能够快速、准确地获取所需的信息。数据的融合还包括将不同来源的数据整合起来,为医护人员提供全面、完整的视图,同时基于医疗诊断的规则,不管是通过CDSS的形式,还是通过ChatBot(聊天机器人),帮助他们做出更好的决策。
实现数据和人的融合要按照人的需求投放数据。数字化转型的重要目标是为医护人员和患者提供所需的数据,以支持决策和治疗过程。
ISCAgent 的日志数据进行 DR 提升和手动故障转移ISCAgent 的日志数据进行 DR 提升和手动故障转移如果 IRIS A 的主机系统正在运行,但 IRIS 实例没有且无法重新启动,您可以使用以下过程在通过升级后使用来自 IRIS A 的最新日志数据更新升级的 IRIS C IRIS A 的 ISCAgent。
IRIS C,选择 IRIS A 作为故障转移伙伴。 IRIS C 被提升为故障转移成员,从 IRIS A 的代理获取最新的日志数据,并成为主要成员。IRIS A 上的 IRIS 实例,它作为备份重新加入镜像。IRIS A 重新加入镜像并变为活动状态后,可以使用使用升级的 DR 异步临时替换故障转移成员中描述的过程,将所有成员返回到它们以前的角色,首先是正常关闭 IRIS C ,然后在 IRIS B 的配置参数文件的 [MirrorMember] 部分中设置 ValidatedMember=0(请参阅配置参数文件参考中的 [MirrorMember]),将 IRIS B 重新启动为 DR 异步,将 IRIS B 提升为备份,并以 DR 异步方式重新启动 IRIS C。如异步镜像成员中所述,灾难恢复 (DR) 异步成员维护镜像数据库的只读副本,从而可以在需要时将 DR 异步提升为故障转移成员。将 DR 异步成员提升为故障转移成员中描述了提升 DR 异步的过程。本节讨论三种可以使用 DR 异步提升的场景:
DR 异步DR 异步DR 异步临时替换故障转移成员在本节的过程中, IRIS A 是原始的主要故障转移成员, IRIS B 是原始备份,而 IRIS C 是要提升的 DR 异步。
DR 异步当镜像没有正常运行的故障转移成员时,可以手动故障转移到提升的 DR 异步。以下过程涵盖了可以选择此选项的场景:
DR 提升和手动故障转移ISCAgent 的日志数据进行 DR 提升和手动故障转移DR 提升和手动故障转移注意:如果无法确认主要故障转移成员 IRIS 实例确实已关闭,并且该实例有可能变得可用,请不要手动故障转移到另一个镜像成员。如果手动进行故障转移并且原始主节点变为可用,则两个故障转移成员将同时充当主节点。
如自动故障转移机制中所述,当主节点同时与备份节点和仲裁节点失去联系时,它会进入无限期的故障状态并且不能再作为主节点运行。通常,发生这种情况时,备份会接管并成为主要的。当主服务器与备份服务器的连接恢复时,备份服务器强制关闭主服务器;或者,可以在恢复连接之前自行强制关闭主服务器。
但是,如果一个网络事件(或一系列网络事件)导致故障转移成员和仲裁器同时(或几乎同时)彼此失去联系,则可能没有主节点,因为备份无法接管并且主节点不再存在作为主要操作。这种情况显示为自动故障转移机制详细部分中仲裁模式下对丢失连接的镜像响应表中的最终方案。当主数据库变得孤立并且备份由于错误而无法接管时,可能会发生类似的情况。
当这些情况发生时,有以下选择:
^MIRROR 例程(请参阅使用 ^MIRROR 例程)。该例程确认主实例处于不确定的故障状态,并为您提供两个选项:
本文是 SqlDatabaseChain 的简单快速入门(我所做的)。
希望大家会感兴趣。
非常感谢:
sqlalchemy-iris 作者@Dmitry Konnov Maslennikov
您的项目使我的试验变得可能。
文章脚本使用 openai API,因此请注意不要在外部共享您不打算共享的表信息和记录。
如果需要,可以插入本地模型。
mkdir chainsql cd chainsql python -m venv . scripts\activate pip install langchain pip install wget # Need to connect to IRIS so installing a fresh python driver python -c "import wget;url='https://raw.githubusercontent.com/intersystems-community/iris-driver-distribution/main/DB-API/intersystems_irispython-3.2.0-py3-none-any.whl';wget.
假设有两个名为 IRIS A 和IRIS B 的故障转移成员。如果 ^MIRROR 例程确认备份 (IRIS B) 在与主 (IRIS A) 丢失联系时处于活动状态,因此具有最新的来自 IRIS A 的日志数据,可以使用单个过程手动进行故障转移。当连接因主要故障而丢失时,不会造成数据丢失的风险。但是,当发生多个故障时,活动备份可能没有来自主服务器的所有最新日志数据,因为主服务器在连接丢失后继续运行了一段时间。
使用以下过程确定备份是否处于活动状态:
IRIS 实例 IRIS A 上的 ISCAgent 实际上已关闭(并确保它们在整个手动故障转移过程中保持关闭状态)。IRIS B 上,在终端的 %SYS 命名空间中运行 ^MIRROR 例程(请参阅使用 ^MIRROR 例程)。Hi 开发者们,
欢迎观看视频,以了解 InterSystems TrakCare 创新工具包( Innovation Toolkit),该工具包可免费下载,使 TrakCare 用户能够快速访问标准 HL7® FHIR® 格式的数据,使记录系统成为转型系统:
InterSystems 已纠正导致进程内存使用量增加的缺陷。
具体来说,在对局部变量执行$Order 、 $Query 或Merge时,会出现本地进程分区内存消耗增加的问题。虽然这对大多数运行环境没有不利影响,但支持大量进程或严格限制每个进程最大内存使用的环境可能会受到影响。某些进程可能会遇到<STORE> 错误。
该缺陷存在于2023.1.0.229.0中,但它被重新发布为2023.1.0.235.1,并包含了修复程序,以加快修正,而无需客户等待维护版本。
此缺陷的更正标识为 DP-423127 和 DP-423237。这些将包含在所有未来版本中。
该缺陷出现在 InterSystems IRIS ® 、InterSystems IRIS for Health ™ 和HealthShare ® Health Connect 的版本 2022.2、2022.3 和 2023.1(内部版本 229)中。如果您运行的是这些版本之一,我们建议升级到 2023.1(内部版本 235)。
此修复也可通过 Ad hoc 分发获得。
如果您对此警报有任何疑问,请联系全球响应中心。
当一个故障转移成员意外失败时,适当的程序取决于哪个 实例失败,镜像所处的故障转移模式(参见自动故障转移机制详述),另一个故障转移成员实例的状态,两个故障转移成员的 ISCAgent 的可用性, 和镜像的设置。
在阅读和使用本节时,您能需要查看对各种中断情况的镜像响应,其中讨论了主服务器变得不可用时备份行为的详细信息。
当备份故障转移成员的 实例或其主机系统发生故障时,主要继续正常运行,尽管某些应用程序可能会出现短暂的暂停(有关详细信息,请参阅备份中断的影响)。
当备份发生意外中断时,纠正导致故障的条件,然后重新启动备份实例或主机系统。当备份的 实例重新启动时,它会自动加入镜像作为备份。
注意:如果备份在代理控制模式下失败(请参阅自动故障转移规则)并且无法联系到备份的 ISCAgent,则主的 实例在重新启动后无法成为主实例,因为它无法确定它是否是最近的主实例.因此,如果出于任何原因需要在备份主机系统关闭时重新启动实例,则必须使用维护备份故障转移成员中描述的过程来执行此操作。
在维护IRIS的镜像前,管理员需要清楚的了解以下一些概念:
切换模式在镜像监视器里被翻译成”故障转移模式“。 有两种模式:
通常情况,生产环境的镜像是安装了arbiter(仲裁者)的。Mirror启动时,在还没有连接上arbiter的时候,自动进入Agent-Controlled模式。而后当两台机器,主机,备机都连通了Arbiter,会保持在这个模式。
满足上面的条件,就进入arbiter controlled mode。而如果主备的任一方,失去了和arbiter的连接,或者备用侧丢了active, 开始尝试连接另一方,退回到agent-controlled模式。
Mirror Member Journal Transfer and Dejournaling Status. 请注意,这里面有两个概念:一个是Mirror成员的状态,一个是Journal传输和Dejournaling的状态。下面的图中是3个字段: STATUS, Journal传输,Dejournaling.

STATUS
镜像成员的状态。
将 FHIR 文档(例如患者信息表、出院摘要)发布到 FHIR 存储库时:
EndPoint端点/Bundle捆绑
您可以使用上述 URL 进行 POST。 (以下示例使用 IRIS for Health 提供的 FHIR 存储库。)
.png)
我将检查 GET 请求。
.png)
我能够确认我能够注册。
对于在FHIR repository注册的FHIR文档,如果能通过指定文档编号来GET会很方便,由于支持,无法对指定Composition.identifier的Bundle资源进行GET请求。
作为解决方法,将注册 Bundle 时设置为 Composition.identifier.value 的文档编号设置为 Bundle.identifier.value 然后 POST。通过这样做,您可以在 Bundle 的 Search Parameter: identifier 中指定文档编号并 GET 目标 Bundle 资源。
文档示例:(这是部分摘录,因为它很长)
{ "resourceType" : "Bundle" , "meta" : { "profile" : [ "http://jpfhir.文章相关视频参见Synthea生成FHIR测试数据,以及FHIR服务器加载FHIR资源文件
Synthea是一个开源软件包,可以模拟生成患者就诊数据。他的github地址在这里。
生成的就诊模版从最初的模拟美国前十种常见病、前十种慢性病到现今超过90种不同的模型。详细模型参见这里。
基于当前版本,Synthea的特性包括:
大家好!
这是一篇关于如何将视频嵌入您的帖子的简短文章。
.png)
最近在换吃饭的家伙(笔记本),整理了一下当前开发使用的环境和工具,如下以目录展示,想问问社区的各位老师和同学,你们开发的各个环节使用的是什么工具,同时希望展示一下你们的硬件设备😁😁😁
1 Java环境
1.1 JDK-1.8
1.2 开发工具-IDEA
1.3 MySQL数据库
1.4 版本管理工具-git/svn
1.5 nacos
1.6 spring cloud alibaba
2 前端vue环境
2.1 node
2.2 vue
2.3 浏览器
2.3.1 谷歌
2.3.2 Firefox
2.3.3 Edge
3 esb环境--IRS
3.1 IRS for Heath 2023
3.2 Postman/ApiPost
3.3 SOAPUI
3.4 7Edit.2.x
3.5 Json&XML可视化工具
MissionKitEnt2014/Altova XMLSpy 2014
3.6 开发工具 VSCode
4 虚拟机环境
4.1 VMware Workstation Pro
4.2 镜像
4.2.1 Ubuntu20.04镜像
4.2.2 Windows 2012 R2镜像
4.2.3 Windows 10 镜像
4.3 Docker
4.4 FinalShell
5 远程链接
5.1 向日葵
5.2 ToDesk
6 数据环境
6.1 dbeaver
6.2 navicat
7 办公环境
7.1 腾讯会议
7.2 钉钉
7.