UNPKG

@dvsa/smc-encounter-schema

Version:

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

1 lines 4.87 kB
'use strict';var classTransformer=require('class-transformer'),classValidator=require('class-validator');var N=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var s=(n,r)=>N(n,"name",{value:r,configurable:true});var e=(n,r,o,t)=>{for(var l=t>1?void 0:t?L(r,o):r,f=n.length-1,E;f>=0;f--)(E=n[f])&&(l=(t?E(r,o,l):E(l))||l);return t&&l&&N(r,o,l),l};function b(n){return (r,o)=>{classValidator.registerDecorator({name:"isNullableNumber",target:r.constructor,propertyName:o,options:n,validator:{validate(t,l){return t===null||typeof t=="number"},defaultMessage(t){return `${t.property} must be a number or null`}}});}}s(b,"IsNullableNumber");function T(n){return (r,o)=>{classValidator.registerDecorator({name:"isNullableString",target:r.constructor,propertyName:o,options:n,validator:{validate(t,l){return t===null||typeof t=="string"},defaultMessage(t){return `${t.property} must be a string or null`}}});}}s(T,"IsNullableString");var c=class n{static{s(this,"CurrentEncounterLevel");}static instance;level;officerType;requestType;constructor(){this.level=1,this.officerType="ANY",this.requestType="C";}static getInstance(){return n.instance||(n.instance=new n),n.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 m=class{validate(r,o){let t=o.constraints[0],l=c.getInstance(),f=l.getEncounterType(),E=l.getExaminerOfficerType();return t.level===0||t.exceptions?.includes(f)||t.level!==void 0&&t.level>f||t.roles?.length&&!t.roles.includes(E)&&!t.roles.includes("ANY")?true:r==null?false:typeof r=="string"?t.allowEmpty?true:r.trim().length>0:Array.isArray(r)?r.length===0?false:r.every((O,j)=>O==null?false:Object.entries(O).every(([w,d])=>typeof d=="string"?d.trim().length>0:d!=null)):true}};s(m,"MandatoryFieldConstraint"),m=e([classValidator.ValidatorConstraint({name:"MandatoryField",async:false})],m);function x(n,r){return (o,t)=>{classValidator.registerDecorator({name:"MandatoryField",target:o.constructor,propertyName:t,constraints:[n],options:r,validator:m});}}s(x,"MandatoryField");function y(){return classTransformer.Transform(({value:n})=>typeof n=="string"?n.toUpperCase():n)}s(y,"ToUpperCase");var g=class{static{s(this,"CommonPostAddress");}postTown;postcode};e([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"]}),y(),x({level:4},{groups:["createEncounter"]})],g.prototype,"postTown",2),e([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"]}),y()],g.prototype,"postcode",2);var a=class extends g{static{s(this,"RteArea");}code;areaDescription;address1;address2;address3;address4;email;enforcementArea};e([classValidator.IsOptional()],a.prototype,"code",2),e([classValidator.IsOptional()],a.prototype,"areaDescription",2),e([classValidator.IsOptional()],a.prototype,"address1",2),e([classValidator.IsOptional()],a.prototype,"address2",2),e([classValidator.IsOptional()],a.prototype,"address3",2),e([classValidator.IsOptional()],a.prototype,"address4",2),e([classValidator.IsOptional()],a.prototype,"email",2),e([classValidator.IsOptional()],a.prototype,"enforcementArea",2);var i=class{static{s(this,"GenericContact");}manager;costCentre;csiGeneratedNumber;userId;firstName;surname;email;rarCode;status;gvtsMarker;examinerType;ehrEmployeeId;workTelephone;mobileTelephone;version;rteArea};e([classValidator.IsOptional()],i.prototype,"manager",2),e([classValidator.IsOptional()],i.prototype,"costCentre",2),e([classValidator.IsOptional()],i.prototype,"csiGeneratedNumber",2),e([classValidator.IsOptional()],i.prototype,"userId",2),e([classValidator.IsOptional()],i.prototype,"firstName",2),e([classValidator.IsOptional()],i.prototype,"surname",2),e([classValidator.IsOptional()],i.prototype,"email",2),e([b()],i.prototype,"rarCode",2),e([T()],i.prototype,"status",2),e([T()],i.prototype,"gvtsMarker",2),e([classValidator.IsOptional()],i.prototype,"examinerType",2),e([classValidator.IsOptional()],i.prototype,"ehrEmployeeId",2),e([classValidator.IsOptional()],i.prototype,"workTelephone",2),e([classValidator.IsOptional()],i.prototype,"mobileTelephone",2),e([T()],i.prototype,"version",2),e([classValidator.ValidateIf((r,o)=>o!=null),classValidator.ValidateNested(),classTransformer.Type(()=>a)],i.prototype,"rteArea",2);var R=class extends i{static{s(this,"Recorder");}};exports.Recorder=R;