/// <summary> /// Add a parameter with a given name and value. /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="value">The value of the parameter as a FHIR datatype or Resource</param> /// <returns>this (Parameters), so you can chain AddParameter calls</returns> public Parameters Add(string name, Base value) { if (name == null) { throw new ArgumentNullException("name"); } if (value == null) { throw new ArgumentNullException("value"); } var newParam = new ParametersParameterComponent() { Name = name }; if (value is Element) { newParam.Value = (Element)value; } else { newParam.Resource = (Resource)value; } Parameter.Add(newParam); return(this); }
/// <summary> /// Returns the Value property of the requested parameter casted to the requested type /// </summary> /// <typeparam name="T"></typeparam> /// <param name="name"></param> /// <param name="matchPrefix"></param> /// <returns></returns> public T GetSingleValue <T>(string name, bool matchPrefix = false) where T : Element { if (name == null) { throw new ArgumentNullException("name"); } ParametersParameterComponent p = Get(name, matchPrefix).SingleOrDefault(); if (p == null) { return(null); } return(p.Value as T); }
/// <summary> /// Add a parameter with a given nanme and tuple value. /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="tuples">The value of the parameter as a list of tuples of (name,FHIR datatype or Resource)</param> /// <returns>this (Parameters), so you can chain AddParameter calls</returns> public Parameters Add(string name, IEnumerable <Tuple <string, Base> > tuples) { if (name == null) { throw new ArgumentNullException("name"); } if (tuples == null) { throw new ArgumentNullException("tuples"); } var newParam = new ParametersParameterComponent() { Name = name }; foreach (var tuple in tuples) { var newPart = new ParametersParameterComponent() { Name = tuple.Item1 }; newParam.Part.Add(newPart); if (tuple.Item2 is Element) { newPart.Value = (Element)tuple.Item2; } else { //TODO: Due to an error in the jan2015 version of DSTU2, this is not yet possible //newPart.Resource = (Resource)tuple.Item2; throw Error.NotImplemented("Jan 2015 DSTU2 does not support resource values for tuples parameters"); } } Parameter.Add(newParam); return(this); }