Skip to content

Commit

Permalink
Merge pull request #98 from nightingaleproject/update-lib-version
Browse files Browse the repository at this point in the history
feat: update vrdr and bfdr libraries and add max payload check
  • Loading branch information
RobertScalfani authored Nov 7, 2024
2 parents 46ceeba + 61073b7 commit e8faac1
Show file tree
Hide file tree
Showing 11 changed files with 979 additions and 975 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
## Changelog

### v1.4.0 - 2024-11-07
* Update BFDR to v1.0.0-preview.9 and VRDR to v4.4.1
* Add validation for maximum payload size
* Add required web config headers for security
* Clean up logs when parsing bfdr and vrdr messages

### v1.3.0 - 2024-08-29
* Add support for Natality Messaging
* Add configuration to enable or disable Natality Messaging
Expand Down
14 changes: 7 additions & 7 deletions messaging.tests/Integration/BundlesControllerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ public async System.Threading.Tasks.Task NewBirthSubmissionMessagePostCreatesNew
Assert.Equal(HttpStatusCode.NoContent, createDeathSubmissionMessage.StatusCode);

// Create a new Birth Record
BirthRecordSubmissionMessage recordSubmission = BirthRecordBaseMessage.Parse<BirthRecordSubmissionMessage>(FixtureStream("fixtures/json/BirthRecordSubmissionMessage.json"));
BirthRecordSubmissionMessage recordSubmission = BFDRBaseMessage.Parse<BirthRecordSubmissionMessage>(FixtureStream("fixtures/json/BirthRecordSubmissionMessage.json"));

// Set missing required fields
recordSubmission.MessageSource = "http://example.fhir.org";
Expand Down Expand Up @@ -150,7 +150,7 @@ public async System.Threading.Tasks.Task NewBirthSubmissionMessagePostCreatesNew

// Extract the message from the bundle and ensure it is an ACK for the appropritae message
var lastMessageInBundle = updatedBundle.Entry.Last();
BirthRecordAcknowledgementMessage parsedMessage = BirthRecordBaseMessage.Parse<BirthRecordAcknowledgementMessage>((Hl7.Fhir.Model.Bundle)lastMessageInBundle.Resource);
BirthRecordAcknowledgementMessage parsedMessage = BFDRBaseMessage.Parse<BirthRecordAcknowledgementMessage>((Hl7.Fhir.Model.Bundle)lastMessageInBundle.Resource);
Assert.Equal(recordSubmission.MessageId, parsedMessage.AckedMessageId);
}

Expand All @@ -161,7 +161,7 @@ public async System.Threading.Tasks.Task NewBirthSubmissionMessagePostToBFDRCrea
DatabaseHelper.ResetDatabase(_context);

// Create a new Birth Record
BirthRecordSubmissionMessage recordSubmission = BirthRecordBaseMessage.Parse<BirthRecordSubmissionMessage>(FixtureStream("fixtures/json/BirthRecordSubmissionMessage.json"));
BirthRecordSubmissionMessage recordSubmission = BFDRBaseMessage.Parse<BirthRecordSubmissionMessage>(FixtureStream("fixtures/json/BirthRecordSubmissionMessage.json"));

// Set missing required fields
recordSubmission.MessageSource = "http://example.fhir.org";
Expand Down Expand Up @@ -200,7 +200,7 @@ public async System.Threading.Tasks.Task NewBirthSubmissionMessagePostToBFDRCrea

// Extract the message from the bundle and ensure it is an ACK for the appropritae message
var lastMessageInBundle = updatedBundle.Entry.Last();
BirthRecordAcknowledgementMessage parsedMessage = BirthRecordBaseMessage.Parse<BirthRecordAcknowledgementMessage>((Hl7.Fhir.Model.Bundle)lastMessageInBundle.Resource);
BirthRecordAcknowledgementMessage parsedMessage = BFDRBaseMessage.Parse<BirthRecordAcknowledgementMessage>((Hl7.Fhir.Model.Bundle)lastMessageInBundle.Resource);
Assert.Equal(recordSubmission.MessageId, parsedMessage.AckedMessageId);
}

Expand Down Expand Up @@ -449,7 +449,7 @@ public async System.Threading.Tasks.Task UpdateBirthMessagesAreSuccessfullyAckno
// Get the current time
DateTime currentTime = DateTime.UtcNow;
// Create a new Birth Record
BirthRecordSubmissionMessage recordSubmission = BirthRecordBaseMessage.Parse<BirthRecordSubmissionMessage>(FixtureStream("fixtures/json/BirthRecordSubmissionMessage.json"));
BirthRecordSubmissionMessage recordSubmission = BFDRBaseMessage.Parse<BirthRecordSubmissionMessage>(FixtureStream("fixtures/json/BirthRecordSubmissionMessage.json"));

