tychat-contracts 1.0.20 → 1.0.23

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.
Files changed (49) hide show
  1. package/dist/appointments/available-slots-query.dto.d.ts +5 -0
  2. package/dist/appointments/available-slots-query.dto.d.ts.map +1 -0
  3. package/dist/appointments/available-slots-query.dto.js +41 -0
  4. package/dist/appointments/available-slots-response.dto.d.ts +12 -0
  5. package/dist/appointments/available-slots-response.dto.d.ts.map +1 -0
  6. package/dist/appointments/available-slots-response.dto.js +74 -0
  7. package/dist/appointments/index.d.ts +2 -0
  8. package/dist/appointments/index.d.ts.map +1 -1
  9. package/dist/appointments/index.js +2 -0
  10. package/dist/index.d.ts +2 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -0
  13. package/dist/procedures/create-procedure.dto.d.ts +1 -0
  14. package/dist/procedures/create-procedure.dto.d.ts.map +1 -1
  15. package/dist/procedures/create-procedure.dto.js +10 -0
  16. package/dist/professionals/find-professionals-by-specialty-or-procedures.dto.d.ts +5 -0
  17. package/dist/professionals/find-professionals-by-specialty-or-procedures.dto.d.ts.map +1 -0
  18. package/dist/professionals/find-professionals-by-specialty-or-procedures.dto.js +41 -0
  19. package/dist/professionals/index.d.ts +3 -0
  20. package/dist/professionals/index.d.ts.map +1 -0
  21. package/dist/professionals/index.js +18 -0
  22. package/dist/professionals/professional-profile.dto.d.ts +13 -0
  23. package/dist/professionals/professional-profile.dto.d.ts.map +1 -0
  24. package/dist/professionals/professional-profile.dto.js +97 -0
  25. package/dist/specialties/create-specialty.dto.d.ts +4 -0
  26. package/dist/specialties/create-specialty.dto.d.ts.map +1 -0
  27. package/dist/specialties/create-specialty.dto.js +29 -0
  28. package/dist/specialties/index.d.ts +4 -0
  29. package/dist/specialties/index.d.ts.map +1 -0
  30. package/dist/specialties/index.js +19 -0
  31. package/dist/specialties/specialty.dto.d.ts +5 -0
  32. package/dist/specialties/specialty.dto.d.ts.map +1 -0
  33. package/dist/specialties/specialty.dto.js +39 -0
  34. package/dist/specialties/update-specialty.dto.d.ts +6 -0
  35. package/dist/specialties/update-specialty.dto.d.ts.map +1 -0
  36. package/dist/specialties/update-specialty.dto.js +8 -0
  37. package/package.json +1 -1
  38. package/src/appointments/available-slots-query.dto.ts +32 -0
  39. package/src/appointments/available-slots-response.dto.ts +57 -0
  40. package/src/appointments/index.ts +2 -0
  41. package/src/index.ts +2 -0
  42. package/src/procedures/create-procedure.dto.ts +9 -0
  43. package/src/professionals/find-professionals-by-specialty-or-procedures.dto.ts +30 -0
  44. package/src/professionals/index.ts +3 -0
  45. package/src/professionals/professional-profile.dto.ts +80 -0
  46. package/src/specialties/create-specialty.dto.ts +15 -0
  47. package/src/specialties/index.ts +4 -0
  48. package/src/specialties/specialty.dto.ts +23 -0
  49. package/src/specialties/update-specialty.dto.ts +5 -0
