HL7 Implementasjonsguide

Spørsmål og Svar

Spm: Hvordan genererer jeg en klientproxy ut fra wsdl og xsd’er? (.Net)

Spm: Jeg får feilmeldingen: TCP error code 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 161.4.81.48:8901

Spm: Jeg får feilmeldingen: The HTTP service located at http://utvikling-webservice.ihelse.net:8901/DIPSHL7Connector/PatientRegistryService/ is too busy

Spm: Jeg får feilmeldingen: Maksimal meldingsstørrelseskvote for innkommende meldinger (65536) er overskredet.

Spm: Jeg får feilmeldingen: The message with Action 'urn:hl7-org:v3/…' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher.

Spm: I hvilken wsdl finner jeg de ulike tjenestene?

Spm: Hvordan lage en klient som setter request og response objekt i kode

Spm:  Hvordan enable tracing og message logging for en WCF service eller WCF klient.

Spm: Vil WSDL og skjemaer forandre seg underveis?

 

Spm: Hvordan genererer jeg en klientproxy ut fra wsdl og xsd’er? (.Net)

Vi anbefaler følgende fremgangsmåten for å få generert klientproxy:

 

  1. Last ned og pakk opp skjemapakken for det domenet du er interessert i.

     
  2. Åpne Internet Information Services. Dersom dette ikke er installert på din PC, kan du installere IIS fra Legg til eller fjern programmer i kontrollpanelet.

     
  3. Høyreklikk på Standard Web-område og velg Nytt og Virtuell mappe…
 



 

  1. Legg inn et alias for den virtuelle mappen, for eksempel PatientRegistry



 

  1. Legg inn filbanen til der du pakket opp wsdl og skjemafiler.



 

  1. Gi leserettigheter til den virtuelle mappen, klikk neste og fullfør.

     
  2. I Internet Information Services, klikk på den virtuelle mappen du opprettet. Du vil da på høyre side få listet opp alle filer som ligger i den virtuelle mappen. Finn den wsdl’en du vil lage en klientproxy for, høyreklikk på denne og velg Bla igjennom. Du vil da få åpnet wsdl’en i nettleseren.

     
  3. Man kan enten generere klienten ved hjelp av svcutil eller via Add Service Reference… i Visual Studio (2008 eller nyere).

    Svcutil:
    Kjør svcutil med adressen til wsdl’en som parameter

    Den ene feilmeldingen som dukker opp, kan man ignorere.

    Døp om output.config til app.config og legg begge filene inn i din løsning. (Add existing item…)

    Add service reference:
    Høyreklikk på prosjektet ditt i Visual Studio og velg Add Service Reference… Legg inn adressen til wsdl’en og klikk Go:

 

Klikk OK og tjenesten skal være klar til bruk.

 

  1. Før man kan begynne å teste klienten sin, må man legge inn riktig adresse i config-filen. For PatientRegistry.GetDemographics, vil configfilen se slik ut:

<client>

  <endpoint

    address="http://utvikling-webservice.ihelse.net:8901/DIPSHL7Connector/PatientRegistryService20/"

    binding="basicHttpBinding"

    bindingConfiguration="PatientRegistryQueryFulfiller_Binding"

    contract="PatientRegistryQueryFulfiller_PortType"

    name="PatientRegistryQueryFulfiller_Binding_PatientRegistryQueryFulfiller_PortType" />

</client>

 Tilbake til toppen

Spm: Jeg får feilmeldingen: TCP error code 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 161.4.81.48:8901

Dette skyldes mest sannsynlig problemer med proxyinstillinger i eget nettverk. Prøv å sette useDefaultWebProxy til True i config-filen. Proxyoppsettet i Internet Explorer vil da bli brukt også av klienten. Eventuelt kan man prøve å sette useDefaultWebProxy til False og legge inn attributtet proxyAddress i stedet.
useDefaultWebProxy="false" proxyAddress="http://10.123.54.10:80">

 Tilbake til toppen

Spm: Jeg får feilmeldingen: The HTTP service located at http://utvikling-webservice.ihelse.net:8901/DIPSHL7Connector/PatientRegistryService/ is too busy

Sjekk at brannmuren er åpen for trafikk på porten tjenesten benytter.

Tilbake til toppen

