Bilag - GCTP Service Protokol

Indholdsfortegnelse

1. Indledning

Nærværende dokument indeholder en beskrivelse Gctp service protokollen

1.1. Identifikation

General Communication Transfer Protocol (GCTP) er et data transport format til kommunikation af data mellem CPR’s services og en klient hvad enten den er server side eller desktop baseret.

1.2. Formål

Formålet med dette dokument er at beskrive GCTP formatet på en sådan måde at læseren sættes istand i til at kunne afkode data fra gctp formatet. Det skal endvidere være mulig på baggrund af dette dokument at implementere software der er i stand til at skrive og modtage GCTP

1.3. Referencer

GCTP indgår som en blok i et XML-dokument af XML ver 1.0 http://www.w3.org/TR/REC-xml. (REC-xml).

2. GCTP Struktur

GCTP er en XML baseret protokol og fungerer ved hjælp af tags og attributter.

Nedenstående diagram illustrerer strukturen på en GCTP besked, som bør være indkapsuleret i et <root></root> element, der evt kan have namespace deklarationer.

GCTP Struktur

Herunder beskrives de enkelte tags

2.1. Gctp

GCTP elementet skal altid findes som den første tag i en besked, dog gerne under et root element. Herved fortælles det at, der frem til GCTP’ slut tag findes de data der indgår i beskeden

Table 1. Mulige attributter på et Gctp element
AttributBeskrivelse
vSkal indeholde versionen af GCTP der anvendes
envKan indeholde en indentifikation af det miljø der kommunikeres med
Eksempel
<Gctp v="1.0">
    ...
</Gctp>

2.2. System

System elementet anvendes til at angive oplysninger om hvilket system man agter at køre imod.

Table 2. Mulige attributter på et System element
AttributBeskrivelse
rSkal indeholde hvilket system kaldet foretages mod
Eksempel
<System r="CprAjour">
    ...
</System>

2.3. CprServiceHeader

CprServiceHeader elementet anvendes til at angive oplysninger om hvilken tilstand man ønsker at anvende når man kalder gctp og hvilken tilstand man er i når man modtager GCTP’en.

Endvidere kan angives om man anvender ventesystemet og servicen er primær (hvilket den altid er).

En CprServiceHeader vil have et underelement i form af en Table hvor der er angivet hvilke aktion der er muligt at vælge på en hændelse efter denne er initieret.

Table 3. Mulige attributter på et CprServiceHeader element
AttributBeskrivelse
rSkal indeholde navnet på hændelsen der kaldes
mkSkal indeholde den indberettende myndighedskode
aSkal indeholde hvilken aktion der ønskes eller hvilken tilstand servicen er i
uHvis denne attribut udfyldes med u="v" angives der at man ønsker at anvende ventesystemet
stst="P" angiver primær hændelse. Der anvendes kun primære hændelser i CPR ved GCTP version 2.0
tsAnvendes til at identificere den igangværende session med den pågældende hændelse
Table 4. Udfaset attributter på et CprServiceHeader element
AttributBeskrivelse
ptIdentificere den primære session en sekundær hændelse indgår i
pvAngiver en myndighed som en hændelse er indsendt på vegne af
Table 5. Tilladte værdier for attribut "a" - aktion
AktionBeskrivelse
IInitiering af hændelsen
VValidering af hændelsen
GGem hændelsen
FFortryd hændelsen
SSlet mange registreringer i hændelsen
1Initiering fra Vent
2Gem som kladde
3Gem og send til godkendelse i Vent
4Gem og godkend i Vent
5Aktiver fra Vent
6Slet fra Vent
7Afvis fra Vent
8Send til godkendelse uden data
9Godkend uden data
Table 6. Udfaset værdier for attribut "a" - aktion
AktionBeskrivelse
UGem uden initier
Eksempel på initiering af adoption hændelsen
<CprServiceHeader a="ADOPTI-I" a="I" st="P">
    ...
</CprServiceHeader>
Eksempel på validering af adoption hændelsen
<CprServiceHeader a="ADOPTI-I" a="V" st="P" ts="20050727094718410933">
    ...
</CprServiceHeader>
Eksempel på CprServiceHeader efter initiering med mulige aktioner
<CprServiceHeader a="ADOPTI-I" a="I" st="P" ts="20050727094718410933">
    <Table r="Aktioner">
        <Row>
            <Field r="KODE" v="V" t="Validering"/>
        </Row>
        <Row>
            <Field r="KODE" v="G" t="Gem"/>
        </Row>
        <Row>
            <Field r="KODE" v="F" t="Fortryd"/>
        </Row>
    </Table>