@@ -0,0 +1,5 @@
1
+ export declare class AvailableSlotsQueryDto {
2
+ procedureIds: string[];
3
+ userId?: string;
4
+ }
5
+ //# sourceMappingURL=available-slots-query.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"available-slots-query.dto.d.ts","sourceRoot":"","sources":["../../src/appointments/available-slots-query.dto.ts"],"names":[],"mappings":"AAQA,qBAAa,sBAAsB;IAYjC,YAAY,EAAE,MAAM,EAAE,CAAC;IASvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AvailableSlotsQueryDto = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ class AvailableSlotsQueryDto {
16
+ procedureIds;
17
+ userId;
18
+ }
19
+ exports.AvailableSlotsQueryDto = AvailableSlotsQueryDto;
20
+ __decorate([
21
+ (0, swagger_1.ApiProperty)({
22
+ description: 'Lista de IDs de procedimentos (UUID v4) que o paciente irá realizar',
23
+ example: [
24
+ '550e8400-e29b-41d4-a716-446655440010',
25
+ '550e8400-e29b-41d4-a716-446655440011',
26
+ ],
27
+ }),
28
+ (0, class_validator_1.IsArray)(),
29
+ (0, class_validator_1.ArrayNotEmpty)(),
30
+ (0, class_validator_1.IsUUID)('4', { each: true }),
31
+ __metadata("design:type", Array)
32
+ ], AvailableSlotsQueryDto.prototype, "procedureIds", void 0);
33
+ __decorate([
34
+ (0, swagger_1.ApiPropertyOptional)({
35
+ description: 'ID do profissional de saúde (UUID v4). Quando informado, os horários serão calculados apenas para este profissional.',
36
+ example: '550e8400-e29b-41d4-a716-446655440001',
37
+ }),
38
+ (0, class_validator_1.IsOptional)(),
39
+ (0, class_validator_1.IsUUID)('4'),
40
+ __metadata("design:type", String)
41
+ ], AvailableSlotsQueryDto.prototype, "userId", void 0);
@@ -0,0 +1,12 @@
1
+ export declare class AvailableDaySlotsDto {
2
+ date: string;
3
+ slots: string[];
4
+ }
5
+ export declare class AvailableMonthSlotsDto {
6
+ month: string;
7
+ days: AvailableDaySlotsDto[];
8
+ }
9
+ export declare class AvailableSlotsResponseDto {
10
+ months: AvailableMonthSlotsDto[];
11
+ }
12
+ //# sourceMappingURL=available-slots-response.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"available-slots-response.dto.d.ts","sourceRoot":"","sources":["../../src/appointments/available-slots-response.dto.ts"],"names":[],"mappings":"AAQA,qBAAa,oBAAoB;IAQ/B,IAAI,EAAE,MAAM,CAAC;IAUb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,qBAAa,sBAAsB;IAQjC,KAAK,EAAE,MAAM,CAAC;IAOd,IAAI,EAAE,oBAAoB,EAAE,CAAC;CAC9B;AAED,qBAAa,yBAAyB;IAOpC,MAAM,EAAE,sBAAsB,EAAE,CAAC;CAClC"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AvailableSlotsResponseDto = exports.AvailableMonthSlotsDto = exports.AvailableDaySlotsDto = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ class AvailableDaySlotsDto {
16
+ date;
17
+ slots;
18
+ }
19
+ exports.AvailableDaySlotsDto = AvailableDaySlotsDto;
20
+ __decorate([
21
+ (0, swagger_1.ApiProperty)({
22
+ description: 'Data do dia disponível para agendamentos (formato YYYY-MM-DD)',
23
+ example: '2026-03-10',
24
+ }),
25
+ (0, class_validator_1.IsString)(),
26
+ (0, class_validator_1.IsNotEmpty)(),
27
+ (0, class_validator_1.Matches)(/^\d{4}-\d{2}-\d{2}$/),
28
+ __metadata("design:type", String)
29
+ ], AvailableDaySlotsDto.prototype, "date", void 0);
30
+ __decorate([
31
+ (0, swagger_1.ApiProperty)({
32
+ description: 'Lista de horários disponíveis para agendamento no dia (formato HH:mm)',
33
+ example: ['08:00', '08:30', '09:00'],
34
+ }),
35
+ (0, class_validator_1.IsArray)(),
36
+ (0, class_validator_1.IsString)({ each: true }),
37
+ (0, class_validator_1.Matches)(/^\d{2}:\d{2}$/, { each: true }),
38
+ __metadata("design:type", Array)
39
+ ], AvailableDaySlotsDto.prototype, "slots", void 0);
40
+ class AvailableMonthSlotsDto {
41
+ month;
42
+ days;
43
+ }
44
+ exports.AvailableMonthSlotsDto = AvailableMonthSlotsDto;
45
+ __decorate([
46
+ (0, swagger_1.ApiProperty)({
47
+ description: 'Mês de referência (formato YYYY-MM)',
48
+ example: '2026-03',
49
+ }),
50
+ (0, class_validator_1.IsString)(),
51
+ (0, class_validator_1.IsNotEmpty)(),
52
+ (0, class_validator_1.Matches)(/^\d{4}-\d{2}$/),
53
+ __metadata("design:type", String)
54
+ ], AvailableMonthSlotsDto.prototype, "month", void 0);
55
+ __decorate([
56
+ (0, swagger_1.ApiProperty)({
57
+ description: 'Dias e horários disponíveis dentro do mês',
58
+ type: [AvailableDaySlotsDto],
59
+ }),
60
+ (0, class_validator_1.IsArray)(),
61
+ __metadata("design:type", Array)
62
+ ], AvailableMonthSlotsDto.prototype, "days", void 0);
63
+ class AvailableSlotsResponseDto {
64
+ months;
65
+ }
66
+ exports.AvailableSlotsResponseDto = AvailableSlotsResponseDto;
67
+ __decorate([
68
+ (0, swagger_1.ApiProperty)({
69
+ description: 'Meses, dias e horários disponíveis para agendamentos nos próximos três meses',
70
+ type: [AvailableMonthSlotsDto],
71
+ }),
72
+ (0, class_validator_1.IsArray)(),
73
+ __metadata("design:type", Array)
74
+ ], AvailableSlotsResponseDto.prototype, "months", void 0);
@@ -1,4 +1,6 @@
1
1
  export * from './create-appointment.dto';
