Ejemplo n.º 1
0
        public ICommandResult TransformMedicalRecordsToHTML(Guid idExam)
        {
            var command = new TransformMedicalRecordsToHTMLCommand
            {
                IdExam = idExam
            };

            var result = (CommandResult)_handler.Handle(command);

            return(result);
        }
Ejemplo n.º 2
0
        public ICommandResult Handle(TransformMedicalRecordsToHTMLCommand command)
        {
            var exam = _repository.GetExam(command.IdExam);

            if (exam == null)
            {
                return(new CommandResult(false, "Exame não encontrado", Notifications));
            }

            if (exam.Type != Enums.EExamType.Electrocardiography)
            {
                return(new CommandResult(false, "O exame deve ser do tipo Eletrocardiograma (ECG)", Notifications));
            }

            var patient = _repository.GetPatientByIdExam(command.IdExam);

            string xml      = _openEhrService.CreateCompositionAsXml(patient, exam);
            string buildDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string xslFile  = $"{buildDir}\\PatientContext\\XSLTransform\\openEHR_RMtoHTML.xsl";

            var results  = new StringWriter();
            var settings = new XmlReaderSettings
            {
                DtdProcessing = DtdProcessing.Parse
            };

            using (var reader = XmlReader.Create(xslFile, settings))
            {
                var transform = new XslCompiledTransform();
                transform.Load(reader);

                using (var readerTransform = XmlReader.Create(new StringReader(xml)))
                {
                    transform.Transform(readerTransform, null, results);
                }
            }

            string result = results.ToString();

            return(new CommandResult(true, "Transfomação gerada com sucesso", new { result }));
        }