{ "ConnectionStrings": { "DefaultConnection": "Host=localhost;Port=5436;Database=vigilcare;Username=postgres;Password=password" }, "Redis": { "ConnectionString": "localhost:6382" }, "Seq": { "ServerUrl": "http://localhost:5345" }, "Serilog": { "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.Seq" ], "MinimumLevel": { "Default": "Information", "Override": { "Microsoft.AspNetCore": "Warning", "Microsoft.EntityFrameworkCore.Database.Command": "Information" } }, "WriteTo": [ { "Name": "Console" }, { "Name": "Seq", "Args": { "serverUrl": "http://localhost:5345" } } ], "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ] }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning", "Microsoft.EntityFrameworkCore.Database.Command": "Information" } }, "AllowedHosts": "*", "Kafka": { "BootstrapServers": "localhost:9092", "Topics": { "ObservationRecorded": "observation.recorded", "AlertGenerated": "alert.generated", "EncounterStatusChanged": "encounter.status.changed" }, "NumPartitions": 6, "OutboxBatchSize": 100, "OutboxPollIntervalMs": 500 }, "Elasticsearch": { "Uri": "http://localhost:9200", "Indices": { "PatientEncounters": "patient_encounters", "Observations": "observations", "ClinicalAlerts": "clinical_alerts" } }, "RabbitMq": { "Host": "localhost", "Port": 5674, "Username": "guest", "Password": "guest", "PagingAckTimeoutMs": 300000 }, "Minio": { "Endpoint": "localhost:9005", "AccessKey": "minioadmin", "SecretKey": "minioadmin", "BucketName": "vigilcare", "UseSSL": false }, "ReconciliationJobs": { "IntervalMinutes": 30, "UnacknowledgedAlertThresholdMinutes": 30, "PendingOrderThresholdHours": 4, "NoObservationThresholdHours": 2 }, "DataLake": { "FlushCount": 1000, "FlushIntervalSeconds": 300 }, "TrendDetection": { "WindowMinutes": 30, "MaxHistoryEntries": 10, "HistoryTtlSeconds": 7200, "RateThresholdsPerMinute": { "HEART_RATE": 0.5, "RESP_RATE": 0.3, "SYSTOLIC_BP": 1.0, "TEMP_C": 0.05, "SPO2": 0.2 } }, "AlertSuppression": { "DefaultWindowMinutes": 30 } }