AFVENTER ENDELIG GODKENDELSE


Indholdsfortegnelse

Releases

En oversigt over de forskellige releases, og eventuelle kommentare omkring disse:

ReleaseKommentar
1.1

Release af version 2 af WSDL

Version 1 af WSDL er stadig aktiv, men opgradering til version 2 er anbefalet

1.0Release af version 1 af WSDL

Neden for kan dokumentationen for de aktive WSDL versioner findes.

Version 2

Nyeste version af systemet, og anbefalet for nye klienter at integrere med.

Ændringer

Liste af ændringer sket i snitfladen mellem versioner.

Til v2.0

Endpoint

Opdater servicen kan tilgås på adressen:

[miljø url]/sor-opdatering/v2/SOROpdateringService

For eksempel, på TEST1-miljøet vil det være:

http://test1-cnsp.ekstern-test.nspop.dk:8080/sor-opdatering/v2/SOROpdateringService

WSDL filen for servicen kan hentes ved at tilføje "?wsdl" til enden af URL'en.

Snitfladebeskrivelser

Fælles

Sikkerhed

Fælles for hele servicen, er at der bliver benyttet Den Gode Webservice (DGWS) til authentifikering, og der accepteres kun niveau 3 (VOCES og FOCES) eller 4 (MOCES) ID kort udstedt af SOSI-STS. Selvom at niveau 3 både indeholder FOCES og VOCES, så er det kun FOCES som er tilladt.

Namespaces

Alle kald til servicen vil benytte typer defineret under namespacet:

http://sundhedsdatastyrelsen.dk/SOROpdateringService/2019/03/14/

Eksterne typer

Mange af de data typer som bliver benyttet, kan typisk findes her:

http://filer.nsi.dk/sor/xsd/

Typer under både v_1_0_0 og v_2_0_0 bliver benyttet.

Følgende lokationer bliver også inkluderet for typer:

http://digitaliser.dk/resource/1945/artefact/CVR_CVRnumberIdentifier.xsd

http://rep.oio.dk/cvr.dk/xml/schemas/2005/03/22/CVR_ProductionUnitIdentifier.xsd

http://rep.oio.dk/kms.dk/xml/schemas/2007/05/23/


Alle typer hentet eksternt fra er ikke angivet i dette dokument, da listen så vil blive meget lang.

Koder

Flere felter benytter koder frem for tekst strenge til at signalere over for servicen, hvilken type enhed der er ønsket at blive oprettet, eller hvor at enheden er placeret. Eksempler på sådanne er SystemTypeIdentifier under EanLocationCodeEntityType, eller RegionCode under de forskellige adresse typer (aktivitet, post, of visitation). Koderne for disse kan findes her:

http://filer.nsi.dk/sor/lookupdata/

Gyldighed

I de kald hvor at SorEntity bliver returneret, der er den returnerede version ikke den gyldige version af enheden. Den returnerede version er hvad der vil blive gyldigt i fremtiden (tidligst dagen efter).

UserType

ElementData typeBeskrivelse
RolesArrayOfSorSecurityGroupsExternalTypeListe af sikkerheds grupper som skal bruges under autoriseringen af et kald. Hvert type af kald har sin type som er nødvendigt, for at kunne udføre operationen. Afsenders CVR nummer skal være knyttet til den afsendte gruppe.
EntitiesSorIdentifierCollectionTypeListe af SOR-ID'er hvis træer som afsenderen har adgang til at redigere i. Indholdet bruges kun under autorisering af CreateSorEntity, EditSorEntity, MoveSorEntity, ReplaceSorEntities, og CloseSorEntity.

StatusType

ElementData typeBeskrivelse
ErrorCodeintHvis kaldet var en succes, så vil denne have værdien 0. Ved validerings fejl, så vil denne have en positiv værdi. Ved Tekniske og praktiske fejl, så vil denne have en negativ værdi.
MessagestringHvis ErrorCode er 0, er dette felt tomt. Ellers indeholder den en kort beskrivelse af, hvilken fejl der skete.

ArrayOfSorSecurityGroupsExternalType

ElementData typeBeskrivelse
SorSecurityGroupsExternal

En liste af SorSecurityGroupExternalType

Security groups

SorSecurityGroupExternalType

ElementData typeBeskrivelse

string

Enumeration af security groups. Kan have en af følgende værdier:

  • SorCentralRole
  • SorDecentralRole
  • SorEditorRole
  • SorGeoRole
  • SorShakRole
  • SorEdiCentralRole
  • SorEdiAdminRole
  • SorMoveEanRole

ArrayOfEdiIdentifierType

ElementData typeBeskrivelse
EdiIdentifierListe af longEDI numre

ArrayOfEanLocationCodeType

ElementData typeBeskrivelse
EanLocationCodeListe af long (EanLocationCode)Lokationsnumre

SorTypeType

ElementData typeBeskrivelse

string

Enumeration af SOR typer. Kan have en af følgende værdier:

  • IO
  • HI
  • OU

SorEntityType

