Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
 /// <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);
 }
Ejemplo n.º 3
0
        /// <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);
            }
        }
Ejemplo n.º 4
0
 public Core.Model.Acts.Protocol InsertProtocol(Core.Model.Acts.Protocol data)
 {
     throw new NotImplementedException();
 }