</CprServiceHeader>

2.4. Field

Field elementet anvendes til at angive værdier i GCTP beskeden og anvendes både til at angive læsedata og data der skal gemmes i CPR.

Table 7. Mulige attributter på et Field element
AttributBeskrivelse
rSkal indeholde navnet på feltet
vVærdien af feltet
aEgenskaber ved feltet, f.eks. L=Låst, S=Skal
a1Yderligere egenskaber for feltet
tEn tekst betegnelse af værdien i v attributten
tsEn forkortet tekst betegnelse af værdien i v attributten
tmEn mellemlang tekst betegnelse af værdien i v attributten
tlEn lang tekst betegnelse af værdien i v attributten
eEn fejlkode der angiver at der er fejl i det pågældende felt
bvEn boolsk betegnelse (true/false) for værdien i v-attributten
Eksempel på navn angivet i et Field, feltet er låst
<Field r="CNVN_FORNAVN" v="Peter" a="L" />
Eksempel på myndighed angivet i et Field, feltet er et skal udfyldes felt
<Field r="CNVN_STARTMYN" v="101" a="S" t="Københavns kommune" ts="Kbh. kommune" />
Eksempel på felt med fejl i
<Field r="CNVN_STARTMYN" v="101" a="S" t="Københavns kommune" ts="Kbh. kommune" e="3032" />

2.5. Row

En Row er beregnet på at kunne indeholde en række af data fra en tabel. Ved hjælp af usage attributten kan det fastsættes, om en række indeholder data eller om der er tale om en modelrække der bare angiver felter der er muligt på en række.

Selve datafelterne findes som Field elementer inde i Row blokken, som ikke kan optræde uden at være indeholdt i en Table blok.

Samspillet mellem Table og Row er netop metoden til at kommunikere flere rækker af data imellem server og klient.

Table 8. Mulige attributter på et Row element
AttributBeskrivelse
uAngiver Usage, hvis denne er sat u="M" er der tale om en model række der ikke indeholder data men bare oplysninger om hvilke felter der kan forekomme i hver række på denne tabel
kNøgle for rækken. Denne skal altid være udfyldt, og skal være unik i en Table blok, da det er den måde server og klient er enige om hvilke data der snakkes om
Table 9. Tilladte værdier for attribut "u" - usage
UsageBeskrivelse
MBeskriver modellen af rækker i en tabel
BEn logisk separator der kan adskille forskellig data
RESTGenstart nøgle for søgninger, som indikerer at der er mere data tilgængelig i tabellen

De nedenstående værdier benyttes ikke længere af systemet, da det selv beslutter betydningen af det indsendte data. Hvis der indsendes nye rækker med data der ikke findes, indsættes der nye data; hvis der rettes i data i en eksisterende række, opdateres der data; og hvis en forespørgsel har fjernet en eksisterende række, slettes data.

Table 10. Udfaset værdier for attribut "u" - usage
UsageBeskrivelse
CIndsæt som ny række
UOpdater denne række
DSlet denne række
Eksempel på model række
<Row u="M">
    <Field r="CNVN_FORNAVNE" a="L" />
    <Field r="CNVN_STARTMYN" a="S" />
</Row>
Eksempel på data række
<Row k="NOEGLE1">
    <Field r="CNVN_FORNAVNE" v="Peter" a="L" />
    <Field r="CNVN_STARTMYN" v="101" a="S" />
</Row>

2.6. Table

En Table er beregnet til at kunne indeholde data i tabel format, dvs i rækker og kolonner.

Table elementet anvendes sammen med Row elementet: Table tagget omkranser hele tabellen, mens de enkelte rækker omkranses af Row elementer inde i Table elementet.

Der kan godt forekomme flere Table elementer i en besked og disse skal derfor navngives unikt.

Endvidere kan Table indehold informationer om hvor mange rækker der er i alt.

Table 11. Mulige attributter på et Table element
AttributBeskrivelse
rSkal indeholde tabellens navn
aiaAntal i alt, anvendes ved søgninger
minDet minimale antal rækker tabellen skal indeholde
maxDet maksimale antal rækker tabellen må indeholde
mrMax antal rækker der kan indsendes via tabellen
Eksempel på tabel
<Table r="NavneTab" mr="25">
    <Row k="12345625122">
        <Field r="CNVN_FORNVN" v="Peter"/>
        <Field r="CNVN_EFTERNVN" v="Larsen"/>
    </Row>
    <Row  k="12345625122">
        <Field r="CNVN_FORNVN" v="Mette"/>
        <Field r="CNVN_EFTERNVN" v="Hansen"/>
    </Row>
