-
Notifications
You must be signed in to change notification settings - Fork 381
/
format.ts
77 lines (59 loc) · 1.56 KB
/
format.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import { Address, HumanName } from '@medplum/fhirtypes';
export interface AddressFormatOptions {
all?: boolean;
use?: boolean;
}
export interface HumanNameFormatOptions {
all?: boolean;
prefix?: boolean;
suffix?: boolean;
use?: boolean;
}
export function formatAddress(address: Address, options?: AddressFormatOptions): string {
const builder = [];
if (address.line) {
builder.push(...address.line);
}
if (address.city) {
builder.push(address.city);
}
if (address.state) {
builder.push(address.state);
}
if (address.postalCode) {
builder.push(address.postalCode);
}
if (address.use && (options?.all || options?.use)) {
builder.push('[' + address.use + ']');
}
return builder.join(', ').trim();
}
export function formatHumanName(name: HumanName, options?: HumanNameFormatOptions): string {
const builder = [];
if (name.prefix && (options?.all || options?.prefix)) {
builder.push(...name.prefix);
}
if (name.given) {
builder.push(...name.given);
}
if (name.family) {
builder.push(name.family);
}
if (name.suffix && (options?.all || options?.suffix)) {
builder.push(...name.suffix);
}
if (name.use && (options?.all || options?.use)) {
builder.push('[' + name.use + ']');
}
return builder.join(' ').trim();
}
export function formatGivenName(name: HumanName): string {
const builder: string[] = [];
if (name.given) {
builder.push(...name.given);
}
return builder.join(' ').trim();
}
export function formatFamilyName(name: HumanName): string {
return name.family || '';
}