models

Address Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "street": {
      "type": "string"
    },
    "streetNumber": {
      "type": "string"
    },
    "zipCode": {
      "type": "string"
    },
    "city": {
      "type": "string"
    },
    "country": {
      "type": "string"
    }
  },
  "required": [
    "street",
    "streetNumber",
    "zipCode",
    "city",
    "country"
  ]
}

AuthenticationClaims Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "userId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "userId"
  ]
}

BilledRequest Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "_id": {
      "type": "string",
      "format": "uuid"
    },
    "tenantId": {
      "type": "string",
      "format": "uuid"
    },
    "tenantKey": {
      "type": "string",
      "format": "^[a-z\\-]+$"
    },
    "method": {
      "type": "string"
    },
    "path": {
      "type": "string"
    },
    "apiGatewayRequests": {
      "type": "number"
    },
    "webSocketRequests": {
      "type": "number"
    },
    "lambdaInvocations": {
      "type": "number"
    },
    "dynamoDbReads": {
      "type": "number"
    },
    "dynamoDbWrites": {
      "type": "number"
    },
    "s3Reads": {
      "type": "number"
    },
    "s3Writes": {
      "type": "number"
    },
    "usd": {
      "type": "number"
    },
    "compensation": {
      "type": "number"
    },
    "createdOn": {
      "type": "string",
      "format": "date-time"
    }
  },
  "required": [
    "_id",
    "tenantId",
    "tenantKey",
    "method",
    "path",
    "usd",
    "createdOn"
  ]
}

Disaster Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "_id": {
      "type": "string",
      "format": "uuid"
    },
    "tenantId": {
      "type": "string",
      "format": "uuid"
    },
    "tenantKey": {
      "type": "string",
      "format": "^[a-z\\-]+$"
    },
    "name": {
      "type": "string"
    },
    "category": {
      "type": "string",
      "enum": [
        "Unknown",
        "Fire",
        "Flood",
        "Storm",
        "Blizzard",
        "Earthquake",
        "Avalanche",
        "Landslide",
        "Tsunami",
        "Hurricane",
        "Tornado",
        "Volcano",
        "Epidemic",
        "Pandemic",
        "Explosion",
        "TerroristAttack",
        "NuclearDisaster",
        "BiologicalDisaster",
        "ChemicalDisaster",
        "Meteorite",
        "Asteroid"
      ]
    },
    "latitude": {
      "type": "number"
    },
    "longitude": {
      "type": "number"
    },
    "victims": {
      "type": "number"
    },
    "createdOn": {
      "type": "string",
      "format": "date-time"
    },
    "updatedOn": {
      "type": "string",
      "format": "date-time"
    }
  },
  "required": [
    "_id",
    "tenantId",
    "tenantKey",
    "latitude",
    "longitude",
    "createdOn",
    "updatedOn"
  ]
}

Patient Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "_id": {
      "type": "string",
      "format": "uuid"
    },
    "tenantId": {
      "type": "string",
      "format": "uuid"
    },
    "tenantKey": {
      "type": "string",
      "format": "^[a-z\\-]+$"
    },
    "disasterId": {
      "type": "string",
      "format": "uuid"
    },
    "originalId": {
      "type": "string",
      "format": "uuid"
    },
    "firstName": {
      "type": "string"
    },
    "lastName": {
      "type": "string"
    },
    "gender": {
      "type": "string",
      "enum": [
        "Male",
        "Female",
        "Other"
      ]
    },
    "age": {
      "type": "number",
      "minimum": 0,
      "maximum": 99
    },
    "preExistingHealthConditions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "createdOn": {
      "type": "object",
      "format": "date-time"
    }
  },
  "required": [
    "_id",
    "tenantId",
    "tenantKey",
    "disasterId",
    "originalId",
    "gender",
    "age",
    "createdOn"
  ]
}