2
2
  export * from './update-appointment.dto';
3
3
  export * from './list-appointments-query.dto';
4
+ export * from './available-slots-query.dto';
5
+ export * from './available-slots-response.dto';
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/appointments/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/appointments/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC"}
@@ -17,3 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./create-appointment.dto"), exports);
18
18
  __exportStar(require("./update-appointment.dto"), exports);
19
19
  __exportStar(require("./list-appointments-query.dto"), exports);
20
+ __exportStar(require("./available-slots-query.dto"), exports);
21
+ __exportStar(require("./available-slots-response.dto"), exports);
package/dist/index.d.ts CHANGED
@@ -4,4 +4,6 @@ export * from './users';
4
4
  export * from './patients';
5
5
  export * from './procedures';
6
6
  export * from './configurations';
7
+ export * from './specialties';
8
+ export * from './professionals';
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -20,3 +20,5 @@ __exportStar(require("./users"), exports);
20
20
  __exportStar(require("./patients"), exports);
21
21
  __exportStar(require("./procedures"), exports);
22
22
  __exportStar(require("./configurations"), exports);
23
+ __exportStar(require("./specialties"), exports);
24
+ __exportStar(require("./professionals"), exports);
@@ -3,5 +3,6 @@ export declare class CreateProcedureDto {
3
3
  value: number;
4
4
  duration: number;
5
5
  side_effects?: string | null;
6
+ specialtyId: string;
6
7
  }
7
8
  //# sourceMappingURL=create-procedure.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-procedure.dto.d.ts","sourceRoot":"","sources":["../../src/procedures/create-procedure.dto.ts"],"names":[],"mappings":"AAUA,qBAAa,kBAAkB;IAS7B,IAAI,EAAE,MAAM,CAAC;IAQb,KAAK,EAAE,MAAM,CAAC;IAQd,QAAQ,EAAE,MAAM,CAAC;IAUjB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B"}
1
+ {"version":3,"file":"create-procedure.dto.d.ts","sourceRoot":"","sources":["../../src/procedures/create-procedure.dto.ts"],"names":[],"mappings":"AAWA,qBAAa,kBAAkB;IAS7B,IAAI,EAAE,MAAM,CAAC;IAQb,KAAK,EAAE,MAAM,CAAC;IAQd,QAAQ,EAAE,MAAM,CAAC;IAUjB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAQ7B,WAAW,EAAE,MAAM,CAAC;CACrB"}
@@ -17,6 +17,7 @@ class CreateProcedureDto {
17
17
  value;
18
18
  duration;
19
19
  side_effects;
20
+ specialtyId;
20
21
  }
21
22
  exports.CreateProcedureDto = CreateProcedureDto;
