packages feed

keiro-dsl-0.15.0.0: test/fixtures/compatibility-vector-old.keiro

language keiro-dsl 4
context hospital-capacity

id  TransferReservationId  prefix=rsv
id  HospitalId             prefix=hosp
id  CommandId              prefix=cmd

enum PatientAcuity { RedTag=red YellowTag=yellow GreenTag=green }
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!

  command RequestTransferReservation { reservationId hospitalId commandId patientAcuity divertStatus lifeCriticalOverride:Bool }
  command ConfirmReservation         { reservationId hospitalId commandId }

  event TransferReservationCreated {
    reservationId hospitalId commandId
    patientAcuity:PatientAcuity
    divertStatus:DivertStatus
    lifeCriticalOverride:Bool
  }
  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 }

contract emergency {
  schemaVersion 1
  discriminator messageType
  topic incidentEvents "emergency.incident.events"

  event IncidentTransferNeedDeclared on incidentEvents {
    incidentId: typeid "inc"
    region: text
    redCount: int
  }
}