// Set missing required fields
recordSubmission.MessageSource = "http://example.fhir.org";
Expand Down Expand Up @@ -951,7 +951,7 @@ public async void PostNCHSIsInDestinationEndpointList()
Assert.Equal(HttpStatusCode.NoContent, createSubmissionMessage.StatusCode);

// Create a new Birth Record WITH nchs in the endpoint list
BirthRecordSubmissionMessage recordSubmission2 = BirthRecordBaseMessage.Parse<BirthRecordSubmissionMessage>(FixtureStream("fixtures/json/BirthRecordSubmissionMessage.json"));
BirthRecordSubmissionMessage recordSubmission2 = BFDRBaseMessage.Parse<BirthRecordSubmissionMessage>(FixtureStream("fixtures/json/BirthRecordSubmissionMessage.json"));

recordSubmission2.MessageSource = "http://example.fhir.org";
recordSubmission2.CertNo = 1;
Expand Down Expand Up @@ -1084,7 +1084,7 @@ public async void PostWithNonMatchingJurisdictionsError()
Assert.Equal(HttpStatusCode.BadRequest, createSubmissionMessage.StatusCode);

// Create a new Birth Record
BirthRecordSubmissionMessage recordSubmission2 = BirthRecordBaseMessage.Parse<BirthRecordSubmissionMessage>(FixtureStream("fixtures/json/BirthRecordSubmissionMessage.json"));
BirthRecordSubmissionMessage recordSubmission2 = BFDRBaseMessage.Parse<BirthRecordSubmissionMessage>(FixtureStream("fixtures/json/BirthRecordSubmissionMessage.json"));