ElementData typeBeskrivelse
SorIdentifierLong (SorIdentifierType)Unik nøgle der identificerer en SOR enhed
SorTypeSorTypeTypeSOR-type
SorStatusSorStatusTypeAngiver SOR enhedens status
GeographicalLocalisationIdentifierLong (GeographicalLocalisationIdentifierType)Id på den geografiske lokation. Bruges kun til output.
GeographicalLocalisationNameString (GeographicalLocalisationNameType)Navn på den geografiske lokation. Bruges kun til output.
HasGeographicalLocalisationBooleanAngiver om SOR enheden har en geografisk lokation, skal være false eller tom hvis SOR typen er IO. Vil altid returneres som false.
ParentSorIdentifierLong (SorIdentifierType)Forældre SOR-id, skal være 0 eller tom hvis SOR typen er IO
ActivityAddressInformationAddressInformationTypeAktivitetsadressen, skal være tom hvis SOR typen er IO eller HI
VisitingAddressInformationAddressInformationTypeBesøgsadressen, skal være tom hvis SOR typen er IO
PostalAddressInformationAddressInformationTypePostadressen
PharmacyIdentifierString (PharmacyIdentifierType)SOR-enhedens apoteksnummer, skal være tom hvis SOR typen er IO
EntityNameString (SorNameType)SOR Enhedens navn
EntityTypeIdentifierLong (EntityTypeIdentifier)Teknisk nøgle for EntityType (SNOMED Concept Id)
VirtualAddressInformationVirtualAddressInformationTypeAngiver enhedens hjemmesideadresse, email, telefonnummer og faxnummer
ReportingLevelIndicatorBoolean (ReportingLevelIndicator)Angiver om enheden er indberetningsniveau til Landspatientregisteret (LPR2), skal være false eller tom hvis SOR typen er IO eller HI
LocalAttributeCollectionLocalAttributeCollectionTypeDer kan være op til 5 lokale attributter, skal være tom hvis SOR typen er IO eller HI
LocalCodeString (LocalCodeType)SOR-enhedens lokale kode, skal være tom hvis SOR typen er IO eller HI. Attribut der frit kan benyttes af anvender organisationen.
EanLocationCodeStateEanLocationCodeStateTypeAngiver om lokationsnummer er nedarvet fra den hierarkiske mor. Kan være 'own', 'inherited' eller 'none'.
EanLocationCodeEntityEanLocationCodeEntityTypeAngiver lokationsnummeret på SOR enheden
PatientsAdmittedIndicatorBoolean (PatientsAdmittedIndicator)Angiver om enheden er et sengeafsnit, skal være false eller tom hvis SOR typen er IO eller HI
AmbulantActivityIndicatorBoolean (AmbulantActivityIndicator)Angiver om enheden er et ambulatorie, skal være false eller tom hvis SOR typen er IO eller HI
ShakIdentifierString (ShakIdentifierType)Angiver hvilken sygehusafdelingskode, der er knyttet til SORenheden. Den samme sygehusafdelingskode kan være knyttet til mere end én SORenhed. Der kan kun registreres officielle sygehusafdelingskoder. Skal være tom hvis SOR typen er IO.
PrioritizedEntitySpecialityCollectionPrioritizedEntitySpecialityCollectionTypeListe af SOR enhedens kliniske specialer. Der kan angives op til 8, hvoraf nr. 1 er hovedspecialet. Skal være tom hvis SOR typen er IO eller HI.
ProviderIdentifierString (ProviderIdentifierType)SOR-enhedens ydernummer, skal være tom hvis SOR typen er IO eller HI
CVRnumberIdentifierString (CVRnumberIdentifierType)CVR nummer for SOR-enheden. Obligatorisk hvis SOR typen er IO. Skal være tom hvis SOR typen er HI eller OU.
ProductionUnitIdentifierString (ProductionUnitIdentifierType)P nummer for SOR-enheden, skal være tom hvis SOR typen er IO

EanLocationCodeStateType

ElementData typeBeskrivelse

string

Enumeration af stadier. Kan have en af følgende værdier:

  • Undefined
  • None
  • Inherited
  • Own

EanLocationCodeEntityType

ElementData typeBeskrivelse
EanLocationCodeLong (EanLocationCode)Lokationsnummer
OnlyInternalIndicatorBoolean (OnlyInternalIndicator)Angiver om lokationsnummeret er til internt brug
NonActiveIndicatorBoolean (NonActiveIndicator)Angiver om lokationsnummeret er ikke-aktivt
SystemSupplierIdentifierLong (SystemSupplierType)Systemleverandør-id
CommunicationSupplierIdentifierLong (CommunicationSupplierType)Netoperatør-id
SystemTypeIdentifierLong (SystemTypeIdentifier)EDB-system-id
EdiAdministratorIdentifierLong (EdiAdministratorIdentifier)EDI-Administrator-id
SorNoteString (SorNoteType)Angiver eventuelle bemærkninger til lokationsnummeret
SorStatusSorStatusTypeAngiver SOR enhedens status
RegionCodeString (AuthorityCodeType)Regionens kode, f.eks. 1084 for RegionHovedstaden

Eksterne typer med lokale ændringer

Alle data typer nævnt her, er typer som originalt er defineret andre steder. Projektet har været nødt til at lave lokale ændringer til disse, for at opfylde forskellige behov eller krav.

Disse ændringer er allerede udført i WSDL og XSD filerne leveret af projektet, og ingen ændringer er nødvendige fra anvenders side. Denne sektion er kun til information.

AddressInformationType

Namespace: urn:oio:nsi:2.0.0

Original: http://filer.nsi.dk/sor/xsd/v_2_0_0/AddressInformation.xsd

ElementData typeBeskrivelse
AddressPostalAddressPostalType
MunicipalityCodeString (MunicipalityCode)
StreetCodeString (StreetCodeType)
RegionCodeString (AuthorityCodeType)Feltet benyttes ikke
AdditionalAddressInformationTextString (AdditionalAddressInformationTextType)
CoordETRS89z32NMeasureDecimal (CoordETRS89z32NMeasure)
CoordETRS89z32EMeasureDecimal (CoordETRS89z32EMeasure)
SkipAddressValidationBooleanNyt felt i forhold til den originale type definition. Indikerer om den indtastede adresse skal valideres. Er altid sat til false i retur objektet.
RegionNameStringNyt felt i forhold til den originale type definition. Indeholder navnet på den valgte regionskode. Feltet bruges kun til output.
InheritanceIndicatorBooleanNyt felt i forhold til den originale type definition. Indikerer om informationerne er nedarvet eller ej.

