ルール・クラスの例
Ensemble には、各種ルール・タイプの例を示すさまざまなデモ・プロダクションが含まれています。以下の各節では、ルール・クラスの例をタイプ別に示します。
汎用ビジネス・ルールの例
Demo.ZenService.Bproc.WeatherReport.TempScaleOpens in a new tab クラスは、汎用ビジネス・ルールの例です。これは、ENSDEMO ネームスペースの Demo.ZenService.Prod.GetTheWeather プロダクションの一部です。
以下の図は、Ensemble ルール・エディタにこのルール定義がどのように表示されるかを示しています。
クラス定義を以下に示しています。
/// Business rule responsible for mapping an input location
/// to "F" for Fahrenheit or "C" for Celsius temperature scale.
Class Demo.ZenService.Bproc.WeatherReport.TempScale Extends Ens.Rule.Definition
{
Parameter RuleAssistClass = "Ens.Rule.GeneralBusinessRuleAssist";
XData RuleDefinition [ XMLNamespace = "http://www.intersystems.com/rule" ]
{
<ruleDefinition alias="" context="Demo.ZenService.Bproc.WeatherReport.Context">
<ruleSet name="" effectiveBegin="" effectiveEnd="">
<rule name="" disabled="false">
<when condition="(Location="US")||(Location="USA")">
<return>"F"</return>
</when>
<otherwise>
<return>"C"</return>
</otherwise>
</rule>
</ruleSet>
</ruleDefinition>
}
}
HL7 メッセージ・ルーティング・ルールの例
Demo.HL7.MsgRouter.XYZRoutingRuleOpens in a new tab クラスは、HL7 メッセージ・ルーティング・ビジネス・ルールの例です。これは、ENSDEMO ネームスペースの Demo.HL7.MsgRouter.Production プロダクションの一部です。
以下の図は、Ensemble ルール・エディタにこのルール定義がどのように表示されるかを示しています。
以下のコードはこのクラス定義を示しています。
/// Routing from the XYZ message source.
Class Demo.HL7.MsgRouter.XYZRoutingRule Extends Ens.Rule.Definition
{
Parameter RuleAssistClass = "EnsLib.HL7.MsgRouter.RuleAssistCompatible";
XData RuleDefinition [ XMLNamespace = "http://www.intersystems.com/rule" ]
{
<ruleDefinition alias="" context="EnsLib.HL7.MsgRouter.RoutingEngine">
<ruleSet name="" effectiveBegin="" effectiveEnd="">
<rule name="">
<constraint name="msgClass" value="EnsLib.HL7.Message"></constraint>
<constraint name="docCategory" value="Demo.HL7.MsgRouter.Schema"></constraint>
<when condition="(HL7.ParentId!="")">
<send transform="" target="Batch_FileOperation"></send>
<return></return>
</when>
</rule>
<rule name="">
<constraint name="msgClass" value="EnsLib.HL7.Message"></constraint>
<constraint name="docCategory" value="2.3.1"></constraint>
<constraint name="docType" value="FHS,BHS"></constraint>
<when condition="1">
<send transform="" target="Batch_FileOperation"></send>
<return></return>
</when>
</rule>
<rule name="">
<constraint name="msgClass" value="EnsLib.HL7.Message"></constraint>
<constraint name="docName" value="ADT_A08"></constraint>
<constraint name="docCategory" value="Demo.HL7.MsgRouter.Schema"></constraint>
<constraint name="docType" value="ADT_A01"></constraint>
<when condition="(Contains(HL7.{PID:PatientName(1).familylastname},"<S>"))
||(StartsWith(HL7.{PID:PatientName(1).familylastname},"Z"))">
<send transform="Demo.HL7.MsgRouter.ADTLastNameTransform" target="Other_FileOperation"></send>
<return></return>
</when>
</rule>
<rule name="">
<constraint name="msgClass" value="EnsLib.HL7.Message"></constraint>
<constraint name="docName" value="ORM_O01"></constraint>
<constraint name="docCategory" value="Demo.HL7.MsgRouter.Schema"></constraint>
<constraint name="docType" value="ORM_O01"></constraint>
<when condition="(StartsWith(HL7.{PIDgrp.PID:PatientName(1).familylastname},"S"))
||(StartsWith(HL7.{PIDgrp.PID:PatientName(1).familylastname},"Z"))">
<send transform="Demo.HL7.MsgRouter.ORMLastNameTransform" target="Other_FileOperation"></send>
<return></return>
</when>
</rule>
<rule name="">
<constraint name="msgClass" value="EnsLib.HL7.Message"></constraint>
<constraint name="docCategory" value="Demo.HL7.MsgRouter.Schema"></constraint>
<when condition="1">
<send transform="" target="Regular_FileOperation"></send>
<return></return>
</when>
</rule>
</ruleSet>
</ruleDefinition>
}
}
汎用メッセージ・ルーティング・ルールの例
Demo.HL7.MsgRouter.AlertRuleOpens in a new tab クラスは、汎用メッセージ・ルーティング・ビジネス・ルールの例です。これは、ENSDEMO ネームスペースの Demo.HL7.MsgRouter.Production プロダクションの一部です。
以下の図は、Ensemble ルール・エディタにこのルール定義がどのように表示されるかを示しています。
以下のコードはこのクラス定義を示しています。
/// See the AlertTable lookup table for a mapping of alert sources to email addresses.
/// If no match is found in the lookup, EmailAlertTransformation sends the alert
/// to the configured Recipient for the EMailAlertOperation.
Class Demo.HL7.MsgRouter.AlertRule Extends Ens.Rule.Definition
{
Parameter RuleAssistClass = "EnsLib.MsgRouter.RuleAssist";
XData RuleDefinition [ XMLNamespace = "http://www.intersystems.com/rule" ]
{
<ruleDefinition alias="" context="EnsLib.MsgRouter.RoutingEngine">
<ruleSet name="" effectiveBegin="" effectiveEnd="">
<rule name="">
<constraint name="msgClass" value="Ens.AlertRequest"></constraint>
<when condition="1">
<send transform="Demo.HL7.MsgRouter.EmailAlertTransform" target="EMailAlertOperation"></send>
<return></return>
</when>
</rule>
</ruleSet>
</ruleDefinition>
}
}
仮想ドキュメントのメッセージ・ルーティング・ルールの例
Demo.HL7v3.Rule.RouteAndTransformOpens in a new tab クラスは、仮想ドキュメントのメッセージ・ルーティング・ビジネス・ルールの例です。これは、ENSDEMO ネームスペースの Demo.HL7v3.Production.InterfaceEngine プロダクションの一部です。
以下の図は、Ensemble ルール・エディタにこのルール定義がどのように表示されるかを示しています。
以下のコードはこのクラス定義を示しています。
/// Test rule for HL7 version 3 productions
Class Demo.HL7v3.Rule.RouteAndTransform Extends Ens.Rule.Definition
{
Parameter RuleAssistClass = "EnsLib.MsgRouter.VDocRuleAssistCompatible";
XData RuleDefinition [ XMLNamespace = "http://www.intersystems.com/rule" ]
{
<ruleDefinition alias="" context="Demo.HL7v3.Rule.Context">
<ruleSet name="" effectiveBegin="" effectiveEnd="">
<rule name="" disabled="false">
<constraint name="msgClass" value="Demo.HL7v3.Message"></constraint>
<constraint name="docName" value="MFMT_IN002101"></constraint>
<when condition="1">
<send transform="Demo.HL7v3.Transformation.MFMTIN002101" target="HL7v3 SOAP Out"></send>
<send transform="Demo.HL7v3.Transformation.MFMTIN002101" target="HL7v3 File Out MFMT"></send>
<return></return>
</when>
</rule>
<rule name="" disabled="false">
<constraint name="msgClass" value="Demo.HL7v3.Message"></constraint>
<constraint name="docName" value="QUPA_IN101103"></constraint>
<when condition="1">
<send transform="Demo.HL7v3.Transformation.QUPAIN101103" target="HL7v3 SOAP Out"></send>
<send transform="Demo.HL7v3.Transformation.QUPAIN101103" target="HL7v3 File Out QUPA"></send>
<return></return>
</when>
</rule>
</ruleSet>
</ruleDefinition>
}
}