UNPKG

@schedule-tribe/procedure

Version:

This package provides TypeScript type definitions for handling Procedure in Domain-Driven Design contexts

85 lines (84 loc) 3.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Procedure = exports.ProcedureType = void 0; const rich_domain_1 = require("rich-domain"); var ProcedureType; (function (ProcedureType) { ProcedureType["Consulta"] = "Consulta"; ProcedureType["Cirurgia"] = "Cirurgia"; ProcedureType["Retorno"] = "Retorno"; ProcedureType["ExameDeSangue"] = "Exame de Sangue"; ProcedureType["ImagemMedica"] = "Imagem M\u00E9dica"; ProcedureType["Eletrocardiograma"] = "Eletrocardiograma (ECG)"; ProcedureType["Fisioterapia"] = "Fisioterapia"; ProcedureType["TerapiaOcupacional"] = "Terapia Ocupacional"; ProcedureType["Psicoterapia"] = "Psicoterapia"; ProcedureType["Vacinacao"] = "Vacina\u00E7\u00E3o"; ProcedureType["CheckupAnual"] = "Check-up Anual"; ProcedureType["LimpezaDental"] = "Limpeza Dental"; ProcedureType["ExtracaoDentaria"] = "Extra\u00E7\u00E3o Dent\u00E1ria"; ProcedureType["ProcedimentosRestauradores"] = "Procedimentos Restauradores"; ProcedureType["ExameGinecologico"] = "Exame Ginecol\u00F3gico"; ProcedureType["CuidadosPreNatal"] = "Cuidados Pr\u00E9-natais"; ProcedureType["ProcedimentosUrologicos"] = "Procedimentos Urol\u00F3gicos"; })(ProcedureType || (exports.ProcedureType = ProcedureType = {})); class Procedure extends rich_domain_1.Entity { constructor(value) { super(value); } /** * @description return a procedimento médico value. * @example example "Consulta". */ value() { return this.props; } /** * @param procedimento value as TipoProcedimento * @returns true if procedimento matches with predefined enum and false if not. * @example param "Consulta" * @example param "Cirurgia" */ static isValidProps(value) { return Object.values(ProcedureType).includes(value); } /** * @description check if procedimento value is valid. * @param value procedimento as TipoProcedimento * @returns true if value is valid and false if not. * @example "Consulta" * @example "Cirurgia" */ static isValid(value) { return this.isValidProps(value); } /** * * @param value value as TipoProcedimento * @returns instance of Procedure or throw an error */ static init(value) { const isValidValue = Procedure.isValidProps(value.type); if (!isValidValue) throw new Error(Procedure.MESSAGE); return new Procedure(value); } /** * @description create a procedimento médico value object * @param value procedimento as TipoProcedimento * @returns instance of Result with procedimento value * @example "Consulta" * @example "Cirurgia" * @summary fails if provide an invalid procedimento médico */ static create(value) { const isValidValue = Procedure.isValidProps(value.type); if (!isValidValue) { return rich_domain_1.Result.fail(Procedure.MESSAGE); } return rich_domain_1.Result.Ok(new Procedure(value)); } } exports.Procedure = Procedure; Procedure.MESSAGE = 'Invalid value for procedimento médico'; exports.default = Procedure;