Rotate the image, so that the dots are aligned vertically and horizontally, probably 45 degrees. Use the Measure tool to find the distance between the dots. Optionally, scale the image so that distance is divisible by even pixels, since the Median filter only accepts integers.
Use that distancefor Radius in Filter > Noise > Median. Scroll through values for Radius to find the best looking one. When you get it the way you like, scale and rotate back to the original orientation.
If it's a color image, convert it to LAB mode. This will give you one channel with is a monochrome version of the image and two channels that contain the color information (one red vs green; the other yellow vs blue). Note that this color space contains every color possible in every other color space, so there is no color loss converting to it.
Go to the L (Lightness) channel. Zoom in until you can see the dots clearly. Select All and apply Gaussian Blur to the image. Start with a small number and watch the preview. Increase the number of the blur in 0.1 steps until the moire pattern goes away. Then go to the A channel, followed by the B channel, and apply s blur to those as well. The A and B channels can have considerably more blurring added before there is any noticeable effect on your image.
After this, if your image appears too soft, you can try applying Unsharp Mask to add crispness to the image. You'll want to keep the Threshold number a bit on the high side to reduce artifacts that you might get from the blurring process.
If you are using a flatbed scanner and want to reduce the moire effects that show up in the future, get a piece of picture glass cut to fit the scanner bed and put that between the existing scanner glass and the printed original. The slight difference in distance will give a little bit of blur and help disguise the moire without needing to do it in post-processing work.