private static MedicationRequest.DispenseRequestComponent MakeDispenseRequest(ResourceReference nom, System.Collections.Generic.List <string> rx, System.Collections.Generic.List <string> item) { MedicationRequest.DispenseRequestComponent dr = new MedicationRequest.DispenseRequestComponent(); Extension e = FhirHelper.MakeExtension(null, "https://fhir.nhs.uk/R4/StructureDefinition/Extension-performerType", FhirHelper.MakeCoding("https://fhir.nhs.uk/R4/CodeSystem/dispensing-site-preference", rx[EMUData.DISPENSINGSITEPREFERENCE], null)); try { dr.Quantity = new SimpleQuantity { Code = item[EMUData.QUANTITYCODE], System = "http://snomed.info/sct", Unit = item[EMUData.QUANTITYTEXT], Value = Convert.ToDecimal(item[EMUData.QUANTITYCOUNT]) }; } catch (Exception ex) { #pragma warning disable CA2241 // Provide correct arguments to formatting methods Console.WriteLine("Exception: {ex} making SimpleQuantity: {value}", ex.Message, item[EMUData.QUANTITYCOUNT]); #pragma warning restore CA2241 // Provide correct arguments to formatting methods } if (nom != null) { dr.Performer = nom; } dr.Extension.Add(e); return(dr); }
public static ThingBase ToHealthVault(this MedicationRequest medicationRequest) { var fhirMedication = MedicationRequestHelper.ExtractEmbeddedMedication(medicationRequest); if (fhirMedication == null) { return(null); } var hvMedication = fhirMedication.ToHealthVault() as HVMedication; var practitioner = ExtractEmbeddedPractitioner(medicationRequest); if (practitioner == null) { throw new NotSupportedException($"{nameof(MedicationRequest)} needs to have an embedded Requester Agent"); } var prescription = new Prescription(practitioner.ToHealthVault()); if (medicationRequest.AuthoredOnElement != null) { var dt = medicationRequest.AuthoredOnElement.ToDateTimeOffset(); prescription.DatePrescribed = new ApproximateDateTime( new ApproximateDate(dt.Year, dt.Month, dt.Day), new ApproximateTime(dt.Hour, dt.Minute, dt.Second, dt.Millisecond)); } MedicationRequest.DispenseRequestComponent dispenseRequest = medicationRequest.DispenseRequest; if (dispenseRequest != null) { var numerator = dispenseRequest.Quantity; if (numerator != null) { var structuredMeasurement = new StructuredMeasurement { Value = (double)numerator.Value, Units = CodeToHealthVaultHelper.CreateCodableValueFromQuantityValues(numerator.System, numerator.Code, numerator.Unit) }; prescription.AmountPrescribed = new GeneralMeasurement(); prescription.AmountPrescribed.Structured.Add(structuredMeasurement); } prescription.Refills = dispenseRequest.NumberOfRepeatsAllowed; prescription.DaysSupply = GetDaysFromDuration(dispenseRequest.ExpectedSupplyDuration); FhirDateTime end = dispenseRequest.ValidityPeriod?.EndElement; if (end != null) { var endDate = end.ToDateTimeOffset(); prescription.PrescriptionExpiration = new HealthServiceDate(endDate.Year , endDate.Month, endDate.Day); } } if (medicationRequest.DosageInstruction.Any()) { var dosageInstruction = medicationRequest.DosageInstruction .FirstOrDefault(dosage => dosage.AdditionalInstruction.Any()); if (dosageInstruction != null) { var instruction = dosageInstruction.AdditionalInstruction.First(); prescription.Instructions = instruction.ToCodableValue(); } } if (medicationRequest.Substitution != null) { prescription.Substitution = GetSubstitutionCode(medicationRequest, prescription); } hvMedication.Prescription = prescription; return(hvMedication); }