</Table>

2.7. Kvit

Kvit elementet indeholder informationer om resultatet af seneste handling i form af enten en OK kvittering eller en fejl kvittering.

Hvis der er tale om en Gem aktion der er gået godt, indeholder Kvit også en tabel med stamdata om de objekter som persisteringen vedrører.

Table 12. Mulige attributter på et Kvit element
AttributBeskrivelse
rSkal angive kvitteringstypen
vSkal angive kvitteringskoden
tKan indeholder en tekst såfremt der er tale om en fejl eller anmærkning
Table 13. Tilladte værdier for attribut "r" - kvitteringstype
TypeBeskrivelse
SystemSystemfejl
AnmrkAnmodningen blev behandlet uden fejl men der er en anmærkning
AfslutAnmodningen blev behandlet uden fejl og session er afsluttet
FejlAnmodningen fejlede
OkAnmodningen blev behandlet uden fejl og sessionen er stadig aktiv
returKodeKvitteringskoden kan have en speciel betydning - ikke blot ok eller en fejl/anmærkning
Table 14. Udfaset værdier for attribut "r" - kvitteringstype
TypeBeskrivelse
DumpGammel systemfejl
Eksempel på fejl kvittering
<Kvit r="Fejl" v="3422" t="Personen findes ikke i CPR" />
Eksempel på OK kvittering efter validering
<Kvit r="OK" v="0" />
Eksempel på Afslut kvittering efter data er gemt
<Kvit r="Afslut" v="0">
    <Table r="AFSLUT">
        <Row k="PNR=1212121212;">
            <Field r="PNR" v="1212121212"/>
            <Field r="ADRNVN" v="Petersen,Peter"/>
            <Field r="FORNVN" v="Peter"/>
            <Field r="MELNVN"/>
            <Field r="EFTERNVN" v="Petersen"/>
            <Field r="STATUS" v="1" t="Bopæl i Danmark"/>
            <Field r="REL"/>
        </Row>
    </Table>
</Kvit>

2.8. CprData

CprData elementet angives til angive blokke af data der anvendes i GCTP beskeden. Der skelnes på attributten u som angiver om der er tale om input eller output data.

Output data tjener som stamdata om de objekter servicen omhandler, mens Inputdata tjener som de data der evt. kan indberettes på servicen.

Table 15. Mulige attributter på et CprData element
AttributBeskrivelse
uSkal angive hvilken type data der indgår i blokken.
Table 16. Tilladte værdier for attribut "u" - data usage
Data usageBeskrivelse
IBlokken indeholder input data der kan redigeres
OBlokken indeholder output data der ikke kan redigeres, og som blot er til visninger

2.9. Rolle

Rolle elementet anvendes til at angive blokke af data som omhandler et specifikt objekt der indgår i servicen, f.eks. en person. Omhandler en service f.eks. flere personer kan der være flere Roller under CprData elementet.

En rolle angives med navn i r attributten.

Hvis der er tale om en Output rolle vil der være et eller flere Praes elementer i blokken. Hvis der er tale om en input Rolle vil der være Table eller Field elementer i blokken.

Table 17. Mulige attributter på et Rolle element
AttributBeskrivelse
rSkal indeholde navnet på rollen

2.10. Sik

Sik elementet anvendes ved logon.

Table 18. Mulige attributter på et Sik element
AttributBeskrivelse
functionSkal angive den funktion der benyttes
useridSkal angive brugernavn
passwordSkal angive password
newpass1Kan indeholde et nyt password
Table 19. Tilladte værdier for attribut "function" - funktion
FunktionBeskrivelse
signonLogon via GCTP
newpassSkift password
Eksempel på logon
<Sik function="signon" userid="x3450" password="xxxxxx" />
Eksempel på skifte password
<Sik function="newpass" userid="x3450" password="xxxxxx" newpass1="yyyyyy" />

2.11. Praes

Praes elementet anvendes til præsentation af objekters data. Blokken indeholder Field elementer.

En Praes angives med navn i r attributten.

Der er en række kendte præsentationer for standard objekter, som altid vil indeholder de samme felter, f.eks. vil STAMPNR altid indeholder felter der præsenterer en person, og STAMMYN vil altid indeholde de samme felter for en præsentation af en myndighed.

Table 20. Mulige attributter på et Praes element
AttributBeskrivelse
rSkal indeholder navnet på præsentationen

2.12. Log

Log elementet kan anvendes til at samle flere Service elementer under en logisk logning. Dette anvendes kun ved søge-services.

En Log angives med navn i r attributten.

Table 21. Mulige attributter på et Log element
AttributBeskrivelse
rSkal angive det logiske navn på log blokken

