feat: extract ICD10 code

This commit is contained in:
Paul-Christian Volkmer 2024-06-12 16:48:58 +02:00
parent 3e07408a7d
commit 58026f11d0
2 changed files with 32 additions and 2 deletions

View File

@ -93,6 +93,7 @@ impl FromStr for Meldung {
} }
} }
#[allow(unused)]
impl Meldung { impl Meldung {
pub fn id(&self) -> Option<String> { pub fn id(&self) -> Option<String> {
let re = Regex::new(r#"Meldung_ID="(?<meldung_id>(.*?))""#).unwrap(); let re = Regex::new(r#"Meldung_ID="(?<meldung_id>(.*?))""#).unwrap();
@ -105,7 +106,18 @@ impl Meldung {
None None
} }
#[allow(unused)] pub fn icd10(&self) -> Option<String> {
let re = Regex::new(r"(?s)<Primaertumor_ICD_Code>(?<icd10>(.*?))</Primaertumor_ICD_Code>")
.unwrap();
if re.is_match(&self.raw_value) {
let caps = re.captures(&self.raw_value).unwrap();
return Some(caps["icd10"].to_string());
}
None
}
pub fn database_id(&self) -> Option<String> { pub fn database_id(&self) -> Option<String> {
match self.id() { match self.id() {
Some(id) => to_database_id(&id), Some(id) => to_database_id(&id),
@ -174,4 +186,22 @@ mod tests {
Some("1727824".to_string()) Some("1727824".to_string())
); );
} }
#[test]
fn should_get_meldung_icd10() {
let actual = LkrExportProtocolFile::parse(include_str!("../testdaten/testdaten_1.xml"));
assert!(actual.is_ok());
let patients = actual.unwrap().patients;
assert_eq!(
patients[0].meldungen()[0].icd10(),
Some("C17.1".to_string())
);
assert_eq!(
patients[1].meldungen()[0].icd10(),
Some("C17.2".to_string())
);
}
} }

View File

@ -31,7 +31,7 @@
<Meldebegruendung>I</Meldebegruendung> <Meldebegruendung>I</Meldebegruendung>
<Meldeanlass>statusaenderung</Meldeanlass> <Meldeanlass>statusaenderung</Meldeanlass>
<Tumorzuordnung Tumor_ID="1"> <Tumorzuordnung Tumor_ID="1">
<Primaertumor_ICD_Code>C17.2</Primaertumor_ICD_Code> <Primaertumor_ICD_Code>C17.1</Primaertumor_ICD_Code>
<Primaertumor_ICD_Version>10 2015 GM</Primaertumor_ICD_Version> <Primaertumor_ICD_Version>10 2015 GM</Primaertumor_ICD_Version>
<Diagnosedatum>10.06.2024</Diagnosedatum> <Diagnosedatum>10.06.2024</Diagnosedatum>
<Seitenlokalisation>T</Seitenlokalisation> <Seitenlokalisation>T</Seitenlokalisation>