22
23
  __decorate([
@@ -59,3 +60,12 @@ __decorate([
59
60
  (0, class_validator_1.MaxLength)(5000),
60
61
  __metadata("design:type", Object)
61
62
  ], CreateProcedureDto.prototype, "side_effects", void 0);
63
+ __decorate([
64
+ (0, swagger_1.ApiProperty)({
65
+ description: 'ID da especialidade do procedimento (UUID v4)',
66
+ example: '550e8400-e29b-41d4-a716-446655440000',
67
+ }),
68
+ (0, class_validator_1.IsUUID)('4'),
69
+ (0, class_validator_1.IsNotEmpty)(),
70
+ __metadata("design:type", String)
71
+ ], CreateProcedureDto.prototype, "specialtyId", void 0);
@@ -0,0 +1,5 @@
1
+ export declare class FindProfessionalsBySpecialtyOrProceduresDto {
2
+ specialtyId?: string;
3
+ procedureIds?: string[];
4
+ }
5
+ //# sourceMappingURL=find-professionals-by-specialty-or-procedures.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-professionals-by-specialty-or-procedures.dto.d.ts","sourceRoot":"","sources":["../../src/professionals/find-professionals-by-specialty-or-procedures.dto.ts"],"names":[],"mappings":"AAOA,qBAAa,2CAA2C;IAOtD,WAAW,CAAC,EAAE,MAAM,CAAC;IAarB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.FindProfessionalsBySpecialtyOrProceduresDto = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ class FindProfessionalsBySpecialtyOrProceduresDto {
16
+ specialtyId;
17
+ procedureIds;
18
+ }
19
+ exports.FindProfessionalsBySpecialtyOrProceduresDto = FindProfessionalsBySpecialtyOrProceduresDto;
20
+ __decorate([
21
+ (0, swagger_1.ApiPropertyOptional)({
22
+ description: 'ID da especialidade (UUID v4) para filtrar profissionais',
23
+ example: '550e8400-e29b-41d4-a716-446655440000',
24
+ }),
25
+ (0, class_validator_1.IsOptional)(),
26
+ (0, class_validator_1.IsUUID)('4'),
27
+ __metadata("design:type", String)
28
+ ], FindProfessionalsBySpecialtyOrProceduresDto.prototype, "specialtyId", void 0);
29
+ __decorate([
30
+ (0, swagger_1.ApiPropertyOptional)({
31
+ description: 'Lista de IDs de procedimentos (UUID v4) para filtrar profissionais que realizam pelo menos um deles',
32
+ example: [
33
+ '550e8400-e29b-41d4-a716-446655440010',
34
+ '550e8400-e29b-41d4-a716-446655440011',
35
+ ],
36
+ }),
37
+ (0, class_validator_1.IsOptional)(),
38
+ (0, class_validator_1.IsArray)(),
39
+ (0, class_validator_1.IsUUID)('4', { each: true }),
40
+ __metadata("design:type", Array)
41
+ ], FindProfessionalsBySpecialtyOrProceduresDto.prototype, "procedureIds", void 0);
@@ -0,0 +1,3 @@
1
+ export * from './professional-profile.dto';
2
+ export * from './find-professionals-by-specialty-or-procedures.dto';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/professionals/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qDAAqD,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./professional-profile.dto"), exports);
18
+ __exportStar(require("./find-professionals-by-specialty-or-procedures.dto"), exports);
@@ -0,0 +1,13 @@
1
+ import { OpeningHoursSlotDto } from '../configurations';
2
+ export declare class ProfessionalProfileDto {
3
+ userId: string;
4
+ specialtyId: string;
5
+ procedureIds: string[];
6
+ workingHours?: OpeningHoursSlotDto[];
7
+ }
8
+ export declare class UpdateProfessionalProfileDto {
9
+ specialtyId?: string;
10
+ procedureIds?: string[];
11
+ workingHours?: OpeningHoursSlotDto[];
12
+ }
13
+ //# sourceMappingURL=professional-profile.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"professional-profile.dto.d.ts","sourceRoot":"","sources":["../../src/professionals/professional-profile.dto.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,qBAAa,sBAAsB;IAMjC,MAAM,EAAE,MAAM,CAAC;IAOf,WAAW,EAAE,MAAM,CAAC;IAapB,YAAY,EAAE,MAAM,EAAE,CAAC;IASvB,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACtC;AAED,qBAAa,4BAA4B;IAOvC,WAAW,CAAC,EAAE,MAAM,CAAC;IAarB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IASxB,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACtC"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UpdateProfessionalProfileDto = exports.ProfessionalProfileDto = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ const configurations_1 = require("../configurations");
16
+ class ProfessionalProfileDto {
17
+ userId;
18
+ specialtyId;
19
+ procedureIds;
20
+ workingHours;
21
+ }
22
+ exports.ProfessionalProfileDto = ProfessionalProfileDto;
23
+ __decorate([
24
+ (0, swagger_1.ApiProperty)({
25
+ description: 'ID do profissional de saúde (userId do auth-service, UUID v4)',
26
+ example: '550e8400-e29b-41d4-a716-446655440001',
27
+ }),
28
+ (0, class_validator_1.IsUUID)('4'),
29
+ __metadata("design:type", String)
30
+ ], ProfessionalProfileDto.prototype, "userId", void 0);
31
+ __decorate([
32
+ (0, swagger_1.ApiProperty)({
33
+ description: 'ID da especialidade do profissional (UUID v4)',
34
+ example: '550e8400-e29b-41d4-a716-446655440000',
35
+ }),
36
+ (0, class_validator_1.IsUUID)('4'),
37
+ __metadata("design:type", String)
38
+ ], ProfessionalProfileDto.prototype, "specialtyId", void 0);
39
+ __decorate([
40
+ (0, swagger_1.ApiProperty)({
41
+ description: 'IDs dos procedimentos (UUID v4) daquela especialidade que o profissional realiza',
42
+ example: [
43
+ '550e8400-e29b-41d4-a716-446655440010',
44
+ '550e8400-e29b-41d4-a716-446655440011',
45
+ ],
46
+ }),
47
+ (0, class_validator_1.IsArray)(),
48
+ (0, class_validator_1.ArrayNotEmpty)(),
49
+ (0, class_validator_1.IsUUID)('4', { each: true }),
50
+ __metadata("design:type", Array)
51
+ ], ProfessionalProfileDto.prototype, "procedureIds", void 0);
52
+ __decorate([
53
+ (0, swagger_1.ApiPropertyOptional)({
54
+ description: 'Horário de trabalho do profissional por dia da semana (0=domingo..6=sábado)',
55
+ type: [configurations_1.OpeningHoursSlotDto],
56
+ }),
57
+ (0, class_validator_1.IsOptional)(),
58
+ (0, class_validator_1.IsArray)(),
59
+ __metadata("design:type", Array)
60
+ ], ProfessionalProfileDto.prototype, "workingHours", void 0);
61
+ class UpdateProfessionalProfileDto {
62
+ specialtyId;
63
+ procedureIds;
64
+ workingHours;
65
+ }
66
+ exports.UpdateProfessionalProfileDto = UpdateProfessionalProfileDto;
67
+ __decorate([
68
+ (0, swagger_1.ApiPropertyOptional)({
69
+ description: 'ID da especialidade do profissional (UUID v4)',
70
+ example: '550e8400-e29b-41d4-a716-446655440000',
71
+ }),
72
+ (0, class_validator_1.IsOptional)(),
73
+ (0, class_validator_1.IsUUID)('4'),
74
+ __metadata("design:type", String)
75
+ ], UpdateProfessionalProfileDto.prototype, "specialtyId", void 0);
76
+ __decorate([
77
+ (0, swagger_1.ApiPropertyOptional)({
78
+ description: 'IDs dos procedimentos (UUID v4) daquela especialidade que o profissional realiza',
79
+ example: [
80
+ '550e8400-e29b-41d4-a716-446655440010',
81
+ '550e8400-e29b-41d4-a716-446655440011',
82
+ ],
83
+ }),
84
+ (0, class_validator_1.IsOptional)(),
85
+ (0, class_validator_1.IsArray)(),
86
+ (0, class_validator_1.IsUUID)('4', { each: true }),
87
+ __metadata("design:type", Array)
88
+ ], UpdateProfessionalProfileDto.prototype, "procedureIds", void 0);
89
+ __decorate([
90
+ (0, swagger_1.ApiPropertyOptional)({
91
+ description: 'Horário de trabalho do profissional por dia da semana (0=domingo..6=sábado)',
92
+ type: [configurations_1.OpeningHoursSlotDto],
93
+ }),
94
+ (0, class_validator_1.IsOptional)(),
95
+ (0, class_validator_1.IsArray)(),
96
+ __metadata("design:type", Array)
97
+ ], UpdateProfessionalProfileDto.prototype, "workingHours", void 0);
@@ -0,0 +1,4 @@
1
+ export declare class CreateSpecialtyDto {
2
+ name: string;
3
+ }
4
+ //# sourceMappingURL=create-specialty.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-specialty.dto.d.ts","sourceRoot":"","sources":["../../src/specialties/create-specialty.dto.ts"],"names":[],"mappings":"AAGA,qBAAa,kBAAkB;IAS7B,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CreateSpecialtyDto = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ class CreateSpecialtyDto {
16
+ name;
17
+ }
18
+ exports.CreateSpecialtyDto = CreateSpecialtyDto;
19
+ __decorate([
20
+ (0, swagger_1.ApiProperty)({
21
+ description: 'Nome da especialidade',
22
+ example: 'Cardiologia',
23
+ maxLength: 255,
24
+ }),
25
+ (0, class_validator_1.IsString)(),
26
+ (0, class_validator_1.IsNotEmpty)(),
27
+ (0, class_validator_1.MaxLength)(255),
28
+ __metadata("design:type", String)
29
+ ], CreateSpecialtyDto.prototype, "name", void 0);
@@ -0,0 +1,4 @@
1
+ export * from './specialty.dto';
2
+ export * from './create-specialty.dto';
3
+ export * from './update-specialty.dto';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/specialties/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./specialty.dto"), exports);
18
+ __exportStar(require("./create-specialty.dto"), exports);
19
+ __exportStar(require("./update-specialty.dto"), exports);
@@ -0,0 +1,5 @@
1
+ export declare class SpecialtyDto {
2
+ id: string;
3
+ name: string;
4
+ }
5
+ //# sourceMappingURL=specialty.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specialty.dto.d.ts","sourceRoot":"","sources":["../../src/specialties/specialty.dto.ts"],"names":[],"mappings":"AAGA,qBAAa,YAAY;IAOvB,EAAE,EAAE,MAAM,CAAC;IAUX,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SpecialtyDto = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ class SpecialtyDto {
16
+ id;
17
+ name;
18
+ }
19
+ exports.SpecialtyDto = SpecialtyDto;
20
+ __decorate([
21
+ (0, swagger_1.ApiProperty)({
22
+ description: 'ID da especialidade (UUID v4)',
23
+ example: '550e8400-e29b-41d4-a716-446655440000',
24
+ }),
25
+ (0, class_validator_1.IsString)(),
26
+ (0, class_validator_1.IsNotEmpty)(),
27
+ __metadata("design:type", String)
28
+ ], SpecialtyDto.prototype, "id", void 0);
29
+ __decorate([
30
+ (0, swagger_1.ApiProperty)({
31
+ description: 'Nome da especialidade',
32
+ example: 'Cardiologia',
33
+ maxLength: 255,
34
+ }),
35
+ (0, class_validator_1.IsString)(),
36
+ (0, class_validator_1.IsNotEmpty)(),
37
+ (0, class_validator_1.MaxLength)(255),
38
+ __metadata("design:type", String)
39
+ ], SpecialtyDto.prototype, "name", void 0);
@@ -0,0 +1,6 @@
1
+ import { CreateSpecialtyDto } from './create-specialty.dto';
2
+ declare const UpdateSpecialtyDto_base: import("@nestjs/common").Type<Partial<CreateSpecialtyDto>>;
3
+ export declare class UpdateSpecialtyDto extends UpdateSpecialtyDto_base {
4
+ }
5
+ export {};
6
+ //# sourceMappingURL=update-specialty.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-specialty.dto.d.ts","sourceRoot":"","sources":["../../src/specialties/update-specialty.dto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;;AAE5D,qBAAa,kBAAmB,SAAQ,uBAA+B;CAAG"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateSpecialtyDto = void 0;
4
+ const swagger_1 = require("@nestjs/swagger");
5
+ const create_specialty_dto_1 = require("./create-specialty.dto");
6
+ class UpdateSpecialtyDto extends (0, swagger_1.PartialType)(create_specialty_dto_1.CreateSpecialtyDto) {
7
+ }
8
+ exports.UpdateSpecialtyDto = UpdateSpecialtyDto;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tychat-contracts",
3
- "version": "1.0.20",
3
+ "version": "1.0.23",
4
4
  "description": "DTOs compartilhados com class-validator (API e microserviços)",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -0,0 +1,32 @@