VirtualAddressInformation type

Namespace: urn:oio:sundhedsstyrelsen:organisation:1.0.0

Original: http://filer.nsi.dk/sor/xsd/v_1_0_0/VirtualAddressInformation.xsd

ElementData typeBeskrivelse
EmailAddressIdentifierString (EmailAddressIdentifierType)
WebsiteString (WebsiteType)
TelehponeNumberIdentifierString (TelephoneNumberIdentifierType)
FaxNumberIdentifierStirng (FaxNumberIdentifierType)
InheritanceIndicatorBooleanNyt felt i forhold til den originale type definition. Indikerer om informationerne er nedarvet eller ej.

CreateSorEntity

Security gruppe påkrævet: SorCentralRole, SorDecentralRole

Input
ElementData typeBeskrivelse
ParameterCreateSorEntityRequestParameterTypeParametre for operationen
UserUserTypeUser element til brug i autorisering af kaldet
Output
ElementData typeBeskrivelse
ResultCreateSorEntityResponseResultTypeResultatet af operationen
StatusStatusTypeStatus for hvordan kaldet gik

CreateSorEntityRequestParameterType

ElementData typeBeskrivelse
SorEntitySorEntityTypeDet SOR objekt som skal oprettes

CreateSorEntityResponseResultType

ElementData typeBeskrivelse
SorEntitySorEntityTypeDet SOR objekt som blev oprettet i systemet

EditSorEntity

Security gruppe påkrævet: SorCentralRole, SorDecentralRole

Input
ElementData typeBeskrivelse
ParameterEditSorEntityRequestParameterTypeParametre for operationen
UserUserTypeUser element til brug i autorisering af kaldet
Output
ElementData typeBeskrivelse
ResultEditSorEntityResponseResultTypeResultatet af operationen
StatusStatusTypeStatus for hvordan kaldet gik

EditSorEntityRequestParameterType

ElementData typeBeskrivelse
SorEntitySorEntityTypeDet SOR objekt som skal redigeres

EditSorEntityResponseResultType

ElementData typeBeskrivelse
SorEntitySorEntityTypeSOR objektet som det ser ud efter redigering

MoveSorEntity

Security gruppe påkrævet: SorCentralRole, SorDecentralRole

Input
ElementData typeBeskrivelse
ParameterMoveSorEntityRequestParameterTypeParametre for operationen
UserUserTypeUser element til brug i autorisering af kaldet
Output
ElementData typeBeskrivelse
ResultMoveSorEntityResponseResultTypeResultatet af operationen
StatusStatusTypeStatus for hvordan kaldet gik

MoveSorEntityRequestParameterType

ElementData typeBeskrivelse
SorIdentifierLong (SorIdentifierType)ID på det SOR objekt som skal flyttes
ParentSorIdentifierLong (SorIdentifierType)ID på det SOR object der skal være den nye parent
FromDateDate (FromDate)Dato for hvornår at flytningen skal træde i kraft

MoveSorEntityResponseResultType

ElementData typeBeskrivelse
Tomt objekt

ReplaceSorEntities

Security gruppe påkrævet: SorCentralRole, SorDecentralRole

Input
ElementData typeBeskrivelse
ParameterReplaceSorEntitiesRequestParameterTypeParametre for operationen
UserUserTypeUser element til brug i autorisering af kaldet
Output
ElementData typeBeskrivelse
ResultReplaceSorEntitiesResponseResultTypeResultatet af operationen
StatusStatusTypeStatus for hvordan kaldet gik

ReplaceSorEntitiesRequestParameterType

ElementData typeBeskrivelse
SorIdentifierLong (SorIdentifierType)ID på det SOR objekt som skal flyttes
FromDateDate (FromDate)Dato for hvornår at erstatningen skal træde i kraft
ReplacesEntityCollectionSorIdentifierCollectionTypeListe af SOR ID'er på de enheder som skal erstattes

ReplaceSorEntitiesResponseResultType

ElementData typeBeskrivelse
Tomt objekt

CloseSorEntity

Security gruppe påkrævet: SorCentralRole, SorDecentralRole

Input
ElementData typeBeskrivelse
ParameterCloseSorEntityRequestParameterTypeParametre for operationen
UserUserTypeUser element til brug i autorisering af kaldet
Output
ElementData typeBeskrivelse
ResultCloseSorEntityResponseResultTypeResultatet af operationen
StatusStatusTypeStatus for hvordan kaldet gik

CloseSorEntityRequestParameterType

ElementData typeBeskrivelse
SorIdentifierLong (SorIdentifierType)ID på det SOR objekt som skal lukkes
FromDateDate (FromDate)Dato for hvornår at lukningen skal træde i kraft

CloseSorEntityResponseResultType

ElementData typeBeskrivelse
Tomt objekt

EditEanLocationCodeSystemType

Security gruppe påkrævet: SorEdiCentralRole, SorEdiAdminRole

Input
ElementData typeBeskrivelse
ParameterEditEanLocationCodeSystemTypeRequestParameterTypeParametre for operationen
UserUserTypeUser element til brug i autorisering af kaldet
Output
ElementData typeBeskrivelse
ResultEditEanLocationCodeSystemTypeResponseResultTypeResultatet af operationen
StatusStatusTypeStatus for hvordan kaldet gik

EditEanLocationCodeSystemTypeRequestParameterType

ElementData typeBeskrivelse
SystemTypeIdentifierLong (SystemTypeIdentifier)EDB-system-id
EanLocationCodeEntitiesArrayOfEanLocationCodeTypeListe af lokationsnumre som skal opdateres

EditEanLocationCodeSystemTypeResponseResultType

ElementData typeBeskrivelse
Tomt objekt