// Submit that Birth Record
HttpResponseMessage createSubmissionMessage2 = await JsonResponseHelpers.PostJsonAsync(_client, $"/{jurisdictionParameter}/Bundle", recordSubmission2.ToJson());
Expand Down
2 changes: 1 addition & 1 deletion messaging.tests/fixtures/json/BatchSingleBirthMessage.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"resource": {
"resourceType": "MessageHeader",
"id": "c36cfa0d-f3d4-4b1a-9df4-410f640b50c3",
"eventUri": "http://nchs.cdc.gov/bfdr_submission",
"eventUri": "http://nchs.cdc.gov/birth_submission",
"destination": [
{
"endpoint": "http://nchs.cdc.gov/bfdr_submission"
Expand Down
1,892 changes: 945 additions & 947 deletions messaging.tests/fixtures/json/BirthRecordSubmissionMessage.json

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"resource": {
"resourceType": "MessageHeader",
"id": "c36cfa0d-f3d4-4b1a-9df4-410f640b50c3",
"eventUri": "http://nchs.cdc.gov/bfdr_submission",
"eventUri": "http://nchs.cdc.gov/birth_submission",
"destination": [
{
"endpoint": "http://nchs.cdc.gov/bfdr_submission"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"resource": {
"resourceType": "MessageHeader",
"id": "6daf35b5-689e-4d9f-9d77-75447ab1ee37",
"eventUri": "http://nchs.cdc.gov/bfdr_submission_update",
"eventUri": "http://nchs.cdc.gov/birth_submission_update",
"destination": [
{
"endpoint": "http://nchs.cdc.gov/bfdr_submission"
Expand Down
18 changes: 9 additions & 9 deletions messaging/Controllers/BundlesController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -510,7 +510,7 @@ protected IncomingMessageItem ParseIncomingMessageItem(string jurisdictionId, st
{
try
{
CommonMessage message = BirthRecordBaseMessage.Parse(bundle);
CommonMessage message = BFDRBaseMessage.Parse(bundle);
return ValidateAndCreateIncomingMessageItem(message, jurisdictionId);
}
catch (BFDR.MessageParseException) { }
Expand Down Expand Up @@ -596,7 +596,7 @@ protected IncomingMessageItem ValidateAndCreateIncomingMessageItem(CommonMessage
item.JurisdictionId = jurisdictionId;
if(bfdrMessageType(message.GetType().Name))
{
item.EventYear = ((BirthRecordBaseMessage)message).BirthYear;
item.EventYear = ((BFDRBaseMessage)message).EventYear;
}
// TODO add this check once we move to the monorepo version of VRDR STU 3.0
// else if(vrdrMessageType(message.GetType().Name))
Expand Down Expand Up @@ -714,13 +714,13 @@ private string getEventType(CommonMessage message)
case "http://nchs.cdc.gov/vrdr_submission_update":
case "http://nchs.cdc.gov/vrdr_submission_void":
return "MOR";
case "http://nchs.cdc.gov/bfdr_submission":
case "http://nchs.cdc.gov/bfdr_acknowledgement":
case "http://nchs.cdc.gov/bfdr_submission_update":
case "http://nchs.cdc.gov/bfdr_demographics_coding":
case "http://nchs.cdc.gov/bfdr_extraction_error":
case "http://nchs.cdc.gov/bfdr_status":
case "http://nchs.cdc.gov/bfdr_submission_void":
case "http://nchs.cdc.gov/birth_submission":
case "http://nchs.cdc.gov/birth_acknowledgement":
case "http://nchs.cdc.gov/birth_submission_update":
case "http://nchs.cdc.gov/birth_demographics_coding":
case "http://nchs.cdc.gov/birth_extraction_error":
case "http://nchs.cdc.gov/birth_status":
case "http://nchs.cdc.gov/birth_submission_void":
return "NAT";
default:
return "UNK";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"resourceType": "CapabilityStatement",
"id": "NVSS-API-CS",
"url": "http://cdc.gov/nchs/nvss/fhir/nvss-api/CapabilityStatement/NVSS-API-CS",
"version": "v1.3.0",
"version": "v1.4.0",
"name": "NVSS_API",
"title": "NVSS API Server Capability Statement",
"status": "draft",
Expand Down
2 changes: 1 addition & 1 deletion messaging/NVSSAPI/input/fsh/NVSSAPI_CapStmt.fsh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Instance: NVSS-API-CS
InstanceOf: CapabilityStatement
Usage: #definition
* version = "v1.3.0"
* version = "v1.4.0"
* name = "NVSS_API"
* title = "NVSS API Server Capability Statement"
* status = #draft
Expand Down
8 changes: 4 additions & 4 deletions messaging/Services/ConvertToIJEBackgroundWork.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ public async Task DoWork(Message message, CancellationToken cancellationToken)
}
else if (item.EventType == "NAT")
{
BirthRecordBaseMessage parsedMessage = BirthRecordBaseMessage.Parse(item.Message.ToString(), true);
BFDRBaseMessage parsedMessage = BFDRBaseMessage.Parse(item.Message.ToString(), true);
OutgoingMessageItem outgoingMessageItem = new OutgoingMessageItem();
outgoingMessageItem.JurisdictionId = item.JurisdictionId;
try {
Expand All @@ -90,7 +90,7 @@ public async Task DoWork(Message message, CancellationToken cancellationToken)
outgoingMessageItem.MessageId = errorMessage.MessageId;
outgoingMessageItem.MessageType = errorMessage.GetType().Name;
outgoingMessageItem.CertificateNumber = errorMessage.CertNo.ToString().PadLeft(6, '0');
outgoingMessageItem.EventYear = errorMessage.BirthYear;
outgoingMessageItem.EventYear = errorMessage.EventYear;
outgoingMessageItem.EventType = "NAT";
this._context.OutgoingMessageItems.Add(outgoingMessageItem);
}
Expand Down Expand Up @@ -213,15 +213,15 @@ private void CreateDeathAckMessage(BaseMessage message, IncomingMessageItem data
this._context.SaveChanges();
}

private void CreateBirthAckMessage(BirthRecordBaseMessage message, IncomingMessageItem databaseMessage) {
private void CreateBirthAckMessage(BFDRBaseMessage message, IncomingMessageItem databaseMessage) {
OutgoingMessageItem outgoingMessageItem = new OutgoingMessageItem();
BirthRecordAcknowledgementMessage ackMessage = new BirthRecordAcknowledgementMessage(message);
outgoingMessageItem.JurisdictionId = databaseMessage.JurisdictionId;
outgoingMessageItem.Message = ackMessage.ToJSON();
outgoingMessageItem.MessageId = ackMessage.MessageId;
outgoingMessageItem.MessageType = ackMessage.GetType().Name;
outgoingMessageItem.CertificateNumber = ackMessage.CertNo.ToString().PadLeft(6, '0');
outgoingMessageItem.EventYear = ackMessage.BirthYear;
outgoingMessageItem.EventYear = ackMessage.EventYear;
outgoingMessageItem.EventType = "NAT";
this._context.OutgoingMessageItems.Add(outgoingMessageItem);
this._context.SaveChanges();
Expand Down
6 changes: 3 additions & 3 deletions messaging/messaging.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
<PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.2.22" />
<PackageReference Include="MiniProfiler.EntityFrameworkCore" Version="4.2.22" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
<PackageReference Include="VRDR.Messaging" Version="4.3.0" />
<PackageReference Include="BFDR.Messaging" Version="1.0.0-preview.7" />
<PackageReference Include="VitalRecord.Messaging" Version="1.0.0-preview.3" />
<PackageReference Include="VRDR.Messaging" Version="4.4.1" />
<PackageReference Include="BFDR.Messaging" Version="1.0.0-preview.9" />
<PackageReference Include="VitalRecord.Messaging" Version="1.0.0-preview.4" />
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.3.1-dev-00337" />
<PackageReference Include="Serilog.AspNetCore" Version="6.0.0-dev-00265" />
Expand Down

0 comments on commit e8faac1

Please sign in to comment.