#mongodb
#mongodb
Вопрос:
Я пытаюсь собрать список кодов ICD для следующего документа
_id: "5facde3f9dXXXXXXX208",
EmpID: "MC20XXXXXXXXXX",
Coverage: "EMERGENCY"
DateLocked: 1900-01-01T00:00:00.000 00:00
CreatedBy: "ELIGIBILITY"
PlanCode: "1XXXXXXXXXXX"
GeneratedFrom: "1"
LoaType: ""
OpType:" "
Members:
Company:
ClaimsSummary:
ClaimsInfo:
Loa:
LoaDiagnosis:
0:
RecId: 1800XXXXXX
Claimno:16XXXXXXXX
Loa_No: "3XXXXXXXXX"
IcdCode : "S06.0"
Diagnosis : "INTRACRANIAL INJURY: Concussion"
FinalDiagnosis : " "
ForPayStatus : " "
CreatedBy : ""
DateCreated : 1900-01-01T00:00:00.000 00:00
ApprovedBy : ""
DateApproved : 1900-01-01T00:00:00.000 00:00
CancelledBy : ""
DateCancelled : 1900-01-01T00:00:00.000 00:00
ProcessedBy : ""
DateProcessed : 1900-01-01T00:00:00.000 00:00
GPBatchNo: ""
Coverage: "N"
RelatedIcd: ""
CronicIllness:
IcdGroupCode: "S06"
IcdGroupDesc:"INTRACRANIAL INJURY"
ChronicIllnessTagging:"N"
1:
RecId: 1800XXXXX
Claimno:16XXXXXXXX
Loa_No: "3XXXXXXXXX"
IcdCode : "S00.0"
Diagnosis : "SUPERFICIAL INJURY OF HEAD: Superficial injury of scalp"
FinalDiagnosis : " "
ForPayStatus : " "
CreatedBy : ""
DateCreated : 1900-01-01T00:00:00.000 00:00
ApprovedBy : ""
DateApproved : 1900-01-01T00:00:00.000 00:00
CancelledBy : ""
DateCancelled : 1900-01-01T00:00:00.000 00:00
ProcessedBy : ""
DateProcessed : 1900-01-01T00:00:00.000 00:00
GPBatchNo: ""
Coverage: "N"
RelatedIcd: ""
CronicIllness:
IcdGroupCode: "S00"
IcdGroupDesc:"SUPERFICIAL INJURY OF HEAD"
ChronicIllnessTagging:"N"
LoaCpt:
LoaPhysician:
PhysicianBill:
Конвейер, который я сделал до сих пор, это:
[{$group: {
_id: "$EmpID",
LOS: {
$sum: {
$cond: {
if: { $gt: [ { $divide: [ { $subtract: [ "$DischargeDate", "$AdmissionDate" ] }, 24*60*60*1000 ] }, 0 ] },
then: { $divide: [ { $subtract: [ "$DischargeDate", "$AdmissionDate" ] }, 24*60*60*1000 ] },
else: 0
}
}
},
icds_chronic: {
$addToSet: {
$cond: {
** if: { $eq: [ "$LoaDiagnosis.CronicIllness.ChronicIllnessTagging", "Y" ] }, **
then: "$LoaDiagnosis.IcdCode",
else: "$REMOVE"
}
}
},
}}, {$sort: {
LOS: -1
}}]
Однако условие внутри addToSet не работает. Я получаю пустой массив в качестве результата для icds_chronic. Я полагаю, что проблема может быть связана с символом ‘Y’. Любые другие указатели были бы полезны. Я использую mongo версии 4.1
Ответ №1:
Это трудно понять, потому что отсутствуют поля и т.д. В принципе, добавьте $unwind
в свой конвейер.
[{$unwind:"$loaDiagnosis"},
{$group: {
_id: "$EmpID",
LOS: {
$sum: {
$cond: {
if: { $gt: [ { $divide: [ { $subtract: [ "$DischargeDate", "$AdmissionDate" ] }, 24*60*60*1000 ] }, 0 ] },
then: { $divide: [ { $subtract: [ "$DischargeDate", "$AdmissionDate" ] }, 24*60*60*1000 ] },
else: 0
}
}
},
icds_chronic: {
$addToSet: {
$cond: {
** if: { $eq: [ "$LoaDiagnosis.CronicIllness.ChronicIllnessTagging", "Y" ] }, **
then: "$LoaDiagnosis.IcdCode",
else: "$REMOVE"
}
}
},
}}, {$sort: {
LOS: -1
}}]
Если вы не хотите видеть пустой массив перед $sort
добавлением, добавьте этот этап
{$match:{ "icds_chronic":{$elemMatch:{ $exists:true } }}}