EditEanLocationCodeCommunicationSupplier

Security gruppe påkrævet: SorEdiCentralRole, SorEdiAdminRole

Input
ElementData typeBeskrivelse
ParameterEditEanLocationCodeCommunicationSupplierRequestParameterTypeParametre for operationen
UserUserTypeUser element til brug i autorisering af kaldet
Output
ElementData typeBeskrivelse
ResultEditEanLocationCodeCommunicationSupplierResponseResultTypeResultatet af operationen
StatusStatusTypeStatus for hvordan kaldet gik

EditEanLocationCodeCommunicationSupplierRequestParameterType

ElementData typeBeskrivelse
CommunicationSupplierIdentifierLong (CommunicationSupplierIdentifier)VANS leverandør (ID)
EanLocationCodeEntitiesArrayOfEanLocationCodeTypeListe af lokationsnumre som skal opdateres

EditEanLocationCodeCommunicationSupplierResponseResultType

ElementData typeBeskrivelse
Tomt objekt

EditEanLocationCodeEdiAdministrator

Security gruppe påkrævet: SorEdiCentralRole

Input
ElementData typeBeskrivelse
ParameterEditEanLocationCodeEdiAdministratorRequestParameterTypeParametre for operationen
UserUserTypeUser element til brug i autorisering af kaldet
Output
ElementData typeBeskrivelse
ResultEditEanLocationCodeEdiAdministratorResponseResultTypeResultatet af operationen
StatusStatusTypeStatus for hvordan kaldet gik

EditEanLocationCodeEdiAdministratorRequestParameterType

ElementData typeBeskrivelse
EdiAdministratorIdentifierLong (EdiAdministratorIdentifier)EDI-Administrator-id
EanLocationCodeEntitiesArrayOfEanLocationCodeTypeListe af lokationsnumre som skal opdateres

EditEanLocationCodeEdiAdministratorResponseResultType

ElementData typeBeskrivelse
Tomt objekt

EditEanLocationCodeRegion

Security gruppe påkrævet: SorEdiCentralRole, SorEdiAdminRole

Input
ElementData typeBeskrivelse
ParameterEditEanLocationCodeRegionRequestParameterTypeParametre for operationen
UserUserTypeUser element til brug i autorisering af kaldet
Output
ElementData typeBeskrivelse
ResultEditEanLocationCodeRegionResponseResultTypeResultatet af operationen
StatusStatusTypeStatus for hvordan kaldet gik

EditEanLocationCodeRegionRequestParameterType

ElementData typeBeskrivelse
RegionCodeString (RegionCode)Region
EanLocationCodeEntitiesArrayOfEanLocationCodeTypeListe af lokationsnumre som skal opdateres

EditEanLocationCodeRegionResponseResultType

ElementData typeBeskrivelse
Tomt objekt

EditEanLocationCodeSystemSupplier

Security gruppe påkrævet: SorEdiCentralRole

Input
ElementData typeBeskrivelse
ParameterEditEanLocationCodeSystemSupplierRequestParameterTypeParametre for operationen
UserUserTypeUser element til brug i autorisering af kaldet
Output
ElementData typeBeskrivelse
ResultEditEanLocationCodeSystemSupplierResponseResultTypeResultatet af operationen
StatusStatusTypeStatus for hvordan kaldet gik

EditEanLocationCodeSystemSupplierRequestParameterType

ElementData typeBeskrivelse
SystemSupplierIdentifierLong (SystemSupplierIdentifier)Systemleverandør-id
EanLocationCodeEntitiesArrayOfEanLocationCodeTypeListe af lokationsnumre som skal opdateres

EditEanLocationCodeSystemSupplierResponseResultType

ElementData typeBeskrivelse
Tomt objekt

MoveEanLocationCode

Security gruppe påkrævet: SorEdiCentralRole, SorDecentralRole

Input
ElementData typeBeskrivelse
ParameterMoveEanLocationCodeRequestParameterTypeParametre for operationen
UserUserTypeUser element til brug i autorisering af kaldet
Output
ElementData typeBeskrivelse
ResultMoveEanLocationCodeResponseResultTypeResultatet af operationen
StatusStatusTypeStatus for hvordan kaldet gik

MoveEanLocationCodeRequestParameterType

ElementData typeBeskrivelse
SorIdentifierLong (SorIdentifierType)SOR-kode for den nye enhed, som den skal knyttes til
EanLocationCodeLong (EanLocationCode)Angiver lokationsnummeret for enheden

MoveEanLocationCodeResponseResultType

ElementData typeBeskrivelse
Tomt objekt

UpdateEdiTypes

Security gruppe påkrævet: SorEdiCentralRole, SorDecentralRole

Input
ElementData typeBeskrivelse
ParameterUpdateEdiTypesRequestParameterTypeParametre for operationen
UserUserTypeUser element til brug i autorisering af kaldet
Output
ElementData typeBeskrivelse
ResultUpdateEdiTypesResponseResultTypeResultatet af operationen
StatusStatusTypeStatus for hvordan kaldet gik

UpdateEdiTypesRequestParameterType

ElementData typeBeskrivelse
EdiIdentifiersArrayOfEdiIdentifierTypeListe af EDI numre
EanLocationCodeEntitiesArrayOfEanLocationCodeTypeListe af lokationsnumre som skal opdateres

UpdateEdiTypesResponseResultType

ElementData typeBeskrivelse
Tomt objekt

Fejlkoder

Alle operationer vil som udgangspunkt returnere et Status objekt som en del af svaret. Dette object indeholder altid to felter, ErrorCode og Message. Hvis ErrorCode er 0, så var kaldet en succes, ellers skete der en fejl i løbet af kaldet. Positive værdier er validerings fejl fra SOR's interne systemer, og Message vil have en beskrivelse af fejlen. Mere tekniske fejl vil blive lavet som en SOAP fault. De nedenstående er hvilke denne applikation definerer:

