@kenniy/godeye-event-contracts
Version:
Shared event schemas and stream definitions for 8Medical microservices architecture
71 lines • 2.14 kB
TypeScript
export interface EventMetadata {
correlationId: string;
sourceService: string;
version: string;
priority?: 'low' | 'normal' | 'high' | 'urgent';
headers?: Record<string, string>;
requiresAcknowledgment?: boolean;
maxRetries?: number;
expiresAt?: string;
}
export interface BaseEvent<TData = any> {
eventId: string;
eventType: string;
timestamp: string;
data: TData;
metadata: EventMetadata;
}
export interface EventEnvelope<TData = any> extends BaseEvent<TData> {
stream: string;
streamMessageId?: string;
}
export interface BusinessEntityIds {
userId?: string;
businessId?: string;
hospitalId?: string;
customerId?: string;
transactionId?: string;
transportId?: string;
fileId?: string;
adminId?: string;
}
export interface EventErrorInfo {
code: string;
message: string;
details?: Record<string, any>;
stack?: string;
occurredAt: string;
}
export interface Address {
street: string;
city: string;
state: string;
postalCode: string;
country: string;
coordinates?: {
latitude: number;
longitude: number;
};
}
export interface ContactInfo {
email?: string;
phoneNumber?: string;
alternatePhone?: string;
emergencyContact?: {
name: string;
phoneNumber: string;
relationship: string;
};
}
export type BusinessType = 'hospital' | 'hmo' | 'diagnostic_center' | 'ambulance_provider' | 'pharmacy' | 'laboratory';
export type UserType = 'customer' | 'business_owner' | 'business_agent' | 'admin' | 'super_admin';
export type EntityStatus = 'active' | 'inactive' | 'pending' | 'suspended' | 'archived' | 'deleted';
export type VerificationStatus = 'pending' | 'in_review' | 'verified' | 'rejected' | 'expired' | 'requires_resubmission';
export type EventData<T extends BaseEvent> = T['data'];
export type EventHandler<T extends BaseEvent> = (event: T) => Promise<void> | void;
export interface EventBatch<TData = any> {
events: BaseEvent<TData>[];
batchId: string;
batchMetadata?: EventMetadata;
}
//# sourceMappingURL=base-event.d.ts.map