///// <summary>
        ///// Copy QPD segment
        ///// </summary>
        //internal static void CopyQPD(NHapi.Model.V25.Segment.QPD dest, NHapi.Model.V25.Segment.QPD source,  QueryData queryParms)
        //{
        //    dest.MessageQueryName.Identifier.Value = source.MessageQueryName.Identifier.Value;
        //    dest.MessageQueryName.Text.Value = source.MessageQueryName.Text.Value;
        //    dest.QueryTag.Value = source.QueryTag.Value;
        //    var qps = source.GetField(3);

        //    // Create the actual qparms
        //    Dictionary<String, Object> actualQParms = new Dictionary<string, object>();
        //    var qPerson = queryParms.QueryRequest.FindComponent(SVC.Core.ComponentModel.HealthServiceRecordSiteRoleType.SubjectOf);
        //    if (qPerson == null)
        //        return;


        //    //dest.UserParametersInsuccessivefields.Data = source.UserParametersInsuccessivefields.Data;
        //}

        /// <summary>
        /// XTN from telephone number
        /// </summary>
        public static void XTNFromTel(Everest.DataTypes.TEL tel, NHapi.Model.V231.Datatype.XTN instance)
        {
            NHapi.Model.V25.Datatype.XTN v25instance = new NHapi.Model.V25.Datatype.XTN(instance.Message);
            XTNFromTel(tel, v25instance);
            for (int i = 0; i < v25instance.Components.Length; i++)
            {
                if (v25instance.Components[i] is AbstractPrimitive && i < instance.Components.Length)
                {
                    (instance.Components[i] as AbstractPrimitive).Value = (v25instance.Components[i] as AbstractPrimitive).Value;
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Converts an <see cref="EntityTelecomAddress"/> instance to an <see cref="NHapi.Model.V231.Datatype.XTN"/> instance.
        /// </summary>
        /// <param name="tel">The entity telecom address instance to be converted.</param>
        /// <param name="instance">The converted XTN instance.</param>
        public static void XTNFromTel(EntityTelecomAddress tel, NHapi.Model.V231.Datatype.XTN instance)
        {
            var v25Instance = new NHapi.Model.V25.Datatype.XTN(instance.Message);

            XTNFromTel(tel, v25Instance);

            for (var i = 0; i < v25Instance.Components.Length; i++)
            {
                if (v25Instance.Components[i] is AbstractPrimitive && i < instance.Components.Length)
                {
                    (instance.Components[i] as AbstractPrimitive).Value = (v25Instance.Components[i] as AbstractPrimitive).Value;
                }
            }
        }
        /// <summary>
        /// XTN from telephone number
        /// </summary>
        /// <param name="tel"></param>
        /// <param name="instance"></param>
        public static void XTNFromTel(MARC.Everest.DataTypes.TEL tel, NHapi.Model.V25.Datatype.XTN instance)
        {
            Regex re = new Regex(@"^(?<s1>(?<s0>[^:/\?#]+):)?(?<a1>//(?<a0>[^/\;#]*))?(?<p0>[^\;#]*)(?<q1>\;(?<q0>[^#]*))?(?<f1>#(?<f0>.*))?");

            // Match
            var match = re.Match(tel.Value);

            if (match.Groups[1].Value != "tel:")
            {
                instance.AnyText.Value = tel.Value;
                //instance.TelephoneNumber.Value = tel.Value;
                return;
            }

            // Telephone
            string[]      comps = match.Groups[5].Value.Split('-');
            StringBuilder sb    = new StringBuilder(),
                          phone = new StringBuilder();

            for (int i = 0; i < comps.Length; i++)
            {
                if (i == 0 && comps[i].Contains("+"))
                {
                    sb.Append(comps[i]);
                    instance.CountryCode.Value = comps[i];
                }
                else if (sb.Length == 0 && comps.Length == 3 ||
                         comps.Length == 4 && i == 1) // area code?
                {
                    sb.AppendFormat("({0})", comps[i]);
                    instance.AreaCityCode.Value = comps[i];
                }
                else if (i != comps.Length - 1)
                {
                    sb.AppendFormat("{0}-", comps[i]);
                    phone.AppendFormat("{0}", comps[i]);
                }
                else
                {
                    sb.Append(comps[i]);
                    phone.Append(comps[i]);
                }
            }

            instance.LocalNumber.Value = phone.ToString().Replace("-", "");

            // Extension?
            string[] parms = match.Groups[7].Value.Split(';');
            foreach (var parm in parms)
            {
                string[] pData = parm.Split('=');
                if (pData[0] == "extension" || pData[0] == "ext" || pData[0] == "postd")
                {
                    sb.AppendFormat("X{0}", pData[1]);
                    instance.Extension.Value = pData[1];
                }
            }

            instance.TelephoneNumber.Value = sb.ToString();

            // Tel use
            if (tel.Use != null)
            {
                foreach (var tcu in s_v2TelUseConvert)
                {
                    if (tcu.Value.Value == tel.Use.First.Code)
                    {
                        instance.TelecommunicationUseCode.Value = tcu.Key;
                    }
                }
            }
            if (tel.Capabilities != null)
            {
                String cap = Util.ToWireFormat(tel.Capabilities);
                if (cap.Contains("sms"))
                {
                    instance.TelecommunicationEquipmentType.Value = "CP";
                }
                else if (cap.Contains("voice"))
                {
                    instance.TelecommunicationEquipmentType.Value = "PH";
                }
            }
        }
Exemple #4
0
        /// <summary>
        /// Converts an <see cref="EntityTelecomAddress"/> instance to an <see cref="NHapi.Model.V25.Datatype.XTN"/> instance.
        /// </summary>
        /// <param name="tel">The entity telecom address instance to be converted.</param>
        /// <param name="instance">The converted XTN instance.</param>
        public static void XTNFromTel(EntityTelecomAddress tel, NHapi.Model.V25.Datatype.XTN instance)
        {
            Regex re = new Regex(@"^(?<s1>(?<s0>[^:/\?#]+):)?(?<a1>//(?<a0>[^/\;#]*))?(?<p0>[^\;#]*)(?<q1>\;(?<q0>[^#]*))?(?<f1>#(?<f0>.*))?");

            // Match
            var match = re.Match(tel.Value);

            if (match.Groups[1].Value != "tel:")
            {
                instance.AnyText.Value = tel.Value;
                return;
            }

            // Telephone
            string[]      comps = match.Groups[5].Value.Split('-');
            StringBuilder sb = new StringBuilder(), phone = new StringBuilder();

            for (int i = 0; i < comps.Length; i++)
            {
                if (i == 0 && comps[i].Contains("+"))
                {
                    sb.Append(comps[i]);
                    instance.CountryCode.Value = comps[i];
                }
                else if (sb.Length == 0 && comps.Length == 3 || comps.Length == 4 && i == 1)                 // area code?
                {
                    sb.AppendFormat("({0})", comps[i]);
                    instance.AreaCityCode.Value = comps[i];
                }
                else if (i != comps.Length - 1)
                {
                    sb.AppendFormat("{0}-", comps[i]);
                    phone.AppendFormat("{0}", comps[i]);
                }
                else
                {
                    sb.Append(comps[i]);
                    phone.Append(comps[i]);
                }
            }

            instance.LocalNumber.Value = phone.ToString().Replace("-", "");

            // Extension?
            string[] parms = match.Groups[7].Value.Split(';');

            foreach (var parm in parms)
            {
                string[] pData = parm.Split('=');

                if (pData[0] == "extension" || pData[0] == "ext" || pData[0] == "postd")
                {
                    sb.AppendFormat("X{0}", pData[1]);
                    instance.Extension.Value = pData[1];
                }
            }

            instance.TelephoneNumber.Value = sb.ToString();

            // Tel use
            if (tel.AddressUseKey != null)
            {
                var concept = GetConcept(instance.TelecommunicationUseCode.Value, "urn:oid:2.16.840.1.113883.5.1011");

                // TODO: cleanup
                if (concept == null)
                {
                    throw new ArgumentException("Code not known");
                }

                instance.TelecommunicationUseCode.Value = concept.Mnemonic;
            }
        }