Konstruer et billig pulsoksymeter ved bruk av hyllevare-komponenter
Bidrag fra DigiKeys nordamerikanske redaktører
2020-08-13
Et pulsoksymeter måler perifer oksygenmetning (SpO2), som reflekterer effektiviteten til hjerte og lungesystemet til å gi oksygenrikt blod til kroppen. Utøvere bruker SpO2-målinger for å måle graden av innsats i treningsøkter, men disse målingene har fått større betydning under COVID-19-pandemien. Helsepersonell ser etter en reduksjon i SpO2 som et tidlig varselstegn på skader på lungevev forårsaket av SARS-CoV-2-viruset som forårsaker COVID-19.
For berørte personer med milde symptomer som fortelles å sette seg i karantene hjemme, kan lett tilgang til et billig pulsoksymetre bidra til å måle forløpet av infeksjonen og gi den advarselen som er nødvendig for å eskalere helsetjenesten.
Denne artikkelen ta kort for seg symptomene på COVID-19 og behovet for SpO2-overvåking. Den viser deretter hvordan utviklere kan bruke en Microchip Technology-DSC (digital signalstyringsenhet – digital signal controller) og noen ekstra enheter til å konstruere et billig pulsoksymetre som kan gi hjemmebrukere tidlig varsel om symptomer som samsvarer med avansert COVID-19-infeksjon.
COVID-19 og behovet for å måle oksygenmetningsnivåer
COVID-19 presenterer et bredt spekter av symptomer som følge av de skadelige effektene av SARS-CoV-2-viruset. For helsepersonell er et spesielt bekymringsfullt symptom knyttet til lungevevsskader, noe som resulterer i et svekket respirasjonssystem og redusert oksygenopptak. Selv om leger bruker individuelle røntgenbilder av brystet og CT-skanninger for å bekrefte dette stadiet av COVID-19, bruker de rutinemessig SpO2-målinger som en tidlig indikator.
SpO2-måling er et ikke-invasivt alternativ til måling av arteriell oksygenmetning (SaO2), bestemt direkte ved å analysere blodgassnivået i prøver som er ekstrahert fra en arterie av pasienten. Selv om noen tilstander kan kreve direkte måling av arteriell blodgass, har SpO2 vist seg å gi et pålitelig estimat av SaO2. Kanskje viktigst, den kan utføres like pålitelig hjemme som i kliniske omgivelser ved hjelp av optiske pulsoksymetre.
Optiske pulsoksymetre måler SpO2 ved å utnytte forskjellene i lysabsorpsjon utvist av deoksygenert hemoglobin (Hb) og oksygenert hemoglobin (HbO2). Båret i røde blodceller danner hemoglobin raskt en reversibel binding med opptil fire oksygenmolekyler i de oksygenrike lungene. I denne tilstanden som HbO2 absorberer molekylet mer lys ved 940 nanometer (nm) enn ved 660 nm (figur 1).
Figur 1: Pulsoksymetri utnytter forskjellene i absorpsjonsspektre mellom oksygenerte (HbO2) og deoksygenerte (Hb) blodceller. (Bildekilde: Wikipedia)
Når de HbO2-bærende røde blodcellene passerer til periferien der partialtrykket – trykket til en enkelt gasskomponent i en blanding av gasser - av oksygen er lavere, reduseres hemoglobins affinitet for oksygen og HbO2 begynner å losse oksygenmolekylene sine, som til slutt blir Hb. I denne deoksygenerte tilstanden endres molekylets lysabsorpsjonsspektrum og absorberer mer lys ved 660 nm enn ved 940 nm.
Fordi HbO2 blir Hb når oksygenpartikkeltrykket er lavt, kan SpO2 bestemmes ved den enkle formelen:
SpO2 = HbO2 / (HbO2 + Hb)
De relative konsentrasjonene av Hb og HbO2 i blodstrømmen kan i sin tur bestemmes ved å måle lysabsorpsjon ved bølgelengdene 660 nm og 940 nm.
Pulsoksymetre utnytter sammenhengen mellom blodoksygenpartikkeltrykk, hemoglobinoksygenbelastning og forskjeller i lysabsorpsjon for å gi pålitelige målinger av SpO2.
Viktige delsystemer for et typisk pulsoksymeter
En typisk pulsoksymeterkonstruksjon omfatter tre hovedundersystemer:
- Et delsystem for lysforsyning som omfatter analoge brytere og drivere sammen med lysdioder (LED) ved bølgelengdene rød (660 nm) og infrarød (IR) (950 nm). Noen systemer inkluderer også grønne (530 nm) kilder for bruk med fotopletysmografi (PPG) -metoder som bestemmer hjerterytmen ved å overvåke endringer i volumet i hudens blodkar.
- Et delsystem for lysdeteksjon som omfatter en fotodiode, en signalkondisjoneringskjede og en analog-til-digital-omformer (ADC).
- En DSC eller mikrokontroller for å koordinere delsystemene for lyslevering og -deteksjon samt beregne SpO2 ut fra de målte dataene.
Selv om disse grunnleggende delsystemene finnes i alle pulsoksymetre, kan gjennomføringen av dem variere betydelig. I transmissive pulsoksymetre er fotodioden plassert på motsatt side av brukerens finger eller øreflipp fra lysdiodene. Vanlig tilgjengelige fingerklemmeenheter kombinerer røde, IR og valgfrie grønne lysdioder på den ene siden av klippet med en fotodiode på den andre. I reflektanspulsoksymetre plasseres fotodioden og lysdiodene på samme side av huden med noen optiske barrièrer, plassert mellom dem for å redusere artefakter. For eksempel ER osrams SFH7060 en drop-in reflektansmåleenhet som kapsler inn lysdioder og en fotodiode i en enkelt kapsling på 7,2 x 2,5 x 0,9 mm (mm).
Enten disse optiske pakkene brukes til transmissive eller reflekterende metoder, krever designere relativt få tilleggskomponenter for å implementere en lavpris (billig) pulsoksymetrisk konstruksjon, som kan gi hjemmebrukere informasjon som tyder på behovet for ytterligere evaluering av helsepersonell. Et eksempeldesign bygget rundt en Microchip TechnologyDSPIC33FJ128GP802 DSC bruker mikrokontrollerens integrerte eksterne enheter for å kontrollere belysning av huden med røde og IR -lysdioder og for å digitalisere det kondisjonerte fotodiodens utgangssignal (figur 2).
Figur 2: En typisk pulsoksymetrisk konstruksjon kombinerer delsystemer for LED-belysning og fotodiodesignalbehandling med en mikrokontroller som brukes til å styre timingen av belysning og datainnsamling. (Bildekilde: Microchip Technology)
Pulsoksymeter-konstruksjoner er vanligvis avhengige av en enkelt fotodiode med en bred spektral responskurve for å fange det overførte eller reflekterte signalet uavhengig av belysningskilden. For å sikre at det mottatte signalet tilsvarer bare røde eller IR-bølgelengder, presenterer maskinvare- eller programvarekontrollogikken bare den røde eller IR-belysningskilden på et gitt tidspunkt, vekslende mellom de to kildene for å fullføre en rekke målinger.
Implementere en lavpris (billig) pulsoksymeters maskinvaredesign
I denne designen bruker DSC en ekstern Microchip-teknologi MCP4728 digital-til-analog-omformer (DAC) for å sette separate MBT2222-transistorer på nivået som trengs for å drive hver led med den nødvendige intensiteten. For å presisere «på»-sekvensen for hver LED, bruker DSC to av sine pulsbreddemodulering (PWM) utganger for å kontrollere Analog Devices sin analoge bryter ADG884 (figur 3).
Figur 3: Drevet av vekslende signaler for røde og IR-kanaler fra den digitale styreenheten, gjør en analog bryter det mulig å kjøre strøm til røde og IR-lysdioder. (Bildekilde: Microchip Technology)
For å behandle fotodiodeutgangen, en enkelt Microchip Technology MCP6002-enhet har et par operasjonsforsterkere (op-amp-er) som trengs for å implementere en grunnleggende to-trinns signalkondisjoneringskjede. Her bruker det første trinnet én MCP6002 op-forsterker, konfigurert som en transimpedansforsterker (TIA), for å konvertere fotodiodens strømutgang til et spenningssignal. Etter et høypassfilter for å redusere støy, har den andre op-forsterkeren i MCP6002 en forsterkning og DC-forskyvningsjustering som er nødvendig for å optimalisere det kondisjonerte signalets svingning over hele området til ADC integrert i DSC (figur 4).
Figur 4: En to-trinns signalkjede forutsetter fotodiodeutgang for levering til den digitale styreenhetens integrerte ADC. (Bildekilde: Microchip Technology)
I drift bruker DSC sine PWM-utganger og ADC-innganger for å synkronisere LED-belysning og ADC-digitalisering av det kondisjonerte fotodiodeutgangssignalet. Her koordineres hver vekslende rød- og IR-belysningsperiode med signalinnhenting og konvertering. En ekstra ADC-sampling, tatt når begge lysdiodene er av, gir en måling av omgivelseslys som brukes til å optimalisere LED-intensitet og SpO2-måling. Resultatet er en nøyaktig kontrollert hendelsessekvens som koordinerer LED-belysning og ADC-digitalisering for å fange opp resultater for rød bølgelengde for Hb, fange opp omgivelseslys og til slutt fange opp IR-bølgelengderesultater for HbO2 (figur 5).
Figur 5: Lavprispulsoksymetrets funksjonalitet avhenger av DSC-ens (digitale signalstyringsenhetens) evne til å styre den nøyaktige timingen av sekvenser for belysning og datafangst som kreves for å samle inn målinger for SpO2-bestemmelse. (Bildekilde: Microchip Technology)
Implementering av en avbruddsdrevet programvareløsning
Mikrochip har en pulsoksymeter-firmware-pakke med et prøveprogram som demonstrerer bruk av DSC for å utføre disse sekvensene for belysningsstyring og datakonvertering. Her implementerer programmet en avbruddsdrevet metode ved hjelp av et par DSC-timere – Timer2 og Timer3 – for å tidfeste de separate «på»-sekvensene til henholdsvis IR-LED og rød LED. Til gjengjeld gir hver timer tidsgrunnlaget for to av DSC-enes utgangssammenligningsmoduler (OC), OC1 og OC2, som brukes til å kontrollere de analoge bryterne for henholdsvis IR-LED og rød LED.
Som vist i Listing 1, initialiserer programvaren først Timer2 og Timer3 for å stille inn ønsket periode av belysningssyklusen og aktivere avbrudd. Som en del av initialiseringssekvensen er OC1- og OC2-modulene bundet til separate utgangsstifter ved hjelp av DSCs gjenopprettbare stifter (RP). Initialiseringssekvensen angir deretter belysningstjenestesyklusen og velger tilhørende timer for bruk som sin tidsbase.
Kopi
//*********************************************************************************************************
// Initialize Timer 2 - IR light
//*********************************************************************************************************
T2CON = 0x0020; // Stop 16-bit Timer2, 1:64(40MhzFosc) Prescale, Internal clock (Fosc/2)
TMR2 = 0x00; // Clear timer register
PR2 = 1250; // Load the period value, OCxRS <= PRx, 4ms period = (1/(Fosc/2))*1000*64*PR2 = (1/(40000000/2))*1000*64*1250
IPC1bits.T2IP = 2; // Set Timer2 Interrupt Priority Level
IFS0bits.T2IF = 0; // Clear Timer2 Interrupt Flag
IEC0bits.T2IE = 1; // Enable Timer2 Interrupt
//*********************************************************************************************************
// Initialize Timer 3 - Red light
//*********************************************************************************************************
T3CON = 0x0020; // Stop 16-bit Timer3, 1:64(40MhzFosc) Prescale, Internal clock (Fosc/2)
TMR3 = 0x00; // Clear timer register
PR3 = 1250; // Load the period value, OCxRS <= PRx, 4ms period = (1/(Fosc/2))*1000*64*PR2 = (1/(40000000/2))*1000*64*1250
IPC2bits.T3IP = 2; // Set Timer3 Interrupt Priority Level
IFS0bits.T3IF = 0; // Clear Timer3 Interrupt Flag
IEC0bits.T3IE = 1; // Enable Timer3 Interrupt
//*********************************************************************************************************
// Initialize Output Compare 1 module in Continuous Pulse mode, OC1 controls IR LED switch
//*********************************************************************************************************
RPOR6bits.RP13R = 0b10010; // RP13/RB13 tied to OC1 (IR)
OC1CONbits.OCM = 0b000; // Disable Output Compare 1 Module
OC1R = 0; // Write the duty cycle for the first PWM pulse, 24=8MHzFosc(50us), 30=40MHzFosc(50us), 600=40MHzFosc(1ms)
OC1RS = duty_cycle; // Write the duty cycle for the second PWM pulse, OCxRS <= PRx, 499=8MHzFosc(1ms), 623=40MHzFosc(1ms), 1246=40MHzFoc,2msPeriod, 4984=40MHzFoc,8msPeriod, 280=450us D/C@40MHzFoc,2msPeriod,switch
OC1CONbits.OCTSEL = 0; // Select Timer 2 as output compare time base
//*********************************************************************************************************
// Initialize Output Compare 2 module in Continuous Pulse mode, OC2 controls Red LED switch
//*********************************************************************************************************
RPOR6bits.RP12R = 0b10011; // RP12/RB12 tied to OC2 (Red)
OC2CONbits.OCM = 0b000; // Disable Output Compare 2 Module
OC2R = 0; // Write the duty cycle for the first PWM pulse, 24=8MHzFosc, 30=40MHzFosc, 600=40MHzFosc(1ms)
OC2RS = duty_cycle; // Write the duty cycle for the second PWM pulse, OCxRS <= PRx, 499=8MHzFosc(1ms), 623=40MHzFosc(1ms), 1246=40MHzFoc,2msPeriod, 4984=40MHzFoc,8msPeriod, 280=450us D/C@40MHzFoc,2msPeriod,switch
OC2CONbits.OCTSEL = 1; // Select Timer 3 as output compare time base
Oppføring 1: Hovedrutinen fra Microchip Technology prøvekodepakken bruker en kort initialiseringssekvens for å sette opp DSC-ens (digitale signalstyringsenhetens) timere (tidsur) og sammenligne utgangsmoduler i hjertet av denne billige pulsoksymeterløsningen. (Bildekilde: Microchip Technology)
Denne tilnærmingen utnytter DSC-arkitekturens tilknytning til hvert tidsavbrudd med et bestemt inngangspunkt for avbruddstjeneste (ISR – interrupt service routine). For eksempel, når den røde LED-kanalens Timer3 avbrudd oppstår, utfører DSC funksjonen ved _T3Avbryt inngangspunktet. Når den røde LED-timeren3 utløper, oppstår to koordinerte maskinvare- og programvarehendelser:
- OC2 genererer en kontinuerlig puls til den analoge bryteren, og slår på den røde LED-en
- DSC begynner å utføre_T3Avbryt ISR (liste 2)
Kopi
void __attribute__((__interrupt__, no_auto_psv)) _T3Interrupt(void) //Read Red DC & AC signals from AN0 & AN1
{
int delay;
unsigned char i;
Read_ADC_Red = 1;
CH0_ADRES_Red_sum = 0;
CH1_ADRES_Red_sum = 0;
for (delay=0; delay<200; delay++); //2000=delayed 256us before read ADC
// LATBbits.LATB14 = 1; // for debugging
for (i=0; i<oversampling_number; i++)
{
//Acquires Red-DC from Channel0 (AN0)
AD1CHS0bits.CH0SA = 0x00; // Select AN0
AD1CON1bits.SAMP = 1; // Begin sampling
while(!AD1CON1bits.DONE); // Waiting for ADC completed
AD1CON1bits.DONE = 0; // Clear conversion done status bit
CH0_ADRES_Red_sum = CH0_ADRES_Red_sum + ADC1BUF0; // Read ADC result
//Acquires Red-AC from Channel1 (AN1)
AD1CHS0bits.CH0SA = 0x01; // Select AN1
AD1CON1bits.SAMP = 1; // Begin sampling
while(!AD1CON1bits.DONE); // Waiting for ADC completed
AD1CON1bits.DONE = 0; // Clear conversion done status bit
CH1_ADRES_Red_sum = CH1_ADRES_Red_sum + ADC1BUF0; // Read ADC result
}
CH0_ADRES_Red = CH0_ADRES_Red_sum / oversampling_number;
FIR_input_Red[0] = CH1_ADRES_Red_sum / oversampling_number;
#ifdef Sleep_Enabled
if (CH0_ADRES_Red<=74 && CH1_ADRES_Red>=4000) //if spo2 probe is not connected, 74=60mV, 4000=3.2V
{
goto_sleep = 1;
}
else if (CH0_ADRES_Red > Finger_Present_Threshold) //if no finger present then goto sleep
{
goto_sleep = 1;
}
else
#endif
{
// LATBbits.LATB14 = 0; // for debugging
for (delay=0; delay<500; delay++); //1000=delayed 256us before read ADC
// LATBbits.LATB14 = 1; // for debugging
//Acquires Red-DC baseline from Channel0 (AN0)
AD1CHS0bits.CH0SA = 0x00; // Select AN0
AD1CON1bits.SAMP = 1; // Begin sampling
while(!AD1CON1bits.DONE); // Waiting for ADC completed
AD1CON1bits.DONE = 0; // Clear conversion done status bit
Baseline_ambient = ADC1BUF0;
Baseline_Upper_Limit = Baseline_ambient + DCVppHigh;
Baseline_Lower_Limit = Baseline_ambient + DCVppLow;
Meter_State = Calibrate_Red();
}
// LATBbits.LATB14 = 0; // for debugging
OC2RS = duty_cycle; // Write Duty Cycle value for next PWM cycle
IFS0bits.T3IF = 0; // Clear Timer3 Interrupt Flag
}
Oppføring 2: Inkludert i prøvekodepakken for Microchip-teknologi, samler Timer3 ISR som vises her inn røde LED-belysningsmålinger og målinger av omgivelseslys, mens Timer2 ISR bare trenger å samle inn IR LED-belysningsmålinger. (Bildekilde: Microchip Technology)
Som vist i Listing 2, leser_T3Interrupt ISR det røde baseline-nivået (Red-DC) fra ADC-kanal 0 (AN0) og det røde dynamiske nivået (Red-AC) fra ADC-kanal 1 (AN1). Hvis utvikleren velger å inkludere en definisjon for Sleep_Enabled, følger den kompilerte ISR-koden datafangst med en sjekk for å se om prosessoren skal gå inn i en dvaletilstand. Standardkonfigurasjonen for Microchip-programvarepakken inkluderer en #define for Sleep_Enabled, slik at variabelen goto_sleep vil bli satt hvis den optiske sonden ikke er tilkoblet eller hvis brukerens finger ikke er tilstede.
Etter denne sondestatuskontrollen tar ISR prøver av det omgivende lysnivået og bruker denne oppdaterte verdien til å forskyve grensene for basisvinduet tilsvarende. Ved hjelp av disse justerte grensene øker eller reduserer funksjonen Calibrate_Red() DAC-utgangen til den røde LED-driveren for å holde intensiteten mellom Baseline_Lower_Limit og Baseline_Upper_Limit.
T2-timeravbruddstjenestens rutine bruker det samme grunnleggende designmønsteret unntatt kontroll for Sleep_Enabled og måling av omgivelseslysnivå.
Med timer, utgangssammenligning og ISRer på plass, utfører prøveprogramvarens hovedrutine en kort initialiseringssekvens og starter Timer2 og Timer3. På dette tidspunktet går koden inn i hovedsløyfen og venter på data behandlet av ISR-ene. Etter hvert som røde og IR -data blir tilgjengelige, behandles disse verdiene med et FIR-filter (digital finite impulse response), og til slutt kalles rutiner for å beregne SpO2 og hjerterytme (liste 3).
Kopi
//********** Enable OC1 & OC2 ouputs for IR & Red LED's on/off switch **********
OC2CONbits.OCM = 0b101; // Select the Output Compare 2 mode, Turn on Red LED
T3CONbits.TON = 1; // Start Timer3
for (delay=0; delay<2200; delay++);
OC1CONbits.OCM = 0b101; // Select the Output Compare 1 mode, Turn on IR LED
T2CONbits.TON = 1; // Start Timer2
goto_sleep = 0;
first_reading = 0;
while (1)
{
if (goto_sleep)
{
[lines clipped]
Sleep(); // Put MCU into sleep
Nop();
}
}
//--------- Main State Machine starts here ---------
if (RedReady && IRReady)
{
RedReady = 0;
IRReady = 0;
// LATBbits.LATB14 = 1; //for debugging
FIR(1, &FIR_output_IR[0], &FIR_input_IR[0], &BandpassIRFilter);
FIR(1, &FIR_output_Red[0], &FIR_input_Red[0], &BandpassRedFilter);
CH1_ADRES_IR = FIR_output_IR[0];
CH1_ADRES_Red = FIR_output_Red[0];
[lines clipped]
if (Detection_Done)
{
//Max & Min are all found. Calculate SpO2 & Pulse Rate
SpO2_Calculation(); //calculate SpO2
Pulse_Rate_Calculation(); //calculate pulse rate
[lines clipped]
}
/*****************************************************************************
* Function Name: SpO2_Calculation()
* Specification: Calculate the %SpO2
*****************************************************************************/
void SpO2_Calculation (void)
{
double Ratio_temp;
IR_Vpp1 = fabs(IR_Max - IR_Min);
Red_Vpp1 = fabs(Red_Max - Red_Min);
IR_Vpp2 = fabs(IR_Max2 - IR_Min2);
Red_Vpp2 = fabs(Red_Max2 - Red_Min2);
IR_Vpp = (IR_Vpp1 + IR_Vpp2) / 2;
Red_Vpp = (Red_Vpp1 + Red_Vpp2) / 2;
IR_Vrms = IR_Vpp / sqrt(8);
Red_Vrms = Red_Vpp / sqrt(8);
// SpO2 = log10(Red_Vrms) / log10(IR_Vrms) * 100;
// if (SpO2 > 100)
// {
// SpO2 = 100;
// }
// Using lookup table to calculate SpO2
Ratio = (Red_Vrms/CH0_ADRES_Red) / (IR_Vrms/CH0_ADRES_IR);
Oppføring 3: Denne kodebiten fra hovedrutinen i Microchip Technology-prøvekodepakken viser hvordan koden initialiserer timer- og utgangssammenligningsmoduler og går inn i en uendelig sløyfe, beregner SpO2 og hjerterytme når målinger er tilgjengelige, eller setter prosessoren i dvalemodus med lav effekt når sensorfunksjonaliteten går frakoblet. (Bildekilde: Microchip Technology)
For SpO2 konverterer SpO2_Calculation()-funksjonen pulsamplituder (Vpp) for de røde og IR-signalene til Vrms-verdier. Ved hjelp av disse verdiene genererer funksjonen et forhold og bruker en oppslagstabell (ikke vist i oppføring 3) for å konvertere forholdet til en bestemt verdi av SpO2. Vanligvis er denne oppslagstabellen avledet fra flere empiriske målinger. Pulse_Rate_Calculation() bruker målingens inter-peak timing for å bestemme hjerterytmen.
SpO2-designoptimaliseringsalternativer
Selv om designet som beskrives i denne artikkelen gir en effektiv løsning for et billig pulsoksymeter, kan andre enheter tilby ytterligere optimalisering. En utvikler kan for eksempel eliminere den eksterne dual-op-amp-enheten MCP6002 ved å bruke op amp integrert i Microchip Technology DSPIC33CK64MP102-DSC-en.
Utviklere vil imidlertid måtte omskrive noen viktige deler av programpakken som er beskrevet tidligere, for å ta hensyn til noen forskjeller i DSC, når de skal implementere denne modifiserte pulsoksymeterkonstruksjonen.
For eksempel har DSPIC33CK64MP102 DSC et sett med flerbrukstimermoduler i stedet for Timer2/Timer3-funksjonen i DSPIC33FJ128GP802 DSC, som krever at utviklere finner sin egen løsning på noen av funksjonene som er beskrevet i oppføringene som er inkludert i denne artikkelen. Likevel forblir prinsippene for drift de samme, og utviklere kan, i det minste, bruke designmønstrene som vises i Microchip Technology eksempelprogramvarepakken for å veilede sin egen tilpassede programvaredesign.
Konklusjon
Måling av oksygenmetningsnivået i blodet er en viktig indikator på respirasjonsfunksjon og har blitt et viktig verktøy for å håndtere helse under COVID-19-pandemien. Ved hjelp av enkle optiske metoder gir pulsoksymetere pålitelige estimater av perifer oksygenmetning (SpO2), som dekker et spesielt behov for rimelige helseovervåkingsløsninger under pandemien.
Som vist, i kombinasjon med noen få grunnleggende komponenter, gir en DSC et effektivt maskinvaregrunnlag for å implementere et billig pulsoksymetre som er i stand til å levere pålitelige SpO2-målinger som kan indikere et behov for brukere til å søke ytterligere medisinsk hjelp for en COVID-19-infeksjon i fremgang.
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.




