@dvsa/smc-encounter-schema
Version:
Schemas required for Encounter submission as well as custom validators ## Developing ### Pre-requisites
1 lines • 21.3 kB
JavaScript
'use strict';var classTransformer=require('class-transformer'),classValidator=require('class-validator'),luxon=require('luxon');var X=Object.defineProperty;var nr=Object.getOwnPropertyDescriptor;var e=(o,n)=>X(o,"name",{value:n,configurable:true});var r=(o,n,s,i)=>{for(var E=i>1?void 0:i?nr(n,s):n,f=o.length-1,V;f>=0;f--)(V=o[f])&&(E=(i?V(n,s,E):V(E))||E);return i&&E&&X(n,s,E),E};var W=class o{static{e(this,"CurrentEncounterLevel");}static instance;level;officerType;requestType;constructor(){this.level=1,this.officerType="ANY",this.requestType="C";}static getInstance(){return o.instance||(o.instance=new o),o.instance}getEncounterType(){return this.level}setEncounterType(n){this.level=n;}getExaminerOfficerType(){return this.officerType}setExaminerOfficerType(n){this.officerType=n;}getRequestType(){return this.requestType}setRequestType(n){this.requestType=n;}isDeletedEncounter(){return this.requestType==="D"}};var x=class{validate(n,s){let i=s.constraints[0],E=W.getInstance(),f=E.getEncounterType(),V=E.getExaminerOfficerType();return i.level===0||i.exceptions?.includes(f)||i.level!==void 0&&i.level>f||i.roles?.length&&!i.roles.includes(V)&&!i.roles.includes("ANY")?true:n==null?false:typeof n=="string"?i.allowEmpty?true:n.trim().length>0:Array.isArray(n)?n.length===0?false:n.every((I,D)=>I==null?false:Object.entries(I).every(([Vr,K])=>typeof K=="string"?K.trim().length>0:K!=null)):true}};e(x,"MandatoryFieldConstraint"),x=r([classValidator.ValidatorConstraint({name:"MandatoryField",async:false})],x);function t(o,n){return (s,i)=>{classValidator.registerDecorator({name:"MandatoryField",target:s.constructor,propertyName:i,constraints:[o],options:n,validator:x});}}e(t,"MandatoryField");function P(o){return n=>{classValidator.registerDecorator({name:"ValidateCloseProhibitionsNotice",target:n,propertyName:void 0,options:o,validator:{validate(s,i){let E=i.object;return E?E.noticeStatus?.toUpperCase?.()==="C":false},defaultMessage(s){return "Notices noticeStatus must be 'C'."}}});}}e(P,"ValidateCloseProhibitionsNotice");function B(o){return n=>{classValidator.registerDecorator({name:"ValidateDeleteEncounterNotice",target:n,propertyName:void 0,options:o,validator:{validate(s,i){let E=i.object;if(!E)return false;let f=E.noticeType?.code!=null,V=E.noticeStatus?.toUpperCase?.()==="W",I=E.issueDate!=null,D=E.inputDate!=null;return f&&V&&I&&D},defaultMessage(s){return ["Notices noticeType.code must not be null.","Notices noticeStatus must be 'W'.","Notices issueDate must not be null.","Notices inputDate must not be null."].join(" ")}}});}}e(B,"ValidateDeleteEncounterNotice");var M=class{validate(n,s){return n==null?true:/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(n)}defaultMessage(n){return `${n.property} must match format YYYY-MM-DD HH:mm:ss`}};e(M,"UKDateFormatValidator"),M=r([classValidator.ValidatorConstraint({name:"ValidateUKDateFormat",async:false})],M);function p(o){return (n,s)=>{classValidator.registerDecorator({name:"ValidateUKDateFormat",target:n.constructor,propertyName:s,options:o,validator:M});}}e(p,"ValidateUKDateFormat");function R(o){return (n,s)=>{classValidator.registerDecorator({name:"isNullableString",target:n.constructor,propertyName:s,options:o,validator:{validate(i,E){return i===null||typeof i=="string"},defaultMessage(i){return `${i.property} must be a string or null`}}});}}e(R,"IsNullableString");function J(){return classTransformer.Transform(({value:o})=>typeof o=="string"?o.toUpperCase():o)}e(J,"ToUpperCase");var S=class{static{e(this,"CommonDeletion");}description;deletionMarker};r([t({level:4},{groups:["createEncounter"]})],S.prototype,"description",2),r([t({level:4},{groups:["createEncounter"]})],S.prototype,"deletionMarker",2);var v=class extends S{static{e(this,"CommonData");}sequenceNumber};r([t({level:4},{groups:["createEncounter"]})],v.prototype,"sequenceNumber",2);var F=class extends v{static{e(this,"VehicleIdType");}shortCode;code;vehicleTrailerIndicator};r([t({level:4},{groups:["createEncounter"]})],F.prototype,"shortCode",2),r([t({level:4},{groups:["createEncounter"]})],F.prototype,"code",2),r([t({level:4},{groups:["createEncounter"]})],F.prototype,"vehicleTrailerIndicator",2);var d=class{static{e(this,"ExemptionConditionBaseType");}expiryDate;ntyCode;locationFrom;locationTo;noLoadIndicator;noTrailerIndictr;otherConditions;rgdTowBarIndictr;speedRestriction;speedUnit;susTowFrtIndctr;susTowRrIndctr;visibilityIndctr};r([classValidator.IsOptional(),p({groups:["createEncounter"]})],d.prototype,"expiryDate",2),r([classValidator.IsOptional()],d.prototype,"ntyCode",2),r([classValidator.IsOptional()],d.prototype,"locationFrom",2),r([classValidator.IsOptional()],d.prototype,"locationTo",2),r([classValidator.IsOptional()],d.prototype,"noLoadIndicator",2),r([classValidator.IsOptional()],d.prototype,"noTrailerIndictr",2),r([classValidator.IsOptional()],d.prototype,"otherConditions",2),r([classValidator.IsOptional()],d.prototype,"rgdTowBarIndictr",2),r([classValidator.IsOptional()],d.prototype,"speedRestriction",2),r([classValidator.IsOptional()],d.prototype,"speedUnit",2),r([classValidator.IsOptional()],d.prototype,"susTowFrtIndctr",2),r([classValidator.IsOptional()],d.prototype,"susTowRrIndctr",2),r([classValidator.IsOptional()],d.prototype,"visibilityIndctr",2);var G=class{static{e(this,"NoticeClosureBaseType");}text;motReference};r([classValidator.IsOptional()],G.prototype,"text",2),r([classValidator.IsOptional()],G.prototype,"motReference",2);function z(o){return (n,s)=>{classValidator.registerDecorator({name:"isNullableNumber",target:n.constructor,propertyName:s,options:o,validator:{validate(i,E){return i===null||typeof i=="number"},defaultMessage(i){return `${i.property} must be a number or null`}}});}}e(z,"IsNullableNumber");var g=class{static{e(this,"NoticeType");}code;ntyDescription;currentCode;act;currentVersion;typeCode;ntyShortDescription;operatorCopy;driverRequired;translationAvailable;sequenceNumber;noticeTypeCategory;autoClosurePeriod;ntySummary;closeFlag;aevEventCodeClose;aevEventCodeClear;aevEventCodeReactivate;ettCode;notifiableFlag};r([classValidator.IsOptional()],g.prototype,"code",2),r([classValidator.IsOptional()],g.prototype,"ntyDescription",2),r([classValidator.IsOptional()],g.prototype,"currentCode",2),r([R()],g.prototype,"act",2),r([classValidator.IsOptional()],g.prototype,"currentVersion",2),r([classValidator.IsOptional()],g.prototype,"typeCode",2),r([t({level:4},{groups:["createEncounter"]})],g.prototype,"ntyShortDescription",2),r([classTransformer.Transform(({value:n})=>n!==null?Number.parseInt(n,10):null),t({level:4},{groups:["createEncounter"]})],g.prototype,"operatorCopy",2),r([t({level:4},{groups:["createEncounter"]})],g.prototype,"driverRequired",2),r([t({level:4},{groups:["createEncounter"]})],g.prototype,"translationAvailable",2),r([t({level:4},{groups:["createEncounter"]})],g.prototype,"sequenceNumber",2),r([R()],g.prototype,"noticeTypeCategory",2),r([z()],g.prototype,"autoClosurePeriod",2),r([classValidator.IsOptional()],g.prototype,"ntySummary",2),r([t({level:4},{groups:["createEncounter"]})],g.prototype,"closeFlag",2),r([z()],g.prototype,"aevEventCodeClose",2),r([z()],g.prototype,"aevEventCodeClear",2),r([z()],g.prototype,"aevEventCodeReactivate",2),r([R()],g.prototype,"ettCode",2),r([R()],g.prototype,"notifiableFlag",2);var A=class{static{e(this,"NoticeTypeDetail");}ntyCode;version;deletionMarker;updateUserId;lastUpdate;actDetail;actMsg1;actMsg2;actMsg3};r([classValidator.IsOptional()],A.prototype,"ntyCode",2),r([classTransformer.Transform(({value:n})=>n!==null?Number.parseInt(n,10):null),classValidator.IsOptional()],A.prototype,"version",2),r([classValidator.IsOptional()],A.prototype,"deletionMarker",2),r([classValidator.IsOptional()],A.prototype,"updateUserId",2),r([classValidator.IsOptional()],A.prototype,"lastUpdate",2),r([classValidator.IsOptional()],A.prototype,"actDetail",2),r([R()],A.prototype,"actMsg1",2),r([R()],A.prototype,"actMsg2",2),r([R()],A.prototype,"actMsg3",2);var q=class extends v{static{e(this,"CommonVersion");}code;version};r([t({level:4},{groups:["createEncounter"]})],q.prototype,"code",2),r([t({level:4},{groups:["createEncounter"]})],q.prototype,"version",2);var C=class extends q{static{e(this,"OffenceBaseType");}ukMarker;sequenceNum;name;ostCode;ofgCode;effectiveFromDate;effectiveToDate;otyCode;osbCode;hazchemRisk;hazchemReason;endorsableFlag;descriptionWelsh};r([classValidator.IsOptional()],C.prototype,"ukMarker",2),r([classValidator.IsOptional()],C.prototype,"sequenceNum",2),r([classValidator.IsOptional()],C.prototype,"name",2),r([classValidator.IsOptional()],C.prototype,"ostCode",2),r([classValidator.IsOptional()],C.prototype,"ofgCode",2),r([classValidator.IsOptional(),p({groups:["createEncounter"]})],C.prototype,"effectiveFromDate",2),r([classValidator.IsOptional(),p({groups:["createEncounter"]})],C.prototype,"effectiveToDate",2),r([classValidator.IsOptional()],C.prototype,"otyCode",2),r([classValidator.IsOptional()],C.prototype,"osbCode",2),r([classValidator.IsOptional()],C.prototype,"hazchemRisk",2),r([classValidator.IsOptional()],C.prototype,"hazchemReason",2),r([classValidator.IsOptional()],C.prototype,"endorsableFlag",2),r([classValidator.IsOptional()],C.prototype,"descriptionWelsh",2);function Q(){return classTransformer.Transform(({value:o})=>{if(typeof o!="string")return o;let n=luxon.DateTime.fromFormat(o,"dd/MM/yyyy HH:mm:ss",{zone:"Europe/London"});return n.isValid?n.toFormat("yyyy-MM-dd HH:mm:ss"):o})}e(Q,"TransformUKDateTime");var m=class extends v{static{e(this,"CommonOffence");}code;version;ukMarker;name;ostCode;ofgCode;fkOgpCode;fkOgpVersion;effectiveFromDate;effectiveToDate;otyCode;osbCode;hazchemRisk;hazchemReason;descriptionWelsh};r([t({level:4},{groups:["createEncounter"]})],m.prototype,"code",2),r([t({level:4},{groups:["createEncounter"]})],m.prototype,"version",2),r([t({level:4},{groups:["createEncounter"]})],m.prototype,"ukMarker",2),r([t({level:4},{groups:["createEncounter"]})],m.prototype,"name",2),r([t({level:4},{groups:["createEncounter"]})],m.prototype,"ostCode",2),r([classValidator.IsOptional()],m.prototype,"ofgCode",2),r([classValidator.IsOptional()],m.prototype,"fkOgpCode",2),r([classValidator.IsOptional()],m.prototype,"fkOgpVersion",2),r([t({level:4},{groups:["createEncounter"]}),Q()],m.prototype,"effectiveFromDate",2),r([classValidator.IsOptional(),Q()],m.prototype,"effectiveToDate",2),r([t({level:4},{groups:["createEncounter"]})],m.prototype,"otyCode",2),r([classValidator.IsOptional()],m.prototype,"osbCode",2),r([classValidator.IsOptional()],m.prototype,"hazchemRisk",2),r([classValidator.IsOptional()],m.prototype,"hazchemReason",2),r([classValidator.IsOptional()],m.prototype,"descriptionWelsh",2);var Y=class extends m{static{e(this,"Offences");}endorsableFlag};r([classValidator.IsOptional()],Y.prototype,"endorsableFlag",2);function tr(o){return n=>{classValidator.registerDecorator({name:"ValidatePnoGeneratedNumber",target:n,propertyName:void 0,options:o,validator:{validate(s,i){let E=i.object;if(!E)return false;let f=E.pnoGeneratedNumber,I=E.noticeRefSource?.toUpperCase?.()==="GEN";return !(f==null||I&&!/^[A-Za-z0-9]+$/.test(f)||I&&!Ar(f))},defaultMessage(s){return "pnoGeneratedNumber is invalid or does not match the check digit."}}});}}e(tr,"ValidatePnoGeneratedNumber");function Ar(o){if(!o||o.length<2)return false;let s=o.charAt(o.length-1).charCodeAt(0)-48,E=o.slice(0,-1).toUpperCase().split(""),f=0;for(let D=0;D<E.length;D++)f+=E[D].charCodeAt(0)*(D+1);let I=48+f%10;return s===I-48}e(Ar,"calculateCheckDigit");var y=class extends v{static{e(this,"PenaltyNoticeStatus");}code;usageInd};r([t({level:4},{groups:["createEncounter"]})],y.prototype,"code",2),r([t({level:4},{groups:["createEncounter"]})],y.prototype,"usageInd",2);var a=class{venGeneratedNumber;noticeRefSource;referenceNumber;driverForename;driverSurname;driverLicenceNumber;drivingLicenseStatus;driverType;amount;points;paymentDueDate;referredDate;penaltyNoticeStatus;lastUpdatedDate;lastUpdatedBy;pnoGeneratedNumber;odrGeneratedNumber};e(a,"PenaltyNotice"),r([classValidator.IsOptional()],a.prototype,"venGeneratedNumber",2),r([t({level:4},{groups:["createEncounter"]})],a.prototype,"noticeRefSource",2),r([t({level:4},{groups:["createEncounter"]})],a.prototype,"referenceNumber",2),r([t({level:4},{groups:["createEncounter"]})],a.prototype,"driverForename",2),r([t({level:4},{groups:["createEncounter"]})],a.prototype,"driverSurname",2),r([t({level:4,allowEmpty:true},{groups:["createEncounter"]})],a.prototype,"driverLicenceNumber",2),r([t({level:4},{groups:["createEncounter"]})],a.prototype,"drivingLicenseStatus",2),r([t({level:4},{groups:["createEncounter"]})],a.prototype,"driverType",2),r([t({level:4},{groups:["createEncounter"]})],a.prototype,"amount",2),r([t({level:4},{groups:["createEncounter"]})],a.prototype,"points",2),r([p({groups:["createEncounter"]}),t({level:4},{groups:["createEncounter"]})],a.prototype,"paymentDueDate",2),r([p({groups:["createEncounter"]}),t({level:4},{groups:["createEncounter"]})],a.prototype,"referredDate",2),r([classValidator.ValidateNested(),classTransformer.Type(()=>y),t({level:4},{groups:["createEncounter"]})],a.prototype,"penaltyNoticeStatus",2),r([p({groups:["createEncounter"]}),t({level:4},{groups:["createEncounter"]})],a.prototype,"lastUpdatedDate",2),r([classValidator.IsOptional()],a.prototype,"lastUpdatedBy",2),r([classValidator.IsOptional()],a.prototype,"pnoGeneratedNumber",2),r([classValidator.IsOptional()],a.prototype,"odrGeneratedNumber",2),a=r([tr({groups:["createEncounter"]})],a);var N=class{static{e(this,"ProhibitionClosureReasonBaseType");}code;description;sequenceNumber;deletionMarker;manualInd};r([classValidator.IsOptional()],N.prototype,"code",2),r([classValidator.IsOptional()],N.prototype,"description",2),r([classValidator.IsOptional()],N.prototype,"sequenceNumber",2),r([classValidator.IsOptional()],N.prototype,"deletionMarker",2),r([classValidator.IsOptional()],N.prototype,"manualInd",2);var H=class{static{e(this,"CommonDescription");}code;description};r([R()],H.prototype,"code",2),r([R()],H.prototype,"description",2);var j=class extends H{static{e(this,"RemovalInstruction");}sequenceNumber;deletionMarker};r([classTransformer.Transform(({value:n})=>n!==null?Number.parseInt(n,10):null),t({level:4},{groups:["createEncounter"]})],j.prototype,"sequenceNumber",2),r([t({level:4},{groups:["createEncounter"]})],j.prototype,"deletionMarker",2);exports.NoticeBase=class l{odrGeneratedNumber;noticeType;penaltyNotice;ordGeneratedNumber;closureLastUserId;oliLicenceNumber;noticeReferenceNumber;inForceDate;inForceTime;issueDate;issueTime;inputDate;issueOffFname;issueOffSname;issueOfficerType;noticeStatus;pcrCode;rceivedByForenme;rceivedBySurname;restHours;rteVehId;rteVehIdType;sMarked;translationMkr;updateTimestamp;dangerGoodsDeferralPeriod;noticeTypeDetail;ifkOpLicenceNum;ifkTestCertNum;immediateInd;offences;removalInstr;policeOfficerNum;policeStation;testStationInd;towingVehId;updateUserId;clearanceDate;closureLastTime;closureReason;filedAt;tachoLastCalibrationDate;tachoInspectionDueDate;dangerousGoodsDirection;dangerGoodsImmProhInd;exemptionConditions;noticeClosure;offencesList;opCopyPrinted;orginalIssueDate;otherLocation;linkedNoticeId};e(exports.NoticeBase,"NoticeBase"),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"odrGeneratedNumber",2),r([classValidator.ValidateNested(),classTransformer.Type(()=>g),t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"noticeType",2),r([classValidator.ValidateIf((n,s)=>s!=null),classValidator.ValidateNested(),classTransformer.Type(()=>a),classValidator.IsOptional()],exports.NoticeBase.prototype,"penaltyNotice",2),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"ordGeneratedNumber",2),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"closureLastUserId",2),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"oliLicenceNumber",2),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"noticeReferenceNumber",2),r([classValidator.IsOptional(),p({groups:["createEncounter"]})],exports.NoticeBase.prototype,"inForceDate",2),r([classValidator.IsOptional(),p({groups:["createEncounter"]})],exports.NoticeBase.prototype,"inForceTime",2),r([p({groups:["createEncounter"]}),t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"issueDate",2),r([p({groups:["createEncounter"]}),t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"issueTime",2),r([p({groups:["createEncounter"]}),t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"inputDate",2),r([t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"issueOffFname",2),r([t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"issueOffSname",2),r([t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"issueOfficerType",2),r([t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"noticeStatus",2),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"pcrCode",2),r([J(),t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"rceivedByForenme",2),r([J(),t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"rceivedBySurname",2),r([classValidator.Max(45,{groups:["createEncounter"]}),t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"restHours",2),r([t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"rteVehId",2),r([classValidator.ValidateNested(),classTransformer.Type(()=>F),t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"rteVehIdType",2),r([t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"sMarked",2),r([t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"translationMkr",2),r([p({groups:["createEncounter"]}),t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"updateTimestamp",2),r([t({level:4},{groups:["createEncounter"]})],exports.NoticeBase.prototype,"dangerGoodsDeferralPeriod",2),r([classValidator.IsOptional(),classValidator.ValidateNested(),classTransformer.Type(()=>A)],exports.NoticeBase.prototype,"noticeTypeDetail",2),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"ifkOpLicenceNum",2),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"ifkTestCertNum",2),r([R()],exports.NoticeBase.prototype,"immediateInd",2),r([classValidator.ValidateIf((n,s)=>s!=null),classValidator.IsOptional(),classValidator.ValidateNested({each:true}),classTransformer.Type(()=>Y)],exports.NoticeBase.prototype,"offences",2),r([classValidator.ValidateIf((n,s)=>s!=null),classValidator.IsOptional(),classValidator.ValidateNested(),classTransformer.Type(()=>j)],exports.NoticeBase.prototype,"removalInstr",2),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"policeOfficerNum",2),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"policeStation",2),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"testStationInd",2),r([R()],exports.NoticeBase.prototype,"towingVehId",2),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"updateUserId",2),r([classValidator.IsOptional(),p({groups:["createEncounter"]})],exports.NoticeBase.prototype,"clearanceDate",2),r([classValidator.IsOptional(),p({groups:["createEncounter"]})],exports.NoticeBase.prototype,"closureLastTime",2),r([classValidator.ValidateIf((n,s)=>s!=null),classValidator.IsOptional(),classValidator.ValidateNested(),classTransformer.Type(()=>N)],exports.NoticeBase.prototype,"closureReason",2),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"filedAt",2),r([classValidator.IsOptional(),p({groups:["createEncounter"]})],exports.NoticeBase.prototype,"tachoLastCalibrationDate",2),r([classValidator.IsOptional(),p({groups:["createEncounter"]})],exports.NoticeBase.prototype,"tachoInspectionDueDate",2),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"dangerousGoodsDirection",2),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"dangerGoodsImmProhInd",2),r([classValidator.ValidateIf((n,s)=>s!=null),classValidator.IsOptional(),classValidator.ValidateNested({each:true}),classTransformer.Type(()=>d)],exports.NoticeBase.prototype,"exemptionConditions",2),r([classValidator.ValidateIf((n,s)=>s!=null),classValidator.IsOptional(),classValidator.ValidateNested(),classTransformer.Type(()=>G)],exports.NoticeBase.prototype,"noticeClosure",2),r([classValidator.ValidateIf((n,s)=>s!=null),classValidator.IsOptional(),classValidator.ValidateNested({each:true}),classTransformer.Type(()=>C)],exports.NoticeBase.prototype,"offencesList",2),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"opCopyPrinted",2),r([classValidator.IsOptional(),p({groups:["createEncounter"]})],exports.NoticeBase.prototype,"orginalIssueDate",2),r([classValidator.IsOptional(),classValidator.Length(0,30,{groups:["createEncounter"]}),classValidator.Matches(/^(?!-|\s)(?!.*[&()!#@‘’',.\-/]{2})[A-Za-z0-9][A-Za-z0-9&()!#@’',.:;£ \-/]{0,29}$/,{groups:["createEncounter"]})],exports.NoticeBase.prototype,"otherLocation",2),r([classValidator.IsOptional()],exports.NoticeBase.prototype,"linkedNoticeId",2),exports.NoticeBase=r([B({groups:["deleteEncounter"]}),P({groups:["closeProhibition"]})],exports.NoticeBase);