public void CreateSubmissionFromJSON() { DeathRecordSubmission submission = BaseMessage.Parse <DeathRecordSubmission>(FixtureStream("fixtures/json/DeathRecordSubmission.json")); Assert.Equal("2018-02-20T16:48:06-05:00", submission.DeathRecord.DateOfDeathPronouncement); Assert.Equal("http://nchs.cdc.gov/vrdr_submission", submission.MessageType); Assert.Equal("2018MA000001", submission.NCHSIdentifier); Assert.Equal((uint)1, submission.CertificateNumber); Assert.Equal((uint)2018, submission.DeathYear); Assert.Equal("42", submission.StateAuxiliaryIdentifier); submission = BaseMessage.Parse <DeathRecordSubmission>(FixtureStream("fixtures/json/DeathRecordSubmissionNoIdentifiers.json")); Assert.Equal("2018-02-20T16:48:06-05:00", submission.DeathRecord.DateOfDeathPronouncement); Assert.Equal("http://nchs.cdc.gov/vrdr_submission", submission.MessageType); Assert.Null(submission.CertificateNumber); Assert.Null(submission.StateAuxiliaryIdentifier); Assert.Null(submission.NCHSIdentifier); MessageParseException ex = Assert.Throws <MessageParseException>(() => BaseMessage.Parse(FixtureStream("fixtures/json/EmptySubmission.json"))); Assert.Equal("Error processing DeathRecord entry in the message: Failed to find a Bundle Entry containing a Resource of type Bundle", ex.Message); ExtractionErrorMessage errMsg = ex.CreateExtractionErrorMessage(); Assert.Equal("http://nchs.cdc.gov/vrdr_submission", errMsg.MessageSource); Assert.Equal("nightingale", errMsg.MessageDestination); Assert.Equal("a9d66d2e-2480-4e8d-bab3-4e4c761da1b7", errMsg.FailedMessageId); Assert.Equal("2018MA000001", errMsg.NCHSIdentifier); Assert.Equal((uint)1, errMsg.CertificateNumber); Assert.Equal((uint)2018, errMsg.DeathYear); Assert.Equal("42", errMsg.StateAuxiliaryIdentifier); ex = Assert.Throws <MessageParseException>(() => BaseMessage.Parse <AckMessage>(FixtureStream("fixtures/json/DeathRecordSubmission.json"))); Assert.Equal("The supplied message was of type VRDR.DeathRecordSubmission, expected VRDR.AckMessage or a subclass", ex.Message); }
public void SelectMessageType() { var msg = BaseMessage.Parse(FixtureStream("fixtures/json/AckMessage.json"), false); Assert.IsType <AckMessage>(msg); msg = BaseMessage.Parse(FixtureStream("fixtures/json/VoidMessage.json"), false); Assert.IsType <VoidMessage>(msg); msg = BaseMessage.Parse(FixtureStream("fixtures/json/CauseOfDeathCodingMessage.json"), false); Assert.IsType <CodingResponseMessage>(msg); msg = BaseMessage.Parse(FixtureStream("fixtures/json/CodingUpdateMessage.json"), false); Assert.IsType <CodingUpdateMessage>(msg); msg = BaseMessage.Parse(FixtureStream("fixtures/json/DeathRecordSubmission.json"), false); Assert.IsType <DeathRecordSubmission>(msg); msg = BaseMessage.Parse(FixtureStream("fixtures/json/DeathRecordUpdate.json"), false); Assert.IsType <DeathRecordUpdate>(msg); MessageParseException ex = Assert.Throws <MessageParseException>(() => BaseMessage.Parse(FixtureStream("fixtures/json/InvalidMessageType.json"))); Assert.Equal("Unsupported message type: http://nchs.cdc.gov/vrdr_invalid_type", ex.Message); var responseMsg = ex.CreateExtractionErrorMessage(); Assert.Equal("http://nchs.cdc.gov/vrdr_submission", responseMsg.MessageDestination); Assert.Equal("nightingale", responseMsg.MessageSource); Assert.Equal("761dca08-259b-4dcd-aeb7-bb3c73fa30f2", responseMsg.FailedMessageId); Assert.Null(responseMsg.CertificateNumber); Assert.Null(responseMsg.NCHSIdentifier); Assert.Null(responseMsg.StateAuxiliaryIdentifier); ex = Assert.Throws <MessageParseException>(() => BaseMessage.Parse(FixtureStream("fixtures/json/MissingMessageType.json"))); Assert.Equal("Message type was missing from MessageHeader", ex.Message); responseMsg = ex.CreateExtractionErrorMessage(); Assert.Equal("http://nchs.cdc.gov/vrdr_submission", responseMsg.MessageDestination); Assert.Equal("nightingale", responseMsg.MessageSource); Assert.Equal("761dca08-259b-4dcd-aeb7-bb3c73fa30f2", responseMsg.FailedMessageId); Assert.Null(responseMsg.CertificateNumber); Assert.Null(responseMsg.NCHSIdentifier); Assert.Null(responseMsg.StateAuxiliaryIdentifier); ex = Assert.Throws <MessageParseException>(() => BaseMessage.Parse(FixtureStream("fixtures/json/EmptyMessage.json"))); Assert.Equal("Failed to find a Bundle Entry containing a Resource of type MessageHeader", ex.Message); responseMsg = ex.CreateExtractionErrorMessage(); Assert.Null(responseMsg.MessageDestination); Assert.Null(responseMsg.MessageSource); Assert.Null(responseMsg.FailedMessageId); Assert.Null(responseMsg.CertificateNumber); Assert.Null(responseMsg.NCHSIdentifier); Assert.Null(responseMsg.StateAuxiliaryIdentifier); ex = Assert.Throws <MessageParseException>(() => BaseMessage.Parse(FixtureStream("fixtures/json/Empty.json"))); Assert.Equal("The FHIR Bundle must be of type message, not null", ex.Message); responseMsg = ex.CreateExtractionErrorMessage(); Assert.Null(responseMsg.MessageDestination); Assert.Null(responseMsg.MessageSource); Assert.Null(responseMsg.FailedMessageId); Assert.Null(responseMsg.CertificateNumber); Assert.Null(responseMsg.NCHSIdentifier); Assert.Null(responseMsg.StateAuxiliaryIdentifier); }
private void OnMessageParseExceptionHandler(MessageParseException ex) { OnCorruptDataExceptionHandler(ex); }