Spm: Jeg får feilmeldingen: Maksimal meldingsstørrelseskvote for innkommende meldinger (65536) er overskredet.

Noen av tjenestene kan returnere store mengder data. Man må da øke verdien for MaxReceivedMessageSize i configfilen.
maxReceivedMessageSize="655360"

Tilbake til toppen


Spm: Jeg får feilmeldingen: The message with Action 'urn:hl7-org:v3/…' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher.

Sjekk at tjenesteadressen i configfilen er riktig.

Tilbake til toppen

Spm: I hvilken wsdl finner jeg de ulike tjenestene?

PatientRegistryQueryFulfiller.wsdl

o       PatientRegistry.GetDemographics

o       PatientRegistry.FindCandidates

 

PatientRegistryRequestFulfiller.wsdl

o       PatientRegistry.Add

 

PersonRegistryQueryFulfiller.wsdl

o       PersonRegistry.GetDemographics

o       PersonRegistry.FindCandidates

 

CareRecordQueryFulfiller.wsdl

o       CareRecordManager.GetCareRecordProfile

 

EncounterManagerQueryFulfiller.wsdl

o       EncounterManger.FindEncounters

Tilbake til toppen

 

Spm: Hvordan lage en klient som setter request og response objekt i kode

Se kodeeksempel:

 //xml document to send (see “NE2008_hv.zip” for example files of requests and corresponding responses)
XmlDocument doc = new XmlDocument();
doc.Load(@"C:\Projects\EPJ_Bergen\GetDemographicsRequest.xml");

//create a request object
PRPA_IN201307NO_OperationRequest
request = new PRPA_IN201307NO_OperationRequest();

//assign a value to the request object
request.PRPA_IN201307NO = (PRPA_IN201307NO)ObjectSerializer.DeserializeObject(doc, typeof(PRPA_IN201307NO), "urn:hl7-org:v3");

//create a proxy object to connect to service
PatientRegistryQueryFulfiller_PortTypeClient PatientRegistryClient = new PatientRegistryQueryFulfiller_PortTypeClient();

//create a response object, and assign it the value of the response of the request operation
PRPA_IN201307NOResponse response;
response = PatientRegistryClient.PRPA_IN201307NO_Operation(request.PRPA_IN201307NO);

//if you want to show the result in a messagebox
MessageBox.Show(ObjectSerializer.SerializeObject(response.Item, "urn:hl7-org:v3").OuterXml);


*NOTEp; *NOTE: The ObjectSerializer class is a helper class we have made that serializes and deserializes objects. You need to make your own helper class or just include serialization/deserialisation code directly in the code.

**NOTE: It might be that you have to adjust the values in the <system.serviceModel/bindings/basicHttpBinding/binding/readerQuotas > parameters in  the client config file, as the default value could be too small for the response you get from the service.

Tilbake til toppen

For å sette opp tracing på en wcf klienten eller wcf service, kan dette enten gjøres manuelt ved å redigere de rette elementene i web/app.config filen, eller bruke ”Microsoft Service Configuration Editor” (SvcConfigEditor.exe) for å editere config filen. Deretter kan man lese/analyser traceloggen ved å bruke ”Microsoft Service Trace Viewer” (SvcTraceViewer.exe).  Denne posten beskriver hvordan dette gjøres via disse 2 verktøyene.

Verktøyene ligger i mappen: \Program Files\Microsoft SDKs\Windows\v6.0A\Bin.

 1.       Åpne ønsket config fil i editoren.

  

 2.       Slå på tracing og konfigurer ønsket tracing nivå. PS! Husk å lagre endringene du har gjort, File -> Save.

 

3.       Når man har satt opp tracing og lagret endringene vil man i samme folder som config filen ligger finne en tracelog fil, feks app_tracelog.svclog eller lignende.

 

F.       Får å lese/analysere traceloggen kan man åpne traceloggen i ”Microsoft Service Trace Viewer” (SvcTraceViewer.exe).

 

 

Tilbake til toppen

 

 Spm: Vil WSDL og skjemaer forandre seg underveis?

Det er ikke planlagt noen forandringer på leverte WSDL filer eller andre skjemaer.

Tilbake til hovedsiden

 

For andre spørsmål om HL7 Implementasjon,
vennligst send en e-post til
Morten Solheim Myhre : morten.solheim.myhre @helse-vest-ikt.no