@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
JavaScript
;
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;