1
+ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
2
+ import {
3
+ ArrayNotEmpty,
4
+ IsArray,
5
+ IsOptional,
6
+ IsUUID,
7
+ } from 'class-validator';
8
+
9
+ export class AvailableSlotsQueryDto {
10
+ @ApiProperty({
11
+ description:
12
+ 'Lista de IDs de procedimentos (UUID v4) que o paciente irá realizar',
13
+ example: [
14
+ '550e8400-e29b-41d4-a716-446655440010',
15
+ '550e8400-e29b-41d4-a716-446655440011',
16
+ ],
17
+ })
18
+ @IsArray()
19
+ @ArrayNotEmpty()
20
+ @IsUUID('4', { each: true })
21
+ procedureIds: string[];
22
+
23
+ @ApiPropertyOptional({
24
+ description:
25
+ 'ID do profissional de saúde (UUID v4). Quando informado, os horários serão calculados apenas para este profissional.',
26
+ example: '550e8400-e29b-41d4-a716-446655440001',
27
+ })
28
+ @IsOptional()
29
+ @IsUUID('4')
30
+ userId?: string;
31
+ }
32
+
@@ -0,0 +1,57 @@
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import {
3
+ IsArray,
4
+ IsNotEmpty,
5
+ IsString,
6
+ Matches,
7
+ } from 'class-validator';
8
+
9
+ export class AvailableDaySlotsDto {
10
+ @ApiProperty({
11
+ description: 'Data do dia disponível para agendamentos (formato YYYY-MM-DD)',
12
+ example: '2026-03-10',
13
+ })
14
+ @IsString()
15
+ @IsNotEmpty()
16
+ @Matches(/^\d{4}-\d{2}-\d{2}$/)
17
+ date: string;
18
+
19
+ @ApiProperty({
20
+ description:
21
+ 'Lista de horários disponíveis para agendamento no dia (formato HH:mm)',
22
+ example: ['08:00', '08:30', '09:00'],
23
+ })
24
+ @IsArray()
25
+ @IsString({ each: true })
26
+ @Matches(/^\d{2}:\d{2}$/, { each: true })
27
+ slots: string[];
28
+ }
29
+
30
+ export class AvailableMonthSlotsDto {
31
+ @ApiProperty({
32
+ description: 'Mês de referência (formato YYYY-MM)',
33
+ example: '2026-03',
34
+ })
35
+ @IsString()
36
+ @IsNotEmpty()
37
+ @Matches(/^\d{4}-\d{2}$/)
38
+ month: string;
39
+
40
+ @ApiProperty({
41
+ description: 'Dias e horários disponíveis dentro do mês',
42
+ type: [AvailableDaySlotsDto],
43
+ })
44
+ @IsArray()
45
+ days: AvailableDaySlotsDto[];
46
+ }
47
+
48
+ export class AvailableSlotsResponseDto {
49
+ @ApiProperty({
50
+ description:
51
+ 'Meses, dias e horários disponíveis para agendamentos nos próximos três meses',
52
+ type: [AvailableMonthSlotsDto],
53
+ })
54
+ @IsArray()
55
+ months: AvailableMonthSlotsDto[];
56
+ }
57
+
@@ -1,3 +1,5 @@
1
1
  export * from './create-appointment.dto';
