Closed pcvolkmer closed 2 months ago
z.B. Mindestlänge prüfen prüfen, dass nicht nur "null" String drinsteht wie z.B. in Würzburg
standortübergreifender Abgleich - wie sehen PatIDs aus? Beispiele aller Standorte einholen
via Envvar - überprüfen ob die PatID am jew. Standort regelkonform ist? - nicht zu einschränkend
Vorsicht - wenn wir über BZKF hinaus denken, mehrere Standorte, nicht zu restriktiv
Follow-Up Issue: wie gehen wir damit um, wenn PatID nicht valide ist? Exitstrategie --> keine Conditions usw erstellen; innerhalb der Condition wird ohnehin subject.reference gesetzt --> Abbruch;
Zu prüfen wäre:
NULL
"null"
Weitere Prüfungen könnten eine Log-Message verursachen - ohne Abbruch des Mappings.
Bei Mappen von List<MeldungExport>
ist die Frage noch offen, wann abgebrochen werden soll:
MeldungExport
, die verwendet werden können.Als Ergänzung: Standortspezifische Id Layouts können über Regex-Ausdruck gematched und validiert werden. Hierfür muss dann dieser aber via einer Umgebungsvariable konfigurierbar sein. Ähnlich zu: https://github.com/bzkf/obds-to-fhir/blob/32cd649ca82e5c9ac45ffbed821f0ebc58d64e71/src/main/java/org/miracum/streams/ume/obdstofhir/mapper/ObdsToFhirMapper.java#L64-L75
Ich fänds auch perfekt wenn man das wirklich per konfigurierbarer regex machen kann - dann hat man die meiste Flexibilität. Default wäre dann ein match auf \w*
(o.ä.).
Static method und Spring @Value("{}")
- ohne static - ist so eine Sache. Da müsste sowas gemacht werden wie:
@Component
class Mapper {
private static Pattern pattern = Pattern.compile("\w*");
@Value("${settings.patidpattern:\\w*}")
public void setStringPattern(String value) {
try {
Mapper .pattern = Pattern.compile(value)
} catch (Exception e) {
log.error("Alles kaputt .... ", e);
throw e;
}
}
protected static String convertId(String id) {
// ... static Mapper .pattern nutzen ...
}
}
Dabei würde auch direkt beim Initialisieren des Spring-Beans der Klasse die Anwendung mit einer Exception aussteigen, wenn das konfigurierte Pattern nicht nutzbar ist.
Alternativ, bei Verwendung der FhirProperties
im Konstruktor, könnte auch das gemacht werden
@Component
class Mapper {
private static Pattern pattern = Pattern.compile("\w*");
// Obsolet bei nur einem Konstruktor: @Autowired
public Mapper(FhirProperties fhirProperties) {
super(fhirProperties);
}
@PostConstruct
public void init() {
try {
Mapper.pattern = Pattern.compile(this.fhirProperties.patIdPattern);
} catch (Exception e) {
log.error("Alles kaputt .... ", e);
throw e;
}
}
}
Im zugehörigen PR habe ich schon mal einen ersten Entwurf inklusive Test implementiert.
Follow-Up Issue: wie gehen wir damit um, wenn PatID nicht valide ist? Exitstrategie --> keine Conditions usw erstellen; innerhalb der Condition wird ohnehin subject.reference gesetzt --> Abbruch;
Könnte als Exception realisiert werden, wie schon beim Umwandeln der oBDS-Datumsangaben in FHIR-Angaben. Dazu könnte eine eigene PatientIdInvalidException
geworfen werden, die dann ähnlich der DateTimeException
in convertObdsDateToDateTimeType(String)
zu einen Abbruch führt.
Denkbar ist auch, dies konfigurierbar zu machen: Abbruch oder nur (wie aktuell) logging. (Standardverhalten?)
Here: https://github.com/bzkf/obds-to-fhir/blob/32cd649ca82e5c9ac45ffbed821f0ebc58d64e71/src/main/java/org/miracum/streams/ume/obdstofhir/mapper/ObdsConditionMapper.java#L78-L84