Summary Table
| Categories |
Total Count |
| PII |
0 |
| URL |
0 |
| DNS |
0 |
| EKL |
0 |
| IP |
0 |
| PORT |
0 |
| VsID |
0 |
| CF |
0 |
| AI |
0 |
| VPD |
0 |
| PL |
0 |
| Other |
0 |
File Content
define(['angular', 'app'], function (angular, app) {
'use strict';
app.service('videoUploadService', function ($q, fhirResources, videoService) {
var BASE64_PLACEHOLDER = '[[base64-media]]';
return {
uploadVideo: function (file, data, saveEval) {
saveEval = (typeof saveEval === 'undefined') ? true : saveEval;
var deferred = $q.defer();
var that = this;
var video = data;
var evaluation = videoService.getEvaluation(),
method = data.id ? 'PUT' : 'POST',
resourceName = data.id? 'Media/' + data.id : 'Media',
media = that.createMedia(data.id, evaluation.mediaRequestId, file);
fhirResources.appendProvenanceMetadata(media);
media = JSON.stringify(media);
var base64Index = media.indexOf(BASE64_PLACEHOLDER);
that.getBase64(file).then(function (data) {
media = data.replace("data:" + file.type + ";base64,", media.substring(0, base64Index))
+ media.substring(base64Index + BASE64_PLACEHOLDER.length);
var resourceConfig = {
method: method,
resourceName: resourceName,
data: new Blob([media], {type : 'application/json'})
};
fhirResources.createUpdateFhirResource(resourceConfig).then(
function (response) {
video.id = response.split("/")[1];
video.imageUrl = fhirResources.getFhirBaseUrl() + "/" + response;
videoService.setVideo(video);
if (saveEval) {
videoService.saveEvaluation().then(function () {
deferred.resolve();
});
} else {
deferred.resolve();
}
},
function (error) {
deferred.reject(error);
}
);
});
return deferred.promise;
},
getBase64: function(file) {
var deferred = $q.defer();
var reader = new FileReader();
reader.onload = function () {
deferred.resolve(reader.result);
};
reader.onerror = function (error) {
deferred.reject();
};
reader.readAsDataURL(file);
return deferred.promise;
},
createMedia: function(videoId, mediaRequestId, file) {
var response = {
resourceType: 'Media',
type: 'video',
identifier: [{value: mediaRequestId}],
subject: {reference: 'Patient/' + videoService.getPatient().id},
content: {
data: BASE64_PLACEHOLDER,
contentType: file.type,
size: file.size,
title: file.name
}
};
if(videoId)
response.id = videoId;
return response;
}
};
});
});