@icure/cardinal-prescription-be-react
Version:
This is a Belgian-specific React application for healthcare professionals to manage electronic prescriptions with SAM. Created by iCure.
58 lines (49 loc) • 2.2 kB
text/typescript
import { PrescribedMedicationType } from '../types'
export const convertYyyyMmDdNumberToIsoDate = (dateNumber: number): string => {
const year = Math.floor(dateNumber / 10000)
const month = Math.floor((dateNumber % 10000) / 100)
.toString()
.padStart(2, '0')
const day = (dateNumber % 100).toString().padStart(2, '0')
return `${year}-${month}-${day}`
}
export const getTreatmentStartDate = (prescribedMedication?: PrescribedMedicationType): string => {
if (prescribedMedication?.medication.beginMoment) {
return convertYyyyMmDdNumberToIsoDate(prescribedMedication?.medication.beginMoment)
} else {
return new Date().toISOString().split('T')[0]
}
}
export const getExecutableUntilDate = (prescribedMedication?: PrescribedMedicationType): string => {
if (prescribedMedication?.medication.endMoment) {
return convertYyyyMmDdNumberToIsoDate(prescribedMedication.medication.endMoment)
} else {
const startDay = new Date()
const nextYear = new Date(startDay)
nextYear.setFullYear(startDay.getFullYear() + 1)
return nextYear.toISOString().split('T')[0]
}
}
// also known as formatToDayMonthYear
export const formatTimestamp = (timestamp?: number): string | undefined => {
if (!timestamp) {
return undefined
} else {
const date = new Date(timestamp)
const day = String(date.getDate()).padStart(2, '0')
const month = String(date.getMonth() + 1).padStart(2, '0') // Months are zero-based
const year = date.getFullYear()
return `${day}-${month}-${year}`
}
}
export function dateDecode(date: number): Date {
return date > 99990000 ? new Date(date / 10000000000, ((date / 100000000) % 100) - 1, (date / 1000000) % 100) : new Date(date / 10000, ((date / 100) % 100) - 1, date % 100)
}
export function dateEncode(date: Date): number {
return date.getFullYear() * 10000 + (date.getMonth() + 1) * 100 + date.getDate()
}
export function offsetDate(date: number, offsetInDays: number): number {
const result = new Date(dateDecode(date)) // Decode the date
result.setDate(result.getDate() + offsetInDays) // Add or subtract the offset in days
return dateEncode(result) // Encode it back to the required format
}