@rinse-dental/open-dental 2.4.1 → 2.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/transformerTypes/visitTypes.d.ts +1 -0
- package/dist/transformerTypes/visitTypes.d.ts.map +1 -1
- package/dist/transformers/visit.d.ts.map +1 -1
- package/dist/transformers/visit.js +20 -5
- package/package.json +1 -1
- package/src/transformerTypes/visitTypes.ts +2 -1
- package/src/transformers/visit.ts +20 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visitTypes.d.ts","sourceRoot":"","sources":["../../src/transformerTypes/visitTypes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"visitTypes.d.ts","sourceRoot":"","sources":["../../src/transformerTypes/visitTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visit.d.ts","sourceRoot":"","sources":["../../src/transformers/visit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAIvD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"visit.d.ts","sourceRoot":"","sources":["../../src/transformers/visit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAIvD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG,KAAK,CA4C1D"}
|
|
@@ -17,6 +17,7 @@ function appointmentToVisit(apt) {
|
|
|
17
17
|
}
|
|
18
18
|
const duration = (apt.Pattern?.length || 0) * 5;
|
|
19
19
|
const location = 'NF6YVFAXyRVXGi5nItqV';
|
|
20
|
+
const display_ProvNum = apt.IsHygiene ? apt.ProvHyg : apt.ProvNum;
|
|
20
21
|
return {
|
|
21
22
|
docRef: `/patients/${apt.PatNum}/patientVisits/${apt.AptNum}`,
|
|
22
23
|
...apt,
|
|
@@ -25,10 +26,10 @@ function appointmentToVisit(apt) {
|
|
|
25
26
|
IsNewPatient: apt.IsNewPatient == 'true',
|
|
26
27
|
appendix: {
|
|
27
28
|
duration: duration,
|
|
28
|
-
ProvNum:
|
|
29
|
-
ProviderDocRef: `/providers/${
|
|
30
|
-
VisitTypeDocRef: `/lookups/lookup_definitions/lookup_visitType/${apt.AppointmentTypeNum}
|
|
31
|
-
OpDocRef: `/locations/${location}/locationOperatories/${apt.Op}
|
|
29
|
+
ProvNum: display_ProvNum,
|
|
30
|
+
ProviderDocRef: display_ProvNum != 0 ? `/providers/${display_ProvNum}` : undefined,
|
|
31
|
+
VisitTypeDocRef: apt.AppointmentTypeNum != 0 ? `/lookups/lookup_definitions/lookup_visitType/${apt.AppointmentTypeNum}` : undefined,
|
|
32
|
+
OpDocRef: apt.Op != 0 ? `/locations/${location}/locationOperatories/${apt.Op}` : undefined,
|
|
32
33
|
date: moment_aptDateTime.format('YYYY-MM-DD'),
|
|
33
34
|
dateTime: moment_aptDateTime.format(),
|
|
34
35
|
firestoreTimestamp: firestoreTimestamp,
|
|
@@ -42,8 +43,22 @@ function appointmentToVisit(apt) {
|
|
|
42
43
|
year_YYYY: moment_aptDateTime.format('YYYY'),
|
|
43
44
|
time: moment_aptDateTime.format('h:mm A'),
|
|
44
45
|
timezone: moment_aptDateTime.tz(),
|
|
45
|
-
|
|
46
|
+
timezone_z: moment_aptDateTime.format('z'),
|
|
47
|
+
duration_desc: formatMinutes(duration),
|
|
46
48
|
},
|
|
47
49
|
},
|
|
48
50
|
};
|
|
49
51
|
}
|
|
52
|
+
function formatMinutes(minutes) {
|
|
53
|
+
const days = Math.floor(minutes / (24 * 60)); // Calculate whole days
|
|
54
|
+
const hours = Math.floor((minutes % (24 * 60)) / 60); // Remaining hours
|
|
55
|
+
const mins = minutes % 60; // Remaining minutes
|
|
56
|
+
const parts = [];
|
|
57
|
+
if (days > 0)
|
|
58
|
+
parts.push(`${days} day${days > 1 ? 's' : ''}`);
|
|
59
|
+
if (hours > 0)
|
|
60
|
+
parts.push(`${hours} hour${hours > 1 ? 's' : ''}`);
|
|
61
|
+
if (mins > 0)
|
|
62
|
+
parts.push(`${mins} minute${mins > 1 ? 's' : ''}`);
|
|
63
|
+
return parts.join(' and ');
|
|
64
|
+
}
|
package/package.json
CHANGED
|
@@ -66,7 +66,8 @@ export interface Visit {
|
|
|
66
66
|
year_YY?: string; //
|
|
67
67
|
year_YYYY?: string; //
|
|
68
68
|
time?: string; //
|
|
69
|
-
timezone?: string; //
|
|
69
|
+
timezone?: string; // in 'America/Los_Angeles' format
|
|
70
|
+
timezone_z?: string; // in "PDT" format
|
|
70
71
|
duration_desc?: string; //
|
|
71
72
|
}
|
|
72
73
|
|
|
@@ -15,6 +15,7 @@ export function appointmentToVisit(apt: Appointment): Visit {
|
|
|
15
15
|
|
|
16
16
|
const duration = (apt.Pattern?.length || 0) * 5;
|
|
17
17
|
const location = 'NF6YVFAXyRVXGi5nItqV';
|
|
18
|
+
const display_ProvNum = apt.IsHygiene ? apt.ProvHyg : apt.ProvNum;
|
|
18
19
|
|
|
19
20
|
return {
|
|
20
21
|
docRef: `/patients/${apt.PatNum}/patientVisits/${apt.AptNum}`,
|
|
@@ -24,10 +25,10 @@ export function appointmentToVisit(apt: Appointment): Visit {
|
|
|
24
25
|
IsNewPatient: apt.IsNewPatient == 'true',
|
|
25
26
|
appendix: {
|
|
26
27
|
duration: duration,
|
|
27
|
-
ProvNum:
|
|
28
|
-
ProviderDocRef: `/providers/${
|
|
29
|
-
VisitTypeDocRef: `/lookups/lookup_definitions/lookup_visitType/${apt.AppointmentTypeNum}
|
|
30
|
-
OpDocRef: `/locations/${location}/locationOperatories/${apt.Op}
|
|
28
|
+
ProvNum: display_ProvNum,
|
|
29
|
+
ProviderDocRef: display_ProvNum != 0 ? `/providers/${display_ProvNum}` : undefined,
|
|
30
|
+
VisitTypeDocRef: apt.AppointmentTypeNum != 0 ? `/lookups/lookup_definitions/lookup_visitType/${apt.AppointmentTypeNum}` : undefined,
|
|
31
|
+
OpDocRef: apt.Op != 0 ? `/locations/${location}/locationOperatories/${apt.Op}` : undefined,
|
|
31
32
|
date: moment_aptDateTime.format('YYYY-MM-DD'),
|
|
32
33
|
dateTime: moment_aptDateTime.format(),
|
|
33
34
|
firestoreTimestamp: firestoreTimestamp,
|
|
@@ -41,8 +42,22 @@ export function appointmentToVisit(apt: Appointment): Visit {
|
|
|
41
42
|
year_YYYY: moment_aptDateTime.format('YYYY'),
|
|
42
43
|
time: moment_aptDateTime.format('h:mm A'),
|
|
43
44
|
timezone: moment_aptDateTime.tz(),
|
|
44
|
-
|
|
45
|
+
timezone_z: moment_aptDateTime.format('z'),
|
|
46
|
+
duration_desc: formatMinutes(duration),
|
|
45
47
|
},
|
|
46
48
|
},
|
|
47
49
|
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function formatMinutes(minutes: number): string {
|
|
53
|
+
const days = Math.floor(minutes / (24 * 60)); // Calculate whole days
|
|
54
|
+
const hours = Math.floor((minutes % (24 * 60)) / 60); // Remaining hours
|
|
55
|
+
const mins = minutes % 60; // Remaining minutes
|
|
56
|
+
|
|
57
|
+
const parts = [];
|
|
58
|
+
if (days > 0) parts.push(`${days} day${days > 1 ? 's' : ''}`);
|
|
59
|
+
if (hours > 0) parts.push(`${hours} hour${hours > 1 ? 's' : ''}`);
|
|
60
|
+
if (mins > 0) parts.push(`${mins} minute${mins > 1 ? 's' : ''}`);
|
|
61
|
+
|
|
62
|
+
return parts.join(' and ');
|
|
48
63
|
}
|