Skip to main content

haste_server/
lib.rs

1pub mod auth_n;
2mod extract;
3pub mod fhir_client;
4mod fhir_http;
5pub mod load_artifacts;
6mod mcp;
7mod middleware;
8mod openapi;
9mod route_path;
10pub mod server;
11pub mod services;
12mod static_assets;
13pub mod tenants;
14mod ui;
15
16pub enum ServerEnvironmentVariables {
17    AllowArtifactMutations,
18    // Used for JWT
19    CertificationDir,
20    // Main repo config
21    DataBaseURL,
22    PGMaxConnections,
23    // Search variable config.
24    ElasticSearchURL,
25    ElasticSearchUsername,
26    ElasticSearchPassword,
27    // Main root where the FHIR Server is hosted.
28    APIURI,
29    // Where to redirect for hardcoded admin app.
30    AdminAppRedirectURI,
31    // Email
32    SendGridAPIKey,
33    EmailFromAddress,
34    // Data Limits
35    MaxRequestBodySize,
36    RateLimitSubscriptions,
37    RateLimitWindowInSeconds,
38    RateLimitOperationPoints,
39    IpSource,
40
41    // Max Delete Limit for type delete and system delete operations.
42    FHIRDeleteLimit,
43}
44
45impl From<ServerEnvironmentVariables> for String {
46    fn from(value: ServerEnvironmentVariables) -> Self {
47        match value {
48            ServerEnvironmentVariables::CertificationDir => "CERTIFICATION_DIR".to_string(),
49            ServerEnvironmentVariables::AllowArtifactMutations => {
50                "ALLOW_ARTIFACT_MUTATIONS".to_string()
51            }
52            ServerEnvironmentVariables::DataBaseURL => "DATABASE_URL".to_string(),
53            ServerEnvironmentVariables::PGMaxConnections => "PG_MAX_CONNECTIONS".to_string(),
54            ServerEnvironmentVariables::ElasticSearchURL => "ELASTICSEARCH_URL".to_string(),
55            ServerEnvironmentVariables::ElasticSearchUsername => {
56                "ELASTICSEARCH_USERNAME".to_string()
57            }
58            ServerEnvironmentVariables::ElasticSearchPassword => {
59                "ELASTICSEARCH_PASSWORD".to_string()
60            }
61            ServerEnvironmentVariables::APIURI => "API_URI".to_string(),
62            ServerEnvironmentVariables::AdminAppRedirectURI => "ADMIN_APP_REDIRECT_URI".to_string(),
63            ServerEnvironmentVariables::SendGridAPIKey => "SG_API_KEY".to_string(),
64            ServerEnvironmentVariables::EmailFromAddress => "EMAIL_FROM".to_string(),
65            ServerEnvironmentVariables::MaxRequestBodySize => "MAX_REQUEST_BODY_SIZE".to_string(),
66            ServerEnvironmentVariables::RateLimitSubscriptions => {
67                "RATE_LIMIT_SUBSCRIPTIONS".to_string()
68            }
69            ServerEnvironmentVariables::RateLimitWindowInSeconds => {
70                "RATE_LIMIT_WINDOW_IN_SECONDS".to_string()
71            }
72            ServerEnvironmentVariables::RateLimitOperationPoints => {
73                "RATE_LIMIT_OPERATION_POINTS".to_string()
74            }
75            ServerEnvironmentVariables::IpSource => "IP_SOURCE".to_string(),
76            ServerEnvironmentVariables::FHIRDeleteLimit => "FHIR_DELETE_LIMIT".to_string(),
77        }
78    }
79}