UNPKG

@dvsa/smc-encounter-schema

Version:

Schemas required for Encounter submission as well as custom validators ## Developing ### Pre-requisites

1 lines 6.92 kB
'use strict';var classTransformer=require('class-transformer'),classValidator=require('class-validator');var I=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var i=(e,r)=>I(e,"name",{value:r,configurable:true});var t=(e,r,s,n)=>{for(var a=n>1?void 0:n?Y(r,s):r,c=e.length-1,O;c>=0;c--)(O=e[c])&&(a=(n?O(r,s,a):O(a))||a);return n&&a&&I(r,s,a),a};var d=class{validate(r,s){return r==null?true:/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(r)}defaultMessage(r){return `${r.property} must match format YYYY-MM-DD HH:mm:ss`}};i(d,"UKDateFormatValidator"),d=t([classValidator.ValidatorConstraint({name:"ValidateUKDateFormat",async:false})],d);function N(e){return (r,s)=>{classValidator.registerDecorator({name:"ValidateUKDateFormat",target:r.constructor,propertyName:s,options:e,validator:d});}}i(N,"ValidateUKDateFormat");function R(e){return (r,s)=>{classValidator.registerDecorator({name:"isNullableNumber",target:r.constructor,propertyName:s,options:e,validator:{validate(n,a){return n===null||typeof n=="number"},defaultMessage(n){return `${n.property} must be a number or null`}}});}}i(R,"IsNullableNumber");function h(e){return (r,s)=>{classValidator.registerDecorator({name:"isNullableString",target:r.constructor,propertyName:s,options:e,validator:{validate(n,a){return n===null||typeof n=="string"},defaultMessage(n){return `${n.property} must be a string or null`}}});}}i(h,"IsNullableString");var x=class e{static{i(this,"CurrentEncounterLevel");}static instance;level;officerType;requestType;constructor(){this.level=1,this.officerType="ANY",this.requestType="C";}static getInstance(){return e.instance||(e.instance=new e),e.instance}getEncounterType(){return this.level}setEncounterType(r){this.level=r;}getExaminerOfficerType(){return this.officerType}setExaminerOfficerType(r){this.officerType=r;}getRequestType(){return this.requestType}setRequestType(r){this.requestType=r;}isDeletedEncounter(){return this.requestType==="D"}};var E=class{validate(r,s){let n=s.constraints[0],a=x.getInstance(),c=a.getEncounterType(),O=a.getExaminerOfficerType();return n.level===0||n.exceptions?.includes(c)||n.level!==void 0&&n.level>c||n.roles?.length&&!n.roles.includes(O)&&!n.roles.includes("ANY")?true:r==null?false:typeof r=="string"?n.allowEmpty?true:r.trim().length>0:Array.isArray(r)?r.length===0?false:r.every((A,Q)=>A==null?false:Object.entries(A).every(([W,y])=>typeof y=="string"?y.trim().length>0:y!=null)):true}};i(E,"MandatoryFieldConstraint"),E=t([classValidator.ValidatorConstraint({name:"MandatoryField",async:false})],E);function C(e,r){return (s,n)=>{classValidator.registerDecorator({name:"MandatoryField",target:s.constructor,propertyName:n,constraints:[e],options:r,validator:E});}}i(C,"MandatoryField");function V(){return classTransformer.Transform(({value:e})=>typeof e=="string"?e.toUpperCase():e)}i(V,"ToUpperCase");var T=class{static{i(this,"CommonPostAddress");}postTown;postcode};t([classValidator.Matches(/^(?!-|\s)(?!.*[&‘’',.-]{2})[A-Za-z0-9&‘’',. -]{0,20}$/,{message:"Must match pattern",groups:["createEncounter"]}),classValidator.MaxLength(20,{message:"Must be no more than 20 characters in length",groups:["createEncounter"]}),V(),C({level:4},{groups:["createEncounter"]})],T.prototype,"postTown",2),t([classValidator.IsOptional(),classValidator.Matches(/^[A-Za-z0-9 -]*$/,{message:"Must match pattern",groups:["createEncounter"]}),classValidator.MaxLength(8,{message:"Must be no more than 8 characters in length",groups:["createEncounter"]}),V()],T.prototype,"postcode",2);var u=class extends T{static{i(this,"RteArea");}code;areaDescription;address1;address2;address3;address4;email;enforcementArea};t([classValidator.IsOptional()],u.prototype,"code",2),t([classValidator.IsOptional()],u.prototype,"areaDescription",2),t([classValidator.IsOptional()],u.prototype,"address1",2),t([classValidator.IsOptional()],u.prototype,"address2",2),t([classValidator.IsOptional()],u.prototype,"address3",2),t([classValidator.IsOptional()],u.prototype,"address4",2),t([classValidator.IsOptional()],u.prototype,"email",2),t([classValidator.IsOptional()],u.prototype,"enforcementArea",2);var o=class{static{i(this,"GenericContact");}manager;costCentre;csiGeneratedNumber;userId;firstName;surname;email;rarCode;status;gvtsMarker;examinerType;ehrEmployeeId;workTelephone;mobileTelephone;version;rteArea};t([classValidator.IsOptional()],o.prototype,"manager",2),t([classValidator.IsOptional()],o.prototype,"costCentre",2),t([classValidator.IsOptional()],o.prototype,"csiGeneratedNumber",2),t([classValidator.IsOptional()],o.prototype,"userId",2),t([classValidator.IsOptional()],o.prototype,"firstName",2),t([classValidator.IsOptional()],o.prototype,"surname",2),t([classValidator.IsOptional()],o.prototype,"email",2),t([R()],o.prototype,"rarCode",2),t([h()],o.prototype,"status",2),t([h()],o.prototype,"gvtsMarker",2),t([classValidator.IsOptional()],o.prototype,"examinerType",2),t([classValidator.IsOptional()],o.prototype,"ehrEmployeeId",2),t([classValidator.IsOptional()],o.prototype,"workTelephone",2),t([classValidator.IsOptional()],o.prototype,"mobileTelephone",2),t([h()],o.prototype,"version",2),t([classValidator.ValidateIf((r,s)=>s!=null),classValidator.ValidateNested(),classTransformer.Type(()=>u)],o.prototype,"rteArea",2);var g=class{static{i(this,"SignificanceReason");}generatedNumber;fullReason;shortReason;effectiveFrom;effectiveTo};t([classValidator.IsOptional()],g.prototype,"generatedNumber",2),t([classValidator.IsOptional()],g.prototype,"fullReason",2),t([classValidator.IsOptional()],g.prototype,"shortReason",2),t([N(),classValidator.IsOptional()],g.prototype,"effectiveFrom",2),t([N(),classValidator.IsOptional()],g.prototype,"effectiveTo",2);var l=class{static{i(this,"DefectSummary");}action;endorsement;lastUpdate;sgnfcanceReason;updateUserId;fiftyPercentRuleMarker;overallProhibitionSeverity;maintenanceFailureMarker;shortReason;deviationDefectCount;cat99DefectCount};t([classValidator.IsOptional()],l.prototype,"action",2),t([classValidator.IsOptional()],l.prototype,"endorsement",2),t([N({groups:["createEncounter"]}),classValidator.IsOptional()],l.prototype,"lastUpdate",2),t([classValidator.IsOptional()],l.prototype,"sgnfcanceReason",2),t([classValidator.ValidateIf((r,s)=>s!=null),classValidator.IsOptional(),classValidator.ValidateNested(),classTransformer.Type(()=>o)],l.prototype,"updateUserId",2),t([classValidator.IsOptional()],l.prototype,"fiftyPercentRuleMarker",2),t([classValidator.IsOptional()],l.prototype,"overallProhibitionSeverity",2),t([classValidator.IsOptional()],l.prototype,"maintenanceFailureMarker",2),t([classValidator.ValidateIf((r,s)=>s!=null),classValidator.IsOptional(),classValidator.ValidateNested(),classTransformer.Type(()=>g)],l.prototype,"shortReason",2),t([classValidator.IsOptional()],l.prototype,"deviationDefectCount",2),t([classValidator.IsOptional()],l.prototype,"cat99DefectCount",2);exports.DefectSummary=l;