【发布时间】:2021-06-03 08:06:44
【问题描述】:
我是使用 FHIR 的新手,需要在 C# 中解析 FHIR-Bundle (xml) 方面的帮助。我可以从包中的组合资源中获取患者或组织资源的 URL,但需要将资源的值(例如患者姓名)存储到变量中以使用它们,例如将它们存储到 SQL 数据库中。你能帮我吗?提前谢谢!
<Bundle xmlns="http://hl7.org/fhir">
<id value="0428d416-149e-48a4-977c-394887b3d85c" />
<meta>
<lastUpdated value="2021-04-06T08:30:00Z" />
<profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_ERP_Bundle|1.0.1" />
</meta>
<identifier>
<system value="https://gematik.de/fhir/NamingSystem/PrescriptionID" />
<value value="160.100.000.000.002.36" />
</identifier>
<type value="document" />
<timestamp value="2021-04-06T08:30:00Z" />
<entry>
<fullUrl value="http://pvs.praxis.local/fhir/Composition/a054c2f3-0123-4d33-a0b3-bedec2f7d1ea" />
<resource>
<Composition>
<id value="a054c2f3-0123-4d33-a0b3-bedec2f7d1ea" />
<meta>
<profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_ERP_Composition|1.0.1" />
</meta>
<extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_FOR_Legal_basis">
<valueCoding>
<system value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_STATUSKENNZEICHEN" />
<code value="00" />
</valueCoding>
</extension>
<status value="final" />
<type>
<coding>
<system value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_FORMULAR_ART" />
<code value="e16A" />
</coding>
</type>
<subject>
<reference value="Patient/512ab5bc-a7ab-4fd7-81cc-16a594f747a6" />
</subject>
<date value="2021-04-05T08:00:00Z" />
<author>
<reference value="Practitioner/e33d2afd-44c8-462b-80e5-52dbe5ebf359" />
<type value="Practitioner" />
</author>
<author>
<type value="Device" />
<identifier>
<system value="https://fhir.kbv.de/NamingSystem/KBV_NS_FOR_Pruefnummer" />
<value value="Y/410/2107/36/999" />
</identifier>
</author>
<title value="elektronische Arzneimittelverordnung" />
<custodian>
<reference value="Organization/d2b30a70-9830-4968-ab97-688472b6f9a3" />
</custodian>
<section>
<code>
<coding>
<system value="https://fhir.kbv.de/CodeSystem/KBV_CS_ERP_Section_Type" />
<code value="Prescription" />
</coding>
</code>
<entry>
<!-- Referenz auf Verordnung (MedicationRequest) -->
<reference value="MedicationRequest/06dc1594-509a-4f4c-ada7-dfd477a02d86" />
</entry>
</section>
<section>
<code>
<coding>
<system value="https://fhir.kbv.de/CodeSystem/KBV_CS_ERP_Section_Type" />
<code value="Coverage" />
</coding>
</code>
<entry>
<!-- Referenz auf Krankenkasse/Kostenträger -->
<reference value="Coverage/df0f2536-97b9-4bae-99cc-83ba2e8371e4" />
</entry>
</section>
</Composition>
</resource>
</entry>
<entry>
<fullUrl value="http://pvs.praxis.local/fhir/MedicationRequest/06dc1594-509a-4f4c-ada7-dfd477a02d86" />
<resource>
<MedicationRequest>
<!-- Beispiel MedicationRequest für eine PZN-Verordnung -->
<id value="06dc1594-509a-4f4c-ada7-dfd477a02d86" />
<meta>
<profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_ERP_Prescription|1.0.1" />
</meta>
<extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_StatusCoPayment">
<valueCoding>
<system value="https://fhir.kbv.de/CodeSystem/KBV_CS_ERP_StatusCoPayment" />
<code value="1" />
</valueCoding>
</extension>
<extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_EmergencyServicesFee">
<valueBoolean value="false" />
</extension>
<extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_BVG">
<valueBoolean value="false" />
</extension>
<extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_Multiple_Prescription">
<extension url="Kennzeichen">
<valueBoolean value="false" />
</extension>
</extension>
<status value="active" />
<intent value="order" />
<medicationReference>
<reference value="Medication/f568397d-7ba2-46ac-904b-02caec933b42" />
</medicationReference>
<subject>
<reference value="Patient/512ab5bc-a7ab-4fd7-81cc-16a594f747a6" />
</subject>
<authoredOn value="2020-04-06" />
<requester>
<reference value="Practitioner/e33d2afd-44c8-462b-80e5-52dbe5ebf359" />
</requester>
<insurance>
<reference value="Coverage/df0f2536-97b9-4bae-99cc-83ba2e8371e4" />
</insurance>
<dosageInstruction>
<extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_DosageFlag">
<valueBoolean value="true" />
</extension>
<text value="2mal tägl. 5ml" />
</dosageInstruction>
<dispenseRequest>
<quantity>
<value value="1" />
<system value="http://unitsofmeasure.org" />
<code value="{Package}" />
</quantity>
</dispenseRequest>
<substitution>
<allowedBoolean value="true" />
</substitution>
</MedicationRequest>
</resource>
</entry>
<entry>
<fullUrl value="http://pvs.praxis.local/fhir/Medication/f568397d-7ba2-46ac-904b-02caec933b42" />
<resource>
<Medication>
<id value="f568397d-7ba2-46ac-904b-02caec933b42" />
<meta>
<profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_ERP_Medication_PZN|1.0.1" />
</meta>
<extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_Medication_Category">
<valueCoding>
<system value="https://fhir.kbv.de/CodeSystem/KBV_CS_ERP_Medication_Category" />
<code value="00" />
</valueCoding>
</extension>
<extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_Medication_Vaccine">
<valueBoolean value="false" />
</extension>
<extension url="http://fhir.de/StructureDefinition/normgroesse">
<valueCode value="N1" />
</extension>
<code>
<coding>
<system value="http://fhir.de/CodeSystem/ifa/pzn" />
<code value="08585997" />
</coding>
<text value="Prospan® Hustensaft 100ml N1" />
</code>
<form>
<coding>
<system value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_DARREICHUNGSFORM" />
<code value="FLE" />
</coding>
</form>
</Medication>
</resource>
</entry>
<entry>
<fullUrl value="http://pvs.praxis.local/fhir/Patient/512ab5bc-a7ab-4fd7-81cc-16a594f747a6" />
<resource>
<Patient>
<id value="512ab5bc-a7ab-4fd7-81cc-16a594f747a6" />
<meta>
<profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_FOR_Patient|1.0.3" />
</meta>
<identifier>
<type>
<coding>
<system value="http://fhir.de/CodeSystem/identifier-type-de-basis" />
<code value="GKV" />
</coding>
</type>
<system value="http://fhir.de/NamingSystem/gkv/kvid-10" />
<value value="M310119800" />
</identifier>
<name>
<use value="official" />
<family value="Erbprinzessin von und zu der Schimmelpfennig-Hammerschmidt Federmannssohn">
<extension url="http://fhir.de/StructureDefinition/humanname-namenszusatz">
<valueString value="Erbprinzessin" />
</extension>
<extension url="http://hl7.org/fhir/StructureDefinition/humanname-own-prefix">
<valueString value="von und zu der" />
</extension>
<extension url="http://hl7.org/fhir/StructureDefinition/humanname-own-name">
<valueString value="Schimmelpfennig-Hammerschmidt Federmannssohn" />
</extension>
</family>
<given value="Ingrid" />
</name>
<birthDate value="2010-01-31" />
<address>
<type value="both" />
<line value="Anneliese- und Georg-von-Groscurth-Plaetzchen 149-C">
<extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber">
<valueString value="149-C" />
</extension>
<extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName">
<valueString value="Anneliese- und Georg-von-Groscurth-Plaetzchen" />
</extension>
</line>
<line value="5. OG - Hinterhof">
<extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-additionalLocator">
<valueString value="5. OG - Hinterhof" />
</extension>
</line>
<city value="Bad Homburg" />
<postalCode value="60437" />
<country value="D" />
</address>
</Patient>
</resource>
</entry>
<entry>
<fullUrl value="http://pvs.praxis.local/fhir/Practitioner/e33d2afd-44c8-462b-80e5-52dbe5ebf359" />
<resource>
<Practitioner>
<id value="e33d2afd-44c8-462b-80e5-52dbe5ebf359" />
<meta>
<profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_FOR_Practitioner|1.0.3" />
</meta>
<identifier>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/v2-0203" />
<code value="LANR" />
</coding>
</type>
<system value="https://fhir.kbv.de/NamingSystem/KBV_NS_Base_ANR" />
<value value="456456534" />
</identifier>
<name>
<use value="official" />
<family value="Weber">
<extension url="http://hl7.org/fhir/StructureDefinition/humanname-own-name">
<valueString value="Weber" />
</extension>
</family>
<given value="Maximilian" />
<prefix value="Dr.">
<extension url="http://hl7.org/fhir/StructureDefinition/iso21090-EN-qualifier">
<valueCode value="AC" />
</extension>
</prefix>
</name>
<qualification>
<code>
<coding>
<system value="https://fhir.kbv.de/CodeSystem/KBV_CS_FOR_Qualification_Type" />
<code value="00" />
</coding>
</code>
</qualification>
<qualification>
<code>
<text value="Facharzt für Kinder- und Jugendmedizin" />
</code>
</qualification>
</Practitioner>
</resource>
</entry>
<entry>
<fullUrl value="http://pvs.praxis.local/fhir/Organization/d2b30a70-9830-4968-ab97-688472b6f9a3" />
<resource>
<Organization>
<id value="d2b30a70-9830-4968-ab97-688472b6f9a3" />
<meta>
<profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_FOR_Organization|1.0.3" />
</meta>
<identifier>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/v2-0203" />
<code value="BSNR" />
</coding>
</type>
<system value="https://fhir.kbv.de/NamingSystem/KBV_NS_Base_BSNR" />
<value value="687777700" />
</identifier>
<name value="Kinderarztpraxis" />
<telecom>
<system value="phone" />
<value value="09411234567" />
</telecom>
<address>
<type value="both" />
<line value="Yorckstraße 15">
<extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber">
<valueString value="15" />
</extension>
<extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName">
<valueString value="Yorckstraße" />
</extension>
</line>
<line value="Hinterhaus">
<extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-additionalLocator">
<valueString value="Hinterhaus" />
</extension>
</line>
<city value="Regensburg" />
<postalCode value="93049" />
<country value="D" />
</address>
</Organization>
</resource>
</entry>
<entry>
<fullUrl value="http://pvs.praxis.local/fhir/Coverage/df0f2536-97b9-4bae-99cc-83ba2e8371e4" />
<resource>
<Coverage>
<id value="df0f2536-97b9-4bae-99cc-83ba2e8371e4" />
<meta>
<profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_FOR_Coverage|1.0.3" />
</meta>
<extension url="http://fhir.de/StructureDefinition/gkv/besondere-personengruppe">
<valueCoding>
<system value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_PERSONENGRUPPE" />
<code value="00" />
</valueCoding>
</extension>
<extension url="http://fhir.de/StructureDefinition/gkv/dmp-kennzeichen">
<valueCoding>
<system value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_DMP" />
<code value="00" />
</valueCoding>
</extension>
<extension url="http://fhir.de/StructureDefinition/gkv/wop">
<valueCoding>
<system value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_ITA_WOP" />
<code value="72" />
</valueCoding>
</extension>
<extension url="http://fhir.de/StructureDefinition/gkv/versichertenart">
<valueCoding>
<system value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_VERSICHERTENSTATUS" />
<code value="3" />
</valueCoding>
</extension>
<status value="active" />
<type>
<coding>
<system value="http://fhir.de/CodeSystem/versicherungsart-de-basis" />
<code value="GKV" />
</coding>
</type>
<beneficiary>
<reference value="Patient/512ab5bc-a7ab-4fd7-81cc-16a594f747a6" />
</beneficiary>
<period>
<end value="2040-04-01" />
</period>
<payor>
<identifier>
<system value="http://fhir.de/NamingSystem/arge-ik/iknr" />
<value value="108416214" />
</identifier>
<display value="AOK Bayern" />
</payor>
</Coverage>
</resource>
</entry>
这是我到目前为止得到的...... 我也有获取作者(从业者)或部分(MedicationRequest)的 URL 的问题。
using Hl7.Fhir.Model;
using Hl7.Fhir.Rest;
using Hl7.Fhir.Serialization;
using System;
using System.IO;
using System.Xml;
namespace ReadXML
{
class Program
{
static void Main(string[] args)
{
XmlReader xr = XmlReader.Create(
new StreamReader(@"<Path>"));
var parser = new FhirXmlParser();
Bundle bundle = parser.Parse<Bundle>(xr);
Console.WriteLine(bundle);
var composition = (Composition)bundle.Entry[0].Resource;
ResourceReference subjectRef = composition.Subject;
//ResourceReference authorRef = composition.Author;
ResourceReference custodianRef = composition.Custodian;
//ResourceReference medRef = composition.Section;
var absUriPatient = subjectRef.GetAbsoluteUriForReference(bundle.Entry[0].FullUrl);
//var absUriPractitioner = authorRef.GetAbsoluteUriForReference(bundle.Entry[0].FullUrl);
var absUriOrganization = custodianRef.GetAbsoluteUriForReference(bundle.Entry[0].FullUrl);
Console.WriteLine($"Patient-URL: {absUriPatient}");
//Console.WriteLine($"Practitioner-URL: {absUriPractitioner}");
Console.WriteLine($"Organization-URL: {absUriOrganization}");
var patient = (Bundle.EntryComponent)bundle.FindEntry(absUriPatient);
Console.WriteLine(patient); //How to get patient.Name ???
Console.ReadKey();
}
}
}
【问题讨论】:
-
请向我们展示您已经获取 URL 的代码,以便我们为您提供帮助。
-
@ɐsɹǝʌǝɔıʌ 我把我的代码-sn-p 放在问题中。谢谢
标签: c# sql hl7-fhir fhir-net-api