# All files / src/model audits.coffee

100% Statements 8/8
100% Branches 0/0
100% Functions 0/0
100% Lines 8/8

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    731x
    1x
    1x
    1x

    1x

    1x

    1x
    1x
     mongoose = require "mongoose"
    server = require "../server"
    connectionATNA = server.connectionATNA
    Schema = mongoose.Schema

    codeTypeDef =
      "code":           String
      "displayName":    String
      "codeSystemName": String

    syslogDef =
      "prival":     Number
      "facilityID": Number
      "severityID": Number
      "facility":   String
      "severity":   String
      "type":       { type: String }
      "time":       Date
      "host":       String
      "appName":    String
      "pid":        String
      "msgID":      String

    ActiveParticipantDef =
      "userID":                     String
      "alternativeUserID":          String
      "userIsRequestor":            String
      "networkAccessPointID":       String
      "networkAccessPointTypeCode": String
      "roleIDCode":                 codeTypeDef

    ParticipantObjectIdentificationDef =
      "participantObjectID":            String
      "participantObjectTypeCode":      String
      "participantObjectTypeCodeRole":  String
      "participantObjectIDTypeCode":    codeTypeDef
      "participantObjectQuery":         String
      "participantObjectDetail":
        "type":   { type: String }
        "value":  String

    AuditRecordSchema = new Schema
      "rawMessage":                       String
      "syslog":                           syslogDef
      "eventIdentification":
        "eventDateTime":          type: Date, required: true, default: Date.now, index: true
        "eventOutcomeIndicator":  String
        "eventActionCode":        String
        "eventID":                codeTypeDef
        "eventTypeCode":          codeTypeDef
      "activeParticipant":                [ActiveParticipantDef]
      "auditSourceIdentification":
        "auditSourceID":          String
        "auditEnterpriseSiteID":  String
        "auditSourceTypeCode":    codeTypeDef
      "participantObjectIdentification":  [ParticipantObjectIdentificationDef]

    # keeps track of unique codes for various fields found in the audits collection
    AuditMetaRecordSchema = new Schema {
      "eventType":                    [codeTypeDef]
      "eventID":                      [codeTypeDef]
      "activeParticipantRoleID":      [codeTypeDef]
      "participantObjectIDTypeCode":  [codeTypeDef]
      "auditSourceID":                [String]
    }, {
      "collection": "auditMeta"
    }

    exports.Audit = connectionATNA.model 'Audit', AuditRecordSchema
    exports.AuditMeta = connectionATNA.model 'AuditMeta', AuditMetaRecordSchema