MedCom fault codeFault stringBeskrivelse
invalid_signatureInvalid signatureAutentifikations fejl, invalid signatur
missing_required_headerUnable to read requestAutentifikations fejl, kan ikke læse forespørgelsen
security_level_failedInvalid authentication level, level 3 or 4 requiredAutorisations fejl, kun certifikat niveau 3 eller 4 er tilladt
expired_idcardCurrent time is outside of valid periodAutorisations fejl, uden for gyldighedsperioden for sikkerheds headeren
invalid_certificateThe type of certificate used is invalid, FOCES or MOCES requiredAutorisations fejl, ugyldig type af certifikat brugt, kun FOCES og MOCES er tilladt
not_authorizedCVR not whitelistedAutorisations fejl, CVR er ikke whitelisted
processing_problemError happened while contacting SOR databaseFejl under forespørgelse mod databasen
syntax_errorUnable to parse bodyFejl under transformeringen af SOAP body til et objekt
processing_problemUnable to marshal objectFejl under transformeringen af object til XML
processing_problemUnable to write bodyFejl under at skrive det transformerede objekt til klienten
processing_problemError happened while contacting SOR backendFejl under forespørgelse mod backenden
processing_problemInvalid request typeUkendt operation mod backenden

Andre fejlkoder kan forekomme, men disse kommer fra backenden, eller dens underliggende services.

Det skal pointeres, at MedCom's fault code kan findes under detail sektionen af den resulterende SOAP fault. Den påkrævede faultstring vil altid være "Server".

Eksempel på kald

Java frameworks

For en eksempel implementation i Java, kan der med foredel tages udgangspunkt i servicens integrationstest:

https://svn.nspop.dk/svn/capgemini/SORServices/NSP/sorus/trunk/SorUpdateService/src/test/java/dk/sds/nsp/sor/sorus/servlet/SorusV2ServletIT.java

Denne implementerer og bruge er JAX-WS klient for servicen, implementeret med Apache CXF. Klienten benytter også Seal.Java biblioteket til håndtering af SOSI ID kort og DGWS. Yderligere dokumentation på biblioteket kan findes her:

https://digitaliser.dk/group/374971

.NET frameworks

Seal.NET er .NET ekvivalenten til Seal.Java, og er dokumenteret her:

http://digitaliser.dk/group/375117

Der eksisterer ingen eksempel implementation i .NET, men bibliotek og WSDL er frit tilgængelig til at lave en sådan.

Version 1

Denne version af systemet er uddateret, og ikke anbefalet for nye klienter. Den bliver holdt i live i en overgangsperiode, og vil forsvinde i en fremtidig opdatering af systemet.

Endpoint

Opdater servicen kan tilgås på adressen:

[miljø url]/sor-opdater/SOROpdateringService

For eksempel, på TEST1-miljøet vil det være:

http://test1.ekstern-test.nspop.dk:8080/sor-opdater/SOROpdateringService

WSDL filen for servicen kan hentes ved at tilføje "?wsdl" til enden af URL'en.

Snitfladebeskrivelser

Fælles

Sikkerhed

Fælles for hele servicen, er at der bliver benyttet Den Gode Webservice (DGWS) til authentifikering, og der accepteres kun niveau 3 (VOCES og FOCES) eller 4 (MOCES) ID kort udstedt af SOSI-STS. Selvom at niveau 3 både indeholder FOCES og VOCES, så er det kun FOCES som er tilladt.

Namespaces

Alle kald til servicen vil benytte typer defineret under namespacet:

http://sundhedsdatastyrelsen.dk/SOROpdateringService/2018/09/06/

Der er type med samme navne under andre namespaces, så det er vigtigt at få valgt den rigtige.


Alle svar fra servicen vil benytte typer defineret under namespacet:

http://sor.dksund.dk/

Eksterne typer

Mange af de data typer som bliver benyttet, kan typisk findes her:

http://filer.nsi.dk/sor/xsd/

Typer under både v_1_0_0 og v_2_0_0 bliver benyttet.

Følgende lokationer bliver også inkluderet for typer:

http://digitaliser.dk/resource/1945/artefact/CVR_CVRnumberIdentifier.xsd

http://rep.oio.dk/cvr.dk/xml/schemas/2005/03/22/CVR_ProductionUnitIdentifier.xsd

http://rep.oio.dk/kms.dk/xml/schemas/2007/05/23/


Alle typer hentet eksternt fra er ikke angivet i dette dokument, da listen så vil blive meget lang.

Koder

Flere felter benytter koder frem for tekst strenge til at signalere over for servicen, hvilken type enhed der er ønsket at blive oprettet, eller hvor at enheden er placeret. Eksempler på sådanne er SystemTypeIdentifier under EanLocationCodeEntityType, eller RegionCode under de forskellige adresse typer (aktivitet, post, of visitation). Koderne for disse kan findes her:

http://filer.nsi.dk/sor/lookupdata/

Gyldighed

I de kald hvor at SorEntity bliver returneret, der er den returnerede version ikke den gyldige version af enheden. Den returnerede version er hvad der vil blive gyldigt i fremtiden (tidligst dagen efter).

User type

ElementData typeBeskrivelse
RolesArrayOfsorSecurityGroupsExternalListe af sikkerheds grupper som skal bruges under autoriseringen af et kald. Hvert type af kald har sin type som er nødvendigt, for at kunne udføre operationen. Afsenders CVR nummer skal være knyttet til den afsendte gruppe.
EntitiesArrayOfLongListe af SOR-ID'er hvis træer som afsenderen har adgang til at redigere i


ArrayOfLong type

