/portal/patient/scripts/model.js
JavaScript | 822 lines | 691 code | 35 blank | 96 comment | 14 complexity | a4d9eb071abda92cd9b91c8421be01d2 MD5 | raw file
Possible License(s): Apache-2.0, AGPL-1.0, GPL-2.0, LGPL-3.0, BSD-3-Clause, Unlicense, MPL-2.0, GPL-3.0, LGPL-2.1
- /**
- * backbone model definitions for Patient Portal
- *
- * From phreeze package
- * @license http://www.gnu.org/copyleft/lesser.html LGPL
- *
- */
- /**
- * Use emulated HTTP if the server doesn't support PUT/DELETE or application/json requests
- */
- Backbone.emulateHTTP = false;
- Backbone.emulateJSON = false;
- var model = {};
- /**
- * long polling duration in miliseconds. (5000 = recommended, 0 = disabled)
- * warning: setting this to a low number will increase server load
- */
- model.longPollDuration = 0;
- /**
- * whether to refresh the collection immediately after a model is updated
- */
- model.reloadCollectionOnModelUpdate = true;
- /**
- * a default sort method for sorting collection items. this will sort the collection
- * based on the orderBy and orderDesc property that was used on the last fetch call
- * to the server.
- */
- model.AbstractCollection = Backbone.Collection.extend({
- totalResults: 0,
- totalPages: 0,
- currentPage: 0,
- pageSize: 0,
- orderBy: '',
- orderDesc: false,
- lastResponseText: null,
- lastRequestParams: null,
- collectionHasChanged: true,
- /**
- * fetch the collection from the server using the same options and
- * parameters as the previous fetch
- */
- refetch: function() {
- this.fetch({ data: this.lastRequestParams })
- },
- /* uncomment to debug fetch event triggers
- fetch: function(options) {
- this.constructor.__super__.fetch.apply(this, arguments);
- },
- // */
- /**
- * client-side sorting baesd on the orderBy and orderDesc parameters that
- * were used to fetch the data from the server. Backbone ignores the
- * order of records coming from the server so we have to sort them ourselves
- */
- comparator: function(a,b) {
- var result = 0;
- var options = this.lastRequestParams;
- if (options && options.orderBy) {
- // lcase the first letter of the property name
- var propName = options.orderBy.charAt(0).toLowerCase() + options.orderBy.slice(1);
- var aVal = a.get(propName);
- var bVal = b.get(propName);
- if (isNaN(aVal) || isNaN(bVal)) {
- // treat comparison as case-insensitive strings
- aVal = aVal ? aVal.toLowerCase() : '';
- bVal = bVal ? bVal.toLowerCase() : '';
- } else {
- // treat comparision as a number
- aVal = Number(aVal);
- bVal = Number(bVal);
- }
- if (aVal < bVal) {
- result = options.orderDesc ? 1 : -1;
- } else if (aVal > bVal) {
- result = options.orderDesc ? -1 : 1;
- }
- }
- return result;
- },
- /**
- * override parse to track changes and handle pagination
- * if the server call has returned page data
- */
- parse: function(response, options) {
- // the response is already decoded into object form, but it's easier to
- // compary the stringified version. some earlier versions of backbone did
- // not include the raw response so there is some legacy support here
- var responseText = options && options.xhr ? options.xhr.responseText : JSON.stringify(response);
- this.collectionHasChanged = (this.lastResponseText != responseText);
- this.lastRequestParams = options ? options.data : undefined;
- // if the collection has changed then we need to force a re-sort because backbone will
- // only resort the data if a property in the model has changed
- if (this.lastResponseText && this.collectionHasChanged) this.sort({ silent:true });
- this.lastResponseText = responseText;
- var rows;
- if (response.currentPage) {
- rows = response.rows;
- this.totalResults = response.totalResults;
- this.totalPages = response.totalPages;
- this.currentPage = response.currentPage;
- this.pageSize = response.pageSize;
- this.orderBy = response.orderBy;
- this.orderDesc = response.orderDesc;
- } else {
- rows = response;
- this.totalResults = rows.length;
- this.totalPages = 1;
- this.currentPage = 1;
- this.pageSize = this.totalResults;
- this.orderBy = response.orderBy;
- this.orderDesc = response.orderDesc;
- }
- return rows;
- }
- });
- /**
- * OnsiteDocument Backbone Model
- */
- model.OnsiteDocumentModel = Backbone.Model.extend({
- urlRoot: 'api/onsitedocument',
- idAttribute: 'id',
- id: '',
- pid: '',
- facility: '',
- provider: '',
- encounter: '',
- createDate: '',
- docType: '',
- patientSignedStatus: '',
- patientSignedTime: '',
- authorizeSignedTime: '',
- acceptSignedStatus: '',
- authorizingSignator: '',
- reviewDate: '',
- denialReason: '',
- authorizedSignature: '',
- patientSignature: '',
- fullDocument: '',
- fileName: '',
- filePath: '',
- defaults: {
- 'id': null,
- 'pid': 0,
- 'facility': 0,
- 'provider': 0,
- 'encounter': 0,
- 'createDate':new Date(),
- 'docType': '',
- 'patientSignedStatus': '0',
- 'patientSignedTime': '0000-00-00',
- 'authorizeSignedTime': '0000-00-00',
- 'acceptSignedStatus': '0',
- 'authorizingSignator': '',
- 'reviewDate': '0000-00-00',
- 'denialReason': 'New',
- 'authorizedSignature': '',
- 'patientSignature': '',
- 'fullDocument': '',
- 'fileName': '',
- 'filePath': ''
- }
- });
- /**
- * OnsiteDocument Backbone Collection
- */
- model.OnsiteDocumentCollection = model.AbstractCollection.extend({
- url: 'api/onsitedocuments',
- model: model.OnsiteDocumentModel
- });
- /**
- * OnsitePortalActivity Backbone Model
- */
- model.OnsitePortalActivityModel = Backbone.Model.extend({
- urlRoot: 'api/onsiteportalactivity',
- idAttribute: 'id',
- id: '',
- date: '',
- patientId: '',
- activity: '',
- requireAudit: '',
- pendingAction: '',
- actionTaken: '',
- status: '',
- narrative: '',
- tableAction: '',
- tableArgs: '',
- actionUser: '',
- actionTakenTime: '',
- checksum: '',
- defaults: {
- 'id': null,
- 'date': '0000-00-0000',
- 'patientId': '0',
- 'activity': '',
- 'requireAudit': '1',
- 'pendingAction': 'review',
- 'actionTaken': '',
- 'status': 'waiting',
- 'narrative': '',
- 'tableAction': '',
- 'tableArgs': '',
- 'actionUser': '0',
- 'actionTakenTime': '0000-00-0000',
- 'checksum': '0'
- }
- });
- /**
- * OnsitePortalActivity Backbone Collection
- */
- model.OnsitePortalActivityCollection = model.AbstractCollection.extend({
- url: 'api/onsiteportalactivities',
- model: model.OnsitePortalActivityModel
- });
- /**
- * OnsiteActivityView Backbone Model
- */
- model.OnsiteActivityViewModel = Backbone.Model.extend({
- urlRoot: 'api/onsiteactivityview',
- idAttribute: 'id',
- id: '',
- date: '',
- patientId: '',
- activity: '',
- requireAudit: '',
- pendingAction: '',
- actionTaken: '',
- status: '',
- narrative: '',
- tableAction: '',
- tableArgs: '',
- actionUser: '',
- actionTakenTime: '',
- checksum: '',
- title: '',
- fname: '',
- lname: '',
- mname: '',
- dob: '',
- ss: '',
- street: '',
- postalCode: '',
- city: '',
- state: '',
- referrerid: '',
- providerid: '',
- refProviderid: '',
- pubpid: '',
- careTeam: '',
- username: '',
- authorized: '',
- ufname: '',
- umname: '',
- ulname: '',
- facility: '',
- active: '',
- utitle: '',
- physicianType: '',
- defaults: {
- 'id': null,
- 'date': new Date(),
- 'patientId': '',
- 'activity': '',
- 'requireAudit': '',
- 'pendingAction': '',
- 'actionTaken': '',
- 'status': '',
- 'narrative': '',
- 'tableAction': '',
- 'tableArgs': '',
- 'actionUser': '',
- 'actionTakenTime': new Date(),
- 'checksum': '',
- 'title': '',
- 'fname': '',
- 'lname': '',
- 'mname': '',
- 'dob': new Date(),
- 'ss': '',
- 'street': '',
- 'postalCode': '',
- 'city': '',
- 'state': '',
- 'referrerid': '',
- 'providerid': '',
- 'refProviderid': '',
- 'pubpid': '',
- 'careTeam': '',
- 'username': '',
- 'authorized': '',
- 'ufname': '',
- 'umname': '',
- 'ulname': '',
- 'facility': '',
- 'active': '',
- 'utitle': '',
- 'physicianType': ''
- }
- });
- /**
- * OnsiteActivityView Backbone Collection
- */
- model.OnsiteActivityViewCollection = model.AbstractCollection.extend({
- url: 'api/onsiteactivityviews',
- model: model.OnsiteActivityViewModel
- });
- /**
- * Patient Backbone Model
- */
- model.PatientModel = Backbone.Model.extend({
- urlRoot: 'api/patient',
- idAttribute: 'id',
- id: '',
- title: '',
- language: '',
- fname: '',
- lname: '',
- mname: '',
- dob: '',
- street: '',
- postalCode: '',
- city: '',
- state: '',
- countryCode: '',
- driversLicense: '',
- ss: '',
- occupation: '',
- phoneHome: '',
- phoneBiz: '',
- phoneContact: '',
- phoneCell: '',
- pharmacyId: '',
- status: '',
- contactRelationship: '',
- date: '',
- sex: '',
- referrer: '',
- referrerid: '',
- providerid: '',
- refProviderid: '',
- email: '',
- emailDirect: '',
- ethnoracial: '',
- race: '',
- ethnicity: '',
- religion: '',
- familySize: '',
- pubpid: '',
- pid: '',
- hipaaMail: '',
- hipaaVoice: '',
- hipaaNotice: '',
- hipaaMessage: '',
- hipaaAllowsms: '',
- hipaaAllowemail: '',
- regdate: '',
- mothersname: '',
- guardiansname: '',
- allowImmRegUse: '',
- allowImmInfoShare: '',
- allowHealthInfoEx: '',
- allowPatientPortal: '',
- careTeam: '',
- county: '',
- note: '',
- defaults: {
- 'id': null,
- 'title': '',
- 'language': '',
- 'fname': '',
- 'lname': '',
- 'mname': '',
- 'dob': '',
- 'street': '',
- 'postalCode': '',
- 'city': '',
- 'state': '',
- 'countryCode': '',
- 'driversLicense': '',
- 'ss': '',
- 'occupation': '',
- 'phoneHome': '',
- 'phoneBiz': '',
- 'phoneContact': '',
- 'phoneCell': '',
- 'pharmacyId': '',
- 'status': '',
- 'contactRelationship': '',
- 'date': new Date().toISOString().slice(0,10),
- 'sex': '',
- 'referrer': '',
- 'referrerid': '',
- 'providerid': '',
- 'refProviderid': '',
- 'email': '',
- 'emailDirect': '',
- 'ethnoracial': '',
- 'race': '',
- 'ethnicity': '',
- 'religion': '',
- 'familySize': '',
- 'pubpid': '',
- 'pid': '',
- 'hipaaMail': '',
- 'hipaaVoice': '',
- 'hipaaNotice': '',
- 'hipaaMessage': '',
- 'hipaaAllowsms': '',
- 'hipaaAllowemail': '',
- 'regdate': new Date().toISOString().slice(0,10),
- 'mothersname': '',
- 'guardiansname': '',
- 'allowImmRegUse': '',
- 'allowImmInfoShare': '',
- 'allowHealthInfoEx': '',
- 'allowPatientPortal': '',
- 'careTeam': '',
- 'county': '',
- 'note': ''
- }
- });
- /**
- * Patient Backbone Collection
- */
- model.PatientCollection = model.AbstractCollection.extend({
- url: 'api/patientdata',
- model: model.PatientModel
- });
- /**
- * Portal Patient Edit Backbone Model
- */
- model.PortalPatientModel = Backbone.Model.extend({
- urlRoot: 'api/portalpatient',
- idAttribute: 'id',
- id: '',
- title: '',
- language: '',
- fname: '',
- lname: '',
- mname: '',
- dob: '',
- street: '',
- postalCode: '',
- city: '',
- state: '',
- countryCode: '',
- driversLicense: '',
- ss: '',
- occupation: '',
- phoneHome: '',
- phoneBiz: '',
- phoneContact: '',
- phoneCell: '',
- pharmacyId: '',
- status: '',
- contactRelationship: '',
- date: '',
- sex: '',
- referrer: '',
- referrerid: '',
- providerid: '',
- refProviderid: '',
- email: '',
- emailDirect: '',
- ethnoracial: '',
- race: '',
- ethnicity: '',
- religion: '',
- familySize: '',
- pubpid: '',
- pid: '',
- hipaaMail: '',
- hipaaVoice: '',
- hipaaNotice: '',
- hipaaMessage: '',
- hipaaAllowsms: '',
- hipaaAllowemail: '',
- regdate: '',
- mothersname: '',
- guardiansname: '',
- allowImmRegUse: '',
- allowImmInfoShare: '',
- allowHealthInfoEx: '',
- allowPatientPortal: '',
- careTeam: '',
- county: '',
- note: '',
- defaults: {
- 'id': null,
- 'title': '',
- 'language': '',
- 'fname': '',
- 'lname': '',
- 'mname': '',
- 'dob': '',
- 'street': '',
- 'postalCode': '',
- 'city': '',
- 'state': '',
- 'countryCode': '',
- 'driversLicense': '',
- 'ss': '',
- 'occupation': '',
- 'phoneHome': '',
- 'phoneBiz': '',
- 'phoneContact': '',
- 'phoneCell': '',
- 'pharmacyId': '',
- 'status': '',
- 'contactRelationship': '',
- 'date': new Date().toISOString().slice(0,10),
- 'sex': '',
- 'referrer': '',
- 'referrerid': '',
- 'providerid': '',
- 'refProviderid': '',
- 'email': '',
- 'emailDirect': '',
- 'ethnoracial': '',
- 'race': '',
- 'ethnicity': '',
- 'religion': '',
- 'familySize': '',
- 'pubpid': '',
- 'pid': '',
- 'hipaaMail': '',
- 'hipaaVoice': '',
- 'hipaaNotice': '',
- 'hipaaMessage': '',
- 'hipaaAllowsms': '',
- 'hipaaAllowemail': '',
- 'regdate': new Date().toISOString().slice(0,10),
- 'mothersname': '',
- 'guardiansname': '',
- 'allowImmRegUse': '',
- 'allowImmInfoShare': '',
- 'allowHealthInfoEx': '',
- 'allowPatientPortal': '',
- 'careTeam': '',
- 'county': '',
- 'note': ''
- }
- });
- /**
- * Portal Patient Backbone Collection
- */
- model.PortalPatientCollection = model.AbstractCollection.extend({
- url: 'api/portalpatientdata',
- model: model.PortalPatientModel
- });/**/
- /**
- * User Backbone Model
- */
- model.UserModel = Backbone.Model.extend({
- urlRoot: 'api/user',
- idAttribute: 'id',
- id: '',
- username: '',
- password: '',
- authorized: '',
- info: '',
- source: '',
- fname: '',
- mname: '',
- lname: '',
- federaltaxid: '',
- federaldrugid: '',
- upin: '',
- facility: '',
- facilityId: '',
- seeAuth: '',
- active: '',
- npi: '',
- title: '',
- specialty: '',
- billname: '',
- email: '',
- emailDirect: '',
- eserUrl: '',
- assistant: '',
- organization: '',
- valedictory: '',
- street: '',
- streetb: '',
- city: '',
- state: '',
- zip: '',
- street2: '',
- streetb2: '',
- city2: '',
- state2: '',
- zip2: '',
- phone: '',
- fax: '',
- phonew1: '',
- phonew2: '',
- phonecell: '',
- notes: '',
- calUi: '',
- taxonomy: '',
- ssiRelayhealth: '',
- calendar: '',
- abookType: '',
- pwdExpirationDate: '',
- pwdHistory1: '',
- pwdHistory2: '',
- defaultWarehouse: '',
- irnpool: '',
- stateLicenseNumber: '',
- newcropUserRole: '',
- cpoe: '',
- physicianType: '',
- portalUser: '',
- defaults: {
- 'id': null,
- 'username': '',
- 'password': '',
- 'authorized': '',
- 'info': '',
- 'source': '',
- 'fname': '',
- 'mname': '',
- 'lname': '',
- 'federaltaxid': '',
- 'federaldrugid': '',
- 'upin': '',
- 'facility': '',
- 'facilityId': '',
- 'seeAuth': '',
- 'active': '',
- 'npi': '',
- 'title': '',
- 'specialty': '',
- 'billname': '',
- 'email': '',
- 'emailDirect': '',
- 'eserUrl': '',
- 'assistant': '',
- 'organization': '',
- 'valedictory': '',
- 'street': '',
- 'streetb': '',
- 'city': '',
- 'state': '',
- 'zip': '',
- 'street2': '',
- 'streetb2': '',
- 'city2': '',
- 'state2': '',
- 'zip2': '',
- 'phone': '',
- 'fax': '',
- 'phonew1': '',
- 'phonew2': '',
- 'phonecell': '',
- 'notes': '',
- 'calUi': '',
- 'taxonomy': '',
- 'ssiRelayhealth': '',
- 'calendar': '',
- 'abookType': '',
- 'pwdExpirationDate': '',
- 'pwdHistory1': '',
- 'pwdHistory2': '',
- 'defaultWarehouse': '',
- 'irnpool': '',
- 'stateLicenseNumber': '',
- 'newcropUserRole': '',
- 'cpoe': '',
- 'physicianType': '',
- 'portalUser': 0
- }
- });
- /**
- * User Backbone Collection
- */
- model.UserCollection = model.AbstractCollection.extend({
- url: 'api/users',
- model: model.UserModel
- });
- /**
- * InsuranceCompany Backbone Model
- */
- model.InsuranceCompanyModel = Backbone.Model.extend({
- urlRoot: 'api/insurancecompany',
- idAttribute: 'id',
- id: '',
- name: '',
- attn: '',
- cmsId: '',
- freebType: '',
- x12ReceiverId: '',
- x12DefaultPartnerId: '',
- altCmsId: '',
- defaults: {
- 'id': null,
- 'name': '',
- 'attn': '',
- 'cmsId': '',
- 'freebType': '',
- 'x12ReceiverId': '',
- 'x12DefaultPartnerId': '',
- 'altCmsId': ''
- }
- });
- /**
- * InsuranceCompany Backbone Collection
- */
- model.InsuranceCompanyCollection = model.AbstractCollection.extend({
- url: 'api/insurancecompanies',
- model: model.InsuranceCompanyModel
- });
- /**
- * InsuranceData Backbone Model
- */
- model.InsuranceDataModel = Backbone.Model.extend({
- urlRoot: 'api/insurancedata',
- idAttribute: 'id',
- id: '',
- type: '',
- provider: '',
- planName: '',
- policyNumber: '',
- groupNumber: '',
- subscriberLname: '',
- subscriberMname: '',
- subscriberFname: '',
- subscriberRelationship: '',
- subscriberSs: '',
- subscriberDob: '',
- subscriberStreet: '',
- subscriberPostalCode: '',
- subscriberCity: '',
- subscriberState: '',
- subscriberCountry: '',
- subscriberPhone: '',
- subscriberEmployer: '',
- subscriberEmployerStreet: '',
- subscriberEmployerPostalCode: '',
- subscriberEmployerState: '',
- subscriberEmployerCountry: '',
- subscriberEmployerCity: '',
- copay: '',
- date: '',
- pid: '',
- subscriberSex: '',
- acceptAssignment: '',
- policyType: '',
- defaults: {
- 'id': null,
- 'type': '',
- 'provider': '',
- 'planName': '',
- 'policyNumber': '',
- 'groupNumber': '',
- 'subscriberLname': '',
- 'subscriberMname': '',
- 'subscriberFname': '',
- 'subscriberRelationship': '',
- 'subscriberSs': '',
- 'subscriberDob': new Date(),
- 'subscriberStreet': '',
- 'subscriberPostalCode': '',
- 'subscriberCity': '',
- 'subscriberState': '',
- 'subscriberCountry': '',
- 'subscriberPhone': '',
- 'subscriberEmployer': '',
- 'subscriberEmployerStreet': '',
- 'subscriberEmployerPostalCode': '',
- 'subscriberEmployerState': '',
- 'subscriberEmployerCountry': '',
- 'subscriberEmployerCity': '',
- 'copay': '',
- 'date': new Date(),
- 'pid': '',
- 'subscriberSex': '',
- 'acceptAssignment': '',
- 'policyType': ''
- }
- });
- /**
- * InsuranceData Backbone Collection
- */
- model.InsuranceDataCollection = model.AbstractCollection.extend({
- url: 'api/insurancedatas',
- model: model.InsuranceDataModel
- });