Abrechnungauftrag erteilen
Der Anwender kann jederzeit einen Abrechnungsauftrag erteilen. Dazu dient der Karteikasten, in den der Anwender die Verordnungen beim Einreichen der Abrechnungsvorgänge einsortiert hat, als Vorstufe.
Note
Diese Funktion kann auch über das Portal des Abrechnungsdienstes ausgeführt werden, die Realisierung im PVS ist optional.
Inhalt des Karteikastens anzeigen
Die vom Anwender eingereichten und in den virtuellen Karteikasten einsortierten Abrechnungsvoränge sollen zunächst von der UI des PVS dargestellt werden.
Pseudo-Code:
// the pendingCharges query is paginated to maintain good response time.
// Refer to https://graphql.org/learn/pagination/#pagination-and-edges to learn about using paginated queries.
const query = `
query GetCharges ($filter: PendingChargesFilterInput!, $first: Int, $after: String, $last: Int, $before: String) {
pendingCharges(filter: $filter, first: $first, after: $after, last: $last, before: $before)
{
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
nodes {
id
key
prescriptionKey
indexData {
supplement {
pocketKey
}
}
indexDocumentUrl
total {
value
copayment
amount
},
invoice {
id
key
}
items {
quantity
text
}
}
}
}`;
// Retrieve ids and data of all pending submitted charges page after page.
// Paging is usually done during browsing data in UI.
let connection = await graphql(query,
{
filter: {
institutionKey: "440123123"
},
first: 30
}
);
Diese Abfrage liefert eine PendingChargesConnection der ersten 30 Abrechnungsvorgänge des Karteikastens in der korrekten Reihenfolge.
Anhand von connection.pageInfo können Sie weitere Seiten nachladen.
while (connection.pageInfo.hasNextPage) {
connection = await graphql(query,
{
filter: {
institutionKey: "440123123"
},
first: 30,
after: connection.pageInfo.endCursor
});
}
Das funktioniert auch rückwärts:
while (connection.pageInfo.hasPreviousPage) {
const connection = await graphql(query,
{
filter: {
institutionKey: "440123123"
},
last: 30,
before: connection.pageInfo.startCursor
});
}
Näheres zu Pagination und Connections finden Sie in der GraphQL-Dokumenation.
connection.nodes[i].prescriptionKey ist die Verordnungsnummer aus dem PVS, die beim Erzeugen des Abrechnungsvorgangs angegeben wurde, connection.nodes[i].key die vom Abrechnungsdienst vergebene Belegnummer und connection.nodes[i].invoice.key die künftige Rechnungsnummer. Die Abfrage liefert keine Angaben über Patienten, deren Daten müssen Sie mit Hilfe der Verordnungsnummer aus den Daten des PVS beschaffen.
Stellen Sie die Liste in der UI dar, so dass der Anwender die Liste mit den Verordnung vergleichen kann, die sich in seinem Karteikasten befinden. Eine Gruppierung anhand des Feldes connection.nodes[i].indexData.supplement.pocketKey ist dabei sinnvoll.
Änderungen vor Auftragserteilung
Dem Anwender sollte vor dem Erzeugen des Abrechnungsauftrages die Möglichkeit gegeben werden, verschiedene Änderungen vorzunehmen.
Das Taxat ausdrucken
Möglicherweise bevorzugen Anwender es, das Taxat erst unmittelbar vor Abgabe der Abrechnung an den Abrechnungsdienst auszudrucken. Eventuell muss der Druck auch wiederholt werden, weil das Taxat nicht lesbar ist o.ä..
// download and print this PDF
const indexPDFUrl = connection.nodes.[i].indexDocumentUrl
Einzelne Verordnungen von der Liste nehmen
Der Anwender möchte möglicherweise einzelne Verordnungen aus aus dem Abrechnungsauftrag herausnehmen, weil er noch Unterschriften, ärztliche Bestätigungen oder ähnliches eingeholen will.
Dazu verwenden Sie die cancelCharge Mutation analog zu Abrechnungsvorgang stornieren.
Bitten Sie den Anwender über die UI, die Verordnung aus dem Karteikasten zunehmen und weisen Sie ihn darauf hin, dass das Taxat ungültig geworden ist und dass der Abrechnungsvorgang später eventuell neu erzeugt werden muss.
Stellen Sie den stornierten Abrechnungsvorgang in der Liste als storniert dar, damit der Anwender nicht die Orientierung verliert.
Abrechnungsauftrag erzeugen
Die createJob Mutation erzeugt den Abrechnungsauftrag.
Zur Ausführung dieses Codes müssen Sie die Ids aller Charges, die in den Abrechnungsauftrag übernommen werden sollen aus connection.nodes[i].id in einem Array (hier pendingChargeIds) sammeln. Gleiches gilt für die Rechnungen, die insgesamt auf den neuen Karteikasten vorgetragen werden sollen (hier connection.nodes[i].invoice.id).
Pseudo-Code:
// assuming you have the ids of all charges within a single flat array after paging through (see above):
const pendingChargeIds = [...];
// create input object for createJob mutation
const jobInput = {
institutionKey: "440123123",
charges: pendingChargeIds,
};
// call create job mutation
const job = await graphql(`
mutation createJob($input: JobInput!) {
createJob(input: $input) {
partnerId: "put your partner-id (Guid) here"
id
key
shippingDocumentUrl
}
}`,
{ input: jobInput}
);
Die Mutation gibt das neu angelegte Job Objekt zurück.
Auftragsunterlagen drucken
Zuletzt drucken Sie die Auftragsunterlagen. Diese enthalten
- ein Auftragsformular, dass der Kunden unterschreibt,
- eine Prüfliste, auf der alle Abrechnungsvorgänge in der korrekten Reihenfolge aufgelistet sind,
- ein Blatt mit der Adresse des Abrechnunsdienstes für einen Fensterbriefumschlag bzw. ein Paket.
Pseudo-Code:
// download and print this PDF
const indexPDFUrl = job.shippingDocumentUrl
Fordern Sie den Anwender an der UI auf, die Verordnungen aus dem Karteikasten zusammen mit den Auftragsunterlagen einzusenden. Bieten Sie dem Anwender an für die Sendung den Abholservice zu bestellen und bieten Sie dafür eine Schaltfläche an.