2
2
  export * from './update-appointment.dto';
3
3
  export * from './list-appointments-query.dto';
4
+ export * from './available-slots-query.dto';
5
+ export * from './available-slots-response.dto';
package/src/index.ts CHANGED
@@ -4,3 +4,5 @@ export * from './users';
4
4
  export * from './patients';
5
5
  export * from './procedures';
6
6
  export * from './configurations';
7
+ export * from './specialties';
8
+ export * from './professionals';
@@ -4,6 +4,7 @@ import {
4
4
  IsNumber,
5
5
  IsOptional,
6
6
  IsString,
7
+ IsUUID,
7
8
  MaxLength,
8
9
  Min,
9
10
  } from 'class-validator';
@@ -44,4 +45,12 @@ export class CreateProcedureDto {
44
45
  @IsOptional()
45
46
  @MaxLength(5000)
46
47
  side_effects?: string | null;
48
+
49
+ @ApiProperty({
50
+ description: 'ID da especialidade do procedimento (UUID v4)',
51
+ example: '550e8400-e29b-41d4-a716-446655440000',
52
+ })
53
+ @IsUUID('4')
54
+ @IsNotEmpty()
55
+ specialtyId: string;
47
56
  }
@@ -0,0 +1,30 @@
1
+ import { ApiPropertyOptional } from '@nestjs/swagger';
2
+ import {
3
+ IsArray,
4
+ IsOptional,
5
+ IsUUID,
6
+ } from 'class-validator';
7
+
8
+ export class FindProfessionalsBySpecialtyOrProceduresDto {
9
+ @ApiPropertyOptional({
10
+ description: 'ID da especialidade (UUID v4) para filtrar profissionais',
11
+ example: '550e8400-e29b-41d4-a716-446655440000',
12
+ })
13
+ @IsOptional()
14
+ @IsUUID('4')
15
+ specialtyId?: string;
16
+
17
+ @ApiPropertyOptional({
18
+ description:
19
+ 'Lista de IDs de procedimentos (UUID v4) para filtrar profissionais que realizam pelo menos um deles',
20
+ example: [
21
+ '550e8400-e29b-41d4-a716-446655440010',
22
+ '550e8400-e29b-41d4-a716-446655440011',
23
+ ],
24
+ })
25
+ @IsOptional()
26
+ @IsArray()
27
+ @IsUUID('4', { each: true })
28
+ procedureIds?: string[];
29
+ }
30
+
@@ -0,0 +1,3 @@
1
+ export * from './professional-profile.dto';
2
+ export * from './find-professionals-by-specialty-or-procedures.dto';
3
+
@@ -0,0 +1,80 @@
1
+ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
2
+ import {
3
+ ArrayNotEmpty,
4
+ IsArray,
5
+ IsOptional,
6
+ IsString,
7
+ IsUUID,
8
+ } from 'class-validator';
9
+ import { OpeningHoursSlotDto } from '../configurations';
10
+
11
+ export class ProfessionalProfileDto {
12
+ @ApiProperty({
13
+ description: 'ID do profissional de saúde (userId do auth-service, UUID v4)',
14
+ example: '550e8400-e29b-41d4-a716-446655440001',
15
+ })
16
+ @IsUUID('4')
17
+ userId: string;
18
+
19
+ @ApiProperty({
20
+ description: 'ID da especialidade do profissional (UUID v4)',
21
+ example: '550e8400-e29b-41d4-a716-446655440000',
22
+ })
23
+ @IsUUID('4')
24
+ specialtyId: string;
25
+
26
+ @ApiProperty({
27
+ description:
28
+ 'IDs dos procedimentos (UUID v4) daquela especialidade que o profissional realiza',
29
+ example: [
30
+ '550e8400-e29b-41d4-a716-446655440010',
31
+ '550e8400-e29b-41d4-a716-446655440011',
32
+ ],
33
+ })
34
+ @IsArray()
35
+ @ArrayNotEmpty()
36
+ @IsUUID('4', { each: true })
37
+ procedureIds: string[];
38
+
39
+ @ApiPropertyOptional({
40
+ description:
41
+ 'Horário de trabalho do profissional por dia da semana (0=domingo..6=sábado)',
42
+ type: [OpeningHoursSlotDto],
43
+ })
44
+ @IsOptional()
45
+ @IsArray()
46
+ workingHours?: OpeningHoursSlotDto[];
47
+ }
48
+
49
+ export class UpdateProfessionalProfileDto {
50
+ @ApiPropertyOptional({
51
+ description: 'ID da especialidade do profissional (UUID v4)',
52
+ example: '550e8400-e29b-41d4-a716-446655440000',
53
+ })
54
+ @IsOptional()
55
+ @IsUUID('4')
56
+ specialtyId?: string;
57
+
58
+ @ApiPropertyOptional({
59
+ description:
60
+ 'IDs dos procedimentos (UUID v4) daquela especialidade que o profissional realiza',
61
+ example: [
62
+ '550e8400-e29b-41d4-a716-446655440010',
63
+ '550e8400-e29b-41d4-a716-446655440011',
64
+ ],
65
+ })
66
+ @IsOptional()
67
+ @IsArray()
68
+ @IsUUID('4', { each: true })
69
+ procedureIds?: string[];
70
+
71
+ @ApiPropertyOptional({
72
+ description:
73
+ 'Horário de trabalho do profissional por dia da semana (0=domingo..6=sábado)',
74
+ type: [OpeningHoursSlotDto],
75
+ })
76
+ @IsOptional()
77
+ @IsArray()
78
+ workingHours?: OpeningHoursSlotDto[];
79
+ }
80
+
@@ -0,0 +1,15 @@
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import { IsNotEmpty, IsString, MaxLength } from 'class-validator';
3
+
4
+ export class CreateSpecialtyDto {
5
+ @ApiProperty({
6
+ description: 'Nome da especialidade',
7
+ example: 'Cardiologia',
8
+ maxLength: 255,
9
+ })
10
+ @IsString()
11
+ @IsNotEmpty()
12
+ @MaxLength(255)
13
+ name: string;
14
+ }
15
+
@@ -0,0 +1,4 @@
1
+ export * from './specialty.dto';
2
+ export * from './create-specialty.dto';
3
+ export * from './update-specialty.dto';
4
+
@@ -0,0 +1,23 @@
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import { IsNotEmpty, IsString, MaxLength } from 'class-validator';
3
+
4
+ export class SpecialtyDto {
5
+ @ApiProperty({
6
+ description: 'ID da especialidade (UUID v4)',
7
+ example: '550e8400-e29b-41d4-a716-446655440000',
8
+ })
9
+ @IsString()
10
+ @IsNotEmpty()
11
+ id: string;
12
+
13
+ @ApiProperty({
14
+ description: 'Nome da especialidade',
15
+ example: 'Cardiologia',
16
+ maxLength: 255,
17
+ })
18
+ @IsString()
19
+ @IsNotEmpty()
20
+ @MaxLength(255)
21
+ name: string;
22
+ }
23
+
@@ -0,0 +1,5 @@
1
+ import { PartialType } from '@nestjs/swagger';
2
+ import { CreateSpecialtyDto } from './create-specialty.dto';
3
+
4
+ export class UpdateSpecialtyDto extends PartialType(CreateSpecialtyDto) {}
5
+