2.13. Service

Service elementet anvendes til at identificere den CPR ydelse der skal benyttes.

En Service angives med navn i r attributten.

Elementet indeholder altid en eller flere CprServiceHeader elementer, samt CprData elementer til input og output data, hvis en service session er i gang. Ved svar var serveren vil der også være et Kvit element.

Når en session afsluttes vil der ikke forekomme CprData elementer.

Table 22. Mulige attributter på et Service element
AttributBeskrivelse
rSkal indeholde navnet på servicen der anvendes

2.14. Key

Key elementet anvendes til at identificere nøglefelter ved initiering af ajourførings-services og ved søgninger, og indeholder Field elementer.

Key elementet skal optræde i alle kald fra klienten, både ved initiering, validering, og gem, og findes i CprServiceHeader blokken.

Elementet har ingen attributter.

Eksempel på et Key element
<CprServiceHeader r="FLYT-I" st="P" a="I">
    <Key>
      <Field r="PNR" v="2216582244"/>
      <Field r="DATO" v="19980325"/>
    </Key>
</CprServiceHeader>

3. Eksempler

Dette afsnit

3.1. ADROPL-R - Registrering med én person

Dette eksempel dækker en service med én hovedperson. Der initieres og gemmes.

3.1.1. Klient initiate

Eksempel på at klienten initierer
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
    <Gctp v= "2.0" >
        <System r= "CprAjour">
            <Service r= "ADROPL-R">
                <CprServiceHeader r="ADROPL-R" st="P" a="I" mk="1011">
                    <Key>
                        <Field r="PNR" v="2216582244" />
                        <Field r="DATO" v="19980325" />
                        <Field r="TMST" v="19980322130522123456" />
                        <Field r="AK" v=" " />
                    </Key>
                </CprServiceHeader>
            </Service>
        </System>
    </Gctp>
</root>

3.1.2. Server initiate svar

Serveren sender præsentationsdata samt input felter.

Eksempel på et server svar på initiate
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
    <Gctp v="2.0">
        <System r="CprAjour">
            <Service r="ADROPL_R">
                <CprServiceHeader r="ADROPL_R" st="P" a="I" mk="1011" ts="19980322130522123456" />
                    <Table r="Aktioner">
                        <Row>
                            <Field r="KODE" v="V" t="Validering"/>
                        </Row>
                        <Row>
                            <Field r="KODE" v="F" t="Fortryd"/>
                        </Row>
                        <Row>
                            <Field r="KODE" v="G" t="Gem"/>
                        </Row>
                    </Table>
                <CprData u="O">
                    <Rolle r="HovedRolle">
                        <Praes r="STAMPNR">
                            <Field r="PNR" v="1205680887" />
                            <Field r="ADRNVN" v="Larsen,Peter" />
                            <Field r="FOEDDATO" v="19680512" />
                            ... resten af præsentationen
                        </Praes>
                        <Praes r="STAMMYN">
                            <Field r="MYNKOD" v="0101" t="Københavns Kommune" />
                            <Field r="DATO" v="19980625" />
                        </Praes>
                        <Field r="CPST_POSTNR" v="4600" t="Køge" />
                    </Rolle>
                </CprData>
                <CprData u="I">
                    <Rolle r="HovedRolle">
                        <Field r="CADR_STARTMYNKOD" v="0259" t="Køge" a="S" />
                        <Field r="CADR_STARTDATO" v="19980625" />
                        <Field r="CADR_STARTDATOUSM" v="*" />
                        <Field r="CADR_VEJKOD" v="124" t="Vestergade" a="S" />
                        <Field r="CADR_CONVN" v="c/o Petersen" />
                        <Field r="CADR_ETAGE" v="4" />
                        <Field r="CADR_HUSNR" v="125" />
                        <Field r="CADR_KOMKOD" v="0259" t="Køge" a="S" />
                        <Field r="CADR_SIDEDOER" v="tv" />
                    </Rolle>
                </CprData>
                <Kvit r="Ok"/>
            </Service>
        </System>
    </Gctp>
</root>

3.1.3. Klient gemmer

Klienten ændrer c/o navn. Klienten sender de felter ind som er ændret, samt alle de felter, som serveren i svaret på initiate har fortalt er skal-felter.

