/// <summary> /// Create the protocol data from the protocol instance /// </summary> public void Load(Core.Model.Acts.Protocol protocolData) { if (protocolData == null) { throw new ArgumentNullException(nameof(protocolData)); } using (MemoryStream ms = new MemoryStream(protocolData.Definition)) this.Definition = ProtocolDefinition.Load(ms); var context = new CdssContext <Patient>(); context.Declare("index", typeof(Int32)); // Add callback rules foreach (var rule in this.Definition.Rules) { for (var index = 0; index < rule.Repeat; index++) { foreach (var itm in rule.Variables) { context.Declare(itm.VariableName, itm.VariableType); } } } this.Definition.When?.Compile <Patient>(context); foreach (var wc in this.Definition.Rules) { wc.When.Compile <Patient>(context); } }
/// <summary> /// Get protocol data /// </summary> public Core.Model.Acts.Protocol GetProtocolData() { if (this.m_protocolDefinition == null) { using (MemoryStream ms = new MemoryStream()) { this.Definition.Save(ms); this.m_protocolDefinition = new Core.Model.Acts.Protocol() { HandlerClass = this.GetType(), Name = this.Name, Definition = ms.ToArray(), Key = this.Id, Oid = this.Definition.Oid }; } } return(this.m_protocolDefinition); }
/// <summary> /// Create the protocol data from the protocol instance /// </summary> public void Load(Core.Model.Acts.Protocol protocolData) { if (protocolData == null) { throw new ArgumentNullException(nameof(protocolData)); } using (MemoryStream ms = new MemoryStream(protocolData.Definition)) this.Definition = ProtocolDefinition.Load(ms); // Add callback rules foreach (var rule in this.Definition.Rules) { for (var index = 0; index < rule.Repeat; index++) { foreach (var itm in rule.Variables) { if (!s_callbacks.ContainsKey(itm.VariableName)) { Func <Object> funcBody = () => { return(s_variables[itm.VariableName]); }; var varType = Type.GetType(itm.VariableType); Delegate func = Expression.Lambda(typeof(Func <>).MakeGenericType(varType), Expression.Convert(Expression.Call(funcBody.Target == null ? null : Expression.Constant(funcBody.Target), funcBody.GetMethodInfo()), varType)).Compile(); s_callbacks.Add(itm.VariableName, func); } } } } this.Definition.When?.Compile <Patient>(s_callbacks); foreach (var wc in this.Definition.Rules) { wc.When.Compile <Patient>(s_callbacks); } }
public Core.Model.Acts.Protocol InsertProtocol(Core.Model.Acts.Protocol data) { throw new NotImplementedException(); }