SAIF.SAIFCode.Core architecture¶
SAIF.SAIFCode.Core (assembly SAIF.Core) is the shared contracts and abstractions layer of the SAIF solution: it defines about 509 classes, 150 interfaces and 35 enums under SAIF.Core.Contracts.* and SAIF.Core.Services, covering DTOs, request/response objects, filter criteria, code enumerations and roughly 145 service interfaces that SAIF.Services implements, while containing no persistence, configuration, HTTP or authorization-enforcement code of its own*.
Responsibilities¶
- Define DTOs, filter/search criteria and code enumerations for the solution's functional areas, the largest being Claims (211 files), Legal (69), Policies (58), Collections (43) and Documents (40)
- Declare the ~145 service interfaces (for example
IBillService,IEbillingService,IClaimInformationService,IClaimSecurityService,IPolicySecurityService,ICertificateSecurityService) that SAIF.Services implements - Declare EDI file contracts (
I837File,I835File,I277File,I999File,I837AckFile) deriving fromIEdiFile - Provide the
EnumerationBase<TCode,TEnum>static dictionary-backed code/enum pairing pattern reused across code-enumeration types (Core/SAIF.Core/Contracts/Core/EnumerationBase.cs) - Perform small in-memory computations on contracts, such as bill status flags, claim alert lists and banner-text assembly (see Operations/processes in the analysis findings)
- Declare AD resource-name constants and security service interfaces/DTOs that SAIF.Services implements and enforces*
Component boundaries¶
SAIF.Core.Contracts.*(~90 namespaces): pure data-carrier and code-enumeration types with no infrastructure dependencies; the boundary consumers (SAIF.Domain, SAIF.Services, SAIF.Services.Web.Proxies) program against these typesSAIF.Core.Services(IClaimCustomRepoService,IPdfTrackingService,IDbConnectionService): a small set of service abstractions with no implementation in this library;IDbConnectionServicehas no compiled implementer anywhere in the repository**- Security contracts and constants (
ClaimSecurityAccess,IClaimSecurityService,IPolicySecurityService,ICertificateSecurityService,IGroupImageSecurityProvider, fourSecurityRolesclasses): declared here only; all enforcement is implemented in SAIF.Services, which owns the authorization boundary IUserProfileService(SAIF.Core.Services.UserProfile): referenced by consumers but not defined in this repository; most likely supplied by the externalSAIF.Framework.Corepackage*
Interaction model¶
- SAIF.Services implements the majority of the service interfaces declared here and is the primary consumer of the contracts
- SAIF.Domain and SAIF.Services.Web.Proxies also consume these contracts as DTOs and enumerations passed across layer boundaries
- This library holds a project reference to SAIF.Data, which is an unusual upward-looking reference for a contracts layer; SAIF.Data does not reference SAIF.Core back, and the purpose is inferred to be reuse of data enums or entity types within some contracts*
- Authorization is a declare-here, enforce-elsewhere pattern: the AD resource-name constants and security service interfaces are declared in this library, and
SAIF.Servicesimplementations call the externalIUserProfileService.GetCurrentUser().IsAuthorized(resource)to enforce them*
Architecture diagram¶
The following diagram shows high-level component interactions.
flowchart TD
A["SAIF.Core.Contracts.*<br>DTOs, filters, enumerations"] --> B["SAIF.Core.Services<br>service interfaces"]
B --> C["SAIF.Services<br>implements contracts and enforces security"]
A --> D[SAIF.Domain]
A --> E[SAIF.Services.Web.Proxies]
A --> F["SAIF.Data<br>project reference for shared types"]
C --> G["IUserProfileService<br>(external, SAIF.Framework.Core)"]
Sequence diagram¶
The following diagram shows the primary request/response sequence.
sequenceDiagram
participant Client
participant Service as SAIF.Services implementation
participant Contract as SAIF.Core contract/interface
participant Auth as IUserProfileService (external)
Client->>Service: Call service interface (e.g. IClaimSecurityService.GetClaimSecurity)
Service->>Contract: Read/populate DTO defined in SAIF.Core
Service->>Auth: IsAuthorized(resource)
Auth-->>Service: Authorization result
Service-->>Client: Populated contract (e.g. ClaimSecurityAccess)
Design constraints¶
- This library must remain free of persistence, configuration and HTTP/authorization-enforcement logic; it is a contracts-only layer and enforcement responsibilities belong to SAIF.Services*
- Security is declared, not enforced, here: 16 AD resource-name constants and 9 security service contracts are defined in this library, but only SAIF.Services may perform the
IsAuthorizedchecks against them; 6 of the 16 constants have no compiled enforcement point in the repository (referenced only byNoteService.csfiles excluded from the SAIF.Services project build) and 4 (ViewRoleconstants) are never referenced anywhere in the repository** ILegalSecurityOverrideServicehas no implementation found in the repository; any consumer relying on it must supply an external implementer**- The upward-looking project reference to SAIF.Data must not be treated as a two-way dependency; SAIF.Data does not reference this library back*
- The hard-coded path
SubpoenaDocuments.XPressionsFileAttachmentFolder = "D:\Attachments"is an environment-specific constant baked into a contract type rather than externalized configuration
Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.
Related documentation¶
- Index
- Overview
- Dependencies
- Operations and processes
- Business rules
- Security and authorization
- API reference
Sources¶
- Core/SAIF.Core/SAIF.SAIFCode.Core.csproj
- Core/SAIF.Core/SAIF.SAIFCode.Core.nuspec
- Core/SAIF.Core/packages.config
- Core/SAIF.Core/app.config
- Core/SAIF.Core/Services/IDbConnectionService.cs
- Core/SAIF.Core/Contracts/Core/EnumerationBase.cs
- Core/SAIF.Core/Contracts/Legal/Subpoenas/SubpoenaDocuments.cs
- Core/SAIF.Core/Contracts/Security/ClaimSecurityAccess.cs
- Core/SAIF.Core/Contracts/Security/IClaimSecurityService.cs
- Core/SAIF.Core/Contracts/Policies/Security/IPolicySecurityService.cs
- Core/SAIF.Core/Contracts/Policies/Certificates/ICertificateSecurityService.cs
- Core/SAIF.Core/Contracts/Groups/Imaging/IGroupImageSecurityProvider.cs
- Core/SAIF.Core/Contracts/Legal/SecurityOverrides/ILegalSecurityOverrideService.cs
- Core/SAIF.Core/Contracts/Agencies/Imaging/SecurityRoles.cs
- Core/SAIF.Core/Contracts/Agencies/Notes/SecurityRoles.cs
- Core/SAIF.Core/Contracts/Groups/Imaging/SecurityRoles.cs
- Core/SAIF.Core/Contracts/Groups/Notes/SecurityRoles.cs