/// <summary> /// Create filter data /// </summary> public RegistryQueryRequest CreateFilterData(MARC.Everest.Interfaces.IInteraction request, List <MARC.Everest.Connectors.IResultDetail> dtls) { ILocalizationService locale = Context.GetService(typeof(ILocalizationService)) as ILocalizationService; ISystemConfigurationService config = Context.GetService(typeof(ISystemConfigurationService)) as ISystemConfigurationService; // Componentize the message into the data model UvComponentUtil compUtil = new UvComponentUtil(); compUtil.Context = this.Context; PRPA_IN201309UV02 rqst = request as PRPA_IN201309UV02; List <DomainIdentifier> ids = new List <DomainIdentifier>(); var queryData = compUtil.CreateQueryMatch(rqst.controlActProcess, dtls, ref ids); if (ids == null || queryData == null) { throw new MessageValidationException(locale.GetString("MSGE00A"), request); } var filter = new RegistryQueryRequest() { QueryId = String.Format("{1}^^^&{0}&ISO", rqst.controlActProcess.queryByParameter.QueryId.Root, rqst.controlActProcess.queryByParameter.QueryId.Extension), Limit = 100, Originator = String.Format("{1}^^^&{0}&ISO", rqst.Sender.Device.Id.First.Root, rqst.Sender.Device.Id.First.Extension), QueryRequest = queryData, TargetDomain = ids, IsSummary = true, ResponseMessageType = this.CreateType.AssemblyQualifiedName }; // Ensure that the target domains are understood by this service if (filter.TargetDomain != null) { foreach (var id in filter.TargetDomain) { if (String.IsNullOrEmpty(id.Domain) || config.OidRegistrar.FindData(id.Domain) == null || !config.OidRegistrar.FindData(id.Domain).Attributes.Exists(p => p.Key.Equals("AssigningAuthorityName"))) { dtls.Add(new UnrecognizedTargetDomainResultDetail(locale, String.Format("//urn:hl7-org:v3#controlActProcess/urn:hl7-org:v3#queryByParameter/urn:hl7-org:v3#parameterList/urn:hl7-org:v3#patientIdentifier/urn:hl7-org:v3#value[@root='{0}']", id.Domain))); } } } return(filter); }
public PRPA_IN201310UV02 PRPA_IN201309UV02(string CURRENT_USER, Int32 CURRENT_REGISTRY_ID, Int32 CURRENT_PATIENT_ID) { PRPA_IN201310UV02 objReturn = null; try { PRPA_MT201307UV02ParameterList patientParameters = GetIdParameters(CURRENT_USER, CURRENT_REGISTRY_ID, CURRENT_PATIENT_ID); if (patientParameters == null) { return(null); } QUQI_MT021001UV01DataEnterer[] currentUser = GetDataEnterer(CURRENT_USER, CURRENT_REGISTRY_ID); if (rsMain == null) { InitProxy(); } string createDateTime = DateTime.Now.ToString("yyyyMMddhhmmss"); PRPA_IN201309UV02 PRPA_IN201309UV021 = new PRPA_IN201309UV02() { id = new II() { root = vaRoot, extension = string.Format("{0}-{1}", "MCID", createDateTime) }, creationTime = new TS() { value = createDateTime }, versionCode = new CS() { code = verCode }, interactionId = new II() { extension = "PRPA_IN201309UV02", root = iiRoot }, processingCode = new CS() { code = prcCode }, processingModeCode = new CS() { code = "T" }, acceptAckCode = new CS() { code = "AL" }, receiver = new MCCI_MT000100UV01Receiver[] { new MCCI_MT000100UV01Receiver() { typeCode = CommunicationFunctionType.RCV, device = new MCCI_MT000100UV01Device() { classCode = EntityClassDevice.DEV, determinerCode = "INSTANCE", id = new II[] { new II() { root = vaRoot } } } } }, sender = new MCCI_MT000100UV01Sender() { typeCode = CommunicationFunctionType.SND, device = new MCCI_MT000100UV01Device() { classCode = EntityClassDevice.DEV, determinerCode = "INSTANCE", id = new II[] { new II() { root = vaRoot, extension = "200CRSE" } } } }, controlActProcess = new PRPA_IN201309UV02QUQI_MT021001UV01ControlActProcess() { dataEnterer = currentUser, classCode = ActClassControlAct.CACT, moodCode = x_ActMoodIntentEvent.EVN, code = new CD() { code = "PRPA_TE201309UV02", codeSystem = iiRoot }, queryByParameter = new PRPA_MT201307UV02QueryByParameter() { queryId = new II() { root = vaRoot, extension = createDateTime }, statusCode = new CS() { code = "new" }, responsePriorityCode = new CS() { code = "I" }, parameterList = patientParameters } } }; ////Used for debugging //SoapEnvelope envelope = new SoapEnvelope(); //envelope.body = new Body(); //envelope.body.PRPA_IN201309UV02 = PRPA_IN201309UV021; //XmlSerializer ser = new XmlSerializer(typeof(SoapEnvelope)); //TextWriter writer = new StreamWriter("C:\\temp\\PRPA_IN201309UV02.xml"); //ser.Serialize(writer, envelope); //writer.Close(); LogDetails logDetails = new LogDetails(String.Format("{0}.{1}", System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName, System.Reflection.MethodBase.GetCurrentMethod().Name), CURRENT_USER, CURRENT_REGISTRY_ID); objReturn = rsMain.PRPA_IN201309UV02(PRPA_IN201309UV021); LogManager.LogTiming(logDetails); ////Used for debugging //if (objReturn != null) //{ // envelope = new SoapEnvelope(); // envelope.body = new Body(); // envelope.body.PRPA_IN201310UV02 = objReturn; // XmlSerializer ser = new XmlSerializer(typeof(SoapEnvelope)); // TextWriter writer = new StreamWriter("C:\\temp\\PRPA_IN201310UV02.xml"); // ser.Serialize(writer, envelope); // writer.Close(); //} } catch (Exception ex) { LogManager.LogError(ex.Message, String.Format("{0}.{1}", System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName, System.Reflection.MethodBase.GetCurrentMethod().Name), CURRENT_USER, CURRENT_REGISTRY_ID); throw ex; } return(objReturn); }
/// <summary> /// Generate PIX Message /// </summary> private static void GeneratePIX() { Console.WriteLine("\r\n\r\nGenerating PIXv3....\r\n\r\n"); // Create the instance message PRPA_IN201309UV02 message = new PRPA_IN201309UV02( Guid.NewGuid(), // The sample message uses a Guid for message Id, this is a method you can use to do this DateTime.Now, // The time the message was created, PRPA_IN201309UV02.GetInteractionId(), // Specify the interaction we're using ProcessingID.Training, // Operating in training mode "T", // Transactional AcknowledgementCondition.Always, // Always acknowledge new MARC.Everest.RMIM.UV.NE2008.MCCI_MT100200UV01.Receiver( new MARC.Everest.RMIM.UV.NE2008.MCCI_MT100200UV01.Device( new SET<II>(new II("1.2.840.114350.1.13.99999.4567")) // Identifier of the receiver device ) { // We can use initializer to construct extra properties Telecom = new BAG<TEL>( new TEL[] { "http://example.org/PIXQuery" } // The telecommunications address of the receiver ) } ), new MARC.Everest.RMIM.UV.NE2008.MCCI_MT100200UV01.Sender( // The device that is sending the instance new MARC.Everest.RMIM.UV.NE2008.MCCI_MT100200UV01.Device( new SET<II>(new II("1.2.840.114350.1.13.99997.2.7788")) ) ), new MARC.Everest.RMIM.UV.NE2008.QUQI_MT021001UV01.ControlActProcess<MARC.Everest.RMIM.UV.NE2008.PRPA_MT201307UV02.QueryByParameter>() ); // shortcut for control act process var cactProcess = message.controlActProcess; // Tell the receiver what trigger event we're executing cactProcess.Code = new CD<string>(PRPA_IN201309UV02.GetTriggerEvent().Code); // Set the author or performer var author = new MARC.Everest.RMIM.UV.NE2008.MFMI_MT700701UV01.AuthorOrPerformer( "AUT" ); // Set the participant author.SetParticipationChoice(new MARC.Everest.RMIM.UV.NE2008.COCT_MT090100UV01.AssignedPerson() // Type of participant is an assigned entity { Id = new SET<II>( // Set the identifier of the user new II("1.2.840.114350.1.13.99997.2.7766", "USR5568") ) } ); // Set the query parameter cactProcess.queryByParameter = new MARC.Everest.RMIM.UV.NE2008.PRPA_MT201307UV02.QueryByParameter( new II("1.2.840.114350.1.13.99999.4567.34", "33452"), // The unique id for the query "new", // The status code of the query new MARC.Everest.RMIM.UV.NE2008.PRPA_MT201307UV02.ParameterList() ) { ResponsePriorityCode = "I" }; // Query by patient identifier cactProcess.queryByParameter.ParameterList.PatientIdentifier.Add( new MARC.Everest.RMIM.UV.NE2008.PRPA_MT201307UV02.PatientIdentifier( new SET<II>( new II("1.2.840.114350.1.13.99997.2.3412", "38273N237") ), "Patient.Id" ) ); FormatInstance(message); }
/// <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); }
/// <summary> /// Generate PIX Message /// </summary> private static void GeneratePIX() { Console.WriteLine("\r\n\r\nGenerating PIXv3....\r\n\r\n"); // Create the instance message PRPA_IN201309UV02 message = new PRPA_IN201309UV02( Guid.NewGuid(), // The sample message uses a Guid for message Id, this is a method you can use to do this DateTime.Now, // The time the message was created, PRPA_IN201309UV02.GetInteractionId(), // Specify the interaction we're using ProcessingID.Training, // Operating in training mode "T", // Transactional AcknowledgementCondition.Always, // Always acknowledge new MARC.Everest.RMIM.UV.NE2008.MCCI_MT100200UV01.Receiver( new MARC.Everest.RMIM.UV.NE2008.MCCI_MT100200UV01.Device( new SET <II>(new II("1.2.840.114350.1.13.99999.4567")) // Identifier of the receiver device ) { // We can use initializer to construct extra properties Telecom = new BAG <TEL>( new TEL[] { "http://example.org/PIXQuery" } // The telecommunications address of the receiver ) } ), new MARC.Everest.RMIM.UV.NE2008.MCCI_MT100200UV01.Sender( // The device that is sending the instance new MARC.Everest.RMIM.UV.NE2008.MCCI_MT100200UV01.Device( new SET <II>(new II("1.2.840.114350.1.13.99997.2.7788")) ) ), new MARC.Everest.RMIM.UV.NE2008.QUQI_MT021001UV01.ControlActProcess <MARC.Everest.RMIM.UV.NE2008.PRPA_MT201307UV02.QueryByParameter>() ); // shortcut for control act process var cactProcess = message.controlActProcess; // Tell the receiver what trigger event we're executing cactProcess.Code = new CD <string>(PRPA_IN201309UV02.GetTriggerEvent().Code); // Set the author or performer var author = new MARC.Everest.RMIM.UV.NE2008.MFMI_MT700701UV01.AuthorOrPerformer( "AUT" ); // Set the participant author.SetParticipationChoice(new MARC.Everest.RMIM.UV.NE2008.COCT_MT090100UV01.AssignedPerson() // Type of participant is an assigned entity { Id = new SET <II>( // Set the identifier of the user new II("1.2.840.114350.1.13.99997.2.7766", "USR5568") ) } ); // Set the query parameter cactProcess.queryByParameter = new MARC.Everest.RMIM.UV.NE2008.PRPA_MT201307UV02.QueryByParameter( new II("1.2.840.114350.1.13.99999.4567.34", "33452"), // The unique id for the query "new", // The status code of the query new MARC.Everest.RMIM.UV.NE2008.PRPA_MT201307UV02.ParameterList() ) { ResponsePriorityCode = "I" }; // Query by patient identifier cactProcess.queryByParameter.ParameterList.PatientIdentifier.Add( new MARC.Everest.RMIM.UV.NE2008.PRPA_MT201307UV02.PatientIdentifier( new SET <II>( new II("1.2.840.114350.1.13.99997.2.3412", "38273N237") ), "Patient.Id" ) ); FormatInstance(message); }