Conoscenza del livello di introduzione munging della teoria degli insiemi con conoscenza di livello intro dell'elettronica per analizzare e valutare il contenuto dei messaggi HL7

2

Questa domanda viene posta allo scopo di valutare se tentare o meno di utilizzare le cose che ho raccolto al college è stata una buona idea, o anche lontanamente difendibile.

L'anno scorso ho scritto un 'creatore di formule' per capire cosa fare con i campi o come compilare i campi dei dati HL7. Il fatto che siano dati HL7 è quasi irrilevante, tranne per il fatto che non è sempre noto se un campo HL7 esisterà o se si ripeterà.

Pertanto, ho pensato, se ho bisogno di ottenere un elenco di questi campi, posso restituirmi un insieme di questi. Se non li trovo, posso aggiungere al set un valore indefinito e sfocato. Quindi posso valutare alcune cose sul set, (ad esempio, esistono tutte, fanno più di 6 corrispondono ad alcune espressioni regolari, fanno l'ascesa dal più grande al meno).

Tutto funziona OK, tranne che cosa fare con "Tutto" e set vuoto.

Per l'interesse di rendere un programma facile da usare, dovrebbe 'tutto di []' restituire vero o falso? Ho cercato di dimostrare che "nella teoria degli insiemi, l'operatore esistenziale yadda yadda sordo".

Vorrei una risposta alla prima domanda, perché potrebbe richiedere di tornare al tavolo da disegno, ma avrò un avanzamento veloce fino a qualche mese fa abbiamo aggirato il problema non avendo mai un set vuoto. Se abbiamo incontrato 0 campi nel messaggio HL7, ci limiteremo a definire indefinito nel set.

Il modo in cui volevo usare undefined era come una sorta di catalizzatore per "Non ne ho idea". So True o Undefined = Undefined, False e Undefined = Non definito e Non indefinito = Non definito. Ho fatto un punto per essere molto coerente nella mia programmazione con questo, ma tutto ciò che ha danneggiato il programma avrebbe potuto essere alleviato rendendo "Not Undefined" = True.

Ho detto ai due ragazzi che effettivamente usano il mio programma di 'fare sempre le sue formule per aspettarsi il vero caso', perché è così che fa Don Knuth.

In sintesi, il mio programma funziona. Il problema è che è ostacolato dalla mia adesione ai principi, chiaramente al di fuori del dominio del problema, che se mi fossi allentato renderei il programma più fluido e funzionante senza richiedere la consultazione del codice sorgente.

La mia domanda è: le astrazioni dovrebbero corrispondere al dominio?

Posso legittimamente discutere con un infermiere, con i capi e con i programmatori (con più mentalità militare) che "tutto il sacco vuoto è vero" o "l'opposto dello sconosciuto è ancora sconosciuto"?

    
posta Peter Turner 10.11.2011 - 16:59
fonte

1 risposta

4

Data la struttura di HL7, un albero non sarebbe più naturale degli insiemi? Suppongo che anche se si utilizza un albero, la raccolta di segmenti figlio (o segmenti figlio di un dato tipo di segmento, se è quello a cui si fa riferimento) sarebbe un insieme (anche se io chiamerei una raccolta, poiché gli insiemi implicano di non essere ordinato e non avendo duplicati, e i segmenti HL7 potrebbero interessarsi dell'ordine e la nozione di uguaglianza dei segmenti in realtà non esiste).

Non penso che funzionerà anche per rappresentare una raccolta di elementi zero come una raccolta di un elemento non definito. Probabilmente ti darà più casi limite (esempio semplice: un operatore di conteggio per determinare quanti segmenti esistono). Inoltre ti costringe a una logica a tre valori, che è un dolore, senza alcun beneficio apparente.

Non c'è motivo per cui gli operatori che agiscono sulle raccolte non possano agire su raccolte vuote. Ancora una volta, il comportamento dovrebbe essere quello che ti dà le poche sorprese e pochi casi limite. Generalmente questo sarà compatibile con ciò che ha senso matematicamente.

È AllOf qualcosa che controlla se una proprietà è vera per ogni elemento della collezione? Se è così, suppongo che la tua attuale implementazione ritorni indefinita per un insieme di 1 elemento indefinito? O lo hai definito tale che in quel caso in ritorni vero o falso? Se è così, non hai guadagnato nulla contro il solo ritorno di quel valore per una collezione vuota. Se restituisce undefined, scrivi codice che lo considera vero o falso? In entrambi i casi, c'è la tua risposta a ciò che AllOf dovrebbe restituire per un set vuoto.

Personalmente, AllOf restituirà true per una raccolta (o una serie) vuota. Lanciavo la logica dei 3 valori a meno che non si sia dimostrata preziosa per qualche motivo. Permetterei raccolte vuote. Probabilmente userò il pattern Composite per rappresentare i nodi HL7. Non userei set, ma liste. Proverò a sfruttare le implementazioni di raccolta di qualunque piattaforma stia usando. Ad esempio, in C # mi assicurerei di poter utilizzare i metodi di estensione di raccolta generici e LINQ con i miei segmenti.

Sì, le astrazioni dovrebbero corrispondere al dominio e penso che le astrazioni che stai utilizzando potrebbero corrispondere un po 'meglio.

potresti sostenere infermieri, capi e programmatori sulle tue astrazioni, ma in realtà solo i programmatori dovrebbero davvero aver bisogno di preoccuparsene. E non penso che tu abbia probabilmente bisogno di sconosciuti, in modo da ridurre il numero di discussioni.

    
risposta data 10.11.2011 - 20:05
fonte

Leggi altre domande sui tag