From 231730817592f7d6be6765d22e45a092cffee787 Mon Sep 17 00:00:00 2001 From: MontaltoNick Date: Mon, 21 Oct 2024 10:23:39 -0500 Subject: [PATCH 1/6] checkin --- DotNet/Census/Application/Models/CensusConfigModel.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/DotNet/Census/Application/Models/CensusConfigModel.cs b/DotNet/Census/Application/Models/CensusConfigModel.cs index adcb0d704..4960e2b93 100644 --- a/DotNet/Census/Application/Models/CensusConfigModel.cs +++ b/DotNet/Census/Application/Models/CensusConfigModel.cs @@ -1,8 +1,13 @@ -namespace LantanaGroup.Link.Census.Application.Models +using System.Runtime.Serialization; + +namespace LantanaGroup.Link.Census.Application.Models { + [DataContract] public class CensusConfigModel { + [DataMember] public string FacilityId { get; set; } + [DataMember] public string ScheduledTrigger { get; set; } } } From a1ffcd159eff12a3a58618bb548f23ba4c335d8e Mon Sep 17 00:00:00 2001 From: MontaltoNick Date: Mon, 21 Oct 2024 10:52:26 -0500 Subject: [PATCH 2/6] DataAcquisition Mass Assignment --- .../Entities/FhirListConfiguration.cs | 6 ++++++ .../Entities/FhirQueryConfiguration.cs | 6 ++++++ .../Entities/QueryPlan.cs | 9 +++++++++ .../Models/AuthenticationConfiguration.cs | 17 +++++++++++++---- 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/DotNet/DataAcquisition.Domain/Entities/FhirListConfiguration.cs b/DotNet/DataAcquisition.Domain/Entities/FhirListConfiguration.cs index f5fb7aed5..2112f35e9 100644 --- a/DotNet/DataAcquisition.Domain/Entities/FhirListConfiguration.cs +++ b/DotNet/DataAcquisition.Domain/Entities/FhirListConfiguration.cs @@ -1,14 +1,20 @@ using LantanaGroup.Link.DataAcquisition.Domain.Models; using LantanaGroup.Link.Shared.Domain.Entities; using System.ComponentModel.DataAnnotations.Schema; +using System.Runtime.Serialization; namespace LantanaGroup.Link.DataAcquisition.Domain.Entities; +[DataContract] [Table("fhirListConfiguration")] public class FhirListConfiguration : BaseEntityExtended { + [DataMember] public string FacilityId { get; set; } + [DataMember] public string FhirBaseServerUrl { get; set; } + [DataMember] public AuthenticationConfiguration? Authentication { get; set; } + [DataMember] public List EHRPatientLists { get; set; } } diff --git a/DotNet/DataAcquisition.Domain/Entities/FhirQueryConfiguration.cs b/DotNet/DataAcquisition.Domain/Entities/FhirQueryConfiguration.cs index f3fb197d7..2a0ac27e3 100644 --- a/DotNet/DataAcquisition.Domain/Entities/FhirQueryConfiguration.cs +++ b/DotNet/DataAcquisition.Domain/Entities/FhirQueryConfiguration.cs @@ -4,22 +4,28 @@ using LantanaGroup.Link.Shared.Domain.Entities; using MongoDB.Bson.Serialization.Attributes; using System.Text.Json.Serialization; +using System.Runtime.Serialization; namespace LantanaGroup.Link.DataAcquisition.Domain.Entities; +[DataContract] [Table("fhirQueryConfiguration")] public class FhirQueryConfiguration : BaseEntityExtended { + [DataMember] [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public string FacilityId { get; set; } + [DataMember] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string FhirServerBaseUrl { get; set; } + [DataMember] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [BsonIgnoreIfNull] public AuthenticationConfiguration? Authentication { get; set; } + [DataMember] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public List? QueryPlanIds { get; set; } } diff --git a/DotNet/DataAcquisition.Domain/Entities/QueryPlan.cs b/DotNet/DataAcquisition.Domain/Entities/QueryPlan.cs index 8a1953f21..1cb4cb970 100644 --- a/DotNet/DataAcquisition.Domain/Entities/QueryPlan.cs +++ b/DotNet/DataAcquisition.Domain/Entities/QueryPlan.cs @@ -1,18 +1,27 @@ using LantanaGroup.Link.DataAcquisition.Domain.Interfaces; using System.ComponentModel.DataAnnotations.Schema; +using System.Runtime.Serialization; using LantanaGroup.Link.Shared.Domain.Entities; namespace LantanaGroup.Link.DataAcquisition.Domain.Entities; +[DataContract] [Table("queryPlan")] public class QueryPlan : BaseEntityExtended { + [DataMember] public string PlanName { get; set; } + [DataMember] public string ReportType { get; set; } + [DataMember] public string FacilityId { get; set; } + [DataMember] public string EHRDescription { get; set; } + [DataMember] public string LookBack { get; set; } + [DataMember] public Dictionary InitialQueries { get; set; } + [DataMember] public Dictionary SupplementalQueries { get; set; } public QueryPlan() : base() diff --git a/DotNet/DataAcquisition.Domain/Models/AuthenticationConfiguration.cs b/DotNet/DataAcquisition.Domain/Models/AuthenticationConfiguration.cs index f1f4b6b8f..94b6fa36b 100644 --- a/DotNet/DataAcquisition.Domain/Models/AuthenticationConfiguration.cs +++ b/DotNet/DataAcquisition.Domain/Models/AuthenticationConfiguration.cs @@ -1,34 +1,43 @@ -using MongoDB.Bson.Serialization.Attributes; +using System.Runtime.Serialization; +using MongoDB.Bson.Serialization.Attributes; using System.Text.Json.Serialization; namespace LantanaGroup.Link.DataAcquisition.Domain.Models; +[DataContract] public class AuthenticationConfiguration { + [DataMember] [BsonIgnoreIfNull] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? AuthType { get; set; } - + + [DataMember] [BsonIgnoreIfNull] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? Key { get; set; } + [DataMember] [BsonIgnoreIfNull] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? TokenUrl { get; set; } + [DataMember] [BsonIgnoreIfNull] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? Audience { get; set; } + [DataMember] [BsonIgnoreIfNull] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? ClientId { get; set; } - + + [DataMember] [BsonIgnoreIfNull] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? UserName { get; set; } - + + [DataMember] [BsonIgnoreIfNull] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? Password { get; set; } From efe27971cb046c7a4d27cc49b93aeaec2f54edfd Mon Sep 17 00:00:00 2001 From: MontaltoNick Date: Mon, 21 Oct 2024 10:53:05 -0500 Subject: [PATCH 3/6] Normalization Mass Assignment --- .../Application/Models/NormalizationConfigModel.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/DotNet/Normalization/Application/Models/NormalizationConfigModel.cs b/DotNet/Normalization/Application/Models/NormalizationConfigModel.cs index da684bf1b..a8357d4e1 100644 --- a/DotNet/Normalization/Application/Models/NormalizationConfigModel.cs +++ b/DotNet/Normalization/Application/Models/NormalizationConfigModel.cs @@ -1,9 +1,13 @@ using LantanaGroup.Link.Normalization.Domain.JsonObjects; +using System.Runtime.Serialization; namespace LantanaGroup.Link.Normalization.Application.Models; +[DataContract] public class NormalizationConfigModel { + [DataMember] public string FacilityId { get; set; } + [DataMember] public Dictionary OperationSequence { get; set; } } From 0e76840e56057f7a6495ec65818413ddc1fd5d08 Mon Sep 17 00:00:00 2001 From: MontaltoNick Date: Mon, 21 Oct 2024 12:01:59 -0500 Subject: [PATCH 4/6] delete unused stuff from NormalizationController --- .../Controllers/NormalizationController.cs | 38 +------------------ 1 file changed, 1 insertion(+), 37 deletions(-) diff --git a/DotNet/Normalization/Controllers/NormalizationController.cs b/DotNet/Normalization/Controllers/NormalizationController.cs index 59da9dc97..7dc99e091 100644 --- a/DotNet/Normalization/Controllers/NormalizationController.cs +++ b/DotNet/Normalization/Controllers/NormalizationController.cs @@ -1,10 +1,8 @@ -using Confluent.Kafka; -using LantanaGroup.Link.Normalization.Application.Managers; +using LantanaGroup.Link.Normalization.Application.Managers; using LantanaGroup.Link.Normalization.Application.Models; using LantanaGroup.Link.Normalization.Application.Models.Exceptions; using LantanaGroup.Link.Normalization.Domain.Entities; using LantanaGroup.Link.Shared.Application.Interfaces; -using LantanaGroup.Link.Shared.Application.Models; using Link.Authorization.Policies; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -204,39 +202,5 @@ public async Task DeleteTenantNormalization(string facilityId) return Accepted(); } - - [ApiExplorerSettings(IgnoreApi = true)] - public async Task CreateAuditEvent(NormalizationConfigModel model, AuditEventType type) - { - try - { - using var producer = _kafkaProducerFactory.CreateAuditEventProducer(); - Shared.Application.Models.Kafka.AuditEventMessage auditEvent = new Shared.Application.Models.Kafka.AuditEventMessage(); - auditEvent.ServiceName = "Normalization Service"; - auditEvent.EventDate = DateTime.UtcNow; - //auditEvent.UserId = - auditEvent.User = "SystemUser"; - auditEvent.Action = type; - auditEvent.Resource = nameof(NormalizationConfig); - auditEvent.Notes = $"{type} for normalization configuration ({model.FacilityId})'."; - - var headers = new Headers(); - headers.Add("X-Correlation-Id", (Guid.NewGuid().ToByteArray())); - - //write to auditable event occurred topic - await producer.ProduceAsync(KafkaTopic.AuditableEventOccurred.ToString(), new Message - { - Key = model.FacilityId, - Value = auditEvent, - Headers = headers - }); - - return model.FacilityId; - } - catch (Exception ex) - { - throw new ApplicationException($"Failed to create audit event for {type} normalization configuration for tenant {model.FacilityId}.", ex); - } - } } } From 5f5b82e39f5c818a947bb69a8554892661ac6be1 Mon Sep 17 00:00:00 2001 From: MontaltoNick Date: Mon, 21 Oct 2024 12:37:49 -0500 Subject: [PATCH 5/6] Revert "delete unused stuff from NormalizationController" This reverts commit 0e76840e56057f7a6495ec65818413ddc1fd5d08. --- .../Controllers/NormalizationController.cs | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/DotNet/Normalization/Controllers/NormalizationController.cs b/DotNet/Normalization/Controllers/NormalizationController.cs index 7dc99e091..59da9dc97 100644 --- a/DotNet/Normalization/Controllers/NormalizationController.cs +++ b/DotNet/Normalization/Controllers/NormalizationController.cs @@ -1,8 +1,10 @@ -using LantanaGroup.Link.Normalization.Application.Managers; +using Confluent.Kafka; +using LantanaGroup.Link.Normalization.Application.Managers; using LantanaGroup.Link.Normalization.Application.Models; using LantanaGroup.Link.Normalization.Application.Models.Exceptions; using LantanaGroup.Link.Normalization.Domain.Entities; using LantanaGroup.Link.Shared.Application.Interfaces; +using LantanaGroup.Link.Shared.Application.Models; using Link.Authorization.Policies; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -202,5 +204,39 @@ public async Task DeleteTenantNormalization(string facilityId) return Accepted(); } + + [ApiExplorerSettings(IgnoreApi = true)] + public async Task CreateAuditEvent(NormalizationConfigModel model, AuditEventType type) + { + try + { + using var producer = _kafkaProducerFactory.CreateAuditEventProducer(); + Shared.Application.Models.Kafka.AuditEventMessage auditEvent = new Shared.Application.Models.Kafka.AuditEventMessage(); + auditEvent.ServiceName = "Normalization Service"; + auditEvent.EventDate = DateTime.UtcNow; + //auditEvent.UserId = + auditEvent.User = "SystemUser"; + auditEvent.Action = type; + auditEvent.Resource = nameof(NormalizationConfig); + auditEvent.Notes = $"{type} for normalization configuration ({model.FacilityId})'."; + + var headers = new Headers(); + headers.Add("X-Correlation-Id", (Guid.NewGuid().ToByteArray())); + + //write to auditable event occurred topic + await producer.ProduceAsync(KafkaTopic.AuditableEventOccurred.ToString(), new Message + { + Key = model.FacilityId, + Value = auditEvent, + Headers = headers + }); + + return model.FacilityId; + } + catch (Exception ex) + { + throw new ApplicationException($"Failed to create audit event for {type} normalization configuration for tenant {model.FacilityId}.", ex); + } + } } } From 39325cb550ab9178716268309db2fcd855b86663 Mon Sep 17 00:00:00 2001 From: MontaltoNick Date: Mon, 21 Oct 2024 12:38:18 -0500 Subject: [PATCH 6/6] Reapply "delete unused stuff from NormalizationController" This reverts commit 5f5b82e39f5c818a947bb69a8554892661ac6be1. --- .../Controllers/NormalizationController.cs | 38 +------------------ 1 file changed, 1 insertion(+), 37 deletions(-) diff --git a/DotNet/Normalization/Controllers/NormalizationController.cs b/DotNet/Normalization/Controllers/NormalizationController.cs index 59da9dc97..7dc99e091 100644 --- a/DotNet/Normalization/Controllers/NormalizationController.cs +++ b/DotNet/Normalization/Controllers/NormalizationController.cs @@ -1,10 +1,8 @@ -using Confluent.Kafka; -using LantanaGroup.Link.Normalization.Application.Managers; +using LantanaGroup.Link.Normalization.Application.Managers; using LantanaGroup.Link.Normalization.Application.Models; using LantanaGroup.Link.Normalization.Application.Models.Exceptions; using LantanaGroup.Link.Normalization.Domain.Entities; using LantanaGroup.Link.Shared.Application.Interfaces; -using LantanaGroup.Link.Shared.Application.Models; using Link.Authorization.Policies; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -204,39 +202,5 @@ public async Task DeleteTenantNormalization(string facilityId) return Accepted(); } - - [ApiExplorerSettings(IgnoreApi = true)] - public async Task CreateAuditEvent(NormalizationConfigModel model, AuditEventType type) - { - try - { - using var producer = _kafkaProducerFactory.CreateAuditEventProducer(); - Shared.Application.Models.Kafka.AuditEventMessage auditEvent = new Shared.Application.Models.Kafka.AuditEventMessage(); - auditEvent.ServiceName = "Normalization Service"; - auditEvent.EventDate = DateTime.UtcNow; - //auditEvent.UserId = - auditEvent.User = "SystemUser"; - auditEvent.Action = type; - auditEvent.Resource = nameof(NormalizationConfig); - auditEvent.Notes = $"{type} for normalization configuration ({model.FacilityId})'."; - - var headers = new Headers(); - headers.Add("X-Correlation-Id", (Guid.NewGuid().ToByteArray())); - - //write to auditable event occurred topic - await producer.ProduceAsync(KafkaTopic.AuditableEventOccurred.ToString(), new Message - { - Key = model.FacilityId, - Value = auditEvent, - Headers = headers - }); - - return model.FacilityId; - } - catch (Exception ex) - { - throw new ApplicationException($"Failed to create audit event for {type} normalization configuration for tenant {model.FacilityId}.", ex); - } - } } }