text: /**
   * @name exports
   * @summary ProcessRequest Class
   */
  module.exports = class ProcessRequest {
  	constructor(opts) {
  		// Create an object to store all props
  		Object.defineProperty(this, '__data', { value: {} });
  
  		// Define getters and setters as enumerable
  
  		Object.defineProperty(this, '_id', {
  			enumerable: true,
  			get: () => this.__data._id,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Element = require('./element.js');
  				this.__data._id = new Element(value);
  			},
  		});
  
  		Object.defineProperty(this, 'id', {
  			enumerable: true,
  			get: () => this.__data.id,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				this.__data.id = value;
  			},
  		});
  
  		Object.defineProperty(this, 'meta', {
  			enumerable: true,
  			get: () => this.__data.meta,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Meta = require('./meta.js');
  				this.__data.meta = new Meta(value);
  			},
  		});
  
  		Object.defineProperty(this, '_implicitRules', {
  			enumerable: true,
  			get: () => this.__data._implicitRules,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Element = require('./element.js');
  				this.__data._implicitRules = new Element(value);
  			},
  		});
  
  		Object.defineProperty(this, 'implicitRules', {
  			enumerable: true,
  			get: () => this.__data.implicitRules,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				this.__data.implicitRules = value;
  			},
  		});
  
  		Object.defineProperty(this, '_language', {
  			enumerable: true,
  			get: () => this.__data._language,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Element = require('./element.js');
  				this.__data._language = new Element(value);
  			},
  		});
  		// valueSetReference: http://hl7.org/fhir/ValueSet/languages
  		Object.defineProperty(this, 'language', {
  			enumerable: true,
  			get: () => this.__data.language,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				this.__data.language = value;
  			},
  		});
  
  		Object.defineProperty(this, 'text', {
  			enumerable: true,
  			get: () => this.__data.text,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Narrative = require('./narrative.js');
  				this.__data.text = new Narrative(value);
  			},
  		});
  
  		Object.defineProperty(this, 'contained', {
  			enumerable: true,
  			get: () => this.__data.contained,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				this.__data.contained = Array.isArray(value) ? value.map(v => v) : [value];
  			},
  		});
  
  		Object.defineProperty(this, 'extension', {
  			enumerable: true,
  			get: () => this.__data.extension,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Extension = require('./extension.js');
  				this.__data.extension = Array.isArray(value) ? value.map(v => new Extension(v)) : [new Extension(value)];
  			},
  		});
  
  		Object.defineProperty(this, 'modifierExtension', {
  			enumerable: true,
  			get: () => this.__data.modifierExtension,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Extension = require('./extension.js');
  				this.__data.modifierExtension = Array.isArray(value)
  					? value.map(v => new Extension(v))
  					: [new Extension(value)];
  			},
  		});
  
  		Object.defineProperty(this, 'identifier', {
  			enumerable: true,
  			get: () => this.__data.identifier,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Identifier = require('./identifier.js');
  				this.__data.identifier = Array.isArray(value) ? value.map(v => new Identifier(v)) : [new Identifier(value)];
  			},
  		});
  
  		Object.defineProperty(this, '_status', {
  			enumerable: true,
  			get: () => this.__data._status,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Element = require('./element.js');
  				this.__data._status = new Element(value);
  			},
  		});
  		// valueSetReference: http://hl7.org/fhir/ValueSet/fm-status
  		Object.defineProperty(this, 'status', {
  			enumerable: true,
  			get: () => this.__data.status,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				this.__data.status = value;
  			},
  		});
  
  		Object.defineProperty(this, '_action', {
  			enumerable: true,
  			get: () => this.__data._action,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Element = require('./element.js');
  				this.__data._action = new Element(value);
  			},
  		});
  		// valueSetReference: http://hl7.org/fhir/ValueSet/actionlist
  		Object.defineProperty(this, 'action', {
  			enumerable: true,
  			get: () => this.__data.action,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				this.__data.action = value;
  			},
  		});
  
  		Object.defineProperty(this, 'target', {
  			enumerable: true,
  			get: () => this.__data.target,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Reference = require('./reference.js');
  				this.__data.target = new Reference(value);
  			},
  		});
  
  		Object.defineProperty(this, '_created', {
  			enumerable: true,
  			get: () => this.__data._created,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Element = require('./element.js');
  				this.__data._created = new Element(value);
  			},
  		});
  
  		Object.defineProperty(this, 'created', {
  			enumerable: true,
  			get: () => this.__data.created,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				this.__data.created = value;
  			},
  		});
  
  		Object.defineProperty(this, 'provider', {
  			enumerable: true,
  			get: () => this.__data.provider,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Reference = require('./reference.js');
  				this.__data.provider = new Reference(value);
  			},
  		});
  
  		Object.defineProperty(this, 'organization', {
  			enumerable: true,
  			get: () => this.__data.organization,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Reference = require('./reference.js');
  				this.__data.organization = new Reference(value);
  			},
  		});
  
  		Object.defineProperty(this, 'request', {
  			enumerable: true,
  			get: () => this.__data.request,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Reference = require('./reference.js');
  				this.__data.request = new Reference(value);
  			},
  		});
  
  		Object.defineProperty(this, 'response', {
  			enumerable: true,
  			get: () => this.__data.response,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Reference = require('./reference.js');
  				this.__data.response = new Reference(value);
  			},
  		});
  
  		Object.defineProperty(this, '_nullify', {
  			enumerable: true,
  			get: () => this.__data._nullify,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Element = require('./element.js');
  				this.__data._nullify = new Element(value);
  			},
  		});
  
  		Object.defineProperty(this, 'nullify', {
  			enumerable: true,
  			get: () => this.__data.nullify,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				this.__data.nullify = value;
  			},
  		});
  
  		Object.defineProperty(this, '_reference', {
  			enumerable: true,
  			get: () => this.__data._reference,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Element = require('./element.js');
  				this.__data._reference = new Element(value);
  			},
  		});
  
  		Object.defineProperty(this, 'reference', {
  			enumerable: true,
  			get: () => this.__data.reference,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				this.__data.reference = value;
  			},
  		});
  
  		Object.defineProperty(this, 'item', {
  			enumerable: true,
  			get: () => this.__data.item,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let ProcessRequestItem = require('./processrequestitem.js');
  				this.__data.item = Array.isArray(value)
  					? value.map(v => new ProcessRequestItem(v))
  					: [new ProcessRequestItem(value)];
  			},
  		});
  
  		Object.defineProperty(this, '_include', {
  			enumerable: true,
  			get: () => this.__data._include,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Element = require('./element.js');
  				this.__data._include = new Element(value);
  			},
  		});
  
  		Object.defineProperty(this, 'include', {
  			enumerable: true,
  			get: () => this.__data.include,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				this.__data.include = Array.isArray(value) ? value.map(v => v) : [value];
  			},
  		});
  
  		Object.defineProperty(this, '_exclude', {
  			enumerable: true,
  			get: () => this.__data._exclude,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Element = require('./element.js');
  				this.__data._exclude = new Element(value);
  			},
  		});
  
  		Object.defineProperty(this, 'exclude', {
  			enumerable: true,
  			get: () => this.__data.exclude,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				this.__data.exclude = Array.isArray(value) ? value.map(v => v) : [value];
  			},
  		});
  
  		Object.defineProperty(this, 'period', {
  			enumerable: true,
  			get: () => this.__data.period,
  			set: value => {
  				if (value === undefined || value === null) {
  					return;
  				}
  
  				let Period = require('./period.js');
  				this.__data.period = new Period(value);
  			},
  		});
  
  		// Merge in any defaults
  		Object.assign(this, opts);
  
  		// Define a default non-writable resourceType property
  		Object.defineProperty(this, 'resourceType', {
  			value: 'ProcessRequest',
  			enumerable: true,
  			writable: false,
  		});
  	}
  
  	static get resourceType() {
  		return 'ProcessRequest';
  	}
  
  	toJSON() {
  		return {
  			resourceType: this.resourceType,
  			_id: this._id && this._id.toJSON(),
  			id: this.id,
  			meta: this.meta && this.meta.toJSON(),
  			_implicitRules: this._implicitRules && this._implicitRules.toJSON(),
  			implicitRules: this.implicitRules,
  			_language: this._language && this._language.toJSON(),
  			language: this.language,
  			text: this.text && this.text.toJSON(),
  			contained: this.contained,
  			extension: this.extension && this.extension.map(v => v.toJSON()),
  			modifierExtension: this.modifierExtension && this.modifierExtension.map(v => v.toJSON()),
  			identifier: this.identifier && this.identifier.map(v => v.toJSON()),
  			_status: this._status && this._status.toJSON(),
  			status: this.status,
  			_action: this._action && this._action.toJSON(),
  			action: this.action,
  			target: this.target && this.target.toJSON(),
  			_created: this._created && this._created.toJSON(),
  			created: this.created,
  			provider: this.provider && this.provider.toJSON(),
  			organization: this.organization && this.organization.toJSON(),
  			request: this.request && this.request.toJSON(),
  			response: this.response && this.response.toJSON(),
  			_nullify: this._nullify && this._nullify.toJSON(),
  			nullify: this.nullify,
  			_reference: this._reference && this._reference.toJSON(),
  			reference: this.reference,
  			item: this.item && this.item.map(v => v.toJSON()),
  			_include: this._include && this._include.toJSON(),
  			include: this.include,
  			_exclude: this._exclude && this._exclude.toJSON(),
  			exclude: this.exclude,
  			period: this.period && this.period.toJSON(),
  		};
  	}
  };
  