/// <summary> /// Create the response message /// </summary> public MARC.Everest.Interfaces.IInteraction Create(MARC.Everest.Interfaces.IInteraction request, RegistryQueryResult results, List <IResultDetail> dtls) { // GEt the config services ISystemConfigurationService configService = Context.GetService(typeof(ISystemConfigurationService)) as ISystemConfigurationService; ILocalizationService localeService = Context.GetService(typeof(ILocalizationService)) as ILocalizationService; var retHl7v3 = new List <MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.Subject1 <MARC.Everest.RMIM.UV.NE2008.PRPA_MT201304UV02.Patient, object> >(results.Results.Count); UvDeComponentUtil dCompUtil = new UvDeComponentUtil(); dCompUtil.Context = this.Context; PRPA_IN201309UV02 rqst = request as PRPA_IN201309UV02; // Convert results to HL7v3 foreach (RegistrationEvent res in results.Results) { var retRec = new MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.Subject1 <MARC.Everest.RMIM.UV.NE2008.PRPA_MT201304UV02.Patient, object>( false, dCompUtil.CreateRegistrationEventDetail(res, dtls) ); if (retRec.RegistrationEvent == null) { retRec = new MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.Subject1 <MARC.Everest.RMIM.UV.NE2008.PRPA_MT201304UV02.Patient, object>( false, new MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.RegistrationEvent <MARC.Everest.RMIM.UV.NE2008.PRPA_MT201304UV02.Patient, object>() { NullFlavor = NullFlavor.NoInformation } ); } retHl7v3.Add(retRec); } if (retHl7v3.Count > 1) { dtls.Add(new InsufficientRepetitionsResultDetail(ResultDetailType.Warning, localeService.GetString("MSGE06E"), null)); } // Create the response PRPA_IN201310UV02 response = new PRPA_IN201310UV02 ( Guid.NewGuid(), DateTime.Now, PRPA_IN201310UV02.GetInteractionId(), ProcessingID.Production, "T", AcknowledgementCondition.Never, MessageUtil.CreateReceiver(rqst.Sender), MessageUtil.CreateSenderUv(new Uri(rqst.Receiver[0].Telecom.Value), configService), null ) { Acknowledgement = new List <MARC.Everest.RMIM.UV.NE2008.MCCI_MT100300UV01.Acknowledgement>() { new MARC.Everest.RMIM.UV.NE2008.MCCI_MT100300UV01.Acknowledgement( dtls.Count(a => a.Type == ResultDetailType.Error) == 0 ? AcknowledgementType.ApplicationAcknowledgementAccept : AcknowledgementType.ApplicationAcknowledgementError, new MARC.Everest.RMIM.UV.NE2008.MCCI_MT100200UV01.TargetMessage(request.Id) ) } }; response.controlActProcess = new MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.ControlActProcess <MARC.Everest.RMIM.UV.NE2008.PRPA_MT201307UV02.QueryByParameter, MARC.Everest.RMIM.UV.NE2008.PRPA_MT201304UV02.Patient, object>("EVN") { Id = SET <II> .CreateSET(new II(configService.Custodianship.Id.Domain, Guid.NewGuid().ToString())), Code = new CD <string>(PRPA_IN201310UV02.GetTriggerEvent().Code, PRPA_IN201310UV02.GetTriggerEvent().CodeSystem), QueryAck = new MARC.Everest.RMIM.UV.NE2008.QUQI_MT120001UV01.QueryAck( rqst.controlActProcess.queryByParameter.QueryId, "complete", (AcknowledgementType)response.Acknowledgement[0].TypeCode == AcknowledgementType.ApplicationAcknowledgementError ? QueryResponse.ApplicationError : results.TotalResults == 0 ? QueryResponse.NoDataFound : QueryResponse.DataFound, results.TotalResults, results.Results.Count, results.TotalResults - results.Results.Count - results.StartRecordNumber ), queryByParameter = rqst.controlActProcess.queryByParameter }; response.controlActProcess.LanguageCode = MessageUtil.GetDefaultLanguageCode(this.Context); if (retHl7v3.Count > 0) { response.controlActProcess.Subject.Add(retHl7v3[0]); } return(response); }
public virtual object Parse(System.Xml.XmlReader s, System.Type useType, System.Type currentInteractionType, MARC.Everest.Formatters.XML.ITS1.XmlIts1FormatterParseResult resultContext) { System.String nil = s.GetAttribute("nil", MARC.Everest.Formatters.XML.ITS1.XmlIts1Formatter.NS_XSI); if(!System.String.IsNullOrEmpty(nil) && System.Convert.ToBoolean(nil)) return null;; MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.Subject1<MARC.Everest.RMIM.UV.NE2008.PRPA_MT201310UV02.Patient,System.Object> instance = new MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.Subject1<MARC.Everest.RMIM.UV.NE2008.PRPA_MT201310UV02.Patient,System.Object>();; if(s.NodeType != System.Xml.XmlNodeType.Element) throw new System.InvalidOperationException(System.String.Format("Expected node type of Element, actual node type is '{0}'", s.NodeType)); if(s.GetAttribute("typeCode") != null){ if(!"SUBJ".Equals(s.GetAttribute("typeCode"))) resultContext.AddResultDetail(new MARC.Everest.Connectors.FixedValueMisMatchedResultDetail(s.GetAttribute("typeCode"), "SUBJ", false, s.ToString())); instance.TypeCode = (MARC.Everest.DataTypes.CS<MARC.Everest.RMIM.UV.NE2008.Vocabulary.ActRelationshipType>)MARC.Everest.Connectors.Util.FromWireFormat(s.GetAttribute("typeCode"), typeof(MARC.Everest.DataTypes.CS<MARC.Everest.RMIM.UV.NE2008.Vocabulary.ActRelationshipType>)); } if(s.GetAttribute("contextConductionInd") != null) instance.ContextConductionInd = (MARC.Everest.DataTypes.BL)MARC.Everest.Connectors.Util.FromWireFormat(s.GetAttribute("contextConductionInd"), typeof(MARC.Everest.DataTypes.BL)); if(s.GetAttribute("nullFlavor") != null) instance.NullFlavor = (MARC.Everest.DataTypes.CS<MARC.Everest.DataTypes.NullFlavor>)MARC.Everest.Connectors.Util.FromWireFormat(s.GetAttribute("nullFlavor"), typeof(MARC.Everest.DataTypes.CS<MARC.Everest.DataTypes.NullFlavor>)); if(s.IsEmptyElement) return instance; string sName = s.Name; int sDepth = s.Depth; s.Read(); while(!(s.NodeType == System.Xml.XmlNodeType.EndElement && s.Name == sName && s.Depth == sDepth)) { string oldName = s.LocalName; try { if(s.NodeType == System.Xml.XmlNodeType.Element) { if(s.LocalName == "registrationEvent" ) { object ddcb06f03ca0c43fa985fd4416df2a152 = Host.ParseObject(s, typeof(MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.RegistrationEvent<MARC.Everest.RMIM.UV.NE2008.PRPA_MT201310UV02.Patient,System.Object>), currentInteractionType, resultContext); instance.RegistrationEvent = ddcb06f03ca0c43fa985fd4416df2a152 is MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.RegistrationEvent<MARC.Everest.RMIM.UV.NE2008.PRPA_MT201310UV02.Patient,System.Object> ? ddcb06f03ca0c43fa985fd4416df2a152 as MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.RegistrationEvent<MARC.Everest.RMIM.UV.NE2008.PRPA_MT201310UV02.Patient,System.Object> : (MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.RegistrationEvent<MARC.Everest.RMIM.UV.NE2008.PRPA_MT201310UV02.Patient,System.Object>)MARC.Everest.Connectors.Util.FromWireFormat(ddcb06f03ca0c43fa985fd4416df2a152, typeof(MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.RegistrationEvent<MARC.Everest.RMIM.UV.NE2008.PRPA_MT201310UV02.Patient,System.Object>)); } else if(s.LocalName == "realmCode" ) { object d2582bda9f6694c1fa6a109c9057e87ff = Host.ParseObject(s, typeof(MARC.Everest.DataTypes.SET<MARC.Everest.DataTypes.CS<System.String>>), currentInteractionType, resultContext); instance.RealmCode = d2582bda9f6694c1fa6a109c9057e87ff is MARC.Everest.DataTypes.SET<MARC.Everest.DataTypes.CS<System.String>> ? d2582bda9f6694c1fa6a109c9057e87ff as MARC.Everest.DataTypes.SET<MARC.Everest.DataTypes.CS<System.String>> : (MARC.Everest.DataTypes.SET<MARC.Everest.DataTypes.CS<System.String>>)MARC.Everest.Connectors.Util.FromWireFormat(d2582bda9f6694c1fa6a109c9057e87ff, typeof(MARC.Everest.DataTypes.SET<MARC.Everest.DataTypes.CS<System.String>>)); } else if(s.LocalName == "typeId" ) { object d945f4c57df65475b95ee0c16419349f4 = Host.ParseObject(s, typeof(MARC.Everest.DataTypes.II), currentInteractionType, resultContext); instance.TypeId = d945f4c57df65475b95ee0c16419349f4 is MARC.Everest.DataTypes.II ? d945f4c57df65475b95ee0c16419349f4 as MARC.Everest.DataTypes.II : (MARC.Everest.DataTypes.II)MARC.Everest.Connectors.Util.FromWireFormat(d945f4c57df65475b95ee0c16419349f4, typeof(MARC.Everest.DataTypes.II)); } else if(s.LocalName == "templateId" ) { object ddc091f206ffc4087806d0dee863dd607 = Host.ParseObject(s, typeof(MARC.Everest.DataTypes.LIST<MARC.Everest.DataTypes.II>), currentInteractionType, resultContext); instance.TemplateId = ddc091f206ffc4087806d0dee863dd607 is MARC.Everest.DataTypes.LIST<MARC.Everest.DataTypes.II> ? ddc091f206ffc4087806d0dee863dd607 as MARC.Everest.DataTypes.LIST<MARC.Everest.DataTypes.II> : (MARC.Everest.DataTypes.LIST<MARC.Everest.DataTypes.II>)MARC.Everest.Connectors.Util.FromWireFormat(ddc091f206ffc4087806d0dee863dd607, typeof(MARC.Everest.DataTypes.LIST<MARC.Everest.DataTypes.II>)); } else { resultContext.AddResultDetail(new MARC.Everest.Connectors.NotImplementedElementResultDetail(MARC.Everest.Connectors.ResultDetailType.Warning, s.LocalName, s.NamespaceURI, s.ToString(), null)); } } } catch (System.Exception e) { resultContext.AddResultDetail(new MARC.Everest.Connectors.ResultDetail(MARC.Everest.Connectors.ResultDetailType.Error, e.Message, s.ToString(), e)); } finally { if(oldName.Equals(s.LocalName)) s.Read(); } } return instance; }
/// <summary> /// Create the interaction type /// </summary> public MARC.Everest.Interfaces.IInteraction Create(MARC.Everest.Interfaces.IInteraction request, RegistryQueryResult results, List <IResultDetail> dtls) { // GEt the config services ISystemConfigurationService configService = Context.GetService(typeof(ISystemConfigurationService)) as ISystemConfigurationService; var retHl7v3 = new List <MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.Subject1 <MARC.Everest.RMIM.UV.NE2008.PRPA_MT201310UV02.Patient, object> >(); //List<MARC.Everest.RMIM.CA.R020403.MFMI_MT700746CA.Subject2<MARC.Everest.RMIM.CA.R020403.PRPA_MT101104CA.IdentifiedEntity>> retHl7v3 = new List<MARC.Everest.RMIM.CA.R020403.MFMI_MT700746CA.Subject2<MARC.Everest.RMIM.CA.R020403.PRPA_MT101104CA.IdentifiedEntity>>(results.Results.Count()); UvDeComponentUtil dCompUtil = new UvDeComponentUtil(); dCompUtil.Context = this.Context; PRPA_IN201305UV02 rqst = request as PRPA_IN201305UV02; // Convert results to HL7v3 foreach (RegistrationEvent res in results.Results) { var retRec = new MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.Subject1 <MARC.Everest.RMIM.UV.NE2008.PRPA_MT201310UV02.Patient, object>( true, dCompUtil.CreateRegistrationEvent(res, dtls) ); if (retRec.RegistrationEvent == null) { retRec = new MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.Subject1 <MARC.Everest.RMIM.UV.NE2008.PRPA_MT201310UV02.Patient, object>( false, new MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.RegistrationEvent <MARC.Everest.RMIM.UV.NE2008.PRPA_MT201310UV02.Patient, object>() { NullFlavor = NullFlavor.NoInformation } ); } retHl7v3.Add(retRec); } // HACK: Sort by confidence score (if present) //retHl7v3.Sort((a, b) => // a != null && b != null && // a.RegistrationEvent != null && b.RegistrationEvent != null && // a.RegistrationEvent.Subject1 != null && b.RegistrationEvent.Subject1 != null && // a.RegistrationEvent.Subject1.registeredRole != null && b.RegistrationEvent.Subject1.registeredRole != null && // (a.RegistrationEvent.Subject1.registeredRole.SubjectOf1.Count > 0) && (b.RegistrationEvent.Subject1.registeredRole.SubjectOf1.Count > 0) ? // (b.RegistrationEvent.Subject1.registeredRole.SubjectOf1[0].QueryMatchObservation.Value as INT).CompareTo((a.RegistrationEvent.Subject1.registeredRole.SubjectOf1[0].QueryMatchObservation.Value as INT)) : 0); // Create the response PRPA_IN201306UV02 response = new PRPA_IN201306UV02 ( Guid.NewGuid(), DateTime.Now, PRPA_IN201306UV02.GetInteractionId(), ProcessingID.Production, "T", AcknowledgementCondition.Never, MessageUtil.CreateReceiver(rqst.Sender), MessageUtil.CreateSenderUv(new Uri(rqst.Receiver[0].Telecom.Value), configService), null ) { Acknowledgement = new List <MARC.Everest.RMIM.UV.NE2008.MCCI_MT100300UV01.Acknowledgement>() { new MARC.Everest.RMIM.UV.NE2008.MCCI_MT100300UV01.Acknowledgement( dtls.Count(a => a.Type == ResultDetailType.Error) == 0 ? AcknowledgementType.ApplicationAcknowledgementAccept : AcknowledgementType.ApplicationAcknowledgementError, new MARC.Everest.RMIM.UV.NE2008.MCCI_MT100200UV01.TargetMessage(request.Id) ) } }; response.controlActProcess = new MARC.Everest.RMIM.UV.NE2008.MFMI_MT700711UV01.ControlActProcess <MARC.Everest.RMIM.UV.NE2008.PRPA_MT201306UV02.QueryByParameter, MARC.Everest.RMIM.UV.NE2008.PRPA_MT201310UV02.Patient, object>("EVN") { Id = SET <II> .CreateSET(new II(configService.Custodianship.Id.Domain, Guid.NewGuid().ToString())), Code = new CD <string>(PRPA_IN201306UV02.GetTriggerEvent().Code, PRPA_IN201306UV02.GetTriggerEvent().CodeSystem), QueryAck = new MARC.Everest.RMIM.UV.NE2008.QUQI_MT120001UV01.QueryAck( rqst.controlActProcess.queryByParameter.QueryId, "complete", (AcknowledgementType)response.Acknowledgement[0].TypeCode == AcknowledgementType.ApplicationAcknowledgementError ? QueryResponse.ApplicationError : results.TotalResults == 0 ? QueryResponse.NoDataFound : QueryResponse.DataFound, results.TotalResults, results.Results.Count, results.TotalResults - results.Results.Count - results.StartRecordNumber ), queryByParameter = rqst.controlActProcess.queryByParameter }; response.controlActProcess.LanguageCode = MessageUtil.GetDefaultLanguageCode(this.Context); if (retHl7v3.Count > 0) { response.controlActProcess.Subject.AddRange(retHl7v3); } return(response); }