ElementData typeBeskrivelse
longEn liste af longTal værdier


ArrayOfsorSecurityGroupsExternal type

ElementData typeBeskrivelse
sorSecurityGroupsExternal

En liste af sorSecurityGroupsExternal

Security groups


sorSecurityGroupsExternal type

ElementData typeBeskrivelse

string

Enumeration af security groups. Kan have en af følgende værdier:

  • SorCentralRole
  • SorDecentralRole
  • SorEditorRole
  • SorGeoRole
  • SorShakRole
  • SorEdiCentralRole
  • SorEdiAdminRole
  • SorMoveEanRole


EanLocationCodeState type

ElementData typeBeskrivelse

string

Enumeration af stadier. Kan have en af følgende værdier:

  • Undefined
  • None
  • Inherited
  • Own


EanLocationCodeEntityType type

ElementData typeBeskrivelse
EanLocationCodeEanLocationCode (long)Lokationsnummer
OnlyInternalIndicatorOnlyInternalIndicator (boolean)Angiver om lokationsnummeret er til internt brug
NonActiveIndicatorNonActiveIndicator (boolean)Angiver om lokationsnummeret er ikke-aktivt
SystemSupplierIdentifierlongSystemleverandør-id
CommunicationSupplierIdentifierlongNetoperatør-id
SystemTypeIdentifierSystemTypeIdentifier (long)EDB-system-id
EdiAdministratorIdentifierEdiAdministratorIdentifier (long)EDI-Administrator-id
SorNoteSorNote (string, 254)Angiver eventuelle bemærkninger til lokationsnummeret
SorStatusSorStatusAngiver SOR enhedens status
RegionCodeRegionCode (string, 4)Regionens kode, f.eks. 1084 for RegionHovedstaden


ArrayOfEanLocationCodes type

ElementData typeBeskrivelse
eanLocationCodeListe af longLokationsnumre

ArrayOfEdiIdentifiers type

ElementData typeBeskrivelse
EdiIdentifierListe af longEDI numre


Status type

ElementData typeBeskrivelse
ErrorCodeintHvis kaldet var en succes, så vil denne have værdien 0. Ved validerings fejl, så vil denne have en positiv værdi. Ved Tekniske og praktiske fejl, så vil denne have en negativ værdi.
MessagestringHvis ErrorCode er 0, er dette felt tomt. Ellers indeholder den en kort beskrivelse af, hvilken fejl der skete.


SorEntity type

ElementData typeBeskrivelse
SorIdentifierSorIdentifier (long)Unik nøgle der identificerer en SOR enhed
SorTypestringTekstværdi for SOR-type, skal være enten "IO", "HI", eller "OU"
SorStatusSorStatusAngiver SOR enhedens status
GeographicalLocalisationIdentifierGeographicalLocalisationIdentifier (long)Id på den geografiske lokation
GeographicalLocalisationNameGeographicalLocalisationName (string, 40)Navn på den geografiske lokation
HasGeographicalLocalisationbooleanAngiver om SOR enheden har en geografisk lokation. Vil altid returneres som false.
ParentSorIdentifierstringForældre SOR-id
ActivityAddressInformationActivityAddressInformation (AddressInformation)Aktivitetsadressen
VisitingAddressInformationVisitingAddressInformation (AddressInformation)Besøgsadressen
PostalAddressInformationPostalAddressInformation (AddressInformation)Postadressen
PharmacyIdentifierPharmacyIdentifier (string, 20)SOR-enhedens apoteksnummer
EntityNameEntityName (string, 60)SOR Enhedens navn
EntityTypeIdentifierEntityTypeIdentifier (long)Teknisk nøgle for EntityType (SNOMED Concept Id)
VirtualAddressInformationVirtualAddressInformationAngiver enhedens hjemmesideadresse, email, telefonnummer og faxnummer
ReportingLevelIndicatorReportingLevelIndicator (boolean)Angiver om enheden er indberetningsniveau til Landspatientregisteret (LPR2)
LocalAttributeCollectionLocalAttributeCollectionDer kan være op til 5 lokale attributter
LocalCodeLocalCode (string, 20)SOR-enhedens lokale kode. Attribut der frit kan benyttes af anvender organisationen.
EanLocationCodeStateEanLocationCodeStateAngiver om lokationsnummer er nedarvet fra den hierarkiske mor. Kan være 'own', 'inherited' eller 'none'.
EanLocationCodeEntityEanLocationCodeEntityTypeAngiver lokationsnummeret på SOR enheden
CommunicationSupplierCommunicationSupplierFeltet benyttes ikke
PatientsAdmittedIndicatorPatientsAdmittedIndicator (boolean)Angiver om enheden er et sengeafsnit
AmbulantActivityIndicatorAmbulantActivityIndicator (boolean)Angiver om enheden er et ambulatorie
ShakIdentifierShakIdentifier (string, 7)Angiver hvilken sygehusafdelingskode, der er knyttet til SORenheden. Den samme sygehusafdelingskode kan være knyttet til mere end én SORenhed. Der kan kun registreres officielle sygehusafdelingskoder.
PrioritizedEntitySpecialityCollectionPrioritizedEntitySpecialityCollectionListe af SOR enhedens kliniske specialer. Der kan angives op til 8, hvoraf nr. 1 er hovedspecialet.
SystemSupplierSystemSupplier

Feltet benyttes ikke

ProviderIdentifierProviderIdentifier (string, 9)SOR-enhedens ydernummer
CVRnumberIdentifierCVRnumberIdentifier (string, 8)CVR nummer for SOR-enheden. Obligatorisk hvis SOR typen er IO.
ProductionUnitIdentifierProductionUnitIdentifier (string, 10)P nummer for SOR-enheden


Eksterne typer med lokale ændringer

