Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LNK-3033: Census Mass Assignment #505

Merged
merged 8 commits into from
Oct 23, 2024
7 changes: 6 additions & 1 deletion DotNet/Census/Application/Models/CensusConfigModel.cs
Original file line number Diff line number Diff line change
@@ -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; }
}
}
Original file line number Diff line number Diff line change
@@ -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<EhrPatientList> EHRPatientLists { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<string>? QueryPlanIds { get; set; }
}
9 changes: 9 additions & 0 deletions DotNet/DataAcquisition.Domain/Entities/QueryPlan.cs
Original file line number Diff line number Diff line change
@@ -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<string, IQueryConfig> InitialQueries { get; set; }
[DataMember]
public Dictionary<string, IQueryConfig> SupplementalQueries { get; set; }

public QueryPlan() : base()
Expand Down
Original file line number Diff line number Diff line change
@@ -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; }
Expand Down
Original file line number Diff line number Diff line change
@@ -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<string, INormalizationOperation> OperationSequence { get; set; }
}
38 changes: 1 addition & 37 deletions DotNet/Normalization/Controllers/NormalizationController.cs
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -204,39 +202,5 @@ public async Task<IActionResult> DeleteTenantNormalization(string facilityId)

return Accepted();
}

[ApiExplorerSettings(IgnoreApi = true)]
public async Task<string> 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<string,Shared.Application.Models.Kafka.AuditEventMessage>
{
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);
}
}
}
}
Loading