private PostalAddress ParseNode(XmlNode node, XmlToModelResult xmlToModelResult) { PostalAddress result = new PostalAddress(); XmlNodeList childNodes = node.ChildNodes; foreach (XmlNode childNode in new XmlNodeListIterable(childNodes)) { if (IsNonBlankTextNode(childNode)) { string value = childNode.Value; result.AddPostalAddressPart(new PostalAddressPart(value)); } else { if (childNode is XmlElement) { XmlElement element = (XmlElement)childNode; string name = NodeUtil.GetLocalOrTagName(element); PostalAddressPartType postalAddressPartType = GetPostalAddressPartType(name); string value = GetTextValue(name, element, xmlToModelResult); string codeAsString = GetAttributeValue(childNode, "code"); // only for state/country string codeSystem = GetAttributeValue(childNode, "codeSystem"); // only for state/country Code code = CodeUtil.ConvertToCode(codeAsString, codeSystem); if (postalAddressPartType == null) { // error if part type not found RecordError("Address part type not valid: " + name, element, xmlToModelResult); } else { result.AddPostalAddressPart(new PostalAddressPart(postalAddressPartType, code, value)); } } } } return(result); }
public virtual void TestFormatInvalidUseOfCodeAndCodeSystem() { AdPropertyFormatter formatter = new AdPropertyFormatter(); PostalAddress address = new PostalAddress(); address.AddUse(Ca.Infoway.Messagebuilder.Domainvalue.Basic.X_BasicPostalAddressUse.HOME); address.AddPostalAddressPart(new PostalAddressPart(PostalAddressPartType.CITY, CodeUtil.ConvertToCode("Toronto", "1.2.3.4.5" ))); address.AddPostalAddressPart(new PostalAddressPart(PostalAddressPartType.STATE, "ON")); address.AddPostalAddressPart(new PostalAddressPart(PostalAddressPartType.POSTAL_CODE, "H0H0H0")); address.AddPostalAddressPart(new PostalAddressPart(PostalAddressPartType.COUNTRY, "Canada")); formatter.Format(GetContext("addr", "AD.FULL"), new ADImpl(address)); Assert.IsFalse(this.result.IsValid()); Assert.AreEqual(1, this.result.GetHl7Errors().Count); }