ClaimIntake
ClaimIntake is the WCF service class that lets SAIF's internal applications submit a first report of injury, read the intake status of a submitted claim, and flag a submitted claim for manual review. It is called by the claims portal and by the SAIF.Claims.Intake.Client proxy package.
Field
Value
Service class
ClaimIntake
Declared contract
IClaimIntake - In repository (src/SAIF.Claims.Intake.Service/IClaimIntake.cs)
Route
ClaimIntake.svc
Source
src/SAIF.Claims.Intake.Service/ClaimIntake.svc.cs
Service attributes
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)], [LogErrorBehavior]
Instancing / concurrency
InstanceContextMode.PerCall / ConcurrencyMode.Single
Binding
basicHttpBinding (ClaimIntakeBasic)
Class-level authorization
None in code
Error handling
ClaimIntakeErrorHandler installed by [LogErrorBehavior] - see Faults and error pipeline
Operations
3
Also hosted in
-
SubmitClaim
Records a first report of injury and returns a receipt carrying the assigned claim number.
Field
Value
Operation name
SubmitClaim
Contract name
SubmitClaim
SOAP action
http://services.saif.example/claims/intake/v1/ClaimIntake/SubmitClaim
Implementing member
ClaimIntake.SubmitClaim (src/SAIF.Claims.Intake.Service/ClaimIntake.svc.cs:44)
Pattern
Request/response
Binding
basicHttpBinding (ClaimIntakeBasic)
Authorization
SAIF\ClaimsIntakeSubmitters role
Process
OP-001
Part
Type
Required
Default
Purpose
submission
ClaimSubmission
Yes
-
The first report of injury being submitted
Type
Kind
Members
Declared in
ClaimSubmission
Data contract
BodyPartCode, ClaimantContact, ClaimantFirstName, ClaimantLastName, EmployerPolicyNumber, InjuryDate, InjuryDescription
src/SAIF.Claims.Intake.Service/DataContracts/ClaimSubmission.cs
ClaimantContact
Data contract
Email, Phone
src/SAIF.Claims.Intake.Service/DataContracts/ClaimantContact.cs
Output message
Field
Value
Return type
ClaimReceipt
Meaning
Confirmation that intake accepted the report, carrying the assigned claim number
Empty-result behavior
Never empty: on success the receipt is always populated, and on failure the operation throws instead of returning null
Member
Type
Nullable
Purpose
ClaimNumber
string
No
The claim number assigned by intake, or the existing number when the submission is a duplicate
IsDuplicate
bool
No
True when an earlier submission matched and no new record was written (BR-CLM-003)
ReceivedUtc
DateTime
No
When intake accepted the original submission
Status
string
No
The intake status at the time of the call, always Received on a first submission
Faults
Fault
Declared
Raised when
Surfaced as
Detail crosses the boundary
ClaimValidationFault
[FaultContract(typeof(ClaimValidationFault))]
The injury date is in the future (BR-CLM-001) or the employer policy is not active on the injury date (BR-CLM-002)
Typed SOAP fault
Yes
OracleException
Not declared
The PKG_CLAIM_INTAKE.INSERT_CLAIM call fails
Generic SOAP fault produced by WCF through the error pipeline
No
Authorization
SubmitClaim carries [PrincipalPermission(SecurityAction.Demand, Role = @"SAIF\ClaimsIntakeSubmitters")], so a caller outside that Windows group is rejected before the method body runs. See the Submitter role requirement section of Authentication and authorization.
Side effects
Aspect
Finding
Records written
CLM.CLAIM_INTAKE (data model)
Downstream calls
PKG_CLAIM_INTAKE.INSERT_CLAIM (Oracle stored procedure)
Files or messages produced
None
Shared state touched
None
Repeat-call behavior
A second submission with the same policy number, claimant name, and injury date within 24 hours returns the original receipt with IsDuplicate set to true and writes no second record (BR-CLM-003)
Example message
<soap:Envelope xmlns:soap= "http://schemas.xmlsoap.org/soap/envelope/" >
<soap:Body>
<SubmitClaim xmlns= "http://services.saif.example/claims/intake/v1" >
<submission xmlns:d= "http://schemas.datacontract.org/2004/07/SAIF.Claims.Intake.Service.DataContracts" >
<d:BodyPartCode> HND</d:BodyPartCode>
<d:ClaimantContact>
<d:Email> alex.rivera@example.com</d:Email>
<d:Phone> 503-555-0142</d:Phone>
</d:ClaimantContact>
<d:ClaimantFirstName> Alex</d:ClaimantFirstName>
<d:ClaimantLastName> Rivera</d:ClaimantLastName>
<d:EmployerPolicyNumber> PL-0048213</d:EmployerPolicyNumber>
<d:InjuryDate> 2026-09-03T00:00:00</d:InjuryDate>
<d:InjuryDescription> Laceration to left hand while clearing a jammed conveyor.</d:InjuryDescription>
</submission>
</SubmitClaim>
</soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap= "http://schemas.xmlsoap.org/soap/envelope/" >
<soap:Body>
<SubmitClaimResponse xmlns= "http://services.saif.example/claims/intake/v1" >
<SubmitClaimResult xmlns:d= "http://schemas.datacontract.org/2004/07/SAIF.Claims.Intake.Service.DataContracts" >
<d:ClaimNumber> 2026-0041872</d:ClaimNumber>
<d:IsDuplicate> false</d:IsDuplicate>
<d:ReceivedUtc> 2026-09-10T16:42:08Z</d:ReceivedUtc>
<d:Status> Received</d:Status>
</SubmitClaimResult>
</SubmitClaimResponse>
</soap:Body>
</soap:Envelope>
GetClaimStatus
Returns the current intake status of a previously submitted claim.
Field
Value
Operation name
GetClaimStatus
Contract name
GetClaimStatus
SOAP action
http://services.saif.example/claims/intake/v1/ClaimIntake/GetClaimStatus
Implementing member
ClaimIntake.GetClaimStatus (src/SAIF.Claims.Intake.Service/ClaimIntake.svc.cs:88)
Pattern
Request/response
Binding
basicHttpBinding (ClaimIntakeBasic)
Authorization
None in code
Process
-
Part
Type
Required
Default
Purpose
claimNumber
string
Yes
-
The claim number returned by SubmitClaim
Output message
Field
Value
Return type
ClaimStatusResult
Meaning
The intake status recorded for the claim and when it last changed
Empty-result behavior
Returns null when no claim matches the claim number, and also when the lookup fails (see Swallowed failures in Faults and error pipeline )
Member
Type
Nullable
Purpose
ClaimNumber
string
No
The claim number that was requested
LastUpdatedUtc
DateTime
No
When the status last changed
Status
string
No
One of Received, InReview, Accepted, or Denied
StatusReason
string
Yes
Free-text reason recorded with the status, absent when none was entered
Faults
Fault
Declared
Raised when
Surfaced as
Detail crosses the boundary
Exception
Not declared
Any failure inside the method, including a database error
Not surfaced - the exception is caught and the operation returns null
No
No fault contract is declared for this operation. See Faults and error pipeline for what the caller actually receives.
Authorization
None in code. The ClaimIntakeBasic binding requires Windows transport authentication, so the caller is identified, but no role or permission check is made inside the method. See Authentication and authorization.
Side effects
Aspect
Finding
Records written
None
Downstream calls
PKG_CLAIM_INTAKE.GET_STATUS (Oracle stored procedure)
Files or messages produced
None
Shared state touched
None
Repeat-call behavior
Returns the current status each time; no state changes
Example message
<soap:Envelope xmlns:soap= "http://schemas.xmlsoap.org/soap/envelope/" >
<soap:Body>
<GetClaimStatus xmlns= "http://services.saif.example/claims/intake/v1" >
<claimNumber> 2026-0041872</claimNumber>
</GetClaimStatus>
</soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap= "http://schemas.xmlsoap.org/soap/envelope/" >
<soap:Body>
<GetClaimStatusResponse xmlns= "http://services.saif.example/claims/intake/v1" >
<GetClaimStatusResult xmlns:d= "http://schemas.datacontract.org/2004/07/SAIF.Claims.Intake.Service.DataContracts" >
<d:ClaimNumber> 2026-0041872</d:ClaimNumber>
<d:LastUpdatedUtc> 2026-09-10T16:42:08Z</d:LastUpdatedUtc>
<d:Status> Received</d:Status>
<d:StatusReason i:nil= "true" xmlns:i= "http://www.w3.org/2001/XMLSchema-instance" />
</GetClaimStatusResult>
</GetClaimStatusResponse>
</soap:Body>
</soap:Envelope>
FlagClaimForReview
Marks a submitted claim for manual review and records the reason, without returning anything to the caller.
Field
Value
Operation name
FlagClaimForReview
Contract name
FlagClaimForReview
SOAP action
http://services.saif.example/claims/intake/v1/ClaimIntake/FlagClaimForReview
Implementing member
ClaimIntake.FlagClaimForReview (src/SAIF.Claims.Intake.Service/ClaimIntake.svc.cs:121)
Pattern
One-way (IsOneWay = true)
Binding
basicHttpBinding (ClaimIntakeBasic)
Authorization
SAIF\ClaimsIntakeSubmitters role
Process
OP-002
Part
Type
Required
Default
Purpose
claimNumber
string
Yes
-
The claim to flag
reason
string
Yes
-
Why the claim needs manual review; an empty value is rejected (BR-CLM-004)
Output message
Field
Value
Return type
void
Meaning
A successful send means only that the request was accepted for processing; the caller cannot learn whether the flag was recorded
Empty-result behavior
Not applicable - a one-way operation returns no message
Faults
Fault
Declared
Raised when
Surfaced as
Detail crosses the boundary
OracleException
Not declared
The PKG_CLAIM_INTAKE.ADD_REVIEW_FLAG call fails
Not surfaced - a one-way operation returns no message, so the failure is only logged by the error pipeline
No
No fault contract is declared for this operation. See Faults and error pipeline for what the caller actually receives.
Authorization
FlagClaimForReview carries [PrincipalPermission(SecurityAction.Demand, Role = @"SAIF\ClaimsIntakeSubmitters")], the same requirement as SubmitClaim. See the Submitter role requirement section of Authentication and authorization.
Side effects
Aspect
Finding
Records written
CLM.CLAIM_INTAKE_NOTE (data model)
Downstream calls
PKG_CLAIM_INTAKE.ADD_REVIEW_FLAG (Oracle stored procedure)
Files or messages produced
None
Shared state touched
None
Repeat-call behavior
Each call inserts another note row; duplicate flags are not detected
Example message
<soap:Envelope xmlns:soap= "http://schemas.xmlsoap.org/soap/envelope/" >
<soap:Body>
<FlagClaimForReview xmlns= "http://services.saif.example/claims/intake/v1" >
<claimNumber> 2026-0041872</claimNumber>
<reason> Injury description conflicts with the employer's report.</reason>
</FlagClaimForReview>
</soap:Body>
</soap:Envelope>
This operation is one-way, so there is no response envelope.
Coverage checklist
Public member
Documented section
Pattern
ClaimReceipt SubmitClaim(ClaimSubmission submission)
SubmitClaim
Request/response
ClaimStatusResult GetClaimStatus(string claimNumber)
GetClaimStatus
Request/response
void FlagClaimForReview(string claimNumber, string reason)
FlagClaimForReview
One-way
ClaimIntake()
Not an operation - parameterless constructor, not declared on IClaimIntake
-
Index
Overview
Architecture
Activation and hosting
Operations
Faults and error pipeline
Authentication and authorization
Dependencies
Configuration
Operations and processes
Business rules
Data model
Operational runbook
Tech debt
Sources
src/SAIF.Claims.Intake.Service/ClaimIntake.svc.cs
src/SAIF.Claims.Intake.Service/IClaimIntake.cs
src/SAIF.Claims.Intake.Service/DataContracts/ClaimSubmission.cs
src/SAIF.Claims.Intake.Service/DataContracts/ClaimantContact.cs
src/SAIF.Claims.Intake.Service/DataContracts/ClaimReceipt.cs
src/SAIF.Claims.Intake.Service/DataContracts/ClaimStatusResult.cs
src/SAIF.Claims.Intake.Service/DataContracts/ClaimValidationFault.cs
src/SAIF.Claims.Intake.Service/Web.config