keiro-dsl-0.15.0.0: test/fixtures/reservation-enumwire.keiro
language keiro-dsl 4
context hospital-capacity
id TransferReservationId prefix=rsv
id HospitalId prefix=hosp
id CommandId prefix=cmd
enum PatientAcuity { RedTag=crimson YellowTag=yellow GreenTag=green }
enum BedType { Icu=icu MedicalSurgical=medical-surgical }
enum DivertStatus { Open=open PartialDivert=partial-divert TotalDivert=total-divert }
rule lifeCriticalOverride : PatientAcuity -> Bool
ex RedTag => true ; YellowTag => false ; GreenTag => false
aggregate Reservation
regs
reservationId TransferReservationId = placeholder
hospitalId HospitalId = placeholder
patientAcuity PatientAcuity = GreenTag
states Unrequested Held Confirmed Expired! Admitted! Released!
command RequestTransferReservation { reservationId hospitalId commandId patientAcuity divertStatus lifeCriticalOverride:Bool }
command ConfirmReservation { reservationId hospitalId commandId }
event TransferReservationCreated = fields(RequestTransferReservation)
event TransferReservationConfirmed { reservationId hospitalId commandId }
Unrequested -- RequestTransferReservation -->
guard cmd.divertStatus != DivertStatus.TotalDivert || cmd.lifeCriticalOverride
emit TransferReservationCreated
goto Held
Held -- ConfirmReservation --> emit TransferReservationConfirmed ; goto Confirmed
wire kind=ctorName fields=camelCase schemaVersion=1
projection transfer_decisions key=reservationId
status-map { TransferReservationCreated=>held TransferReservationConfirmed=>confirmed }