Tooltip
.tooltip {
position: relative;
cursor: pointer;
text-decoration: none;
border-bottom: 1px dashed rgba(0, 0, 0, 0.6);
}
.tooltip::before {
content: attr(data-tooltip);
position: absolute;
top: -40px; /* Trochę niżej nad słowem */
left: 50%; /* Wyśrodkowanie */
transform: translateX(-50%);
background-color: rgba(255, 255, 255, 0.9);
color: #333;
padding: 6px 12px;
border-radius: 8px;
white-space: nowrap;
opacity: 0;
visibility: hidden;
transition: opacity 0.3s ease, visibility 0.3s ease;
font-family: ‘Arial’, sans-serif;
font-size: 14px;
box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
z-index: 10;
}
.tooltip:hover::before {
opacity: 1;
visibility: visible;
}
document.addEventListener(‘DOMContentLoaded’, function () {
const wordsToTooltip = {
“Observation”: “Obserwacja”,
“Musculoskeletal examination”: “Badanie układu mięśniowo-szkieletowego”,
“Visual information”: “Informacje wizualne”,
“Posture”: “Postawa”,
“Muscle bulk”: “Objętość mięśni”,
“Symmetry”: “Symetria”,
“Joint alignment”: “Ustawienie stawów”,
“Skin Conditions”: “Choroby skóry”,
“Systemic diseases”: “Choroby ogólnoustrojowe”,
“Local trauma”: “Lokalny uraz”,
“Infections”: “Infekcje”,
“Erythema (Redness)”: “Rumień (zaczerwienienie)”,
“Inflammation”: “Zapalenie”,
“Arthritis”: “Zapalenie stawów”,
“Cellulitis”: “Zapalenie tkanki łącznej”,
“Bursitis”: “Zapalenie kaletki maziowej”,
“Autoimmune diseases”: “Choroby autoimmunologiczne”,
“Lupus”: “Toczeń”,
“Ecchymosis (Bruising)”: “Wybroczyny (siniaki)”,
“Bleeding disorders”: “Zaburzenia krzepnięcia krwi”,
“Anterior cruciate ligament (ACL) tear”: “Uszkodzenie więzadła krzyżowego przedniego (ACL)”,
“Ulceration and Rash”: “Owrzodzenie i wysypka”,
“Diabetes”: “Cukrzyca”,
“Vasculitis”: “Zapalenie naczyń”,
“Delayed wound healing”: “Opóźnione gojenie ran”,
“Dermatomyositis”: “Zapalenie skórno-mięśniowe”,
“Muscle inflammation”: “Zapalenie mięśni”,
“Skin involvement”: “Zajęcie skóry”,
“Skin Atrophy”: “Zanik skóry”,
“Sclerosis”: “Stwardnienie”,
“Vascular insufficiency”: “Niewydolność naczyniowa”,
“Scleroderma”: “Twardzina”,
“Connective tissues”: “Tkanki łączne”,
“Joint Deformities”: “Deformacje stawów”,
“Joint alignment”: “Ustawienie stawów”,
“Subluxation”: “Podwichnięcie”,
“Dislocation”: “Zwichnięcie”,
“Rheumatoid arthritis”: “Reumatoidalne zapalenie stawów”,
“Connective tissue disorders”: “Choroby tkanki łącznej”,
“Ehlers-Danlos syndrome”: “Zespół Ehlersa-Danlosa”,
“Effusion”: “Wysięk”,
“Osteoarthritis”: “Choroba zwyrodnieniowa stawów”,
“Gout”: “Dna moczanowa”,
“Systemic inflammatory conditions”: “Ogólnoustrojowe stany zapalne”,
“Localized joint pathology”: “Lokalna patologia stawów”,
“Misalignment”: “Nieprawidłowe ustawienie”,
“Genu valgum (knock knees)”: “Koślawość kolan (kolana koślawe)”,
“Genu varum (bow legs)”: “Szpotawość kolan (kolana szpotawe)”,
“Congenital deformities”: “Deformacje wrodzone”,
“Acquired deformities”: “Deformacje nabyte”,
“Hip dysplasia”: “Dysplazja stawu biodrowego”,
“Scoliosis”: “Skolioza”,
“Kyphosis”: “Kifoza”,
“Structural abnormalities”: “Nieprawidłowości strukturalne”,
“Muscle Abnormalities”: “Nieprawidłowości mięśniowe”,
“Muscle size”: “Rozmiar mięśni”,
“Contour”: “Zarys”,
“Muscle symmetry”: “Symetria mięśni”,
“Atrophy”: “Zanik”,
“Nerve damage”: “Uszkodzenie nerwów”,
“Systemic muscle disease”: “Ogólnoustrojowa choroba mięśni”,
“Quadriceps atrophy”: “Zanik mięśnia czworogłowego”,
“Muscular dystrophy”: “Dystrofia mięśniowa”,
“Hypertrophy”: “Przerost”,
“Pseudohypertrophy”: “Rzekomy przerost”,
“Fibrotic tissue”: “Tkanka włóknista”,
“Duchenne muscular dystrophy”: “Dystrofia mięśniowa Duchenne’a”,
“Fasciculations”: “Fascykulacje (drgania mięśniowe)”,
“Involuntary muscle twitches”: “Mimowolne skurcze mięśni”,
“Lower motor neuron pathology”: “Patologia dolnego neuronu ruchowego”,
“Amyotrophic lateral sclerosis (ALS)”: “Stwardnienie zanikowe boczne (ALS)”,
“Peripheral neuropathies”: “Neuropatie obwodowe”,
“Involuntary Movements”: “Ruchy mimowolne”,
“Tremors”: “Drżenia”,
“Chorea”: “Pląsawica”,
“Myoclonus”: “Mioklonie”,
“Parkinson’s disease”: “Choroba Parkinsona”,
“Huntington’s disease”: “Pląsawica Huntingtona”,
“Epilepsy”: “Padaczka”,
“Postural Abnormalities”: “Nieprawidłowości postawy”,
“Thoracic vertebral collapse”: “Zapadnięcie kręgu piersiowego”,
“Degenerative disc disease”: “Zwyrodnienie krążków międzykręgowych”,
“Lordosis”: “Lordoza”,
“Obesity”: “Otyłość”,
“Palpation”: “Palpacja”,
“Tenderness”: “Tkliwość”,
“Localized trauma”: “Lokalny uraz”,
“Lateral epicondylitis (tennis elbow)”: “Zapalenie nadkłykcia bocznego (łokieć tenisisty)”,
“Polymyalgia rheumatica”: “Polimialgia reumatyczna”,
“Fibromyalgia”: “Fibromialgia”,
“Edema”: “Obrzęk”,
“Joint effusion”: “Wysięk stawowy”,
“Sprain”: “Skręcenie”,
“Heart failure”: “Niewydolność serca”,
“Venous insufficiency”: “Niewydolność żylna”,
“Lymphatic blockage”: “Zablokowanie przepływu limfy”,
“Trigger Points”: “Punkty spustowe”,
“Myofascial pain syndrome”: “Zespół bólu mięśniowo-powięziowego”,
“Referred pain”: “Ból przeniesiony”,
“Crepitus”: “Trzeszczenie”,
“Cartilage degeneration”: “Zwyrodnienie chrząstki”,
“Septic arthritis”: “Septyczne zapalenie stawów”,
“Hemarthrosis”: “Krwawienie do stawu”,
“Crystal-induced arthropathy”: “Artropatia wywołana kryształami”,
“Osteophytes”: “Wyrośla kostne”,
“Bone spurs”: “Osteofity”,
“Fractures”: “Złamania”,
“Range of Motion (ROM)”: “Zakres ruchu (ROM)”,
“Active ROM”: “Aktywny zakres ruchu”,
“Passive ROM”: “Bierny zakres ruchu”,
“Rotator cuff pathology”: “Patologia stożka rotatorów”,
“Adhesive capsulitis”: “Zapalenie torebki stawowej”,
“Frozen shoulder”: “Zamrożony bark”,
“Nerve impingement”: “Ucisk nerwu”,
“Joint stiffness”: “Sztywność stawów”,
“Capsulitis”: “Zapalenie torebki stawowej”,
“Ligamentous contracture”: “Przykurcz więzadłowy”,
“Hyperflexibility”: “Nadmierna elastyczność”,
“Hypermobility”: “Nadmierna ruchomość”,
“Ligamentous laxity”: “Wiotkość więzadłowa”,
“Marfan syndrome”: “Zespół Marfana”,
“Hypomobility”: “Ograniczona ruchomość”,
“Joint contracture”: “Przykurcz stawu”,
“Muscle Strength Testing”: “Test siły mięśniowej”,
“Muscle integrity”: “Integralność mięśnia”,
“Lovett scale”: “Skala Lovetta”,
“Grade”: “Stopień”,
“Isotonic Contraction”: “Skurcz izotoniczny”,
“Isometric Contraction”: “Skurcz izometryczny”,
“Isokinetic Contraction”: “Skurcz izokinetyczny”,
“Shoulder Abduction”: “Odwodzenie ramienia”,
“Deltoid muscles”: “Mięśnie naramienne”,
“Brachial plexus injury”: “Uszkodzenie splotu ramiennego”,
“Radial nerve”: “Nerw promieniowy”,
“Musculocutaneous nerves”: “Nerwy mięśniowo-skórne”,
“Carpal tunnel syndrome”: “Zespół cieśni nadgarstka”,
“Physical exam”: “Badanie fizykalne”,
“Widespread”: “Rozległy”,
“Bruise”: “Siniak”,
“Ligamentous injury”: “Uszkodzenie więzadła”,
“Anterior cruciate ligament (ACL) tear”: “Uszkodzenie więzadła krzyżowego przedniego (ACL)”,
“Open sores”: “Otwarte owrzodzenia”,
“Swelling”: “Obrzęk”,
“Unilateral”: “Jednostronny”,
“Bilateral”: “Obustronny”,
“Tendinitis”: “Zapalenie ścięgna”,
“Lateral epicondyle of the elbow”: “Nadkłykieć boczny kości ramiennej”,
“Pitting edema”: “Obrzęk ciastowaty”,
“Hyperirritability”: “Nadmierna pobudliwość”,
“Fluid in the joint”: “Płyn w stawie”,
“Spongy or fluctuating sensation”: “Wrażenie sprężystości lub fluktuacji”,
“Tendons”: “Ścięgna”,
“Ligaments”: “Więzadła”,
“Restricted movement”: “Ograniczony ruch”,
“Flicker of muscle contraction”: “Drżenie skurczu mięśniowego”,
“Contraction”: “Skurcz”,
“Concentric contraction”: “Skurcz koncentryczny”,
“Eccentric contraction”: “Skurcz ekscentryczny”,
“Rotator cuff”: “Stożek rotatorów”,
“Wrist Flexion and Extension”: “Zgięcie i wyprost nadgarstka”,
“Elbow Flexion and Extension”: “Zgięcie i wyprost łokcia”,
“Hip Flexion and Extension”: “Zgięcie i wyprost stawu biodrowego”,
“Knee Flexion and Extension”: “Zgięcie i wyprost stawu kolanowego”,
“Supine”: “Pozycja na plecach (pozycja supinacyjna)”,
“Respectively”: “Odpowiednio”,
“Lumbar radiculopathy”: “Rwa korzeniowa lędźwiowa”,
“Hamstring”: “Mięśnie kulszowo-goleniowe”,
“Quadriceps”: “Mięsień czworogłowy uda”,
“Femoral or sciatic nerves”: “Nerwy udowy lub kulszowy”,
“Ankle Dorsiflexion and Plantarflexion”: “Grzbietowe i podeszwowe zgięcie stawu skokowego”,
“Tibialis anterior”: “Mięsień piszczelowy przedni”,
“Gastrocnemius/soleus complex”: “Mięsień brzuchaty łydki i płaszczkowaty”,
“Iliopsoas”: “Mięsień biodrowo-lędźwiowy”,
“Gluteus maximus”: “Mięsień pośladkowy wielki”,
“Sciatic nerve involvement”: “Zajęcie nerwu kulszowego”,
“Compartment syndrome”: “Zespół ciasnoty przedziałów powięziowych”
};
// Normalize keys in the dictionary
const normalizedWordsToTooltip = {};
for (const [key, value] of Object.entries(wordsToTooltip)) {
const cleanedKey = key.replace(/(.*?)/g, ”).trim(); // Remove anything in parentheses
normalizedWordsToTooltip[cleanedKey.toLowerCase()] = value;
}
function processNode(node) {
if (node.nodeType === Node.TEXT_NODE && node.nodeValue.trim()) {
let content = node.nodeValue;
// Regex to match only the main words (ignores parentheses)
const regex = new RegExp(
`\b(${Object.keys(normalizedWordsToTooltip).join(‘|’)})\b`,
‘gi’
);
if (regex.test(content)) {
const wrapper = document.createElement(‘span’);
wrapper.innerHTML = content.replace(regex, (match) => {
const tooltip = normalizedWordsToTooltip[match.toLowerCase().trim()];
return `
${match}`;
});
node.replaceWith(wrapper);
}
} else if (node.nodeType === Node.ELEMENT_NODE) {
Array.from(node.childNodes).forEach(processNode);
}
}
document.querySelectorAll(‘body *:not(script):not(style)’).forEach((element) => {
Array.from(element.childNodes).forEach(processNode);
});
});
Tooltip Implementation
.tooltip {
position: relative;
cursor: pointer;
text-decoration: none;
border-bottom: 0.5px dashed rgba(0, 0, 0, 0.2);
}
.tooltip::before {
content: attr(data-tooltip);
position: absolute;
background-color: rgba(255, 255, 255, 0.9);
color: #333;
padding: 6px 12px;
border-radius: 8px;
opacity: 0;
visibility: hidden;
transform: translateY(-100%);
transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease;
font-family: ‘Arial’, sans-serif;
font-size: 14px;
box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
z-index: 10;
/* Adjust for dynamic width */
max-width: 250px; /* Prevent tooltips from being too wide */
overflow-wrap: break-word; /* Break long words */
word-wrap: break-word; /* For older browsers */
text-align: left;
}
.tooltip:hover::before {
opacity: 1;
visibility: visible;
transform: translateY(-130%);
left: 50%;
transform: translateX(-50%) translateY(-130%);
}
document.addEventListener(‘DOMContentLoaded’, function () {
const wordsToTooltip = {
“Observation”: “Obserwacja”,
“Musculoskeletal examination”: “Badanie układu mięśniowo-szkieletowego”,
“Visual information”: “Informacje wizualne”,
“Posture”: “Postawa”,
“Muscle bulk”: “Objętość mięśni”,
“Symmetry”: “Symetria”,
“Joint alignment”: “Ustawienie stawów”,
“Skin Conditions”: “Choroby skóry”,
“Systemic diseases”: “Choroby ogólnoustrojowe”,
“Local trauma”: “Lokalny uraz”,
“Infections”: “Infekcje”,
“Erythema (Redness)”: “Rumień (zaczerwienienie)”,
“Inflammation”: “Zapalenie”,
“Arthritis”: “Zapalenie stawów”,
“Cellulitis”: “Zapalenie tkanki łącznej”,
“Bursitis”: “Zapalenie kaletki maziowej”,
“Autoimmune diseases”: “Choroby autoimmunologiczne”,
“Lupus”: “Toczeń”,
“Ecchymosis (Bruising)”: “Wybroczyny (siniaki)”,
“Bleeding disorders”: “Zaburzenia krzepnięcia krwi”,
“Anterior cruciate ligament (ACL) tear”: “Uszkodzenie więzadła krzyżowego przedniego (ACL)”,
“Ulceration and Rash”: “Owrzodzenie i wysypka”,
“Diabetes”: “Cukrzyca”,
“Vasculitis”: “Zapalenie naczyń”,
“Delayed wound healing”: “Opóźnione gojenie ran”,
“Dermatomyositis”: “Zapalenie skórno-mięśniowe”,
“Muscle inflammation”: “Zapalenie mięśni”,
“Skin involvement”: “Zajęcie skóry”,
“Skin Atrophy”: “Zanik skóry”,
“Sclerosis”: “Stwardnienie”,
“Vascular insufficiency”: “Niewydolność naczyniowa”,
“Scleroderma”: “Twardzina”,
“Connective tissues”: “Tkanki łączne”,
“Joint Deformities”: “Deformacje stawów”,
“Joint alignment”: “Ustawienie stawów”,
“Subluxation”: “Podwichnięcie”,
“Dislocation”: “Zwichnięcie”,
“Rheumatoid arthritis”: “Reumatoidalne zapalenie stawów”,
“Connective tissue disorders”: “Choroby tkanki łącznej”,
“Ehlers-Danlos syndrome”: “Zespół Ehlersa-Danlosa”,
“Effusion”: “Wysięk”,
“Osteoarthritis”: “Choroba zwyrodnieniowa stawów”,
“Gout”: “Dna moczanowa”,
“Systemic inflammatory conditions”: “Ogólnoustrojowe stany zapalne”,
“Localized joint pathology”: “Lokalna patologia stawów”,
“Misalignment”: “Nieprawidłowe ustawienie”,
“Genu valgum (knock knees)”: “Koślawość kolan (kolana koślawe)”,
“Genu varum (bow legs)”: “Szpotawość kolan (kolana szpotawe)”,
“Congenital deformities”: “Deformacje wrodzone”,
“Acquired deformities”: “Deformacje nabyte”,
“Hip dysplasia”: “Dysplazja stawu biodrowego”,
“Scoliosis”: “Skolioza”,
“Kyphosis”: “Kifoza”,
“Structural abnormalities”: “Nieprawidłowości strukturalne”,
“Muscle Abnormalities”: “Nieprawidłowości mięśniowe”,
“Muscle size”: “Rozmiar mięśni”,
“Contour”: “Zarys”,
“Muscle symmetry”: “Symetria mięśni”,
“Atrophy”: “Zanik”,
“Nerve damage”: “Uszkodzenie nerwów”,
“Systemic muscle disease”: “Ogólnoustrojowa choroba mięśni”,
“Quadriceps atrophy”: “Zanik mięśnia czworogłowego”,
“Muscular dystrophy”: “Dystrofia mięśniowa”,
“Hypertrophy”: “Przerost”,
“Pseudohypertrophy”: “Rzekomy przerost”,
“Fibrotic tissue”: “Tkanka włóknista”,
“Duchenne muscular dystrophy”: “Dystrofia mięśniowa Duchenne’a”,
“Fasciculations”: “Fascykulacje (drgania mięśniowe)”,
“Involuntary muscle twitches”: “Mimowolne skurcze mięśni”,
“Lower motor neuron pathology”: “Patologia dolnego neuronu ruchowego”,
“Amyotrophic lateral sclerosis (ALS)”: “Stwardnienie zanikowe boczne (ALS)”,
“Peripheral neuropathies”: “Neuropatie obwodowe”,
“Involuntary Movements”: “Ruchy mimowolne”,
“Tremors”: “Drżenia”,
“Chorea”: “Pląsawica”,
“Myoclonus”: “Mioklonie”,
“Parkinson’s disease”: “Choroba Parkinsona”,
“Huntington’s disease”: “Pląsawica Huntingtona”,
“Epilepsy”: “Padaczka”,
“Postural Abnormalities”: “Nieprawidłowości postawy”,
“Thoracic vertebral collapse”: “Zapadnięcie kręgu piersiowego”,
“Degenerative disc disease”: “Zwyrodnienie krążków międzykręgowych”,
“Lordosis”: “Lordoza”,
“Obesity”: “Otyłość”,
“Palpation”: “Palpacja”,
“Tenderness”: “Tkliwość”,
“Localized trauma”: “Lokalny uraz”,
“Lateral epicondylitis (tennis elbow)”: “Zapalenie nadkłykcia bocznego (łokieć tenisisty)”,
“Polymyalgia rheumatica”: “Polimialgia reumatyczna”,
“Fibromyalgia”: “Fibromialgia”,
“Edema”: “Obrzęk”,
“Joint effusion”: “Wysięk stawowy”,
“Sprain”: “Skręcenie”,
“Heart failure”: “Niewydolność serca”,
“Venous insufficiency”: “Niewydolność żylna”,
“Lymphatic blockage”: “Zablokowanie przepływu limfy”,
“Trigger Points”: “Punkty spustowe”,
“Myofascial pain syndrome”: “Zespół bólu mięśniowo-powięziowego”,
“Referred pain”: “Ból przeniesiony”,
“Crepitus”: “Trzeszczenie”,
“Cartilage degeneration”: “Zwyrodnienie chrząstki”,
“Septic arthritis”: “Septyczne zapalenie stawów”,
“Hemarthrosis”: “Krwawienie do stawu”,
“Crystal-induced arthropathy”: “Artropatia wywołana kryształami”,
“Osteophytes”: “Wyrośla kostne”,
“Bone spurs”: “Osteofity”,
“Fractures”: “Złamania”,
“Range of Motion (ROM)”: “Zakres ruchu (ROM)”,
“Active ROM”: “Aktywny zakres ruchu”,
“Passive ROM”: “Bierny zakres ruchu”,
“Rotator cuff pathology”: “Patologia stożka rotatorów”,
“Adhesive capsulitis”: “Zapalenie torebki stawowej”,
“Frozen shoulder”: “Zamrożony bark”,
“Nerve impingement”: “Ucisk nerwu”,
“Joint stiffness”: “Sztywność stawów”,
“Capsulitis”: “Zapalenie torebki stawowej”,
“Ligamentous contracture”: “Przykurcz więzadłowy”,
“Hyperflexibility”: “Nadmierna elastyczność”,
“Hypermobility”: “Nadmierna ruchomość”,
“Ligamentous laxity”: “Wiotkość więzadłowa”,
“Marfan syndrome”: “Zespół Marfana”,
“Hypomobility”: “Ograniczona ruchomość”,
“Joint contracture”: “Przykurcz stawu”,
“Muscle Strength Testing”: “Test siły mięśniowej”,
“Muscle integrity”: “Integralność mięśnia”,
“Lovett scale”: “Skala Lovetta”,
“Grade 0”: “Stopień 0”,
“Grade 1”: “Stopień 1”,
“Grade 2”: “Stopień 2”,
“Grade 3”: “Stopień 3”,
“Grade 4”: “Stopień 4”,
“Grade 5”: “Stopień 5”,
“Isotonic Contraction”: “Skurcz izotoniczny”,
“Isometric Contraction”: “Skurcz izometryczny”,
“Isokinetic Contraction”: “Skurcz izokinetyczny”,
“Shoulder Abduction”: “Odwodzenie ramienia”,
“Deltoid muscles”: “Mięśnie naramienne”,
“Brachial plexus injury”: “Uszkodzenie splotu ramiennego”,
“Elbow Flexion”: “Zginanie łokcia”,
“Elbow Extension”: “Prostowanie łokcia”,
“Radial nerve”: “Nerw promieniowy”,
“Musculocutaneous nerves”: “Nerwy mięśniowo-skórne”,
“Carpal tunnel syndrome”: “Zespół cieśni nadgarstka”
};
// Normalize keys in the dictionary
const normalizedWordsToTooltip = {};
for (const [key, value] of Object.entries(wordsToTooltip)) {
const cleanedKey = key.replace(/(.*?)/g, ”).trim(); // Remove anything in parentheses
normalizedWordsToTooltip[cleanedKey.toLowerCase()] = value;
}
function processNode(node) {
if (node.nodeType === Node.TEXT_NODE && node.nodeValue.trim()) {
let content = node.nodeValue;
// Regex to match only the main words (ignores parentheses)
const regex = new RegExp(
`\b(${Object.keys(normalizedWordsToTooltip).join(‘|’)})\b`,
‘gi’
);
if (regex.test(content)) {
const wrapper = document.createElement(‘span’);
wrapper.innerHTML = content.replace(regex, (match) => {
const tooltip = normalizedWordsToTooltip[match.toLowerCase().trim()];
return `
${match}`;
});
node.replaceWith(wrapper);
}
} else if (node.nodeType === Node.ELEMENT_NODE) {
Array.from(node.childNodes).forEach(processNode);
}
}
document.querySelectorAll(‘body *:not(script):not(style)’).forEach((element) => {
Array.from(element.childNodes).forEach(processNode);
});
});
Podświetlanie tekstu z notatkami
body {
margin: 0;
padding: 0;
font-family: Arial, sans-serif;
}
.highlight {
background-color: #cce7ff; /* Highlight color without notes */
position: relative;
display: inline;
}
.highlight.with-note {
background-color: #ffeb3b; /* Highlight color with notes */
}
.note-box {
position: absolute;
background-color: #f9f9f9;
color: #333;
font-size: 14px;
line-height: 1.6;
padding: 10px 15px;
border: 1px solid #ddd;
border-radius: 5px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
max-width: 250px;
z-index: 1000;
white-space: normal;
text-align: left;
display: none; /* Hidden by default */
}
.note-controls {
position: absolute;
top: -30px;
right: -30px;
display: flex;
gap: 10px;
z-index: 10;
opacity: 0;
pointer-events: none;
transition: opacity 0.3s;
}
.note-controls.visible {
opacity: 1;
pointer-events: all;
}
.note-controls span {
cursor: pointer;
background-color: gray;
color: white;
padding: 5px 10px;
border-radius: 5px;
font-size: 16px;
font-weight: bold;
}
.note-controls span:hover {
background-color: darkgray;
}
document.addEventListener(“DOMContentLoaded”, () => {
/**
* Checks if an element is a header.
*/
const isHeaderElement = (node) => {
while (node) {
if (node.nodeType === 1 && node.tagName.match(/^H[1-5]$/)) {
return true;
}
node = node.parentNode;
}
return false;
};
/**
* Checks if an element is inside a table cell.
*/
const isInsideTable = (node) => {
while (node) {
if (node.tagName === “TD” || node.tagName === “TH”) {
return node;
}
node = node.parentNode;
}
return null;
};
/**
* Checks if an element belongs to the same list item.
*/
const isWithinSameListItem = (selection) => {
if (selection.rangeCount === 0) return false;
const range = selection.getRangeAt(0);
const startContainer = range.startContainer;
const endContainer = range.endContainer;
const getClosestListItem = (node) => {
while (node) {
if (node.nodeType === 1 && node.tagName === “LI”) {
return node;
}
node = node.parentNode;
}
return null;
};
const startListItem = getClosestListItem(startContainer);
const endListItem = getClosestListItem(endContainer);
// Ensure selection is within the same list item
return startListItem === endListItem;
};
/**
* Validates the selection.
* Ensures the selection is within a single header, table cell, or list item.
*/
const isSelectionValid = (selection) => {
if (selection.rangeCount === 0) return false;
const range = selection.getRangeAt(0);
const startContainer = range.startContainer;
const endContainer = range.endContainer;
const startInHeader = isHeaderElement(startContainer);
const endInHeader = isHeaderElement(endContainer);
// Block selection spanning headers
if (startInHeader !== endInHeader) {
return false;
}
const startCell = isInsideTable(startContainer);
const endCell = isInsideTable(endContainer);
// Block selection spanning table cells
if (startCell && endCell && startCell !== endCell) {
return false;
}
// Block selection spanning multiple list items
if (!isWithinSameListItem(selection)) {
return false;
}
return true;
};
/**
* Highlights the selected text.
*/
const wrapTextWithHighlight = (range) => {
const fragment = range.extractContents();
const highlight = document.createElement(“span”);
highlight.className = “highlight”;
highlight.appendChild(fragment);
range.insertNode(highlight);
const noteControls = document.createElement(“div”);
noteControls.className = “note-controls visible”;
const editNote = document.createElement(“span”);
editNote.textContent = “✎”;
editNote.title = “Edit note”;
noteControls.appendChild(editNote);
const removeHighlight = document.createElement(“span”);
removeHighlight.textContent = “x”;
removeHighlight.title = “Remove highlight”;
noteControls.appendChild(removeHighlight);
highlight.style.position = “relative”;
highlight.appendChild(noteControls);
let noteBox = null;
const updateNotePosition = () => {
const rect = highlight.getBoundingClientRect();
if (noteBox) {
noteBox.style.top = `${rect.height}px`;
noteBox.style.left = `${rect.width / 2}px`;
}
};
const hideControlsAndNoteAfterDelay = () => {
setTimeout(() => {
noteControls.classList.remove(“visible”);
if (noteBox) noteBox.style.display = “none”;
}, 3000);
};
// Show controls for 3 seconds after highlighting
hideControlsAndNoteAfterDelay();
highlight.addEventListener(“click”, () => {
noteControls.classList.add(“visible”);
if (noteBox) noteBox.style.display = “block”;
hideControlsAndNoteAfterDelay();
});
editNote.addEventListener(“click”, () => {
const noteText = prompt(“Add or edit a note:”, noteBox?.textContent || “”);
if (noteText) {
if (!noteBox) {
noteBox = document.createElement(“div”);
noteBox.className = “note-box”;
highlight.appendChild(noteBox);
}
noteBox.textContent = noteText;
noteBox.style.display = “block”;
highlight.classList.add(“with-note”);
updateNotePosition();
hideControlsAndNoteAfterDelay();
}
});
removeHighlight.addEventListener(“click”, () => {
const parent = highlight.parentNode;
while (highlight.firstChild) {
parent.insertBefore(highlight.firstChild, highlight);
}
parent.removeChild(highlight);
if (noteBox) noteBox.remove();
});
};
/**
* Handles the mouseup event to validate and apply highlighting.
*/
document.body.addEventListener(“mouseup”, () => {
const selection = window.getSelection();
if (selection.rangeCount > 0 && selection.toString().trim()) {
if (!isSelectionValid(selection)) {
alert(“Zaznaczenie musi być w obrębie jednego akapitu, komórki tabeli lub punktu listy!”);
selection.removeAllRanges();
return;
}
const range = selection.getRangeAt(0);
wrapTextWithHighlight(range);
selection.removeAllRanges();
}
});
});
Szacowany czas lekcji:
7 minut
.lesson-duration-container {
background-color: #f0f4f8; /* Szarawe tło dopasowane do reszty strony */
padding: 8px 15px; /* Wewnętrzny odstęp */
border-radius: 8px; /* Zaokrąglone rogi */
font-family: ‘Roboto’, Arial, sans-serif; /* Czcionka Roboto, jeśli dostępna */
font-size: 16px; /* Rozmiar tekstu */
color: #6c757d; /* Ciemny szary kolor tekstu */
display: inline-block; /* Wyświetlanie jako element blokowy */
margin-bottom: 20px; /* Odstęp na dole */
border: none; /* Bez obramowania */
}
.lesson-duration-label {
font-weight: 700; /* Pogrubienie dla etykiety */
color: #6c757d; /* Ciemny szary kolor dla etykiety */
margin-right: 5px; /* Odstęp od wartości */
}
.lesson-duration-value {
color: #6c757d; /* Ciemny szary kolor dla wartości */
font-weight: 700; /* Pogrubienie dla wartości */
}
Observation
Observation is a crucial initial step in a musculoskeletal examination. It offers immediate visual information about the patient’s condition, guiding the subsequent steps of the physical exam. Through observation, clinicians can identify abnormalities in posture, muscle bulk, symmetry, and joint alignment.
Skin Conditions
Observing the condition of the skin overlying the musculoskeletal structures is essential because skin changes can reflect underlying systemic diseases, local trauma, or infections.
- Erythema (Redness): This may suggest inflammation of underlying tissues, such as in the case of arthritis, cellulitis, or bursitis. In autoimmune diseases like lupus, erythema can be widespread, especially over sun-exposed areas.
- Ecchymosis (Bruising): Bruising may indicate recent trauma or bleeding disorders. For example, a large bruise around the knee might suggest ligamentous injury, such as in an anterior cruciate ligament (ACL) tear.
- Ulceration and Rash: Open sores or persistent rashes may suggest systemic diseases like diabetes or vasculitis, which can impair circulation and lead to delayed wound healing. Rashes in specific patterns can also suggest dermatomyositis, a condition involving both muscle inflammation and skin involvement.
- Skin Atrophy and Sclerosis: Thinning of the skin can indicate chronic disuse or vascular insufficiency, while thickening and hardening (sclerosis) may suggest conditions like scleroderma, which involves the skin, connective tissues, and often the musculoskeletal system.
Joint Deformities
Assessing joint alignment and structure provides insight into the integrity of the skeletal system. Common deformities to look for include:
- Subluxation or Dislocation: Joint subluxation is a partial dislocation where the joint surfaces have lost their normal alignment. Complete dislocation indicates that the joint surfaces are completely displaced. These findings are common in traumatic injuries, rheumatoid arthritis, or connective tissue disorders like Ehlers-Danlos syndrome.
- Swelling and Effusion: Swelling in the joint may be caused by fluid accumulation (effusion), which can be seen in conditions such as osteoarthritis, rheumatoid arthritis, or gout. Observation of unilateral or bilateral swelling should raise suspicion of systemic inflammatory conditions or localized joint pathology.
- Misalignment: Deformities like genu valgum (knock knees) or genu varum (bow legs) suggest congenital or acquired bone deformities. Observation of hip dysplasia, scoliosis (lateral curvature of the spine), or kyphosis (hunched posture) can indicate structural abnormalities that require further evaluation.
Muscle Abnormalities
Abnormalities in muscle size, contour, and symmetry are essential diagnostic clues.
- Atrophy: Muscle wasting is a key indicator of disuse, nerve damage, or systemic muscle disease. It may be localized, such as in quadriceps atrophy following knee injury, or generalized, as seen in conditions like muscular dystrophy.
- Hypertrophy: Increased muscle size, which may be compensatory due to overuse or pseudohypertrophy, where muscle is replaced by fibrotic tissue or fat, is observed in conditions like Duchenne muscular dystrophy.
- Fasciculations: Involuntary muscle twitches, often seen in the hands, arms, or legs, can be a sign of lower motor neuron pathology, such as in amyotrophic lateral sclerosis (ALS) or peripheral neuropathies.
- Involuntary Movements: Tremors (rhythmic shaking), chorea (jerky, involuntary movements), and myoclonus (shock-like contractions) may indicate neurological disorders such as Parkinson’s disease, Huntington’s disease, or epilepsy.
Postural Abnormalities
The overall posture of the patient is critical in evaluating musculoskeletal health.
- Scoliosis: The presence of an abnormal lateral curvature of the spine can suggest scoliosis, which may be congenital or idiopathic.
- Kyphosis: A hunched upper back can indicate thoracic vertebral collapse, often associated with osteoporosis or degenerative disc disease.
- Lordosis: Exaggerated lumbar curvature is common in individuals with weak core muscles, obesity, or conditions like pregnancy.
Palpation
Palpation involves using the hands to feel specific musculoskeletal structures, allowing for the detection of tenderness, warmth, swelling, and abnormalities in texture.
Tenderness
Palpation of muscles, bones, and joints for tenderness can localize pain and help differentiate between musculoskeletal and systemic causes of discomfort.
- Localized tenderness may suggest tendinitis, muscle strain, or localized trauma. For instance, tenderness over the lateral epicondyle of the elbow is characteristic of lateral epicondylitis (tennis elbow).
- Diffuse tenderness could indicate systemic inflammatory conditions, such as polymyalgia rheumatica or fibromyalgia.
Swelling
- Edema or effusion around joints is often a sign of inflammation or trauma. Palpation helps determine whether swelling is caused by fluid within the joint (joint effusion), a soft tissue injury (sprain), or inflammatory disease (rheumatoid arthritis).
- Pitting edema indicates fluid retention, often due to systemic conditions like heart failure or venous insufficiency, while non-pitting edema may indicate lymphatic blockage or infection.
Trigger Points
- Trigger points are focal areas of muscle spasm or hyperirritability, typically found in patients with myofascial pain syndrome. Applying pressure to these points often reproduces pain in a specific pattern or referred area.
Joint Abnormalities
- Crepitus: A palpable grating sensation during joint movement may indicate cartilage degeneration or damage, such as in osteoarthritis.
- Effusion: Fluid in the joint, detected as a spongy or fluctuating sensation, is often due to inflammatory conditions like septic arthritis, hemarthrosis, or crystal-induced arthropathy (e.g., gout).
- Bony prominences: Enlargement of bony structures may indicate osteophytes (bone spurs) commonly found in osteoarthritis, or fractures in trauma cases.
Range of Motion (ROM) Testing
Evaluating both active and passive range of motion is essential in determining joint functionality, muscle flexibility, and the integrity of soft tissues like tendons and ligaments.
Active ROM
This involves the patient voluntarily moving their joints. It assesses muscle strength, joint mobility, and the patient’s willingness or ability to move the joint through its normal range.
- Clinical significance: Reduced active ROM may indicate muscle weakness, pain, mechanical restriction due to joint pathology, or neurological impairment.
- Example: Limited active shoulder abduction may indicate rotator cuff pathology, adhesive capsulitis (frozen shoulder), or nerve impingement.
Passive ROM
Here, the clinician moves the joint without patient effort, providing an indication of the full potential range of movement, independent of muscle strength.
- Clinical significance: If passive ROM is preserved but active ROM is restricted, it often suggests muscle weakness or a mechanical issue, such as tendon pathology. Conversely, reduced passive ROM may indicate joint stiffness due to arthritis, capsulitis, or ligamentous contracture.
- Example: A discrepancy between active and passive ROM in the hip joint may suggest conditions like hip osteoarthritis or ligamentous injury.
Abnormal Findings in ROM
- Hyperflexibility or hypermobility: Excessive movement beyond the normal range, often due to ligamentous laxity or connective tissue disorders like Marfan syndrome or Ehlers-Danlos syndrome.
- Hypomobility: Restricted movement due to conditions such as osteoarthritis, rheumatoid arthritis, or joint contracture following injury.
Muscle Strength Testing
Muscle strength testing helps assess the integrity of the muscles, nerves, and tendons responsible for movement. The Lovett scale is commonly used to evaluate muscle strength:
- Grade 0: No muscle contraction observed.
- Grade 1: Flicker of muscle contraction, but no movement.
- Grade 2: Full ROM without gravity (gravity eliminated).
- Grade 3: Full ROM against gravity, but without resistance.
- Grade 4: Full ROM against some resistance, but weaker than normal.
- Grade 5: Full ROM against full resistance (normal strength).
Techniques
- Isotonic Contraction: Muscle changes length during contraction, such as lifting a weight (concentric contraction) or lowering it (eccentric contraction).
- Isometric Contraction: Muscle length remains constant, such as holding a plank position, where the muscle generates force without moving.
- Isokinetic Contraction: Muscle contracts at a constant speed, often using specialized equipment in rehabilitation settings.
Common Muscle Strength Tests
Upper Extremities
- Shoulder Abduction: Test the deltoid muscles by having the patient raise their arms out to the sides against resistance. Weakness may indicate a rotator cuff injury, nerve impingement, or brachial plexus injury.
- Elbow Flexion and Extension: The biceps and triceps are tested by having the patient flex (bend) and extend (straighten) the elbow against resistance. Weakness here could indicate nerve injury, such as damage to the radial or musculocutaneous nerves, or localized muscle injury.
- Wrist Flexion and Extension: Test wrist flexor and extensor muscles by asking the patient to bend and straighten the wrist against resistance. Weakness can point to tendon or nerve injuries, such as carpal tunnel syndrome (median nerve compression).
Lower Extremities
- Hip Flexion and Extension: Assess the iliopsoas (hip flexors) and gluteus maximus (hip extensors) by having the patient lift and extend their leg while supine, respectively. Weakness may indicate lumbar radiculopathy or hip pathology.
- Knee Extension and Flexion: The quadriceps are tested by resisting knee extension, while hamstring strength is tested by resisting knee flexion. Weakness in these muscles can suggest injury to the femoral or sciatic nerves or direct muscle pathology.
- Ankle Dorsiflexion and Plantarflexion: The tibialis anterior (dorsiflexion) and gastrocnemius/soleus complex (plantarflexion) are tested by resisting upward or downward foot movement. Weakness here might indicate sciatic nerve involvement or compartment syndrome