Eksempel på et gem kald fra klienten
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
    <Gctp v="2.0">
        <System r="CprAjour">
            <Service r="ADROPL-R">
                <CprServiceHeader r="ADROPL-R" st="P" a="G" mk="1011" ts="19980322130522123456">
                    <Key>
                        <Field r="PNR" v="2216582244" />
                        <Field r="DATO" v="19980325" />
                        <Field r="TMST" v="19980322130522123456" />
                        <Field r="AK" v=" " />
                    </Key>
                </CprServiceHeader>
                <CprData u="I">
                    <Rolle r="HovedRolle">
                        <Field r="CADR_STARTMYNKOD" v="0101" />
                        <Field r="CADR_CONVN" v="c/o Pedersen" />
                        <Field r="CADR_VEJKOD" v="1245" t="Vestergade" />
                        <Field r="CADR_KOMKOD" v="0259" t="Køge" />
                    </Rolle>
                </CprData>
            </Service>
        </System>
    </Gctp>
</root>

3.1.4. Sever svarer på gem

Eksempel på et gem svar fra serveren
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
    <Gctp v="2.0">
        <System r="CprAjour">
            <Service r=" ADROPL-R">
                <CprServiceHeader r="ADROPL-R" st="P" a="G" mk="1011" ts="19980322130522123456" />
                <Kvit r="Afslut" v="0">
                    <Table>
                        <Row k="2216582244">
                            <Field r="PNR" v="2216582244" />
                            <Field r="ADRNVN" v="Larsen,Peter" />
                        </Row>
                        <Row k="2216582244">
                            <Field r="PNR" v="2216582244" />
                            <Field r="ADRNVN" v="Larsen,Ulla" />
                            <Field r="REL" v="ÆGTEFÆLLE" />
                        </Row>
                    </Table>
                </Kvit>
            </Service>
        </System>
    </Gctp>
</root>

3.2. ADOPTI-I - Registrering med flere personer

Dette eksempel dækker over en service med flere relaterede personer. Der initieres, valideres, og gemmes.

3.2.1. Klient initiate med flere nøgler

Klienten sende r4 nøgler ind til serveren.

  • PNR : Barnet
  • PNRF : Den nye far
  • PNRM : Den nye mor
  • DATO : Hændelsesdatoen
Eksempel på et initiate kald med flere nøgler fra klienten
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
    <Gctp v="2.0">
        <System r="CprAjour">
            <Service r="ADOPTI-I">
                <CprServiceHeader r="ADOPTI-I" st="P" a="I" mk="1011" ts="">
                    <Key>
                        <Field r="PNR" v="2206802244" />
                        <Field r="PNRF" v="1112581235" />
                        <Field r="PNRM" v="1008623456" />
                        <Field r="DATO" v="19980325" />
                    </Key>
                </CprServiceHeader>
            </Service>
        </System>
    </Gctp>
</root>

3.2.2. Server initiate svar med flere stamperson præsentationer

Severen svarerer med præsentationsdata for alle personerne i nøglefelterne, samt barnets nuværende mor og far.

