/// <summary> /// Prepare the model for adding a new encounter /// </summary> private EncounterDetail PrepareEncounterDetail(EncounterForCreationDto encounterForCreation) { var encounterDetail = new EncounterDetail(); encounterDetail = _mapper.Map <EncounterDetail>(encounterForCreation); return(encounterDetail); }
/// <summary> /// Register patient encounter /// </summary> public async Task <int> AddEncounterAsync(Patient patient, EncounterDetail encounterDetail) { var encounterType = _encounterTypeRepository.Get(et => et.Id == encounterDetail.EncounterTypeId); if (encounterType == null) { throw new ArgumentException(nameof(encounterDetail.EncounterTypeId)); } var priority = _priorityRepository.Get(p => p.Id == encounterDetail.PriorityId); if (priority == null) { throw new ArgumentException(nameof(encounterDetail.PriorityId)); } var newEncounter = new Encounter(patient) { EncounterType = encounterType, Priority = priority, EncounterDate = encounterDetail.EncounterDate, Notes = encounterDetail.Notes }; //newEncounter.AuditStamp(user); await _encounterRepository.SaveAsync(newEncounter); var encounterTypeWorkPlan = _encounterTypeWorkPlanRepository.Get(et => et.EncounterType.Id == encounterType.Id, new string[] { "WorkPlan.Dataset" }); if (encounterTypeWorkPlan != null) { // Create a new instance var dataset = _datasetRepository.Get(d => d.Id == encounterTypeWorkPlan.WorkPlan.Dataset.Id, new string[] { "DatasetCategories.DatasetCategoryElements.DatasetElement.Field.FieldType" }); if (dataset != null) { var datasetInstance = dataset.CreateInstance(newEncounter.Id, "", encounterTypeWorkPlan, null, null); await _datasetInstanceRepository.SaveAsync(datasetInstance); } } return(newEncounter.Id); }