UNPKG

emr-types

Version:

Comprehensive TypeScript Types Library for Electronic Medical Record (EMR) Applications - Domain-Driven Design with Zod Validation

74 lines 2.41 kB
/** * Address Factory Functions */ export const AddressFactory = { /** * Create an address from parts */ create: (street, city, province, postalCode, country = 'Vietnam') => { // Basic validation if (!street || !city || !province || !postalCode) { throw new Error('All address fields are required'); } const value = `${street}, ${city}, ${province} ${postalCode}, ${country}`; const formatted = formatAddress(street, city, province, postalCode, country); return { value, isValid: true, street, city, province, postalCode, country, formatted, validatedAt: new Date() }; }, /** * Create an address from string */ fromString: (addressString) => { // Simple parsing - in real implementation, you might use a more sophisticated parser const parts = addressString.split(',').map(part => part.trim()); if (parts.length < 4) { throw new Error('Invalid address format'); } const [street, city, provincePostal, country] = parts; const provincePostalParts = provincePostal?.split(' ') || []; const province = provincePostalParts[0] || ''; const postalCode = provincePostalParts[1] || ''; return AddressFactory.create(street || '', city || '', province, postalCode, country || 'Vietnam'); } }; /** * Address Validation Functions */ export const AddressValidator = { /** * Check if address has all required fields */ hasRequiredFields: (address) => { return !!(address.street && address.city && address.province && address.postalCode); }, /** * Check if postal code is valid Vietnamese format */ isValidVietnamesePostalCode: (postalCode) => { // Vietnamese postal codes are 6 digits const postalCodeRegex = /^\d{6}$/; return postalCodeRegex.test(postalCode); }, /** * Check if address is in Vietnam */ isVietnameseAddress: (address) => { return address.country.toLowerCase() === 'vietnam'; } }; /** * Format address for display */ function formatAddress(street, city, province, postalCode, country) { return `${street}\n${city}, ${province} ${postalCode}\n${country}`; } //# sourceMappingURL=Address.js.map