Eksempel på et initiate svar med flere præsentationer til flere personer
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
    <Gctp v="2.0">
        <System r="CprAjour">
            <Service r="ADOPTI-I">
                <CprServiceHeader r="ADOPTI-I" st="P" a="I" mk="1011" ts="19980322130522123456">
                      <Table r="Aktioner">
                          <Row>
                              <Field r="KODE" v="V" t="Validering" />
                          </Row>
                          <Row>
                              <Field r="KODE" v="F" t="Fortryd" />
                          </Row>
                          <Row>
                              <Field r="KODE" v="G" t="Gem" />
                          </Row>
                          <Row>
                              <Field r="KODE" v="2" t="Gem kladde i vent" />
                          </Row>
                          <Row>
                              <Field r="KODE" v="4" t="Gem og godkend" />
                          </Row>
                      </Table>
                </CprServiceHeader>
                <CprData u="O">
                    <Rolle r="HovedRolle">
                        <Praes r="STAMPNR">
                            <Field r="PNR" v="2206802244" />
                            <Field r="ADRNVN" v="Larsen,Petra" />
                            <Field r="FOEDDATO" v="19800622" />
                            .... resten af STAMPNR præsentation for personen
                        </Praes>
                    </Rolle>
                    <Rolle r="NyMor">
                        <Praes r="STAMPNR">
                            <Field r="PNR" v="1008623456" />
                            <Field r="ADRNVN" v="Larsen,Olga" />
                            <Field r="FOEDDATO" v="19620810" />
                            .... resten af STAMPNR præsentation for personen
                        </Praes>
                    </Rolle>
                    <Rolle r="NyFar">
                        <Praes r="STAMPNR">
                            <Field r="PNR" v="1112581235" />
                            <Field r="ADRNVN" v="Birger Olsen" />
                            <Field r="FOEDDATO" v="19581211" />
                            .... resten af STAMPNR præsentation for personen
                        </Praes>
                    </Rolle>
                    <Rolle r="Far">
                        <Praes r="STAMPNR">
                            <Field r="PNR" v="1210564567" />
                            <Field r="ADRNVN" v="Helge Larsen" />
                            <Field r="FOEDDATO" v="19561012" />
                            .... resten af STAMPNR præsentation for personen
                        </Praes>
                    </Rolle>
                    <Rolle r="Mor">
                        <Praes r="STAMPNR">
                            <Field r="PNR" v="2307606788" />
                            <Field r="ADRNVN" v="Pedersen,Ursula" />
                            <Field r="FOEDDATO" v="1960723" />
                            .... resten af STAMPNR præsentation for personen
                        </Praes>
                    </Rolle>
                </CprData>
                <CprData u="I">
                    <Rolle r="HovedRolle">
                        <Field r="CSLG_FARDATO" v="19980325" a="SL" />
                        <Field r="CSLG_FARDOK" a="S" />
                        <Field r="CSLG_FARDOKMYNKOD" v="0259" a="SL" t="Køge" />
                        <Field r="CSLG_FARMYNKOD" v="0259" a="SL" t="Køge" />
                        <Field r="CSLG_FARNVN" v="" a="L" />
                        <Field r="CSLG_FARNVNMRK" v="" a="L" />
                        <Field r="CSLG_FARFOEDDATO" v="" a="L" />
                        <Field r="CSLG_MORDATO" v="19980325" a="SL" />
                        <Field r="CSLG_MORDOK" a="S" />
                        <Field r="CSLG_MORDOKMYNKOD" v="0259" a="SL" t="Køge" />
                        <Field r="CSLG_MORMYNKOD" v="0259" a="SL" t="Køge" />
                        <Field r="CSLG_MORNVN" a="L" />
                        <Field r="CSLG_MORNVNMRK" a="L" />
                        <Field r="CSLG_MORFOEDDATO" a="L" />
                    </Rolle>
                </CprData>
                <Kvit r="Ok" />
            </Service>
        </System>
    </Gctp>
</root>

3.2.3. Klient ændre data og validerer

Klienten markerer far og mor som verificeret (DOK) og beder om validering.

Eksempel på at klienten ændre data og validerer
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
    <Gctp v="2.0">
        <System r="CprAjour">
            <Service r="ADOPTI-I">
                <CprServiceHeader r="ADOPTI-I" st="P" a="V" mk="1011" ts="19980322130522123456">
                    <Key>
                        <Field r="PNR" v="2206802244" />
                        <Field r="PNRM" v="1112581235" />
                        <Field r="PNRF" v="1008623456" />
                        <Field r="DATO" v="19980325" />
                    </Key>
                </CprServiceHeader>
                <CprData u="I">
                    <Rolle r="HovedRolle">
                        <Field r="CSLG_FARDATO" v="19980325" a="SL" />
                        <Field r="CSLG_FARDOK" v="JA" />
                        <Field r="CSLG_FARDOKMYNKOD" v="1011" />
                        <Field r="CSLG_FARMYNKOD" v="1011" a="SL" />
                        <Field r="CSLG_FARNVN" v="" a="L" />
                        <Field r="CSLG_FARNVNMRK" v="" a="L" />
                        <Field r="CSLG_FARFOEDDATO" v="" a="L" />
                        <Field r="CSLG_MORDATO" v="19980325" a="SL" />
                        <Field r="CSLG_MORDOK" v="JA" />
                        <Field r="CSLG_MORDOKMYNKOD" v="1011" />
                        <Field r="CSLG_MORMYNKOD" v="1011" a="SL" />
                        <Field r="CSLG_MORNVN" v="" a="L" />
                        <Field r="CSLG_MORNVNMRK" v="" a="L" />
                        <Field r="CSLG_MORFOEDDATO" v="" a="L" />
                    </Rolle>
                </CprData>
            </Service>
        </System>
    </Gctp>
</root>

3.2.4. Server svar på validering

