use analysis order id as valis tellimuse id (#92)

* use order analysis id as valis tellimuse id

* send analysis order id in xml
This commit is contained in:
Helena
2025-09-10 16:54:12 +03:00
committed by GitHub
parent b31de91daf
commit 99e62b91a5
12 changed files with 29 additions and 26 deletions

View File

@@ -194,12 +194,13 @@ export async function readPrivateMessageResponse({
excludedMessageIds,
}: {
excludedMessageIds: string[];
}): Promise<{ messageId: string | null; hasAnalysisResponse: boolean; hasPartialAnalysisResponse: boolean; hasFullAnalysisResponse: boolean; medusaOrderId: string | undefined }> {
}): Promise<{ messageId: string | null; hasAnalysisResponse: boolean; hasPartialAnalysisResponse: boolean; hasFullAnalysisResponse: boolean; medusaOrderId: string | undefined; analysisOrderId: number | undefined }> {
let messageId: string | null = null;
let hasAnalysisResponse = false;
let hasPartialAnalysisResponse = false;
let hasFullAnalysisResponse = false;
let medusaOrderId: string | undefined = undefined;
let analysisOrderId: number | undefined = undefined;
try {
const privateMessage = await getLatestPrivateMessageListItem({ excludedMessageIds });
@@ -212,6 +213,7 @@ export async function readPrivateMessageResponse({
hasPartialAnalysisResponse: false,
hasFullAnalysisResponse: false,
medusaOrderId: undefined,
analysisOrderId: undefined
};
}
@@ -220,16 +222,15 @@ export async function readPrivateMessageResponse({
);
const messageResponse = privateMessageContent?.Saadetis?.Vastus;
medusaOrderId = privateMessageContent?.Saadetis?.Tellimus?.ValisTellimuseId || messageResponse?.ValisTellimuseId;
analysisOrderId = Number(privateMessageContent?.Saadetis?.Tellimus?.ValisTellimuseId || messageResponse?.ValisTellimuseId);
const hasInvalidOrderId = !medusaOrderId || !medusaOrderId.toString().startsWith('order_');
const hasInvalidOrderId = isNaN(analysisOrderId)
if (hasInvalidOrderId || !messageResponse) {
await createMedipostActionLog({
action: 'sync_analysis_results_from_medipost',
xml: privateMessageXml,
hasAnalysisResults: false,
medusaOrderId: hasInvalidOrderId ? undefined : medusaOrderId,
});
return {
messageId,
@@ -237,9 +238,13 @@ export async function readPrivateMessageResponse({
hasPartialAnalysisResponse: false,
hasFullAnalysisResponse: false,
medusaOrderId: hasInvalidOrderId ? undefined : medusaOrderId,
analysisOrderId: hasInvalidOrderId ? undefined : analysisOrderId
};
}
const analysisOrder = await getAnalysisOrder({ analysisOrderId: analysisOrderId })
medusaOrderId = analysisOrder.medusa_order_id;
let order: Tables<{ schema: 'medreport' }, 'analysis_orders'>;
try {
order = await getAnalysisOrder({ medusaOrderId });
@@ -264,7 +269,7 @@ export async function readPrivateMessageResponse({
console.warn(`Failed to process private message id=${messageId}, message=${(e as Error).message}`);
}
return { messageId, hasAnalysisResponse, hasPartialAnalysisResponse, hasFullAnalysisResponse, medusaOrderId };
return { messageId, hasAnalysisResponse, hasPartialAnalysisResponse, hasFullAnalysisResponse, medusaOrderId, analysisOrderId };
}
async function saveAnalysisGroup(
@@ -616,7 +621,7 @@ export async function sendOrderToMedipost({
lastName: account.last_name ?? '',
phone: account.phone ?? '',
},
orderId: medusaOrderId,
orderId: medreportOrder.id,
orderCreatedAt: new Date(medreportOrder.created_at),
comment: '',
});

View File

@@ -68,7 +68,7 @@ export async function composeOrderTestResponseXML({
};
orderedAnalysisElementsIds: number[];
orderedAnalysesIds: number[];
orderId: string;
orderId: number;
orderCreatedAt: Date;
}) {
const analysisElements = await getAnalysisElementsAdmin({ ids: orderedAnalysisElementsIds });

View File

@@ -45,7 +45,7 @@ export async function composeOrderXML({
lastName: string;
phone: string;
};
orderId: string;
orderId: number;
orderCreatedAt: Date;
comment?: string;
}) {

View File

@@ -82,10 +82,10 @@ export async function updateAnalysisOrderStatus({
export async function getAnalysisOrder({
medusaOrderId,
orderId,
analysisOrderId,
}: {
medusaOrderId?: string;
orderId?: number;
analysisOrderId?: number;
}) {
const query = getSupabaseServerAdminClient()
.schema('medreport')
@@ -93,15 +93,15 @@ export async function getAnalysisOrder({
.select('*')
if (medusaOrderId) {
query.eq('medusa_order_id', medusaOrderId);
} else if (orderId) {
query.eq('id', orderId);
} else if (analysisOrderId) {
query.eq('id', analysisOrderId);
} else {
throw new Error('Either medusaOrderId or orderId must be provided');
}
const { data: order, error } = await query.single();
if (error) {
throw new Error(`Failed to get order by medusaOrderId=${medusaOrderId} or orderId=${orderId}, message=${error.message}, data=${JSON.stringify(order)}`);
throw new Error(`Failed to get order by medusaOrderId=${medusaOrderId} or analysisOrderId=${analysisOrderId}, message=${error.message}, data=${JSON.stringify(order)}`);
}
return order;
}