skills/hpk-parser/SKILL.md
Parseur et explicateur complet du format HPK (format de message propriétaire santé). Supporte plus de 100 types de messages couvrant l'administration des patients (ID, MV, CV), la chaîne logistique (PR, FO, MA, CO, LI, RO, FA), les stocks (SO, IM), la structure organisationnelle (ST, UT) et les opérations financières (RD, DD). Utilise @erp-pas/hpk-dictionary comme source de vérité. Valide la structure, extrait les champs, explique le contexte métier, mappe vers HL7 v2.5/IHE PAM et aide au dépannage des problèmes d'intégration.
npx skillsauth add dedalus-erp-pas/foundation-skills hpk-parserInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill parses and explains HPK (Healthcare Protocol Kernel) messages - a proprietary pipe-delimited healthcare message format used in the Hexagone system for French healthcare environments. The parser supports 100+ message types across multiple domains (patient administration, supply chain, inventory, financial, organizational), identifies message types, extracts all fields, validates structure, and provides human-readable explanations based on the official HPK dictionary and specifications.
Primary Sources of Truth:
@erp-pas/hpk-dictionary) - GitLab repository with complete message schemas, field definitions, and validation rulesCoverage:
When to use this skill:
HPK messages use pipe (|) as field delimiter with the following structure:
Type|Message|Mode|Emetteur|Date|User|...additional fields...
Core Fields (positions 0-5):
ID = Identity, MV = Movement, CV = Coverage)M1, M2, M3, M6, M8, M9, MT, CE, B1, etc.)C = Creation, M = Modification, D = Deletion)YYYYMMDDHHmmss)Purpose: Patient demographic information (registration)
Field Structure (38 fields total):
0: Type (ID)
1: Message (M1)
2: Mode (C/M/D)
3: Emetteur (Sender)
4: Date (YYYYMMDDHHmmss)
5: User
6: IPP (Patient ID)
7: Nom (Last Name)
8: Prénom (First Name)
9: Date de naissance (YYYYMMDD)
10: Sexe (M/F/U)
11: Adresse
12: Code postal
13: Ville
14: Pays
15: Téléphone
16: Téléphone portable
17: Email
18: Nom de naissance
19: Prénom usuel
20: Situation familiale
21: Nombre d'enfants
22: Profession
23: Médecin traitant
24: Établissement de naissance
25: Ville de naissance
26: Pays de naissance
27: Nationalité
28: INS (Identifiant National de Santé)
29: INS-C (Calcul)
30: NIR (Numéro de Sécurité Sociale)
31: Clé NIR
32: OID NIR
33: Matricule d'identité
34: Pays identité
35: Date décès (YYYYMMDD)
36: Indicateur de décès
37: Commentaire
Example:
ID|M1|C|HEXAGONE|20260122120000|USER001|PAT12345|DUPONT|JEAN|19750315|M|15 RUE DE LA PAIX|75001|PARIS|FRA|0612345678||||||||||||||||||||||||||||||
Explanation:
Purpose: Assign or update patient's treating physician (médecin traitant)
Field Structure (13 fields total):
0: Type (ID)
1: Message (MT)
2: Mode (C/M/D)
3: Emetteur
4: Date
5: User
6: IPP
7: Code médecin traitant
8: Nom médecin traitant
9: Prénom médecin traitant
10: Spécialité
11: Date début
12: Date fin
Example:
ID|MT|C|HEXAGONE|20260122120000|USER001|PAT12345|PR_MARTIN|MARTIN|SOPHIE|CARDIOLOGUE|20260122||
Explanation:
Purpose: Record patient consent for treatment/data processing
Field Structure (11 fields total):
0: Type (ID)
1: Message (CE)
2: Mode (C/M/D)
3: Emetteur
4: Date
5: User
6: IPP
7: Type consentement
8: Statut (OUI/NON)
9: Date début validité
10: Date fin validité
Purpose: Hospital admission (admission hospitalière)
Field Structure (19 fields total):
0: Type (MV)
1: Message (M2)
2: Mode (C/M/D)
3: Emetteur
4: Date
5: User
6: IPP
7: Numéro de séjour (Visit ID)
8: Date/heure entrée (YYYYMMDDHHmmss)
9: Mode d'entrée (URGENCE/MUTATION/DOMICILE)
10: Établissement
11: Service
12: Unité fonctionnelle (UF)
13: Lit
14: Médecin responsable
15: Provenance
16: Type hospitalisation
17: Mode de traitement
18: Motif d'admission
Example:
MV|M2|C|HEXAGONE|20260122140000|USER001|PAT12345|VIS20260122001|20260122140000|URGENCE|CHU_PARIS|CARDIO|UF_CARDIO_01|LIT_001|PR_MARTIN|||||||
Explanation:
Purpose: Change in patient administrative status
Field Structure:
0-5: Common fields (Type, Message, Mode, Emetteur, Date, User)
6: IPP
7: Numéro de séjour
8: Ancien statut
9: Nouveau statut
10: Date changement statut
11: Motif changement
Purpose: Patient transfer between units or services
Field Structure (18 fields total):
0: Type (MV)
1: Message (M6)
2: Mode (C/M/D)
3: Emetteur
4: Date
5: User
6: IPP
7: Numéro de séjour
8: Nouvelle UF
9: Nouveau lit
10: Nouveau service
11: Ancienne UF
12: Ancien lit
13: Ancien service
14: Date/heure mouvement
15: Mode de transfert
16: Nouveau médecin responsable
17: Motif de transfert
Example:
MV|M6|C|HEXAGONE|20260123090000|USER002|PAT12345|VIS20260122001|UF_NEURO_01|LIT_102|NEURO|UF_CARDIO_01|LIT_001|CARDIO||||||
Explanation:
Purpose: Exit from functional unit (without discharge)
Field Structure:
0-5: Common fields
6: IPP
7: Numéro de séjour
8: UF de sortie
9: Date/heure sortie UF
10: Destination
11: Mode de sortie
Purpose: Patient discharge from hospital
Field Structure (14 fields total):
0: Type (MV)
1: Message (M9)
2: Mode (C/M/D)
3: Emetteur
4: Date
5: User
6: IPP
7: Numéro de séjour
8: Date/heure sortie (YYYYMMDDHHmmss)
9: Mode de sortie (DOMICILE/MUTATION/DECES)
10: Destination
11: État à la sortie (AMELIORE/STATIONNAIRE/AGGRAVE)
12: Médecin ayant autorisé la sortie
13: Motif de sortie
Example:
MV|M9|C|HEXAGONE|20260125180000|USER003|PAT12345|VIS20260122001|20260125180000|DOMICILE||AMELIORE||||
Explanation:
Purpose: Emergency department box movement
Field Structure:
0-5: Common fields
6: IPP
7: Numéro de passage aux urgences
8: Box de départ
9: Box d'arrivée
10: Date/heure mouvement
11: Motif
Purpose: Temporary patient movement (exam, procedure)
Field Structure:
0-5: Common fields
6: IPP
7: Numéro de séjour
8: Lieu de départ
9: Lieu d'arrivée
10: Date/heure départ
11: Date/heure retour prévue
12: Motif (EXAMEN/BLOC/RADIOLOGIE)
Purpose: Patient insurance and coverage information
Field Structure (20 fields total):
0: Type (CV)
1: Message (M1)
2: Mode (C/M/D)
3: Emetteur
4: Date
5: User
6: IPP
7: Organisme payeur
8: Code régime
9: Caisse
10: Centre
11: Numéro adhérent
12: Clé adhérent
13: Rang bénéficiaire
14: Date début droits
15: Date fin droits
16: Type couverture (CPAM/MUTUELLE/AME)
17: Taux de remboursement
18: ALD (Affection Longue Durée)
19: CMU/CMUC
Example:
CV|M1|C|HEXAGONE|20260122120000|USER001|PAT12345|CPAM75|01|750|001|1234567890|12|00|20260101|20261231|CPAM|100|OUI|NON
Explanation:
When asked to parse an HPK message:
Split by pipe delimiter: fields = message.split('|')
Identify message type: Check fields[0], fields[1], and fields[2]
Look up in HPK Dictionary: Use message key {Type}|{Message} to get field definitions from @erp-pas/hpk-dictionary
Extract standard header fields (always present in positions 0-5):
| Position | Field | Format | Description | |----------|-------|--------|-------------| | 0 | Type | 2 chars | Message category | | 1 | Message | 2 chars | Specific message type | | 2 | Mode | 1 char | Operation (C/M/S/D) | | 3 | Emetteur | 15 chars | Sender system | | 4 | Date | 16 chars | Timestamp (YYYYMMDDHHMISSnn) | | 5 | User | 50 chars | User identifier |
Based on message type, extract remaining fields:
ID|M1 (Identity - fields 6-37):
MV|M2 (Admission - fields 6-18):
MV|M6 (Transfer - fields 6-17):
MV|M9 (Discharge - fields 6-13):
CV|M1 (Coverage - fields 6-19):
Apply formatting based on data types:
Date fields (YYYYMMDD):
20260122 → 22/01/2026DateTime fields (YYYYMMDDHHMISSnn):
20260122140530 → 22/01/2026 14:05:30Enumerated values:
Empty fields:
||Using HPK Dictionary definitions:
Field count validation:
expected_count = len(dictionary[message_key].fields)
actual_count = len(fields)
if actual_count != expected_count:
warn("Field count mismatch")
Required field validation:
for field_def in dictionary[message_key].fields:
if field_def.isMandatory and not fields[field_def.position]:
error(f"Missing required field: {field_def.description}")
Type validation:
Length validation:
if len(field_value) > field_def.length:
warn(f"Field exceeds maximum length: {field_def.description}")
Provide context and interpretation:
| (ASCII 124)|| not | |From HPK Dictionary isMandatory and type properties:
isMandatory: truelength property from dictionarycomment field)From HPK specifications and business rules:
Date reasonableness:
Identifier formats:
Code validity:
When validation fails, report:
**Validation Issues**:
❌ **Error**: Missing required field at position 7 (Last Name)
⚠️ **Warning**: Field 9 (Birth Date) exceeds maximum length
⚠️ **Warning**: Field count mismatch - expected 38, got 35
ℹ️ **Info**: Optional field 16 (Mobile phone) not provided
Severity levels:
When parsing a message, provide:
### HPK Message Analysis
**Raw Message**:
[original HPK message]
**Message Identification**:
- Type: [ID/MV/CV]
- Code: [M1/M2/M6/M9/etc.]
- Full Name: [descriptive name]
- Operation: [Creation/Modification/Deletion]
**Core Fields**:
- Sender System: [emetteur]
- Timestamp: [formatted date/time]
- User: [user ID]
**[Type]-Specific Fields**:
[List all relevant fields with labels and values]
**Business Context**:
[Explain what this message represents and its purpose]
**Validation**:
- Field count: [actual] (expected: [expected for this type])
- Required fields: [✓ or ✗ for each required field]
- Date formats: [✓ or ✗]
- Enumerated values: [✓ or ✗]
Repository: https://gitlab-erp-pas.dedalus.lan/erp-pas/hexagone/hpk-dictionary
Package: @erp-pas/hpk-dictionary (NPM)
Version: 1.0.5+
Purpose: Authoritative source of truth for all HPK message definitions
The HPK dictionary is an NPM package that provides comprehensive message definitions for the Hexagone healthcare system. Each message type includes:
{
description: String, // Human-readable message description
fields: Array[{
position: Number, // Field position (1-based)
description: String, // Field description
length: Number, // Maximum field length
type: String, // Data type (String, Number, Date, etc.)
isMandatory: Boolean, // Required field flag
comment: String // Additional notes/rules
}]
}
const hpk = require('@erp-pas/hpk-dictionary')
// Access message definition
const idM1 = hpk.segments['ID|M1']
console.log(idM1.description) // "Suppression Identité Patient"
// Iterate through field definitions
idM1.fields.forEach(field => {
console.log(`${field.position}. ${field.description} (${field.type}, max: ${field.length})`)
if (field.isMandatory) console.log(' ⚠️ Required')
})
The HPK dictionary defines 100+ message types across these domains:
When parsing HPK messages, use the dictionary to:
isMandatory flag to ensure all required fields presenttype field to validate data format (Date, Number, String)length field to ensure values don't exceed maximumcomment field for additional validation logicFrom HPK dictionary:
9999.99)Primary Source of Truth:
Internal Documentation:
Related Standards (for context):
| as field delimiter|| (no spaces)HPK messages are often mapped to HL7 v2.5 / IHE PAM format for interoperability. The fixtures directory contains examples of these mappings.
| HPK Message | HL7 Message | IHE Event | Description | |-------------|-------------|-----------|-------------| | ID|M1|C | ADT^A28 | Patient Add | Register new patient | | ID|M1|M | ADT^A31 | Patient Update | Update patient demographics | | ID|M1|D | ADT^A29 | Patient Delete | Delete patient record | | ID|MT|C | ADT^A28 | - | Add/update treating physician | | ID|CE|C | ADT^A28 | - | Record informed consent |
| HPK Message | HL7 Message | IHE Event | Description | |-------------|-------------|-----------|-------------| | MV|M2|C | ADT^A01 | Admit Patient [ITI-31] | Hospital admission | | MV|M3|C | ADT^A06 | - | Status change (to outpatient) | | MV|M6|C | ADT^A02 | Transfer Patient [ITI-32] | Unit/service transfer | | MV|M8|C | ADT^A02 | - | Unit exit (internal transfer) | | MV|M9|C | ADT^A03 | Discharge Patient [ITI-33] | Hospital discharge | | MV|B1|C | ADT^A02 | - | Emergency box movement | | MV|MT|C | ADT^A09/A10 | - | Temporary leave/return |
| HPK Message | HL7 Segments | Description | |-------------|--------------|-------------| | CV|M1|C | IN1 + IN2 | Primary insurance | | CV|M1|M | IN1 + IN2 | Insurance update |
| HPK Field (Position) | HPK Description | HL7 Field | HL7 Description | |---------------------|-----------------|-----------|-----------------| | 6 | IPP | PID-3 | Patient Identifier List | | 7 | Nom | PID-5.1 | Patient Name - Family Name | | 8 | Prénom | PID-5.2 | Patient Name - Given Name | | 9 | Date de naissance | PID-7 | Date/Time of Birth | | 10 | Sexe | PID-8 | Administrative Sex | | 11-14 | Adresse, CP, Ville, Pays | PID-11 | Patient Address | | 15-16 | Téléphone | PID-13 | Phone Number - Home | | 28 | INS | PID-3 | National Health ID (OID 1.2.250.1.213.1.4.8) | | 30-31 | NIR + Clé | PID-3 | Social Security Number (OID 1.2.250.1.213.1.4.10) |
| HPK Field (Position) | HPK Description | HL7 Field | HL7 Description | |---------------------|-----------------|-----------|-----------------| | 7 | Numéro de séjour | PV1-19 | Visit Number | | 8 | Date/heure entrée | PV1-44 | Admit Date/Time | | 9 | Mode d'entrée | PV1-4 | Admission Type | | 10 | Établissement | PV1-3.1 | Assigned Patient Location - Facility | | 11 | Service | PV1-3.2 | Assigned Patient Location - Building | | 12 | Unité fonctionnelle | PV1-3.3 | Assigned Patient Location - Floor | | 13 | Lit | PV1-3.4 | Assigned Patient Location - Bed | | 14 | Médecin responsable | PV1-7 | Attending Doctor |
| HPK Field (Position) | HPK Description | HL7 Field | HL7 Description | |---------------------|-----------------|-----------|-----------------| | 8 | Date/heure sortie | PV1-45 | Discharge Date/Time | | 9 | Mode de sortie | PV1-36 | Discharge Disposition | | 11 | État à la sortie | PV1-52 | Patient Condition Code |
[Hexagone WEB] --HPK--> [Service Echange] --HPK/HL7--> [External System]
↓
[HPK Dictionary]
[Mapping Rules]
Flow:
[External System] --Request--> [Hexagone WEB API] --HPK Event--> [Database]
↓
[HPK Message]
↓
[Service Echange] --HPK--> [Other Systems]
Flow:
Typical HPK message sequences for common workflows:
New Patient Admission:
1. ID|M1|C - Register patient identity
2. CV|M1|C - Add insurance coverage
3. MV|M2|C - Admit patient to hospital
4. [Optional] ID|MT|C - Assign treating physician
Patient Transfer:
1. MV|M8|C - Exit from current unit
2. MV|M6|C - Transfer to new unit
3. [If needed] MV|M3|C - Status change
Patient Discharge:
1. MV|M9|C - Discharge from hospital
2. [Optional] ID|M1|M - Update address if changed
3. [Optional] CV|M1|M - Update coverage end date
Important OIDs for HPK to HL7 mapping:
| Identifier Type | OID | Description | |----------------|-----|-------------| | INS-C | 1.2.250.1.213.1.4.8 | Identifiant National de Santé Calculé | | INS-A | 1.2.250.1.213.1.4.9 | Identifiant National de Santé Attesté | | NIR | 1.2.250.1.213.1.4.10 | Numéro de Sécurité Sociale | | IPP | 1.2.250.1.213.1.4.2 | Identifiant Permanent du Patient (local) | | FINESS | 1.2.250.1.71.4.2.2 | Identifiant Établissement | | RPPS | 1.2.250.1.71.4.2.1 | Répertoire Partagé des Professionnels de Santé |
Symptom: Message has fewer/more fields than expected
Expected 38 fields for ID|M1, got 35
Causes:
Solution:
Symptom: Invalid date format or parsing errors
Field 9 (Birth Date): "1975/03/15" - expected YYYYMMDD
Causes:
Solution:
Symptom: Message rejected by receiver
Field 3 (Emetteur): "Hexagone" - must be uppercase
Causes:
Solution:
Symptom: Required field appears empty
Field 7 (Last Name): "" - required field missing
Causes:
|| instead of value interpreted as emptySolution:
|| (consecutive pipes)| | is wrongSymptom: Special characters corrupted
"Hôpital" appears as "H?pital"
Causes:
Solution:
Input:
ID|M1|C|HEXAGONE|20260122120000|USER001|PAT12345|DUPONT|JEAN|19750315|M|15 RUE DE LA PAIX|75001|PARIS|FRA|0612345678||||||||||||||||||||||||||||||||||||||
Expected Output:
### HPK Message Analysis
**Message Type**: ID|M1|C - Patient Identity Creation
**Core Information**:
- System: HEXAGONE
- Timestamp: 22/01/2026 12:00:00
- User: USER001
- Operation: Creation (new patient registration)
**Patient Demographics**:
- IPP: PAT12345
- Name: DUPONT JEAN
- Birth Date: 15/03/1975 (50 years old)
- Gender: Male
- Address: 15 RUE DE LA PAIX, 75001 PARIS, France
- Phone: 06 12 34 56 78
**Business Context**:
This message registers a new patient in the system. The IPP (PAT12345) will be used to identify this patient in all subsequent messages (admissions, transfers, etc.). The message was generated by USER001 on 22/01/2026 at 12:00.
**Validation**: ✓ All required fields present, correct format
Input:
MV|M2|C|HEXAGONE|20260122140000|USER001|PAT12345|VIS20260122001|20260122140000|URGENCE|CHU_PARIS|CARDIO|UF_CARDIO_01|LIT_001|PR_MARTIN|||||||
Expected Output:
### HPK Message Analysis
**Message Type**: MV|M2|C - Patient Admission
**Core Information**:
- System: HEXAGONE
- Timestamp: 22/01/2026 14:00:00
- User: USER001
- Operation: Creation (new admission)
**Patient & Visit**:
- IPP: PAT12345
- Visit Number: VIS20260122001
- Admission Date/Time: 22/01/2026 14:00:00
**Admission Details**:
- Entry Mode: URGENCE (Emergency admission)
- Facility: CHU_PARIS
- Service: CARDIO (Cardiology)
- Functional Unit: UF_CARDIO_01
- Bed: LIT_001
- Attending Physician: PR_MARTIN
**Business Context**:
Patient PAT12345 admitted to CHU Paris Cardiology department via emergency room on 22/01/2026 at 14:00. The visit is assigned number VIS20260122001 which will track all movements during this hospital stay. Patient assigned to bed LIT_001 in functional unit UF_CARDIO_01 under care of Dr. PR_MARTIN.
**HL7 Mapping**: Maps to ADT^A01 (Admit Patient) - IHE PAM [ITI-31]
**Validation**: ✓ All required fields present
Input (Multiple Messages):
1. ID|M1|C|HEXAGONE|20260122120000|USER001|PAT12345|DUPONT|JEAN|19750315|M|...
2. CV|M1|C|HEXAGONE|20260122120100|USER001|PAT12345|CPAM75|01|750|...
3. MV|M2|C|HEXAGONE|20260122140000|USER002|PAT12345|VIS001|20260122140000|URGENCE|...
4. MV|M6|C|HEXAGONE|20260123090000|USER003|PAT12345|VIS001|UF_NEURO|...
5. MV|M9|C|HEXAGONE|20260125180000|USER002|PAT12345|VIS001|20260125180000|DOMICILE|...
Expected Output:
### HPK Message Sequence Analysis
**Workflow**: Complete Patient Episode
**Timeline**:
**22/01/2026 12:00** - Patient Registration (ID|M1|C)
- Patient DUPONT JEAN (IPP: PAT12345) registered by USER001
**22/01/2026 12:01** - Insurance Added (CV|M1|C) [+1 min]
- CPAM Paris coverage added by USER001
**22/01/2026 14:00** - Emergency Admission (MV|M2|C) [+2h]
- Admitted via emergency, Visit: VIS001 by USER002
**23/01/2026 09:00** - Transfer (MV|M6|C) [+19h]
- Transferred to Neurology by USER003
**25/01/2026 18:00** - Discharge (MV|M9|C) [+2d 9h]
- Discharged home by USER002
**Summary**:
- Episode duration: 3 days 6 hours
- Visit VIS001 completed
- 3 users involved
- ✓ Logical sequence maintained
- ✓ Chronological order correct
**HL7 Equivalent**: ADT^A28 → ADT^A28 → ADT^A01 → ADT^A02 → ADT^A03
| HPK Message | Full Name | Purpose | HL7 Equivalent | |-------------|-----------|---------|----------------| | ID|M1|C/M/D | Patient Identity | Patient demographics and registration | ADT^A28/A31/A29 | | ID|MT|C/M/D | Treating Physician | Assign/update médecin traitant | ADT^A28 | | ID|CE|C/M/D | Informed Consent | Record patient consent | ADT^A28 | | MV|M2|C/M/D | Admission | Hospital admission | ADT^A01 | | MV|M3|C/M/D | Status Change | Administrative status change | ADT^A06 | | MV|M6|C/M/D | Transfer | Unit/service transfer | ADT^A02 | | MV|M8|C/M/D | Unit Exit | Exit from functional unit | ADT^A02 | | MV|M9|C/M/D | Discharge | Hospital discharge | ADT^A03 | | MV|B1|C/M/D | Box Movement | Emergency department box movement | ADT^A02 | | MV|MT|C/M/D | Temporary Movement | Temporary movement (exam, procedure) | ADT^A09/A10 | | CV|M1|C/M/D | Coverage | Insurance and coverage information | IN1/IN2 |
| HPK Message | Full Name | Purpose | |-------------|-----------|---------| | UT|A1|C/M/S | User Account | Create/modify/delete user accounts |
| HPK Message | Full Name | Purpose | |-------------|-----------|---------| | ST|EJ|C/M | Legal Establishment | Établissement Juridique (legal entity) | | ST|EG|C/M | Geographic Establishment | Établissement Géographique (physical site) | | ST|BA|C/M/S | Building | Bâtiment (building structure) | | ST|ET|C/M/S | Floor | Étage (floor level) | | ST|CH|C/M/S | Room | Chambre/Pièce (room/space) |
| HPK Message | Full Name | Purpose | |-------------|-----------|---------| | PR|M0|C/M/S | Product - General Data | General product information | | PR|M1|C/M/S | Product - Pharmacy Info | Pharmacy-specific product data | | PR|M2|C/M/S | Product - Therapeutic Book | Therapeutic formulary information | | PR|M3|C/M/S | Product - Accounting Info | Accounting and financial data | | PR|M4|C/M/S | Product - Economic Info | Economic management information | | PR|M5|C/M/S | Product - Store Info | Store/warehouse information | | FO|M1|C/M/S | Supplier - General Info | General supplier information | | FO|M2|C/M/S | Supplier - Bank Details | Bank domiciliation details | | FO|M3|C/M/S | Supplier - Order Points | Order contact points |
| HPK Message | Full Name | Purpose | |-------------|-----------|---------| | MA|M1|C/M/S | Market - Header | Contract/market header | | MA|M2|C/M/S | Market - Lines | Contract/market line items | | MA|M3|C/M/S | Market - Suppliers | Suppliers by market | | CO|M1|C/M/S | Order - Header | Purchase order header | | CO|M2|C/M/S | Order - Lines | Purchase order line items | | LI|M1|C/M | Delivery - Lines | External delivery lines | | LI|M2|C/M | Delivery - Lot Lines | Delivery lines with lot management | | RO|M1|C/M/S | Reception - Lines | Reception lines | | RO|M2|C/M | Reception - Lot Lines | Reception lines with lot management |
| HPK Message | Full Name | Purpose | |-------------|-----------|---------| | FA|FE|C | Invoice - Header | Facture Entête (invoice header) | | FA|FL|C | Invoice - Lines | Facture Lignes (invoice line items) | | RD|E1|C | Misc Receipt - Header | Recettes diverses header | | RD|L1|C | Misc Receipt - Lines | Recettes diverses line items |
| HPK Message | Full Name | Purpose | |-------------|-----------|---------| | SO|S1|C | Stock Output | Sortie (stock withdrawal) | | SO|I1|C | Inventory | Inventaire (stock count) | | SO|T1|C | Stock Transfer | Transfert (internal transfer) | | SO|L1|C | Pre-established Lists | Listes pré établies | | IM|M1|C | Asset Inventory | Inventaire mobilier (asset tracking) |
| HPK Message | Full Name | Purpose | |-------------|-----------|---------| | DD|M1|C | Identity Request | Demande de création identité | | DD|K1|C | Act Request | Demande de création acte |
| Mode | French | English | Description | |------|--------|---------|-------------| | C | Création | Creation | Create new record | | M | Modification | Modification | Update existing record | | S | Suppression | Deletion | Delete/remove record | | D | Deletion | Deletion | Delete (alternate notation) |
Standard Header (all messages):
Type|Message|Mode|Emetteur|Date|User|...
Date Formats:
YYYYMMDD (e.g., 20260122)YYYYMMDDHHMISSnn (e.g., 20260122140530)Gender Codes:
M = Male (Masculin)F = Female (Féminin)U = Unknown (Inconnu)French Administrative Terms:
databases
Exécute des requêtes SQL en lecture seule sur plusieurs bases de données PostgreSQL. À utiliser pour : (1) interroger des bases PostgreSQL, (2) explorer les schémas/tables, (3) exécuter des requêtes SELECT pour l'analyse de données, (4) vérifier le contenu des bases. Supporte plusieurs connexions avec descriptions pour une sélection automatique intelligente. Bloque toutes les opérations d'écriture (INSERT, UPDATE, DELETE, DROP, etc.) par sécurité.
development
Automatisation complète du navigateur et tests web avec Playwright. Détecte automatiquement les serveurs de développement, gère le cycle de vie des serveurs, écrit des scripts de test propres dans /tmp. Tester des pages, remplir des formulaires, capturer des screenshots, vérifier le responsive design, valider l'UX, tester les flux de connexion, vérifier les liens, déboguer des webapps dynamiques, automatiser toute tâche navigateur. À utiliser quand l'utilisateur veut tester des sites web, automatiser des interactions navigateur, valider des fonctionnalités web ou effectuer tout test basé sur le navigateur.
documentation
Boîte à outils complète pour la manipulation de PDF : extraction de texte et tableaux, création de nouveaux PDF, fusion/découpage de documents et gestion de formulaires. Quand Claude doit remplir un formulaire PDF ou traiter, générer ou analyser des documents PDF de manière programmatique et à grande échelle.
testing
Lance une réunion simulée avec plusieurs personas experts pour analyser un sujet sous des perspectives diverses, prendre une décision et proposer une solution avant implémentation. Peut optionnellement publier l'analyse de la réunion sur une issue GitLab ou GitHub liée.