Role Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "_id": {
      "type": "string",
      "format": "uuid"
    },
    "tenantId": {
      "type": "string",
      "format": "uuid"
    },
    "tenantKey": {
      "type": "string",
      "format": "^[a-z\\-]+$"
    },
    "name": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "rights": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "AccessRightAccessManagementConsole",
          "AccessRightAccessTenantConsole",
          "AccessRightAccessDashboard",
          "AccessRightViewTenant",
          "AccessRightActivateTenant",
          "AccessRightViewUser",
          "AccessRightDeleteUser",
          "AccessRightActivateUser",
          "AccessRightCreateDevice",
          "AccessRightCreateDeviceToken",
          "AccessRightViewRole",
          "AccessRightCreateRole",
          "AccessRightAssignRole",
          "AccessRightViewTriage",
          "AccessRightCreateTriage",
          "AccessRightUpdateTriage",
          "AccessRightViewPatient",
          "AccessRightCreatePatient",
          "AccessRightUpdatePatient",
          "AccessRightViewDisaster",
          "AccessRightCreateDisaster",
          "AccessRightWebSocket",
          "AccessRightWebSocketEventOnCreateTriage",
          "AccessRightWebSocketEventOnCreatePatient",
          "AccessRightWebSocketEventOnCreateDisaster",
          "AccessRightWebSocketEventOnUpdatePatient",
          "AccessRightWebSocketEventOnUpdateDisaster"
        ]
      }
    },
    "createdOn": {
      "type": "string",
      "format": "date-time"
    },
    "updatedOn": {
      "type": "string",
      "format": "date-time"
    }
  },
  "required": [
    "_id",
    "tenantId",
    "tenantKey",
    "name",
    "createdOn",
    "updatedOn"
  ]
}

Tenant Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "_id": {
      "type": "string",
      "format": "uuid"
    },
    "key": {
      "type": "string",
      "format": "^[a-z\\-]+$"
    },
    "name": {
      "type": "string"
    },
    "address": {
      "type": "object",
      "properties": {
        "street": {
          "type": "string"
        },
        "streetNumber": {
          "type": "string"
        },
        "zipCode": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "country": {
          "type": "string"
        }
      },
      "required": [
        "street",
        "streetNumber",
        "zipCode",
        "city",
        "country"
      ]
    },
    "invoiceAddress": {
      "type": "object",
      "properties": {
        "street": {
          "type": "string"
        },
        "streetNumber": {
          "type": "string"
        },
        "zipCode": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "country": {
          "type": "string"
        }
      },
      "required": [
        "street",
        "streetNumber",
        "zipCode",
        "city",
        "country"
      ]
    },
    "contact": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        }
      }
    },
    "isActivated": {
      "type": "boolean"
    },
    "rootUserId": {
      "type": "string",
      "format": "uuid"
    },
    "registeredOn": {
      "type": "string",
      "format": "date-time"
    },
    "activatedOn": {
      "type": "string",
      "format": "date-time"
    }
  },
  "required": [
    "_id",
    "key",
    "name",
    "address",
    "invoiceAddress",
    "isActivated",
    "rootUserId",
    "registeredOn",
    "activatedOn"
  ]
}

TenantContact Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    }
  }
}

Triage Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "_id": {
      "type": "string",
      "format": "uuid"
    },
    "tenantId": {
      "type": "string",
      "format": "uuid"
    },
    "tenantKey": {
      "type": "string",
      "format": "^[a-z\\-]+$"
    },
    "patientId": {
      "type": "string",
      "format": "uuid"
    },
    "disasterId": {
      "type": "string",
      "format": "uuid"
    },
    "user": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid"
        },
        "firstName": {
          "type": "string"
        },
        "lastName": {
          "type": "string"
        }
      },
      "required": [
        "id"
      ]
    },
    "createdOn": {
      "type": "string",
      "format": "date-time"
    },
    "latitude": {
      "type": "number"
    },
    "longitude": {
      "type": "number"
    },
    "estimatedRadius": {
      "type": "number"
    },
    "location": {
      "type": "string",
      "enum": [
        "Incident",
        "CasualtyAssembly",
        "CasualtyTreatment",
        "CasualtyDecontamination",
        "MedicalTransport",
        "Release"
      ]
    },
    "classification": {
      "type": "string",
      "enum": [
        "Green",
        "Yellow",
        "Red",
        "Black",
        "Blue"
      ]
    },
    "subClassification": {
      "type": "string",
      "enum": [
        "SpontaneousBreathing",
        "LockedAirways",
        "Hyperventilation",
        "InhalationTrauma",
        "CapillaryRefillTime",
        "RadialisPulseNotPalpable",
        "SevereBleeding",
        "PuFailed"
      ]
    },
    "measures": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "TourniquetAttached",
          "AirwaysOpened",
          "ThoracicPuncture"
        ]
      }
    },
    "remarks": {
      "type": "string"
    },
    "isClamped": {
      "type": "boolean"
    },
    "imageRef": {
      "type": "string"
    },
    "timeInfo": {
      "type": "object",
      "properties": {
        "onQrCodeScanned": {
          "type": "object",
          "format": "date-time"
        },
        "onTriageStarted": {
          "type": "object",
          "format": "date-time"
        },
        "onChildAdultSelected": {
          "type": "object",
          "format": "date-time"
        },
        "onAgeSelected": {
          "type": "object",
          "format": "date-time"
        },
        "onGenderSelected": {
          "type": "object",
          "format": "date-time"
        },
        "onClassificationSelected": {
          "type": "object",
          "format": "date-time"
        },
        "onTriageCompleted": {
          "type": "object",
          "format": "date-time"
        }
      }
    }
  },
  "required": [
    "_id",
    "tenantId",
    "tenantKey",
    "patientId",
    "disasterId",
    "user",
    "createdOn",
    "latitude",
    "longitude",
    "location",
    "classification"
  ]
}

