UNPKG

@dvsa/smc-encounter-schema

Version:

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

1 lines 11.2 kB
'use strict';var classTransformer=require('class-transformer'),classValidator=require('class-validator'),luxon=require('luxon');var X=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var t=(n,e)=>X(n,"name",{value:e,configurable:true});var r=(n,e,i,l)=>{for(var m=l>1?void 0:l?q(e,i):e,d=n.length-1,M;d>=0;d--)(M=n[d])&&(m=(l?M(e,i,m):M(m))||m);return l&&m&&X(e,i,m),m};var v=class n{static{t(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(e){this.level=e;}getExaminerOfficerType(){return this.officerType}setExaminerOfficerType(e){this.officerType=e;}getRequestType(){return this.requestType}setRequestType(e){this.requestType=e;}isDeletedEncounter(){return this.requestType==="D"}};var C=class{validate(e,i){let l=i.constraints[0],m=v.getInstance(),d=m.getEncounterType(),M=m.getExaminerOfficerType();return l.level===0||l.exceptions?.includes(d)||l.level!==void 0&&l.level>d||l.roles?.length&&!l.roles.includes(M)&&!l.roles.includes("ANY")?true:e==null?false:typeof e=="string"?l.allowEmpty?true:e.trim().length>0:Array.isArray(e)?e.length===0?false:e.every((w,ur)=>w==null?false:Object.entries(w).every(([Tr,U])=>typeof U=="string"?U.trim().length>0:U!=null)):true}};t(C,"MandatoryFieldConstraint"),C=r([classValidator.ValidatorConstraint({name:"MandatoryField",async:false})],C);function o(n,e){return (i,l)=>{classValidator.registerDecorator({name:"MandatoryField",target:i.constructor,propertyName:l,constraints:[n],options:e,validator:C});}}t(o,"MandatoryField");var A=class{validate(e,i){return e==null?true:/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(e)}defaultMessage(e){return `${e.property} must match format YYYY-MM-DD HH:mm:ss`}};t(A,"UKDateFormatValidator"),A=r([classValidator.ValidatorConstraint({name:"ValidateUKDateFormat",async:false})],A);function N(n){return (e,i)=>{classValidator.registerDecorator({name:"ValidateUKDateFormat",target:e.constructor,propertyName:i,options:n,validator:A});}}t(N,"ValidateUKDateFormat");function $(){return classTransformer.Transform(({value:n})=>{if(typeof n!="string")return n;let e=luxon.DateTime.fromFormat(n,"dd/MM/yyyy HH:mm:ss",{zone:"Europe/London"});return e.isValid?e.toFormat("yyyy-MM-dd HH:mm:ss"):n})}t($,"TransformUKDateTime");function j(n,e=[]){return i=>{classValidator.registerDecorator({name:"CloseProhibitionsAuditValidator",target:i,propertyName:void 0,options:n,validator:{validate(l,m){return m.object?.eventFullDescription?.trim().toUpperCase()==="CMP"},defaultMessage(l){return '"eventFullDescription" must be "CMP".'}}});}}t(j,"CloseProhibitionsAuditValidator");var E=class{eventCode;eventShortDescription;eventFullDescription;deletionMarker;fpNoticeIndicator;noticeIndicator};t(E,"AuditEventBase"),r([classValidator.IsOptional()],E.prototype,"eventCode",2),r([classValidator.IsOptional()],E.prototype,"eventShortDescription",2),r([classValidator.IsOptional()],E.prototype,"eventFullDescription",2),r([classValidator.IsOptional()],E.prototype,"deletionMarker",2),r([classValidator.IsOptional()],E.prototype,"fpNoticeIndicator",2),r([classValidator.IsOptional()],E.prototype,"noticeIndicator",2),E=r([j({groups:["closeProhibition"]})],E);var a=class{static{t(this,"AuditBase");}generatedNumber;venGeneratedNumber;aevEventCode;eventTimestamp;serverTimestamp;responsibleFirstName;responsibleSurname;responsibleUserId;eventUnit;comments;newAuditIndicator};r([classValidator.ValidateIf((e,i)=>i!=null),classValidator.ValidateNested(),classTransformer.Type(()=>E)],a.prototype,"aevEventCode",2),r([$(),N({groups:["createEncounter"]}),o({level:4},{groups:["createEncounter"]})],a.prototype,"eventTimestamp",2),r([classValidator.IsOptional()],a.prototype,"serverTimestamp",2),r([o({level:4},{groups:["createEncounter"]})],a.prototype,"responsibleFirstName",2),r([o({level:4},{groups:["createEncounter"]})],a.prototype,"responsibleSurname",2),r([o({level:4},{groups:["createEncounter"]})],a.prototype,"responsibleUserId",2),r([o({level:4},{groups:["createEncounter"]})],a.prototype,"eventUnit",2),r([classValidator.IsOptional()],a.prototype,"comments",2),r([classValidator.IsOptional()],a.prototype,"newAuditIndicator",2);function u(){return classTransformer.Transform(({value:n})=>typeof n=="string"?n.toUpperCase():n)}t(u,"ToUpperCase");var _=class{static{t(this,"CommonPostAddress");}postTown;postcode};r([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"]}),u(),o({level:4},{groups:["createEncounter"]})],_.prototype,"postTown",2),r([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"]}),u()],_.prototype,"postcode",2);var p=class p extends _{static{t(this,"Address");}static REG_EX_ADDRESS_LINE=/^(?!-|\\s)(?!.*[&‘’',.-]{2})[A-Za-z0-9&‘’',. -]{0,60}$/;addressLine1;addressLine2;addressLine3;addressLine4;ukResident};r([classValidator.Matches(p.REG_EX_ADDRESS_LINE,{message:"Must match pattern",groups:["createEncounter"]}),classValidator.MaxLength(60,{message:"Must be no more than 60 characters in length",groups:["createEncounter"]}),u(),o({level:4},{groups:["createEncounter"]})],p.prototype,"addressLine1",2),r([classValidator.IsOptional(),classValidator.Matches(p.REG_EX_ADDRESS_LINE,{message:"Must match pattern",groups:["createEncounter"]}),classValidator.MaxLength(60,{message:"Must be no more than 60 characters in length",groups:["createEncounter"]}),u()],p.prototype,"addressLine2",2),r([classValidator.IsOptional(),classValidator.Matches(p.REG_EX_ADDRESS_LINE,{message:"Must match pattern",groups:["createEncounter"]}),classValidator.MaxLength(60,{message:"Must be no more than 60 characters in length",groups:["createEncounter"]}),u()],p.prototype,"addressLine3",2),r([classValidator.IsOptional(),classValidator.Matches(p.REG_EX_ADDRESS_LINE,{message:"Must match pattern",groups:["createEncounter"]}),classValidator.MaxLength(60,{message:"Must be no more than 60 characters in length",groups:["createEncounter"]}),u()],p.prototype,"addressLine4",2),r([classValidator.IsOptional(),u()],p.prototype,"ukResident",2);var F=p;var T=class{static{t(this,"InitiatingReason");}generatedNumber;description;deletionMarker;sequenceNumber;usage};r([o({level:3},{groups:["createEncounter"]})],T.prototype,"generatedNumber",2),r([o({level:3},{groups:["createEncounter"]})],T.prototype,"description",2),r([o({level:3},{groups:["createEncounter"]})],T.prototype,"deletionMarker",2),r([o({level:3},{groups:["createEncounter"]})],T.prototype,"sequenceNumber",2),r([o({level:3},{groups:["createEncounter"]})],T.prototype,"usage",2);var R=class{static{t(this,"TeHoursResult");}code;description;deletionMarker;sequenceNumber};r([classValidator.IsOptional()],R.prototype,"code",2),r([classValidator.IsOptional()],R.prototype,"description",2),r([classValidator.IsOptional()],R.prototype,"deletionMarker",2),r([classValidator.IsOptional()],R.prototype,"sequenceNumber",2);var f=class{static{t(this,"TeOtherResult");}code;description;deletionMarker;sequenceNumber};r([classValidator.IsOptional()],f.prototype,"code",2),r([classValidator.IsOptional()],f.prototype,"description",2),r([classValidator.IsOptional()],f.prototype,"deletionMarker",2),r([classValidator.IsOptional()],f.prototype,"sequenceNumber",2);var O=class{static{t(this,"VeVisitResult");}code;description;deletionMarker;sequenceNumber};r([classValidator.IsOptional()],O.prototype,"code",2),r([classValidator.IsOptional()],O.prototype,"description",2),r([classValidator.IsOptional()],O.prototype,"deletionMarker",2),r([classValidator.IsOptional()],O.prototype,"sequenceNumber",2);var s=class{static{t(this,"OperatorVisitReq");}generatedNumber;fasStatus;clientGuid;actualStartDate;actualEndDate;operatorLicenceNumber;lastUpdate;visitType;inputTime;chrNumber;initiatingReason;operatorName;address;digitalTachoQty;paperTachoQty;teHoursResult;teOtherResult;veVisitResult;auditEvent};r([classValidator.IsOptional()],s.prototype,"generatedNumber",2),r([o({level:3},{groups:["createOperator"]})],s.prototype,"fasStatus",2),r([o({level:3},{groups:["createOperator"]})],s.prototype,"clientGuid",2),r([N({groups:["createOperator"]}),o({level:3},{groups:["createOperator"]})],s.prototype,"actualStartDate",2),r([N({groups:["createOperator"]}),classValidator.IsOptional()],s.prototype,"actualEndDate",2),r([classValidator.MaxLength(9,{groups:["createOperator"],message:"Operator Licence Number Must Be <= 9 Characters"}),classValidator.IsOptional()],s.prototype,"operatorLicenceNumber",2),r([N({groups:["createOperator"]}),o({level:3},{groups:["createOperator"]})],s.prototype,"lastUpdate",2),r([o({level:3},{groups:["createOperator"]})],s.prototype,"visitType",2),r([N({groups:["createOperator"]}),o({level:3},{groups:["createOperator"]})],s.prototype,"inputTime",2),r([classValidator.IsOptional()],s.prototype,"chrNumber",2),r([classValidator.ValidateNested(),classTransformer.Type(()=>T),o({level:3},{groups:["createOperator"]})],s.prototype,"initiatingReason",2),r([classValidator.MaxLength(70,{groups:["createOperator"],message:"Operator Name Must Be <= 70 Characters"}),o({level:3},{groups:["createOperator"]})],s.prototype,"operatorName",2),r([classValidator.ValidateNested(),classTransformer.Type(()=>F),o({level:3},{groups:["createOperator"]})],s.prototype,"address",2),r([classValidator.IsOptional()],s.prototype,"digitalTachoQty",2),r([classValidator.IsOptional()],s.prototype,"paperTachoQty",2),r([classValidator.ValidateIf((e,i)=>i!=null),classValidator.IsOptional(),classValidator.ValidateNested(),classTransformer.Type(()=>R)],s.prototype,"teHoursResult",2),r([classValidator.ValidateIf((e,i)=>i!=null),classValidator.IsOptional(),classValidator.ValidateNested(),classTransformer.Type(()=>f)],s.prototype,"teOtherResult",2),r([classValidator.ValidateIf((e,i)=>i!=null),classValidator.IsOptional(),classValidator.ValidateNested(),classTransformer.Type(()=>O)],s.prototype,"veVisitResult",2),r([classValidator.ValidateNested(),classTransformer.Type(()=>a),o({level:3},{groups:["createOperator"]})],s.prototype,"auditEvent",2);var h=class{static{t(this,"RequestMetaData");}encounterId;currentEncounterUId;deviceType};r([classValidator.IsOptional()],h.prototype,"encounterId",2),r([o({level:4},{groups:["createEncounter"]})],h.prototype,"currentEncounterUId",2),r([classValidator.IsOptional()],h.prototype,"deviceType",2);var k=class{static{t(this,"OperatorRequest");}requestMetaData;request};r([classValidator.ValidateNested(),classTransformer.Type(()=>h),o({level:3},{groups:["createOperator"]})],k.prototype,"requestMetaData",2),r([classValidator.ValidateNested(),classTransformer.Type(()=>s),o({level:3},{groups:["createOperator"]})],k.prototype,"request",2);exports.OperatorRequest=k;