Eksempel på et server svar på validering
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
    <Gctp v="2.0">
        <System r="CprAjour">
            <Service r="ADOPTI-I">
                <CprServiceHeader r="ADOPTI-I" st="P" a="v" mk="1011" ts="19980322130522123456" />
                <CprData u="O">
                    <Rolle r="HovedRolle">
                        <Praes r="STAMPNR">
                            <Field r="PNR" v="2206802244" />
                            <Field r="ADRNVN" v="Petra Larsen" />
                            <Field r="FOEDDATO" v="19800622" />
                        </Praes>
                    </Rolle>
                    <Rolle r="NyMor">
                        <Praes r="STAMPNR">
                            <Field r="PNR" v="1008623456" />
                            <Field r="ADRNVN" v="Larsen,Olga" />
                            <Field r="FOEDDATO" v="19620810" />
                        </Praes>
                    </Rolle>
                    <Rolle r="NyFar">
                        <Praes r="STAMPNR">
                            <Field r="PNR" v="1112581235" />
                            <Field r="ADRNVN" v="Olsen,Birger" />
                            <Field r="FOEDDATO" v="19581211" />
                        </Praes>
                    </Rolle>
                    <Rolle r="Far">
                        <Praes r="STAMPNR">
                            <Field r="PNR" v="1210564567" />
                            <Field r="ADRNVN" v="Larsen,Helge" />
                            <Field r="FOEDDATO" v="19561012" />
                        </Praes>
                    </Rolle>
                    <Rolle r="Mor">
                        <Praes r="STAMPNR">
                            <Field r="PNR" v="2307606788" />
                            <Field r="ADRNVN" v="Petersen,Ursula" />
                            <Field r="FOEDDATO" v="196007230" />
                        </Praes>
                    </Rolle>
                </CprData>
                <CprData u="I">
                    <Rolle r="HovedRolle">
                        <Field r="CSLG_FARDATO" v="19980325" a="SL" />
                        <Field r="CSLG_FARDOK" v="JA" />
                        <Field r="CSLG_FARDOKMYNKOD" v="0259" a="L" t="Køge" />
                        <Field r="CSLG_FARMYNKOD" v="0259" a="SL" t="Køge" />
                        <Field r="CSLG_FARNVN" a="L" />
                        <Field r="CSLG_FARNVNMRK" a="L" />
                        <Field r="CSLG_MORDATO" v="19980325" a="SL" />
                        <Field r="CSLG_MORDOK" v="JA" />
                        <Field r="CSLG_MORDOKMYNKOD" v="0259" a="L" t="Køge" />
                        <Field r="CSLG_MORMYNKOD" v="19980325" a="SL" />
                        <Field r="CSLG_MORNVN" a="L" />
                        <Field r="CSLG_MORNVNMRK" a="L" />
                    </Rolle>
                </CprData>
                <Kvit r="Ok" />
            </Service>
        </System>
    </Gctp>
</root>

3.2.5. Klient gemmer

Eksempel på at klienten gemmer
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
    <Gctp v="2.0">
        <System r="CprAjour">
            <Service r="ADOPTI-I">
                <CprServiceHeader r="ADOPTI-I" st="P" a="G" mk="1011" ts="19980322130522123456">
                    <Key>
                        <Field r="PNR" v="2206802244" />
                        <Field r="PNR2" v="1112581235" />
                        <Field r="PNR3" v="1008623456" />
                        <Field r="DATO" v="19980325" />
                    </Key>
                </CprServiceHeader>
                <CprData u="I">
                    <Rolle r="HovedRolle">
                        <Field r="CSLG_FARDATO" v="19980325" />
                        <Field r="CSLG_FARDATOUSM" v=" " />
                        <Field r="CSLG_FARDOK" v="JA" />
                        <Field r="CSLG_FARDOKMYNKOD" v="1011" />
                        <Field r="CSLG_MORDATO" v="19980325" />
                        <Field r="CSLG_MORDATOUSM" v=" " />
                        <Field r="CSLG_MORDOK" v="JA" />
                        <Field r="CSLG_MORDOKMYNKOD" v="1011" />
                    </Rolle>
                </CprData>
            </Service>
        </System>
    </Gctp>
</root>

3.2.6. Server svarer på gem

Eksempel på et server svar på gem
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
    <Gctp v="2.0">
        <System r="CprAjour">
            <Service r="ADOPTI-I">
                <CprServiceHeader r="ADOPTI-I" st="P" a="G" mk="1011"  ts="19980322130522123456" />
                <Kvit r="Afslut" v="0" >
                    <Table>
                        <Row k="2206802244">
                            <Field r="PNR" v="2206802244" />
                            <Field r="ADRNVN" v="Larsen,Petra" />
                        </Row>
                    </Table>
                </Kvit>
            </Service>
        </System>
    </Gctp>
</root>

3.3. KNOTAT-I - Registrering med tabel-rækker

Dette eksempel dækker over en service der har inputfelter i tabel rækker. Der initieres og gemmes.

3.3.1. Klient initiate

Klienten beder om at få initieret indberet kommunale notater.

