feature: FHIR R4 Inbound Facade
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
using Hl7.Fhir.Model;
|
||||
|
||||
internal static class FhirMappingHelpers
|
||||
{
|
||||
public static DateTimeOffset? ToUtcDateTimeOffset(this DataType? value)
|
||||
{
|
||||
return value switch
|
||||
{
|
||||
FhirDateTime fdt => fdt.ToDateTimeOffset(TimeSpan.Zero),
|
||||
Period p when p.StartElement is not null => p.StartElement.ToDateTimeOffset(TimeSpan.Zero),
|
||||
Instant i => i.Value,
|
||||
_ => null
|
||||
};
|
||||
}
|
||||
|
||||
public static bool TryParseResourceReference(string? reference, out string resourceType, out string id)
|
||||
{
|
||||
resourceType = "";
|
||||
id = "";
|
||||
|
||||
if (string.IsNullOrWhiteSpace(reference))
|
||||
return false;
|
||||
|
||||
var refValue = reference;
|
||||
if (Uri.TryCreate(refValue, UriKind.Absolute, out var uri))
|
||||
refValue = uri.AbsolutePath.TrimStart('/');
|
||||
|
||||
var slash = refValue.IndexOf('/');
|
||||
if (slash <= 0)
|
||||
return false;
|
||||
|
||||
resourceType = refValue[..slash];
|
||||
id = refValue[(slash + 1)..];
|
||||
|
||||
var historyIdx = id.IndexOf('/');
|
||||
if (historyIdx > 0)
|
||||
id = id[..historyIdx];
|
||||
|
||||
return !string.IsNullOrWhiteSpace(resourceType) && !string.IsNullOrWhiteSpace(id);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user