01 بنية المراسلة
إدارة الرسائل بشكل فعال أمر أساسي.
Class MyApp.Message.Request Extends Ens.Request {
Property MessageType As %String;
Property Payload As %Stream.GlobalCharacter;
Property Priority As %Integer;
}إدارة الرسائل بشكل فعال أمر أساسي.
Class MyApp.Message.Request Extends Ens.Request {
Property MessageType As %String;
Property Payload As %Stream.GlobalCharacter;
Property Priority As %Integer;
}توجيه الرسائل بشكل ذكي أمر أساسي للأنظمة المتكاملة.
// Rule Engine لتوجيه الرسائل
Class MyApp.RoutingRule Extens Ens.Rule.Definition {
XData RuleDefinition {
}
}معالجة رسائل الخطأ بشكل فعال أمر ضروري لموثوقية النظام.
// معالجة رسائل الخطأ
Class Hospital.Messaging.ErrorHandler
{
ClassMethod HandleError(msgId As %String, error As %String)
{
// تسجيل الخطأ
Set log = ##class(Hospital.Models.ErrorLog).%New()
Set log.MessageId = msgId
Set log.ErrorMessage = error
Set log.Timestamp = $HOROLOG
Set log.Status = "pending"
Do log.%Save()
// إعادة المحاولة بعد انتظار
Job ..RetryAfterDelay(msgId, 30)
}
ClassMethod RetryAfterDelay(msgId As %String, delay As %Integer)
{
Hang delay
Set sc = ##class(Ens.MessageHeader).ResendMessage(msgId)
If $$$ISERR(sc) {
// تسجيل فشل إعادة المحاولة
&sql(UPDATE Hospital.Models.ErrorLog SET Status = 'failed' WHERE MessageId = :msgId)
}
}
// تنظيف رسائل الخطأ القديمة
ClassMethod PurgeErrors(days As %Integer = 30)
{
Set cutoff = $HOROLOG - days
&sql(DELETE FROM Hospital.Models.ErrorLog WHERE Timestamp < :cutoff)
Write "تم حذف ", %ROWCOUNT, " رسالة خطأ قديمة", !
}
}
1. لماذا نحتاج إدارة مراسلة متقدمة؟
تضمن تسليم الرسائل بشكل موثوق حتى عند الأخطاء
ما هو Rule Engine في محرك التكامل؟
Rule Engine يطبق قواعد محددة لتوجيه الرسائل إلى وجهاتها المناسبة
HL7 يدعم أنواع رسائل كثيرة: ADT (adm/discharge), ORM (orders), ORU (results), MDM (docs), SIU (scheduling)