TriageUserInfo Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid"
    },
    "firstName": {
      "type": "string"
    },
    "lastName": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ]
}

TriageTimeInfo Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "onQrCodeScanned": {
      "type": "object",
      "format": "date-time"
    },
    "onTriageStarted": {
      "type": "object",
      "format": "date-time"
    },
    "onChildAdultSelected": {
      "type": "object",
      "format": "date-time"
    },
    "onAgeSelected": {
      "type": "object",
      "format": "date-time"
    },
    "onGenderSelected": {
      "type": "object",
      "format": "date-time"
    },
    "onClassificationSelected": {
      "type": "object",
      "format": "date-time"
    },
    "onTriageCompleted": {
      "type": "object",
      "format": "date-time"
    }
  }
}

User Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "_id": {
      "type": "string"
    },
    "tenantId": {
      "type": "string"
    },
    "tenantKey": {
      "type": "string",
      "format": "^[a-z\\-]+$"
    },
    "email": {
      "type": "string",
      "format": "email"
    },
    "password": {
      "type": "string"
    },
    "firstName": {
      "type": "string"
    },
    "lastName": {
      "type": "string"
    },
    "isDeviceUser": {
      "type": "boolean"
    },
    "deviceImei": {
      "type": "string"
    },
    "deviceName": {
      "type": "string"
    },
    "deviceOs": {
      "type": "string",
      "enum": [
        "Android",
        "iOS"
      ]
    },
    "isActivated": {
      "type": "boolean"
    },
    "roles": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "_id"
        ]
      }
    },
    "registeredOn": {
      "type": "string",
      "format": "date-time"
    },
    "activatedOn": {
      "type": "string",
      "format": "date-time"
    }
  },
  "required": [
    "_id",
    "tenantId",
    "tenantKey",
    "email",
    "password",
    "isDeviceUser",
    "deviceImei",
    "deviceName",
    "deviceOs",
    "isActivated",
    "roles",
    "registeredOn",
    "activatedOn"
  ]
}

RoleRef Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "_id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    }
  },
  "required": [
    "_id"
  ]
}

WebSocketID Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "_id": {
      "type": "string",
      "format": "uuid"
    },
    "tenantId": {
      "type": "string",
      "format": "uuid"
    },
    "tenantKey": {
      "type": "string",
      "format": "^[a-z\\-]+$"
    },
    "accessRights": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "AccessRightAccessManagementConsole",
          "AccessRightAccessTenantConsole",
          "AccessRightAccessDashboard",
          "AccessRightViewTenant",
          "AccessRightActivateTenant",
          "AccessRightViewUser",
          "AccessRightDeleteUser",
          "AccessRightActivateUser",
          "AccessRightCreateDevice",
          "AccessRightCreateDeviceToken",
          "AccessRightViewRole",
          "AccessRightCreateRole",
          "AccessRightAssignRole",
          "AccessRightViewTriage",
          "AccessRightCreateTriage",
          "AccessRightUpdateTriage",
          "AccessRightViewPatient",
          "AccessRightCreatePatient",
          "AccessRightUpdatePatient",
          "AccessRightViewDisaster",
          "AccessRightCreateDisaster",
          "AccessRightWebSocket",
          "AccessRightWebSocketEventOnCreateTriage",
          "AccessRightWebSocketEventOnCreatePatient",
          "AccessRightWebSocketEventOnCreateDisaster",
          "AccessRightWebSocketEventOnUpdatePatient",
          "AccessRightWebSocketEventOnUpdateDisaster"
        ]
      }
    }
  },
  "required": [
    "_id",
    "tenantId",
    "tenantKey"
  ]
}

WebSocketMessage Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "event": {
      "type": "string",
      "enum": [
        "OnCreatedTriage",
        "OnCreatedPatient",
        "OnCreatedDisaster",
        "OnCreatedRescueResource",
        "OnUpdatedPatient",
        "OnUpdatedDisaster"
      ]
    },
    "data": {
      "type": "object"
    }
  },
  "required": [
    "event",
    "data"
  ]
}