Indholdsfortegnelse

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
longlongEn liste af tal værdier


ArrayOfsorSecurityGroupsExternal type

ElementData typeBeskrivelse
sorSecurityGroupsExternalsorSecurityGroupsExternalEn liste af 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
eanLocationCodelongEn liste af lokationsnumre

ArrayOfEdiIdentifiers type

ElementData typeBeskrivelse
EdiIdentifierlongEn liste af EDI 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"
GeographicalLocalisationIdentifierGeographicalLocalisationIdentifier (long)Id på geografisklokalitet
GeographicalLocalisationNameGeographicalLocalisationName (string, 40)Navn på den geografiske lokalitet
HasGeographicalLocalisationbooleanAngiver om SOR enheden har en grafisk 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
ReportingLevelIndicatorReportingLevelIndicator (boolean)Angiver om enheden er indberetningsniveau til Landspatientregisteret (LPR2)
LocalAttributeCollectionLocalAttributeCollectionDer kan være op til 5 lokale attributter
LocalCodeLocalCode (stirng, 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

Disse typer har ændringer i forhold til hvad man kan finde fra deres originale lokation.

AddressInformation type

Namespace: urn:oio:nsi:2.0.0

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


VirtualAddressInformation type

Namespace: urn:oio:sundhedsstyrelsen:organisation:1.0.0

ElementData typeBeskrivelse
EmailAddressIdentifierEmailAddressIdentifier
WebsiteWebsite
TelehponeNumberIdentifierTelehponeNumberIdentifier
FaxNumberIdentifierFaxNumberIdentifier
InheritanceIndicatorbooleanNyt felt. Indikerer om informationerne er nedarvet eller ej.


CreateSorEntity

Security gruppe påkrævet: SorCentralRole

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

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

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

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

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

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

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

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

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

ArrayOfEdiIdentifiers

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

Error happened while contacting SOR databaseFejl under forespørgelse mod databasen
syntax_errorUnable to parse bodyFejl under transformeringen af SOAP body til et objekt

Unable to marshal objectFejl under transformeringen af object til XML

Unable to write bodyFejl under at skrive det transformerede objekt til klienten

Error happened while contacting SOR backendFejl under forespørgelse mod backenden

Invalid 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.