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.
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.
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:
Mange af de data typer som bliver benyttet, kan typisk findes her:
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.
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/
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).
Element | Data type | Beskrivelse |
---|---|---|
Roles | ArrayOfsorSecurityGroupsExternal | Liste 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. |
Entities | ArrayOfLong | Liste af SOR-ID'er hvis træer som afsenderen har adgang til at redigere i |
Element | Data type | Beskrivelse |
---|---|---|
long | long | En liste af tal værdier |
Element | Data type | Beskrivelse |
---|---|---|
sorSecurityGroupsExternal | sorSecurityGroupsExternal | En liste af security groups |
Element | Data type | Beskrivelse |
---|---|---|
string | Enumeration af security groups. Kan have en af følgende værdier:
|
Element | Data type | Beskrivelse |
---|---|---|
string | Enumeration af stadier. Kan have en af følgende værdier:
|
Element | Data type | Beskrivelse |
---|---|---|
EanLocationCode | EanLocationCode (long) | Lokationsnummer |
OnlyInternalIndicator | OnlyInternalIndicator (boolean) | Angiver om lokationsnummeret er til internt brug |
NonActiveIndicator | NonActiveIndicator (boolean) | Angiver om lokationsnummeret er ikke-aktivt |
SystemSupplierIdentifier | long | Systemleverandør-id |
CommunicationSupplierIdentifier | long | Netoperatør-id |
SystemTypeIdentifier | SystemTypeIdentifier (long) | EDB-system-id |
EdiAdministratorIdentifier | EdiAdministratorIdentifier (long) | EDI-Administrator-id |
SorNote | SorNote (string, 254) | Angiver eventuelle bemærkninger til lokationsnummeret |
SorStatus | SorStatus | Angiver SOR enhedens status |
RegionCode | RegionCode (string, 4) | Regionens kode, f.eks. 1084 for RegionHovedstaden |
Element | Data type | Beskrivelse |
---|---|---|
eanLocationCode | long | En liste af lokationsnumre |
Element | Data type | Beskrivelse |
---|---|---|
EdiIdentifier | long | En liste af EDI numre |
Element | Data type | Beskrivelse |
---|---|---|
ErrorCode | int | Hvis 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. |
Message | string | Hvis ErrorCode er 0, er dette felt tomt. Ellers indeholder den en kort beskrivelse af, hvilken fejl der skete. |
Element | Data type | Beskrivelse |
---|---|---|
SorIdentifier | SorIdentifier (long) | Unik nøgle der identificerer en SOR enhed |
SorType | string | Tekstværdi for SOR-type, skal være enten "IO", "HI", eller "OU" |
GeographicalLocalisationIdentifier | GeographicalLocalisationIdentifier (long) | Id på geografisklokalitet |
GeographicalLocalisationName | GeographicalLocalisationName (string, 40) | Navn på den geografiske lokalitet |
HasGeographicalLocalisation | boolean | Angiver om SOR enheden har en grafisk lokation. Vil altid returneres som false. |
ParentSorIdentifier | string | Forældre SOR-id |
ActivityAddressInformation | ActivityAddressInformation (AddressInformation) | Aktivitetsadressen |
VisitingAddressInformation | VisitingAddressInformation (AddressInformation) | Besøgsadressen |
PostalAddressInformation | PostalAddressInformation (AddressInformation) | Postadressen |
PharmacyIdentifier | PharmacyIdentifier (string, 20) | SOR-enhedens apoteksnummer |
EntityName | EntityName (string, 60) | SOR Enhedens navn |
EntityTypeIdentifier | EntityTypeIdentifier (long) | Teknisk nøgle for EntityType (SNOMED Concept Id) |
VirtualAddressInformation | VirtualAddressInformation | Angiver enhedens hjemmesideadresse |
ReportingLevelIndicator | ReportingLevelIndicator (boolean) | Angiver om enheden er indberetningsniveau til Landspatientregisteret (LPR2) |
LocalAttributeCollection | LocalAttributeCollection | Der kan være op til 5 lokale attributter |
LocalCode | LocalCode (stirng, 20) | SOR-enhedens lokale kode. Attribut der frit kan benyttes af anvender organisationen. |
EanLocationCodeState | EanLocationCodeState | Angiver om lokationsnummer er nedarvet fra den hierarkiske mor. Kan være 'own', 'inherited' eller 'none'. |
EanLocationCodeEntity | EanLocationCodeEntityType | Angiver lokationsnummeret på SOR enheden |
CommunicationSupplier | CommunicationSupplier | Feltet benyttes ikke |
PatientsAdmittedIndicator | PatientsAdmittedIndicator (boolean) | Angiver om enheden er et sengeafsnit |
AmbulantActivityIndicator | AmbulantActivityIndicator (boolean) | Angiver om enheden er et ambulatorie |
ShakIdentifier | ShakIdentifier (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. |
PrioritizedEntitySpecialityCollection | PrioritizedEntitySpecialityCollection | Liste af SOR enhedens kliniske specialer. Der kan angives op til 8, hvoraf nr. 1 er hovedspecialet. |
SystemSupplier | SystemSupplier | Feltet benyttes ikke |
ProviderIdentifier | ProviderIdentifier (string, 9) | SOR-enhedens ydernummer |
CVRnumberIdentifier | CVRnumberIdentifier (string, 8) | CVR nummer for SOR-enheden. Obligatorisk hvis SOR typen er IO. |
ProductionUnitIdentifier | ProductionUnitIdentifier (string, 10) | P nummer for SOR-enheden |
Disse typer har ændringer i forhold til hvad man kan finde fra deres originale lokation.
Namespace: urn:oio:nsi:2.0.0
Element | Data type | Beskrivelse |
---|---|---|
AddressPostal | AddressPostal | |
MunicipalityCode | MunicipalityCode | |
StreetCode | StreetCode | |
RegionCode | RegionCode | Feltet benyttes ikke |
AdditionalAddressInformationText | AdditionalAddressInformationText | |
CoordETRS89z32NMeasure | CoordETRS89z32NMeasure | |
CoordETRS89z32EMeasure | CoordETRS89z32EMeasure | |
SkipAddressValidation | boolean | Nyt felt. Indikerer om den indtastede adresse skal valideres. Er altid sat til false i retur objektet. |
RegionName | string | Nyt felt. Indeholder navnet på den valgte regionskode. |
InheritanceIndicator | boolean | Nyt felt. Indikerer om informationerne er nedarvet eller ej. |
Namespace: urn:oio:sundhedsstyrelsen:organisation:1.0.0
Element | Data type | Beskrivelse |
---|---|---|
EmailAddressIdentifier | EmailAddressIdentifier | |
Website | Website | |
TelehponeNumberIdentifier | TelehponeNumberIdentifier | |
FaxNumberIdentifier | FaxNumberIdentifier | |
InheritanceIndicator | boolean | Nyt felt. Indikerer om informationerne er nedarvet eller ej. |
Security gruppe påkrævet: SorCentralRole
Input | ||
Element | Data type | Beskrivelse |
---|---|---|
User | User | User element til brug i autorisering af kaldet |
SorObject | SorEntity | Det SOR objekt som skal oprettes |
Output | ||
Element | Data type | Beskrivelse |
---|---|---|
Status | Status | Status for hvordan kaldet gik |
CreateSorEntityResult | SorEntity | Det SOR objekt som blev oprettet i systemet |
Security gruppe påkrævet: SorCentralRole
Input | ||
Element | Data type | Beskrivelse |
---|---|---|
User | User | User element til brug i autorisering af kaldet |
SorObject | SorEntity | Det SOR objekt som skal redigeres |
Output | ||
Element | Data type | Beskrivelse |
---|---|---|
Status | Status | Status for hvordan kaldet gik |
EditSorEntityResult | SorEntity | SOR objektet som det ser ud efter redigering |
Security gruppe påkrævet: SorCentralRole
Input | ||
Element | Data type | Beskrivelse |
---|---|---|
User | User | User element til brug i autorisering af kaldet |
SorIdentifier | SorIdentifier (long) | ID på det SOR objekt som skal flyttes |
ParentSorIdentifier | long | ID på den nye parent SOR enhed |
FromDate | date | Dato for hvornår at flytningen skal træde i kraft |
Output | ||
Element | Data type | Beskrivelse |
---|---|---|
Status | Status | Status for hvordan kaldet gik |
MoveSorEntityResult | SorEntity | SOR objektet som det ser ud efter flytningen |
Security gruppe påkrævet: SorCentralRole
Input | ||
Element | Data type | Beskrivelse |
---|---|---|
User | User | User element til brug i autorisering af kaldet |
SorIdentifier | SorIdentifier (long) | ID på den SOR enhed som skal bruges til erstatte med |
ReplacesEntityCollection | ReplacesEntityCollection | Liste af SOR ID'er på de enheder som skal erstattes |
FromDate | date | Dato for hvornår at erstatningen skal træde i kraft |
Output | ||
Element | Data type | Beskrivelse |
---|---|---|
Status | Status | Status for hvordan kaldet gik |
Security gruppe påkrævet: SorCentralRole
Input | ||
Element | Data type | Beskrivelse |
---|---|---|
User | User | User element til brug i autorisering af kaldet |
SorIdentifier | SorIdentifier (long) | ID på det SOR objekt som skal lukkes |
FromDate | date | Dato for hvornår at lukningen skal træde i kraft |
Output | ||
Element | Data type | Beskrivelse |
---|---|---|
Status | Status | Status for hvordan kaldet gik |
Security gruppe påkrævet: SorEdiCentralRole
Input | ||
Element | Data type | Beskrivelse |
---|---|---|
User | User | User element til brug i autorisering af kaldet |
SystemTypeIdentifier | SystemTypeIdentifier (long) | EDB-system-id |
EanLocationCodeEntities | ArrayOfEanLocationCodes | Liste af lokationsnumre som skal opdateres |
Output | ||
Element | Data type | Beskrivelse |
---|---|---|
Status | Status | Status for hvordan kaldet gik |
Security gruppe påkrævet: SorEdiCentralRole
Input | ||
Element | Data type | Beskrivelse |
---|---|---|
User | User | User element til brug i autorisering af kaldet |
CommunicationSupplierIdentifier | long | VANS leverandør (ID) |
EanLocationCodeEntities | ArrayOfEanLocationCodes | Liste af lokationsnumre som skal opdateres |
Output | ||
Element | Data type | Beskrivelse |
---|---|---|
Status | Status | Status for hvordan kaldet gik |
Security gruppe påkrævet: SorEdiCentralRole
Input | ||
Element | Data type | Beskrivelse |
---|---|---|
User | User | User element til brug i autorisering af kaldet |
EdiAdministratorIdentifier | EdiAdministratorIdentifier (long) | EDI-Administrator-id |
EanLocationCodeEntities | ArrayOfEanLocationCodes | Liste af lokationsnumre som skal opdateres |
Output | ||
Element | Data type | Beskrivelse |
---|---|---|
Status | Status | Status for hvordan kaldet gik |
Security gruppe påkrævet: SorEdiCentralRole
Input | ||
Element | Data type | Beskrivelse |
---|---|---|
User | User | User element til brug i autorisering af kaldet |
RegionCode | RegionCode (string, 4) | Region |
EanLocationCodeEntities | ArrayOfEanLocationCodes | Liste af lokationsnumre som skal opdateres |
Output | ||
Element | Data type | Beskrivelse |
---|---|---|
Status | Status | Status for hvordan kaldet gik |
Security gruppe påkrævet: SorEdiCentralRole
Input | ||
Element | Data type | Beskrivelse |
---|---|---|
User | User | User element til brug i autorisering af kaldet |
SystemSupplierIdentifier | long | Systemleverandør-id |
EanLocationCodeEntities | ArrayOfEanLocationCodes | Liste af lokationsnumre som skal opdateres |
Output | ||
Element | Data type | Beskrivelse |
---|---|---|
Status | Status | Status for hvordan kaldet gik |
Security gruppe påkrævet: SorEdiCentralRole
Input | ||
Element | Data type | Beskrivelse |
---|---|---|
User | User | User element til brug i autorisering af kaldet |
SorIdentifier | SorIdentifier (long) | SOR-kode for den nye enhed, som den skal knyttes til |
EanLocationCode | EanLocationCode (long) | Angiver lokationsnummeret for enheden |
Output | ||
Element | Data type | Beskrivelse |
---|---|---|
Status | Status | Status for hvordan kaldet gik |
Security gruppe påkrævet: SorEdiCentralRole
ArrayOfEdiIdentifiers
Input | ||
Element | Data type | Beskrivelse |
---|---|---|
User | User | User element til brug i autorisering af kaldet |
EdiIdentifiers | ArrayOfEdiIdentifiers | Liste af EDI numre |
EanLocationCodeEntities | ArrayOfEanLocationCodes | Liste af lokationsnumre som skal opdateres |
Output | ||
Element | Data type | Beskrivelse |
---|---|---|
Status | Status | Status for hvordan kaldet gik |
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 code | Fault string | Beskrivelse |
---|---|---|
invalid_signature | Invalid signature | Autentifikations fejl, invalid signatur |
missing_required_header | Unable to read request | Autentifikations fejl, kan ikke læse forespørgelsen |
security_level_failed | Invalid authentication level, level 3 or 4 required | Autorisations fejl, kun certifikat niveau 3 eller 4 er tilladt |
expired_idcard | Current time is outside of valid period | Autorisations fejl, uden for gyldighedsperioden for sikkerheds headeren |
invalid_certificate | The type of certificate used is invalid, FOCES or MOCES required | Autorisations fejl, ugyldig type af certifikat brugt, kun FOCES og MOCES er tilladt |
not_authorized | CVR not whitelisted | Autorisations fejl, CVR er ikke whitelisted |
Error happened while contacting SOR database | Fejl under forespørgelse mod databasen | |
syntax_error | Unable to parse body | Fejl under transformeringen af SOAP body til et objekt |
Unable to marshal object | Fejl under transformeringen af object til XML | |
Unable to write body | Fejl under at skrive det transformerede objekt til klienten | |
Error happened while contacting SOR backend | Fejl under forespørgelse mod backenden | |
Invalid request type | Ukendt 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".
For en eksempel implementation i Java, kan der med foredel tages udgangspunkt i servicens integrationstest:
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
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.
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.