Eksempel på et initiate kald fra klienten
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
    <Gctp v="2.0">
        <System r="CprAjour">
            <Service r="KNOTAT-I">
                <CprServiceHeader r="KNOTAT-I" st="P" a="I" mk="1011" ts="">
                    <Key>
                        <Field r="PNR" v="2206802244" />
                    </Key>
                </CprServiceHeader>
            </Service>
        </System>
    </Gctp>
</root>

3.3.2. Server initiate svar med input tabel rækker

Serveren svarer med tabel rækker. Der findes allerede eksisterende data, som vises i rækker med knøglerne 3 og 8, samt en model-række.

Eksempel på et initiate svar med tabel rækker
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
    <Gctp v="2.0">
        <System r="CprAjour">
            <Service r=" KNOTAT-I">
                <CprServiceHeader r="KNOTAT-I" st="P" a="I" mk="1011"  ts="19980322130522123456">
                      <Table r="Aktioner">
                          <Row>
                              <Field r="KODE" v="V" t="Validering" />
                          </Row>
                          <Row>
                              <Field r="KODE" v="F" t="Fortryd" />
                          </Row>
                          <Row>
                              <Field r="KODE" v="G" t="Gem" />
                          </Row>
                      </Table>
                </CprServiceHeader>
                <CprData u="O">
                    <Rolle r="HovedRolle">
                        <Praes r="STAMPNR">
                            <Field r="PNR" v="2206802244" />
                            <Field r="ADRNVN" v="Larsen,Petra" />
                            <Field r="FOEDDATO" v="19800622" />
                            .... reseten af en person præsentation
                        </Praes>
                    </Rolle>
                </CprData>
                <CprData u="I">
                    <Rolle r="HovedRolle">
                        <Table max="24">
                            <Row u="M">
                                <Field r="CNTA_MYNKOD" v="0101" t="København" a="SL" />
                                <Field r="CNTA_NOTTXT" />
                                <Field r="CNTA_STARTDATO" />
                            </Row>
                            <Row k="3">
                                <Field r="CNTA_MYNKOD" v="0101" t="København" a="SL" />
                                <Field r="CNTA_NOTTXT" v="ttttttt" />
                                <Field r="CNTA_STARTDATO" v="19880623" />
                            </Row>
                            <Row k="8">
                                <Field r="CNTA_MYNKOD" v="0101" t="København" a="SL" />
                                <Field r="CNTA_NOTTXT" v="yyyyyy" />
                                <Field r="CNTA_STARTDATO" v="19860623" />
                            </Row>
                        </Table>
                    </Rolle>
                </CprData>
                <Kvit r="Ok" />
            </Service>
        </System>
    </Gctp>
</root>

3.3.3. Klienten gemmer date med nye rækker

Klienten laver en ny række med nøglen 1, og fjerner den gamle række med nøgle 8 (hvilket vil sige at den slettes).

Eksempel på et kald med nye rækker og fjernet gamle rækker
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
    <Gctp v="2.0">
        <System r="CprAjour">
            <Service r="KNOTAT-I">
                <CprServiceHeader r="KNOTAT-I" st="P" a="G" mk="1011" ts="19980322130522123456">
                    <Key>
                        <Field r="PNR" v="2206802244" />
                    </Key>
                </CprServiceHeader>
                <CprData u="I">
                    <Rolle r="HovedRolle">
                        <Table>
                            <Row k="3">
                                <Field r="CNTA_MYNKOD" v="0101" />
                                <Field r="CNTA_NOTTXT" v="tvtvtvtvtv" />
                                <Field r="CNTA_STARTDATO" v="19990423" />
                            </Row>
                            <Row k="1">
                                <Field r="CNTA_MYNKOD" v="0101" />
                                <Field r="CNTA_NOTTXT" v="nynynynynyny" />
                                <Field r="CNTA_STARTDATO" v="19990423" />
                                <Field r="CNTA_SLETDATO" v="20000423" />
                            </Row>
                        </Table>
                    </Rolle>
                </CprData>
            </Service>
        </System>
    </Gctp>
</root>

3.3.4. Server svar på gem

Eksempel på et gem svar fra en forespørgsel med rækker
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
    <Gctp v="2.0">
        <System r="CprAjour">
            <Service r=" KNOTAT-I">
                <CprServiceHeader r=" KNOTAT-I" st="P" a="G" mk="1011" ts="19980322130522123456" />
                <Kvit r="Afslut" v="0">
                    <Table>
                        <Row k="2206802244">
                            <Field r="PNR" v="2206802244" />
                            <Field r="ADRNVN" v="Larsen,Petra" />
                        </Row>
                    </Table>
                </Kvit>
            </Service>
        </System>
    </Gctp>
</root>