Alle data typer nævnt her, er typer som originalt er defineret andre steder. Projektet har været nødt til at lave lokale ændringer til disse, for at opfylde forskellige behov eller krav.

Disse ændringer er allerede udført i WSDL og XSD filerne leveret af projektet, og ingen ændringer er nødvendige fra anvenders side. Denne sektion er kun til information.

AddressInformation type

Namespace: urn:oio:nsi:2.0.0

Original: http://filer.nsi.dk/sor/xsd/v_2_0_0/AddressInformation.xsd

ElementData typeBeskrivelse
AddressPostalAddressPostal
MunicipalityCodeMunicipalityCode
StreetCodeStreetCode
RegionCodeRegionCodeFeltet benyttes ikke
AdditionalAddressInformationTextAdditionalAddressInformationText
CoordETRS89z32NMeasureCoordETRS89z32NMeasure
CoordETRS89z32EMeasureCoordETRS89z32EMeasure
SkipAddressValidationbooleanNyt felt i forhold til den originale type definition. Indikerer om den indtastede adresse skal valideres. Er altid sat til false i retur objektet.
RegionNamestringNyt felt i forhold til den originale type definition. Indeholder navnet på den valgte regionskode.
InheritanceIndicatorbooleanNyt felt i forhold til den originale type definition. Indikerer om informationerne er nedarvet eller ej.


VirtualAddressInformation type

Namespace: urn:oio:sundhedsstyrelsen:organisation:1.0.0

Original: http://filer.nsi.dk/sor/xsd/v_1_0_0/VirtualAddressInformation.xsd

ElementData typeBeskrivelse
EmailAddressIdentifierEmailAddressIdentifier
WebsiteWebsite
TelehponeNumberIdentifierTelehponeNumberIdentifier
FaxNumberIdentifierFaxNumberIdentifier
InheritanceIndicatorbooleanNyt felt i forhold til den originale type definition. Indikerer om informationerne er nedarvet eller ej.


CreateSorEntity

Security gruppe påkrævet: SorCentralRole, SorDecentralRole

Input
ElementData typeBeskrivelse
UserUserUser element til brug i autorisering af kaldet
SorObjectSorEntityDet SOR objekt som skal oprettes
Output
ElementData typeBeskrivelse
StatusStatusStatus for hvordan kaldet gik
CreateSorEntityResultSorEntityDet SOR objekt som blev oprettet i systemet


EditSorEntity

Security gruppe påkrævet: SorCentralRole, SorDecentralRole

Input
ElementData typeBeskrivelse
UserUserUser element til brug i autorisering af kaldet
SorObjectSorEntityDet SOR objekt som skal redigeres
Output
ElementData typeBeskrivelse
StatusStatusStatus for hvordan kaldet gik
EditSorEntityResultSorEntitySOR objektet som det ser ud efter redigering


MoveSorEntity

Security gruppe påkrævet: SorCentralRole, SorDecentralRole

Input
ElementData typeBeskrivelse
UserUserUser element til brug i autorisering af kaldet
SorIdentifierSorIdentifier (long)ID på det SOR objekt som skal flyttes
ParentSorIdentifierlongID på den nye parent SOR enhed
FromDatedateDato for hvornår at flytningen skal træde i kraft
Output
ElementData typeBeskrivelse
StatusStatusStatus for hvordan kaldet gik
MoveSorEntityResultSorEntitySOR objektet som det ser ud efter flytningen


ReplaceSorEntities

Security gruppe påkrævet: SorCentralRole, SorDecentralRole

Input
ElementData typeBeskrivelse
UserUserUser element til brug i autorisering af kaldet
SorIdentifierSorIdentifier (long)ID på den SOR enhed som skal bruges til erstatte med
ReplacesEntityCollectionReplacesEntityCollectionListe af SOR ID'er på de enheder som skal erstattes
FromDatedateDato for hvornår at erstatningen skal træde i kraft
Output
ElementData typeBeskrivelse
StatusStatusStatus for hvordan kaldet gik


CloseSorEntity

Security gruppe påkrævet: SorCentralRole, SorDecentralRole

Input
ElementData typeBeskrivelse
UserUserUser element til brug i autorisering af kaldet
SorIdentifierSorIdentifier (long)ID på det SOR objekt som skal lukkes
FromDatedateDato for hvornår at lukningen skal træde i kraft
Output
ElementData typeBeskrivelse
StatusStatusStatus for hvordan kaldet gik


EditEanLocationCodeSystemType

Security gruppe påkrævet: SorEdiCentralRole, SorEdiAdminRole

Input
ElementData typeBeskrivelse
UserUserUser element til brug i autorisering af kaldet
SystemTypeIdentifierSystemTypeIdentifier (long)EDB-system-id
EanLocationCodeEntitiesArrayOfEanLocationCodesListe af lokationsnumre som skal opdateres
Output
ElementData typeBeskrivelse
StatusStatusStatus for hvordan kaldet gik


EditEanLocationCodeCommunicationSupplier

Security gruppe påkrævet: SorEdiCentralRole, SorEdiAdminRole

Input
ElementData typeBeskrivelse
UserUserUser element til brug i autorisering af kaldet
CommunicationSupplierIdentifierlongVANS leverandør (ID)
EanLocationCodeEntitiesArrayOfEanLocationCodesListe af lokationsnumre som skal opdateres
Output
ElementData typeBeskrivelse
StatusStatusStatus for hvordan kaldet gik


EditEanLocationCodeEdiAdministrator

Security gruppe påkrævet: SorEdiCentralRole

Input
ElementData typeBeskrivelse
UserUserUser element til brug i autorisering af kaldet
EdiAdministratorIdentifierEdiAdministratorIdentifier (long)EDI-Administrator-id
EanLocationCodeEntitiesArrayOfEanLocationCodesListe af lokationsnumre som skal opdateres
Output
ElementData typeBeskrivelse
StatusStatusStatus for hvordan kaldet gik


EditEanLocationCodeRegion

Security gruppe påkrævet: SorEdiCentralRole, SorEdiAdminRole

Input
ElementData typeBeskrivelse
UserUserUser element til brug i autorisering af kaldet
RegionCodeRegionCode (string, 4)Region
EanLocationCodeEntitiesArrayOfEanLocationCodesListe af lokationsnumre som skal opdateres
Output
ElementData typeBeskrivelse
StatusStatusStatus for hvordan kaldet gik


EditEanLocationCodeSystemSupplier

Security gruppe påkrævet: SorEdiCentralRole

Input
ElementData typeBeskrivelse
UserUserUser element til brug i autorisering af kaldet
SystemSupplierIdentifierlongSystemleverandør-id
EanLocationCodeEntitiesArrayOfEanLocationCodesListe af lokationsnumre som skal opdateres
Output
ElementData typeBeskrivelse
StatusStatusStatus for hvordan kaldet gik


MoveEanLocationCode

Security gruppe påkrævet: SorEdiCentralRole, SorDecentralRole

Input
ElementData typeBeskrivelse
UserUserUser element til brug i autorisering af kaldet
SorIdentifierSorIdentifier (long)SOR-kode for den nye enhed, som den skal knyttes til
EanLocationCodeEanLocationCode (long)Angiver lokationsnummeret for enheden
Output
ElementData typeBeskrivelse
StatusStatusStatus for hvordan kaldet gik


UpdateEdiTypes

Security gruppe påkrævet: SorEdiCentralRole, SorDecentralRole

Input
ElementData typeBeskrivelse
UserUserUser element til brug i autorisering af kaldet
EdiIdentifiersArrayOfEdiIdentifiersListe af EDI numre
EanLocationCodeEntitiesArrayOfEanLocationCodesListe af lokationsnumre som skal opdateres
Output
ElementData typeBeskrivelse
StatusStatusStatus for hvordan kaldet gik


Fejlkoder

Alle operationer vil som udgangspunkt returnere et Status objekt som en del af svaret. Dette object indeholder altid to felter, ErrorCode og Message. Hvis ErrorCode er 0, så var kaldet en succes, ellers skete der en fejl i løbet af kaldet. Positive værdier er validerings fejl fra SOR's interne systemer, og Message vil have en beskrivelse af fejlen. Mere tekniske fejl vil blive lavet som en SOAP fault. De nedenstående er hvilke denne applikation definerer:

MedCom fault codeFault stringBeskrivelse
invalid_signatureInvalid signatureAutentifikations fejl, invalid signatur
missing_required_headerUnable to read requestAutentifikations fejl, kan ikke læse forespørgelsen
security_level_failedInvalid authentication level, level 3 or 4 requiredAutorisations fejl, kun certifikat niveau 3 eller 4 er tilladt
expired_idcardCurrent time is outside of valid periodAutorisations fejl, uden for gyldighedsperioden for sikkerheds headeren
invalid_certificateThe type of certificate used is invalid, FOCES or MOCES requiredAutorisations fejl, ugyldig type af certifikat brugt, kun FOCES og MOCES er tilladt
not_authorizedCVR not whitelistedAutorisations fejl, CVR er ikke whitelisted
processing_problemError happened while contacting SOR databaseFejl under forespørgelse mod databasen
syntax_errorUnable to parse bodyFejl under transformeringen af SOAP body til et objekt
processing_problemUnable to marshal objectFejl under transformeringen af object til XML
processing_problemUnable to write bodyFejl under at skrive det transformerede objekt til klienten
processing_problemError happened while contacting SOR backendFejl under forespørgelse mod backenden
processing_problemInvalid request typeUkendt operation mod backenden

Andre fejlkoder kan forekomme, men disse kommer fra backenden, eller dens underliggende services.

Det skal pointeres, at MedCom's fault code kan findes under detail sektionen af den resulterende SOAP fault. Den påkrævede faultstring vil altid være "Server".

Eksempel på kald

Java frameworks

For en eksempel implementation i Java, kan der med foredel tages udgangspunkt i servicens integrationstest:

https://svn.nspop.dk/svn/capgemini/SORServices/NSP/sorus/trunk/SorUpdateService/src/test/java/dk/sds/nsp/sor/sorus/servlet/SorusServletIT.java

Denne implementerer og bruge er JAX-WS klient for servicen, implementeret med Apache CXF. Klienten benytter også Seal.Java biblioteket til håndtering af SOSI ID kort og DGWS. Yderligere dokumentation på biblioteket kan findes her:

https://digitaliser.dk/group/374971

.NET frameworks

Seal.NET er .NET ekvivalenten til Seal.Java, og er dokumenteret her:

http://digitaliser.dk/group/375117

Der eksisterer ingen eksempel implementation i .NET, men bibliotek og WSDL er frit tilgængelig til at lave en sådan.

Kendte fejl

Der er desværre en udfordring med at sende værdien null frem og tilbage, som ikke er muligt at få løst før en fremtidig release. Heldigvis er de lette at detektere og håndtere.

Alle dato værdier som burde blive returneret som null, vil i stedet blive returneret som 0001-01-01 (så, starten for vores tidsregning).

Alle tal felter som burde blive returneret som null, vil i stedet blive returneret som deres mindste værdi. Felter som er long vil blive -9.223.372.036.854.775.808, integer vil blive -2.147.483.648, og så videre.

Alle boolean felter som burde være null, vil i stedet blive returneret som false. Men dette vil også være den forventede værdi i tilfælde af at den mangler.

Alle string felter er dog ikke kendt at have dette null problem, og burde blive returneret korrekt.